Kaynağa Gözat

拆分系统

jwyu 1 yıl önce
işleme
c4758647aa
100 değiştirilmiş dosya ile 13183 ekleme ve 0 silme
  1. 7 0
      .env.development
  2. 7 0
      .env.production
  3. 8 0
      .env.test
  4. 25 0
      .gitignore
  5. 2 0
      README.md
  6. 11 0
      babel.config.js
  7. 89 0
      package.json
  8. 6 0
      public/css/content.inline.min.css
  9. 0 0
      public/css/element.css
  10. 0 0
      public/css/elementui.css
  11. 3 0
      public/css/font.css
  12. BIN
      public/css/fonts/element-icons.ttf
  13. BIN
      public/css/fonts/element-icons.woff
  14. 4 0
      public/css/iconfont.css
  15. BIN
      public/css/iconfont.ttf
  16. BIN
      public/css/iconfont.woff
  17. 0 0
      public/css/indexstyle.css
  18. 0 0
      public/css/jquery.dataTables.css
  19. 185 0
      public/css/reset.min.css
  20. 6 0
      public/css/skin.min.css
  21. BIN
      public/fa.ico
  22. 50 0
      public/index.html
  23. 181 0
      public/js/jquery.dataTables.js
  24. 1 0
      public/js/jquery.min.js
  25. 341 0
      src/App.vue
  26. 258 0
      src/api/api.js
  27. 2 0
      src/api/bus.js
  28. 787 0
      src/api/crypto.js
  29. 325 0
      src/api/http.js
  30. 3 0
      src/api/index.js
  31. 51 0
      src/api/modules/aiApi.js
  32. 86 0
      src/api/modules/businessTrip.js
  33. 991 0
      src/api/modules/chartApi.js
  34. 685 0
      src/api/modules/chartRelevanceApi.js
  35. 17 0
      src/api/modules/classifyApi.js
  36. 55 0
      src/api/modules/classifyEnApi.js
  37. 110 0
      src/api/modules/cloudDisk.js
  38. 235 0
      src/api/modules/contractApi.js
  39. 1209 0
      src/api/modules/crmApi.js
  40. 392 0
      src/api/modules/dataApi.js
  41. 64 0
      src/api/modules/daynewsApi.js
  42. 220 0
      src/api/modules/ficcApi.js
  43. 310 0
      src/api/modules/futuresBaseApi.js
  44. 27 0
      src/api/modules/groupSendApi.js
  45. 285 0
      src/api/modules/interactive.js
  46. 364 0
      src/api/modules/oldApi.js
  47. 58 0
      src/api/modules/pdfApi.js
  48. 245 0
      src/api/modules/pptApi.js
  49. 206 0
      src/api/modules/pptEnApi.js
  50. 263 0
      src/api/modules/predictEdbApi.js
  51. 63 0
      src/api/modules/priceDriven.js
  52. 16 0
      src/api/modules/pushSettingApi.js
  53. 30 0
      src/api/modules/rai/bannerApi.js
  54. 31 0
      src/api/modules/rai/internalApi.js
  55. 18 0
      src/api/modules/rai/pointsApi.js
  56. 1310 0
      src/api/modules/rai/raiApi.js
  57. 34 0
      src/api/modules/rai/reportApi.js
  58. 31 0
      src/api/modules/rai/timeLine.js
  59. 53 0
      src/api/modules/rai/videoListApi.js
  60. 58 0
      src/api/modules/reportAuthorApi.js
  61. 234 0
      src/api/modules/reportEnApi.js
  62. 44 0
      src/api/modules/reportVariety.js
  63. 38 0
      src/api/modules/reportupdateApi.js
  64. 331 0
      src/api/modules/roadshowApi.js
  65. 125 0
      src/api/modules/sandApi.js
  66. 78 0
      src/api/modules/sealApi.js
  67. 278 0
      src/api/modules/semanticsApi.js
  68. 428 0
      src/api/modules/setApi.js
  69. 248 0
      src/api/modules/sheetApi.js
  70. 271 0
      src/api/modules/statisticApi.js
  71. 36 0
      src/api/modules/strategyReport.js
  72. 183 0
      src/api/modules/supplyApi.js
  73. 58 0
      src/api/modules/taglibApi.js
  74. 691 0
      src/api/modules/thirdBaseApi.js
  75. 162 0
      src/api/modules/videoApi.js
  76. BIN
      src/assets/css/fonts/element-icons.woff
  77. 1 0
      src/assets/icons/arrow.svg
  78. 3 0
      src/assets/icons/broom.svg
  79. 3 0
      src/assets/icons/brush.svg
  80. 3 0
      src/assets/icons/eraser.svg
  81. 10 0
      src/assets/icons/folder.svg
  82. 53 0
      src/assets/icons/iconfont.css
  83. 0 0
      src/assets/icons/iconfont.js
  84. 79 0
      src/assets/icons/iconfont.json
  85. BIN
      src/assets/icons/iconfont.ttf
  86. BIN
      src/assets/icons/iconfont.woff
  87. BIN
      src/assets/icons/iconfont.woff2
  88. 1 0
      src/assets/icons/line.svg
  89. 1 0
      src/assets/icons/palette.svg
  90. 6 0
      src/assets/icons/uploadImg-blue.svg
  91. BIN
      src/assets/img/404.gif
  92. BIN
      src/assets/img/ai_m/delete.png
  93. BIN
      src/assets/img/ai_m/edit.png
  94. BIN
      src/assets/img/ai_m/empty_list.png
  95. BIN
      src/assets/img/ai_m/save.png
  96. BIN
      src/assets/img/ai_m/send.png
  97. BIN
      src/assets/img/approval_ notice.png
  98. BIN
      src/assets/img/approve_wait.png
  99. BIN
      src/assets/img/attention.png
  100. BIN
      src/assets/img/avart.png

+ 7 - 0
.env.development

@@ -0,0 +1,7 @@
+NODE_ENV='development'
+VUE_APP_BASE_API='/adminapi'
+Domain='brilliantstart.cn'
+Login='http://localhost:8080/login'
+CHART_LINK='https://charttest.hzinsights.com/chartshow'
+HR_MANAGEMENT_SYSTEM='http://8.136.199.33:8391/login'
+FINANCIAL_MANAGEMENT_SYSTEM='http://8.136.199.33:8618/login'

+ 7 - 0
.env.production

@@ -0,0 +1,7 @@
+NODE_ENV='production'
+VUE_APP_BASE_API='https://admin.hzinsights.com/adminapi'  
+Domain='hzinsights.com'
+Login='https://admin.hzinsights.com/login'
+CHART_LINK='https://chartlib.hzinsights.com/chartshow'
+HR_MANAGEMENT_SYSTEM='https://hr.hzinsights.com/login'
+FINANCIAL_MANAGEMENT_SYSTEM='https://fms.hzinsights.com/login'

+ 8 - 0
.env.test

@@ -0,0 +1,8 @@
+#测试环境
+NODE_ENV='test'
+VUE_APP_BASE_API='https://rddptest.hzinsights.com/adminapi/'  
+Domain='brilliantstart.cn'
+Login='https://rddptest.hzinsights.com/login'
+CHART_LINK='https://charttest.hzinsights.com/chartshow'
+HR_MANAGEMENT_SYSTEM='http://8.136.199.33:8391/login'
+FINANCIAL_MANAGEMENT_SYSTEM='http://8.136.199.33:8618/login'

+ 25 - 0
.gitignore

@@ -0,0 +1,25 @@
+/.project
+/node_modules
+
+/dist
+/package-lock.json
+/dist.zip
+
+/admin
+/admin.rar
+/admin.zip
+/vendor-manifest.json
+/hz_crm_web
+/hz_crm_web.zip
+/hz_crm_web.rar
+
+/testadmin
+/yarn-error.log
+
+# Mac General
+.DS_Store
+.vscode
+/*.DS_Store
+
+/static/dll.vendor.js
+/.idea

+ 2 - 0
README.md

@@ -0,0 +1,2 @@
+# 弘则CRM
+

+ 11 - 0
babel.config.js

@@ -0,0 +1,11 @@
+module.exports = {
+  presets: ["@vue/cli-plugin-babel/preset",["@babel/preset-env", {
+    "useBuiltIns": "entry"
+  }]],
+
+  env: {
+    development: {
+      plugins: ["dynamic-import-node"],
+    },
+  },
+};

+ 89 - 0
package.json

@@ -0,0 +1,89 @@
+{
+  "name": "hz_crm_web",
+  "version": "0.1.0",
+  "private": true,
+  "scripts": {
+    "dev": "vue-cli-service serve",
+    "build": "vue-cli-service build --mode production",
+    "build.test": "vue-cli-service build --mode test",
+    "lint": "vue-cli-service lint",
+    "fix": "vue-cli-service lint --fix"
+  },
+  "dependencies": {
+    "@antv/x6": "^1.29.1",
+    "@fullcalendar/interaction": "^5.10.1",
+    "@fullcalendar/timegrid": "^5.10.1",
+    "@fullcalendar/vue": "^5.10.1",
+    "@tinymce/tinymce-vue": "^2.1.0",
+    "axios": "^0.15.3",
+    "canvas2image": "^1.0.5",
+    "clipboard": "^2.0.1",
+    "core-js": "^3.6.5",
+    "crypto-js": "^3.1.9-1",
+    "element-resize-detector": "^1.2.2",
+    "element-ui": "2.13.0",
+    "font-awesome": "^4.7.0",
+    "froala-editor": "^3.1.1",
+    "highcharts": "^7.1.3",
+    "himalaya": "^1.1.0",
+    "html2canvas": "1.1.4",
+    "js-md5": "^0.7.3",
+    "lodash": "^4.17.21",
+    "moment": "^2.22.2",
+    "monaco-editor-webpack-plugin": "^7.0.1",
+    "pptxgenjs": "^3.10.0",
+    "qrcode": "^1.4.4",
+    "streamsaver": "^2.0.6",
+    "tinymce": "^5.9.1",
+    "url-slug": "^2.2.0",
+    "v-distpicker": "^1.2.7",
+    "vue": "^2.7.0",
+    "vue-clipboard2": "^0.3.3",
+    "vue-codemirror": "^4.0.6",
+    "vue-count-to": "^1.0.13",
+    "vue-froala-wysiwyg": "^3.1.0",
+    "vue-masonry": "^0.16.0",
+    "vue-pdf": "^4.2.0",
+    "vue-qr": "^2.3.0",
+    "vue-router": "^2.7.0",
+    "vue2-datepicker": "^3.8.0",
+    "vuedraggable": "^2.24.3",
+    "vuex": "^3.6.2"
+  },
+  "devDependencies": {
+    "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+    "@vue/cli-plugin-babel": "~4.5.18",
+    "@vue/cli-plugin-eslint": "~4.5.18",
+    "@vue/cli-service": "~4.5.18",
+    "babel-eslint": "^10.1.0",
+    "compression-webpack-plugin": "^6.1.1",
+    "eslint": "^6.7.2",
+    "eslint-plugin-vue": "^6.2.2",
+    "node-sass": "^4.5.0",
+    "sass-loader": "^8.0.2",
+    "uglifyjs-webpack-plugin": "^2.2.0",
+    "vue-demi": "^0.13.1",
+    "vue-loader": "^15.10.0",
+    "vue2-org-tree": "^1.3.5",
+    "webpack-bundle-analyzer": "^4.8.0"
+  },
+  "eslintConfig": {
+    "root": true,
+    "env": {
+      "node": true
+    },
+    "extends": [
+      "plugin:vue/essential",
+      "eslint:recommended"
+    ],
+    "parserOptions": {
+      "parser": "babel-eslint"
+    },
+    "rules": {}
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions",
+    "not dead"
+  ]
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 6 - 0
public/css/content.inline.min.css


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
public/css/element.css


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
public/css/elementui.css


Dosya farkı çok büyük olduğundan ihmal edildi
+ 3 - 0
public/css/font.css


BIN
public/css/fonts/element-icons.ttf


BIN
public/css/fonts/element-icons.woff


Dosya farkı çok büyük olduğundan ihmal edildi
+ 4 - 0
public/css/iconfont.css


BIN
public/css/iconfont.ttf


BIN
public/css/iconfont.woff


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
public/css/indexstyle.css


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
public/css/jquery.dataTables.css


+ 185 - 0
public/css/reset.min.css

@@ -0,0 +1,185 @@
+@charset "utf-8";
+body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, button, input, textarea, th, td {
+    margin: 0;
+    padding: 0
+}
+
+body {
+    font-size: 12px;
+    font-style: normal;
+    font-family: "\5FAE\8F6F\96C5\9ED1", Helvetica, sans-serif,;
+
+}
+
+html {
+    // overflow: scroll;
+    overflow: auto;
+    min-width: 1000px;
+}
+
+small {
+    font-size: 12px
+}
+
+h1 {
+    font-size: 18px
+}
+
+h2 {
+    font-size: 16px
+}
+
+h3 {
+    font-size: 14px
+}
+
+h4, h5, h6 {
+    font-size: 100%
+}
+
+ul, ol {
+    list-style: none
+}
+
+a {
+    text-decoration: none;
+    background-color: transparent
+}
+
+a:hover, a:active {
+    outline-width: 0;
+    text-decoration: none
+}
+
+table {
+    border-collapse: collapse;
+    border-spacing: 0
+}
+
+hr {
+    border: 0;
+    height: 1px
+}
+
+img {
+    border-style: none
+}
+
+img:not([src]) {
+    display: none
+}
+
+svg:not(:root) {
+    overflow: hidden
+}
+
+html {
+    -webkit-touch-callout: none;
+    -webkit-text-size-adjust: 100%
+}
+
+input, textarea, button, a {
+    -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
+}
+
+article, aside, details, figcaption, figure, footer, header, main, menu, nav, section, summary {
+    display: block
+}
+
+audio, canvas, progress, video {
+    display: inline-block
+}
+
+audio:not([controls]), video:not([controls]) {
+    display: none;
+    height: 0
+}
+
+progress {
+    vertical-align: baseline
+}
+
+mark {
+    background-color: #ff0;
+    color: #000
+}
+
+sub, sup {
+    position: relative;
+    font-size: 75%;
+    line-height: 0;
+    vertical-align: baseline
+}
+
+sub {
+    bottom: -0.25em
+}
+
+sup {
+    top: -0.5em
+}
+
+button, input, select, textarea {
+    font-size: 100%;
+    outline: 0
+}
+
+button, input {
+    overflow: visible
+}
+
+button, select {
+    text-transform: none
+}
+
+textarea {
+    overflow: auto
+}
+
+button, html [type="button"], [type="reset"], [type="submit"] {
+    -webkit-appearance: button
+}
+
+button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner {
+    border-style: none;
+    padding: 0
+}
+
+button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring {
+    outline: 1px dotted ButtonText
+}
+
+[type="checkbox"], [type="radio"] {
+    box-sizing: border-box;
+    padding: 0
+}
+
+[type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button {
+    height: auto
+}
+
+[type="search"] {
+    -webkit-appearance: textfield;
+    outline-offset: -2px
+}
+
+[type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration {
+    -webkit-appearance: none
+}
+
+::-webkit-input-placeholder {
+    color: inherit;
+    opacity: .54
+}
+
+::-webkit-file-upload-button {
+    -webkit-appearance: button;
+    font: inherit
+}
+
+.clear:after {
+    display: block;
+    height: 0;
+    content: "";
+    clear: both
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 6 - 0
public/css/skin.min.css


BIN
public/fa.ico


+ 50 - 0
public/index.html

@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html lang="">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+    <title>弘则管理后台</title>
+    <link rel="stylesheet" href="./css/iconfont.css"/>
+    <link rel="icon" type="image/x-icon" href="./fa.ico" id="icon"/>
+    <!-- 引入组件库 -->
+    <!-- echart cdn -->
+    <script type="text/javascript" src="https://lib.baomitu.com/echarts/5.0.2/echarts.min.js"></script>
+    <!-- oss SDK -->
+    <script type="text/javascript" src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.16.0.min.js"></script>
+    <!-- luckysheet cdn -->
+    <link rel='stylesheet' href='https://hzstatic.hzinsights.com/static/cdn/Luckysheet@2.1.13/dist/plugins/css/pluginsCss.css' />
+    <link rel='stylesheet' href='https://hzstatic.hzinsights.com/static/cdn/Luckysheet@2.1.13/dist/plugins/plugins.css' />
+    <link rel='stylesheet' href='https://hzstatic.hzinsights.com/static/cdn/Luckysheet@2.1.13/dist/css/luckysheet.css' />
+    <link rel='stylesheet' href='https://hzstatic.hzinsights.com/static/cdn/Luckysheet@2.1.13/dist/assets/iconfont/iconfont.css' />
+    <!-- dataTables -->
+	  <link rel="stylesheet" type="text/css" href="./css/jquery.dataTables.css"/>
+    <script>
+      var _hmt = _hmt || [];
+      (function() {
+        var hm = document.createElement("script");
+        hm.src = "https://hm.baidu.com/hm.js?2147f2700a1a306aa027116f80ef640d";
+        var s = document.getElementsByTagName("script")[0]; 
+        s.parentNode.insertBefore(hm, s);
+      })();
+    </script>	
+    <script>
+      window.addEventListener('error',(e)=>{
+        if(e.message=="Uncaught SyntaxError: Unexpected token '<'"){
+          window.alert('系统更新中,请稍后刷新重试!')
+          setTimeout(() => {
+            window.location.reload(true)
+          }, 1000);
+        }
+      })
+    </script>
+  </head>
+  <body>
+    <div id="app"></div>
+    <!-- built files will be auto injected -->
+    <script type="text/javascript" src="./js/jquery.min.js"></script>
+    <script src="https://hzstatic.hzinsights.com/static/cdn/Luckysheet@2.1.13/dist/plugins/js/plugin.js"></script>
+    <script src="https://hzstatic.hzinsights.com/static/cdn/Luckysheet@2.1.13/dist/luckysheet.umd.js"></script>
+    <script type="text/javascript" src="./js/jquery.dataTables.js"></script>
+  </body>
+</html>

+ 181 - 0
public/js/jquery.dataTables.js

@@ -0,0 +1,181 @@
+/*!
+   Copyright 2008-2020 SpryMedia Ltd.
+
+ This source file is free software, available under the following license:
+   MIT license - http://datatables.net/license
+
+ This source file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
+
+ For details please refer to: http://www.datatables.net
+ DataTables 1.10.21
+ ©2008-2020 SpryMedia Ltd - datatables.net/license
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(f,y,w){f instanceof String&&(f=String(f));for(var n=f.length,H=0;H<n;H++){var L=f[H];if(y.call(w,L,H,f))return{i:H,v:L}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;
+$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(f,y,w){f!=Array.prototype&&f!=Object.prototype&&(f[y]=w.value)};$jscomp.getGlobal=function(f){f=["object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global,f];for(var y=0;y<f.length;++y){var w=f[y];if(w&&w.Math==Math)return w}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
+$jscomp.polyfill=function(f,y,w,n){if(y){w=$jscomp.global;f=f.split(".");for(n=0;n<f.length-1;n++){var H=f[n];H in w||(w[H]={});w=w[H]}f=f[f.length-1];n=w[f];y=y(n);y!=n&&null!=y&&$jscomp.defineProperty(w,f,{configurable:!0,writable:!0,value:y})}};$jscomp.polyfill("Array.prototype.find",function(f){return f?f:function(f,w){return $jscomp.findInternal(this,f,w).v}},"es6","es3");
+(function(f){"function"===typeof define&&define.amd?define(["jquery"],function(y){return f(y,window,document)}):"object"===typeof exports?module.exports=function(y,w){y||(y=window);w||(w="undefined"!==typeof window?require("jquery"):require("jquery")(y));return f(w,y,y.document)}:f(jQuery,window,document)})(function(f,y,w,n){function H(a){var b,c,d={};f.each(a,function(e,h){(b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" ")&&(c=e.replace(b[0],b[2].toLowerCase()),
+d[c]=e,"o"===b[1]&&H(a[e]))});a._hungarianMap=d}function L(a,b,c){a._hungarianMap||H(a);var d;f.each(b,function(e,h){d=a._hungarianMap[e];d===n||!c&&b[d]!==n||("o"===d.charAt(0)?(b[d]||(b[d]={}),f.extend(!0,b[d],b[e]),L(a[d],b[d],c)):b[d]=b[e])})}function Fa(a){var b=q.defaults.oLanguage,c=b.sDecimal;c&&Ga(c);if(a){var d=a.sZeroRecords;!a.sEmptyTable&&d&&"No data available in table"===b.sEmptyTable&&M(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&d&&"Loading..."===b.sLoadingRecords&&M(a,a,
+"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&c!==a&&Ga(a)}}function ib(a){E(a,"ordering","bSort");E(a,"orderMulti","bSortMulti");E(a,"orderClasses","bSortClasses");E(a,"orderCellsTop","bSortCellsTop");E(a,"order","aaSorting");E(a,"orderFixed","aaSortingFixed");E(a,"paging","bPaginate");E(a,"pagingType","sPaginationType");E(a,"pageLength","iDisplayLength");E(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":
+"");"boolean"===typeof a.scrollX&&(a.scrollX=a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&L(q.models.oSearch,a[b])}function jb(a){E(a,"orderable","bSortable");E(a,"orderData","aDataSort");E(a,"orderSequence","asSorting");E(a,"orderDataType","sortDataType");var b=a.aDataSort;"number"!==typeof b||f.isArray(b)||(a.aDataSort=[b])}function kb(a){if(!q.__browser){var b={};q.__browser=b;var c=f("<div/>").css({position:"fixed",top:0,left:-1*f(y).scrollLeft(),height:1,width:1,
+overflow:"hidden"}).append(f("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(f("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}f.extend(a.oBrowser,q.__browser);a.oScroll.iBarWidth=q.__browser.barWidth}
+function lb(a,b,c,d,e,h){var g=!1;if(c!==n){var k=c;g=!0}for(;d!==e;)a.hasOwnProperty(d)&&(k=g?b(k,a[d],d,a):a[d],g=!0,d+=h);return k}function Ha(a,b){var c=q.defaults.column,d=a.aoColumns.length;c=f.extend({},q.models.oColumn,c,{nTh:b?b:w.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=f.extend({},q.models.oSearch,c[d]);la(a,d,f(b).data())}function la(a,b,c){b=a.aoColumns[b];
+var d=a.oClasses,e=f(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var h=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);h&&(b.sWidthOrig=h[1])}c!==n&&null!==c&&(jb(c),L(q.defaults.column,c,!0),c.mDataProp===n||c.mData||(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),f.extend(b,c),M(b,c,"sWidth","sWidthOrig"),c.iDataSort!==n&&(b.aDataSort=[c.iDataSort]),M(b,c,"aDataSort"));var g=b.mData,k=T(g),
+l=b.mRender?T(b.mRender):null;c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=f.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=k(a,b,n,c);return l&&b?l(d,b,a,c):d};b.fnSetData=function(a,b,c){return Q(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==f.inArray("asc",b.asSorting);c=-1!==f.inArray("desc",b.asSorting);b.bSortable&&(a||c)?a&&!c?(b.sSortingClass=
+d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI):(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI="")}function Z(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ia(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;""===b.sY&&""===b.sX||ma(a);A(a,null,"column-sizing",[a])}function aa(a,b){a=na(a,"bVisible");return"number"===
+typeof a[b]?a[b]:null}function ba(a,b){a=na(a,"bVisible");b=f.inArray(b,a);return-1!==b?b:null}function V(a){var b=0;f.each(a.aoColumns,function(a,d){d.bVisible&&"none"!==f(d.nTh).css("display")&&b++});return b}function na(a,b){var c=[];f.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Ja(a){var b=a.aoColumns,c=a.aoData,d=q.ext.type.detect,e,h,g;var k=0;for(e=b.length;k<e;k++){var f=b[k];var m=[];if(!f.sType&&f._sManualType)f.sType=f._sManualType;else if(!f.sType){var p=0;for(h=
+d.length;p<h;p++){var v=0;for(g=c.length;v<g;v++){m[v]===n&&(m[v]=F(a,v,k,"type"));var u=d[p](m[v],a);if(!u&&p!==d.length-1)break;if("html"===u)break}if(u){f.sType=u;break}}f.sType||(f.sType="string")}}}function mb(a,b,c,d){var e,h,g,k=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){var l=b[e];var m=l.targets!==n?l.targets:l.aTargets;f.isArray(m)||(m=[m]);var p=0;for(h=m.length;p<h;p++)if("number"===typeof m[p]&&0<=m[p]){for(;k.length<=m[p];)Ha(a);d(m[p],l)}else if("number"===typeof m[p]&&0>m[p])d(k.length+
+m[p],l);else if("string"===typeof m[p]){var v=0;for(g=k.length;v<g;v++)("_all"==m[p]||f(k[v].nTh).hasClass(m[p]))&&d(v,l)}}if(c)for(e=0,a=c.length;e<a;e++)d(e,c[e])}function R(a,b,c,d){var e=a.aoData.length,h=f.extend(!0,{},q.models.oRow,{src:c?"dom":"data",idx:e});h._aData=b;a.aoData.push(h);for(var g=a.aoColumns,k=0,l=g.length;k<l;k++)g[k].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==n&&(a.aIds[b]=h);!c&&a.oFeatures.bDeferRender||Ka(a,e,c,d);return e}function oa(a,b){var c;b instanceof
+f||(b=f(b));return b.map(function(b,e){c=La(a,e);return R(a,c.data,e,c.cells)})}function F(a,b,c,d){var e=a.iDraw,h=a.aoColumns[c],g=a.aoData[b]._aData,k=h.sDefaultContent,f=h.fnGetData(g,d,{settings:a,row:b,col:c});if(f===n)return a.iDrawError!=e&&null===k&&(O(a,0,"Requested unknown parameter "+("function"==typeof h.mData?"{function}":"'"+h.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),k;if((f===g||null===f)&&null!==k&&d!==n)f=k;else if("function"===typeof f)return f.call(g);return null===
+f&&"display"==d?"":f}function nb(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d,{settings:a,row:b,col:c})}function Ma(a){return f.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\\./g,".")})}function T(a){if(f.isPlainObject(a)){var b={};f.each(a,function(a,c){c&&(b[a]=T(c))});return function(a,c,h,g){var d=b[c]||b._;return d!==n?d(a,c,h,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,h,g){return a(b,c,h,g)};if("string"!==typeof a||
+-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(b,c){return b[a]};var c=function(a,b,h){if(""!==h){var d=Ma(h);for(var e=0,l=d.length;e<l;e++){h=d[e].match(ca);var m=d[e].match(W);if(h){d[e]=d[e].replace(ca,"");""!==d[e]&&(a=a[d[e]]);m=[];d.splice(0,e+1);d=d.join(".");if(f.isArray(a))for(e=0,l=a.length;e<l;e++)m.push(c(a[e],b,d));a=h[0].substring(1,h[0].length-1);a=""===a?m:m.join(a);break}else if(m){d[e]=d[e].replace(W,"");a=a[d[e]]();continue}if(null===a||a[d[e]]===
+n)return n;a=a[d[e]]}}return a};return function(b,e){return c(b,e,a)}}function Q(a){if(f.isPlainObject(a))return Q(a._);if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"!==typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(b,d){b[a]=d};var b=function(a,d,e){e=Ma(e);var c=e[e.length-1];for(var g,k,l=0,m=e.length-1;l<m;l++){g=e[l].match(ca);k=e[l].match(W);if(g){e[l]=e[l].replace(ca,"");a[e[l]]=[];c=e.slice();
+c.splice(0,l+1);g=c.join(".");if(f.isArray(d))for(k=0,m=d.length;k<m;k++)c={},b(c,d[k],g),a[e[l]].push(c);else a[e[l]]=d;return}k&&(e[l]=e[l].replace(W,""),a=a[e[l]](d));if(null===a[e[l]]||a[e[l]]===n)a[e[l]]={};a=a[e[l]]}if(c.match(W))a[c.replace(W,"")](d);else a[c.replace(ca,"")]=d};return function(c,d){return b(c,d,a)}}function Na(a){return K(a.aoData,"_aData")}function pa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function qa(a,b,c){for(var d=-1,e=0,h=a.length;e<
+h;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===n&&a.splice(d,1)}function da(a,b,c,d){var e=a.aoData[b],h,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=F(a,b,d,"display")};if("dom"!==c&&(c&&"auto"!==c||"dom"!==e.src)){var k=e.anCells;if(k)if(d!==n)g(k[d],d);else for(c=0,h=k.length;c<h;c++)g(k[c],c)}else e._aData=La(a,e,d,d===n?n:e._aData).data;e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==n)g[d].sType=null;else{c=0;for(h=g.length;c<h;c++)g[c].sType=null;
+Oa(a,e)}}function La(a,b,c,d){var e=[],h=b.firstChild,g,k=0,l,m=a.aoColumns,p=a._rowReadObject;d=d!==n?d:p?{}:[];var v=function(a,b){if("string"===typeof a){var c=a.indexOf("@");-1!==c&&(c=a.substring(c+1),Q(a)(d,b.getAttribute(c)))}},u=function(a){if(c===n||c===k)g=m[k],l=f.trim(a.innerHTML),g&&g._bAttrSrc?(Q(g.mData._)(d,l),v(g.mData.sort,a),v(g.mData.type,a),v(g.mData.filter,a)):p?(g._setter||(g._setter=Q(g.mData)),g._setter(d,l)):d[k]=l;k++};if(h)for(;h;){var q=h.nodeName.toUpperCase();if("TD"==
+q||"TH"==q)u(h),e.push(h);h=h.nextSibling}else for(e=b.anCells,h=0,q=e.length;h<q;h++)u(e[h]);(b=b.firstChild?b:b.nTr)&&(b=b.getAttribute("id"))&&Q(a.rowId)(d,b);return{data:d,cells:e}}function Ka(a,b,c,d){var e=a.aoData[b],h=e._aData,g=[],k,l;if(null===e.nTr){var m=c||w.createElement("tr");e.nTr=m;e.anCells=g;m._DT_RowIndex=b;Oa(a,e);var p=0;for(k=a.aoColumns.length;p<k;p++){var v=a.aoColumns[p];var n=(l=c?!1:!0)?w.createElement(v.sCellType):d[p];n._DT_CellIndex={row:b,column:p};g.push(n);if(l||
+!(c&&!v.mRender&&v.mData===p||f.isPlainObject(v.mData)&&v.mData._===p+".display"))n.innerHTML=F(a,b,p,"display");v.sClass&&(n.className+=" "+v.sClass);v.bVisible&&!c?m.appendChild(n):!v.bVisible&&c&&n.parentNode.removeChild(n);v.fnCreatedCell&&v.fnCreatedCell.call(a.oInstance,n,F(a,b,p),h,b,p)}A(a,"aoRowCreatedCallback",null,[m,h,b,g])}e.nTr.setAttribute("role","row")}function Oa(a,b){var c=b.nTr,d=b._aData;if(c){if(a=a.rowIdFn(d))c.id=a;d.DT_RowClass&&(a=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?
+sa(b.__rowc.concat(a)):a,f(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&f(c).attr(d.DT_RowAttr);d.DT_RowData&&f(c).data(d.DT_RowData)}}function ob(a){var b,c,d=a.nTHead,e=a.nTFoot,h=0===f("th, td",d).length,g=a.oClasses,k=a.aoColumns;h&&(c=f("<tr/>").appendTo(d));var l=0;for(b=k.length;l<b;l++){var m=k[l];var p=f(m.nTh).addClass(m.sClass);h&&p.appendTo(c);a.oFeatures.bSort&&(p.addClass(m.sSortingClass),!1!==m.bSortable&&(p.attr("tabindex",a.iTabIndex).attr("aria-controls",
+a.sTableId),Pa(a,m.nTh,l)));m.sTitle!=p[0].innerHTML&&p.html(m.sTitle);Qa(a,"header")(a,p,m,g)}h&&ea(a.aoHeader,d);f(d).find(">tr").attr("role","row");f(d).find(">tr>th, >tr>td").addClass(g.sHeaderTH);f(e).find(">tr>th, >tr>td").addClass(g.sFooterTH);if(null!==e)for(a=a.aoFooter[0],l=0,b=a.length;l<b;l++)m=k[l],m.nTf=a[l].cell,m.sClass&&f(m.nTf).addClass(m.sClass)}function fa(a,b,c){var d,e,h=[],g=[],k=a.aoColumns.length;if(b){c===n&&(c=!1);var l=0;for(d=b.length;l<d;l++){h[l]=b[l].slice();h[l].nTr=
+b[l].nTr;for(e=k-1;0<=e;e--)a.aoColumns[e].bVisible||c||h[l].splice(e,1);g.push([])}l=0;for(d=h.length;l<d;l++){if(a=h[l].nTr)for(;e=a.firstChild;)a.removeChild(e);e=0;for(b=h[l].length;e<b;e++){var m=k=1;if(g[l][e]===n){a.appendChild(h[l][e].cell);for(g[l][e]=1;h[l+k]!==n&&h[l][e].cell==h[l+k][e].cell;)g[l+k][e]=1,k++;for(;h[l][e+m]!==n&&h[l][e].cell==h[l][e+m].cell;){for(c=0;c<k;c++)g[l+c][e+m]=1;m++}f(h[l][e].cell).attr("rowspan",k).attr("colspan",m)}}}}}function S(a){var b=A(a,"aoPreDrawCallback",
+"preDraw",[a]);if(-1!==f.inArray(!1,b))J(a,!1);else{b=[];var c=0,d=a.asStripeClasses,e=d.length,h=a.oLanguage,g=a.iInitDisplayStart,k="ssp"==I(a),l=a.aiDisplay;a.bDrawing=!0;g!==n&&-1!==g&&(a._iDisplayStart=k?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);g=a._iDisplayStart;var m=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,J(a,!1);else if(!k)a.iDraw++;else if(!a.bDestroying&&!pb(a))return;if(0!==l.length)for(h=k?a.aoData.length:m,k=k?0:g;k<h;k++){var p=l[k],v=a.aoData[p];
+null===v.nTr&&Ka(a,p);var u=v.nTr;if(0!==e){var q=d[c%e];v._sRowStripe!=q&&(f(u).removeClass(v._sRowStripe).addClass(q),v._sRowStripe=q)}A(a,"aoRowCallback",null,[u,v._aData,c,k,p]);b.push(u);c++}else c=h.sZeroRecords,1==a.iDraw&&"ajax"==I(a)?c=h.sLoadingRecords:h.sEmptyTable&&0===a.fnRecordsTotal()&&(c=h.sEmptyTable),b[0]=f("<tr/>",{"class":e?d[0]:""}).append(f("<td />",{valign:"top",colSpan:V(a),"class":a.oClasses.sRowEmpty}).html(c))[0];A(a,"aoHeaderCallback","header",[f(a.nTHead).children("tr")[0],
+Na(a),g,m,l]);A(a,"aoFooterCallback","footer",[f(a.nTFoot).children("tr")[0],Na(a),g,m,l]);d=f(a.nTBody);d.children().detach();d.append(f(b));A(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function U(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&qb(a);d?ha(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;S(a);a._drawHold=!1}function rb(a){var b=a.oClasses,c=f(a.nTable);c=f("<div/>").insertBefore(c);var d=a.oFeatures,e=
+f("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var h=a.sDom.split(""),g,k,l,m,p,n,u=0;u<h.length;u++){g=null;k=h[u];if("<"==k){l=f("<div/>")[0];m=h[u+1];if("'"==m||'"'==m){p="";for(n=2;h[u+n]!=m;)p+=h[u+n],n++;"H"==p?p=b.sJUIHeader:"F"==p&&(p=b.sJUIFooter);-1!=p.indexOf(".")?(m=p.split("."),l.id=m[0].substr(1,m[0].length-1),l.className=m[1]):"#"==p.charAt(0)?l.id=p.substr(1,
+p.length-1):l.className=p;u+=n}e.append(l);e=f(l)}else if(">"==k)e=e.parent();else if("l"==k&&d.bPaginate&&d.bLengthChange)g=sb(a);else if("f"==k&&d.bFilter)g=tb(a);else if("r"==k&&d.bProcessing)g=ub(a);else if("t"==k)g=vb(a);else if("i"==k&&d.bInfo)g=wb(a);else if("p"==k&&d.bPaginate)g=xb(a);else if(0!==q.ext.feature.length)for(l=q.ext.feature,n=0,m=l.length;n<m;n++)if(k==l[n].cFeature){g=l[n].fnInit(a);break}g&&(l=a.aanFeatures,l[k]||(l[k]=[]),l[k].push(g),e.append(g))}c.replaceWith(e);a.nHolding=
+null}function ea(a,b){b=f(b).children("tr");var c,d,e;a.splice(0,a.length);var h=0;for(e=b.length;h<e;h++)a.push([]);h=0;for(e=b.length;h<e;h++){var g=b[h];for(c=g.firstChild;c;){if("TD"==c.nodeName.toUpperCase()||"TH"==c.nodeName.toUpperCase()){var k=1*c.getAttribute("colspan");var l=1*c.getAttribute("rowspan");k=k&&0!==k&&1!==k?k:1;l=l&&0!==l&&1!==l?l:1;var m=0;for(d=a[h];d[m];)m++;var p=m;var n=1===k?!0:!1;for(d=0;d<k;d++)for(m=0;m<l;m++)a[h+m][p+d]={cell:c,unique:n},a[h+m].nTr=g}c=c.nextSibling}}}
+function ta(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],ea(c,b)));b=0;for(var e=c.length;b<e;b++)for(var h=0,g=c[b].length;h<g;h++)!c[b][h].unique||d[h]&&a.bSortCellsTop||(d[h]=c[b][h].cell);return d}function ua(a,b,c){A(a,"aoServerParams","serverParams",[b]);if(b&&f.isArray(b)){var d={},e=/(.*?)\[\]$/;f.each(b,function(a,b){(a=b.name.match(e))?(a=a[0],d[a]||(d[a]=[]),d[a].push(b.value)):d[b.name]=b.value});b=d}var h=a.ajax,g=a.oInstance,k=function(b){A(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(f.isPlainObject(h)&&
+h.data){var l=h.data;var m="function"===typeof l?l(b,a):l;b="function"===typeof l&&m?m:f.extend(!0,b,m);delete h.data}m={data:b,success:function(b){var c=b.error||b.sError;c&&O(a,0,c);a.json=b;k(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c,d){d=A(a,null,"xhr",[a,null,a.jqXHR]);-1===f.inArray(!0,d)&&("parsererror"==c?O(a,0,"Invalid JSON response",1):4===b.readyState&&O(a,0,"Ajax error",7));J(a,!1)}};a.oAjaxData=b;A(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(g,
+a.sAjaxSource,f.map(b,function(a,b){return{name:b,value:a}}),k,a):a.sAjaxSource||"string"===typeof h?a.jqXHR=f.ajax(f.extend(m,{url:h||a.sAjaxSource})):"function"===typeof h?a.jqXHR=h.call(g,b,k,a):(a.jqXHR=f.ajax(f.extend(m,h)),h.data=l)}function pb(a){return a.bAjaxDataGet?(a.iDraw++,J(a,!0),ua(a,yb(a),function(b){zb(a,b)}),!1):!0}function yb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,h=a.aoPreSearchCols,g=[],k=X(a);var l=a._iDisplayStart;var m=!1!==d.bPaginate?a._iDisplayLength:
+-1;var p=function(a,b){g.push({name:a,value:b})};p("sEcho",a.iDraw);p("iColumns",c);p("sColumns",K(b,"sName").join(","));p("iDisplayStart",l);p("iDisplayLength",m);var n={draw:a.iDraw,columns:[],order:[],start:l,length:m,search:{value:e.sSearch,regex:e.bRegex}};for(l=0;l<c;l++){var u=b[l];var ra=h[l];m="function"==typeof u.mData?"function":u.mData;n.columns.push({data:m,name:u.sName,searchable:u.bSearchable,orderable:u.bSortable,search:{value:ra.sSearch,regex:ra.bRegex}});p("mDataProp_"+l,m);d.bFilter&&
+(p("sSearch_"+l,ra.sSearch),p("bRegex_"+l,ra.bRegex),p("bSearchable_"+l,u.bSearchable));d.bSort&&p("bSortable_"+l,u.bSortable)}d.bFilter&&(p("sSearch",e.sSearch),p("bRegex",e.bRegex));d.bSort&&(f.each(k,function(a,b){n.order.push({column:b.col,dir:b.dir});p("iSortCol_"+a,b.col);p("sSortDir_"+a,b.dir)}),p("iSortingCols",k.length));b=q.ext.legacy.ajax;return null===b?a.sAjaxSource?g:n:b?g:n}function zb(a,b){var c=function(a,c){return b[a]!==n?b[a]:b[c]},d=va(a,b),e=c("sEcho","draw"),h=c("iTotalRecords",
+"recordsTotal");c=c("iTotalDisplayRecords","recordsFiltered");if(e!==n){if(1*e<a.iDraw)return;a.iDraw=1*e}pa(a);a._iRecordsTotal=parseInt(h,10);a._iRecordsDisplay=parseInt(c,10);e=0;for(h=d.length;e<h;e++)R(a,d[e]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;S(a);a._bInitComplete||wa(a,b);a.bAjaxDataGet=!0;J(a,!1)}function va(a,b){a=f.isPlainObject(a.ajax)&&a.ajax.dataSrc!==n?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===a?b.aaData||b[a]:""!==a?T(a)(b):b}function tb(a){var b=a.oClasses,
+c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,h=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',k=d.sSearch;k=k.match(/_INPUT_/)?k.replace("_INPUT_",g):k+g;b=f("<div/>",{id:h.f?null:c+"_filter","class":b.sFilter}).append(f("<label/>").append(k));var l=function(){var b=this.value?this.value:"";b!=e.sSearch&&(ha(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,S(a))};h=null!==a.searchDelay?a.searchDelay:"ssp"===I(a)?400:0;var m=
+f("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",h?Ra(l,h):l).on("mouseup",function(a){setTimeout(function(){l.call(m[0])},10)}).on("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);f(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{m[0]!==w.activeElement&&m.val(e.sSearch)}catch(u){}});return b[0]}function ha(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,h=function(a){d.sSearch=a.sSearch;d.bRegex=
+a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive},g=function(a){return a.bEscapeRegex!==n?!a.bEscapeRegex:a.bRegex};Ja(a);if("ssp"!=I(a)){Ab(a,b.sSearch,c,g(b),b.bSmart,b.bCaseInsensitive);h(b);for(b=0;b<e.length;b++)Bb(a,e[b].sSearch,b,g(e[b]),e[b].bSmart,e[b].bCaseInsensitive);Cb(a)}else h(b);a.bFiltered=!0;A(a,null,"search",[a])}function Cb(a){for(var b=q.ext.search,c=a.aiDisplay,d,e,h=0,g=b.length;h<g;h++){for(var k=[],l=0,m=c.length;l<m;l++)e=c[l],d=a.aoData[e],b[h](a,d._aFilterData,
+e,d._aData,l)&&k.push(e);c.length=0;f.merge(c,k)}}function Bb(a,b,c,d,e,h){if(""!==b){var g=[],k=a.aiDisplay;d=Sa(b,d,e,h);for(e=0;e<k.length;e++)b=a.aoData[k[e]]._aFilterData[c],d.test(b)&&g.push(k[e]);a.aiDisplay=g}}function Ab(a,b,c,d,e,h){e=Sa(b,d,e,h);var g=a.oPreviousSearch.sSearch,k=a.aiDisplayMaster;h=[];0!==q.ext.search.length&&(c=!0);var f=Db(a);if(0>=b.length)a.aiDisplay=k.slice();else{if(f||c||d||g.length>b.length||0!==b.indexOf(g)||a.bSorted)a.aiDisplay=k.slice();b=a.aiDisplay;for(c=
+0;c<b.length;c++)e.test(a.aoData[b[c]]._sFilterRow)&&h.push(b[c]);a.aiDisplay=h}}function Sa(a,b,c,d){a=b?a:Ta(a);c&&(a="^(?=.*?"+f.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0)){var b=a.match(/^"(.*)"$/);a=b?b[1]:a}return a.replace('"',"")}).join(")(?=.*?")+").*$");return new RegExp(a,d?"i":"")}function Db(a){var b=a.aoColumns,c,d,e=q.ext.type.search;var h=!1;var g=0;for(c=a.aoData.length;g<c;g++){var k=a.aoData[g];if(!k._aFilterData){var f=[];var m=0;for(d=b.length;m<d;m++){h=
+b[m];if(h.bSearchable){var p=F(a,g,m,"filter");e[h.sType]&&(p=e[h.sType](p));null===p&&(p="");"string"!==typeof p&&p.toString&&(p=p.toString())}else p="";p.indexOf&&-1!==p.indexOf("&")&&(xa.innerHTML=p,p=$b?xa.textContent:xa.innerText);p.replace&&(p=p.replace(/[\r\n\u2028]/g,""));f.push(p)}k._aFilterData=f;k._sFilterRow=f.join("  ");h=!0}}return h}function Eb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Fb(a){return{sSearch:a.search,bSmart:a.smart,
+bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function wb(a){var b=a.sTableId,c=a.aanFeatures.i,d=f("<div/>",{"class":a.oClasses.sInfo,id:c?null:b+"_info"});c||(a.aoDrawCallback.push({fn:Gb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),f(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Gb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+1,e=a.fnDisplayEnd(),h=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),k=g?c.sInfo:c.sInfoEmpty;
+g!==h&&(k+=" "+c.sInfoFiltered);k+=c.sInfoPostFix;k=Hb(a,k);c=c.fnInfoCallback;null!==c&&(k=c.call(a.oInstance,a,d,e,h,g,k));f(b).html(k)}}function Hb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,h=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,h)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(h/
+e)))}function ia(a){var b=a.iInitDisplayStart,c=a.aoColumns;var d=a.oFeatures;var e=a.bDeferLoading;if(a.bInitialised){rb(a);ob(a);fa(a,a.aoHeader);fa(a,a.aoFooter);J(a,!0);d.bAutoWidth&&Ia(a);var h=0;for(d=c.length;h<d;h++){var g=c[h];g.sWidth&&(g.nTh.style.width=B(g.sWidth))}A(a,null,"preInit",[a]);U(a);c=I(a);if("ssp"!=c||e)"ajax"==c?ua(a,[],function(c){var d=va(a,c);for(h=0;h<d.length;h++)R(a,d[h]);a.iInitDisplayStart=b;U(a);J(a,!1);wa(a,c)},a):(J(a,!1),wa(a))}else setTimeout(function(){ia(a)},
+200)}function wa(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&Z(a);A(a,null,"plugin-init",[a,b]);A(a,"aoInitComplete","init",[a,b])}function Ua(a,b){b=parseInt(b,10);a._iDisplayLength=b;Va(a);A(a,null,"length",[a,b])}function sb(a){var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=f.isArray(d[0]),h=e?d[0]:d;d=e?d[1]:d;e=f("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect});for(var g=0,k=h.length;g<k;g++)e[0][g]=new Option("number"===typeof d[g]?a.fnFormatNumber(d[g]):d[g],h[g]);
+var l=f("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(l[0].id=c+"_length");l.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));f("select",l).val(a._iDisplayLength).on("change.DT",function(b){Ua(a,f(this).val());S(a)});f(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&f("select",l).val(d)});return l[0]}function xb(a){var b=a.sPaginationType,c=q.ext.pager[b],d="function"===typeof c,e=function(a){S(a)};b=f("<div/>").addClass(a.oClasses.sPaging+b)[0];var h=
+a.aanFeatures;d||c.fnInit(a,b,e);h.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,g=a._iDisplayLength,f=a.fnRecordsDisplay(),p=-1===g;b=p?0:Math.ceil(b/g);g=p?1:Math.ceil(f/g);f=c(b,g);var n;p=0;for(n=h.p.length;p<n;p++)Qa(a,"pageButton")(a,h.p[p],p,f,b,g)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Wa(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,h=a.fnRecordsDisplay();0===h||-1===e?d=0:"number"===typeof b?(d=b*e,d>h&&(d=0)):
+"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<h&&(d+=e):"last"==b?d=Math.floor((h-1)/e)*e:O(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(A(a,null,"page",[a]),c&&S(a));return b}function ub(a){return f("<div/>",{id:a.aanFeatures.r?null:a.sTableId+"_processing","class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function J(a,b){a.oFeatures.bProcessing&&f(a.aanFeatures.r).css("display",b?"block":"none");A(a,
+null,"processing",[a,b])}function vb(a){var b=f(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,h=a.oClasses,g=b.children("caption"),k=g.length?g[0]._captionSide:null,l=f(b[0].cloneNode(!1)),m=f(b[0].cloneNode(!1)),p=b.children("tfoot");p.length||(p=null);l=f("<div/>",{"class":h.sScrollWrapper}).append(f("<div/>",{"class":h.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?d?B(d):null:"100%"}).append(f("<div/>",{"class":h.sScrollHeadInner}).css({"box-sizing":"content-box",
+width:c.sXInner||"100%"}).append(l.removeAttr("id").css("margin-left",0).append("top"===k?g:null).append(b.children("thead"))))).append(f("<div/>",{"class":h.sScrollBody}).css({position:"relative",overflow:"auto",width:d?B(d):null}).append(b));p&&l.append(f("<div/>",{"class":h.sScrollFoot}).css({overflow:"hidden",border:0,width:d?d?B(d):null:"100%"}).append(f("<div/>",{"class":h.sScrollFootInner}).append(m.removeAttr("id").css("margin-left",0).append("bottom"===k?g:null).append(b.children("tfoot")))));
+b=l.children();var n=b[0];h=b[1];var u=p?b[2]:null;if(d)f(h).on("scroll.DT",function(a){a=this.scrollLeft;n.scrollLeft=a;p&&(u.scrollLeft=a)});f(h).css("max-height",e);c.bCollapse||f(h).css("height",e);a.nScrollHead=n;a.nScrollBody=h;a.nScrollFoot=u;a.aoDrawCallback.push({fn:ma,sName:"scrolling"});return l[0]}function ma(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY;b=b.iBarWidth;var h=f(a.nScrollHead),g=h[0].style,k=h.children("div"),l=k[0].style,m=k.children("table");k=a.nScrollBody;var p=f(k),v=
+k.style,u=f(a.nScrollFoot).children("div"),q=u.children("table"),t=f(a.nTHead),r=f(a.nTable),x=r[0],ya=x.style,w=a.nTFoot?f(a.nTFoot):null,y=a.oBrowser,A=y.bScrollOversize,ac=K(a.aoColumns,"nTh"),Xa=[],z=[],C=[],G=[],H,I=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};var D=k.scrollHeight>k.clientHeight;if(a.scrollBarVis!==D&&a.scrollBarVis!==n)a.scrollBarVis=D,Z(a);else{a.scrollBarVis=D;r.children("thead, tfoot").remove();if(w){var E=
+w.clone().prependTo(r);var F=w.find("tr");E=E.find("tr")}var J=t.clone().prependTo(r);t=t.find("tr");D=J.find("tr");J.find("th, td").removeAttr("tabindex");c||(v.width="100%",h[0].style.width="100%");f.each(ta(a,J),function(b,c){H=aa(a,b);c.style.width=a.aoColumns[H].sWidth});w&&N(function(a){a.style.width=""},E);h=r.outerWidth();""===c?(ya.width="100%",A&&(r.find("tbody").height()>k.offsetHeight||"scroll"==p.css("overflow-y"))&&(ya.width=B(r.outerWidth()-b)),h=r.outerWidth()):""!==d&&(ya.width=B(d),
+h=r.outerWidth());N(I,D);N(function(a){C.push(a.innerHTML);Xa.push(B(f(a).css("width")))},D);N(function(a,b){-1!==f.inArray(a,ac)&&(a.style.width=Xa[b])},t);f(D).height(0);w&&(N(I,E),N(function(a){G.push(a.innerHTML);z.push(B(f(a).css("width")))},E),N(function(a,b){a.style.width=z[b]},F),f(E).height(0));N(function(a,b){a.innerHTML='<div class="dataTables_sizing">'+C[b]+"</div>";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=Xa[b]},D);w&&N(function(a,b){a.innerHTML=
+'<div class="dataTables_sizing">'+G[b]+"</div>";a.childNodes[0].style.height="0";a.childNodes[0].style.overflow="hidden";a.style.width=z[b]},E);r.outerWidth()<h?(F=k.scrollHeight>k.offsetHeight||"scroll"==p.css("overflow-y")?h+b:h,A&&(k.scrollHeight>k.offsetHeight||"scroll"==p.css("overflow-y"))&&(ya.width=B(F-b)),""!==c&&""===d||O(a,1,"Possible column misalignment",6)):F="100%";v.width=B(F);g.width=B(F);w&&(a.nScrollFoot.style.width=B(F));!e&&A&&(v.height=B(x.offsetHeight+b));c=r.outerWidth();m[0].style.width=
+B(c);l.width=B(c);d=r.height()>k.clientHeight||"scroll"==p.css("overflow-y");e="padding"+(y.bScrollbarLeft?"Left":"Right");l[e]=d?b+"px":"0px";w&&(q[0].style.width=B(c),u[0].style.width=B(c),u[0].style[e]=d?b+"px":"0px");r.children("colgroup").insertBefore(r.children("thead"));p.trigger("scroll");!a.bSorted&&!a.bFiltered||a._drawHold||(k.scrollTop=0)}}function N(a,b,c){for(var d=0,e=0,h=b.length,g,k;e<h;){g=b[e].firstChild;for(k=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,k,d):a(g,d),d++),g=
+g.nextSibling,k=c?k.nextSibling:null;e++}}function Ia(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,h=d.sX,g=d.sXInner,k=c.length,l=na(a,"bVisible"),m=f("th",a.nTHead),p=b.getAttribute("width"),n=b.parentNode,u=!1,q,t=a.oBrowser;d=t.bScrollOversize;(q=b.style.width)&&-1!==q.indexOf("%")&&(p=q);for(q=0;q<l.length;q++){var r=c[l[q]];null!==r.sWidth&&(r.sWidth=Ib(r.sWidthOrig,n),u=!0)}if(d||!u&&!h&&!e&&k==V(a)&&k==m.length)for(q=0;q<k;q++)l=aa(a,q),null!==l&&(c[l].sWidth=B(m.eq(q).width()));else{k=
+f(b).clone().css("visibility","hidden").removeAttr("id");k.find("tbody tr").remove();var w=f("<tr/>").appendTo(k.find("tbody"));k.find("thead, tfoot").remove();k.append(f(a.nTHead).clone()).append(f(a.nTFoot).clone());k.find("tfoot th, tfoot td").css("width","");m=ta(a,k.find("thead")[0]);for(q=0;q<l.length;q++)r=c[l[q]],m[q].style.width=null!==r.sWidthOrig&&""!==r.sWidthOrig?B(r.sWidthOrig):"",r.sWidthOrig&&h&&f(m[q]).append(f("<div/>").css({width:r.sWidthOrig,margin:0,padding:0,border:0,height:1}));
+if(a.aoData.length)for(q=0;q<l.length;q++)u=l[q],r=c[u],f(Jb(a,u)).clone(!1).append(r.sContentPadding).appendTo(w);f("[name]",k).removeAttr("name");r=f("<div/>").css(h||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(k).appendTo(n);h&&g?k.width(g):h?(k.css("width","auto"),k.removeAttr("width"),k.width()<n.clientWidth&&p&&k.width(n.clientWidth)):e?k.width(n.clientWidth):p&&k.width(p);for(q=e=0;q<l.length;q++)n=f(m[q]),g=n.outerWidth()-n.width(),n=t.bBounding?Math.ceil(m[q].getBoundingClientRect().width):
+n.outerWidth(),e+=n,c[l[q]].sWidth=B(n-g);b.style.width=B(e);r.remove()}p&&(b.style.width=B(p));!p&&!h||a._reszEvt||(b=function(){f(y).on("resize.DT-"+a.sInstance,Ra(function(){Z(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0)}function Ib(a,b){if(!a)return 0;a=f("<div/>").css("width",B(a)).appendTo(b||w.body);b=a[0].offsetWidth;a.remove();return b}function Jb(a,b){var c=Kb(a,b);if(0>c)return null;var d=a.aoData[c];return d.nTr?d.anCells[b]:f("<td/>").html(F(a,c,b,"display"))[0]}function Kb(a,b){for(var c,
+d=-1,e=-1,h=0,g=a.aoData.length;h<g;h++)c=F(a,h,b,"display")+"",c=c.replace(bc,""),c=c.replace(/&nbsp;/g," "),c.length>d&&(d=c.length,e=h);return e}function B(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function X(a){var b=[],c=a.aoColumns;var d=a.aaSortingFixed;var e=f.isPlainObject(d);var h=[];var g=function(a){a.length&&!f.isArray(a[0])?h.push(a):f.merge(h,a)};f.isArray(d)&&g(d);e&&d.pre&&g(d.pre);g(a.aaSorting);e&&d.post&&g(d.post);for(a=0;a<h.length;a++){var k=
+h[a][0];g=c[k].aDataSort;d=0;for(e=g.length;d<e;d++){var l=g[d];var m=c[l].sType||"string";h[a]._idx===n&&(h[a]._idx=f.inArray(h[a][1],c[l].asSorting));b.push({src:k,col:l,dir:h[a][1],index:h[a]._idx,type:m,formatter:q.ext.type.order[m+"-pre"]})}}return b}function qb(a){var b,c=[],d=q.ext.type.order,e=a.aoData,h=0,g=a.aiDisplayMaster;Ja(a);var k=X(a);var f=0;for(b=k.length;f<b;f++){var m=k[f];m.formatter&&h++;Lb(a,m.col)}if("ssp"!=I(a)&&0!==k.length){f=0;for(b=g.length;f<b;f++)c[g[f]]=f;h===k.length?
+g.sort(function(a,b){var d,h=k.length,g=e[a]._aSortData,f=e[b]._aSortData;for(d=0;d<h;d++){var l=k[d];var m=g[l.col];var p=f[l.col];m=m<p?-1:m>p?1:0;if(0!==m)return"asc"===l.dir?m:-m}m=c[a];p=c[b];return m<p?-1:m>p?1:0}):g.sort(function(a,b){var h,g=k.length,f=e[a]._aSortData,l=e[b]._aSortData;for(h=0;h<g;h++){var m=k[h];var p=f[m.col];var n=l[m.col];m=d[m.type+"-"+m.dir]||d["string-"+m.dir];p=m(p,n);if(0!==p)return p}p=c[a];n=c[b];return p<n?-1:p>n?1:0})}a.bSorted=!0}function Mb(a){var b=a.aoColumns,
+c=X(a);a=a.oLanguage.oAria;for(var d=0,e=b.length;d<e;d++){var h=b[d];var g=h.asSorting;var k=h.sTitle.replace(/<.*?>/g,"");var f=h.nTh;f.removeAttribute("aria-sort");h.bSortable&&(0<c.length&&c[0].col==d?(f.setAttribute("aria-sort","asc"==c[0].dir?"ascending":"descending"),h=g[c[0].index+1]||g[0]):h=g[0],k+="asc"===h?a.sSortAscending:a.sSortDescending);f.setAttribute("aria-label",k)}}function Ya(a,b,c,d){var e=a.aaSorting,h=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===n&&(c=f.inArray(a[1],
+h));return c+1<h.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=f.inArray(b,K(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=h[b],e[c]._idx=b)):(e.push([b,h[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=h[b],e[0]._idx=b):(e.length=0,e.push([b,h[0]]),e[0]._idx=0);U(a);"function"==typeof d&&d(a)}function Pa(a,b,c,d){var e=a.aoColumns[c];Za(b,{},function(b){!1!==e.bSortable&&
+(a.oFeatures.bProcessing?(J(a,!0),setTimeout(function(){Ya(a,c,b.shiftKey,d);"ssp"!==I(a)&&J(a,!1)},0)):Ya(a,c,b.shiftKey,d))})}function za(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=X(a),e=a.oFeatures,h;if(e.bSort&&e.bSortClasses){e=0;for(h=b.length;e<h;e++){var g=b[e].src;f(K(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3))}e=0;for(h=d.length;e<h;e++)g=d[e].src,f(K(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Lb(a,b){var c=a.aoColumns[b],d=q.ext.order[c.sSortDataType],
+e;d&&(e=d.call(a.oInstance,a,b,ba(a,b)));for(var h,g=q.ext.type.order[c.sType+"-pre"],f=0,l=a.aoData.length;f<l;f++)if(c=a.aoData[f],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)h=d?e[f]:F(a,f,b,"sort"),c._aSortData[b]=g?g(h):h}function Aa(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:f.extend(!0,[],a.aaSorting),search:Eb(a.oPreviousSearch),columns:f.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:Eb(a.aoPreSearchCols[d])}})};
+A(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function Nb(a,b,c){var d,e,h=a.aoColumns;b=function(b){if(b&&b.time){var g=A(a,"aoStateLoadParams","stateLoadParams",[a,b]);if(-1===f.inArray(!1,g)&&(g=a.iStateDuration,!(0<g&&b.time<+new Date-1E3*g||b.columns&&h.length!==b.columns.length))){a.oLoadedState=f.extend(!0,{},b);b.start!==n&&(a._iDisplayStart=b.start,a.iInitDisplayStart=b.start);b.length!==n&&(a._iDisplayLength=b.length);b.order!==
+n&&(a.aaSorting=[],f.each(b.order,function(b,c){a.aaSorting.push(c[0]>=h.length?[0,c[1]]:c)}));b.search!==n&&f.extend(a.oPreviousSearch,Fb(b.search));if(b.columns)for(d=0,e=b.columns.length;d<e;d++)g=b.columns[d],g.visible!==n&&(h[d].bVisible=g.visible),g.search!==n&&f.extend(a.aoPreSearchCols[d],Fb(g.search));A(a,"aoStateLoaded","stateLoaded",[a,b])}}c()};if(a.oFeatures.bStateSave){var g=a.fnStateLoadCallback.call(a.oInstance,a,b);g!==n&&b(g)}else c()}function Ba(a){var b=q.settings;a=f.inArray(a,
+K(b,"nTable"));return-1!==a?b[a]:null}function O(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)y.console&&console.log&&console.log(c);else if(b=q.ext,b=b.sErrMode||b.errMode,a&&A(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function M(a,b,c,d){f.isArray(c)?f.each(c,function(c,d){f.isArray(d)?M(a,b,d[0],d[1]):M(a,b,
+d)}):(d===n&&(d=c),b[c]!==n&&(a[d]=b[c]))}function $a(a,b,c){var d;for(d in b)if(b.hasOwnProperty(d)){var e=b[d];f.isPlainObject(e)?(f.isPlainObject(a[d])||(a[d]={}),f.extend(!0,a[d],e)):c&&"data"!==d&&"aaData"!==d&&f.isArray(e)?a[d]=e.slice():a[d]=e}return a}function Za(a,b,c){f(a).on("click.DT",b,function(b){f(a).trigger("blur");c(b)}).on("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).on("selectstart.DT",function(){return!1})}function D(a,b,c,d){c&&a[b].push({fn:c,sName:d})}
+function A(a,b,c,d){var e=[];b&&(e=f.map(a[b].slice().reverse(),function(b,c){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=f.Event(c+".dt"),f(a.nTable).trigger(b,d),e.push(b.result));return e}function Va(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Qa(a,b){a=a.renderer;var c=q.ext.renderer[b];return f.isPlainObject(a)&&a[b]?c[a[b]]||c._:"string"===typeof a?c[a]||c._:c._}function I(a){return a.oFeatures.bServerSide?
+"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ja(a,b){var c=Ob.numbers_length,d=Math.floor(c/2);b<=c?a=Y(0,b):a<=d?(a=Y(0,c-2),a.push("ellipsis"),a.push(b-1)):(a>=b-1-d?a=Y(b-(c-2),b):(a=Y(a-d+2,a+d-1),a.push("ellipsis"),a.push(b-1)),a.splice(0,0,"ellipsis"),a.splice(0,0,0));a.DT_el="span";return a}function Ga(a){f.each({num:function(b){return Ca(b,a)},"num-fmt":function(b){return Ca(b,a,ab)},"html-num":function(b){return Ca(b,a,Da)},"html-num-fmt":function(b){return Ca(b,a,Da,ab)}},function(b,
+c){C.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(C.type.search[b+a]=C.type.search.html)})}function Pb(a){return function(){var b=[Ba(this[q.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return q.ext.internal[a].apply(this,b)}}var q=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new x(Ba(this[C.iApiIndex])):new x(this)};this.fnAddData=function(a,b){var c=this.api(!0);a=f.isArray(a)&&
+(f.isArray(a[0])||f.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===n||b)&&c.draw();return a.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===n||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&ma(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===n||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0);a=d.rows(a);var e=a.settings()[0],h=e.aoData[a[0][0]];
+a.remove();b&&b.call(this,e,h);(c===n||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};this.fnFilter=function(a,b,c,d,e,f){e=this.api(!0);null===b||b===n?e.search(a,c,d,f):e.column(b).search(a,c,d,f);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==n){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==n||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=
+function(a){var b=this.api(!0);return a!==n?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){a=this.api(!0).page(a);(b===n||
+b)&&a.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===n||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return Ba(this[C.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===n||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===n||e)&&h.columns.adjust();(d===n||d)&&h.draw();return 0};this.fnVersionCheck=C.fnVersionCheck;
+var b=this,c=a===n,d=this.length;c&&(a={});this.oApi=this.internal=C.internal;for(var e in q.ext.internal)e&&(this[e]=Pb(e));this.each(function(){var e={},g=1<d?$a(e,a,!0):a,k=0,l;e=this.getAttribute("id");var m=!1,p=q.defaults,v=f(this);if("table"!=this.nodeName.toLowerCase())O(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{ib(p);jb(p.column);L(p,p,!0);L(p.column,p.column,!0);L(p,f.extend(g,v.data()),!0);var u=q.settings;k=0;for(l=u.length;k<l;k++){var t=u[k];if(t.nTable==this||
+t.nTHead&&t.nTHead.parentNode==this||t.nTFoot&&t.nTFoot.parentNode==this){var w=g.bRetrieve!==n?g.bRetrieve:p.bRetrieve;if(c||w)return t.oInstance;if(g.bDestroy!==n?g.bDestroy:p.bDestroy){t.oInstance.fnDestroy();break}else{O(t,0,"Cannot reinitialise DataTable",3);return}}if(t.sTableId==this.id){u.splice(k,1);break}}if(null===e||""===e)this.id=e="DataTables_Table_"+q.ext._unique++;var r=f.extend(!0,{},q.models.oSettings,{sDestroyWidth:v[0].style.width,sInstance:e,sTableId:e});r.nTable=this;r.oApi=
+b.internal;r.oInit=g;u.push(r);r.oInstance=1===b.length?b:v.dataTable();ib(g);Fa(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=f.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]);g=$a(f.extend(!0,{},p),g);M(r.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));M(r,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu",
+"sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]);M(r.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);M(r.oLanguage,g,"fnInfoCallback");D(r,"aoDrawCallback",g.fnDrawCallback,
+"user");D(r,"aoServerParams",g.fnServerParams,"user");D(r,"aoStateSaveParams",g.fnStateSaveParams,"user");D(r,"aoStateLoadParams",g.fnStateLoadParams,"user");D(r,"aoStateLoaded",g.fnStateLoaded,"user");D(r,"aoRowCallback",g.fnRowCallback,"user");D(r,"aoRowCreatedCallback",g.fnCreatedRow,"user");D(r,"aoHeaderCallback",g.fnHeaderCallback,"user");D(r,"aoFooterCallback",g.fnFooterCallback,"user");D(r,"aoInitComplete",g.fnInitComplete,"user");D(r,"aoPreDrawCallback",g.fnPreDrawCallback,"user");r.rowIdFn=
+T(g.rowId);kb(r);var x=r.oClasses;f.extend(x,q.ext.classes,g.oClasses);v.addClass(x.sTable);r.iInitDisplayStart===n&&(r.iInitDisplayStart=g.iDisplayStart,r._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(r.bDeferLoading=!0,e=f.isArray(g.iDeferLoading),r._iRecordsDisplay=e?g.iDeferLoading[0]:g.iDeferLoading,r._iRecordsTotal=e?g.iDeferLoading[1]:g.iDeferLoading);var y=r.oLanguage;f.extend(!0,y,g.oLanguage);y.sUrl&&(f.ajax({dataType:"json",url:y.sUrl,success:function(a){Fa(a);L(p.oLanguage,
+a);f.extend(!0,y,a);ia(r)},error:function(){ia(r)}}),m=!0);null===g.asStripeClasses&&(r.asStripeClasses=[x.sStripeOdd,x.sStripeEven]);e=r.asStripeClasses;var z=v.children("tbody").find("tr").eq(0);-1!==f.inArray(!0,f.map(e,function(a,b){return z.hasClass(a)}))&&(f("tbody tr",this).removeClass(e.join(" ")),r.asDestroyStripes=e.slice());e=[];u=this.getElementsByTagName("thead");0!==u.length&&(ea(r.aoHeader,u[0]),e=ta(r));if(null===g.aoColumns)for(u=[],k=0,l=e.length;k<l;k++)u.push(null);else u=g.aoColumns;
+k=0;for(l=u.length;k<l;k++)Ha(r,e?e[k]:null);mb(r,g.aoColumnDefs,u,function(a,b){la(r,a,b)});if(z.length){var B=function(a,b){return null!==a.getAttribute("data-"+b)?b:null};f(z[0]).children("th, td").each(function(a,b){var c=r.aoColumns[a];if(c.mData===a){var d=B(b,"sort")||B(b,"order");b=B(b,"filter")||B(b,"search");if(null!==d||null!==b)c.mData={_:a+".display",sort:null!==d?a+".@data-"+d:n,type:null!==d?a+".@data-"+d:n,filter:null!==b?a+".@data-"+b:n},la(r,a)}})}var C=r.oFeatures;e=function(){if(g.aaSorting===
+n){var a=r.aaSorting;k=0;for(l=a.length;k<l;k++)a[k][1]=r.aoColumns[k].asSorting[0]}za(r);C.bSort&&D(r,"aoDrawCallback",function(){if(r.bSorted){var a=X(r),b={};f.each(a,function(a,c){b[c.src]=c.dir});A(r,null,"order",[r,a,b]);Mb(r)}});D(r,"aoDrawCallback",function(){(r.bSorted||"ssp"===I(r)||C.bDeferRender)&&za(r)},"sc");a=v.children("caption").each(function(){this._captionSide=f(this).css("caption-side")});var b=v.children("thead");0===b.length&&(b=f("<thead/>").appendTo(v));r.nTHead=b[0];b=v.children("tbody");
+0===b.length&&(b=f("<tbody/>").appendTo(v));r.nTBody=b[0];b=v.children("tfoot");0===b.length&&0<a.length&&(""!==r.oScroll.sX||""!==r.oScroll.sY)&&(b=f("<tfoot/>").appendTo(v));0===b.length||0===b.children().length?v.addClass(x.sNoFooter):0<b.length&&(r.nTFoot=b[0],ea(r.aoFooter,r.nTFoot));if(g.aaData)for(k=0;k<g.aaData.length;k++)R(r,g.aaData[k]);else(r.bDeferLoading||"dom"==I(r))&&oa(r,f(r.nTBody).children("tr"));r.aiDisplay=r.aiDisplayMaster.slice();r.bInitialised=!0;!1===m&&ia(r)};g.bStateSave?
+(C.bStateSave=!0,D(r,"aoDrawCallback",Aa,"state_save"),Nb(r,g,e)):e()}});b=null;return this},C,t,z,bb={},Qb=/[\r\n\u2028]/g,Da=/<.*?>/g,cc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,dc=/(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\\|\$|\^|\-)/g,ab=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,P=function(a){return a&&!0!==a&&"-"!==a?!1:!0},Rb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Sb=function(a,b){bb[b]||(bb[b]=new RegExp(Ta(b),"g"));
+return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(bb[b],"."):a},cb=function(a,b,c){var d="string"===typeof a;if(P(a))return!0;b&&d&&(a=Sb(a,b));c&&d&&(a=a.replace(ab,""));return!isNaN(parseFloat(a))&&isFinite(a)},Tb=function(a,b,c){return P(a)?!0:P(a)||"string"===typeof a?cb(a.replace(Da,""),b,c)?!0:null:null},K=function(a,b,c){var d=[],e=0,h=a.length;if(c!==n)for(;e<h;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<h;e++)a[e]&&d.push(a[e][b]);return d},ka=function(a,b,c,d){var e=[],
+h=0,g=b.length;if(d!==n)for(;h<g;h++)a[b[h]][c]&&e.push(a[b[h]][c][d]);else for(;h<g;h++)e.push(a[b[h]][c]);return e},Y=function(a,b){var c=[];if(b===n){b=0;var d=a}else d=b,b=a;for(a=b;a<d;a++)c.push(a);return c},Ub=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);return b},sa=function(a){a:{if(!(2>a.length)){var b=a.slice().sort();for(var c=b[0],d=1,e=b.length;d<e;d++){if(b[d]===c){b=!1;break a}c=b[d]}}b=!0}if(b)return a.slice();b=[];e=a.length;var h,g=0;d=0;a:for(;d<e;d++){c=
+a[d];for(h=0;h<g;h++)if(b[h]===c)continue a;b.push(c);g++}return b};q.util={throttle:function(a,b){var c=b!==n?b:200,d,e;return function(){var b=this,g=+new Date,f=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=n;a.apply(b,f)},c)):(d=g,a.apply(b,f))}},escapeRegex:function(a){return a.replace(dc,"\\$1")}};var E=function(a,b,c){a[b]!==n&&(a[c]=a[b])},ca=/\[.*?\]$/,W=/\(\)$/,Ta=q.util.escapeRegex,xa=f("<div>")[0],$b=xa.textContent!==n,bc=/<.*?>/g,Ra=q.util.throttle,Vb=[],G=Array.prototype,
+ec=function(a){var b,c=q.settings,d=f.map(c,function(a,b){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase()){var e=f.inArray(a,d);return-1!==e?[c[e]]:null}if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?b=f(a):a instanceof f&&(b=a)}else return[];if(b)return b.map(function(a){e=f.inArray(this,d);return-1!==e?c[e]:null}).toArray()};var x=function(a,b){if(!(this instanceof x))return new x(a,b);var c=[],d=function(a){(a=
+ec(a))&&c.push.apply(c,a)};if(f.isArray(a))for(var e=0,h=a.length;e<h;e++)d(a[e]);else d(a);this.context=sa(c);b&&f.merge(this,b);this.selector={rows:null,cols:null,opts:null};x.extend(this,this,Vb)};q.Api=x;f.extend(x.prototype,{any:function(){return 0!==this.count()},concat:G.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new x(b[a],this[a]):
+null},filter:function(a){var b=[];if(G.filter)b=G.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new x(this.context,b)},flatten:function(){var a=[];return new x(this.context,a.concat.apply(a,this.toArray()))},join:G.join,indexOf:G.indexOf||function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1},iterator:function(a,b,c,d){var e=[],h,g,f=this.context,l,m=this.selector;"string"===typeof a&&(d=c,c=b,b=a,
+a=!1);var p=0;for(h=f.length;p<h;p++){var q=new x(f[p]);if("table"===b){var u=c.call(q,f[p],p);u!==n&&e.push(u)}else if("columns"===b||"rows"===b)u=c.call(q,f[p],this[p],p),u!==n&&e.push(u);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){var t=this[p];"column-rows"===b&&(l=Ea(f[p],m.opts));var w=0;for(g=t.length;w<g;w++)u=t[w],u="cell"===b?c.call(q,f[p],u.row,u.column,p,w):c.call(q,f[p],u,p,w,l),u!==n&&e.push(u)}}return e.length||d?(a=new x(f,a?e.concat.apply([],e):e),b=a.selector,
+b.rows=m.rows,b.cols=m.cols,b.opts=m.opts,a):this},lastIndexOf:G.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(G.map)b=G.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new x(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:G.pop,push:G.push,reduce:G.reduce||function(a,b){return lb(this,a,b,0,this.length,1)},reduceRight:G.reduceRight||function(a,
+b){return lb(this,a,b,this.length-1,-1,-1)},reverse:G.reverse,selector:null,shift:G.shift,slice:function(){return new x(this.context,this)},sort:G.sort,splice:G.splice,toArray:function(){return G.slice.call(this)},to$:function(){return f(this)},toJQuery:function(){return f(this)},unique:function(){return new x(this.context,sa(this))},unshift:G.unshift});x.extend=function(a,b,c){if(c.length&&b&&(b instanceof x||b.__dt_wrapper)){var d,e=function(a,b,c){return function(){var d=b.apply(a,arguments);x.extend(d,
+d,c.methodExt);return d}};var h=0;for(d=c.length;h<d;h++){var f=c[h];b[f.name]="function"===f.type?e(a,f.val,f):"object"===f.type?{}:f.val;b[f.name].__dt_wrapper=!0;x.extend(a,b[f.name],f.propExt)}}};x.register=t=function(a,b){if(f.isArray(a))for(var c=0,d=a.length;c<d;c++)x.register(a[c],b);else{d=a.split(".");var e=Vb,h;a=0;for(c=d.length;a<c;a++){var g=(h=-1!==d[a].indexOf("()"))?d[a].replace("()",""):d[a];a:{var k=0;for(var l=e.length;k<l;k++)if(e[k].name===g){k=e[k];break a}k=null}k||(k={name:g,
+val:{},methodExt:[],propExt:[],type:"object"},e.push(k));a===c-1?(k.val=b,k.type="function"===typeof b?"function":f.isPlainObject(b)?"object":"other"):e=h?k.methodExt:k.propExt}}};x.registerPlural=z=function(a,b,c){x.register(a,c);x.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof x?a.length?f.isArray(a[0])?new x(a.context,a[0]):a[0]:n:a})};var Wb=function(a,b){if(f.isArray(a))return f.map(a,function(a){return Wb(a,b)});if("number"===typeof a)return[b[a]];var c=
+f.map(b,function(a,b){return a.nTable});return f(c).filter(a).map(function(a){a=f.inArray(this,c);return b[a]}).toArray()};t("tables()",function(a){return a!==n&&null!==a?new x(Wb(a,this.context)):this});t("table()",function(a){a=this.tables(a);var b=a.context;return b.length?new x(b[0]):a});z("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});z("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody},
+1)});z("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});z("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});z("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});t("draw()",function(a){return this.iterator("table",function(b){"page"===a?S(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),U(b,!1===
+a))})});t("page()",function(a){return a===n?this.page.info().page:this.iterator("table",function(b){Wa(b,a)})});t("page.info()",function(a){if(0===this.context.length)return n;a=this.context[0];var b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,serverSide:"ssp"===I(a)}});t("page.len()",function(a){return a===
+n?0!==this.context.length?this.context[0]._iDisplayLength:n:this.iterator("table",function(b){Ua(b,a)})});var Xb=function(a,b,c){if(c){var d=new x(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==I(a))U(a,b);else{J(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();ua(a,[],function(c){pa(a);c=va(a,c);for(var d=0,e=c.length;d<e;d++)R(a,c[d]);U(a,b);J(a,!1)})}};t("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});t("ajax.params()",function(){var a=this.context;if(0<
+a.length)return a[0].oAjaxData});t("ajax.reload()",function(a,b){return this.iterator("table",function(c){Xb(c,!1===b,a)})});t("ajax.url()",function(a){var b=this.context;if(a===n){if(0===b.length)return n;b=b[0];return b.ajax?f.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){f.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});t("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Xb(c,!1===b,a)})});var db=function(a,b,c,d,e){var h=
+[],g,k,l;var m=typeof b;b&&"string"!==m&&"function"!==m&&b.length!==n||(b=[b]);m=0;for(k=b.length;m<k;m++){var p=b[m]&&b[m].split&&!b[m].match(/[\[\(:]/)?b[m].split(","):[b[m]];var q=0;for(l=p.length;q<l;q++)(g=c("string"===typeof p[q]?f.trim(p[q]):p[q]))&&g.length&&(h=h.concat(g))}a=C.selector[a];if(a.length)for(m=0,k=a.length;m<k;m++)h=a[m](d,e,h);return sa(h)},eb=function(a){a||(a={});a.filter&&a.search===n&&(a.search=a.filter);return f.extend({search:"none",order:"current",page:"all"},a)},fb=
+function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Ea=function(a,b){var c=[],d=a.aiDisplay;var e=a.aiDisplayMaster;var h=b.search;var g=b.order;b=b.page;if("ssp"==I(a))return"removed"===h?[]:Y(0,e.length);if("current"==b)for(g=a._iDisplayStart,a=a.fnDisplayEnd();g<a;g++)c.push(d[g]);else if("current"==g||"applied"==g)if("none"==h)c=e.slice();else if("applied"==h)c=d.slice();else{if("removed"==h){var k=
+{};g=0;for(a=d.length;g<a;g++)k[d[g]]=null;c=f.map(e,function(a){return k.hasOwnProperty(a)?null:a})}}else if("index"==g||"original"==g)for(g=0,a=a.aoData.length;g<a;g++)"none"==h?c.push(g):(e=f.inArray(g,d),(-1===e&&"removed"==h||0<=e&&"applied"==h)&&c.push(g));return c},fc=function(a,b,c){var d;return db("row",b,function(b){var e=Rb(b),g=a.aoData;if(null!==e&&!c)return[e];d||(d=Ea(a,c));if(null!==e&&-1!==f.inArray(e,d))return[e];if(null===b||b===n||""===b)return d;if("function"===typeof b)return f.map(d,
+function(a){var c=g[a];return b(a,c._aData,c.nTr)?a:null});if(b.nodeName){e=b._DT_RowIndex;var k=b._DT_CellIndex;if(e!==n)return g[e]&&g[e].nTr===b?[e]:[];if(k)return g[k.row]&&g[k.row].nTr===b.parentNode?[k.row]:[];e=f(b).closest("*[data-dt-row]");return e.length?[e.data("dt-row")]:[]}if("string"===typeof b&&"#"===b.charAt(0)&&(e=a.aIds[b.replace(/^#/,"")],e!==n))return[e.idx];e=Ub(ka(a.aoData,d,"nTr"));return f(e).filter(b).map(function(){return this._DT_RowIndex}).toArray()},a,c)};t("rows()",function(a,
+b){a===n?a="":f.isPlainObject(a)&&(b=a,a="");b=eb(b);var c=this.iterator("table",function(c){return fc(c,a,b)},1);c.selector.rows=a;c.selector.opts=b;return c});t("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||n},1)});t("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ka(a.aoData,b,"_aData")},1)});z("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){b=b.aoData[c];return"search"===a?b._aFilterData:
+b._aSortData},1)});z("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){da(b,c,a)})});z("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});z("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var k=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+k)}return new x(c,b)});z("rows().remove()","row().remove()",function(){var a=
+this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c],g,k;e.splice(c,1);var l=0;for(g=e.length;l<g;l++){var m=e[l];var p=m.anCells;null!==m.nTr&&(m.nTr._DT_RowIndex=l);if(null!==p)for(m=0,k=p.length;m<k;m++)p[m]._DT_CellIndex.row=l}qa(b.aiDisplayMaster,c);qa(b.aiDisplay,c);qa(a[d],c,!1);0<b._iRecordsDisplay&&b._iRecordsDisplay--;Va(b);c=b.rowIdFn(f._aData);c!==n&&delete b.aIds[c]});this.iterator("table",function(a){for(var b=0,d=a.aoData.length;b<d;b++)a.aoData[b].idx=b});return this});t("rows.add()",
+function(a){var b=this.iterator("table",function(b){var c,d=[];var f=0;for(c=a.length;f<c;f++){var k=a[f];k.nodeName&&"TR"===k.nodeName.toUpperCase()?d.push(oa(b,k)[0]):d.push(R(b,k))}return d},1),c=this.rows(-1);c.pop();f.merge(c,b);return c});t("row()",function(a,b){return fb(this.rows(a,b))});t("row().data()",function(a){var b=this.context;if(a===n)return b.length&&this.length?b[0].aoData[this[0]]._aData:n;var c=b[0].aoData[this[0]];c._aData=a;f.isArray(a)&&c.nTr&&c.nTr.id&&Q(b[0].rowId)(a,c.nTr.id);
+da(b[0],this[0],"data");return this});t("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});t("row.add()",function(a){a instanceof f&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?oa(b,a)[0]:R(b,a)});return this.row(b[0])});var gc=function(a,b,c,d){var e=[],h=function(b,c){if(f.isArray(b)||b instanceof f)for(var d=0,g=b.length;d<g;d++)h(b[d],c);else b.nodeName&&"tr"===b.nodeName.toLowerCase()?
+e.push(b):(d=f("<tr><td/></tr>").addClass(c),f("td",d).addClass(c).html(b)[0].colSpan=V(a),e.push(d[0]))};h(c,d);b._details&&b._details.detach();b._details=f(e);b._detailsShow&&b._details.insertAfter(b.nTr)},gb=function(a,b){var c=a.context;c.length&&(a=c[0].aoData[b!==n?b:a[0]])&&a._details&&(a._details.remove(),a._detailsShow=n,a._details=n)},Yb=function(a,b){var c=a.context;c.length&&a.length&&(a=c[0].aoData[a[0]],a._details&&((a._detailsShow=b)?a._details.insertAfter(a.nTr):a._details.detach(),
+hc(c[0])))},hc=function(a){var b=new x(a),c=a.aoData;b.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<K(c,"_details").length&&(b.on("draw.dt.DT_details",function(d,e){a===e&&b.rows({page:"current"}).eq(0).each(function(a){a=c[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),b.on("column-visibility.dt.DT_details",function(b,e,f,g){if(a===e)for(e=V(e),f=0,g=c.length;f<g;f++)b=c[f],b._details&&b._details.children("td[colspan]").attr("colspan",e)}),b.on("destroy.dt.DT_details",
+function(d,e){if(a===e)for(d=0,e=c.length;d<e;d++)c[d]._details&&gb(b,d)}))};t("row().child()",function(a,b){var c=this.context;if(a===n)return c.length&&this.length?c[0].aoData[this[0]]._details:n;!0===a?this.child.show():!1===a?gb(this):c.length&&this.length&&gc(c[0],c[0].aoData[this[0]],a,b);return this});t(["row().child.show()","row().child().show()"],function(a){Yb(this,!0);return this});t(["row().child.hide()","row().child().hide()"],function(){Yb(this,!1);return this});t(["row().child.remove()",
+"row().child().remove()"],function(){gb(this);return this});t("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var ic=/^([^:]+):(name|visIdx|visible)$/,Zb=function(a,b,c,d,e){c=[];d=0;for(var f=e.length;d<f;d++)c.push(F(a,e[d],b));return c},jc=function(a,b,c){var d=a.aoColumns,e=K(d,"sName"),h=K(d,"nTh");return db("column",b,function(b){var g=Rb(b);if(""===b)return Y(d.length);if(null!==g)return[0<=g?g:d.length+g];if("function"===
+typeof b){var l=Ea(a,c);return f.map(d,function(c,d){return b(d,Zb(a,d,0,0,l),h[d])?d:null})}var m="string"===typeof b?b.match(ic):"";if(m)switch(m[2]){case "visIdx":case "visible":g=parseInt(m[1],10);if(0>g){var p=f.map(d,function(a,b){return a.bVisible?b:null});return[p[p.length+g]]}return[aa(a,g)];case "name":return f.map(e,function(a,b){return a===m[1]?b:null});default:return[]}if(b.nodeName&&b._DT_CellIndex)return[b._DT_CellIndex.column];g=f(h).filter(b).map(function(){return f.inArray(this,
+h)}).toArray();if(g.length||!b.nodeName)return g;g=f(b).closest("*[data-dt-column]");return g.length?[g.data("dt-column")]:[]},a,c)};t("columns()",function(a,b){a===n?a="":f.isPlainObject(a)&&(b=a,a="");b=eb(b);var c=this.iterator("table",function(c){return jc(c,a,b)},1);c.selector.cols=a;c.selector.opts=b;return c});z("columns().header()","column().header()",function(a,b){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});z("columns().footer()","column().footer()",function(a,
+b){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});z("columns().data()","column().data()",function(){return this.iterator("column-rows",Zb,1)});z("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});z("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ka(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});z("columns().nodes()",
+"column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ka(a.aoData,e,"anCells",b)},1)});z("columns().visible()","column().visible()",function(a,b){var c=this,d=this.iterator("column",function(b,c){if(a===n)return b.aoColumns[c].bVisible;var d=b.aoColumns,e=d[c],h=b.aoData,m;if(a!==n&&e.bVisible!==a){if(a){var p=f.inArray(!0,K(d,"bVisible"),c+1);d=0;for(m=h.length;d<m;d++){var q=h[d].nTr;b=h[d].anCells;q&&q.insertBefore(b[c],b[p]||null)}}else f(K(b.aoData,"anCells",
+c)).detach();e.bVisible=a}});a!==n&&this.iterator("table",function(d){fa(d,d.aoHeader);fa(d,d.aoFooter);d.aiDisplay.length||f(d.nTBody).find("td[colspan]").attr("colspan",V(d));Aa(d);c.iterator("column",function(c,d){A(c,null,"column-visibility",[c,d,a,b])});(b===n||b)&&c.columns.adjust()});return d});z("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?ba(b,c):c},1)});t("columns.adjust()",function(){return this.iterator("table",function(a){Z(a)},
+1)});t("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return aa(c,b);if("fromData"===a||"toVisible"===a)return ba(c,b)}});t("column()",function(a,b){return fb(this.columns(a,b))});var kc=function(a,b,c){var d=a.aoData,e=Ea(a,c),h=Ub(ka(d,e,"anCells")),g=f([].concat.apply([],h)),k,l=a.aoColumns.length,m,p,q,u,t,w;return db("cell",b,function(b){var c="function"===typeof b;if(null===b||b===n||c){m=[];p=0;for(q=e.length;p<q;p++)for(k=
+e[p],u=0;u<l;u++)t={row:k,column:u},c?(w=d[k],b(t,F(a,k,u),w.anCells?w.anCells[u]:null)&&m.push(t)):m.push(t);return m}if(f.isPlainObject(b))return b.column!==n&&b.row!==n&&-1!==f.inArray(b.row,e)?[b]:[];c=g.filter(b).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray();if(c.length||!b.nodeName)return c;w=f(b).closest("*[data-dt-row]");return w.length?[{row:w.data("dt-row"),column:w.data("dt-column")}]:[]},a,c)};t("cells()",function(a,b,c){f.isPlainObject(a)&&
+(a.row===n?(c=a,a=null):(c=b,b=null));f.isPlainObject(b)&&(c=b,b=null);if(null===b||b===n)return this.iterator("table",function(b){return kc(b,a,eb(c))});var d=c?{page:c.page,order:c.order,search:c.search}:{},e=this.columns(b,d),h=this.rows(a,d),g,k,l,m;d=this.iterator("table",function(a,b){a=[];g=0;for(k=h[b].length;g<k;g++)for(l=0,m=e[b].length;l<m;l++)a.push({row:h[b][g],column:e[b][l]});return a},1);d=c&&c.selected?this.cells(d,c):d;f.extend(d.selector,{cols:b,rows:a,opts:c});return d});z("cells().nodes()",
+"cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b])&&a.anCells?a.anCells[c]:n},1)});t("cells().data()",function(){return this.iterator("cell",function(a,b,c){return F(a,b,c)},1)});z("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});z("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return F(b,c,d,a)},
+1)});z("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:ba(a,c)}},1)});z("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){da(b,c,a,d)})});t("cell()",function(a,b,c){return fb(this.cells(a,b,c))});t("cell().data()",function(a){var b=this.context,c=this[0];if(a===n)return b.length&&c.length?F(b[0],c[0].row,c[0].column):n;nb(b[0],c[0].row,c[0].column,a);da(b[0],c[0].row,
+"data",c[0].column);return this});t("order()",function(a,b){var c=this.context;if(a===n)return 0!==c.length?c[0].aaSorting:n;"number"===typeof a?a=[[a,b]]:a.length&&!f.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});t("order.listener()",function(a,b,c){return this.iterator("table",function(d){Pa(d,a,b,c)})});t("order.fixed()",function(a){if(!a){var b=this.context;b=b.length?b[0].aaSortingFixed:n;return f.isArray(b)?{pre:b}:
+b}return this.iterator("table",function(b){b.aaSortingFixed=f.extend(!0,{},a)})});t(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];f.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});t("search()",function(a,b,c,d){var e=this.context;return a===n?0!==e.length?e[0].oPreviousSearch.sSearch:n:this.iterator("table",function(e){e.oFeatures.bFilter&&ha(e,f.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===
+c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});z("columns().search()","column().search()",function(a,b,c,d){return this.iterator("column",function(e,h){var g=e.aoPreSearchCols;if(a===n)return g[h].sSearch;e.oFeatures.bFilter&&(f.extend(g[h],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),ha(e,e.oPreviousSearch,1))})});t("state()",function(){return this.context.length?this.context[0].oSavedState:null});t("state.clear()",function(){return this.iterator("table",
+function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});t("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});t("state.save()",function(){return this.iterator("table",function(a){Aa(a)})});q.versionCheck=q.fnVersionCheck=function(a){var b=q.version.split(".");a=a.split(".");for(var c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};q.isDataTable=q.fnIsDataTable=function(a){var b=f(a).get(0),c=!1;if(a instanceof
+q.Api)return!0;f.each(q.settings,function(a,e){a=e.nScrollHead?f("table",e.nScrollHead)[0]:null;var d=e.nScrollFoot?f("table",e.nScrollFoot)[0]:null;if(e.nTable===b||a===b||d===b)c=!0});return c};q.tables=q.fnTables=function(a){var b=!1;f.isPlainObject(a)&&(b=a.api,a=a.visible);var c=f.map(q.settings,function(b){if(!a||a&&f(b.nTable).is(":visible"))return b.nTable});return b?new x(c):c};q.camelToHungarian=L;t("$()",function(a,b){b=this.rows(b).nodes();b=f(b);return f([].concat(b.filter(a).toArray(),
+b.find(a).toArray()))});f.each(["on","one","off"],function(a,b){t(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0]=f.map(a[0].split(/\s/),function(a){return a.match(/\.dt\b/)?a:a+".dt"}).join(" ");var d=f(this.tables().nodes());d[b].apply(d,a);return this})});t("clear()",function(){return this.iterator("table",function(a){pa(a)})});t("settings()",function(){return new x(this.context,this.context)});t("init()",function(){var a=this.context;return a.length?a[0].oInit:null});t("data()",
+function(){return this.iterator("table",function(a){return K(a.aoData,"_aData")}).flatten()});t("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,h=b.nTBody,g=b.nTHead,k=b.nTFoot,l=f(e);h=f(h);var m=f(b.nTableWrapper),p=f.map(b.aoData,function(a){return a.nTr}),n;b.bDestroying=!0;A(b,"aoDestroyCallback","destroy",[b]);a||(new x(b)).columns().visible(!0);m.off(".DT").find(":not(tbody *)").off(".DT");f(y).off(".DT-"+b.sInstance);
+e!=g.parentNode&&(l.children("thead").detach(),l.append(g));k&&e!=k.parentNode&&(l.children("tfoot").detach(),l.append(k));b.aaSorting=[];b.aaSortingFixed=[];za(b);f(p).removeClass(b.asStripeClasses.join(" "));f("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);h.children().detach();h.append(p);g=a?"remove":"detach";l[g]();m[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),l.css("width",b.sDestroyWidth).removeClass(d.sTable),(n=b.asDestroyStripes.length)&&
+h.children().each(function(a){f(this).addClass(b.asDestroyStripes[a%n])}));c=f.inArray(b,q.settings);-1!==c&&q.settings.splice(c,1)})});f.each(["column","row","cell"],function(a,b){t(b+"s().every()",function(a){var c=this.selector.opts,e=this;return this.iterator(b,function(d,f,k,l,m){a.call(e[b](f,"cell"===b?k:c,"cell"===b?c:n),f,k,l,m)})})});t("i18n()",function(a,b,c){var d=this.context[0];a=T(a)(d.oLanguage);a===n&&(a=b);c!==n&&f.isPlainObject(a)&&(a=a[c]!==n?a[c]:a._);return a.replace("%d",c)});
+q.version="1.10.21";q.settings=[];q.models={};q.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};q.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};q.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,
+sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};q.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,
+bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){return{}}},
+fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",
+sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:f.extend({},q.models.oSearch),sAjaxDataProp:"data",
+sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};H(q.defaults);q.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};H(q.defaults.column);q.models.oSettings=
+{oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},
+aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,
+aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:n,oAjaxData:n,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==I(this)?1*this._iRecordsTotal:
+this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==I(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};q.ext=C={buttons:{},
+classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:q.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:q.version};f.extend(C,{afnFiltering:C.search,aTypes:C.type.detect,ofnSearch:C.type.search,oSort:C.type.order,afnSortData:C.order,aoFeatures:C.feature,oApi:C.internal,oStdClasses:C.classes,oPagination:C.pager});
+f.extend(q.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",
+sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",
+sJUIHeader:"",sJUIFooter:""});var Ob=q.ext.pager;f.extend(Ob,{simple:function(a,b){return["previous","next"]},full:function(a,b){return["first","previous","next","last"]},numbers:function(a,b){return[ja(a,b)]},simple_numbers:function(a,b){return["previous",ja(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ja(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ja(a,b),"last"]},_numbers:ja,numbers_length:7});f.extend(!0,q.ext.renderer,{pageButton:{_:function(a,b,
+c,d,e,h){var g=a.oClasses,k=a.oLanguage.oPaginate,l=a.oLanguage.oAria.paginate||{},m,p,q=0,t=function(b,d){var n,r=g.sPageButtonDisabled,u=function(b){Wa(a,b.data.action,!0)};var w=0;for(n=d.length;w<n;w++){var v=d[w];if(f.isArray(v)){var x=f("<"+(v.DT_el||"div")+"/>").appendTo(b);t(x,v)}else{m=null;p=v;x=a.iTabIndex;switch(v){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break;case "first":m=k.sFirst;0===e&&(x=-1,p+=" "+r);break;case "previous":m=k.sPrevious;0===e&&(x=-1,p+=
+" "+r);break;case "next":m=k.sNext;if(0===h||e===h-1)x=-1,p+=" "+r;break;case "last":m=k.sLast;e===h-1&&(x=-1,p+=" "+r);break;default:m=v+1,p=e===v?g.sPageButtonActive:""}null!==m&&(x=f("<a>",{"class":g.sPageButton+" "+p,"aria-controls":a.sTableId,"aria-label":l[v],"data-dt-idx":q,tabindex:x,id:0===c&&"string"===typeof v?a.sTableId+"_"+v:null}).html(m).appendTo(b),Za(x,{action:v},u),q++)}}};try{var x=f(b).find(w.activeElement).data("dt-idx")}catch(lc){}t(f(b).empty(),d);x!==n&&f(b).find("[data-dt-idx="+
+x+"]").trigger("focus")}}});f.extend(q.ext.type.detect,[function(a,b){b=b.oLanguage.sDecimal;return cb(a,b)?"num"+b:null},function(a,b){if(a&&!(a instanceof Date)&&!cc.test(a))return null;b=Date.parse(a);return null!==b&&!isNaN(b)||P(a)?"date":null},function(a,b){b=b.oLanguage.sDecimal;return cb(a,b,!0)?"num-fmt"+b:null},function(a,b){b=b.oLanguage.sDecimal;return Tb(a,b)?"html-num"+b:null},function(a,b){b=b.oLanguage.sDecimal;return Tb(a,b,!0)?"html-num-fmt"+b:null},function(a,b){return P(a)||"string"===
+typeof a&&-1!==a.indexOf("<")?"html":null}]);f.extend(q.ext.type.search,{html:function(a){return P(a)?a:"string"===typeof a?a.replace(Qb," ").replace(Da,""):""},string:function(a){return P(a)?a:"string"===typeof a?a.replace(Qb," "):a}});var Ca=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Sb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};f.extend(C.type.order,{"date-pre":function(a){a=Date.parse(a);return isNaN(a)?-Infinity:a},"html-pre":function(a){return P(a)?
+"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return P(a)?"":"string"===typeof a?a.toLowerCase():a.toString?a.toString():""},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});Ga("");f.extend(!0,q.ext.renderer,{header:{_:function(a,b,c,d){f(a.nTable).on("order.dt.DT",function(e,f,g,k){a===f&&(e=c.idx,b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass("asc"==k[e]?d.sSortAsc:"desc"==k[e]?d.sSortDesc:
+c.sSortingClass))})},jqueryui:function(a,b,c,d){f("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(f("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);f(a.nTable).on("order.dt.DT",function(e,f,g,k){a===f&&(e=c.idx,b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==k[e]?d.sSortAsc:"desc"==k[e]?d.sSortDesc:c.sSortingClass),b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass("asc"==
+k[e]?d.sSortJUIAsc:"desc"==k[e]?d.sSortJUIDesc:c.sSortingClassJUI))})}}});var hb=function(a){return"string"===typeof a?a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):a};q.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return hb(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
+a)+f+(e||"")}}},text:function(){return{display:hb,filter:hb}}};f.extend(q.ext.internal,{_fnExternApiFunc:Pb,_fnBuildAjax:ua,_fnAjaxUpdate:pb,_fnAjaxParameters:yb,_fnAjaxUpdateDraw:zb,_fnAjaxDataSrc:va,_fnAddColumn:Ha,_fnColumnOptions:la,_fnAdjustColumnSizing:Z,_fnVisibleToColumnIndex:aa,_fnColumnIndexToVisible:ba,_fnVisbleColumns:V,_fnGetColumns:na,_fnColumnTypes:Ja,_fnApplyColumnDefs:mb,_fnHungarianMap:H,_fnCamelToHungarian:L,_fnLanguageCompat:Fa,_fnBrowserDetect:kb,_fnAddData:R,_fnAddTr:oa,_fnNodeToDataIndex:function(a,
+b){return b._DT_RowIndex!==n?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return f.inArray(c,a.aoData[b].anCells)},_fnGetCellData:F,_fnSetCellData:nb,_fnSplitObjNotation:Ma,_fnGetObjectDataFn:T,_fnSetObjectDataFn:Q,_fnGetDataMaster:Na,_fnClearTable:pa,_fnDeleteIndex:qa,_fnInvalidate:da,_fnGetRowElements:La,_fnCreateTr:Ka,_fnBuildHead:ob,_fnDrawHead:fa,_fnDraw:S,_fnReDraw:U,_fnAddOptionsHtml:rb,_fnDetectHeader:ea,_fnGetUniqueThs:ta,_fnFeatureHtmlFilter:tb,_fnFilterComplete:ha,_fnFilterCustom:Cb,
+_fnFilterColumn:Bb,_fnFilter:Ab,_fnFilterCreateSearch:Sa,_fnEscapeRegex:Ta,_fnFilterData:Db,_fnFeatureHtmlInfo:wb,_fnUpdateInfo:Gb,_fnInfoMacros:Hb,_fnInitialise:ia,_fnInitComplete:wa,_fnLengthChange:Ua,_fnFeatureHtmlLength:sb,_fnFeatureHtmlPaginate:xb,_fnPageChange:Wa,_fnFeatureHtmlProcessing:ub,_fnProcessingDisplay:J,_fnFeatureHtmlTable:vb,_fnScrollDraw:ma,_fnApplyToChildren:N,_fnCalculateColumnWidths:Ia,_fnThrottle:Ra,_fnConvertToWidth:Ib,_fnGetWidestNode:Jb,_fnGetMaxLenString:Kb,_fnStringToCss:B,
+_fnSortFlatten:X,_fnSort:qb,_fnSortAria:Mb,_fnSortListener:Ya,_fnSortAttachListener:Pa,_fnSortingClasses:za,_fnSortData:Lb,_fnSaveState:Aa,_fnLoadState:Nb,_fnSettingsFromNode:Ba,_fnLog:O,_fnMap:M,_fnBindAction:Za,_fnCallbackReg:D,_fnCallbackFire:A,_fnLengthOverflow:Va,_fnRenderer:Qa,_fnDataSource:I,_fnRowAttributes:Oa,_fnExtend:$a,_fnCalculateEnd:function(){}});f.fn.dataTable=q;q.$=f;f.fn.dataTableSettings=q.settings;f.fn.dataTableExt=q.ext;f.fn.DataTable=function(a){return f(this).dataTable(a).api()};
+f.each(q,function(a,b){f.fn.DataTable[a]=b});return f.fn.dataTable});

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 0
public/js/jquery.min.js


+ 341 - 0
src/App.vue

@@ -0,0 +1,341 @@
+<template>
+  <div id="app">
+    <router-view v-if="isRouterAlive"></router-view>
+  </div>
+</template>
+
+<script>
+// import { loginconf } from "api/api.js";
+export default {
+  name: "app",
+  provide() {
+    //父组件中通过provide来提供变量,在子组件中通过inject来注入变量。
+    return {
+      reload: this.reload,
+    };
+  },
+  data() {
+    return {
+		isRouterAlive: true, //控制视图是否显示的变量
+    };
+  },
+  methods: {
+    reload() {
+      this.isRouterAlive = false; //先关闭,
+      this.$nextTick(function () {
+        this.isRouterAlive = true; //再打开
+      });
+    },
+  },
+  created() {
+    sessionStorage.removeItem('customSearchBack')
+    sessionStorage.removeItem('customListBack')
+  },
+};
+if (process.env.NODE_ENV === "production" || process.env.NODE_ENV === "test") {
+  window.document.domain = "hzinsights.com";
+}
+</script>
+
+<style lang="scss">
+@import "~scss_vars";
+body {
+  margin: 0px !important;
+  padding: 0px;
+  font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
+    Microsoft YaHei, SimSun, sans-serif;
+  font-size: 14px;
+  -webkit-font-smoothing: antialiased;
+}
+   .fr-second-toolbar {
+    display: none !important;
+  }
+img {
+  object-fit: contain !important;
+  image-rendering: -moz-crisp-edges; 
+  image-rendering: -o-crisp-edges; 
+  image-rendering: -webkit-optimize-contrast; 
+  image-rendering: crisp-edges; 
+  -ms-interpolation-mode: nearest-neighbor;
+}
+#app {
+  width: 100%;
+  position: absolute;
+  top: 0px;
+  bottom: 0px;
+/*   left:0; */
+}
+.el-submenu [class^="fa"] {
+  vertical-align: baseline;
+  margin-right: 10px;
+}
+.el-menu-item [class^="fa"] {
+  vertical-align: baseline;
+  margin-right: 10px;
+}
+.toolbar {
+  font: 14px "微软雅黑";
+  color: $color-primary;
+  background: #fff;
+  padding: 10px 15px;
+  margin: 10px 0px;
+  .el-form-item {
+    margin-bottom: 10px;
+  }
+}
+.headTip {
+  padding: 10px 15px;
+  margin: 10px auto;
+  font: 14px "微软雅黑";
+  color: #fff;
+  background: $color-primary;
+}
+.fade-enter-active,
+.fade-leave-active {
+  transition: all 0.2s ease;
+}
+.fade-enter,
+.fade-leave-active {
+  opacity: 0;
+}
+p[data-f-id="pbf"] {
+  display: none;
+}
+iframe {
+  border: none;
+}
+.el-table .success-row {
+  background: #eaeaea;
+}
+.editsty {
+  font-size: 14px;
+  color: #409eff;
+  cursor: pointer;
+}
+.deletesty {
+  font-size: 14px;
+  color: red;
+  cursor: pointer;
+}
+.disty {
+  font-size: 14px;
+  color: #999;
+  cursor: not-allowed;
+}
+.warnsty {
+  font-size: 14px;
+  color: #FF9900;
+}
+.successty {
+  font-size: 14px;
+  color: #1BB940;
+}
+
+.el-card__header {
+  border: none !important;
+  box-shadow: 0 3px 6px rgba(37, 37, 239, 0.1) !important;
+}
+.el-pagination.is-background .el-pager li {
+  background: #fff;
+  // border: 1px solid #8F9BB3;
+}
+.el-pagination.is-background .el-pager li:not(.disabled).active {
+  border-color: #409eff;
+}
+.el-pagination.is-background .btn-next,
+.el-pagination.is-background .btn-prev {
+  // border: 1px solid #8F9BB3;
+  background: #fff;
+}
+.clearfix:after {
+  content: "";
+  height: 0;
+  clear: both;
+  visibility: hidden;
+  display: block;
+  zoom: 1;
+}
+.text_oneLine {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+/* 控制文字显示两行 */
+.text_twoLine {
+  overflow:hidden;
+  text-overflow:ellipsis;
+  display:-webkit-box;
+  -webkit-box-orient:vertical;
+  -webkit-line-clamp:2;
+}
+/* .el-popover  */
+.el-checkbox__input.is-disabled + span.el-checkbox__label {
+  color: #666 !important;
+}
+.el-form-item__label {
+  font-size: 16px;
+}
+.el-collapse-item__header {
+  border: none;
+  font-size: 16px;
+  color: #333;
+  font-weight: bold;
+  position: relative;
+  margin-bottom: 20px;
+}
+/* 省市选择禁用统一element样式 */
+.distpicker-address-wrapper select:disabled {
+  cursor: not-allowed;
+  background: #f5f7fa;
+  border-color: #e4e7ed;
+  color: #c0c4cc;
+  opacity: 1;
+}
+.distpicker-address-wrapper select {
+  font-size: 14px !important;
+}
+/* img preview */
+.el-image-viewer__mask {
+  opacity: 0.8;
+}
+.el-image-viewer__canvas .el-image-viewer__img {
+  position: absolute;
+  // left: 40%;
+  // top: 40%;
+  // transform: translate(-50%,-50%);
+  width: 1200px;
+  max-height: 100vh;
+  overflow-y: scroll;
+}
+.el-image-viewer__next,
+.el-image-viewer__prev {
+  width: 62px;
+  height: 110px;
+  border: none;
+  font-size: 80px;
+  background: transparent;
+  color: #858585;
+}
+.el-image-viewer__close {
+  width: 66px;
+  height: 66px;
+  color: #fff;
+  font-size: 48px;
+}
+
+.el-popconfirm .el-popconfirm__action {
+  margin-top: 10px; 
+}
+
+/*修改滚动条样式*/
+div::-webkit-scrollbar {
+  width: 6px;
+  height: 6px;
+}
+div::-webkit-scrollbar-track {
+  background: rgb(239, 239, 239);
+  border-radius: 2px;
+}
+div::-webkit-scrollbar-thumb {
+  background: #ccc;
+  border-radius: 10px;
+}
+div::-webkit-scrollbar-thumb:hover {
+  background: #888;
+}
+div::-webkit-scrollbar-corner {
+  background: #666;
+}
+.customName:hover {
+  text-decoration: underline;
+}
+/**/
+.el-select-dropdown__wrap {
+  max-height: 358px !important;
+}
+ 
+/* 日期选择 */
+.mx-datepicker {
+  width: 280px !important;
+}
+.mx-calendar-content .cell.active {
+  background-color: #409EFF !important;
+}
+.mx-datepicker .mx-input {
+  height: 40px;
+  border-color: #DCDFE6;
+  box-shadow: none;
+}
+.mx-input {
+    &::placeholder {
+      color: #bbb;
+    }
+    &:hover {
+      border-color: #C0C4CC !important;
+    }
+  }
+
+  /*修改滚动条样式*/
+ul::-webkit-scrollbar {
+  width: 6px;
+  height: 6px;
+}
+ul::-webkit-scrollbar-track {
+  background: rgb(239, 239, 239);
+  border-radius: 2px;
+}
+ul::-webkit-scrollbar-thumb {
+  background: #ccc;
+  border-radius: 10px;
+}
+ul::-webkit-scrollbar-thumb:hover {
+  background: #888;
+}
+ul::-webkit-scrollbar-corner {
+  background: #666;
+}
+
+/* reset 表格头 */
+.el-table th.is-leaf {
+  background:#F0F2F5 !important;
+}
+.el-table td, .el-table th.is-leaf {
+  border-color: #DCDFE6 !important;
+}
+
+textarea {
+	font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
+}
+// .el-dialog {
+//     display: flex;
+//     flex-direction: column;
+//     margin: 0 !important;
+//     position: absolute;
+//     top: 50%;
+//     left: 50%;
+//     transform: translate(-50%, -50%);
+//     max-height: calc(100% - 30px);
+//     max-width: calc(100% - 30px);
+//   }
+//   .el-dialog .el-dialog__body {
+//     flex: 1;
+//     overflow: auto;
+// }
+
+.el-color-predefine {
+  .el-color-predefine__color-selector {
+    box-shadow: 0 0 1px 1px #999;
+  }
+}
+
+//图表搜索select
+.chart-search-popper {
+  min-width: 300px !important;
+  width: auto !important;
+}
+
+//数据管理下的输入框
+.el-autocomplete-suggestion-data-entry {
+    width: auto !important;
+}
+</style>

+ 258 - 0
src/api/api.js

@@ -0,0 +1,258 @@
+// eta图表 我的图库 数据指标库
+import { dataBaseInterface, mychartInterface } from './modules/chartApi';
+
+//接入的第三方的数据库
+import {
+  lzDataInterface,
+  glDataInterface,
+  smmDataInterface,
+  coalDataInterface,
+  sciDataInterface,
+  baiinfoInterface,
+  nationalInterface
+} from './modules/thirdBaseApi';
+
+//手工指标 手工数据 手工数据权限
+import { dataInterence, dataAuthInterface } from './modules/dataApi';
+
+//部门管理 视频管理 互动管理(问答社区) 英文权限管理
+import { departInterence, videoInterence ,InteractionInterence,enAuthInterence} from './modules/setApi';
+
+//工作台 数据报表
+import { dataMainInterface } from './modules/statisticApi';
+
+//crm
+import { customInterence ,equityContacts} from './modules/crmApi';
+
+//合同
+import { contractInterface } from './modules/contractApi';
+
+//群发设置
+import { groupSendInterface } from './modules/groupSendApi';
+
+//权益相关 小程序 商品晨报
+import { raiInterface, morningPaper,raiSpecial } from './modules/rai/raiApi';
+
+// ficc商品小程序
+import { ficcManageInterface } from './modules/ficcApi'
+
+// 用印模块
+import { sealInterence } from './modules/sealApi'
+
+// 分类权限
+import { classifyPermissionInterface } from './modules/classifyApi'
+
+// 路演权限
+import { roadshowInterence } from './modules/roadshowApi'
+
+//沙盘接口
+import sandInterface from './modules/sandApi';
+//图库9.0(智能PPT版式) 接口
+import pptInterface from './modules/pptApi';
+
+//互动管理
+import interactiveInterface from './modules/interactive';
+
+// 共享网盘
+import cloudDiskInterface from './modules/cloudDisk';
+
+//视频管理模块
+import videoInterface from './modules/videoApi'
+
+//权益视频管理模块
+import raiVideoApi from './modules/rai/videoListApi'
+
+//策略报告模块
+import {strategyReportInterence} from './modules/strategyReport'
+
+// 出差管理
+import {businessTripInterence} from './modules/businessTrip'
+
+import {reportVarietyENInterence} from './modules/reportVariety'
+
+export {
+  dataBaseInterface,
+  mychartInterface,
+  lzDataInterface,
+  glDataInterface,
+  smmDataInterface,
+  dataInterence,
+  dataAuthInterface,
+  departInterence,
+  videoInterence,
+  InteractionInterence,
+  enAuthInterence,
+  dataMainInterface,
+  customInterence,
+  equityContacts,
+  contractInterface,
+  groupSendInterface,
+  raiInterface,
+  morningPaper,
+  ficcManageInterface,
+  classifyPermissionInterface,
+  sealInterence,
+  roadshowInterence,
+  sandInterface,
+  coalDataInterface,
+  raiSpecial,
+  pptInterface,
+  interactiveInterface,
+  videoInterface,
+  raiVideoApi,
+  strategyReportInterence,
+  sciDataInterface,
+  baiinfoInterface,
+  nationalInterface,
+  cloudDiskInterface,
+  businessTripInterence,
+  reportVarietyENInterence
+};
+
+//老接口 研报 ppt等
+import * as oldApis from './modules/oldApi';
+
+const {
+  userLogin,
+  modifyPwd,
+  checkPwd,
+  reportlist,
+  reportpublish,
+  reportpublishcancle,
+  voiceupload,
+  resourceVoiceupload,
+  reportadd,
+  reportedit,
+  reportdelete,
+  reportdetail,
+  classifyIdDetail,
+  sendTemplateMsg,
+  reportauthor,
+  getDraft,
+  autosave,
+  classifylist,
+  classifyparent,
+  classifyadd,
+  classifydelete,
+  classifyedit,
+  checkDeleteClassify,
+  bannerlist,
+  bannerupload,
+  banneradd,
+  banneredit,
+  bannerdelete,
+  pptlist,
+  pptadd,
+  pptdetail,
+  pptedit,
+  pptdelete,
+  base64Upload,
+  pptUpload,
+  firstBg,
+  pptPublish,
+  messagePushPost,
+  dayWeekReportChapterList,
+  addDayWeekReport,
+  editDayWeekReport,
+  dayWeekChapterList,
+  chapterTrendTagList,
+  editChapterTrendTag,
+  chapterDetail,
+  dayTicketList,
+  saveChapterReport,
+  getChapterReportBefore,
+  getChapterReportIsLast,
+	publishChapterReport,
+	publishDayOrWeekReport,
+  dayWeekPauseTime,
+  dayWeekUpdateRule,
+  chapterQRCodeImg,
+  getOSSSign,
+  classifyTelList,
+  getBeingPushedReportType,
+  getBeingPushedReportList,
+  setPushingTime,
+  markReport,
+  getchapterTypeList,
+  addChapterType,
+  editChapterType,
+  deleteChapterType,
+  getchapterTPermissionList,
+  setchapterTPermission,
+  reportMessageSend,
+  weekReportValidAudio,
+  getUserUuid
+} = oldApis;
+
+export {
+  userLogin,
+  modifyPwd,
+  checkPwd,
+  reportlist,
+  reportpublish,
+  reportpublishcancle,
+  voiceupload,
+  resourceVoiceupload,
+  reportadd,
+  reportedit,
+  reportdelete,
+  reportdetail,
+  classifyIdDetail,
+  sendTemplateMsg,
+  reportauthor,
+  getDraft,
+  autosave,
+  classifylist,
+  classifyparent,
+  classifyadd,
+  classifydelete,
+  classifyedit,
+  checkDeleteClassify,
+  bannerlist,
+  bannerupload,
+  banneradd,
+  banneredit,
+  bannerdelete,
+  pptlist,
+  pptadd,
+  pptdetail,
+  pptedit,
+  pptdelete,
+  base64Upload,
+  pptUpload,
+  firstBg,
+  pptPublish,
+  messagePushPost,
+  dayWeekReportChapterList,
+  addDayWeekReport,
+  editDayWeekReport,
+  dayWeekChapterList,
+  chapterTrendTagList,
+  editChapterTrendTag,
+  chapterDetail,
+  dayTicketList,
+  saveChapterReport,
+  getChapterReportBefore,
+  getChapterReportIsLast,
+	publishChapterReport,
+	publishDayOrWeekReport,
+  dayWeekPauseTime,
+  dayWeekUpdateRule,
+  chapterQRCodeImg,
+  getOSSSign,
+  classifyTelList,
+  getBeingPushedReportType,
+  getBeingPushedReportList,
+  setPushingTime,
+  markReport,
+  getchapterTypeList,
+  addChapterType,
+  editChapterType,
+  deleteChapterType,
+  getchapterTPermissionList,
+  setchapterTPermission,
+  reportMessageSend,
+  weekReportValidAudio,
+  getUserUuid
+};
+

+ 2 - 0
src/api/bus.js

@@ -0,0 +1,2 @@
+import Vue from 'vue';  
+export default new Vue();  

+ 787 - 0
src/api/crypto.js

@@ -0,0 +1,787 @@
+const key = '6WpHp4vSvLVQK8SLioNZ7WMq';
+
+class CryptoJS {
+	// 3DES加密,CBC/PKCS5Padding
+	static Des3Encrypt (input) {
+		let genKey = genkey(key, 0, 24);
+		return base64encode(des(genKey.key, input, 1, 1, key.substr(0, 8), 1));
+	}
+
+	// 3DES解密,CBC/PKCS5Padding
+	static Des3Decrypt (input) {
+		let genKey = genkey(key, 0, 24);
+		return des(genKey.key, base64decode(input), 0, 1, key.substr(0, 8), 1);
+	}
+
+	// md5
+	static Md5Encrypt (input) {
+		return md5(String(input));
+	}
+}
+
+function des (key, message, encrypt, mode, iv, padding) {
+	if (encrypt) // 如果是加密的话,首先转换编码
+	{ message = unescape(encodeURIComponent(message)); }
+	// declaring this locally speeds things up a bit
+	let spfunction1 = new Array(0x1010400, 0, 0x10000, 0x1010404, 0x1010004, 0x10404, 0x4, 0x10000, 0x400, 0x1010400, 0x1010404, 0x400, 0x1000404, 0x1010004, 0x1000000, 0x4, 0x404, 0x1000400, 0x1000400, 0x10400, 0x10400, 0x1010000, 0x1010000, 0x1000404, 0x10004, 0x1000004, 0x1000004, 0x10004, 0, 0x404, 0x10404, 0x1000000, 0x10000, 0x1010404, 0x4, 0x1010000, 0x1010400, 0x1000000, 0x1000000, 0x400, 0x1010004, 0x10000, 0x10400, 0x1000004, 0x400, 0x4, 0x1000404, 0x10404, 0x1010404, 0x10004, 0x1010000, 0x1000404, 0x1000004, 0x404, 0x10404, 0x1010400, 0x404, 0x1000400, 0x1000400, 0, 0x10004, 0x10400, 0, 0x1010004);
+	let spfunction2 = new Array(-0x7fef7fe0, -0x7fff8000, 0x8000, 0x108020, 0x100000, 0x20, -0x7fefffe0, -0x7fff7fe0, -0x7fffffe0, -0x7fef7fe0, -0x7fef8000, -0x80000000, -0x7fff8000, 0x100000, 0x20, -0x7fefffe0, 0x108000, 0x100020, -0x7fff7fe0, 0, -0x80000000, 0x8000, 0x108020, -0x7ff00000, 0x100020, -0x7fffffe0, 0, 0x108000, 0x8020, -0x7fef8000, -0x7ff00000, 0x8020, 0, 0x108020, -0x7fefffe0, 0x100000, -0x7fff7fe0, -0x7ff00000, -0x7fef8000, 0x8000, -0x7ff00000, -0x7fff8000, 0x20, -0x7fef7fe0, 0x108020, 0x20, 0x8000, -0x80000000, 0x8020, -0x7fef8000, 0x100000, -0x7fffffe0, 0x100020, -0x7fff7fe0, -0x7fffffe0, 0x100020, 0x108000, 0, -0x7fff8000, 0x8020, -0x80000000, -0x7fefffe0, -0x7fef7fe0, 0x108000);
+	let spfunction3 = new Array(0x208, 0x8020200, 0, 0x8020008, 0x8000200, 0, 0x20208, 0x8000200, 0x20008, 0x8000008, 0x8000008, 0x20000, 0x8020208, 0x20008, 0x8020000, 0x208, 0x8000000, 0x8, 0x8020200, 0x200, 0x20200, 0x8020000, 0x8020008, 0x20208, 0x8000208, 0x20200, 0x20000, 0x8000208, 0x8, 0x8020208, 0x200, 0x8000000, 0x8020200, 0x8000000, 0x20008, 0x208, 0x20000, 0x8020200, 0x8000200, 0, 0x200, 0x20008, 0x8020208, 0x8000200, 0x8000008, 0x200, 0, 0x8020008, 0x8000208, 0x20000, 0x8000000, 0x8020208, 0x8, 0x20208, 0x20200, 0x8000008, 0x8020000, 0x8000208, 0x208, 0x8020000, 0x20208, 0x8, 0x8020008, 0x20200);
+	let spfunction4 = new Array(0x802001, 0x2081, 0x2081, 0x80, 0x802080, 0x800081, 0x800001, 0x2001, 0, 0x802000, 0x802000, 0x802081, 0x81, 0, 0x800080, 0x800001, 0x1, 0x2000, 0x800000, 0x802001, 0x80, 0x800000, 0x2001, 0x2080, 0x800081, 0x1, 0x2080, 0x800080, 0x2000, 0x802080, 0x802081, 0x81, 0x800080, 0x800001, 0x802000, 0x802081, 0x81, 0, 0, 0x802000, 0x2080, 0x800080, 0x800081, 0x1, 0x802001, 0x2081, 0x2081, 0x80, 0x802081, 0x81, 0x1, 0x2000, 0x800001, 0x2001, 0x802080, 0x800081, 0x2001, 0x2080, 0x800000, 0x802001, 0x80, 0x800000, 0x2000, 0x802080);
+	let spfunction5 = new Array(0x100, 0x2080100, 0x2080000, 0x42000100, 0x80000, 0x100, 0x40000000, 0x2080000, 0x40080100, 0x80000, 0x2000100, 0x40080100, 0x42000100, 0x42080000, 0x80100, 0x40000000, 0x2000000, 0x40080000, 0x40080000, 0, 0x40000100, 0x42080100, 0x42080100, 0x2000100, 0x42080000, 0x40000100, 0, 0x42000000, 0x2080100, 0x2000000, 0x42000000, 0x80100, 0x80000, 0x42000100, 0x100, 0x2000000, 0x40000000, 0x2080000, 0x42000100, 0x40080100, 0x2000100, 0x40000000, 0x42080000, 0x2080100, 0x40080100, 0x100, 0x2000000, 0x42080000, 0x42080100, 0x80100, 0x42000000, 0x42080100, 0x2080000, 0, 0x40080000, 0x42000000, 0x80100, 0x2000100, 0x40000100, 0x80000, 0, 0x40080000, 0x2080100, 0x40000100);
+	let spfunction6 = new Array(0x20000010, 0x20400000, 0x4000, 0x20404010, 0x20400000, 0x10, 0x20404010, 0x400000, 0x20004000, 0x404010, 0x400000, 0x20000010, 0x400010, 0x20004000, 0x20000000, 0x4010, 0, 0x400010, 0x20004010, 0x4000, 0x404000, 0x20004010, 0x10, 0x20400010, 0x20400010, 0, 0x404010, 0x20404000, 0x4010, 0x404000, 0x20404000, 0x20000000, 0x20004000, 0x10, 0x20400010, 0x404000, 0x20404010, 0x400000, 0x4010, 0x20000010, 0x400000, 0x20004000, 0x20000000, 0x4010, 0x20000010, 0x20404010, 0x404000, 0x20400000, 0x404010, 0x20404000, 0, 0x20400010, 0x10, 0x4000, 0x20400000, 0x404010, 0x4000, 0x400010, 0x20004010, 0, 0x20404000, 0x20000000, 0x400010, 0x20004010);
+	let spfunction7 = new Array(0x200000, 0x4200002, 0x4000802, 0, 0x800, 0x4000802, 0x200802, 0x4200800, 0x4200802, 0x200000, 0, 0x4000002, 0x2, 0x4000000, 0x4200002, 0x802, 0x4000800, 0x200802, 0x200002, 0x4000800, 0x4000002, 0x4200000, 0x4200800, 0x200002, 0x4200000, 0x800, 0x802, 0x4200802, 0x200800, 0x2, 0x4000000, 0x200800, 0x4000000, 0x200800, 0x200000, 0x4000802, 0x4000802, 0x4200002, 0x4200002, 0x2, 0x200002, 0x4000000, 0x4000800, 0x200000, 0x4200800, 0x802, 0x200802, 0x4200800, 0x802, 0x4000002, 0x4200802, 0x4200000, 0x200800, 0, 0x2, 0x4200802, 0, 0x200802, 0x4200000, 0x800, 0x4000002, 0x4000800, 0x800, 0x200002);
+	let spfunction8 = new Array(0x10001040, 0x1000, 0x40000, 0x10041040, 0x10000000, 0x10001040, 0x40, 0x10000000, 0x40040, 0x10040000, 0x10041040, 0x41000, 0x10041000, 0x41040, 0x1000, 0x40, 0x10040000, 0x10000040, 0x10001000, 0x1040, 0x41000, 0x40040, 0x10040040, 0x10041000, 0x1040, 0, 0, 0x10040040, 0x10000040, 0x10001000, 0x41040, 0x40000, 0x41040, 0x40000, 0x10041000, 0x1000, 0x40, 0x10040040, 0x1000, 0x41040, 0x10001000, 0x40, 0x10000040, 0x10040000, 0x10040040, 0x10000000, 0x40000, 0x10001040, 0, 0x10041040, 0x40040, 0x10000040, 0x10040000, 0x10001000, 0x10001040, 0, 0x10041040, 0x41000, 0x41000, 0x1040, 0x1040, 0x40040, 0x10000000, 0x10041000);
+
+	// create the 16 or 48 subkeys we will need
+	let keys = des_createKeys(key);
+
+	let m = 0, i, j, temp, temp2, right1, right2, left, right, looping;
+	let cbcleft, cbcleft2, cbcright, cbcright2;
+	let endloop, loopinc;
+	var len = message.length;
+	let chunk = 0;
+	// set up the loops for single and triple des
+	let iterations = keys.length === 32 ? 3 : 9; // single or triple des
+	if (iterations === 3) { looping = encrypt ? new Array(0, 32, 2) : new Array(30, -2, -2); } else { looping = encrypt ? new Array(0, 32, 2, 62, 30, -2, 64, 96, 2) : new Array(94, 62, -2, 32, 64, 2, 30, -2, -2); }
+
+	// pad the message depending on the padding parameter
+	if (padding === 2) message += '        '; // pad the message with spaces
+	else if (padding === 1) {
+		if (encrypt) {
+			temp = 8 - (len % 8);
+			message += String.fromCharCode(temp, temp, temp, temp, temp, temp, temp, temp);
+			if (temp === 8) len += 8;
+		}
+	} // PKCS7 padding
+	else if (!padding) message += '\0\0\0\0\0\0\0\0'; // pad the message out with null bytes
+
+	// store the result here
+	let result = '';
+	let tempresult = '';
+
+	if (mode === 1) { // CBC mode
+		cbcleft = (iv.charCodeAt(m++) << 24) | (iv.charCodeAt(m++) << 16) | (iv.charCodeAt(m++) << 8) | iv.charCodeAt(m++);
+		cbcright = (iv.charCodeAt(m++) << 24) | (iv.charCodeAt(m++) << 16) | (iv.charCodeAt(m++) << 8) | iv.charCodeAt(m++);
+		m = 0;
+	}
+
+	// loop through each 64 bit chunk of the message
+	while (m < len) {
+		left = (message.charCodeAt(m++) << 24) | (message.charCodeAt(m++) << 16) | (message.charCodeAt(m++) << 8) | message.charCodeAt(m++);
+		right = (message.charCodeAt(m++) << 24) | (message.charCodeAt(m++) << 16) | (message.charCodeAt(m++) << 8) | message.charCodeAt(m++);
+
+		// for Cipher Block Chaining mode, xor the message with the previous result
+		if (mode === 1) {
+			if (encrypt) {
+				left ^= cbcleft;
+				right ^= cbcright;
+			} else {
+				cbcleft2 = cbcleft;
+				cbcright2 = cbcright;
+				cbcleft = left;
+				cbcright = right;
+			}
+		}
+
+		// first each 64 but chunk of the message must be permuted according to IP
+		temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;
+		right ^= temp;
+		left ^= (temp << 4);
+		temp = ((left >>> 16) ^ right) & 0x0000ffff;
+		right ^= temp;
+		left ^= (temp << 16);
+		temp = ((right >>> 2) ^ left) & 0x33333333;
+		left ^= temp;
+		right ^= (temp << 2);
+		temp = ((right >>> 8) ^ left) & 0x00ff00ff;
+		left ^= temp;
+		right ^= (temp << 8);
+		temp = ((left >>> 1) ^ right) & 0x55555555;
+		right ^= temp;
+		left ^= (temp << 1);
+
+		left = ((left << 1) | (left >>> 31));
+		right = ((right << 1) | (right >>> 31));
+
+		// do this either 1 or 3 times for each chunk of the message
+		for (j = 0; j < iterations; j += 3) {
+			endloop = looping[j + 1];
+			loopinc = looping[j + 2];
+			// now go through and perform the encryption or decryption
+			for (i = looping[j]; i !== endloop; i += loopinc) { // for efficiency
+				right1 = right ^ keys[i];
+				right2 = ((right >>> 4) | (right << 28)) ^ keys[i + 1];
+				// the result is attained by passing these bytes through the S selection functions
+				temp = left;
+				left = right;
+				right = temp ^ (spfunction2[(right1 >>> 24) & 0x3f] | spfunction4[(right1 >>> 16) & 0x3f] |
+					spfunction6[(right1 >>> 8) & 0x3f] | spfunction8[right1 & 0x3f] |
+					spfunction1[(right2 >>> 24) & 0x3f] | spfunction3[(right2 >>> 16) & 0x3f] |
+					spfunction5[(right2 >>> 8) & 0x3f] | spfunction7[right2 & 0x3f]);
+			}
+			temp = left;
+			left = right;
+			right = temp; // unreverse left and right
+		} // for either 1 or 3 iterations
+
+		// move then each one bit to the right
+		left = ((left >>> 1) | (left << 31));
+		right = ((right >>> 1) | (right << 31));
+
+		// now perform IP-1, which is IP in the opposite direction
+		temp = ((left >>> 1) ^ right) & 0x55555555;
+		right ^= temp;
+		left ^= (temp << 1);
+		temp = ((right >>> 8) ^ left) & 0x00ff00ff;
+		left ^= temp;
+		right ^= (temp << 8);
+		temp = ((right >>> 2) ^ left) & 0x33333333;
+		left ^= temp;
+		right ^= (temp << 2);
+		temp = ((left >>> 16) ^ right) & 0x0000ffff;
+		right ^= temp;
+		left ^= (temp << 16);
+		temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;
+		right ^= temp;
+		left ^= (temp << 4);
+
+		// for Cipher Block Chaining mode, xor the message with the previous result
+		if (mode === 1) {
+			if (encrypt) {
+				cbcleft = left;
+				cbcright = right;
+			} else {
+				left ^= cbcleft2;
+				right ^= cbcright2;
+			}
+		}
+		tempresult += String.fromCharCode((left >>> 24), ((left >>> 16) & 0xff), ((left >>> 8) & 0xff), (left & 0xff), (right >>> 24), ((right >>> 16) & 0xff), ((right >>> 8) & 0xff), (right & 0xff));
+
+		chunk += 8;
+		if (chunk === 512) {
+			result += tempresult;
+			tempresult = '';
+			chunk = 0;
+		}
+	} // for every 8 characters, or 64 bits in the message
+
+	// return the result as an array
+	result += tempresult;
+	result = result.replace(/\0*$/g, '');
+
+	if (!encrypt) { // 如果是解密的话,解密结束后对PKCS7 padding进行解码,并转换成utf-8编码
+		if (padding === 1) { // PKCS7 padding解码
+			var len = result.length, paddingChars = 0;
+			len && (paddingChars = result.charCodeAt(len - 1));
+			(paddingChars <= 8) && (result = result.substring(0, len - paddingChars));
+		}
+		// 转换成UTF-8编码
+		result = decodeURIComponent(escape(result));
+	}
+
+	return result;
+} // end of des
+
+// des_createKeys
+// this takes as input a 64 bit key (even though only 56 bits are used)
+// as an array of 2 integers, and returns 16 48 bit keys
+function des_createKeys (key) {
+	// declaring this locally speeds things up a bit
+	let pc2bytes0 = new Array(0, 0x4, 0x20000000, 0x20000004, 0x10000, 0x10004, 0x20010000, 0x20010004, 0x200, 0x204, 0x20000200, 0x20000204, 0x10200, 0x10204, 0x20010200, 0x20010204);
+	let pc2bytes1 = new Array(0, 0x1, 0x100000, 0x100001, 0x4000000, 0x4000001, 0x4100000, 0x4100001, 0x100, 0x101, 0x100100, 0x100101, 0x4000100, 0x4000101, 0x4100100, 0x4100101);
+	let pc2bytes2 = new Array(0, 0x8, 0x800, 0x808, 0x1000000, 0x1000008, 0x1000800, 0x1000808, 0, 0x8, 0x800, 0x808, 0x1000000, 0x1000008, 0x1000800, 0x1000808);
+	let pc2bytes3 = new Array(0, 0x200000, 0x8000000, 0x8200000, 0x2000, 0x202000, 0x8002000, 0x8202000, 0x20000, 0x220000, 0x8020000, 0x8220000, 0x22000, 0x222000, 0x8022000, 0x8222000);
+	let pc2bytes4 = new Array(0, 0x40000, 0x10, 0x40010, 0, 0x40000, 0x10, 0x40010, 0x1000, 0x41000, 0x1010, 0x41010, 0x1000, 0x41000, 0x1010, 0x41010);
+	let pc2bytes5 = new Array(0, 0x400, 0x20, 0x420, 0, 0x400, 0x20, 0x420, 0x2000000, 0x2000400, 0x2000020, 0x2000420, 0x2000000, 0x2000400, 0x2000020, 0x2000420);
+	let pc2bytes6 = new Array(0, 0x10000000, 0x80000, 0x10080000, 0x2, 0x10000002, 0x80002, 0x10080002, 0, 0x10000000, 0x80000, 0x10080000, 0x2, 0x10000002, 0x80002, 0x10080002);
+	let pc2bytes7 = new Array(0, 0x10000, 0x800, 0x10800, 0x20000000, 0x20010000, 0x20000800, 0x20010800, 0x20000, 0x30000, 0x20800, 0x30800, 0x20020000, 0x20030000, 0x20020800, 0x20030800);
+	let pc2bytes8 = new Array(0, 0x40000, 0, 0x40000, 0x2, 0x40002, 0x2, 0x40002, 0x2000000, 0x2040000, 0x2000000, 0x2040000, 0x2000002, 0x2040002, 0x2000002, 0x2040002);
+	let pc2bytes9 = new Array(0, 0x10000000, 0x8, 0x10000008, 0, 0x10000000, 0x8, 0x10000008, 0x400, 0x10000400, 0x408, 0x10000408, 0x400, 0x10000400, 0x408, 0x10000408);
+	let pc2bytes10 = new Array(0, 0x20, 0, 0x20, 0x100000, 0x100020, 0x100000, 0x100020, 0x2000, 0x2020, 0x2000, 0x2020, 0x102000, 0x102020, 0x102000, 0x102020);
+	let pc2bytes11 = new Array(0, 0x1000000, 0x200, 0x1000200, 0x200000, 0x1200000, 0x200200, 0x1200200, 0x4000000, 0x5000000, 0x4000200, 0x5000200, 0x4200000, 0x5200000, 0x4200200, 0x5200200);
+	let pc2bytes12 = new Array(0, 0x1000, 0x8000000, 0x8001000, 0x80000, 0x81000, 0x8080000, 0x8081000, 0x10, 0x1010, 0x8000010, 0x8001010, 0x80010, 0x81010, 0x8080010, 0x8081010);
+	let pc2bytes13 = new Array(0, 0x4, 0x100, 0x104, 0, 0x4, 0x100, 0x104, 0x1, 0x5, 0x101, 0x105, 0x1, 0x5, 0x101, 0x105);
+
+	// how many iterations (1 for des, 3 for triple des)
+	let iterations = key.length > 8 ? 3 : 1; // changed by Paul 16/6/2007 to use Triple DES for 9+ byte keys
+	// stores the return keys
+	let keys = new Array(32 * iterations);
+	// now define the left shifts which need to be done
+	let shifts = new Array(0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0);
+	// other variables
+	let lefttemp, righttemp, m = 0, n = 0, temp;
+
+	for (let j = 0; j < iterations; j++) { // either 1 or 3 iterations
+		let left = (key.charCodeAt(m++) << 24) | (key.charCodeAt(m++) << 16) | (key.charCodeAt(m++) << 8) | key.charCodeAt(m++);
+		let right = (key.charCodeAt(m++) << 24) | (key.charCodeAt(m++) << 16) | (key.charCodeAt(m++) << 8) | key.charCodeAt(m++);
+
+		temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;
+		right ^= temp;
+		left ^= (temp << 4);
+		temp = ((right >>> -16) ^ left) & 0x0000ffff;
+		left ^= temp;
+		right ^= (temp << -16);
+		temp = ((left >>> 2) ^ right) & 0x33333333;
+		right ^= temp;
+		left ^= (temp << 2);
+		temp = ((right >>> -16) ^ left) & 0x0000ffff;
+		left ^= temp;
+		right ^= (temp << -16);
+		temp = ((left >>> 1) ^ right) & 0x55555555;
+		right ^= temp;
+		left ^= (temp << 1);
+		temp = ((right >>> 8) ^ left) & 0x00ff00ff;
+		left ^= temp;
+		right ^= (temp << 8);
+		temp = ((left >>> 1) ^ right) & 0x55555555;
+		right ^= temp;
+		left ^= (temp << 1);
+
+		// the right side needs to be shifted and to get the last four bits of the left side
+		temp = (left << 8) | ((right >>> 20) & 0x000000f0);
+		// left needs to be put upside down
+		left = (right << 24) | ((right << 8) & 0xff0000) | ((right >>> 8) & 0xff00) | ((right >>> 24) & 0xf0);
+		right = temp;
+
+		// now go through and perform these shifts on the left and right keys
+		for (let i = 0; i < shifts.length; i++) {
+			// shift the keys either one or two bits to the left
+			if (shifts[i]) {
+				left = (left << 2) | (left >>> 26);
+				right = (right << 2) | (right >>> 26);
+			} else {
+				left = (left << 1) | (left >>> 27);
+				right = (right << 1) | (right >>> 27);
+			}
+			left &= -0xf;
+			right &= -0xf;
+
+			// now apply PC-2, in such a way that E is easier when encrypting or decrypting
+			// this conversion will look like PC-2 except only the last 6 bits of each byte are used
+			// rather than 48 consecutive bits and the order of lines will be according to
+			// how the S selection functions will be applied: S2, S4, S6, S8, S1, S3, S5, S7
+			lefttemp = pc2bytes0[left >>> 28] | pc2bytes1[(left >>> 24) & 0xf] |
+				pc2bytes2[(left >>> 20) & 0xf] | pc2bytes3[(left >>> 16) & 0xf] |
+				pc2bytes4[(left >>> 12) & 0xf] | pc2bytes5[(left >>> 8) & 0xf] |
+				pc2bytes6[(left >>> 4) & 0xf];
+			righttemp = pc2bytes7[right >>> 28] | pc2bytes8[(right >>> 24) & 0xf] |
+				pc2bytes9[(right >>> 20) & 0xf] | pc2bytes10[(right >>> 16) & 0xf] |
+				pc2bytes11[(right >>> 12) & 0xf] | pc2bytes12[(right >>> 8) & 0xf] |
+				pc2bytes13[(right >>> 4) & 0xf];
+			temp = ((righttemp >>> 16) ^ lefttemp) & 0x0000ffff;
+			keys[n++] = lefttemp ^ temp;
+			keys[n++] = righttemp ^ (temp << 16);
+		}
+	} // for each iterations
+	// return the keys we've created
+	return keys;
+} // end of des_createKeys
+function genkey (key, start, end) {
+	// 8 byte / 64 bit Key (DES) or 192 bit Key
+	return { key: pad(key.slice(start, end)), vector: 1 };
+}
+function pad (key) {
+	for (let i = key.length; i < 24; i++) {
+		key += '0';
+	}
+	return key;
+}
+
+let BASE64_MAPPING = [
+	'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
+	'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
+	'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+	'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
+	'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
+	'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+	'w', 'x', 'y', 'z', '0', '1', '2', '3',
+	'4', '5', '6', '7', '8', '9', '+', '/'
+];
+
+/**
+ *ascii convert to binary
+ */
+let _toBinary = function (ascii) {
+	let binary = new Array();
+	while (ascii > 0) {
+		let b = ascii % 2;
+		ascii = Math.floor(ascii / 2);
+		binary.push(b);
+	}
+	/*
+	 var len = binary.length;
+	 if(6-len > 0){
+	 for(var i = 6-len ; i > 0 ; --i){
+	 binary.push(0);
+	 }
+	 } */
+	binary.reverse();
+	return binary;
+};
+
+/**
+ *binary convert to decimal
+ */
+let _toDecimal = function (binary) {
+	let dec = 0;
+	let p = 0;
+	for (let i = binary.length - 1; i >= 0; --i) {
+		let b = binary[i];
+		if (b === 1) {
+			dec += Math.pow(2, p);
+		}
+		++p;
+	}
+	return dec;
+};
+
+/**
+ *unicode convert to utf-8
+ */
+let _toUTF8Binary = function (c, binaryArray) {
+	let mustLen = (8 - (c + 1)) + ((c - 1) * 6);
+	let fatLen = binaryArray.length;
+	let diff = mustLen - fatLen;
+	while (--diff >= 0) {
+		binaryArray.unshift(0);
+	}
+	let binary = [];
+	let _c = c;
+	while (--_c >= 0) {
+		binary.push(1);
+	}
+	binary.push(0);
+	let i = 0, len = 8 - (c + 1);
+	for (; i < len; ++i) {
+		binary.push(binaryArray[i]);
+	}
+
+	for (let j = 0; j < c - 1; ++j) {
+		binary.push(1);
+		binary.push(0);
+		let sum = 6;
+		while (--sum >= 0) {
+			binary.push(binaryArray[i++]);
+		}
+	}
+	return binary;
+};
+
+let BASE64 = {
+	/**
+	 *BASE64 Encode
+	 */
+	encoder: function (str) {
+		let base64_Index = [];
+		let binaryArray = [];
+		for (var i = 0, len = str.length; i < len; ++i) {
+			let unicode = str.charCodeAt(i);
+			let _tmpBinary = _toBinary(unicode);
+			if (unicode < 0x80) {
+				let _tmpdiff = 8 - _tmpBinary.length;
+				while (--_tmpdiff >= 0) {
+					_tmpBinary.unshift(0);
+				}
+				binaryArray = binaryArray.concat(_tmpBinary);
+			} else if (unicode >= 0x80 && unicode <= 0x7FF) {
+				binaryArray = binaryArray.concat(_toUTF8Binary(2, _tmpBinary));
+			} else if (unicode >= 0x800 && unicode <= 0xFFFF) { // UTF-8 3byte
+				binaryArray = binaryArray.concat(_toUTF8Binary(3, _tmpBinary));
+			} else if (unicode >= 0x10000 && unicode <= 0x1FFFFF) { // UTF-8 4byte
+				binaryArray = binaryArray.concat(_toUTF8Binary(4, _tmpBinary));
+			} else if (unicode >= 0x200000 && unicode <= 0x3FFFFFF) { // UTF-8 5byte
+				binaryArray = binaryArray.concat(_toUTF8Binary(5, _tmpBinary));
+			} else if (unicode >= 4000000 && unicode <= 0x7FFFFFFF) { // UTF-8 6byte
+				binaryArray = binaryArray.concat(_toUTF8Binary(6, _tmpBinary));
+			}
+		}
+
+		let extra_Zero_Count = 0;
+		for (var i = 0, len = binaryArray.length; i < len; i += 6) {
+			let diff = (i + 6) - len;
+			if (diff === 2) {
+				extra_Zero_Count = 2;
+			} else if (diff === 4) {
+				extra_Zero_Count = 4;
+			}
+			// if(extra_Zero_Count > 0){
+			//  len += extra_Zero_Count+1;
+			// }
+			let _tmpExtra_Zero_Count = extra_Zero_Count;
+			while (--_tmpExtra_Zero_Count >= 0) {
+				binaryArray.push(0);
+			}
+			base64_Index.push(_toDecimal(binaryArray.slice(i, i + 6)));
+		}
+
+		let base64 = '';
+		for (var i = 0, len = base64_Index.length; i < len; ++i) {
+			base64 += BASE64_MAPPING[base64_Index[i]];
+		}
+
+		for (var i = 0, len = extra_Zero_Count / 2; i < len; ++i) {
+			base64 += '=';
+		}
+		return base64;
+	},
+	/**
+	 *BASE64  Decode for UTF-8
+	 */
+	decoder: function (_base64Str) {
+		let _len = _base64Str.length;
+		let extra_Zero_Count = 0;
+		/**
+		 *计算在进行BASE64编码的时候,补了几个0
+		 */
+		if (_base64Str.charAt(_len - 1) === '=') {
+			// alert(_base64Str.charAt(_len-1));
+			// alert(_base64Str.charAt(_len-2));
+			if (_base64Str.charAt(_len - 2) === '=') { // 两个等号说明补了4个0
+				extra_Zero_Count = 4;
+				_base64Str = _base64Str.substring(0, _len - 2);
+			} else { // 一个等号说明补了2个0
+				extra_Zero_Count = 2;
+				_base64Str = _base64Str.substring(0, _len - 1);
+			}
+		}
+
+		let binaryArray = [];
+		for (var i = 0, len = _base64Str.length; i < len; ++i) {
+			let c = _base64Str.charAt(i);
+			for (let j = 0, size = BASE64_MAPPING.length; j < size; ++j) {
+				if (c === BASE64_MAPPING[j]) {
+					let _tmp = _toBinary(j);
+					/* 不足6位的补0 */
+					let _tmpLen = _tmp.length;
+					if (6 - _tmpLen > 0) {
+						for (let k = 6 - _tmpLen; k > 0; --k) {
+							_tmp.unshift(0);
+						}
+					}
+					binaryArray = binaryArray.concat(_tmp);
+					break;
+				}
+			}
+		}
+
+		if (extra_Zero_Count > 0) {
+			binaryArray = binaryArray.slice(0, binaryArray.length - extra_Zero_Count);
+		}
+
+		let unicode = [];
+		let unicodeBinary = [];
+		for (var i = 0, len = binaryArray.length; i < len;) {
+			if (binaryArray[i] === 0) {
+				unicode = unicode.concat(_toDecimal(binaryArray.slice(i, i + 8)));
+				i += 8;
+			} else {
+				let sum = 0;
+				while (i < len) {
+					if (binaryArray[i] === 1) {
+						++sum;
+					} else {
+						break;
+					}
+					++i;
+				}
+				unicodeBinary = unicodeBinary.concat(binaryArray.slice(i + 1, i + 8 - sum));
+				i += 8 - sum;
+				while (sum > 1) {
+					unicodeBinary = unicodeBinary.concat(binaryArray.slice(i + 2, i + 8));
+					i += 8;
+					--sum;
+				}
+				unicode = unicode.concat(_toDecimal(unicodeBinary));
+				unicodeBinary = [];
+			}
+		}
+		// ---------直接转换为结果
+		let strResult = '';
+		for (var i = 0, len = unicode.length; i < len; ++i) {
+			strResult += String.fromCharCode(unicode[i]);
+		}
+		return strResult;
+	}
+};
+
+let rotateLeft = function (lValue, iShiftBits) {
+	return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
+};
+
+let addUnsigned = function (lX, lY) {
+	let lX4, lY4, lX8, lY8, lResult;
+	lX8 = (lX & 0x80000000);
+	lY8 = (lY & 0x80000000);
+	lX4 = (lX & 0x40000000);
+	lY4 = (lY & 0x40000000);
+	lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
+	if (lX4 & lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
+	if (lX4 | lY4) {
+		if (lResult & 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
+		else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
+	} else {
+		return (lResult ^ lX8 ^ lY8);
+	}
+};
+
+let F = function (x, y, z) {
+	return (x & y) | ((~x) & z);
+};
+
+let G = function (x, y, z) {
+	return (x & z) | (y & (~z));
+};
+
+let H = function (x, y, z) {
+	return (x ^ y ^ z);
+};
+
+let I = function (x, y, z) {
+	return (y ^ (x | (~z)));
+};
+
+let FF = function (a, b, c, d, x, s, ac) {
+	a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
+	return addUnsigned(rotateLeft(a, s), b);
+};
+
+let GG = function (a, b, c, d, x, s, ac) {
+	a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
+	return addUnsigned(rotateLeft(a, s), b);
+};
+
+let HH = function (a, b, c, d, x, s, ac) {
+	a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
+	return addUnsigned(rotateLeft(a, s), b);
+};
+
+let II = function (a, b, c, d, x, s, ac) {
+	a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
+	return addUnsigned(rotateLeft(a, s), b);
+};
+
+let convertToWordArray = function (string) {
+	let lWordCount;
+	let lMessageLength = string.length;
+	let lNumberOfWordsTempOne = lMessageLength + 8;
+	let lNumberOfWordsTempTwo = (lNumberOfWordsTempOne - (lNumberOfWordsTempOne % 64)) / 64;
+	let lNumberOfWords = (lNumberOfWordsTempTwo + 1) * 16;
+	let lWordArray = Array(lNumberOfWords - 1);
+	let lBytePosition = 0;
+	let lByteCount = 0;
+	while (lByteCount < lMessageLength) {
+		lWordCount = (lByteCount - (lByteCount % 4)) / 4;
+		lBytePosition = (lByteCount % 4) * 8;
+		lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
+		lByteCount++;
+	}
+	lWordCount = (lByteCount - (lByteCount % 4)) / 4;
+	lBytePosition = (lByteCount % 4) * 8;
+	lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
+	lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
+	lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
+	return lWordArray;
+};
+
+let wordToHex = function (lValue) {
+	let WordToHexValue = '', WordToHexValueTemp = '', lByte, lCount;
+	for (lCount = 0; lCount <= 3; lCount++) {
+		lByte = (lValue >>> (lCount * 8)) & 255;
+		WordToHexValueTemp = '0' + lByte.toString(16);
+		WordToHexValue = WordToHexValue + WordToHexValueTemp.substr(WordToHexValueTemp.length - 2, 2);
+	}
+	return WordToHexValue;
+};
+
+let uTF8Encode = function (str) {
+	str = str.replace(/\x0d\x0a/g, '\x0a');
+	let output = '';
+	for (let n = 0; n < str.length; n++) {
+		let c = str.charCodeAt(n);
+		if (c < 128) {
+			output += String.fromCharCode(c);
+		} else if ((c > 127) && (c < 2048)) {
+			output += String.fromCharCode((c >> 6) | 192);
+			output += String.fromCharCode((c & 63) | 128);
+		} else {
+			output += String.fromCharCode((c >> 12) | 224);
+			output += String.fromCharCode(((c >> 6) & 63) | 128);
+			output += String.fromCharCode((c & 63) | 128);
+		}
+	}
+	return output;
+};
+
+var md5 = function (string) {
+	let x = Array();
+	let k, AA, BB, CC, DD, a, b, c, d;
+	let S11 = 7, S12 = 12, S13 = 17, S14 = 22;
+	let S21 = 5, S22 = 9, S23 = 14, S24 = 20;
+	let S31 = 4, S32 = 11, S33 = 16, S34 = 23;
+	let S41 = 6, S42 = 10, S43 = 15, S44 = 21;
+	string = uTF8Encode(string);
+	x = convertToWordArray(string);
+	a = 0x67452301;
+	b = 0xEFCDAB89;
+	c = 0x98BADCFE;
+	d = 0x10325476;
+	for (k = 0; k < x.length; k += 16) {
+		AA = a;
+		BB = b;
+		CC = c;
+		DD = d;
+		a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
+		d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
+		c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
+		b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
+		a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
+		d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
+		c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
+		b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
+		a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
+		d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
+		c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
+		b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
+		a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
+		d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
+		c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
+		b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
+		a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
+		d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
+		c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
+		b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
+		a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
+		d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
+		c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
+		b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
+		a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
+		d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
+		c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
+		b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
+		a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
+		d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
+		c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
+		b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
+		a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
+		d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
+		c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
+		b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
+		a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
+		d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
+		c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
+		b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
+		a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
+		d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
+		c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
+		b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
+		a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
+		d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
+		c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
+		b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
+		a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
+		d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
+		c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
+		b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
+		a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
+		d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
+		c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
+		b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
+		a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
+		d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
+		c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
+		b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
+		a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
+		d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
+		c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
+		b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
+		a = addUnsigned(a, AA);
+		b = addUnsigned(b, BB);
+		c = addUnsigned(c, CC);
+		d = addUnsigned(d, DD);
+	}
+	let tempValue = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
+	return tempValue.toLowerCase();
+};
+let base64EncodeChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+let base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
+/**
+ * base64编码
+ * @param {Object} str
+ */
+function base64encode (str) {
+	let out, i, len;
+	let c1, c2, c3;
+	len = str.length;
+	i = 0;
+	out = '';
+	while (i < len) {
+		c1 = str.charCodeAt(i++) & 0xff;
+		if (i === len) {
+			out += base64EncodeChars.charAt(c1 >> 2);
+			out += base64EncodeChars.charAt((c1 & 0x3) << 4);
+			out += '==';
+			break;
+		}
+		c2 = str.charCodeAt(i++);
+		if (i === len) {
+			out += base64EncodeChars.charAt(c1 >> 2);
+			out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
+			out += base64EncodeChars.charAt((c2 & 0xF) << 2);
+			out += '=';
+			break;
+		}
+		c3 = str.charCodeAt(i++);
+		out += base64EncodeChars.charAt(c1 >> 2);
+		out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
+		out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
+		out += base64EncodeChars.charAt(c3 & 0x3F);
+	}
+	return out;
+}
+/**
+ * base64解码
+ * @param {Object} str
+ */
+function base64decode (str) {
+	let c1, c2, c3, c4;
+	let i, len, out;
+	len = str.length;
+	i = 0;
+	out = '';
+	while (i < len) {
+		/* c1 */
+		do {
+			c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
+		}
+		while (i < len && c1 === -1);
+		if (c1 === -1) { break; }
+		/* c2 */
+		do {
+			c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
+		}
+		while (i < len && c2 === -1);
+		if (c2 === -1) { break; }
+		out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
+		/* c3 */
+		do {
+			c3 = str.charCodeAt(i++) & 0xff;
+			if (c3 === 61) { return out; }
+			c3 = base64DecodeChars[c3];
+		}
+		while (i < len && c3 === -1);
+		if (c3 === -1) { break; }
+		out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
+		/* c4 */
+		do {
+			c4 = str.charCodeAt(i++) & 0xff;
+			if (c4 === 61) { return out; }
+			c4 = base64DecodeChars[c4];
+		}
+		while (i < len && c4 === -1);
+		if (c4 === -1) { break; }
+		out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
+	}
+	return out;
+}
+
+export default CryptoJS;

+ 325 - 0
src/api/http.js

@@ -0,0 +1,325 @@
+'use strict'
+import axios from 'axios';
+import bus from './bus.js';
+axios.defaults.withCredentials = true;
+axios.defaults.timeout = 0;
+axios.interceptors.request.use(config => {  // 请求拦截
+    let auth = localStorage.getItem('auth')
+    if(auth) {
+        config.headers.Authorization = auth;
+    }
+    const uuid=localStorage.getItem('uuid')||''
+    config.headers.Uuid=uuid
+    config.headers.AccessToken=uuid+'--zheshiyigename'
+	return config;
+},error => {
+	return Promise.reject(error);
+});
+
+axios.interceptors.response.use(response => {  //响应拦截
+	return response;
+},error => {
+    return Promise.reject(error);
+});
+
+function postData(val,url){  //处理请求数据
+	// if( url=="/login" ){
+	// 	return val;
+	// }else{
+	// 	// window.location.href = process.env.Login;
+	// }
+	return val;
+}
+
+function getData(val,url){  //处理请求数据
+	// if( url=="/login" ){
+	// 	return val;
+	// }else{
+	// 	// window.location.href = process.env.Login;
+	// }
+	return val;
+}
+
+function checkStatus(response){  //处理响应数据
+	if( response && ( response.status === 200 ) ){  // loading,如果http状态码正常,则直接返回数据
+        let res = bus.$parseData(response.data)
+		if( !res ){
+			bus.$message.error( "服务器开了个小差" );
+			return false;
+		}else if(res.Ret == 403 ){
+            bus.$message.error( res.Msg );
+		} else if( res.Ret === 408) {
+            bus.$alert(res.Msg,'提示',{
+                showClose: false
+            }).then(() => {
+                window.location.href = process.env.Login;
+            });
+        }
+		return res;
+	}else{
+		bus.$message.error( "网络异常" );
+		return false;
+	}
+}
+
+function checkCode(res){
+	bus.$message.error( "网络异常" );
+}
+// 请求时间需要过长,取消限制
+const cancelTimeoutUrlPost = ['/cloud_disk/resource/upload']
+
+export default{
+	post(url,data){  //post请求方式
+        let timeout=cancelTimeoutUrlPost.includes(url)?0:100000
+    	return axios({
+      		method:'post',
+			url:url,
+			baseURL:process.env.VUE_APP_BASE_API,
+			// baseURL:'/admin',
+      		data:postData(data,url),
+      		timeout,
+			headers: {'Content-Type':'application/json; charset=utf-8'}
+	    }).then(
+	    	(response) => { return checkStatus(response); }
+	    ).catch(
+	      	(res) => { return checkCode(res); }
+	    )
+	},
+	get(url,data,responseType='json'){  //get请求方式
+    	return axios({
+	      	method:'get',
+	      	baseURL:process.env.VUE_APP_BASE_API,
+			// baseURL:'/admin',
+	      	url:url,
+	      	params:getData(data,url),
+	      	timeout:100000,
+			headers:{"Content-type":"application/x-www-form-urlencoded; charset=utf-8"},
+            responseType:responseType,
+			transformRequest: [function(data) {
+				let ret = '';
+				for (let it in data) {
+					ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';
+				}
+				return ret;
+			}]
+	    }).then(
+	    	(response) => { return checkStatus(response); }
+	    ).catch(
+	    	(res) => { return checkCode(res); }
+	    )
+	},
+	Base64,dateFormatter,getTotalMonth,Decrypt,Encrypt,isMobileNo,setCookie,getCookie
+}
+function setCookie(cookies,callback,t){
+	var now = new Date();
+	var time = now.getTime();
+	var expireTime = time + t; // 单位为毫秒,故这里的cookie生命周期设置为24小时
+	now.setTime(expireTime);
+	for (let key in cookies) {
+		document.cookie = key + '=' + cookies[key] + ';expires=' + now.toGMTString() + ';path=/;domain='+process.env.Domain;
+	}
+	callback && callback();
+}
+
+function getCookie(cookieName){
+	var cookies = {},
+		cookieArr = document.cookie.split(';'),
+		currentCookie = '';
+	for (let i = 0; i < cookieArr.length; i++) {
+		currentCookie = cookieArr[i];
+		if(currentCookie.indexOf('=')>-1){
+			cookies[currentCookie.split('=')[0].trim()] = currentCookie.split('=')[1].trim();
+		}
+	}
+	if(typeof cookies[cookieName.trim()] != undefined){
+		return cookies[cookieName.trim()];
+	}else{
+		return false;
+	}
+}
+
+// aes对称加密
+const CryptoJS = require('crypto-js');  //引用AES源码js
+const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF");  //十六位十六进制数作为密钥
+const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412');   //十六位十六进制数作为密钥偏移量
+
+//解密方法
+function Decrypt(word) {
+    let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
+    let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
+    let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
+    let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
+    return decryptedStr.toString();
+}
+
+//加密方法
+function Encrypt(word) {
+    let srcs = CryptoJS.enc.Utf8.parse(word);
+    let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
+    return encrypted.ciphertext.toString().toUpperCase();
+}
+
+function isMobileNo(account) { // 手机号正则
+	var isChinaMobile = new RegExp('(^1(3[4-9]|4[78]|5[0-27-9]|7[28]|8[2-478]|98)\\d{8}$)'); // 中国移动
+	// 手机段:134,135,136,137,138,139,147,148[卫星通信],150,151,152,157,158,159,172,178,182,183,184,187,188,198
+	var isChinaUnicom = new RegExp('(^1(3[0-2]|4[56]|5[56]|66|7[156]|8[56])\\d{8}$)'); // 中国联通
+	// 手机段:130,131,132,145,146[卫星通信],155,156,166,171,175,176,185,186
+	var isChinaTelcom = new RegExp('(^1(33|49|53|7[347]|8[019]|99)\\d{8}$)'); // 中国电信
+	// 手机段:133,149,153,173,174,177,180,181,189,199
+	var isOtherTelphone = new RegExp('(^170\\d{8}$)');
+	// 虚拟运营商170号段
+	if (isChinaMobile.test(account)) {
+		return true;
+	} else if (isChinaUnicom.test(account)) {
+		return true;
+	} else if (isChinaTelcom.test(account)) {
+		return true;
+	} else return isOtherTelphone.test(account);
+}
+
+function Base64() {
+    // private property
+    var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+    // public method for encoding
+    this.encode = function (input) {
+        var output = "";
+        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
+        var i = 0;
+        input = this._utf8_encode(input);
+        while (i < input.length) {
+            chr1 = input.charCodeAt(i++);
+            chr2 = input.charCodeAt(i++);
+            chr3 = input.charCodeAt(i++);
+            enc1 = chr1 >> 2;
+            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+            enc4 = chr3 & 63;
+            if (isNaN(chr2)) {
+                enc3 = enc4 = 64;
+            } else if (isNaN(chr3)) {
+                enc4 = 64;
+            }
+            output = output +
+                _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
+                _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
+        }
+        return output;
+    }
+    // public method for decoding
+    this.decode = function (input) {
+        var output = "";
+        var chr1, chr2, chr3;
+        var enc1, enc2, enc3, enc4;
+        var i = 0;
+        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+        while (i < input.length) {
+            enc1 = _keyStr.indexOf(input.charAt(i++));
+            enc2 = _keyStr.indexOf(input.charAt(i++));
+            enc3 = _keyStr.indexOf(input.charAt(i++));
+            enc4 = _keyStr.indexOf(input.charAt(i++));
+            chr1 = (enc1 << 2) | (enc2 >> 4);
+            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+            chr3 = ((enc3 & 3) << 6) | enc4;
+            output = output + String.fromCharCode(chr1);
+            if (enc3 != 64) {
+                output = output + String.fromCharCode(chr2);
+            }
+            if (enc4 != 64) {
+                output = output + String.fromCharCode(chr3);
+            }
+        }
+        output = this._utf8_decode(output);
+        return output;
+    }
+    // private method for UTF-8 encoding
+    this._utf8_encode = function (string) {
+        string = string.replace(/\r\n/g, "\n");
+        var utftext = "";
+        for (var n = 0; n < string.length; n++) {
+            var c = string.charCodeAt(n);
+            if (c < 128) {
+                utftext += String.fromCharCode(c);
+            } else if ((c > 127) && (c < 2048)) {
+                utftext += String.fromCharCode((c >> 6) | 192);
+                utftext += String.fromCharCode((c & 63) | 128);
+            } else {
+                utftext += String.fromCharCode((c >> 12) | 224);
+                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
+                utftext += String.fromCharCode((c & 63) | 128);
+            }
+        }
+        return utftext;
+    }
+    // private method for UTF-8 decoding
+    this._utf8_decode = function (utftext) {
+        var string = "";
+        var i = 0;
+        var c = 0;
+        var c1 = 0;
+        var c2 = 0;
+        while (i < utftext.length) {
+            c = utftext.charCodeAt(i);
+            if (c < 128) {
+                string += String.fromCharCode(c);
+                i++;
+            } else if ((c > 191) && (c < 224)) {
+                c2 = utftext.charCodeAt(i + 1);
+                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
+                i += 2;
+            } else {
+                c2 = utftext.charCodeAt(i + 1);
+                var c3 = utftext.charCodeAt(i + 2);
+                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
+                i += 3;
+            }
+        }
+        return string;
+    }
+}
+var b = new Base64();
+
+function dateFormatter(str) { //默认返回yyyy-MM-dd HH-mm-ss
+	var hasTime = arguments[1] != false ? true : false; //可传第二个参数false,返回yyyy-MM-dd
+    var hasType = arguments[2]; //可传第三个参数,tru 返回yyyy年MM月dd日
+    var dateStr = String(str);
+    if(!(dateStr.indexOf('-')>-1 && dateStr.indexOf('T')>-1)){
+        dateStr = dateStr.replace(/\-/g,'/');
+    }
+	var d = new Date(dateStr);
+	var year = d.getFullYear();
+	var month = (d.getMonth() + 1) < 10 ? '0' + (d.getMonth() + 1) : (d.getMonth() + 1);
+	var day = d.getDate() < 10 ? '0' + d.getDate() : d.getDate();
+	var hour = d.getHours() < 10 ? '0' + d.getHours() : d.getHours();
+	var minute = d.getMinutes() < 10 ? '0' + d.getMinutes() : d.getMinutes();
+	var second = d.getSeconds() < 10 ? '0' + d.getSeconds() : d.getSeconds();
+	if(hasTime) {
+        if(hasType){
+            return `${month}月${day}日 ${hour}时${minute}分${second}秒`; 
+        }
+        return [year, month, day].join('.') + " " + [hour, minute, second].join(':');
+	} else {
+        if(hasType){
+            return `${month}月${day}日`; 
+        }
+		return [year, month, day].join('.');
+	}
+}
+
+function getTotalMonth(date,hasTime=false){   //默认返回 [yyyy-MM-01,yyyy-MM-dd]   整月时间
+    let newDate = new Date(date);
+    let year= newDate.getFullYear();
+    let month = newDate.getMonth()+1 < 10 ? '0' + (newDate.getMonth()+1) : newDate.getMonth()+1;
+    var hour = newDate.getHours() < 10 ? '0' + newDate.getHours() : newDate.getHours();
+	var minute = newDate.getMinutes() < 10 ? '0' + newDate.getMinutes() : newDate.getMinutes();
+	var second = newDate.getSeconds() < 10 ? '0' + newDate.getSeconds() : newDate.getSeconds();
+    let timestamp = new Date(`${year}/${newDate.getMonth()+2}/01`).getTime()-24*60*60*1000;
+    if(hasTime){
+        return [ `${year}-${month}-01 ${hour}:${minute}:${second}`, dateFormatter(timestamp,true)];
+    }else{
+        return [ `${year}-${month}-01`, dateFormatter(timestamp,false)];
+    }
+}
+
+export async function downloadFileByUrl(dataUrl) {
+    return (await fetch(dataUrl)).blob()
+}

+ 3 - 0
src/api/index.js

@@ -0,0 +1,3 @@
+import * as api from './api';
+
+export default api;

+ 51 - 0
src/api/modules/aiApi.js

@@ -0,0 +1,51 @@
+import http from "@/api/http.js"
+
+export const aiQAInterence = {
+    /**
+     * 获取话题列表
+     * @param {*} params 
+     * @returns 
+     */
+    getTopicList:params=>{
+        return http.get('/ai/topic/list',params)
+    },
+    /**
+     * 获取话题详情
+     * @param {Object} params 
+     * @param {Number} params.AiChatTopicId 话题id
+     * @returns 
+     */
+    getTopicDetail:params=>{
+        return http.get('/ai/topic/detail',params)
+    },
+    /**
+     * 提问
+     * @param {Object} params 
+     * @param {Number} params.AiChatTopicId 话题id,新窗口请求传0
+     * @param {String} params.Ask 话题内容
+     * @param {String} params.Model 模型名称
+     * @returns 
+     */
+    sendChatMsg:params=>{
+        return http.post('/ai/chat',params)
+    },
+    /**
+     * 
+     * @param {Object} params 
+     * @param {Number} params.AiChatTopicId 话题id
+     * @returns 
+     */
+    deleteTopic:params=>{
+        return http.post('/ai/topic/delete',params)
+    },
+    /**
+     * 编辑话题标题
+     * @param {Object} params 
+     * @param {Number} params.AiChatTopicId 话题id
+     * @param {String} params.TopicName 话题标题
+     * @returns 
+     */
+    editTopicName:params=>{
+        return http.post('/ai/topic/edit',params)
+    }
+}

+ 86 - 0
src/api/modules/businessTrip.js

@@ -0,0 +1,86 @@
+  
+import http from "@/api/http.js"
+
+const businessTripInterence = {
+  // ----------------------出差管理 
+ /**出差申请-日历
+  * AdminId-系统用户id
+  */
+ getTripCalendar:(params)=>{
+  return http.get('/business_trip/calendar',params)
+  },
+ /**出差申请-详情
+  * BusinessApplyId-出差申请id
+  */
+ getTripDetail:(params)=>{
+  return http.get('/business_trip/apply/detail',params)
+  },
+ /**出差申请-申请列表
+  * PageSize CurrentIndex Reason-出差事由 Status-申请状态 
+  */
+  getTripApplicationList:(params)=>{
+    return http.get('/business_trip/apply/list',params)
+  },
+   /**出差申请-申请
+   * ArriveDate-到达日期-yyyy-MM-dd
+  * ReturnDate-返程日期-yyyy-MM-dd
+  * Province-目的地省
+  * City-目的地市
+  * Reason-出差事由 路演/调研/调研/会议
+  * Transportation-交通工具 飞机/火车/汽车/其他 其他需要用户自己填交通工具用'-'连接:其他-轮船
+  * PeerPeopleId-同行人id,多个用英文逗号隔开
+  * PeerPeopleName-同行人姓名,多个用英文逗号隔开
+  */
+  addTripApplication:(params)=>{
+    return http.post('/business_trip/apply/add',params)
+  },
+  /**出差申请-重新申请
+   * BusinessApplyId - 出差申请id
+   * ArriveDate-到达日期-yyyy-MM-dd
+  * ReturnDate-返程日期-yyyy-MM-dd
+  * Province-目的地省
+  * City-目的地市
+  * Reason-出差事由 路演/调研/调研/会议
+  * Transportation-交通工具 飞机/火车/汽车/其他 其他需要用户自己填交通工具用'-'连接:其他-轮船
+  * PeerPeopleId-同行人id,多个用英文逗号隔开
+  * PeerPeopleName-同行人姓名,多个用英文逗号隔开
+  */
+  editTripApplication:(params)=>{
+    return http.post('/business_trip/apply/edit',params)
+  },
+  /**出差申请-撤回
+  * BusinessApplyId - 出差申请id
+  */
+  withdrawTripApplication:(params)=>{
+    return http.post('/business_trip/apply/back',params)
+  },
+  /**出差申请-删除
+  * BusinessApplyId - 出差申请id
+  */
+  deleteTripApplication:(params)=>{
+    return http.post('/business_trip/apply/delete',params)
+  },
+   /**出差审批-审批列表
+  * PageSize CurrentIndex Status-申请状态 
+  */
+   getTripApproveList:(params)=>{
+    return http.get('/business_trip/approve/list',params)
+  },
+  /**出差审批-审批
+  * BusinessApplyId - 出差申请id
+  * ApproveStatus - 审批状态:1:通过,2:驳回
+  * RefuseReason - 驳回理由
+  */
+  tripApprove:(params)=>{
+    return http.post('/business_trip/apply/approve',params)
+  },
+  /**出差审批-关闭
+  * BusinessApplyId - 出差申请id
+  * CloseReason - 关闭原因
+  */
+  tripApproveClose:(params)=>{
+    return http.post('/business_trip/apply/close',params)
+  },
+}
+
+export { businessTripInterence}

+ 991 - 0
src/api/modules/chartApi.js

@@ -0,0 +1,991 @@
+import http from "@/api/http.js"
+
+/* 数据库管理模块  */
+const dataBaseInterface = {
+	/**
+	 * 新增分类
+	 * @param {ClassifyName} params 
+	 * @param {ParentId} params 
+	 * @returns 
+	 */
+	nodeAdd: params => {
+		return http.post('/datamanage/classify/add',params)
+	},
+	/**
+	 * 删除分类接口
+	 * @param {ClassifyId} params 
+	 * @param {EdbInfoId} params 
+	 * @returns 
+	 */
+	nodeDelete: params => {
+		return http.post('/datamanage/classify/delete',params)
+	},
+	/**
+	 * 删除检测
+	 * @param {ClassifyId} params 
+	 * @param {EdbInfoId} params 
+	 * @returns 0:默认值,如果为0,继续走其他校验,1:若目录关联指标不可删除,2:确认删除当前目录及包含的子目录吗,3:当前指标已用作画图,不可删除
+	 */
+	nodeDelCheck: params => {
+		return http.post('/datamanage/classify/delete/check',params)
+	},
+	/**
+	 * 修改分类
+	 * @param {ClassifyId} params 
+	 * @param {ClassifyName} params 
+	 * @returns 
+	 */
+	nodeEdit: params => {
+		return http.post('/datamanage/classify/edit',params)
+	},
+	/**
+	 * 获取分类层级 截止到3及目录
+	 * @param {*} params 
+	 * @returns 
+	 */
+	menuList: params => {
+		return http.get('/datamanage/classify/items',params)
+	},
+	/**
+	 * 获取分类层级 截止到3及目录
+	 * @param {*} params 
+	 * @returns 
+	 */
+	menuListV2: params => {
+		return http.get('/datamanage/classify/items/v2',params)
+	},
+	/**
+	 * 通过分类查找指标列表数据
+	 * @param ClassifyId
+	 */
+	getEdbListForClassify:params=>{
+		return http.get('/datamanage/classify/edb_info/list',params)
+	},
+	/**
+	 * 树列表
+	 * @returns 
+	 */
+	nodeTree: params => {
+		return http.get('/datamanage/classify/list',params)
+	},
+	/**
+	 * 搜索指标
+	 * @param {Source } params  1:同花顺,2:wind
+	 * @param {EdbCode } params  指标编码
+	 * @returns 
+	 */
+	getTarget: params => {
+		return http.get('/datamanage/edb_info/search',params)
+	},
+	/**
+	 * 新增指标
+	 * @param {*} params 
+	 *
+		"ClassifyId": 0,
+		"EdbCode": "string",
+		"EdbName": "string",
+		"EndDate": "string",
+		"Frequency": "string",
+		"Source": 0,
+		"StartDate": "string",
+		"Unit": "string"
+	 * @returns 
+	 */
+	targetAdd: params => {
+		return http.post('/datamanage/edb_info/add',params)
+	},
+	/**
+	 * 编辑指标
+	 * @param {*} params 
+	 * @returns 
+	 */
+	targetEdit: params => {
+		return http.post('/datamanage/edb_info/edit',params)
+	},
+	/**
+	 * 获取指标详情接口
+	 * @param {EdbInfoId} params 指标id
+	 * @returns 
+	 */
+	targetDetail: params => {
+		return http.get('/datamanage/edb_info/detail',params)
+	},
+	/**
+	 * 分类移动
+	 * @param {ClassifyId} 分类id 
+	 * @param {ParentClassifyId} 父级分类id
+	 * @param {PrevClassifyId} 上一个兄弟节点分类id
+	 * @returns 
+	 */
+	classifyMove:params=>{
+		return http.post('/datamanage/edb_classify/move',params)
+	},
+	/**
+	 * 移动指标
+	 * @param {ClassifyId} params 
+	 * @param {EdbInfoId} params 
+	 * @returns 
+	 */
+	targetMove: params => {
+		return http.post('/datamanage/edb_info/move',params)
+	},
+	/**
+	 * 指标数据列表
+	 * @param { PageSize } params 
+	 * @param { CurrentIndex } params 
+	 * @param { EdbInfoId } params 
+	 * @param { KeyWord } params 
+	 * @returns 
+	 */
+	targetList: params => {
+		return http.get('/datamanage/edb_info/list',params)
+	},
+	/**
+	 * 获取最新指标
+	 * @returns 
+	 */
+	targetNew: params => {
+		return http.get('/datamanage/edb_info/newest',params)
+	},
+	/**
+	 * 指标刷新
+	 * @param {EdbInfoId} params 指标id
+	 * @returns 
+	 */
+	targetRefresh: params => {
+		return http.get('/datamanage/edb_info/refresh',params)
+	},
+	/**
+	 * 指标搜索
+	 * @param {KeyWord} params 
+	 * @param {FilterSource} params 1其他 2转月值 3变频  4基础 
+	 * @returns
+	 */
+	targetSearch: params => {
+		return http.get('/datamanage/edb_info/filter',params)
+	},
+	/**
+	 * 指标搜索分页
+	 * @param {KeyWord} params 
+	 * @param {FilterSource} params 1其他 2转月值 3变频  4基础 
+	 * @param {CurrentIndex} params
+	 * @returns
+	 */
+	targetSearchByPage: params => {
+		return http.get('/datamanage/edb_info/filter_by_es',params)
+	},
+
+	/**
+	 * 生成计算指标
+	 * @param {CalculateFormula} params 
+	 * @param {ClassifyId} params 
+	 * @param {EdbInfoIdArr} params {  EdbInfoId FromTag }
+	 * @param {EdbName} params 
+	 * @param {Frequency} params 
+	 * @param {Unit} params 
+	 * @returns 
+	 */
+	calculateAdd: params => {
+		return http.post('/datamanage/edb_info/calculate/save',params)
+	},
+	/**
+	 * 修改计算指标
+	 * @param {EdbInfoId} params
+	 * @returns 
+	 */
+	calculateEdit: params => {
+		return http.post('/datamanage/edb_info/calculate/edit',params)
+	},
+	/**
+	 * 获取计算指标详情
+	 * @param {EdbInfoId} params 
+	 * @returns 
+ */
+	calculateDetail: params => {
+		return http.get('/datamanage/edb_info/calculate/detail',params)
+	},
+	/**
+	 * 累计值转月-同比值-同差等计算
+	 * @param {ClassifyId} params 
+	 * @param {FromEdbInfoId} params
+	 * @param {EdbName} params 
+	 * @param {Formula} params N值
+	 * @param {Frequency} params 
+	 * @param {Source} params  1:同花顺,2:wind,3:彭博,4:指标运算,5:累计值转月,6:同比值,7:同差值,8:N数值移动平均计算 12:环比 13:环差 14变频
+	 * @param {Unit} params 
+	 * @returns 
+	 */
+	calculateTargetSave: params => {
+		return http.post('/datamanage/edb_info/calculate/batch/save',params)
+	},
+	/**
+	 * 累计值转月-同比值-同差编辑
+	 * @param {ClassifyId} params 
+	 * @param {EdbInfoId} params 
+	 * @param {EdbName} params 
+	 * @param {Formula} params 
+	 * @param {Frequency} params 
+	 * @param {FromEdbInfoId} params 
+	 * @param {Source} params 
+	 * @param {Unit} params 
+	 * @returns 
+	 */
+	calculateTargetEdit: params => {
+		return http.post('/datamanage/edb_info/calculate/batch/edit',params)
+	},
+	/**
+	 * 重新计算
+	 * @param {EdbInfoId} params 
+	 * @returns 
+	 */
+	reCalculateTarget: params => {
+		return http.post('/datamanage/edb_info/calculate/batch/reset',params)
+	},
+	/**
+	 * 基础指标刷新
+	 * @param {EdbInfoId} params 
+	 */
+	refreshBaseTarget: params => {
+		return http.get('/datamanage/edb_info/refresh/all',params)
+	},
+	/**
+	 * 一键成图获取指标所有历史数据
+	 * @param {EdbInfoId} params 
+	 * @param {DateType} params 
+	 * 1:00年至今,2:10年至今,3:15年至今,4:21年至今,5:自定义时间,6:自定义起始时间至今,7:18年至今,8:19年至今,9:20年至今,10:全部
+	 * @param {StartDate} params 
+	 * @param {EndDate} params 
+	 * @returns 
+	 */
+	ebd_data: params => {
+		return http.get('/datamanage/edb_info/data',params)
+	},
+	/**
+	 * 指标更新数据
+	 * @param {Status} params 1:未更新,2:已更新
+	 * @param {Source} params  0:全部,1:同花顺,2:wind,3:彭博,9:手工指标,10:隆众,11:有色,99:计算指标
+	 * @returns 
+	 */
+	updateData: params => {
+		return http.get('/datamanage/edb_info/updates/list',params)
+	},
+	/**
+	 * 更新统计
+	 * @param {*} params 
+	 */
+	updateStatistical: params => {
+		return http.get('/datamanage/edb_info/updates/statistical')
+	},
+	/**
+	 * 指标一键刷新
+	 * @param {*} params 
+	 * @returns 
+	 */
+	edbUpdate: params => {
+		return http.post('/datamanage/edb_info/updates',params)
+	},
+	/* 刷新校验 */
+	updateCheck: params => {
+		return http.post('/datamanage/edb_info/updates/check',params)
+	},
+	/**
+	 * 指标替换
+	 * @param {NewEdbInfoId} params 
+	 * @param {OldEdbInfoId} params 
+	 * @returns 
+	 */
+	edbReplace: params => {
+		return http.post('/datamanage/edb_info/replace',params)
+	},
+	/**
+	 * 替换校验
+	 * @param {*} params 
+	 * @returns 
+	 */
+	replaceCheck: params => {
+		return http.post('/datamanage/edb_info/replace/check',params)
+	},
+
+	/**
+	 * 获取同比数据
+	 * @param {*} params EdbInfoId DateType StartDate EndDate
+	 * @returns 
+	 */
+	edbOnyearData: params => {
+		return http.get('/datamanage/edb_info/data/tb',params)
+	},
+
+	/**
+	 * 获取指标季节数据 
+	 * @param {*} params EdbInfoId Calendar StartDate  EndDate
+	 * @returns 
+	 */
+	ebdSeasonData: params => {
+		return http.get('/datamanage/edb_info/data/seasonal',params)
+	},
+
+	/**
+	 * 设置插入值
+	 * @param {*} params  EdbInfoId Date  Value
+	 * @returns 
+	 */
+	insertData: params => {
+		return http.post('/datamanage/edb_info/insert_config/set',params)
+	},
+
+	/**
+	 * 记录指标库中英文
+	 * @param {*} params 
+	 * ConfigCode edb指标库:edb_language;预测指标库:predict_edb_language
+	 * ConfigValue 中文:CN;英文:EN
+	 * @returns 
+	 */
+	setUserLang: params => {
+		return http.post('/system/sysuser/config/set',params)
+	},
+
+	/**
+	 * 获取指标历史生成记录
+	 * @param {*} params  EdbInfoId
+	 * @returns 
+	 */
+	getEdbCreateHistory: params => {
+		return http.get('datamanage/edb_info/trace',params)
+	},
+
+
+	//========================================chart
+	// /**
+	//  * 
+	//  * @param {Image} params 
+	//  * @returns 
+	//  */
+	uploadImg:params => {
+		return http.post('/resource/upload_image_base64',params)
+	},
+	// /**
+	//  * 上传图片 转svg
+	//  * @param {Img} params 
+	//  * @returns 
+	//  */
+	uploadImgSvg:params => {
+		return http.post('/datamanage/chart_info/base64Upload',params)
+	},
+	/**
+	 * 新增图表分类
+	 * @param {ChartClassifyName} params 
+	 * @param {Level} params 
+	 * @param {ParentId} params 
+	 * @returns 
+	 */
+	addChartClassify: params => {
+		return http.post('/datamanage/chart_classify/add',params)
+	},
+	/**
+	 * 删除图表分类/图表
+	 * @param {ChartClassifyId} params 
+	 * @param {ChartInfoId} params 
+	 * @returns 
+	 */
+	delChartClassify: params => {
+		return http.post('/datamanage/chart_classify/delete',params)
+	},
+	/**
+	 * 删除图表检测
+	 * @param {ChartClassifyId} params 
+	 * @param {ChartInfoId} params 
+	 * @returns 
+	 */
+	delChartCheck: params => {
+		return http.post('/datamanage/chart_classify/delete/check',params)
+	},
+	/**
+	 * 修改图表分类
+	 * @param {ChartClassifyName} params 
+	 * @param {ChartClassifyId} params 
+	 * @returns 
+	 */
+	editChartClassify: params => {
+		return http.post('/datamanage/chart_classify/edit',params)
+	},
+	/**
+	 * 获取图表分类 截止到3级
+	 * @param {*} params 
+	 * @returns 
+	 */
+	chartClassify: params => {
+		return http.get('/datamanage/chart_classify/items',params)
+	},
+	/**
+	 * 获取图表分类树
+	 * @param {*} params 
+	 * @returns 
+	 */
+	chartTree: params => {
+		return http.get('/datamanage/chart_classify/list',params)
+	},
+
+	/**
+	 * 通过分类查找分类下面的图数据
+	 * @param  IsShowMe
+	 * @param ChartClassifyId
+	 */
+	getChartListForClassify:params=>{
+		return http.get('/datamanage/chart_classify/chart/list',params)
+	},
+
+	/**
+	 * 图表详情
+	 * @param {ChartInfoId } params 
+	 * @param {Calendar } params 
+	 * @param {DateType} params 
+	 * @param {StartDate} params 
+	 * @param {EndDate} params 
+	 * @returns 
+	 */
+	chartInfo: params => {
+		return http.get('/datamanage/chart_info/detail',params)
+	},
+	/**
+	 * 获取指标详情
+	 * @param {EdbInfoId} params 
+	 * @param {DateType} params  1:00年至今,2:10年至今,3:15年至今,4:21年至今,5:自定义时间
+	 * @param {StartDate} params 
+	 * @param {EndDate} params 
+	 * @param {EdbInfoType} params 1:标准指标,0:领先指标
+	 * @param {LeadValue} params 
+	 * @param {LeadUnit} params 
+	 */
+	edbinfoDetail: params => {
+		return http.get('/datamanage/chart_info/edb_info/detail',params)
+	},
+	/**
+	 * 图表指标模糊搜索接口
+	 * @param {KeyWord} params 
+	 * @returns 
+	 */
+	edbSearch: params => {
+		return http.get('/datamanage/chart_info/edb_info/search',params)
+	},
+	/**
+	 * 编辑图表
+	 * @param {ChartClassifyId } params 
+	 * @param {ChartInfoId } params 
+	 * @param {ChartName } params 
+	 * @returns 
+	 */
+	chartEdit: params => {
+		return http.post('/datamanage/chart_info/edit',params)
+	},
+	/**
+	 * 分类移动
+	 * @param {ClassifyId} 分类id 
+	 * @param {ParentClassifyId} 父级分类id
+	 * @param {PrevClassifyId} 上一个兄弟节点分类id
+	 * @returns 
+	 */
+	chartClassifyMove:params=>{
+		return http.post('/datamanage/chart_classify/move',params)
+	},
+	/**
+	 * 移动图表
+	 * @param {ChartClassifyId } params 
+	 * @param {ChartInfoId } params 
+	 * @returns 
+	 */
+	chartMove: params => {
+		return http.post('/datamanage/chart_info/move',params)
+	},
+	/**
+	 * 最新图表
+	 * @returns 
+	 */
+	chartNew: params => {
+		return http.get('/datamanage/chart_info/newest',params)
+	},
+	/**
+	 * 保存图表
+	 * @param {ChartClassifyId} params 
+	 * @param {ChartEdbInfoList} params 
+	 *  {
+      "ChartColor": "string",
+      "ChartStyle": "string",
+      "ChartWidth": 0,
+      "EdbInfoId": 0,
+      "EdbInfoType": 0,
+      "IsAxis": 0,
+      "IsOrder": 0,
+      "LeadUnit": "string",
+      "LeadValue": 0,
+      "MaxData": 0,
+      "MinData": 0
+    }
+	 *@param {ChartInfoId}
+		@returns 
+	 */
+	chartSave: params => {
+		return http.post('/datamanage/chart_info/save',params)
+	},
+	/**
+	 * 新增图表 弹窗形式
+	 * @param {ChartClassifyId} params
+	 * @param {ChartName} params
+	 * @param {ChartEdbInfoList} params
+	 * {
+	 * "ChartColor": "string",
+      "ChartStyle": "string",
+      "ChartWidth": 0,
+      "EdbInfoId": 0,
+      "EdbInfoType": 0,
+      "IsAxis": 0,
+      "IsOrder": true,
+      "LeadUnit": "string",
+      "LeadValue": 0,
+      "MaxData": 0,
+      "MinData": 0
+	 * }
+ 	 */
+	chartAdd: params => {
+		return http.post('/datamanage/chart_info/add',params)
+	},
+	/**
+	 * 编辑图表
+	 * @param {ChartClassifyId} params 
+	 * @param {ChartInfoId} params 
+	 * @param {ChartName} params 
+	 * @param {ChartEdbInfoList} params 
+	 * @returns 
+	 */
+	chartEdit: params => {
+		return http.post('/datamanage/chart_info/edit',params)
+	},
+	/**
+	 * 搜索图表
+	 * @param {KeyWord} params 
+	 * @returns 
+	 */
+	chartSearch: params => {
+		return http.get('/datamanage/chart_info/search',params)
+	},
+	/**
+	 * 图表刷新接口
+	 * @param {ChartInfoId} params 
+	 * @returns 
+	 */
+		chartRefresh: params => {
+			return http.get('/datamanage/chart_info/refresh',params)
+		},
+		/**
+		 * 设置图表图片
+		 * @param {ChartInfoId} params 
+		 * @param {ImageUrl} params 
+		 * @returns 
+		 */
+		setChartImage: params => {
+			return http.post('/datamanage/chart_info/image/set',params)
+		},
+		/**
+		 * 通过unicode获取图表信息
+		 * @param {UniqueCode} params 
+		 * @returns 
+		 */
+		getChartByCode: params => {
+			return http.get('/datamanage/chart_info/common/detail/from_unique_code',params)
+		},
+		/**
+		 * 多图表一键刷新
+		 * @param {ChartInfoCode} params 
+		 * @returns 
+		 */
+		reportRefresh: params => {
+			return http.post('/datamanage/chart_info/batch_refresh',params)
+		},
+		
+		/**
+		 * 图表另存为
+		 * @param {*} params 
+		 * @returns 
+		 * ChartInfoId ChartClassifyId ChartName
+		 */
+		saveChartOther: params => {
+			return http.post('/datamanage/chart_info/copy',params)
+		},
+
+
+		/* ================代码运算========================= */
+		/**
+		 * 新增代码运算指标
+		 * @param {*} params PythonCode EdbName Frequency Unit ClassifyId
+		 * @returns 
+		 */
+		addCountCode: params => {
+			return http.post('/datamanage/edb_info/python/add',params)
+		},
+
+		/**
+		 * 编辑代码运算指标
+		 * @param {*} params PythonCode EdbName Frequency Unit ClassifyId EdbInfoId
+		 * @returns 
+		 */
+		editCountCode: params => {
+			return http.post('/datamanage/edb_info/python/edit',params)
+		},
+
+		/**
+		 * 执行代码 
+		 * @param {*} params PythonCode
+		 */
+		runCode: params => {
+			return http.post('/datamanage/edb_info/python/exec',params)
+		},
+		
+		/**
+		 * py代码详情
+		 * @param {} params EdbInfoId
+		 * @returns 
+		 */
+		countCodeDetail: params => {
+			return http.get('/datamanage/edb_info/python/detail',params)
+		},
+
+		/**
+		 * 获取指标表结构
+		 * @param {} params EdbInfoId
+		 * @returns 
+		 */
+		edbSheetDetail: params => {
+			return http.get('/datamanage/edb_data/table/detail',params)
+		},
+
+		/**
+	 * IsShowMe  Keyword PageSize  CurrentIndex
+	 * @param {*} params 
+	 * @returns 
+	 */
+		chartSearchByEs: params => {
+			return http.get('/datamanage/chart_info/search_by_es',params)
+		},
+
+	/**
+	 * 编辑指标英文信息
+	 * @param {*} params EdbInfoId(指标ID) EdbNameEn(英文指标名称) UnitEn(英文单位)
+	 * @returns 
+	 */
+	edbInfoEditEn: params => {
+		return http.post('datamanage/edb_info/en/edit',params)
+	},
+
+	/**
+ * 编辑图表英文信息
+ * @param {*} params ChartInfoId(图表ID)  ChartNameEn(英文图表名称) 
+ * @param {*} params ChartEdbInfoList(指标数据)->{EdbInfoId(指标ID) EdbNameEn(英文指标名称) UnitEn(英文单位)}
+ * @returns 
+ */
+	chartInfoEditEn: params => {
+		return http.post('datamanage/chart_info/en/edit',params)
+	},
+
+	/**
+	 * ETA指标关联的图表列表
+	 * @param EdbInfoId
+	 * @param CurrentIndex
+	 */
+	edbRelationChartList:params=>{
+		return http.get('datamanage/edb_info/relation/chart_list',params)
+	},
+
+	/**
+	 * ETA指标引用的计算指标
+	 * @param EdbInfoId
+	 * @param CurrentIndex
+	 */
+	edbRelationComputerList:params=>{
+		return http.get('datamanage/edb_info/relation/edbinfo_list',params)
+	},
+
+	/**
+	 * 获取柱状图数据
+	 * EdbInfoIdList [] { EdbInfoId,Name }
+	 * DateList [] {
+	 * 	Type 1最新 2N天前  3固定
+	 * 	Date
+	 * 	Value
+	 * 	Color
+	 * }
+	 * Sort  { Sort DateIndex }
+	 */
+	getBarData: params => {
+		return http.post('/datamanage/chart_info/preview_bar',params)
+	},
+
+	/**
+	 * 数据调整指标 新增/编辑
+	 * @param {} params 
+	 * "EdbName,
+		"Frequency,
+		"Unit",
+		"ClassifyId",
+    "EdbInfoId",
+    "FromEdbInfoId",
+		"DataList
+	 * @returns 
+	 */
+	adjustEdbEdit: params => {
+		return http.post('/datamanage/edb_info/adjust/save',params)
+	},
+
+	/**
+	 * 截面散点图预览数据
+	 * @param {*} params 
+	 * ExtraConfig
+	 * {
+	 * 	"XName" "XNameEn" "XUnitName" "XUnitNameEn" "YName" "YNameEn" "YUnitName" "YUnitNameEn" "XMinValue" "XMaxValue" "YMinValue" "YMaxValue"
+	 * SeriesList [{
+	 * 	Name Color ShowLine ShowEquation ShowR
+	 *  EdbInfoList:[{
+	 * 	 "XEdbInfoId":100221,
+				"YEdbInfoId":100220,
+				"Name":"螺纹价格",
+				"NameEn":"Luo Wen",
+				"XDateType":1,
+				"XDate":"",
+				"XDateValue":0,
+				"YDateType":2,
+				"YDate":"",
+				"YDateValue":30,
+				"IsShow":true
+	 *  }]
+	 * }]
+	 * }
+	 * @returns 
+	 */
+	sectionScatterPreviewData: params => {
+		return http.post('/datamanage/chart_info/preview/time_section',params)
+	},
+
+	 /* 批量计算
+	 * @param {*} params 
+	 * CalculateId
+	 * CalculateInfo {
+	 * 	"ClassifyId": 341,
+			"EdbName": "PVC出口占比同比2",
+			"Formula": "1",
+			"Frequency": "月度",
+			"FromEdbInfoId": 101712,
+			"MoveFrequency": "天",
+			"MoveType": 1,
+			"Source": 6,
+			"Unit": "无"
+	 * }
+	 * @returns 
+	 */
+	batchCalculateTargetAdd: params => {
+		return http.post('/datamanage/edb_info/calculate/batch/save/batch',params)
+	},
+
+	/**
+	 * 获取计算指标与基础指标关联信息
+	 * @param EdbInfoId
+	 */
+	getEDBInfoCalculateMap:params=>{
+		return http.get('/datamanage/edb_info/calculate/mapping',params)
+	}
+
+}
+
+/* 我的图库 */
+const mychartInterface = {
+	/**
+	 * 公用图库列表
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @param {ChartClassifyId} params 
+	 * @param {KeyWord} params 
+	 */
+	publicList: params => {
+		return http.get('/my_chart/chart/list',params)
+	},
+	/**
+	 * 加入我的图库
+	 * @param {ChartInfoId} params 
+	 * @param {MyChartClassifyId} params 
+	 */
+	add: params => {
+		return http.post('/my_chart/add',params)
+	},
+	/**
+	 * 添加分类
+	 * @param {MyChartClassifyName} params 
+	 * @returns 
+	 */
+	addClassify: params => {
+		return http.post('/my_chart/classify/add',params)
+	},
+	/**
+	 * 删除分类
+	 * @param {MyChartClassifyId} params 
+	 * @returns 
+	 */
+	delClassify: params => {
+		return http.post('/my_chart/classify/delete',params)
+	},
+	/**
+	 * 编辑分类
+	 * @param {MyChartClassifyId} params 
+	 * @param {MyChartClassifyName} params 
+	 * @returns 
+	 */
+	editClassify: params => {
+		return http.post('/my_chart/classify/edit',params)
+	},
+	/**
+	 * 我的图库分类 
+	 * @param {*} params 
+	 * @returns 
+	 */
+	classifyList: params => {
+		return http.get('/my_chart/classify/list',params);
+	},
+	/**
+	 * 移出我的图库
+	 * @param {MyChartId} params 
+	 * @param {MyChartClassifyId} params 
+	 * @returns 
+	 */
+	del: params => {
+		return http.post('/my_chart/delete',params)
+	},
+	/**
+	 * 我的图库列表
+	 * @param {PageSize } params 
+	 * @param {CurrentIndex} params 
+	 * @param {MyChartClassifyId} params 
+	 * @returns 
+	 */
+	myList: params => {
+		return http.get('/my_chart/list',params);
+	},
+	/**
+	 * 移动
+	 * @param {MyChartId} params 
+	 * @param {MyChartClassifyId} params 
+	 * @param {PrevMyChartId} params 
+	 * @param {NextMyChartId} params 
+	 * @returns 
+	 */
+	move: params => {
+		return http.post('/my_chart/move',params)
+	},
+	/**
+	 * 图表详情 推荐图表列表
+	 * @param {ChartClassifyId} params 
+	 * @returns 
+	 */
+	recommendChart: params => {
+		return http.get('/my_chart/chart/recommend/list',params)
+	},
+	/**
+	 * 搜索
+	 * @param {KeyWord} params 
+	 * @returns 
+	 */
+	search: params => {
+		return http.get('/my_chart/search',params)
+	},
+	/**
+	 * 移动到
+	 * @param {MyChartClassifyId} params []
+	 * @param {MyChartId} params 
+	 * @param {CurrentMyChartClassifyId} params 
+	 */
+	moveChart: params => {
+		return http.post('/my_chart/edit',params)
+	},
+	/**
+	 * 拖动分类
+	 * @param {MyChartClassifyId} parmas 
+	 * @param {NextClassifyId} parmas 
+	 * @param {PrevClassifyId} parmas 
+	 * @returns 
+	 */
+	moveClassify: params => {
+		return http.post('/my_chart/classify/move',params)
+	},
+	/**
+	 * 公用分类
+	 * @param {*} params 
+	 * @returns 
+	 */
+	publicClassify: params => {
+		return http.get('/my_chart/classify/public_list',params)
+	},
+	/**
+	 * 设置分类是否可见
+	 * @param {IsPublic} params  0:own  1:public 
+	 * @param {MyChartClassifyId} params
+	 * @returns 
+	 */
+	setPublic: params => {
+		return http.post('/my_chart/classify/modify_public',params)
+	},
+	/**
+	 * 复制分类
+	 * @param {MyChartClassifyId} params 
+	 * @returns 
+	 */
+	copyclassify: params => {
+		return http.post('/my_chart/classify/copy',params)
+	},
+
+	/**
+	 * 我的图库中公共分类
+	 */
+	commonClassify:()=>{
+		return http.get('/my_chart/classify/company_public_list',{})
+	},
+	/**
+	 * 我的图库中公共分类
+	 */
+	commonClassifys:params=>{
+		return http.get('/my_chart/classify/company_public_list',params)
+	},
+	/**
+	 * 设置分类是否客户可见
+	 */
+	setClassifyAuthToUser:params=>{
+		return http.post('/my_chart/classify/modify_company_public',params)
+	},
+
+	/**
+	 * 获取当前图表所属分类
+	 * @param {ChartInfoId} params 
+	 * @returns 
+	 */
+	getChartInClassify: params => {
+		return http.get('/my_chart/get_mychart_classify_id_list',params)
+	},
+
+	/**
+	 * 复制图表到其他分类
+	 * @param {ChartInfoId} params 
+	 * @param {MyChartClassifyId} params []
+	 * @returns 
+	 */
+	copyMyChart: params => {
+		return http.post('/my_chart/add_to_classify',params)
+	},
+
+	/**
+	 * 图表搜素 es
+	 * @param {*} params Keyword  CurrentIndex 
+	 * @returns 
+	 */
+	mychartSearchByEs: params => {
+		return http.get('/my_chart/search_by_es',params)
+	}
+}
+
+export {
+	dataBaseInterface,
+	mychartInterface,
+}

+ 685 - 0
src/api/modules/chartRelevanceApi.js

@@ -0,0 +1,685 @@
+import http from "@/api/http.js"
+
+export default{
+    /**
+   * 获取分类
+   * @returns 
+   */
+  classifyList:  params =>{
+    return http.get('/correlation/chart_classify/list',params)
+  },
+
+  /**
+   * 新增分类
+   * @param {*} params  "ChartClassifyName": "分类1-2"
+   * @returns 
+   */
+  classifyAdd:  params =>{
+    return http.post('/correlation/chart_classify/add',params)
+  },
+
+  /**
+   * 编辑分类
+   * @param {*} params  ChartClassifyName ChartClassifyId
+   * @returns 
+   */
+  classifyEdit: params =>{
+    return http.post('/correlation/chart_classify/edit',params)
+  },
+
+  /**
+   * 删除分类检测
+   * @param {*} params ChartClassifyId
+   * @returns 
+   */
+  classifyDelCheck: params =>{
+    return  http.post('/correlation/chart_classify/delete/check',params)
+  },
+
+  /**
+   * 删除分类
+   * @param {*} params ChartClassifyId
+   * @returns 
+   */
+  classifyDel: params =>{
+    return  http.post('/correlation/chart_classify/delete',params)
+  },
+
+  /**
+   * 移动分类
+   * @param {*} params ClassifyId "PrevClassifyId":1, "NextClassifyId":2,
+   * @returns 
+   */
+  classifyMove: params => {
+    return http.post('/correlation/chart_classify/move',params)
+  },
+
+  /**
+   * 移动图表
+   * @param {*} params 
+   * @returns 
+   */
+  chartMove: params => {
+    return http.post('/correlation/chart_info/move',params)
+  },
+
+  /**
+   * 图表分类option
+   * @param {*} params 
+   * @returns 
+   */
+   classifyOne: params => {
+      return http.get('/correlation/chart_classify/items',params)
+    },
+
+  /**
+   * 相关性图表列表
+   * @param {*} params CurrentIndex PageSize ChartClassifyId Keyword IsShowMe
+   * @returns 
+   */
+   getChartList: params => {
+    return http.get('/correlation/chart_info/list',params)
+  },
+
+  /**
+   * 相关性图表详情
+   * @param {ChartInfoId} params 
+   * @returns 
+   */
+   chartDetail: params => {
+    return http.get('/correlation/chart_info/detail',params)
+  },
+
+
+  /**
+   * 预览相关性图
+   */
+  previewRelevanceChart:params=>{
+    return http.post('/correlation/chart_info/preview',params)
+  },
+
+  /**
+   * 保存相关性图
+   */
+  saveRelevanceChart:params=>{
+    return http.post('/correlation/chart_info/add',params)
+  },
+
+  /**
+   * 编辑
+   * @param {*} params 
+   * @returns 
+   */
+   editRelevanceChart:params=>{
+    return http.post('/correlation/chart_info/edit',params)
+  },
+
+  /**
+   * 刷新图表 
+   * @param {*} params ChartInfoId
+   * @returns 
+   */
+   refreshChart: params => {
+    return http.get('/correlation/chart_info/refresh',params)
+  },
+
+  /**
+   * 另存为
+   * @param {*} params ChartInfoId  ChartClassifyId  ChartName
+   * @returns 
+   */
+   saveOtherChart: params => {
+    return http.post('/correlation/chart_info/copy',params)
+  },
+
+  /**
+   * 编辑英文信息
+   * @param {*} params  ChartInfoId ChartNameEn UnitEn
+   * @returns 
+   */
+   editChartEn: params => {
+    return http.post('/correlation/chart_info/en/edit',params)
+  },
+
+  /**
+   * 搜索图表
+   * @param {*} params Keyword IsShowMe
+   * @returns 
+   */
+   searchChart: params => {
+    return http.get('/correlation/chart_info/search_by_es',params)
+  },
+
+  /* =============================================== */
+  /* 改动版 */
+
+  /**
+   * 关联性图表配置
+   * @param {*} params 
+   * {
+    "MultipleGraphConfigId": 1,
+    "EdbInfoIdA": 102651,
+    "EdbInfoIdB": 102646,
+    "Curve": {
+      "DateType": 1,
+      "StartDate": "2021-01-01",
+      "EndDate": "2023-01-01",
+      "LeftMin": 0,
+      "LeftMax": 100,
+      "RightMin": -10,
+      "RightMax": 300,
+      "IsOrder": false,
+      "EdbInfoType": true,
+      "LeadValue": 1,
+      "LeadUnit": "周"
+    },
+    "Correlation": {
+      "LeadValue": 6,
+      "LeadUnit": "周",
+      "CalculateValue": 10,
+      "CalculateUnit": "周度"
+    },
+    "RollingCorrelation": [
+      {
+        "LeadValue": 6,
+        "LeadUnit": "周",
+        "CalculateValue": 10,
+        "CalculateUnit": "周度"
+      }
+    ]
+  }
+   * @returns 
+   */
+  chartOptionsSet: params => {
+    return http.post('/datamanage/multiple_graph/config/save',params)
+  },
+
+  /**
+   * 预览数据
+   * @param {*} params 同配置参数
+   * @returns 
+   */
+  previewChartBatch: params => {
+    return http.post('/datamanage/multiple_graph/preview',params)
+  },
+
+  /**
+   * 保存图表
+   * @param {*} params 
+   * "MultipleGraphConfigId": 1, //配置ID,为0时,代表新增,大于0:代表编辑
+    "Source": 1, //来源,1:曲线图,2:相关性图;3:滚动相关性图1;4:滚动相关性图2;
+    "ChartName": "多图配置的曲线图", //图表名称
+    "ClassifyId": 243, //分类id
+    "EdbInfoIdA": 102563, //指标A的id
+    "EdbInfoIdB": 102561, //指标B的id
+    IsSaveAs
+   * @returns 
+   */
+  saveChart: params => {
+    return http.post('/datamanage/multiple_graph/chart/save',params)
+  },
+
+  /***
+   * 指标保存 另存
+   * "MultipleGraphConfigId": 1, //配置ID,为0时,代表新增,大于0:代表编辑
+    "Source": 3, //来源,1:曲线图,2:相关性图;3:滚动相关性图1;4:滚动相关性图2;
+    "EdbName": "多图配置的相关性指标",
+    "Frequency": "日度",
+    "Unit": "吨",
+    "ClassifyId": 373, //分类id
+    "EdbInfoIdA": 102563, //指标A的id
+    "EdbInfoIdB": 102561, //指标B的id
+    "IsSaveAs": false, //是否另存为,默认false
+   */
+  saveEdb: params => {
+    return http.post('/datamanage/multiple_graph/edb/save',params)
+  },
+
+  /**
+   * 获取配置详情
+   * @param {*UniqueCode} params 
+   * @returns 
+   */
+  getOptionByCode: params => {
+    return http.get('/datamanage/multiple_graph/config/detail',params)
+  },
+   
+  /**
+   * 预览曲线图
+   * @param {*} params 同配置参数
+   * @returns 
+   */
+  previewSplineChart: params => {
+    return http.post('/datamanage/multiple_graph/preview_cure',params)
+  },
+
+}
+
+/* 拟合方程曲线 */
+export const fittingEquationInterface = {
+  /**
+   * 分类列表
+   * @param {*} params 
+   * @returns 
+   */
+  classifyList: params => {
+    return http.get('/line_equation/chart_classify/list',params)
+  },
+
+  /**
+   * 分类添加
+   * @param {*} params ChartClassifyName
+   * @returns 
+   */
+  classifyAdd: params => {
+    return http.post('/line_equation/chart_classify/add',params)
+  },
+
+  /**
+   * 分类编辑
+   * @param {*} params ChartClassifyName ChartClassifyId
+   * @returns 
+   */
+  classifyEdit: params => {
+    return http.post('/line_equation/chart_classify/edit',params)
+  },
+
+  /**
+   * 删除监测
+   * @param {*} params ChartClassifyId
+   * @returns 
+   */
+  classifyDelCheck: params => {
+    return http.post('/line_equation/chart_classify/delete/check',params)
+  },
+
+  /**
+   * 删除
+   * @param {*} params ChartClassifyId
+   * @returns 
+   */
+  classifyDel: params => {
+    return http.post('/line_equation/chart_classify/delete',params)
+  },
+
+  /**
+   * 分类移动
+   * @param {*} params 
+   * "ClassifyId": 269,
+    "PrevClassifyId": 0,
+    "NextClassifyId": 227,
+   * @returns 
+   */
+  classifyMove: params => {
+    return http.post('/line_equation/chart_classify/move',params)
+  },
+
+  /**
+   * 纯分类
+   * @param {*} params 
+   * @returns 
+   */
+  classifyOne: params => {
+    return http.get('/line_equation/chart_classify/items',params)
+  },
+
+  /**预览
+   * "DateType": 2,
+    "StartDate": "2022-01-31",
+    "EndDate": "2023-02-14",
+    "XEdbInfoIdList":[102563,102565],
+    "YEdbInfoIdList":[102566,102568],
+   * @param {*} params 
+   * @returns 
+   */
+  previewData: params => {
+    return http.post('/line_equation/chart_info/preview',params)
+  },
+
+  /**
+   * 新增/编辑图表
+   * @param {*} params 
+   * {
+      "MultipleGraphConfigId":241,
+      "BatchAddChart":[
+        {
+          "Source":5,//5:斜率图;6:截距图;7:相关性图
+          "ChartClassifyId":270,
+          "ChartName":"斜率图3",
+        },{
+          "Source":6,//5:斜率图;6:截距图;7:相关性图
+          "ChartClassifyId":270,
+          "ChartName":"截距图3",
+        },{
+          "Source":7,//5:斜率图;6:截距图;7:相关性图
+          "ChartClassifyId":270,
+          "ChartName":"相关性图3",
+        }
+      ],
+      "ExtraConfig": {
+        "DateType": 2,
+        "StartDate": "2022-01-01",
+        "EndDate": "2023-04-14",
+        "XEdbInfoIdList": [],
+        "YEdbInfoIdList": [],
+      }
+    }
+   * @returns 
+   */
+  chartEdit: params => {
+    return http.post('/line_equation/chart_info/save',params)
+  },
+  
+  /**
+   * 获取图表配置  UniqueCode
+   * @param {*} params 
+   * @returns 
+   */
+  getConfigSetting: params => {
+    return http.get('/line_equation/multiple_graph/config/detail',params)
+  },
+
+  /**
+   * 图表拖动
+   * @param {*} params 
+   * "ChartInfoId": 844,
+    "PrevChartInfoId": 0,
+    "NextChartInfoId": 839,
+    "ChartClassifyId": 270
+   * @returns 
+   */
+  chartMove: params => {
+    return http.post('/line_equation/chart_info/move',params)
+  },
+
+  /**
+   * 获取图表列表
+   * @param {*} params 
+   * CurrentIndex PageSize ChartClassifyId Keyword IsShowMe
+   * @returns 
+   */
+  getChartList: params => {
+    return http.get('/line_equation/chart_info/list',params)
+  },
+
+  /**
+   * 编辑页图表详情
+   * @param {*} params  ChartInfoId
+   * @returns 
+   */
+  chartDetail: params => {
+    return http.get('/line_equation/chart_info/detail',params)
+  },
+
+  /**
+   * 图表另存为
+   * @param {*} params 
+   * 	"ChartInfoId": 843,
+    "ChartClassifyId": 270,
+    "ChartName": "截距图3(复制出来的)"
+   * @returns 
+   */
+  saveOtherChart: params => {
+    return http.post('/line_equation/chart_info/copy',params)
+  },
+
+  enInfoEdit: params => {
+    return http.post('')
+  },
+
+  /**
+   * 图表搜索
+   * @param {*} params Keyword IsShowMe CurrentIndex
+   * @returns 
+   */
+  searchChart: params => {
+    return http.get('/line_equation/chart_info/search_by_es',params)
+  },
+
+  /**
+   * 刷新图表 
+   * @param {*} params ChartInfoId
+   * @returns 
+   */
+  refreshChart: params => {
+    return http.get('/line_equation/chart_info/refresh',params)
+  },
+
+  /**
+   * 设置英文
+   * @param {*} params  ChartInfoId ChartNameEn
+   * @returns 
+   */
+  editChartEn: params => {
+    return http.post('/line_equation/chart_info/en/edit',params)
+  }
+}
+
+/* 统计特征曲线 */
+export const statisticFeatureInterface = {
+  /**
+   * 分类列表
+   * @param {*} params 
+   * @returns 
+   */
+  classifyList: params => {
+    return http.get('/line_feature/chart_classify/list',params)
+  },
+
+  /**
+   * 分类添加
+   * @param {*} params ChartClassifyName
+   * @returns 
+   */
+  classifyAdd: params => {
+    return http.post('/line_feature/chart_classify/add',params)
+  },
+
+  /**
+   * 分类编辑
+   * @param {*} params ChartClassifyName ChartClassifyId
+   * @returns 
+   */
+  classifyEdit: params => {
+    return http.post('/line_feature/chart_classify/edit',params)
+  },
+
+  /**
+   * 删除监测
+   * @param {*} params ChartClassifyId
+   * @returns 
+   */
+  classifyDelCheck: params => {
+    return http.post('/line_feature/chart_classify/delete/check',params)
+  },
+
+  /**
+   * 删除
+   * @param {*} params ChartClassifyId
+   * @returns 
+   */
+  classifyDel: params => {
+    return http.post('/line_feature/chart_classify/delete',params)
+  },
+
+  /**
+   * 分类移动
+   * @param {*} params 
+   * "ClassifyId": 269,
+    "PrevClassifyId": 0,
+    "NextClassifyId": 227,
+   * @returns 
+   */
+  classifyMove: params => {
+    return http.post('/line_feature/chart_classify/move',params)
+  },
+
+  /**
+   * 纯分类
+   * @param {*} params 
+   * @returns 
+   */
+  classifyOne: params => {
+    return http.get('/line_feature/chart_classify/items',params)
+  },
+
+  /**
+   * 图表拖动
+   * @param {*} params 
+   * "ChartInfoId": 844,
+    "PrevChartInfoId": 0,
+    "NextChartInfoId": 839,
+    "ChartClassifyId": 270
+   * @returns 
+   */
+    chartMove: params => {
+      return http.post('/line_feature/chart_info/move',params)
+    },
+  
+    /**
+     * 获取图表列表
+     * @param {*} params 
+     * CurrentIndex PageSize ChartClassifyId Keyword IsShowMe
+     * @returns 
+     */
+    getChartList: params => {
+      return http.get('/line_feature/chart_info/list',params)
+    },
+  
+    /**
+     * 图表详情
+     * @param {*} params  ChartInfoId
+     * @returns 
+     */
+    chartDetail: params => {
+      return http.get('/line_feature/chart_info/detail',params)
+    },
+
+  /**预览
+   * {
+    "EdbInfoId": 102563,
+    "Curve": {
+      "DateType": 6,
+      "StartDate": "2023-11-01",
+      "EndDate": "2023-05-01",
+      "LeftMin": 0,
+      "LeftMax": 100,
+    },
+    "StandardDeviation": {
+      "CalculateValue": 30
+    },
+    "Percentile": {
+      "CalculateValue": 30,
+      "CalculateUnit":"天"
+    },
+    "FrequencyDistribution":{
+      "DateType": 6,
+      "StartDate": "2023-11-01",
+      "EndDate": "2023-05-01",
+      "FrequencyValue": 10,
+    }
+  }
+   * @param {*} params 
+   * @returns 
+   */
+  previewChartBatch: params => {
+    return http.post('/line_feature/preview',params)
+  },
+  /**
+   * 保存配置
+   * @param {*} params 参数同预览
+   * @returns 
+   */
+  chartOptionsSet: params => {
+    return http.post('/line_feature/config/save',params)
+  },
+  
+  /**
+   * 获取图表配置  UniqueCode
+   * @param {*} params 
+   * @returns 
+   */
+  getOptionByCode: params => {
+    return http.get('/line_feature/config/detail',params)
+  },
+
+  /**
+   * 图表另存为
+   * @param {*} params 
+   * 	"ChartInfoId": 843,
+    "ChartClassifyId": 270,
+    "ChartName": "截距图3(复制出来的)"
+   * @returns 
+   */
+  saveOtherChart: params => {
+    return http.post('/line_feature/chart_info/copy',params)
+  },
+
+  /**
+   * 图表搜索
+   * @param {*} params Keyword IsShowMe CurrentIndex
+   * @returns 
+   */
+  searchChart: params => {
+    return http.get('/line_feature/chart_info/search_by_es',params)
+  },
+
+  /**
+   * 刷新图表 
+   * @param {*} params ChartInfoId
+   * @returns 
+   */
+  refreshChart: params => {
+    return http.get('/line_feature/chart_info/refresh',params)
+  },
+
+  /**
+   * 设置英文
+   * @param {*} params  ChartInfoId ChartNameEn
+   * @returns 
+   */
+  editChartEn: params => {
+    return http.post('/line_feature/chart_info/en/edit',params)
+  },
+
+    /**
+   * 保存图表
+   * @param {*} params 
+   * "MultipleGraphConfigId": 1, //配置ID,为0时,代表新增,大于0:代表编辑
+    "Source": 1, //来源,1:曲线图,8:标准差;9:百分位图;10:频率分布图;
+    "ChartName": "多图配置的曲线图", //图表名称
+    "ClassifyId": 243, //分类id
+    "EdbInfoIdA": 102563, //指标A的id
+    "EdbInfoIdB": 102561, //指标B的id
+    IsSaveAs
+   * @returns 
+   */
+    saveChart: params => {
+      return http.post('/line_feature/chart/save',params)
+    },
+  
+    /***
+     * 指标保存 另存
+     * "MultipleGraphConfigId": 1, //配置ID,为0时,代表新增,大于0:代表编辑
+      "Source": 3, //来源,1:曲线图,8:标准差;9:百分位图;10:频率分布图;
+      "EdbName": "多图配置的相关性指标",
+      "Frequency": "日度",
+      "Unit": "吨",
+      "ClassifyId": 373, //分类id
+      "EdbInfoIdA": 102563, //指标A的id
+      "EdbInfoIdB": 102561, //指标B的id
+      "IsSaveAs": false, //是否另存为,默认false
+     */
+    saveEdb: params => {
+      return http.post('/line_feature/edb/save',params)
+    },
+
+    /**
+     * 只获取曲线图数据
+     * @param {*} params 
+     * @returns 
+     */
+    previewSpline: params => {
+      return http.post('/line_feature/preview_cure',params)
+    }
+}

+ 17 - 0
src/api/modules/classifyApi.js

@@ -0,0 +1,17 @@
+import http from "@/api/http.js"
+
+/* 分类权限 */
+export const classifyPermissionInterface={
+    /**
+	 * 获取分类权限列表
+	 */
+    classifyPermissionList:params=>{
+	    return http.get('classify/permission_list',params)
+	},
+    /**
+	 * 编辑分类权限
+	 */
+     editClassifyPermission:params=>{
+	    return http.post('/classify/permission/edit',params)
+	},
+}

+ 55 - 0
src/api/modules/classifyEnApi.js

@@ -0,0 +1,55 @@
+// 英文分类
+import http from "@/api/http.js"
+
+/**
+ * 英文分类
+ * @param {*} params CurrentIndex PageSize KeyWord
+ * @returns 
+ */
+export const classifyList = params => {
+  return http.get('/english_report/classify/list',params)
+}
+
+/**
+ * 新增分类
+ * @param {*} params ClassifyName ParentId Sort
+ * @returns 
+ */
+export const classifyAdd = params => {
+  return http.get('/english_report/classify/add',params)
+}
+
+/**
+ * 编辑分类
+ * @param {*} params ClassifyName ParentId Sort ClassifyId
+ * @returns 
+ */
+export const classifyEdit = params => {
+  return http.get('/english_report/classify/edit',params)
+}
+
+/**
+ * 删除分类
+ * @param {*} params ClassifyId  ParentId
+ * @returns 
+ */
+export const classifyDel = params => {
+  return http.get('/english_report/classify/delete',params)
+}
+
+/**
+ * 一级分类
+ * @param {*} params CurrentIndex  PageSize
+ * @returns 
+ */
+export const classifyOne = params => {
+  return http.get('/english_report/classify/first/list',params)
+}
+
+/**
+ * 英文分类权限配置
+ */
+export const setClassifyVariety=params=>{
+  return http.post('/english_classify/permission/edit',params)
+}
+

+ 110 - 0
src/api/modules/cloudDisk.js

@@ -0,0 +1,110 @@
+import http from "@/api/http.js"
+
+/* 共享网盘 */
+
+export default {
+	/**
+	 * 文件目录列表
+	 * @param params.MenuId 文件Id 
+	 * @param params.Keyword 关键字
+	 * @param params.SortType 排序方式: 0-默认; 1-创建时间倒序; 2-创建时间正序
+	 * @returns 
+	 */
+	filelist: params => {
+		return http.get('/cloud_disk/list',params)
+	},
+  /**
+	 * 文件目录树状数据
+	 * @returns 
+	 */
+	fileTreeList: () => {
+		return http.get('/cloud_disk/menu/tree')
+	},
+  /**
+	 * 新建文件夹
+	 * @param params.ParentId 父级目录ID,0为顶级目录
+	 * @param params.MenuName 文件夹名称
+	 * @returns 
+  */
+	addFolder: params => {
+		return http.post('/cloud_disk/menu/create',params)
+	},
+  /**
+	 * 检验文件是否重命
+	 * @param params.MenuId 目录ID
+	 * @param params.FileNames 文件名称数组(包含后缀名)
+	 * @returns 
+  */
+	checkFileNamesIsRepeat: params => {
+		return http.post('/cloud_disk/resource/check_repeat',params)
+	},
+  /**
+	 * 上传文件
+	 * @param params.MenuId 目录ID - formData
+	 * @param params.file 文件 - formData
+	 * @returns 
+  */
+	uploadFile: params => {
+		return http.post('/cloud_disk/resource/upload',params)
+	},
+  // /**
+	//  * 下载文件
+	//  * @param params.MenuId 目录ID
+	//  * @returns 
+	//  */
+	// downloadFileApi: (params) => {
+	// 	return http.get('/cloud_disk/menu/download',params,'blob')
+	// },
+	/**
+ * 获取当前目录下的所有文件路径和文件名称
+ * @param params.MenuId 目录ID
+ * @returns 
+ */
+	getFilesByMenuId: (params) => {
+		return http.get('/cloud_disk/menu/resources',params)
+	},
+  /**
+	 * 文件夹重命名
+	 * @param params.MenuId 目录ID
+	 * @param params.MenuName 文件夹名称
+	 * @returns 
+  */
+	renameFolder: params => {
+		return http.post('/cloud_disk/menu/rename',params)
+	},
+  /**
+	 * 文件重命名
+	 * @param params.ResourceId 文件ID
+	 * @param params.ResourceName 文件名称
+	 * @returns 
+  */
+	renameFile: params => {
+		return http.post('/cloud_disk/resource/rename',params)
+	},
+    /**
+	 * 删除文件夹
+	 * @param params.MenuId 目录ID
+	 * @returns 
+  */
+	removeFolder: params => {
+		return http.post('/cloud_disk/menu/delete',params)
+	},
+	/**
+	 * 批量删除
+	 * @param params.MenuId 目录ID - number
+	 * @param params.MenuIds 要删除的目录ID - string [].join(',')
+	 * @param params.ResourceIds 要删除文件ID - string [].join(',')
+	 * @returns 
+  */
+	removeFolderBatch: params => {
+		return http.post('/cloud_disk/batch_delete',params)
+	},
+  /**
+	 * 删除文件
+	 * @param params.ResourceId 文件ID
+	 * @returns 
+  */
+	removeFile: params => {
+		return http.post('/cloud_disk/resource/delete',params)
+	}
+}

+ 235 - 0
src/api/modules/contractApi.js

@@ -0,0 +1,235 @@
+import http from "@/api/http.js";
+
+/* 合同管理模块 */
+const contractInterface={
+	// 销售更新合同附件
+	updateContractFile:params=>{
+		return http.post('/contract/update_file',params)
+	},
+
+	/**
+	 * 上传回签附件
+	 */
+	uploadCheckFile:params=>{
+		return http.post('/contract/upload_check_back_file',params)
+	},
+
+	/**
+	 * 上传解除协议
+	 */
+	 uploadRescindFile:params=>{
+		return http.post('/contract/upload_rescind_file',params)
+	},
+
+	/**
+	 * 未提交时的合同下载
+	 */
+	downloadTemContract:params=>{
+		return http.get('/contract/downLoad/tmpContract',params)
+	},
+
+	/** 
+	 * 获取服务套餐列表
+	 * ProductId(可选) 传0或者不传为当前账号权限,1 代表是:ficc;2 代表是:权益
+	 */
+	getServiceList:params=>{
+		return http.get('/contract/service/template/list',params)
+	},
+
+	/** 
+	 * 获取小套餐中权限选项数据
+	 * CompanyType	客户类型:传空字符串或者不传为全部,’ficc’,’权益’
+	 */
+	getPermissionList:params=>{
+		return http.get('/custom/contract_permission/list',params)
+	},
+
+	/** 
+	 * 合同列表
+	 * ContractType			合同类型,枚举值:’新签合同’,’续约合同’,’补充协议’
+	 * ContractStatus		合同状态,枚举值:’待提交’,’待审批’,’已撤回’,’已审批’,’已驳回’,’已作废’
+	 * ProductId			客户类型:传0或者不传为当前账号权限,1 代表是:ficc;2 代表是:权益
+	 * ModifyStartTime		服务更新时间的选择开始时间,格式:2021-05-23 00:00:00
+	 * ModifyEndTime		服务更新时间的选择结束时间,格式:2021-05-26 23:59:59
+	 * SellerId				选择的销售id
+	 * Keyword				搜索关键字
+	 */
+	getContractList:params=>{
+		return http.get('/contract/list',params)
+	},
+
+	/** 
+	 * 合同详情
+	 * ContractId 	合同id
+	 */
+	getContractDetail:params=>{
+		return http.get('/contract/detail',params)
+	},
+
+	/** 
+	 * 新增合同
+	 * 如果是复制模板 则传 SourceId 复制的合同的id
+	 * ContractType		合同类型,枚举值:’新签合同’,’续约合同’,’补充协议’
+	 * StartDate		开始时间	2021-05-24
+	 * EndDate			结束时间	2022-05-24
+	 * OriginalPrice	合同金额	120000
+	 * Price			优惠后金额
+	 * PayRemark		付款方式说明
+	 * CompanyName		公司名称
+	 * CreditCode		社会信用码
+	 * Province			省
+	 * City				市
+	 * Address			详细地址
+	 * Fax				传真
+	 * Phone			电话
+	 * Postcode			邮编
+	 * Remark			补充内容
+	 * TemplateId		合同模板 ficc 1 权益 2
+	 * Service			服务套餐
+	 * IsAudit			false  存草稿  true 直接提交发起审批
+	 */
+	addContract:params=>{
+		return http.post('/contract/add',params)
+	},
+
+	/** 
+	 * 编辑合同
+	 * ReAudit		修改合同并发起审批  false  存草稿  true 直接提交发起审批
+	 */
+	editContract:params=>{
+		return http.post('/contract/edit',{ReAudit:true,...params})
+	},
+
+	/** 
+	 * 合同模板
+	 */
+	getContractTemplate:()=>{
+		return http.get('/contract/template/list',{})
+	},
+
+	/** 
+	 * 合同操作记录
+	 * ContractId 	合同id编号
+	 */
+	getContractOperationList:params=>{
+		return http.get('/contract/operation/list',params)
+	},
+
+	/** 
+	 * 提交申请
+	 * ContractId 	合同id编号
+	 */
+	applyContract:params=>{
+		return http.get('/contract/approval/apply',params)
+	},
+
+	/** 
+	 * 撤回申请
+	 * ContractApprovalRecordId	审批流id编号
+	 * ContractId				合同id编号
+	 */
+	cancelApplyContract:params=>{
+		return http.get('/contract/approval/cancelApply',params)
+	},
+	
+	/** 
+	 * 审批列表
+	 * ContractType			合同类型,枚举值:’新签合同’,’续约合同’,’补充协议’
+	 * Status				合同状态,枚举值:’待审批’,’已审批’,’已驳回’,’已撤回’
+	 * ProductId			客户类型:传0或者不传为当前账号权限,1 代表是:ficc;2 代表是:权益
+	 * SellerId				选择的销售id
+	 * Keyword				搜索关键字
+	 */
+	getApprovalList:params=>{
+		return http.get('/contract/approval/list',params)
+	},
+
+	/** 
+	 * 获取所属销售列表
+	 */
+	getSellerList:()=>{
+		// return http.get('/custom/seller/check/list',{})
+		return http.get('/custom/seller/check/listV2',{})
+	},
+
+	/** 
+	 * 审批人同意审批
+	 * ContractApprovalRecordId			审批流id
+	 * NextApproval						是否需要下级批准,预留字段,一期用不到,二期加入合规审批流程的时候,合规审批操作后可能会用到
+	 * NextApprovalUserId				是否指定下级审批人,预留字段,一期用不到,二期加入合规审批流程的时候,合规审批操作后可能会用到
+	 * Remark							驳回理由
+	 */
+	contractApplyApproval:params=>{
+		return http.post('/contract/approval/approved',params)
+	},
+
+	/** 
+	 * 审批人拒绝审批
+	 * ContractApprovalRecordId			审批流id
+	 * Remark							驳回理由
+	 */
+	 contractApplyReject:params=>{
+		return http.post('/contract/approval/reject',params)
+	},
+
+	/** 
+	 * 删除合同
+	 * ContractId			合同id编号
+	 */
+	contractDelete:params=>{
+		return http.get('/contract/delete',params)
+	},
+
+	/** 
+	 * 作废合同
+	 * ContractId			合同id编号
+	 */
+	contractInvalid:params=>{
+		return http.get('/contract/invalid',params)
+	},
+
+	/**
+	 * 已有合同的预览合同
+	 * ContractId			合同id编号
+	 */
+	previewContractById:params=>{
+		return http.get('/contract/previewByContractId',params)
+	},
+
+	/** 
+	 * 新增合同时的预览
+	 */
+	previewContract:params=>{
+		return http.post('/contract/preview',params)
+	},
+
+	// 付款渠道
+	getPayChannel:params=>{
+		return http.get('/contract/pay_channel/list',params)
+	},
+
+	// 业务合同客户名称列表接口
+	getBusinessContractCompanyNameList:params=>{
+		return http.get('/contract/business_contract/company_name/list/',params)
+	},
+	// 根据客户名称获取所有已签回的业务合同列表接口
+	getBusinessContractList:params=>{
+		return http.get('/contract/business_contract/list/',params)
+	},
+
+	// 新增合同时根据信用码确定合同类型
+	getContractTypeByCode:params=>{
+		return http.get('/custom/detail_by_credit_code',params)
+	},
+	//获取历史合同
+	getHistoryContract:params=>{
+		return http.get('/custom/company/last_contract/detail/withoutDate',params)
+	}
+
+
+
+}
+
+export {
+	contractInterface
+}

+ 1209 - 0
src/api/modules/crmApi.js

@@ -0,0 +1,1209 @@
+import http from "@/api/http.js";
+
+/* 客户管理模块 */
+const customInterence = {
+	// 销售今日待办
+	sellerTodayList:params=>{
+		return http.get('/custom/getTryOutCompanyList',params)
+	},
+	// 销售待办填写续约说明
+	sellerTodayListRemark:params=>{
+		return http.post('/custom/editTryOutCompanyReason',params)
+	},
+	//销售代办中历史记录
+	sellerTodayHistoryList:params=>{
+		return http.get('/custom/renewReasonList',params)
+	},
+  //累计试用天数详情
+  tryOutDeail:params=>{
+    return http.get("/custom/company/tryOutDayList",params)
+  },
+
+  /* 
+    关闭客户
+    CompanyId
+    Remark
+  */
+  closeCustom:params=>{
+      return http.post('/custom/close',params)
+  },
+  /**
+   * 关闭客户转流失
+   * CompanyId
+   */
+  turnLose:params=>{
+    return http.post('/custom/close2loss',params)
+  },
+
+  // 客户系统合同搜索
+  contractSearch: (params) => {
+    return http.get("/custom/system_contract/list", params);
+  },
+  // 系统合同详情
+  sysContractDetail: (params) => {
+    return http.get("/custom/system_contract/detail", params);
+  },
+  // 通过系统合同申请转正/服务更新接口
+  sysCustomeApply: (params) => {
+    return http.post("/custom/apply/systemContract", params);
+  },
+
+  /**
+   * 获取客户大于今天的最后一份有效合同详情
+   * CompanyId
+   */
+  lastContractInfo: (params) => {
+    return http.get("/custom/company/last_contract/detail", params);
+  },
+
+  //补全客户信息
+  /**
+   * City
+   * CompanyId	客户id
+   * CompanyName
+   * CreditCode
+   * IndustryId	所属行业id
+   * IndustryName
+   * Province
+   * Source		来源
+   */
+  completeInfo: (params) => {
+    return http.post("/custom/company_info/edit", params);
+  },
+
+  //获取客户名下联系人数量(根据当前账号角色区分)
+  //CompanyId 客户id
+  companyUserTotal: (params) => {
+    return http.get("/custom/company_user/total", params);
+  },
+
+  //获取客户申请转正的合同类型
+  applyTurnContractType: (params) => {
+    return http.get("/custom/apply/contract/getApplyTurnContractType", params);
+  },
+
+  //客户来源
+  customerSourceList: (params) => {
+    return http.get("/custom/getCompanySourceList", params);
+  },
+
+  // 获取客户名下所有销售列表
+  companySellerList: (params) => {
+    return http.get("/custom/getCompanySellerList", params);
+  },
+  // 移动联系人
+  moveCustom: (params) => {
+    return http.post("/custom/user/move", params);
+  },
+
+  /* 上传图片接口 file  */
+  upload: (params) => {
+    return http.post("/resource/image/upload", params);
+  },
+  /* 代办消息列表 */
+  noticeList: (params) => {
+    return http.get("/custom/message/listV2", params);
+  },
+  /* 消息已读接口 Id */
+  readNotice: (params) => {
+    return http.post("/custom/message/read", params);
+  },
+  /* 客户列表 
+		PageSize * integer
+		CurrentIndex * integer
+		Status *string 状态:’传空字符串或者不传为全部’,’试用’,’永续’,’冻结’,’流失’,’正式’
+		CompanyType *string 客户类型:传空字符串或者不传为全部,’ficc’,’权益’
+		IndustryId *integer
+		AdminId string 销售id,多个用英文逗号隔开,空字符串为全部
+		ChartPermissionIds *string 品种id,多个用英文逗号分开,空字符串为全部
+		StartDate *
+		EndDate *
+		KeyWord * 搜索关键词
+		TryStage  试用子标签 0全部、1未分类、2 推进、3 跟踪、4 预备
+	*/
+  customList: (params) => {
+    return http.get("/custom/list", params);
+  },
+  /* 获取指定权限的销售列表 */
+  getSale: (params) => {
+    // return http.get('/custom/seller/check/list',params)
+    return http.get("/custom/seller/check/listV2", params);
+  },
+  /* 客户详情
+		CompanyId 
+	*/
+  customDetail: (params) => {
+    return http.get("/custom/detail", params);
+  },
+  /* 新增客户
+		Province:	string
+		City:string
+		省市
+		CompanyCode:	string
+		客户编码
+		CompanyName:	string
+		客户名称
+		CompanyType:	string
+		客户类型,ficc,权益
+		CreditCode:	string
+		社会统一信用码
+		IndustryId:	integer ($int64)
+		所属行业id
+		PermissionIds:	string
+		权限id,多个用英文逗号隔开
+		Reasons:	string
+		新增理由
+		SellsId:	integer ($int64)
+		销售员id
+		Source:	string
+		来源
+		Status:	string
+		客户状态,试用,永续
+	*/
+  customAdd: (params) => {
+    return http.post("/custom/add", params);
+  },
+  /* 编辑客户
+	 	"City": "string",
+		"CompanyId": 0,
+		"CompanyName": "string",
+		"CreditCode": "string",
+		"Products": [
+			{
+				"CompanyProductId": 0,
+				"CompanyType": "string",
+				"IndustryId": 0,
+				"IndustryName": "string",
+				"PermissionIds": "string",
+				"Reasons": "string",
+				"SellsId": 0,
+				"Source": "string",
+				"Status": "string"
+			}
+		],
+		"Province": "string"
+	 */
+  customEdit: (params) => {
+    return http.post("/custom/edit", params);
+  },
+  /* 删除客户  CompanyId*/
+  customDel: (params) => {
+    return http.post("/custom/delete", params);
+  },
+  /* 新增编辑客户名称检索  KeyWord*/
+  customSea: (params) => {
+    return http.get("/custom/fuzzy/search", params);
+  },
+  /* 获取销售接口 */
+  /**
+   * 
+   * @param {
+   * SellerType - 销售类型 - 0:所有; 1:FICC; 2:权益
+   * } params 
+   * @returns 
+   */
+  saleslist: (params) => {
+    return http.get("/custom/seller/list", params);
+  },
+  /* 联系人列表
+		PageSize
+		CurrentIndex
+		CompanyId *integer
+		KeyWord
+	*/
+  concactList: (params) => {
+    return http.get("/custom/user/list", params);
+  },
+  /* 新增联系人
+		DepartmentName
+		BusinessCardUrl:	string名片地址
+		CompanyId:	integer ($int64)客户id
+		Email:	string邮箱
+		IsMaker:	integer ($int64) 是否决策人,1:是,0:否
+		MobileOne:	string手机号1
+		MobileTwo:	string手机号2
+		Position:	string职位
+		RealName:	string姓名
+		Sex:	integer ($int64)用户性别,1为男性,2为女性
+	*/
+  concactAdd: (params) => {
+    return http.post("/custom/user/add", params);
+  },
+  /* 删除联系人  UserId int*/
+  concactDel: (params) => {
+    return http.post("/custom/user/delete", params);
+  },
+  /* 编辑联系人
+		DepartmentName
+		"BusinessCardUrl": "string",
+		"CompanyId": 0,
+		"Email": "string",
+		"IsMaker": 0,
+		"MobileOne": "string",
+		"MobileTwo": "string",
+		"Position": "string",
+		"RealName": "string",
+		"Sex": 0,
+		"UserId": 0
+	 */
+  concactEdit: (params) => {
+    return http.post("/custom/user/edit", params);
+  },
+  /* 获取权限基本信息 */
+  authList: (params) => {
+    return http.get("/custom/permission/list", params);
+  },
+  /* 查看权限  CompanyId */
+  lookauth: (params) => {
+    return http.get("/custom/permission/look", params);
+  },
+  /* 根据客户类型获取行业列表接口 
+		Classify string
+	*/
+  getindustry: (params) => {
+    return http.get("/custom/industry/list", params);
+  },
+  /* 
+		品种列表 客户列表筛选
+
+	*/
+  getvariety: (params) => {
+    return http.get("/custom/permission/variety", params);
+  },
+
+  /* 客户检索列表 
+		KeyWord 
+	*/
+  searchList: (params) => {
+    return http.get("/custom/search/list", params);
+  },
+
+  /* 潜在用户列表
+		PageSize *	每页数据条数
+		CurrentIndex *
+		ApplyMethod *	int 申请方式,0:全部,1:未申请,2:已付费客户申请试用,3:非客户申请试用
+		KeyWord *
+	*/
+  potentialList: (params) => {
+    return http.get("/custom/potential/user/list", params);
+  },
+  /* 获取试用用户列表 */
+  trialList: (params) => {
+    console.log(params);
+    return http.get("/custom/official/user/list", params);
+    // return http.get('/api/adminapi/custom/official/user/list?PageSize=10&CurrentIndex=1&SourceType=中文官网', params)
+  },
+  /* 试用用户确认已处理接口 */
+  trialStatus: (params) => {
+    console.log(params);
+    return http.post("/custom/official/user/confirm", params);
+  },
+  /* 搜索公司 KeyWord  */
+  companySearch: (params) => {
+    return http.get("/custom/potential/company/search", params);
+  },
+  /* 搜索公司qcc KeyWord  */
+  companyQccSearch: (params) => {
+    return http.get("/custom/potential/company/qccSearch", params);
+  },
+  /* 检查公司名称或是信用码 CompanyName CreditCode */
+  checkCompany: (params) => {
+    return http.get("/custom/check/companyInfo", params);
+  },
+  /* 检查公司名称或是信用码 CompanyName CreditCode */
+  checkCompanyInfo: (params) => {
+    return http.get("/custom/check/RepeatCompanyInfo", params);
+  },
+  /* 移动潜在用户
+		"BusinessCardUrl":string名片地址
+		"CompanyId": int,
+		"DepartmentName":string联系人部门
+		"Email": "string",
+		"IsMaker":int是否决策人,1:是,0:否
+		"Mobile": "string",
+		"Position":	string职位
+		"RegionType":string 区域,枚举值:国内、海外
+		"RealName": "string",
+		"Remark": "string",
+		"SellerId":int 需要移动到的销售id
+		"Sex":int 用户性别,1为男性,2为女性
+		"UserId": int
+	*/
+  moveUser: (params) => {
+    return http.post("/custom/potential/user/move", params);
+  },
+  /* 删除潜在用户
+		"UserId": int
+	*/
+  potentialDel: (params) => {
+    return http.post("/custom/potential/user/delete", params);
+  },
+
+  //给用户打标记
+  potentialDeal: (params) => {
+    return http.post("/custom/potential/user/deal", params);
+  },
+
+  /* 客户创建周期
+		CompanyId int
+	*/
+  processList: (params) => {
+    return http.get("/custom/process/list", params);
+  },
+  /* 服务更新 历史签约列表 CompanyId  CompanyType */
+  historydeal: (params) => {
+    return http.get("/custom/apply/contract/history/list", params);
+  },
+  /* 服务更新 
+		"CompanyId": 0,
+		"CompanyType": "string",
+		"EndDate": "string",
+		"ImgUrl": "string",
+		"Money": 0,
+		"PayChannel": "string",
+		"PayMethod": "string",
+		"PermissionIds": "string",
+		"StartDate": "string"
+	*/
+  Update: (params) => {
+    return http.post("/custom/apply/service/update", params);
+  },
+  /* 冻结客户   
+	"CompanyId": 0,
+  "CompanyType":*/
+  Freez: (params) => {
+    return http.post("/custom/freeze", params);
+  },
+  /* 申请转正
+		"CompanyId": 0,
+		"EndDate": "string",
+		"ImgUrl": "string",
+		"Money": 0,
+		"PayChannel": "string",
+		"PayMethod": "string",
+		"PermissionIds": "string",
+		"StartDate": "string"
+	 */
+  applyTurn: (params) => {
+    return http.post("/custom/apply/turn/positive", params);
+  },
+  /* 申请延期
+	 "ApplyRemark": "string",
+	  "CompanyId": 0
+	  CompanyApprovalId
+	  PermissionIds
+	*/
+  applyDelay: (params) => {
+    return http.post("/custom/apply/delay", params);
+  },
+  /* 申请领取 
+		"ApplyRemark": "string",
+  		"CompanyId": 0
+	*/
+  applyPick: (params) => {
+    return http.post("/custom/apply/receive", params);
+  },
+  /* 申请解冻
+		"ApplyRemark": "string",
+  		"CompanyId": 0
+	*/
+  applyThaw: (params) => {
+    return http.post("/custom/apply/thaw", params);
+  },
+  /* 修改所属销售  "CompanyId": 0,"SellsId": 0*/
+  moveSale: (params) => {
+    return http.post("/custom/move/seller", params);
+  },
+  /* 暂停/启用 CompanyId */
+  Suspend: (params) => {
+    return http.post("/custom/suspend", params);
+  },
+  /* 领取列表
+		PageSize *
+		CurrentIndex *
+		IndustryId 行业id,0为全部
+		ChartPermissionIds 
+		StartDate *
+		EndDate *
+		KeyWord *
+	*/
+  pickList: (params) => {
+    return http.get("/custom/receive/list", params);
+  },
+  /* 领取客户  ——领取列表
+		"CompanyId": 0,
+		"IndustryId": 0,
+		"PermissionIds": "string",
+		"Reasons": "string",
+		"SellsId": 0,
+		"Source": "string",
+		"Status": "string"
+		CompanyType
+	*/
+  Pick: (params) => {
+    return http.post("/custom/receive", params);
+  },
+  /* 设置共享/取消共享
+		CompanyId
+		IsShare 0-取消共享 1-共享
+	*/
+  setCustomShare: (params) => {
+    return http.post("/custom/share", params);
+  },
+  /**
+   * 正式客户共享
+   */
+
+  /**
+   * 获取 共享客户组 里面的销售列表
+   */
+  salesShareList: (params) => {
+    return http.get("/custom/seller/share/list", params);
+  },
+  /**
+   * 获取 共享客户列表
+   * SortParam 排序字段
+   * SortType 排序类型 `asc 正序`,`desc 倒叙`
+   * PageSize CurrentIndex 
+   * SellerId 选择的销售id
+   * Keyword 
+   * ListParam 0:全部 、 1:已分配 、 2:未分配
+   * 
+   */
+  getShareCustomList: (params) => {
+    return http.get("/custom/share/list", params);
+  },
+  /**
+   * 共享客户列表 - 分配销售
+   * CompanyId 公司Id
+   * SellsId 销售Id
+   * 
+   */
+    assignShareSeller: (params) => {
+      return http.post("/custom/share/moveSeller", params);
+    },
+    /**
+     * 新增服务记录
+     * CompanyId 公司Id
+     * Content 服务描述
+     */
+    addRecord:(params)=>{
+        return http.post("/custom/service_record/add",params)
+    },
+    /**
+     * 服务记录列表
+     * CompanyId 公司Id
+     */
+    getRecordList:(params)=>{
+        return http.get("/custom/service_record/list",params)
+    },
+    /**
+     * 删除服务记录
+     * CompanyServiceRecordId 服务记录id
+     */
+    deleteRecord:(params)=>{
+        return http.post("/custom/service_record/del",params)
+    },
+    /**
+     * 正式客户共享-添加备注
+     * CompanyId
+     * Remark 
+     */
+    addCustomRemark:(params)=>{
+        return http.post("/custom/share/remark/add",params)
+    },
+  /* 审批列表
+		PageSize *
+		CurrentIndex *
+		Status *
+		KeyWord *
+	*/
+  approvalList: (params) => {
+    return http.get("/custom/approval/listV2", params);
+  },
+  /* 审批
+	  "CompanyId": 0,
+		"Remark": "string",
+		"Status": 0
+	 */
+  Approval: (params) => {
+    return http.post("/custom/approval/approve", params);
+  },
+  /* 撤回 CompanyId*/
+  Revoke: (params) => {
+    return http.post("/custom/apply/revoke", params);
+  },
+  /* 删除审批单 CompanyApprovalId CompanyId */
+  approvalDel: (params) => {
+    return http.post("/custom/approval/delete", params);
+  },
+  /* 审批页面详情
+		CompanyId * *
+	*/
+  approvalDetail: (params) => {
+    return http.get("/custom/apply/contract/detail", params);
+  },
+  /* 重新申请合同详情 */
+  reapplyDetail: (params) => {
+    return http.get("/custom/apply/contract", params);
+  },
+  /* 阅读报告记录  UserId*/
+  readList: (params) => {
+    return http.get("/custom/view/report/list", params);
+  },
+  /* 获取导入联系人列表 File CompanyId*/
+  getimportList: (params) => {
+    return http.post("/custom/import/list", params);
+  },
+  /* 导入联系人 File  CompanyId*/
+  importUser: (params) => {
+    return http.post("/custom/import", params);
+  },
+  /* 增加试用 "ChartPermissionId" "CompanyId"*/
+  addTryout: (params) => {
+    return http.post("/custom/permission/add/try/out", params);
+  },
+  /* 申请解冻 申请领取权限列表 */
+  allAuth: (params) => {
+    return http.get("/custom/getCompanyPermission", params);
+  },
+  /**
+   * 获取审批单中的权限列表
+   * @param {ApprovalId } params 审批单id
+   * @returns
+   */
+  approvalPermission: (params) => {
+    return http.get("/custom/approval/getApprovalPermissionList", params);
+  },
+  /**
+   * 查看客户权限接口(主观客观)
+   * @param {CompanyId } params 客户id
+   * @param {LookType } params 调用类型:1增开试用,0其他
+   * @returns
+   */
+  permissionLookSando: (params) => {
+    return http.get("/custom/permission/lookSando", params);
+  },
+  // 获取联系人配置图库权限详情
+  chartPermissionInfo: (params) => {
+    return http.get("/custom/user/getChartClassifyPermissionDetail", params);
+  },
+
+  // 联系人图库权限设置
+  chartPermissionSet: (params) => {
+    return http.post("/custom/user/addChartClassifyPermission", params);
+  },
+
+  // 联系人图库权限编辑
+  chartPermissionEdit: (params) => {
+    return http.post("/custom/user/editChartClassifyPermission", params);
+  },
+  // 销售待办添加未续约说明
+  sellerAddListRemark: (params) => {
+    return http.post("/custom/addTryOutCompanyReason", params);
+  },
+  // 正式转试用添加说明
+  addTryOutRenewalReason: (params) => {
+    return http.post("/custom/addRenewalReason", params);
+  },
+  // 导出
+  companyExportList: (params) => {
+    return http.get("/cygx/company/exportList", params);
+  },
+
+  /* 查看备注 */
+  lookRemarkAuth: (params) => {
+    return http.get("/custom/remark", params);
+  },
+  /* 新增备注 */
+  lookRemarkAuthAdd: (params) => {
+    return http.post("/custom/remark/add", params);
+  },
+  //路演的弹框
+  roadShowList: (params) => {
+    return http.get("/custom/roadShowList", params);
+  },
+  /**
+   * 销售ToDo
+   */
+  //新建任务
+  addToDoItem: (params) => {
+    return http.post("/custom/company_todo/add", params);
+  },
+  //编辑任务
+  editToDoItem: (params) => {
+    return http.post("/custom/company_todo/edit", params);
+  },
+  //正在进行的任务
+  getToDoItem: (params) => {
+    return http.get("custom/company_todo/edit_list", params);
+  },
+  //历史记录
+  getHistory: (params) => {
+    return http.get("/custom/company_todo/list", params);
+  },
+  //确认完成
+  checkToDo: (params) => {
+    return http.post("/custom/company_todo/approve", params);
+  },
+
+  // 设置试用子标签
+  // "CompanyId":6802,"ProductId":1, "TryStage": 2
+  setTrialTag: (params) => {
+    return http.post("/custom/update/tryStage", params);
+  },
+
+  /**
+   * 销售添加客户管理
+   */
+  //销售分组列表
+  getSales: (params) => {
+    return http.get("/custom/receive/seller/group", params);
+  },
+  //销售列表
+  getSalesData: (params) => {
+    return http.get("/custom/receive/seller", params);
+  },
+  //启用/禁用权限
+  changeSaleAuth: (params) => {
+    return http.post("/custom/receive/permission/change", params);
+  },
+  
+  /**
+   * 分产品阅读统计
+   */
+  /*
+    用户阅读统计:
+    UserId:联系人ID;ClickSort:点击量排序:1-升序 2-降序
+    CurrentIndex,pageSize
+  */
+  getYbProductReadInfo:(params)=>{
+    return http.get("/yb/product_census/user/visit_count",params)
+  },
+  /*
+    用户阅读统计详情:
+    UserId:联系人ID;ClickSort:点击量排序:1-升序 2-降序
+    ProductType:产品类型:1-语音播报 2-视频社区 3-问答社区
+    ProductId:产品ID:产品类型为1-语音播报时必填
+    CurrentIndex,pageSize
+  */
+  getYbProductReadDetail:(params)=>{
+    return http.get("/yb/product_census/user/visit_count_detail",params)
+  },
+
+  /**
+   * 获取分产品列表
+   * @param {*} params 
+   * @returns 
+   */
+  getSubProduct: params => {
+    return http.get('/custom/user/otherProductList',params)
+  },
+  
+  /**
+   * 客户区域统计
+  */
+  /**
+   * 获取客户区域统计列表
+   * @param {*} params 
+   * @returns Date 当天 ProductId=1
+   */
+   getRegionCustom: params => {
+    return http.get('/custom/customerAreaStatistics',params)
+  },
+   /**
+   * --------开票到款统计
+  */
+  /**
+   * 获取简易的套餐列表(用于搜索下拉框)
+   * @returns 
+   */
+  getSimpleServiceList: () => {
+    return http.get('/statistic_report/contract/service/simple')
+  },
+  /**
+   * 获取客户合同商品到款列表
+  * @param data.page_size - 每页数据量 - 必填
+  * @param data.current - 页码 - 必填
+  * @param data.keyword - 关键词-客户名称/销售
+  * @param data.service_types - 套餐
+  * @param data.start_date - 开始时间
+  * @param data.end_date - 结束时间
+  * @param data.time_type - 时间类型:1-开票时间; 2-到款时间
+  * @param data.sort_type - desc:降序 asc:升序
+  * @param data.sort_param - invoice_time:开票日 payment_date:到款日
+   * @returns 
+   */
+  getCTContractStatistics: params => {
+    return http.get('/statistic_report/census/invoice_payment/list',params)
+  },
+  
+  // ----------------------------------------------------英文客户
+  /**
+   * 设置英文客户权限
+   * @param {*} params 
+   * @returns 
+   */
+  setENCustomReportVariety:params=>{
+    return http.post('/english_report/company/save_permission',params)
+  },
+
+  // 获取英文客户列表
+  /**
+   * 
+   * @param {
+   * PageSize - 每页数据量 - 必填
+   * CurrentIndex - 当前页数 - 必填
+   * Keywords - 客户名称
+   * SortType - 点击量排序方式: 1-倒序;2-正序
+   * } params 
+   * @returns 
+   */
+  getCustomListEn: params => {
+    return http.get('/english_report/company/list',params)
+  },
+  // 新增英文客户
+  /**
+   * 
+   * @param {
+   * CompanyId - 客户ID 大于0为编辑
+   * CompanyName - 客户名称 - 必填
+   * CountryCode - 国家代码 - 必填
+   * Country - 国家 - 必填
+   * SellerId - 销售ID - 必填
+   * } params 
+   * @returns 
+   */
+  addCustomEn: (params) => {
+    return http.post("/english_report/company/save", params);
+  },
+  // 删除英文客户
+  /**
+   * 
+   * @param {
+   * CompanyId - 客户ID
+   * } params 
+   * @returns 
+   */
+  delCustomEn: (params) => {
+    return http.post("/english_report/company/del", params);
+  },
+  // 英文客户点击量详情
+  /**
+   * 
+   * @param {
+   * PageSize - 每页数据量 - 必填
+   * CurrentIndex - 当前页数 - 必填
+   * CompanyId - 客户ID - 必填
+   * SortParam - 点击量排序字段 - 1-点击量;2-点击时间
+   * SortType - 点击量排序方式: 1-倒序;2-正序
+   * } params 
+   * @returns 
+   */
+  customEnHitNumber: (params) => {
+    return http.get("/english_report/company/view_list", params);
+  },
+  // 英文客户详情
+  /**
+   * 
+   * @param {
+   * CompanyId - 客户ID
+   * } params 
+   * @returns 
+   */
+  customDetailEn: (params) => {
+    return http.get("/english_report/company/detail", params);
+  },
+  // ---------英文客户todo
+  // 新建to do
+  /**
+   * 
+   * @param {
+   * CompanyId - 客户ID
+   * Description - 任务描述
+   * EndTime - 截止日期
+   * } params 
+   * @returns 
+   */
+  addCustomToDoEn: (params) => {
+    return http.post("/english_report/company_todo/add", params);
+  },
+  // 编辑todo的列表
+  /**
+   * 
+   * @param {
+   * CompanyId - 客户ID - 必填
+   * } params 
+   * @returns 
+   */
+   todoEditListEn: (params) => {
+    return http.get("/english_report/company_todo/edit_list", params);
+  },
+  // 编辑todo
+  /**
+   * 
+   * @param {
+   * Id - 任务Id - 必填
+   * CompanyId - 客户ID - 必填
+   * Description - 任务描述 - 必填
+   * } params 
+   * @returns 
+   */
+   editCustomToDoEn: (params) => {
+    return http.post("/english_report/company_todo/edit", params);
+  },
+  // 完成todo
+  /**
+   * 
+   * @param {
+   * Id - 任务Id - 必填
+   * } params 
+   * @returns 
+   */
+   finishCustomToDoEn: (params) => {
+    return http.post("/english_report/company_todo/approve", params);
+  },
+  // to do历史记录
+  /**
+   * @param {
+   * PageSize - 每页数据量 - 必填
+   * CurrentIndex - 当前页数 - 必填
+   * CompanyId - 客户ID
+   * SortType - 点击量排序方式: 1-倒序;2-正序
+   * } params 
+   * @returns 
+   */
+  getTodoListEn: (params) => {
+    return http.get("/english_report/company_todo/list", params);
+  },
+  //----------------------------英文联系人列表
+  /**
+   * @param {
+   * PageSize - 每页数据量 - 必填
+   * CurrentIndex - 当前页数 - 必填
+   * CompanyId - 客户ID
+   * Keywords - 搜索关键词,客户名称/邮箱
+   * SortType - 点击量排序方式: 1-倒序;2-正序
+   * } params 
+   * @returns 
+   */
+  getContactsListEn: (params) => {
+    return http.get("/english_report/email/list", params);
+  },
+  // 保存联系人 新增/编辑
+  /**
+   * 
+   * @param {
+   * Id - 联系人ID,大于0为编辑
+   * CompanyId - 客户Id
+   * Name - 联系人名称
+   * Email - 邮箱地址
+   * } params 
+   * @returns 
+   */
+  contactsSaveEn: (params) => {
+    return http.post("/english_report/email/save", params);
+  },
+  // 移动联系人
+  /**
+   * 
+   * @param {
+  * EmailId - 邮箱ID
+  * CompanyId - 客户Id
+  * } params 
+  * @returns 
+  */
+  contactsMoveEn: (params) => {
+    return http.post("/english_report/email/moveToCurrent", params);
+  },
+  // 英文联系人批量导入
+  /**
+   * 
+   * @param { formData
+   * File - Excel文件
+   * CompanyId - 客户ID
+   * } params 
+   * @returns 
+   */
+  importContactsEn: (params) => {
+    return http.post("/english_report/email/import", params);
+  },
+  // 删除英文联系人
+  /**
+   * 
+   * @param {
+   * EmailId - 联系人Id
+   * } params 
+   * @returns 
+   */
+  delContactsEn: (params) => {
+    return http.post("/english_report/email/del", params);
+  },
+  //启用禁用英文联系人
+  /**
+   * 
+   * @param {*
+   *  EmailId
+   *  Enabled
+   * } params 
+   * @returns 
+   */
+  editEnabledEn:(params)=>{
+    return http.post('/english_report/email/editEnabled',params)
+  },
+  //批量启用,禁用英文联系人
+    /**
+   * 
+   * @param {*
+     *  CompanyId
+     *  Enabled
+     * } params 
+     * @returns 
+     */
+  editEnabledAll:(params)=>{
+    return http.post('/english_report/company/edit_enabled',params)
+  },
+  // 英文联系人点击量详情
+  /**
+   * 
+   * @param {
+   * PageSize - 每页数据量 - 必填
+   * CurrentIndex - 当前页数 - 必填
+   * EmailId - 联系人ID - 必填
+   * SortParam - 点击量排序字段 - 1-点击量;2-点击时间
+   * SortType - 点击量排序方式: 1-倒序;2-正序
+   * } params 
+   * @returns 
+   */
+  contactsEnHitNumber: (params) => {
+    return http.get("/english_report/email/view_list", params);
+  },
+  //英文客户-未完成todo统计
+  /**
+   * 
+   * @param {
+     * PageSize - 每页数据量
+     * CurrentIndex - 当前页数
+     * SortType - 截止日期排序方式: 1-正序; 2-倒序
+     * } params 
+     * @returns 
+     */
+  getUnDoList:(params)=>{
+    return http.get("/english_report/company_todo/doing_list",params)
+  },
+  //英文客户-获取to-do编辑框信息
+  getToDoEditData:(params)=>{
+    return http.get("/english_report/company_todo/last_public_todo",params)
+  },
+  //英文客户-新增to-do编辑框信息
+  /**
+   * 
+   * @param {* Description 任务描述} params 
+   * @returns 
+   */
+  saveToDoEditData:(params)=>{
+    return http.post("/english_report/company_todo/add_public",params)
+  }
+  
+};
+
+/*
+权益联系人列表模块
+*/
+const equityContacts = {
+  //状态搜索栏接口
+  getUserStatusTable: (params) => {
+    return http.get("/cygx/user/status/table", params);
+  },
+  // 用户列表接口
+  getCygxContactsList: (params) => {
+    return http.get("/cygx/user/list", params);
+  },
+  //备注列表接口
+  getCygxRemarkList: (params) => {
+    return http.get("/cygx/user/remark/list", params);
+  },
+  // 新增备注
+  getCygxAddRemarks: (params) => {
+    return http.post("/cygx/user/addRemarks", params);
+  },
+  //获取用户标签详情接口
+  getCygxLabelDetail: (params) => {
+    return http.get("/cygx/user/label/detail", params);
+  },
+  //产业、标的模糊查询接口
+  industrialManagementSearch: (params) => {
+    return http.get("/cygx/industrialManagement/search", params);
+  },
+  //互动详情table栏接口
+  getCygxMutualList: (params) => {
+    return http.get("/cygx/user/table/list", params);
+  },
+  //互动详情table栏接口
+  getCygxMutualDetail: (params) => {
+    return http.get("/cygx/user/interaction/detail", params);
+  },
+  //用户相关互动接口
+  getInteractionRelevant: (params) => {
+    return http.get("/cygx/user/interaction/relevant", params);
+  },
+  //机构状态搜索栏互助
+  getInteractionNum: (params) => {
+    return http.get("/cygx/user/interactionNum", params);
+  },
+  //机构互动详情table栏接口
+  getCompanyTableList: (params) => {
+    return http.get("/cygx/user/company/table/list", params);
+  },
+  //机构互动详情table栏接口
+  getCompanyInteractionDetail: (params) => {
+    return http.get("/cygx/user/company/interaction/detail", params);
+  },
+  //添加/取消用户提醒
+  postUserRemind: (params) => {
+    return http.post("/cygx/user/remind", params);
+  },
+  //全机构互动列表接口
+  getUserCompanyList: (params) => {
+    return http.get("cygx/user/company/list", params);
+  },
+  //机构列表互动详情table栏接口
+  getUserTableCompanyList: (params) => {
+    return http.get("/cygx/user/table/companyList", params);
+  },
+};
+
+/*
+crm12.4 ETA试用列表模块
+ */
+const etaTrialInterence={
+ /**ETA试用客户列表
+  * PageSize,CurrentIndex,KeyWord
+  * SortParam
+  * SortType : asc正序 desc倒序
+  */
+  getETATrialList:(params)=>{
+    return http.get('/eta_trial/list',params)
+  },
+ /**非管理员-我的审批列表
+  * 
+  */
+  getApprovalAllList:(params)=>{
+    return http.get('/eta_trial/apply/myList',params)
+  },
+ /**非管理员-账号列表
+  * 
+  */
+  getApprovalList:(params)=>{
+    return http.get('/eta_trial/apply/accountlist',params)
+  },
+ /**非管理员-删除申请
+  * ApprovalId
+  */
+  deleteApproval:(params)=>{
+    return http.post('/eta_trial/apply/del',params)
+  },
+ /**非管理员-撤回申请
+  * Mobile
+  */
+  withdrawApproval:(params)=>{
+    return http.post('/eta_trial/apply/revoke',params)
+  },
+ /**非管理员-申请启用
+  * UserName,CompanyName,Position,Mobile
+  * ApplyReasons 申请理由
+  */
+  applyEnable:(params)=>{
+    return http.post('/eta_trial/apply/enable',params)
+  },
+ /**非管理员-新增申请
+  * List[]
+  * List[].UserName 姓名
+  * List[].CompanyName 公司名称
+  * List[].Position 职位
+  * List[].Mobile 手机号
+  */
+  addApproval:(params)=>{
+    return http.post('/eta_trial/add',params)
+  },
+ /**管理员-审批列表
+  * ApprovalStatus 
+  */
+  getAdminApprovalList:(params)=>{
+    return http.get('/eta_trial/apply/list',params)
+  },
+ /**管理员-同意申请
+  * ApprovalId
+  */
+  agreeApply:(params)=>{
+    return http.post('/eta_trial/apply/approval',params)
+  },
+ /**管理员-驳回申请
+  * ApprovalId
+  * RejectReason
+  */
+  rejectApply:(params)=>{
+    return http.post('/eta_trial/apply/reject',params)
+  },
+  // -------------ETA试用 1.1
+  // 问卷调查
+  /**统计结果列表
+  * ListParam 1-全部 2-选择题 3-简答题
+  */
+  getQuestionDataList:(params)=>{
+    return http.get('/eta_trial/questionnaire/statistical',params)
+  },
+  /**简答题详情列表
+  * CurrentIndex PageSize QuestionnaireId
+  */
+  getTextDetailList:(params)=>{
+    return http.get('/eta_trial/questionnaire/answerList',params)
+  },
+  /**详细数据列表
+  * PageSize CurrentIndex
+  */
+  getDetailDataList:(params)=>{
+    return http.get('/eta_trial/questionnaire/detailList',params)
+  },
+  /**详细数据 - 详情
+  * Mobile
+  */
+  getDetailDataDetail:(params)=>{
+    return http.get('/eta_trial/questionnaire/detail',params)
+  },
+  /**问卷列表
+  */
+  getQuestionOptionList:()=>{
+    return http.get('/eta_trial/questionnaire/list')
+  },
+   /**保存题目配置
+  * List - 题目列表
+  */
+  questionOptionSave:(params)=>{
+    return http.post('/eta_trial/questionnaire/save',params)
+  },
+  /**删除题目
+  * QuestionnaireId - 题目Id
+  */
+  questionOptionDelete:(params)=>{
+    return http.post('/eta_trial/questionnaire/del',params)
+  },
+}
+
+/* 全量客户相关 */
+const customAllInterence = {
+    //客户列表
+    customList:(params)=>{
+        return http.get("/custom/full/list",params)
+    },
+    //客户详情
+    customDetail:(params)=>{
+        return http.get("/custom/full/detail", params);
+    },
+    //查看权限
+    lookauth: (params) => {
+        return http.get("/custom/full/permission/look", params);
+    },
+}
+
+export { customInterence,customAllInterence, equityContacts,etaTrialInterence};

+ 392 - 0
src/api/modules/dataApi.js

@@ -0,0 +1,392 @@
+import http from "@/api/http.js"
+
+/* 数据管理模块 */
+const dataInterence = {
+	/**
+	 * 研究员 指标列表
+	 * Frequency	频度
+	 * TradeCode
+	 * ClassifyId	分类id
+	 * EdbShowType	指标展示类型: 0:不管有没有数据,指标都展示出来, 1:只展示有数据的指标, 2:只展示没有数据的指标
+	 */
+	getTargetList:params=>{
+		return http.get('/entry/target/item_list',params)
+	},
+
+	/** 
+	 * 删除 整行数据
+	 * CreateDate		日期
+	 * TradeCodeList	指标code 列表
+	 */
+	deleteTargetByDate:params=>{
+		return http.post('/entry/data/batch_delete_by_date',params)
+	},
+
+	/** 
+	 * 删除指标
+	 * TradeCode
+	 */
+	deleteTargetByCode:params=>{
+		return http.post('/entry/data/batch_delete',params)
+	},
+	
+	/**
+	 * 搜索接口
+	 * Frequency 	频度
+	 * ClassifyId	分类id
+	 * Keyword
+	 * EdbShowType
+	 */
+	getTargetListByName:params=>{
+		return http.get('/entry/target/item_name_list',params)
+	},
+
+	/**
+	 * 指标频度列表
+	 * ClassifyId	分类id
+	 */
+	getFrequencyList:params=>{
+		return http.get('/entry/target/frequency_list',params)
+	},
+
+	// 指标单位
+	getTargetUnitList:params=>{
+		return http.get('/entry/target/unit_list',params)
+	},
+
+	// 获取分类列表
+	getClassify: params => {
+		return http.get('/entry/classify',params)
+	},
+	/*  录入指标
+	classify_id int	分类id
+	frequency string	频度
+	unit		string	单位
+	sec_name	string 指标名称 */
+	addTarget: params => {
+		return http.post('/entry/target/add',params)
+	},
+	/* 编辑指标
+	trade_code		string	唯一编码
+	classify_id		int	分类id
+	frequency		string	频度
+	unit		string	单位
+	sec_name		string	指标名称 */
+	editTarget: params => {
+      return http.post('/entry/target/edit',params)
+	},
+	/* 指标列表接口
+	page_no	int	每页起始位置:默认0
+	page_size	int	每页数据条数,默认10
+	start_date	string	开始日期
+	end_date	string	结束日期
+	frequency	string	频度
+	classify_id	int	分类id,默认0
+	key_word	string	标题搜索关键词 */
+	targetList:params => {
+      return http.get('/entry/target/list',params)
+	},
+	/* 搜索指标接口
+	classify_id	是	int	分类id
+	key_word	是	string	名称关键词	 */
+	searchTarget:params => {
+      return http.get('/entry/target/search',params)
+	},
+	/* 录入数据
+	trade_code	是	string	指标唯一编码
+	create_date	是	string	创建日期
+	close	是	string	录入值 */
+	addData:params => {
+		return http.post('/entry/data/add',params)
+	},
+	/* 编辑数据
+	trade_code	是	string	指标唯一编码
+	create_date	是	string	创建日期
+	close	是	string	录入值 */
+	editData:params => {
+		return http.post('/entry/data/edit',params)
+	},
+	/* 删除数据
+	trade_code	是	string	指标唯一编码
+	create_date	是	string	数据录入日期 */
+	delData:params => {
+		return http.post('/entry/data/delete',params)
+	},
+/* 	获取数据列表
+	page_no	是	int	每页起始位置:默认0
+	page_size	是	int	每页数据条数,默认10
+	start_date	否	string	开始日期
+	end_date	否	string	结束日期
+	frequency	否	string	频度
+	classify_id	否	int	分类id,默认0
+	key_word	否	string	标题搜索关键词 
+	trade_code	否	string	指标编码 */
+	getDatalist:params => {
+		return http.get('/entry/data/list',params)
+	},
+/* 	导出数据
+	start_date	否	string	开始日期
+	end_date	否	string	结束日期
+	frequency	否	string	频度
+	classify_id	否	int	分类id,默认0
+	key_word	否	string	标题搜索关键词 */
+	exportData:params => {
+		return http.get('/entry/export/dataList',params)
+	},
+/* 	检测日期下数据是否存在接口
+	trade_code	是	string	指标唯一编码
+	create_date	是	string	所选日期 */
+	checkData:params => {
+		return http.get('/entry/data/check',params)
+	},
+	// 检测指标是否包含数据接口
+	// trade_code
+	checkTarget:params => {
+		return http.get('/entry/target/check',params)
+	},
+	/* 删除指标接口
+	trade_code */
+	delTarget:params => {
+		return http.post('/entry/target/delete',params)
+	},
+	// 获取研究员列表
+	getResearcher:params => {
+		return http.get('/entry/getResearcher',params)
+	},
+	/* 获取指标
+	mobile	是	string	手机号码 */
+	getTarget:params => {
+		return http.get('/entry/getTargetItems',params)
+	},
+
+	// 手工数据录入中批量修改录入数据
+	modifyTargetDate:params=>{
+		return http.post('/entry/data/batch_edit',params)
+	},
+
+	// 上海期货交易所
+	getShFuturesData:params=>{
+		return http.get('/entry/data/shfe',params)
+	},
+
+	// 大连交易所数据
+	getDlExchangeData:params=>{
+		return http.get('/entry/data/dalian',params)
+	},
+
+	// 郑州交易所数据
+	getZzExchangeData:params=>{
+		return http.get('/entry/data/zhengzhou',params)
+	},
+
+	// 中国金融期货交易所
+	getChinaFuturesData:params=>{
+		return http.get('/entry/data/cffex',params)
+	},
+
+	// 谷歌出行指数 获取最新的日期
+	getGoogleTravelLastDate:params=>{
+		return http.get('/datamanage/visitors_covid/last_date',params)
+	},
+
+	// 谷歌出行指数 获取数据
+	getGoogleTravelData:params=>{
+		return http.get('	/datamanage/visitors_covid/list',params)
+	},
+	
+	// 上海国际能源交易中心
+	getShEnergyData:params=>{
+		return http.get('/entry/data/ine',params)
+	},
+
+	// 获取研究所分类 Exchange
+	/* 	cffex 中金所
+		shanghai 上期所
+		ine 上海能源交易所
+		dalian 大连
+		zhengzhou 郑州*/
+	getResearcherClassifyList:params=>{
+		return http.get('/entry/data/exchange/classify',params)
+	},
+
+	// 获取合约号
+	// Exchange Classify
+	getExchangeClassifyContract:params=>{
+		return http.get('/entry/data/exchange/classifyContract',params)
+	},
+
+	// 欧洲天然气 获取父级
+	getGasEicContinent:params=>{
+		return http.get('/entry/data/eicContinent',params)
+	},
+
+	//获取欧洲天然气子级数据
+	getGasData:params=>{
+		return http.get('/entry/data/eicData',params)
+	},
+
+	//获取最新一条有数据的日期
+	getGasLasteTime:params=>{
+		return http.get('/entry/data/eicLatestDate',{})
+	},
+
+	// 获取天然气历史数据
+	getGasHistoryData:params=>{
+		return http.get('/entry/data/eicHistoryData',params)
+	},
+	//欧洲天然气-获取最新一条有数据的日期
+	getGasLasteTimeV2:params=>{
+		return http.get('/entry/data/eicLatestDateV2',{})
+	},
+	// 欧洲天然气 获取父级
+	getGasEicContinentV2:params=>{
+		return http.get('/entry/data/eicDataV2',params)
+	},
+	// 获取天然气历史数据
+	getGasHistoryDataV2:params=>{
+		return http.get('/entry/data/eicHistoryDataV2',params)
+	},
+	//获取欧洲天然气子级数据
+	getGasDataV2:params=>{
+		return http.get('/entry/data/eicSSODataV2',params)
+	},
+	/**
+	 * 复制excel保存
+	 * @param {*} params luckysheet 
+	 * @returns 
+	*/
+	saveOnlineExcel: params => {
+		return http.post('/entry/target/excel_style/add',params)
+	},
+
+	/**
+	 * 复制excel保存 - 编辑
+	 * @param {*} params luckysheet 
+	 * @returns 
+	*/
+	editOnlineExcel: params => {
+		return http.get('entry/target/excel_style/edit',params)
+	},
+	// ------------UN数据源
+	/**
+	 * 获取国家数据 
+	 */
+	getUNCountryData: () => {
+		return http.get('datamanage/com_trade/country/list')
+	},
+	/**
+	 * 获取指标数据列表
+	 * @param params.CurrentIndex 页码- number
+	 * @param params.PageSize 每页数据量- number
+	 * @param params.IndexCode 指标编码- String
+	 * @param params.Year 年份- String
+	 * @param params.Flow 流向- X(Export:出口);M(Import:进口)
+	 * @param params.ReporterCode 出口国id- number
+	 * @param params.PartnerCode 进口国id- number
+	 */
+	getUNCodeData: (params) => {
+		return http.get('datamanage/com_trade/data/list',params)
+	},	
+	/**
+ * 根据指标编码 模糊搜索获取指标编码列表
+ * @param params.Keyword 关键字- string
+ */
+	getIndexCodeData: (params) => {
+		return http.get('datamanage/com_trade/list',params)
+	}
+}
+
+/* 手工数据权限 */
+const dataAuthInterface = {
+	/**
+	 * 获取分类权限列表
+	 * @param {AdminId} params 
+	 * @returns 
+	 */
+	authList: params => {
+		return http.get('/datamanage/manual/classify/all',params);
+	},
+	/**
+	 * 获取研究员
+	 * @param {*} params 
+	 * @returns 
+	 */
+	userList: params => {
+		return http.get('/datamanage/manual/sysuser/all',params)
+	},
+	/**
+	 * 保存权限
+	 * @param {AdminId} params 
+	 * @param {ClassifyId} params 
+	 * @returns 
+	 */
+	saveAuth: params => {
+		return http.post('/datamanage/manual/sysuser/classify/save',params)
+	},
+	/**
+	 * 用户检索
+	 * @param {KeyWord} params 
+	 * @returns 
+	 */
+	userSearch:params => {
+		return http.get('/datamanage/manual/sysuser/search',params)
+	},
+	/**
+	 * 新增分类
+	 * @param {ClassifyName} params 
+	 * @param {ParentId} params 
+	 * @returns 
+	 */
+	classifyAdd: params => {
+		return http.post('/datamanage/manual/classify/add',params)
+	},
+	/**
+	 * 修改分类名称
+	 * @param {ClassifyName} params 
+	 * @param {ClassifyId ParentId} params 
+	 * @returns 
+	 */
+	classifyEdit: params => {
+		return http.post('/datamanage/manual/classify/edit',params)
+	},
+	/**
+	 * 手工数据 获取自己的品种分类
+	 * @param {*} params 
+	 * @returns 
+	 */
+	classifyList: params => {
+		return http.get('/datamanage/manual/set_classify/all',params);
+	},
+
+	/**
+	 * 删除分类
+	 * @param {ClassifyId} params 
+	 * @returns 
+	 */
+	classifyDel: params => {
+		return http.post('/datamanage/manual/classify/delete',params)
+	},
+
+	/**
+	 * 一级分类
+	 * @param {*} params 
+	 * @returns 
+	 */
+	classifyOne: params => {
+		return http.get('/datamanage/manual/classify/first',params)
+	},
+
+	/**
+	 * 所有分类
+	 * @param {*} params 
+	 * @returns 
+	 */
+	classifyAll: params => {
+		return http.get('/datamanage/manual/classify/all_list',params)
+	}
+}
+
+export {
+	dataInterence,
+	dataAuthInterface
+}

+ 64 - 0
src/api/modules/daynewsApi.js

@@ -0,0 +1,64 @@
+import http from '../http';
+
+/**
+ * 拉取刷新微信消息
+ * @returns 
+ */
+export const refreshList = () => {
+  return http.get('/yb/day_new/refresh')
+}
+
+/**
+ * 翻译消息
+ * @returns 
+ */
+export const translateMsg = () => {
+  return http.get('/yb/day_new/translate')
+}
+
+/**
+ * 获取消息
+ * @returns  PageSize CurrentIndex
+ */
+export const getList = params => {
+  return http.get('/yb/day_new/list',params)
+}
+
+/**
+ * 删除消息
+ * @returns  MsgId
+ */
+export const delMsg = params => {
+  return http.post('/yb/day_new/delete',params)
+}
+
+/**
+ * 生成报告
+ * @returns  
+ */
+export const translateReport = params => {
+  return http.post('/yb/day_new/add_report',params)
+}
+
+/**
+ * 获取配置
+ * @returns 
+ */
+export const getConfig = () => {
+  return http.get('/yb/day_new/report_default')
+}
+
+/**
+ * 保存配置
+ */
+export const setConfig = (params)=>{
+  return http.post('/yb/day_new/report_default/save',params)
+}
+
+/**
+ * 编辑消息
+ * @param  MsgId
+ */
+export const editMsg=params=>{
+  return http.post('/yb/day_new/edit_content_en',params)
+}

+ 220 - 0
src/api/modules/ficcApi.js

@@ -0,0 +1,220 @@
+import http from "@/api/http.js"
+
+/* ficc活动管理 */
+export const ficcManageInterface={
+	/**
+	 * 获取活动分类列表
+	 */
+	activityTypeList:()=>{
+		return http.get('/yb/activity/type/list',{})
+	},
+
+	/**
+	 * 活动列表
+	 * @param Keyword
+	 * @param ActivityTypeId	活动类别id
+	 * @param ActiveStatus	活动进行状态,枚举值:1:未开始;2:进行中;3:已结束
+	 * @param PublishStatus	活动发布状态,枚举值:-1:全部;0:未发布;1:已发布
+	 * @param StartDate
+	 * @param EndDate
+	 */
+	activityList:params=>{
+		return http.get('/yb/activity/list',params)
+	},
+
+	/**
+	 * 活动发布
+	 * @param ActivityId
+	 */
+	activityPublish:params=>{
+		return http.post('/yb/activity/publish',params)
+	},
+
+	/**
+	 * 活动取消发布
+	 * @param ActivityId
+	 */
+	activityUnPublish:params=>{
+		return http.post('/yb/activity/unpublish',params)
+	},
+
+	/**
+	 * 删除活动
+	 * @param ActivityId
+	 */
+	activityDelete:params=>{
+		return http.post('/yb/activity/del_publish',params)
+	},
+
+	/**
+	 * 获取主讲人列表
+	 */
+	activitySpeakerList:params=>{
+		return http.get('/yb/speaker/list',params)
+	},
+
+	/**
+	 * 获取报告列表
+	 */
+	activityReportList:params=>{
+		return http.get('/yb/report/list',params)
+	},
+
+	/**
+	 * 新增活动
+	 */
+	activityAdd:params=>{
+		return http.post('/yb/activity/add',params)
+	},
+
+	/**
+	 * 编辑活动
+	 */
+	activityEdit:params=>{
+		return http.post('/yb/activity/edit',params)
+	},
+
+	/**
+ 	 * 活动报名列表
+ 	 * @param {TypeCode} params
+ 	 */	
+	 activitySignupList: params => {
+		return http.get('/yb/activity_register/list',params);
+	},
+	/**
+ 	 * 活动报名详情
+ 	 * @param {TypeCode} params
+ 	 */	
+	 activitySignupDetailList: params => {
+		return http.get('/yb/activity_register_user/list',params);
+	},
+	/**
+ 	 * 查询系统中可以报名的联系人列表
+ 	 * @param {TypeCode} params
+ 	 */	
+	 activitySignupUserList: params => {
+		return http.get('/yb/user/list',params);
+	},
+	/**
+ 	 * 新增用户报名活动
+ 	 * @param {TypeCode} params
+ 	 */	
+	 activitySignupAddUser: params => {
+		return http.post('/yb/activity_register/add',params);
+	},
+	/**
+ 	 * 取消用户活动报名
+ 	 * @param {TypeCode} params
+ 	 */	
+	 activitySignupCancelUser: params => {
+		return http.post('/yb/activity_register/cancel',params);
+	},
+	/**
+ 	 * 获取活动详情
+ 	 * @param {TypeCode} params
+ 	 */	
+	 activityDetail: params => {
+		return http.get('/yb/activity/detail',params);
+	},
+
+	/**
+ 	 * 获取申请列表
+ 	 * @param {TypeCode} params
+ 	 */	
+	 applyRecordList: params => {
+		return http.get('/yb/apply_record/list',params);
+	},
+	/**
+ 	 * 获取用户申请列表
+ 	 * @param {TypeCode} params
+ 	 */	
+	 applyRecordListV2: params => {
+		return http.get('/yb/apply_record/listV2',params);
+	},
+	/**
+	 * 导出用户申请列表
+	 * @param {TypeCode} params 
+	 */
+	exportRecordListV2:params=>{
+		return http.get('yb/apply_record/listV2/export',params)
+	},
+	/**
+ 	 * 处理申请记录
+ 	 * @param {TypeCode} params
+ 	 */	
+	 applyRecordDeal: params => {
+		return http.post('/yb/apply_record/mark_handle',params);
+	},
+	/* ficc申请单移动潜在用户
+		"BusinessCardUrl":string名片地址
+		"CompanyId": int,
+		"DepartmentName":string联系人部门
+		"Email": "string",
+		"IsMaker":int是否决策人,1:是,0:否
+		"Mobile": "string",
+		"Position":	string职位
+		"RegionType":string 区域,枚举值:国内、海外
+		"RealName": "string",
+		"Remark": "string",
+		"SellerId":int 需要移动到的销售id
+		"Sex":int 用户性别,1为男性,2为女性
+		"UserId": int
+		"ApplyRecordId":int
+	*/
+	moveUserByApplyRecord:params => {
+		return http.post('/custom/potential/user/moveByApplyRecord',params)
+	},
+
+	//全时会议创建
+	quanshiEventCreate:params => {
+		return http.post('yb/activity/create_qs',params)
+	},
+	//全时会议取消
+	quanshiEventCancel:params => {
+		return http.post('yb/activity/cancel_qs',params)
+	},
+	//到会列表
+	quanshiAttendList:params => {
+		return http.get('yb/activity/quanshi/list',params)
+	},
+	//到会详情
+	quanshiAttendDetail:params => {
+		return http.get('yb/activity/quanshi/user_list',params)
+	},
+
+	//进门到会列表
+	jmAttendList:params => {
+		return http.get('yb/activity/comein/list',params)
+	},
+	//进门到会详情
+	jmAttendDetail:params => {
+		return http.get('yb/activity/comein/user_list',params)
+	},
+	//用户申请列表-删除潜在用户
+	delPotentialUser:params=>{
+		return http.post('yb/potential/user/del',params)
+	},
+
+	// 添加、编辑主讲人
+	saveSpeaker:params=>{
+		return http.post('/yb/speaker/save',params)
+	},
+
+	//删除主讲人
+	delSpeaker:params=>{
+		return http.post('/yb/speaker/del',params)
+	},
+
+	//删除主讲人校验
+	delSpeakerCheck:params=>{
+		return http.post('/yb/speaker/del_check',params)
+	},
+  //全时会议分享销售
+  qs_shareSeller:params=>{
+    return http.post('/yb/activity/qs_share2seller',params)
+  },
+  //进门到会分享销售
+  jm_shareSeller:params=>{
+    return http.post('/yb/activity/comein/share2seller',params)
+  }
+}

+ 310 - 0
src/api/modules/futuresBaseApi.js

@@ -0,0 +1,310 @@
+import http from "@/api/http.js"
+
+/* 期货数据库/商品曲线 */
+
+export default {
+  /**
+   * 期货数据库指标搜索
+   * @param {*} params  Keyword
+   * @returns 
+   */
+  targetSearch: params => {
+    return http.get('/future_good/edb_info/list',params)
+  },
+
+  /**
+   * 期货数据列表
+   * @param {*} params
+   * CurrentIndex
+   * PageSize
+   * StartDate
+   * EndDate
+   * FutureGoodEdbCode
+   * @returns 
+   */
+  futuresTargetList: params => {
+    return http.get('/future_good/edb_info/data/list',params)
+  },
+
+  /**
+   * 获取分类
+   * @returns 
+   */
+  classifyList:  params =>{
+    return http.get('/future_good/chart_classify/list',params)
+  },
+
+  /**
+   * 新增分类
+   * @param {*} params  "ChartClassifyName": "分类1-2"
+   * @returns 
+   */
+  classifyAdd:  params =>{
+    return http.post('/future_good/chart_classify/add',params)
+  },
+
+  /**
+   * 编辑分类
+   * @param {*} params  ChartClassifyName ChartClassifyId
+   * @returns 
+   */
+  classifyEdit: params =>{
+    return http.post('/future_good/chart_classify/edit',params)
+  },
+
+  /**
+   * 删除分类检测
+   * @param {*} params ChartClassifyId
+   * @returns 
+   */
+  classifyDelCheck: params =>{
+    return  http.post('/future_good/chart_classify/delete/check',params)
+  },
+
+  /**
+   * 删除分类
+   * @param {*} params ChartClassifyId
+   * @returns 
+   */
+  classifyDel: params =>{
+    return  http.post('/future_good/chart_classify/delete',params)
+  },
+
+  /**
+   * 移动分类
+   * @param {*} params ClassifyId "PrevClassifyId":1, "NextClassifyId":2,
+   * @returns 
+   */
+  classifyMove: params => {
+    return http.post('/future_good/chart_classify/move',params)
+  },
+
+  /**
+   * 移动图表
+   * @param {*} params 
+   */
+  chartMove: params => {
+    return http.post('/future_good/chart_info/move',params)
+  },
+  
+  /**
+   * 图表分类option
+   * @param {*} params 
+   * @returns 
+   */
+  classifyOne: params => {
+    return http.get('/future_good/chart_classify/items',params)
+  },
+
+  /**
+   * 期货指标分类option
+   * @param {} params 
+   * @returns 
+   */
+  futuresTargetClassify: params => {
+    return http.get('/future_good/edb_info/group/list',params)
+  },
+
+  /**
+   * 商品价格图表详情
+   * @param {ChartInfoId} params 
+   * @returns 
+   */
+  chartDetail: params => {
+    return http.get('/future_good/chart_info/detail',params)
+  },
+
+  /**
+   * 获取商品价格图表数据
+   * @param {*} params 
+   * EdbInfoIdList  [{"EdbInfoId": 101452,"Name": "","Source": 1}]
+   * DateList [{ "Type": 1,"Date": "","Value": 0,"Name": "","Color": "#00f" }]
+   * @returns 
+   */
+  getChartData: params => {
+    return http.post('/future_good/chart_info/preview_bar',params)
+  },
+
+  /**
+   * 新增图表
+   * @param {*} params 
+    "ChartClassifyId": 228,
+    "ChartName": "商品价格曲线图2",
+    "ChartType": 7,
+    "DateType": 6,
+    "LeftMin": "212.07",
+    "LeftMax": "7700",
+    "BarChartInfo": {
+      "EdbInfoIdList": [{"EdbInfoId": 101452,"Name": "","Source": 1},
+      ],
+      "DateList": [{"Type": 1,"Date": "","Value": 0,"Name": "","Color": "#00f"}]
+    }
+   * @returns 
+   */
+  chartAdd: params => {
+    return http.post('/future_good/chart_info/add',params)
+  },
+
+  /**
+   * "ChartInfoId": 399,
+    "ChartClassifyId": 228,
+    "ChartName": "商品价格曲线图2",
+    "ChartType": 7,
+    "DateType": 6,
+    "LeftMin": "212.07",
+    "LeftMax": "7700",
+    "BarChartInfo": {
+      "EdbInfoIdList": [{"EdbInfoId": 101452,"Name": "","Source": 1},
+      ],
+      "DateList": [{"Type": 1,"Date": "","Value": 0,"Name": "","Color": "#00f"}]
+    }
+   * @param {*} params 
+   * @returns 
+   */
+  chartEdit: params => {
+    return http.post('/future_good/chart_info/edit',params)
+  },
+
+  /**
+   * 搜索图表
+   * @param {*} params Keyword IsShowMe
+   * @returns 
+   */
+  searchChart: params => {
+    return http.get('/future_good/chart_info/search_by_es',params)
+  },
+
+  /**
+   * 获取图表bycode
+   * @param {*} params UniqueCode IsCache
+   * @returns 
+   */
+  getChartDetailByCode: params => {
+    return http.get('/future_good/chart_info/detail/from_unique_code',params)
+  },
+
+  /**
+   * 编辑英文信息
+   * @param {*} params  ChartInfoId ChartNameEn UnitEn
+   * @returns 
+   */
+  editChartEn: params => {
+    return http.post('/future_good/chart_info/en/edit',params)
+  },
+
+  /**
+   * 获取最新的图表 Keyword
+   * @param {*} params 
+   * @returns 
+   */
+  getNewestChart: params => {
+    return http.get('/future_good/chart_info/newest',params)
+  },
+
+  /**
+   * 另存为
+   * @param {*} params ChartInfoId  ChartClassifyId  ChartName
+   * @returns 
+   */
+  saveOtherChart: params => {
+    return http.post('/future_good/chart_info/copy',params)
+  },
+
+  /**
+   * 商品价格图表列表
+   * @param {*} params CurrentIndex PageSize ChartClassifyId Keyword IsShowMe
+   * @returns 
+   */
+  getChartList: params => {
+    return http.get('/future_good/chart_info/list',params)
+  },
+
+  /**
+   * 刷新图表 
+   * @param {*} params ChartInfoId
+   * @returns 
+   */
+  refreshChart: params => {
+    return http.get('/future_good/chart_info/refresh',params)
+  },
+
+  /**
+   * 保存图表
+   * @param {*} param ChartInfoId LeftMin LeftMax
+   * @returns  
+   */
+  chartSave: params => {
+    return http.post('/future_good/chart_info/save',params)
+  },
+
+  /**
+   * 交易所列表
+   * @param {*RegionType} parmas 
+   * @returns 
+   */
+  exchangeList: parmas => {
+    return http.get('/future_good/exchange/list',parmas)
+  },
+
+  /**
+   * 利润曲线预览
+   * @param {*} params 
+   *"FutureGoodEdbInfoIdList": [
+        {
+            "EdbInfoId": 5001015,
+            "FromTag": "A",
+        }
+      ],
+      BaseEdbInfoId":101452,
+    "CalculateFormula":"A+B",
+    DateList
+   * @returns 
+   */
+  previewProfitData: params => {
+    return http.post('/future_good/chart_info/profit/preview',params)
+  },
+  
+  /**
+   * 利润曲线新增
+   * @param {*} params 
+   * "ChartClassifyId": 228,
+    "ChartName": "商品利润曲线",
+    "ChartType": 7,
+    "DateType": 6,
+    "LeftMin": "212.07",
+    "LeftMax": "7700",
+    "Extra": {
+        "FutureGoodEdbInfoIdList": [
+            {
+                "EdbInfoId": 5001678,
+                "FromTag": "A",
+            }
+        ],
+        "BaseEdbInfoId": 101452,
+        "CalculateFormula": "A+1",
+        "DateList": [
+            {
+                "Type": 1,
+                "Date": "",
+                "Value": 0,
+                "Name": "",
+                "Color": "#00f"
+            }    
+        ]
+    }
+   * @returns 
+   */
+  profitChartAdd: params => {
+    return http.post('/future_good/chart_info/profit/add',params)
+  },
+
+  /**
+   * 利润曲线编辑
+   * @param {*} params ChartInfoId
+   * @returns 
+   */
+  profitChartEdit: params => {
+    return http.post('/future_good/chart_info/profit/edit',params)
+  },
+  
+}

+ 27 - 0
src/api/modules/groupSendApi.js

@@ -0,0 +1,27 @@
+import http from "@/api/http.js";
+
+/* 群发设置 */
+const groupSendInterface={
+	/** 
+	 * 新增群发消息
+	 * @param Description	摘要
+	 * @param ImgUrl		图片地址
+	 * @param Label			标签,多个标签用、隔开
+	 * @param LinkUrl		跳转地址
+	 * @param Title			标题
+	 */
+	groupMessageAdd:params=>{
+		return http.post('/group_send_msg/add',params)
+	},
+
+	/**
+	 * 获取标签
+	 */
+	groupMessageLabel:()=>{
+		return http.get('/group_send_msg/label_list',{})
+	}
+}
+
+export {
+	groupSendInterface
+}

+ 285 - 0
src/api/modules/interactive.js

@@ -0,0 +1,285 @@
+import http from "@/api/http.js"
+
+/* 互动管理 */
+
+export default {
+	/**
+	 * 报告列表
+	 * @param {ClassifyIdFirst} params 
+	 * @param {Keyword} params 
+	 * @param {SysIsRead} params 0-未读,1-全部
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @param {ClassifyIdSecond} params 
+	 * @returns 
+	 */
+	reportlist: params => {
+		return http.get('/yb/comment/report/list',params)
+	},
+
+	/**
+	 * 留言列表
+	 * @param {CurrentIndex} params 
+	 * @param {PageSize} params 
+	 * @param {ReportId} params 
+	 * @param {ReportChapterId} params 
+	 * @param {HotTopType} params 
+	 * @returns 
+	 */
+	messgaelist: params => {
+		return http.get('/yb/comment/list',params)
+	},
+
+	/**
+	 * 回复
+	 * @param {CommentId content} params 
+	 * @returns 
+	 */
+	reply: params => {
+		return http.post('/yb/comment/reply/add',params)
+	},
+	
+	/**
+	 * 置顶/取消
+	 * @param {CommentId} params 
+	 * @returns 
+	 */
+	setTop: params => {
+		return http.post('/yb/comment/top',params)
+	},
+
+	/**
+	 * 精选/取消
+	 * @param {CommentId} params 
+	 * @returns 
+	 */
+	setHot: params => {
+		return http.post('/yb/comment/hot',params)
+	},
+
+	/**
+	 * 删除回复
+	 * @param {CommentId} params 
+	 * @returns 
+	 */
+	delReply: params => {
+		return http.post('/yb/comment/reply/del',params)
+	},
+
+	/**
+	 * 删除留言
+	 * @param {CommentId} params 
+	 * @returns 
+	 */
+	delMsg: params => {
+		return http.post('/yb/comment/del',params)
+	},
+
+	/**
+	 * 点赞列表
+	 * @param {SortParam} params LikeNum
+	 * @param {SortType} params asc、desc
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @returns 
+	 */
+	likelist: params => {
+		return http.get('/yb/like/report/list',params)
+	},
+
+	/**
+	 * 点赞详情
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @param {ReportId} params 
+	 * @param {ReportChapterId} params 
+	 * @returns 
+	 */
+	likeDetail: params => {
+		return http.get('/yb/like/list',params)
+	},
+
+
+	/**
+	 * 留言板管理员列表
+	 * @param {RoleTypeCode} params yb_comment_admin留言板  yb_voice_admin语音 
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @returns 
+	 */
+	messageManageList: params => {
+		return http.get('/system/role/admin/list',params)
+	},
+
+	/**
+	 * 配置管理员
+	 * @param {AdminIds} params 
+	 * @param {RoleTypeCode} params yb_comment_admin留言板  yb_voice_admin语音 
+	 * @returns 
+	 */
+	setMessageAuth: params => {
+		return http.post('/system/role/admin/add',params)
+	},
+
+		/**
+		 * 删除管理员
+		 * @param {SysRoleAdminId} params 
+		 * @returns 
+		 */
+	delMessageAuth: params => {
+		return http.post('/system/role/admin/del',params)
+	},
+
+		/**
+		 * 所有用户
+		 * @param {RoleLevel} params 
+		 * @returns 
+		 */
+	allUserList: () => {
+		return http.get('/system/role/seller/list')
+	},
+
+	/**
+	 * 语音播报板块列表
+	 */
+	voiceList:params=>{
+		return http.get('/yb/voice/section/list',params)
+	},
+
+	/**
+	 * 语音播报新增板块
+	 * @param SectionName 板块名称
+	 * @param VarietyId 品种id
+	 * @param VarietyName 品种名称
+	 */
+	addVoiceSection:params=>{
+		return http.post('/yb/voice/section/add',params)
+	},
+
+	/**
+	 * 启用/禁用 语音播报板块
+	 * @param SectionId
+	 * @param Enable
+	 */
+	editVoiceSection:params=>{
+		return http.get('/yb/voice/section/edit',params)
+	},
+
+	
+
+	/* ===========问答评论===================== */
+	/**
+	 * 点赞/吐槽列表
+	 * @param {*} params 
+	 * DataType	点赞:like;吐槽:tease
+			SortParam	按照点赞/吐槽数排序:num
+			SortType	asc  ;  desc
+			CurrentIndex
+			PageSize
+	 * @returns 
+	 */
+	questionLikeList: params => {
+		return http.get('/yb/community/question/like_tease_question_list',params)
+	},
+
+	/**
+	 * 点赞/吐槽详情列表
+	 * @param {*} params 
+	 * CommunityQuestionId
+	 * DataType
+	 * CurrentIndex
+	 * PageSize
+	 * @returns 
+	 */
+	questionLikeDetail: params => {
+		return http.get('/yb/community/question/like_tease_list',params)
+	},
+
+	/**
+	 * 问答评论列表
+	 * @param {*} params 
+	 * CurrentIndex
+	 * PageSize
+	 * HotStatus   -1:全部 0-未精选,1-已精选
+	 * @returns 
+	 */
+	questionCommentList: params => {
+		return http.get('/yb/community/question/comment/list',params)
+	},
+
+	/**
+	 * 删除评论
+	 * @param {*} params  CommunityQuestionCommentId
+	 * @returns 
+	 */
+	questionCommentDel: params => {
+		return http.post('/yb/community/question/comment/delete',params)
+	},
+
+	/**
+	 * 设置精选
+	 * @param {*} params CommunityQuestionCommentId
+	 * @returns 
+	 */
+	setHotQuestionComment:  params => {
+		return http.post('/yb/community/question/comment/hot',params)
+	},
+
+	/**
+	 * 留言板消息通知
+	 */
+	getAllNoticeList:params=>{
+		return http.get('/yb/comment/all_list',params)
+	},
+
+	// ==========================留言管理
+	/**
+	 * 所有板块的留言列表
+	 * @param {*} params 
+	 * CurrentIndex 请求页码
+	 * PageSize 请求页数
+	 * KeyWord  搜索关键字 --留言内容
+	 * ProductType 板块类型序号 1-研报 2-问答社区
+	 * @returns 
+	 */
+	getAllBoardMessage:params=>{
+		return http.get('/yb/product/comment/list',params)
+	},
+	/**
+	 * 所有板块列表
+	 * @param {*} params 
+	 * @returns 
+	 */
+	 getProductList:params=>{
+		return http.get('/yb/comment/product',params)
+	},
+	/**
+	 * 置顶/取消置顶
+	 * @param {*} params 
+	 * CommentId 留言Id
+	 * @returns
+	*/
+		messageTop:params=>{
+		return http.post('/yb/comment/top',params)
+	},
+	/**
+	 * 置顶/取消置顶
+	 * @param {*} params 
+	 * CommentId 留言Id
+	 * ProductType 板块类型序号 1-研报 2-问答社区
+	 * @returns 
+	*/
+	messageDelete:params=>{
+		return http.post('/yb/product/comment/del',params)
+	},
+	/**
+	 * 新增回复
+	 * @param {*} params 
+	 * CommentId 留言Id
+	 * content 回复内容
+	 * @returns 
+	*/
+	messageReplay:params=>{
+		return http.post('/yb/comment/reply/add',params)
+	}
+}

+ 364 - 0
src/api/modules/oldApi.js

@@ -0,0 +1,364 @@
+import http from "@/api/http.js"
+
+//  const userLogin = params => { return http.post('/login',params); };  //系统用户登录
+ const userLogin = params => { return http.post('/sysuser/login',params); };  //系统用户登录
+//  const modifyPwd = params => { return http.post('/modifyPwd',params); };  //修改密码
+ const modifyPwd = params => { return http.post('/sysuser/modify/pwd',params); };  //修改密码
+ const checkPwd = params => { return http.get('/sysuser/check_pwd'); };  //判断是否为初始密码
+
+ const reportlist = params => { return http.get('/report/list',params); };  //获取报告列表
+ const reportpublish = params => { return http.post('/report/publish',params); };  //批量发布报告
+ const reportpublishcancle = params => { return http.post('/report/publish/cancle',params); };  //取消发布报告
+ const voiceupload = params => { return http.post('/voice/upload',params); };  //上传音频
+ const resourceVoiceupload = params => { return http.post('/resource/voice/upload',params); };  //上传音频
+ const reportadd = params => { return http.post('/report/add',params); };  //新增报告
+ const reportedit = params => { return http.post('/report/edit',params); };  //编辑报告
+ const reportdelete = params => { return http.post('/report/delete',params); };  //删除报告
+ const reportdetail = params => { return http.get('/report/detail',params); };  //获取报告详情
+ const classifyIdDetail = params => { return http.get('/report/classifyIdDetail',params); };  //通过二级分类id获取报告详情
+ const sendTemplateMsg = params => { return http.post('/report/sendTemplateMsg',params); };  //推送消息
+ const reportauthor = params => { return http.get('/report/author',params); };  //获取作者
+ const getDraft = params => { return http.get('/report/getDraft',params); };  //获取草稿
+ const autosave = params => { return http.post('/report/saveReportContent',params); };  //保存
+
+ const classifylist = params => { return http.get('/classify/list',params); };  //获取分类列表
+ const classifyparent = params => { return http.get('/classify/parent',params); };  //获取父级分类
+ const classifyadd = params => { return http.post('/classify/add',params); };  //新增分类
+ const classifydelete = params => { return http.post('/classify/delete',params); };  //删除分类
+ const classifyedit = params => { return http.post('/classify/edit',params); };  //编辑分类
+ const checkDeleteClassify = params => { return http.get('/classify/checkDeleteClassify',params); };  //检测分类
+ const classifyTelList = params=>{return http.get('/classify/tel_list',params)};//电话会分类
+
+ const bannerlist = params => { return http.get('/banner/list',params); };  //获取banner列表
+ const bannerupload = params => { return http.post('/banner/upload',params); };  //上传banner图
+ const banneradd = params => { return http.post('/banner/add',params); };  //新增banner
+ const banneredit = params => { return http.post('/banner/edit',params); };  //编辑banner
+ const bannerdelete = params => { return http.post('/banner/delete',params); };  //删除banner
+ const getUserUuid=()=>{return http.get('/sysuser/uuid',{})}//获取用户uuid
+
+/* ppt */
+const pptlist = params => { 
+	return http.get('/ppt/list',params); 
+};  //获取ppt列表
+const pptadd = params => { 
+	return http.post('/ppt/add',params); 
+};  //新增ppt
+const pptdetail = params => { 
+	return http.get('/ppt/detail',params); 
+};  //获取ppt详情
+const pptedit = params => { 
+	return http.post('/ppt/edit',params); 
+};  //编辑ppt
+const pptdelete = params => { 
+	return http.post('/ppt/delete',params); 
+};  //删除ppt
+const base64Upload = params => { 
+	return http.post('/ppt/base64Upload',params); 
+};  //上传base64图片 img	是	string	图片base64字符串
+/* ppt上传 */
+const pptUpload = params => { 
+	return http.post('/ppt/base64Upload/batch',params);
+}
+
+/* resource_id	是	int	策略组提供的资源id
+ppt_id */
+/* 获取首页背景 */
+const firstBg = params => {
+	return http.get('/ppt/getImages',params)
+}
+/* 发布 ppt_id	是	int */
+const pptPublish = params => {
+	return http.post('/ppt/publish',params)
+}
+
+/* 客群消息推送接口 */
+const messagePushPost= params => {
+	return http.post('/report/ths/sendTemplateMsg',params)
+}
+
+// 晨周报章节类型列表
+const dayWeekReportChapterList=params=>{
+	return http.get('/report/getDayWeekReportChapterTypeList',params)
+}
+
+//新增晨周报
+const addDayWeekReport=params=>{
+	return http.post('/report/addDayWeekReport',params)
+}
+
+//编辑晨周报
+const editDayWeekReport=params=>{
+	return http.post('/report/editDayWeekReport',params)
+}
+
+// 晨周报章节列表
+const dayWeekChapterList=params=>{
+	return http.get('/report/getReportChapterList',params)
+}
+
+//章节标签列表
+const chapterTrendTagList=()=>{
+	return http.get('/report/getChapterTrendTag',{})
+}
+
+//编辑章节标签
+const editChapterTrendTag=params=>{
+	return http.post('/report/editChapterTrendTag',params)
+}
+
+//晨报周报章节详情
+const chapterDetail=params=>{
+	return http.get('/report/getDayWeekChapter',params)
+}
+
+//晨报数据指标列表
+const dayTicketList=params=>{
+	return http.get('/report/getDayReportTickerList',params)
+}
+
+//保存晨报周报章节报告
+const saveChapterReport=params=>{
+	return http.post('/report/editDayWeekChapter',params)
+}
+
+//获取晨报/周报上一篇内容
+const getChapterReportBefore=params=>{
+	return http.get('/report/getLastDayWeekReportChapter',params)
+}
+
+//判断晨报周报当前章节是否为最后一篇发布的
+const getChapterReportIsLast=params=>{
+	return http.get('/report/isLastDayWeekReportChapter',params)
+}
+
+//发布晨报周报章节
+const publishChapterReport=params=>{
+	return http.post('/report/publishDayWeekReportChapter',params)
+}
+
+//发布晨报周报
+const publishDayOrWeekReport=params=>{
+	return http.post('/report/publishDayWeekReport',params)
+}
+
+//晨报周报更新暂停的时间
+const dayWeekPauseTime=params=>{
+	return http.get('/report/getDayWeekReportPauseTime',{})
+}
+
+//晨报周报设置更新规则
+const dayWeekUpdateRule=params=>{
+	return http.post('/report/setDayWeekReportUpdateRule',params)
+}
+
+// 周报校验音频
+const weekReportValidAudio=params=>{
+	return http.get('/report/CheckDayWeekReportChapterVideo',params)
+}
+
+
+const chapterQRCodeImg=params=>{
+	return http.post('/report/getSunCode',params)
+}
+//上传阿里云 oss获取临时票据
+const getOSSSign=()=>{
+	return http.get('/resource/oss/get_sts_token',{})
+}
+
+/* 推送客户群设置 */
+// 获取待推送报告类型
+/**
+ * @returns 
+ * List - 报告类型列表
+ * 
+ */
+const getBeingPushedReportType=()=>{
+	return http.get('/yb/ths_send/report_type',{})
+}
+// 获取待推送列表
+/**
+ * 
+ * @param {
+ * Title 推送标题
+ * ReportType 内容类型
+ * CreateTimeStart 创建开始日期
+ * CreateTimeEnd 创建结束日期
+ * PushTimeStart 推送开始日期
+ * PushTimeEnd 推送结束日期
+ * PageSize 每页条数
+ * CurrentIndex 当前页数
+ * } params 
+ * @returns 
+ */
+const getBeingPushedReportList=params=>{
+	return http.get('/yb/ths_send/list',params)
+}
+// 设置推送时间
+/** 
+ * @param {
+ * SendId 序号
+ * PushTime 新的推送时间
+ * } params 
+ * @returns 
+ */
+const setPushingTime=params=>{
+	return http.post('/yb/ths_send/modify_push_time',params)
+}
+
+//研报标记状态
+/**
+ * 
+ * @param {
+ * Status 编辑状态
+ * ReportId 报告ID
+ * } params
+ * @returns 
+ */
+const markReport = params =>{
+  return http.post('/report/mark',params)
+}
+
+// 获取章节类型列表
+/**
+ * @param params.ReportType Enum-报告类型:day-晨报;week-周报
+ * @param params.PageSize Integer-每页条数
+ * @param params.CurrentIndex Integer-当前页数
+ * @returns 章节类型列表
+ */
+const getchapterTypeList=params=>{
+ return http.get('/report/chapter_type/list',params)
+}
+
+// 新增章节类型
+/**
+ * @param params.ReportChapterTypeName String-章节名称
+ * @param params.Sort Integer-排序
+ * @param params.ReportType Enum-报告类型:day-晨报;week-周报
+ * @param params.SelectedImage String-选中的icon
+ * @param params.UnselectedImage String-未选中的icon
+ * @param params.WordsImage String-带字的icon
+ * @param params.EditImgUrl String-后台-章节列表封面图
+ * @param params.IsShow Enum-小程序端是否展示:0-隐藏;1-显示
+ */
+const addChapterType=params=>{
+	return http.post('/report/chapter_type/add',params)
+ }
+
+ // 编辑章节类型
+/**
+ * @param params.ReportChapterTypeId Integer-章节ID
+ * @param params.ReportChapterTypeName String-章节名称
+ * @param params.Sort Integer-排序
+ * @param params.ReportType Enum-报告类型:day-晨报;week-周报
+ * @param params.SelectedImage String-选中的icon
+ * @param params.UnselectedImage String-未选中的icon
+ * @param params.WordsImage String-带字的icon
+ * @param params.EditImgUrl String-后台-章节列表封面图
+ * @param params.IsShow Enum-小程序端是否展示:0-隐藏;1-显示
+ */
+const editChapterType=params=>{
+	return http.post('/report/chapter_type/edit',params)
+ }
+ 
+// 删除章节
+/**
+ * @param params.ReportChapterTypeId Integer-章节ID
+ */
+const deleteChapterType=params=>{
+	return http.post('/report/chapter_type/del',params)
+}
+
+// 获取章节类型的权限列表
+/**
+ * @param params.ReportChapterTypeId Integer-章节ID
+ * @returns 权限列表
+ */
+const getchapterTPermissionList=params=>{
+	return http.get('/report/chapter_type/permission_list',params)
+ }
+
+// 设置章节类型的权限
+/**
+ * @param params.ReportChapterTypeId Integer-章节ID
+ * @param params.ChartPermissionIdList Array<Integer>-权限IDs
+ */
+const setchapterTPermission=params=>{
+	return http.post('/report/chapter_type/auth_setting',params)
+}
+
+// 同时推送客群和模板消息
+const reportMessageSend=params=>{
+	return http.post('/report/sendMsg',params)
+}
+
+export {
+	userLogin,
+	modifyPwd,
+	checkPwd,
+	reportlist,
+	reportpublish,
+	reportpublishcancle,
+	voiceupload,
+	resourceVoiceupload,
+	reportadd,
+	reportedit,
+	reportdelete,
+	reportdetail,
+	classifyIdDetail,
+	sendTemplateMsg,
+	reportauthor,
+	getDraft,
+	autosave,
+	classifylist,
+	classifyparent,
+	classifyadd,
+	classifydelete,
+	classifyedit,
+	checkDeleteClassify,
+	bannerlist,
+	bannerupload,
+	banneradd,
+	banneredit,
+	bannerdelete,
+	pptlist,
+	pptadd,
+	pptdetail,
+	pptedit,
+	pptdelete,
+	base64Upload,
+	pptUpload,
+	firstBg,
+	pptPublish,
+	messagePushPost,
+	dayWeekReportChapterList,
+	addDayWeekReport,
+	dayWeekChapterList,
+	chapterTrendTagList,
+	editChapterTrendTag,
+	editDayWeekReport,
+	chapterDetail,
+	dayTicketList,
+	saveChapterReport,
+	getChapterReportBefore,
+	getChapterReportIsLast,
+	publishChapterReport,
+	publishDayOrWeekReport,
+	dayWeekPauseTime,
+	dayWeekUpdateRule,
+	chapterQRCodeImg,
+	getOSSSign,
+  classifyTelList,
+	getBeingPushedReportType,
+	getBeingPushedReportList,
+	setPushingTime,
+  markReport,
+	getchapterTypeList,
+	addChapterType,
+	editChapterType,
+	deleteChapterType,
+	getchapterTPermissionList,
+	setchapterTPermission,
+	reportMessageSend,
+	weekReportValidAudio,
+	getUserUuid
+}

+ 58 - 0
src/api/modules/pdfApi.js

@@ -0,0 +1,58 @@
+//PDF报告相关接口
+import http from "@/api/http.js"
+
+const pdfInterface = {
+    /**
+     * 添加PDF
+     * @param {Object} params 
+     * @param {String} params.PdfName PDF名称
+     * @param {String} params.PdfUrl PDF地址
+     * @returns 
+     */
+    addPdf:params=>{
+        return http.post('/yb/pdf/add',params)
+    },
+    /**
+     * 编辑PDF
+     * @param {Object} params 
+     * @param {Number} params.PdfId PDF ID
+     * @param {String} params.PdfName PDF名称
+     * @param {String} params.PdfUrl PDF地址
+     * @returns 
+     */
+    editPdf:params=>{
+        return http.post('/yb/pdf/edit',params)
+    },
+    /**
+     * 删除PDF
+     * @param {Object} params 
+     * @param {Number} params.PdfId 
+     * @returns 
+     */
+    deletePdf:params=>{
+        return http.post('/yb/pdf/del',params)
+    },
+    /**
+     * 上传PDF文件
+     * @param {File} params 
+     * @returns 
+     */
+    uploadPdf:params=>{
+        return http.post('/yb/pdf/upload',params)
+    },
+    /**
+     * PDF列表
+     * @param {Object} params 
+     * @param {Number} params.PageSize
+     * @param {Number} params.CurrentIndex
+     * @param {String} params.Keyword
+     * @param {String} params.StartTime
+     * @param {String} params.EndTime
+     * @returns 
+     */
+    getPdfList:params=>{
+        return http.get('/yb/pdf/page_list',params)
+    }
+}
+
+export {pdfInterface}

+ 245 - 0
src/api/modules/pptApi.js

@@ -0,0 +1,245 @@
+import http from "@/api/http.js"
+/**
+ * 图库9.0(智能PPT版式) 接口
+ */
+export default{
+    /**
+     * ppt列表
+     * KeyWord:string 搜索关键字
+     */
+    getpptList:params=>{
+        return http.get('/pptv2/list',params)
+    },
+    /**
+     * 新增ppt
+     * FirstPage:{Title,ReportType,PptDate,ImgUrl} 封面信息
+     * Content:string ppt具体内容,转字符串
+     * GroupId:目录id
+     */
+    addppt:params=>{
+        return http.post('/pptv2/add',params)
+    },
+    /** 
+     * 编辑ppt
+     * PptId
+     * FirstPage
+     * Content
+     */
+    editppt:params=>{
+        return http.post('/pptv2/edit',params)
+    },
+    /**
+     * 删除ppt
+     * PptId
+     */
+    deleteppt:params=>{
+        return http.post('/pptv2/delete',params)
+    },
+    /**
+     * 获取ppt详情
+     * PptId
+     */
+    getpptDetail:params=>{
+        return http.get('/pptv2/detail',params)
+    },
+    /**
+     * 上传ppt文件
+     *  FormData:PptId
+     *  FormData:file
+     */
+    uploadPPTXFile:params=>{
+        return http.post('/pptv2/pptUpload',params)
+    },
+    /**
+     * 发布ppt
+     * PptId
+     * PptxUrl
+     */
+    publishPPT:params=>{
+        return http.post('/pptv2/publish',params)
+    },
+    /**
+     * 定时保存
+     * PptId
+     * FirstPage
+     * Content
+     */
+    saveLog:params=>{
+        return http.post('/pptv2/saveLog',params)
+    },
+    /**
+     * 获取PPT配置
+     */
+    getConfig:params=>{
+        return http.get('/pptv2/config',params)
+    },
+    /**
+     * ppt目录列表
+     * IsNewPpt:是否只展示新版ppt:1展示,0不展示,不传默认0
+     */
+    getCatalogsList:params=>{
+        return http.get('/pptv2/groups',params)
+    },
+    /**
+     * ppt目录列表(私有) 
+     */
+    getPrivateCatalogList:params=>{
+      return http.get('pptv2/group/name',params)
+    },
+    /**
+     * 新增ppt目录
+     * GroupName:目录名称
+     */
+    addCatalog:params=>{
+        return http.post('/pptv2/group/add',params)
+    },
+    /**
+     * 重命名ppt目录
+     * GroupId:目录Id
+     * GroupName:目录名称
+     */
+    renameCatalog:params=>{
+        return http.post('/pptv2/group/rename',params)
+    },
+    /**
+     * 删除ppt目录
+     * GroupId
+     */
+    deleteCatalog:params=>{
+        return http.post('/pptv2/group/delete',params)
+    },
+    /**
+     * 共享/取消共享ppt目录
+     * GroupId
+     */
+    shareCatalog:params=>{
+        return http.post('/pptv2/group/share',params)
+    },
+    /**
+     * 复制ppt目录
+     * GroupId
+     */
+    copyCatalog:params=>{
+        return http.post('/pptv2/group/copy',params)
+    },
+    /**
+     * 共享/取消共享单个ppt
+     * GroupPptId:目录和ppt绑定序号
+     */
+    sharePPT:params=>{
+        return http.post('/pptv2/share',params)
+    },
+    /**
+     * ppt目录列表内容(私有目录)
+     * GroupId:目录ID
+     */
+    getCatalogListByGroupId:params=>{
+        return http.get('/pptv2/group/ppt/list',params)
+    },
+    /**
+     * ppt目录列表内容(公有/私有目录)
+     * AdminId:分享人Id/KeyWorld:ppt标题/IsPrivate:true/false 是否查询私有目录
+     */
+    getCatalogListByAdminId:params=>{
+      return http.get('/pptv2/share/ppt/list',params)
+    },
+    searchPPTByKeyWorld:params=>{
+      return http.get('/pptv2/share/ppt/list',params)
+    },
+    /**
+     * 移动目录里的ppt
+     * GroupPptId
+     * PrevGroupPptId:上一个ppt和目录的绑定序号,置顶则0
+     * NextGroupPptId:下一个ppt和目录的绑定序号,置尾则0
+     * GroupId
+     */
+    movePPT:params=>{
+        return http.post('/pptv2/move',params)
+    },
+    /**
+     * 移动目录
+     * PrevGroupId:上一个目录Id,置顶则0
+     * NextGroupId:下一个目录Id,置尾则0
+     * GroupId
+     */
+    moveCatalog:params=>{
+        return http.post('/pptv2/group/move',params)
+    },
+    /**
+     * 复制单个ppt
+     * PptId
+     * GroupId
+     */
+    copyPPT:params=>{
+        return http.post('/pptv2/copy',params)
+    },
+    /**
+     * 搜索单个PPT
+     * KeyWord
+     */
+    searchPPT:params=>{
+        return http.get('/pptv2/group/ppt/search',params)
+    },
+    /**
+     * ppt转双周报
+     */
+    transReport:params=>{
+        return http.post('/pptv2/to_report',params)
+    },
+
+    /**
+     * 设置共享
+     * @param {*} params 
+		 * PptId 
+		 * GrantType  1:全部ficc研究员;2:指定成员
+		 * AdminIdStr
+     */
+    setShareAuth: params => {
+      return http.post('/pptv2/grant',params)
+    },
+		
+    /**
+     * 取消共享
+     * @param {*} params  PptId
+     * @returns 
+     */
+    cancelShareAuth: params => {
+        return http.post('/pptv2/grant/cancel',params)
+    },
+
+    /**
+     * 获取分配列表
+     * @param {*} params GroupId
+     */
+    getSharedList: params => {
+        return http.get('/pptv2/grant/ppt/list',params)
+    },
+    
+    /**
+     * 获取分配ppt详情
+     * @param {*} params PptId
+     * @returns 
+     */
+    getSharedDetail: params => {
+        return http.get('/pptv2/grant/info',params)
+    },
+
+    /**
+     * 单个PPT转英文PPT
+     * @param {*} params PptId GroupId
+     * @returns 
+     */
+    transPPTtoEn:params=>{
+      return http.post('pptv2/toEn',params)
+    },
+
+    /**
+     * 多个PPT转英文PPT
+     * @param {*} params PptIds GroupId
+     * @returns 
+     */
+    transCatalogtoEn:params=>{
+      return http.post('pptv2/batchToEn',params)
+    }
+
+}

+ 206 - 0
src/api/modules/pptEnApi.js

@@ -0,0 +1,206 @@
+import http from "@/api/http.js"
+/**
+ * 英文PPT 接口 
+ */
+export const pptEnInterface = {
+    /**
+     * 新增ppt
+     * FirstPage:{Title,ReportType,PptDate,ImgUrl} 封面信息
+     * Content:string ppt具体内容,转字符串
+     * GroupId:目录id
+     */
+    addppt:params=>{
+        return http.post('/ppt_english/add',params)
+    },
+    /** 
+     * 编辑ppt
+     * PptId
+     * FirstPage
+     * Content
+     */
+    editppt:params=>{
+        return http.post('/ppt_english/edit',params)
+    },
+    /**
+     * 删除ppt
+     * PptId
+     */
+    deleteppt:params=>{
+        return http.post('/ppt_english/delete',params)
+    },
+    /**
+     * 获取ppt详情
+     * PptId
+     */
+    getpptDetail:params=>{
+        return http.get('/ppt_english/detail',params)
+    },
+    /**
+     * 发布ppt
+     * PptId
+     * PptxUrl
+     */
+    publishPPT:params=>{
+        return http.post('/ppt_english/publish',params)
+    },
+    /**
+     * 定时保存
+     * PptId
+     * FirstPage
+     * Content
+     */
+    saveLog:params=>{
+        return http.post('/ppt_english/saveLog',params)
+    },
+    /**
+     * 获取PPT配置
+     */
+    getConfig:params=>{
+        return http.get('/ppt_english/config',params)
+    },
+    /**
+     * ppt目录列表
+     * IsNewPpt:是否只展示新版ppt:1展示,0不展示,不传默认0
+     */
+    getCatalogsList:params=>{
+        return http.get('/ppt_english/groups',params)
+    },
+    /**
+     * ppt目录列表(私有) 
+     */
+    getPrivateCatalogList:params=>{
+      return http.get('/ppt_english/group/name',params)
+    },
+    /**
+     * 新增ppt目录
+     * GroupName:目录名称
+     */
+    addCatalog:params=>{
+        return http.post('/ppt_english/group/add',params)
+    },
+    /**
+     * 重命名ppt目录
+     * GroupId:目录Id
+     * GroupName:目录名称
+     */
+    renameCatalog:params=>{
+        return http.post('/ppt_english/group/rename',params)
+    },
+    /**
+     * 删除ppt目录
+     * GroupId
+     */
+    deleteCatalog:params=>{
+        return http.post('/ppt_english/group/delete',params)
+    },
+    /**
+     * 共享/取消共享ppt目录
+     * GroupId
+     */
+    shareCatalog:params=>{
+        return http.post('/ppt_english/group/share',params)
+    },
+    /**
+     * 复制ppt目录
+     * GroupId
+     */
+    copyCatalog:params=>{
+        return http.post('/ppt_english/group/copy',params)
+    },
+    /**
+     * 共享/取消共享单个ppt
+     * GroupPptId:目录和ppt绑定序号
+     */
+    sharePPT:params=>{
+        return http.post('/ppt_english/share',params)
+    },
+    /**
+     * ppt目录列表内容(私有目录)
+     * GroupId:目录ID
+     */
+    getCatalogListByGroupId:params=>{
+        return http.get('/ppt_english/group/ppt/list',params)
+    },
+    /**
+     * ppt目录列表内容(公有目录)
+     * AdminId:分享人Id/KeyWorld:ppt标题
+     */
+    getCatalogListByAdminId:params=>{
+      return http.get('/ppt_english/share/ppt/list',params)
+    },
+    searchPPTByKeyWorld:params=>{
+      return http.get('/ppt_english/share/ppt/list',params)
+    },
+    /**
+     * 移动目录里的ppt
+     * GroupPptId
+     * PrevGroupPptId:上一个ppt和目录的绑定序号,置顶则0
+     * NextGroupPptId:下一个ppt和目录的绑定序号,置尾则0
+     * GroupId
+     */
+    movePPT:params=>{
+        return http.post('/ppt_english/move',params)
+    },
+    /**
+     * 移动目录
+     * PrevGroupId:上一个目录Id,置顶则0
+     * NextGroupId:下一个目录Id,置尾则0
+     * GroupId
+     */
+    moveCatalog:params=>{
+        return http.post('/ppt_english/group/move',params)
+    },
+    /**
+     * 复制单个ppt
+     * PptId
+     * GroupId
+     */
+    copyPPT:params=>{
+        return http.post('/ppt_english/copy',params)
+    },
+
+    /**
+     * 设置共享
+     * @param {*} params 
+		 * PptId 
+		 * GrantType  1:全部ficc研究员;2:指定成员
+		 * AdminIdStr
+     */
+    setShareAuth: params => {
+      return http.post('/ppt_english/grant',params)
+    },
+		
+    /**
+     * 取消共享
+     * @param {*} params  PptId
+     * @returns 
+     */
+    cancelShareAuth: params => {
+        return http.post('/ppt_english/grant/cancel',params)
+    },
+
+    /**
+     * 获取分配列表
+     * @param {*} params GroupId
+     */
+    getSharedList: params => {
+        return http.get('/ppt_english/grant/ppt/list',params)
+    },
+    
+    /**
+     * 获取分配ppt详情
+     * @param {*} params PptId
+     * @returns 
+     */
+    getSharedDetail: params => {
+        return http.get('/ppt_english/grant/info',params)
+    },
+    /**
+     * 英文PPT转报告
+     * @param {*} params PptId ClassifyIdFirst ClassifyIdSecond Title Abstract
+     */
+    transPPTtoReport:params => {
+      return http.post('/ppt_english/toReport',params)
+    }
+
+}

+ 263 - 0
src/api/modules/predictEdbApi.js

@@ -0,0 +1,263 @@
+import http from "@/api/http.js"
+
+/**
+ * 获取分类
+ * @returns 
+ */
+export const classifyList = params => {
+  return http.get('/datamanage/predict_classify/list',params)
+}
+
+/**
+ * 新增分类
+ * @param {*} params  "ClassifyName": "分类1-2"
+ * @returns 
+ */
+export const classifyAdd =  params =>{
+	return http.post('/datamanage/predict_classify/add',params)
+}
+
+/**
+ * 编辑分类
+ * @param {*} params  ClassifyName ClassifyId
+ * @returns 
+ */
+export const classifyEdit =  params =>{
+	return http.post('/datamanage/predict_classify/edit',params)
+}
+
+/**
+ * 删除分类检测
+ * @param {*} params ClassifyId EdbInfoId
+ * @returns 
+ */
+export const classifyDelCheck = params =>{
+	return  http.post('/datamanage/predict_classify/delete/check',params)
+}
+
+/**
+ * 删除分类
+ * @param {*} params ClassifyId EdbInfoId
+ * @returns 
+ */
+export const classifyDel = params =>{
+	return  http.post('/datamanage/predict_classify/delete',params)
+}
+
+/**
+ * 移动分类
+ * @param {*} params ClassifyId "PrevClassifyId":1, "NextClassifyId":2,
+ * @returns 
+ */
+export const classifyMove = params =>{
+	return  http.post('/datamanage/predict_classify/move',params)
+}
+
+/**
+ * 移动指标
+ * @param {*} params ClassifyId EdbInfoId PrevEdbInfoId NextEdbInfoId
+ * @returns 
+ */
+export const ebdMove = params => {
+	return http.post('/datamanage/predict_edb_info/move',params)
+}
+
+/**
+ * 预测指标图表列表
+ * @param {*} params Keyword AdminId CurrentIndex  PageSize  ClassifyId 
+ */
+export const edbList = params => {
+  return http.get('/datamanage/predict_edb_info/chart/list',params)
+}
+
+/**
+ * 一级表格分类
+ * @param {*} params 
+ * @returns 
+ */
+export const classifyOne = params => {
+	return http.get('/datamanage/predict_classify/items',params)
+}
+
+/**
+ * 新增指标
+ * @param {*} params ClassifyId SourceEdbInfoId EdbName RuleList
+ * EdbInfoIdArr: { EdbInfoId FromTag }
+ * @returns 
+ */
+export const edbAdd = params => {
+	return http.post('/datamanage/predict_edb_info/add',params)
+}
+
+/**
+ * 修改指标 
+ * @param {*} params EdbInfoId ClassifyId  EdbName RuleList
+ * @returns 
+ */
+export const edbEdit = params => {
+	return http.post('/datamanage/predict_edb_info/edit',params)
+}
+
+/**
+ * 获取指标详情
+ * @param {*} params EdbInfoId 
+ * @returns 
+ */
+export const edbDetail = params => {
+	return http.get('/datamanage/predict_edb_info/detail',params)
+}
+
+/**
+ * 获取指标数据列表 EdbInfoId CurrentIndex PageSize
+ * @param {*} params 
+ * @returns 
+ */
+export const edbDataInfo = params => {
+  return http.get('/datamanage/predict_edb_info/list',params)
+}
+
+/**
+ * 获取指标图表数据 EdbInfoId  DateType=10&StartDate=&EndDate
+ * @param {*} params 
+ */
+export const edbChartInfo = params => {
+  return http.get('/datamanage/predict_edb_info/data',params)
+}
+
+/**
+ * 搜索指标
+ * @param {*} params  Keyword
+ * @returns 
+ */
+export const edbSearch = params => {
+	return http.get('/datamanage/predict_edb_info/filter_by_es',params)
+}
+
+/**
+ * 设置缩略图 
+ * @param {*} params EdbInfoId  ImageUrl
+ * @returns 
+ */
+export const setImg = params => {
+	return http.post('/datamanage/predict_edb_info/image/set',params)
+}
+
+/**
+ * 指标刷新
+ * @param {*} params EdbInfoId
+ * @returns 
+ * 
+ */
+export const edbRefresh = params => {
+	return http.get('/datamanage/predict_edb_info/refresh/all',params)
+}
+/**
+ * 指标部分刷新
+ * @param {*} params EdbInfoId
+ * @returns 
+ * 
+ */
+ export const edbPartRefresh = params => {
+	return http.get('/datamanage/predict_edb_info/refresh',params)
+}
+
+/**
+ * 新增预测指标时预览图表详情数据
+ * @param SourceEdbInfoId 来源指标id
+ * @param PredictEndDate 预测截止日期
+ * @param RuleType 预测规则,1:最新,2:固定值
+ * @param FixedValue 固定值的数据
+ * @param DateType 日期类型:1:00年至今,2:10年至今,3:15年至今,4:年初至今,5:自定义时间,6:自定义起始时间至今,7:18年至今,8:19年至今,9:20年至今,10:全部
+ * @param StartDate 自定义开始日期
+ * @param EndDate 自定义结束日期
+ * @param Calendar 公历/农历
+ * @param ChartType 生成样式:1:曲线图,2:季节性图
+ * @param SeasonStartDate 季节性图开始日期
+ * @param SeasonEndDate 季节性图结束日期
+ */
+export const edbChartDataForAdd=params=>{
+	return http.post('/datamanage/predict_edb_info/chart/data/list',params)
+}
+/**
+ * 指标运算
+ * @param {*} params 
+ * "CalculateFormula": "A+5",
+	"ClassifyId": 315,
+	"EdbName": "乙二醇期货价格(预测)+5",
+	"Frequency": "日度",
+	"Unit": "无",
+	"EdbInfoIdArr": [
+		{
+			"EdbInfoId": 101812,
+			"FromTag": "A"
+		}
+	]
+ * @returns 
+ */
+export const calculateEdbSave = params => {
+	return http.post('/datamanage/predict_edb_info/calculate/save',params)
+}
+
+/**
+ * 计算指标
+ * @param {*} params 
+ * EdbInfoId":0,
+	"Source": 33,
+	"EdbName": "乙二醇期货价格(预测)同差",
+	"Unit": "无",
+	"ClassifyId": 315,
+	"Frequency": "日度",
+	"FromEdbInfoId": 101812
+ * @returns 
+ */
+export const operateEdbSave = params => {
+	return http.post('/datamanage/predict_edb_info/calculate/batch/save',params)
+}
+
+/**
+ * 规则9动态环差 获取展示数据
+ * @param {*} params 
+	"RuleType": 9,
+	"EndDate": "2022-11-30",
+	"Value": "A-B",
+	"EdbInfoIdArr": [{
+			"EdbInfoId": 101935,
+			"FromTag": "A"
+		}]
+ * @returns 
+ */
+export const getRuleNineData = params => {
+	return http.post('/datamanage/predict_edb_info/rule/calculate_by_nine',params)
+}
+
+/**
+ * 批量计算
+ * @param {*} params 
+ * CalculateId
+ * CalculateInfo {
+ * 	"ClassifyId": 341,
+		"EdbName": "PVC出口占比同比2",
+		"Formula": "1",
+		"Frequency": "月度",
+		"FromEdbInfoId": 101712,
+		"MoveFrequency": "天",
+		"MoveType": 1,
+		"Source": 6,
+		"Unit": "无"
+	* }
+	* @returns 
+	*/
+export const batchCalculateTargetAdd = params => {
+	return http.post('/datamanage/predict_edb_info/calculate/batch/save/batch',params)
+}
+
+/**
+ * 保存上下限
+ * @param {*} params "EdbInfoId": 102607,
+    "MaxValue": 2000,
+    "MinValue": -200
+ * @returns 
+ */
+export const saveChartInfo = params => {
+	return http.post('/datamanage/predict_edb_info/modify',params)
+}

+ 63 - 0
src/api/modules/priceDriven.js

@@ -0,0 +1,63 @@
+// 价格驱动
+import http from "@/api/http.js"
+
+
+/**
+ * 分类列表
+ * @returns 
+ */
+export const classifyList = () => {
+  return http.get('/yb/price_driven/permission_tree')
+}
+
+/**
+ * 驱动报告详情
+ * @param {ChartPermissionId} params 
+ * @returns 
+ */
+export const reportDetail = params => {
+  return http.get('/yb/price_driven/detail',params)
+}
+
+/**
+ * 更新内容
+ * @param {} params
+ * "ChartPermissionId": 1,
+  "MainVariable": "这是关键变量",
+  "CoreDrivenType": 0,
+  "CoreDrivenContent": "这是核心驱动内容",
+  "CoreContent": "这是核心内容2",
+  "LastUpdateAdminId": 66,
+  "LastUpdateAdminName": "王沛" 
+ */
+export const saveReport = params => {
+  return http.post('/yb/price_driven/update',params)
+}
+
+/**
+ * 开启/关闭分类
+ * @param {*} params 
+ * "ChartPermissionId": 1,
+    "PriceDrivenState": 1
+ * @returns 
+ */
+export const updateState = params => {
+  return http.post('/yb/price_driven/switch_permission_state',params)
+}
+
+/**
+ * 推送模板消息 PriceDrivenId
+ * @returns 
+ */
+export const pushTemplateMessage = params => {
+  return http.post('/yb/price_driven/send_template_msg',params)
+}
+
+/**
+ * 推送客户群
+ * @param {PriceDrivenId} params 
+ * @returns 
+ */
+export const pushGroupMessage= params => {
+  return http.post('/yb/price_driven/send_ths_msg',params)
+}

+ 16 - 0
src/api/modules/pushSettingApi.js

@@ -0,0 +1,16 @@
+//推送客群设置
+import http from "@/api/http.js"
+export const pushSettingInterface = {
+  getPriorityList:params=>{
+    return http.get('/yb/ths_send/config/list',params)
+  },
+  addPriority:params=>{
+    return http.post('/yb/ths_send/config/add',params)
+  },
+  editPriority:params=>{
+    return http.post('/yb/ths_send/config/edit',params)
+  },
+  deletePriority:params=>{
+    return http.post('/yb/ths_send/config/delete',params)
+  }
+}

+ 30 - 0
src/api/modules/rai/bannerApi.js

@@ -0,0 +1,30 @@
+import http from "@/api/http.js";
+const raiBanner = {
+  //图片选择列表
+  getBannerImgList: (params) => {
+    return http.get("/cygx/banner/img/list", params);
+  },
+  //banner列表
+  getBannerList: (params) => {
+    return http.get("/cygx/banner/list", params);
+  },
+  //banner详情
+  getBannerDetail: (params) => {
+    return http.get("/cygx/banner/detail", params);
+  },
+  //添加修改banne
+  bannerPreserveAndPublish: (params) => {
+    return http.post("/cygx/banner/PreserveAndPublish", params);
+  },
+  //发布/取消发布
+  bannerPublishAndcancel: (params) => {
+    return http.post("/cygx/banner/publishAndcancel", params);
+  },
+  //移动顺序
+  bannerMoveDrag: (params) => {
+    return http.post("/cygx/banner/move", params);
+  },
+  
+};
+
+export default raiBanner;

+ 31 - 0
src/api/modules/rai/internalApi.js

@@ -0,0 +1,31 @@
+/*产品内测接口*/
+
+import http from "@/api/http.js";
+
+const internalInterface = {
+  // 添加产品内测文章
+  internalPreserveAndPublish: (params) => {
+    return http.post("/cygx/productInterior/preserveAndPublish", params);
+  },
+  //  详情
+  internalProductInteriorDetail: (params) => {
+    return http.get("/cygx/productInterior/detail", params);
+  },
+  //  列表
+  internalProductInteriorList: (params) => {
+    return http.get("/cygx/productInterior/list", params);
+  },
+  //  发布取消发布
+  internalProductInteriorPublish: (params) => {
+    return http.post("/cygx/productInterior/publishAndcancel", params);
+  },  
+  //  删除
+  internalProductInteriorDelete: (params) => {
+    return http.post("/cygx/productInterior/delete", params);
+  },
+  //  可见范围修改
+  internalProductInteriorVisibleRange: (params) => {
+    return http.post("/cygx/productInterior/visibleRange", params);
+  },
+};
+export default internalInterface;

+ 18 - 0
src/api/modules/rai/pointsApi.js

@@ -0,0 +1,18 @@
+import http from "@/api/http.js";
+
+const raiPoints = {
+  // 扣点设置
+  activityPointsSet: (params) => {
+    return http.get("/cygx/activity/pointsSet", params);
+  },
+  // 权益办会机构搜索
+  activityCompanySearch: (params) => {
+    return http.get("/cygx/activity/companySearch", params);
+  },
+  // 研选服务点数明细
+  activityPointsBill: (params) => {
+    return http.get("/custom/company/activity/points/bill", params);
+  },
+};
+
+export default raiPoints;

+ 1310 - 0
src/api/modules/rai/raiApi.js

@@ -0,0 +1,1310 @@
+import http from "@/api/http.js";
+import timeLineApi from "./timeLine.js";
+import raiReport from "./reportApi";
+import raiBanner from "./bannerApi.js";
+import internalInterface from "./internalApi.js";
+import raiPoints from "./pointsApi.js";
+/* 权益小程序管理 */
+const raiInterface = {
+  ...raiReport,
+  ...timeLineApi,
+  ...raiBanner,
+  ...internalInterface,
+  ...raiPoints,
+  /* 
+		优化建议列表
+		PageSize CurrentIndex KeyWord  
+	*/
+  adviceList: (params) => {
+    return http.get("/cygx/advice/list", params);
+  },
+  /* 
+		行业图谱
+	*/
+  getMap: (params) => {
+    return http.get("/cygx/industry/map/list", params);
+  },
+  /* 
+		新增节点  
+		"IndustryMapId": 0,
+		"IndustryMapName": "string" 
+	*/
+  addNode: (params) => {
+    return http.post("/cygx/industry/map/add", params);
+  },
+  /* 
+		删除节点 "IndustryMapId": 0
+	*/
+  delNode: (params) => {
+    return http.post("/cygx/industry/map/delete", params);
+  },
+  /* 
+		修改节点名称 "IndustryMapId": 0  IndustryMapName
+	*/
+  editNode: (params) => {
+    return http.post("/cygx/industry/map/edit", params);
+  },
+  /* 
+		访谈申请列表
+		PageSize CurrentIndex KeyWord  
+	*/
+  interviewList: (params) => {
+    return http.get("/cygx/interview/list", params);
+  },
+  /* 
+		取消访谈/申请访谈
+		HandleType 1 更新 2 取消 InterviewApplyId InterviewTime
+	*/
+  cancelInterview: (params) => {
+    return http.post("/cygx/interview/status/modify", params);
+  },
+  /* 
+		权益申请列表 PageSize CurrentIndex KeyWord CustomType 
+	*/
+  applyList: (params) => {
+    return http.get("/cygx/apply/record/list", params);
+  },
+  /* 处理申请 */
+  delApply: (params) => {
+    return http.post("/cygx/apply/record/deal", params);
+  },
+  /* 获取产业管理一级分类接口 */
+  chartPermission: (params) => {
+    return http.get("/cygx/chartPermission/first", params);
+  },
+  /* 获取产业详情 */
+  industrialManagementDetailIs: (params) => {
+    return http.get("/cygx/industrialManagement/industrialManagementDetail", params);
+  },
+
+  /*产业管理
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   *************************分析师模块*********************/
+
+  /**
+   * 产业管理添加分析师
+   * @param {AnalystName } params 分析师名称
+   * @param {IndustrialManagementId } params  产业id
+   * @returns
+   */
+  industrialAnalyst: (params) => {
+    return http.post("/cygx/industrialAnalyst/add", params);
+  },
+  /**
+   * 获取分析师列表接口
+   * @param {IndustrialManagementId } params  产业id
+   * @returns
+   */
+  getIndustrialAnalyst: (params) => {
+    return http.get("/cygx/industrialAnalyst/list", params);
+  },
+  /**
+   * 编辑分析师列表接口
+   * @param {AnalystName } params  分析师名称
+   * @param {CreateTime } params  创建时间
+   * @param {IndustrialAnalystId } params  分析师id
+   * @param {IndustrialManagementId } params  产业id
+   * @returns
+   */
+  industrialAnalystEdit: (params) => {
+    return http.post("/cygx/industrialAnalyst/edit", params);
+  },
+  /**
+   * 删除分析师列表接口
+   * @param {IndustrialManagementId } params  产业id
+   * @returns
+   */
+  industrialAnalystDelete: (params) => {
+    return http.post("/cygx/industrialAnalyst/delete", params);
+  },
+
+  /*产业管理
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   *************************产业管理模块*********************/
+
+  /**
+   * 产业管理添加产业接口
+   * @param {ChartPermissionId } params  分类ID
+   * @param {IndustryName } params  产业名称
+   * @param {IsNewLabel } params  是否属于新标签,1是,0否
+   * @param {LayoutTime } params  布局时间
+   * @param {RecommendedIndex } params  推荐指数
+   * @returns
+   */
+  industrialManagement: (params) => {
+    return http.post("/cygx/industrialManagement/add", params);
+  },
+  /**
+   * 产业管理编辑产业接口
+   * @param {ChartPermissionId } params  分类ID
+   * @param {IndustryName } params  产业名称
+   * @param {IsNewLabel } params  是否属于新标签,1是,0否
+   * @param {LayoutTime } params  布局时间
+   * @param {RecommendedIndex } params  推荐指数
+   * @param {IndustrialManagementId } params  产业id
+   * @param {IsDeepLabel } params  是否属于深度标签,1是,0否
+   * @param {RecommendedIndex } params  推荐指数
+   * @returns
+   */
+  industrialManagementEdit: (params) => {
+    return http.post("/cygx/industrialManagement/edit", params);
+  },
+  /**
+   * 获取产业列表接口
+   * @param {ChartPermissionId } params  分类ID
+   * @param {OrderColumn } params  排序字段 ,AddTime添加时间 ,Recommended推荐指数 ,ReportTime 报告更新时间
+   * @returns
+   */
+  getIndustrialManagement: (params) => {
+    return http.get("/cygx/industrialManagement/list", params);
+  },
+  /**
+   * 删除产业列表接口
+   * @param {IndustrialManagementId } params  产业ID
+   * @returns
+   */
+  getIndustrialManagementDelete: (params) => {
+    return http.post("/cygx/industrialManagement/delete", params);
+  },
+  /*产业管理
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   *************************标的模块*********************/
+
+  /**
+   * 获取标的列表接口
+   * @param {IndustrialManagementId } params  产业ID
+   * @returns
+   */
+  getIndustrialSubject: (params) => {
+    return http.get("/cygx/industrialSubject/list", params);
+  },
+  /**
+   * 添加标的列表接口
+   * @param {IndustrialManagementId } params  产业ID
+   * @param {SubjectName } params  标的名称
+   * @returns
+   */
+  industrialSubjectAdd: (params) => {
+    return http.post("/cygx/industrialSubject/add", params);
+  },
+  /**
+   * 修改标的列表接口
+   * @param {IndustrialManagementId } params  产业ID
+   * @param {SubjectName } params  标的名称
+   * @param {CreateTime } params  创建时间
+   * @param {IndustrialSubjectId } params  标的id
+   * @returns
+   */
+  industrialSubjectEdit: (params) => {
+    return http.post("/cygx/industrialSubject/edit", params);
+  },
+  /**
+   * 删除标的
+   * @param {IndustrialManagementId } params  产业ID
+   * @returns
+   */
+  industrialSubjectDelete: (params) => {
+    return http.post("/cygx/industrialSubject/delete", params);
+  },
+
+  /*********************报告管理模块的接口*******************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * ********************************************************
+   * */
+
+  /**
+   * 获取主题
+   * @param {ChartPermissionId } params  分类ID
+   * @returns
+   */
+  reportMappingist: (params) => {
+    return http.get("/cygx/reportMappingist/list", params);
+  },
+  /**
+   * 获取列表
+   * @param {PageSize } params
+   * @param {CurrentIndex } params
+   * @param {KeyWord } params
+   * @param {IsFilter } params  是否过滤 ,1是,0否,不传默认为0
+   * @param {IsClass } params  是否归类 ,1是,0否 ,不传默认为0
+   * @param {ChartPermissionId } params  行业ID --> 一级分类列表中 ChartPermissionId
+   * @param {SubCategoryName } params  主题
+   * @param {MatchTypeName } params  报告匹配类型
+   * @param {IndustrialManagementId } params  产业ID
+   * @param {StartDate } params  开始时间用0 补齐,列如2021-03-06 08:09:01
+   * @param {EndDate } params  结束时间用0 补齐,列如2021-03-06 08:09:01
+   * @returns
+   */
+  reportArticle: (params) => {
+    return http.get("/cygx/reportArticle/list", params);
+  },
+  /**
+   * 过滤报告
+   * @param {ReportId } params  报告ID
+   * @returns
+   */
+  reportArticleFilter: (params) => {
+    return http.post("/cygx/reportArticle/filter", params);
+  },
+  /**
+   * 报告归类
+   * @param {IndustrialManagementId } params  产业ID
+   * @param {ReportId } params  报告ID
+   * @param {IndustrialSubjectIdStr } params  标的id多个用 , 逗号隔开 1,2
+   * @returns
+   */
+  reportArticleClassification: (params) => {
+    return http.post("/cygx/reportArticle/classification", params);
+  },
+  /**
+   * 报告归类
+   * @returns
+   */
+  reportMappingMatchTypeRep: (params) => {
+    return http.get("/cygx/reportMappingMatchTypeRep/list", params);
+  },
+  /**
+   * 获取是否展示操作按钮接口
+   * @returns
+   */
+  getshowButton: (params) => {
+    return http.get("/cygx/reportArticle/showButton", params);
+  },
+  /**
+   * 获取7天热词列表接口
+   * @param {PageSize } params
+   * @param {CurrentIndex } params
+   * @returns
+   */
+  hostKeyword: (params) => {
+    return http.get("/cygx/hostKeyword/list", params);
+  },
+  /**
+   * 获取权限
+   * @returns
+   */
+  hostKeywordCanDownload: (params) => {
+    return http.get("/cygx/hostKeyword/canDownload", params);
+  },
+  /**
+   * 获取一级分类不带策略
+   * @returns
+   */
+  getNoTacticsfirst: (params) => {
+    return http.get("/cygx/chartPermission/noTacticsfirst", params);
+  },
+  /**
+   * 通过多个产业获取标的列表接口
+   * @param {IndustrialManagementIdStr } params 分类ID,多个使用 ,隔开列如 1,3,5
+   * @returns
+   */
+  getindustrialSubjectlistIds: (params) => {
+    return http.get("/cygx/industrialSubject/listIds", params);
+  },
+  /**
+   * 通过多个产业获取标的列表接口
+   * @param {IndustrialManagementId } params 产业ID
+   * @returns
+   */
+  industrialManagementDetail: (params) => {
+    return http.get("/cygx/industrialManagement/detail", params);
+  },
+  /*********************纪要的接口*******************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * ********************************************************
+   * */
+
+  /**
+   * 纪要的保存与发布接口
+   * @param {IndustrialManagementId } params 产业ID
+   * @param {Abstract } params 摘要
+   * @param {Body } params 内容
+   * @param {ChartPermissionIds } params 行业ID 多个逗号
+   * @param {Department } params 作者
+   * @param {DoType } params 操作类型 0,保存 、1,发布
+   * @param {SellerAndMobile } params 销售和手机号
+   * @param {SummaryManageId } params 纪要ID 等于0新增纪要,大于0修改纪要
+   * @param {Title } params 标题
+   * @returns
+   */
+  preserveAndPublish: (params) => {
+    return http.post("/cygx/summaryManage/PreserveAndPublish", params);
+  },
+  /**
+   * 获取一级分类(包含其它)接口
+   * @returns
+   */
+  noTacticsfirstOther: (params) => {
+    return http.get("/cygx/chartPermission/noTacticsfirstOther", params);
+  },
+  /**
+   * 获取纪要列表接口
+   * @param {PageSize } params
+   * @param {CurrentIndex } params
+   * @param {KeyWord } params
+   * @param {PublishStatus } params  发布状态 ,0未发布,1已发布,传2查询所有
+   * @param {CategoryName } params  行业名称
+   * @param {StartDate } params  开始时间用0 补齐,列如2021-03-06 08:09:01
+   * @param {EndDate } params  结束时间用0 补齐,列如2021-03-06 08:09:01
+   * @returns
+   */
+  getsummaryManageList: (params) => {
+    return http.get("/cygx/summaryManage/list", params);
+  },
+  /**
+   * 获取纪要详情接口
+   * @param {SummaryManageId } params  纪要ID
+   * @returns
+   */
+  getsummaryManagedetail: (params) => {
+    return http.get("/cygx/summaryManage/detail", params);
+  },
+  /**
+   * 删除纪要接口
+   * @param {SummaryManageId } params  纪要ID
+   * @returns
+   */
+  getsummaryManagedelete: (params) => {
+    return http.post("/cygx/summaryManage/delete", params);
+  },
+  /**
+   * 纪要的发布与取消发布接口
+   * @param {SummaryManageId } params  纪要ID
+   * @returns
+   */
+  publishAndCancel: (params) => {
+    return http.post("/cygx/summaryManage/PublishAndCancel", params);
+  },
+  /**
+   * 获取提问列表详情接口
+   * @param {SummaryManageId } params  纪要ID
+   * @returns
+   */
+  summaryManageAskList: (params) => {
+    return http.get("/cygx/summaryManage/commentList", params);
+  },
+  /**
+   * 作者关注列表
+   * @returns
+   */
+  departmentFollowList: (params) => {
+    return http.get("/cygx/summaryManage/department/followList", params);
+  },
+
+  /**
+   * 收藏
+   * @returns
+   */
+  articleCollection: (params) => {
+    return http.get("/cygx/summaryManage/articleCollection", params);
+  },
+  /*********************活动的接口*******************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * ********************************************************
+   * */
+
+  /**
+   * 活动类型列表接口
+   * @returns
+   */
+  getActivityType: (params) => {
+    return http.get("/cygx/activityType/list", params);
+  },
+  /**
+   * 活动类型详情接口
+   * @param {ActivityTypeId } params  活动ID
+   * @returns
+   */
+  activityTypeDetail: (params) => {
+    return http.get("/cygx/activityType/detail", params);
+  },
+  /**
+   * 活动客户列表接口
+   * @returns
+   */
+  customerTypelist: (params) => {
+    return http.get("/cygx/activity/customerTypelist", params);
+  },
+  /**
+   * 活动内容的保存与发布接口
+   * @param {ActivityId } params 活动ID 等于0新增活动,大于0修改活动
+   * @param {ActivityTypeId } params 活动类型id
+   * @param {Body } params 内容
+   * @param {CustomerTypeIds } params 活动可见的客户类型,多个ID用 , 隔开
+   * @param {LimitPeopleNum } params 限制的人数数量
+   * @param {DoType } params 操作类型 0,保存 、1,发布
+   * @param {PermissionName } params 行业名称
+   * @returns
+   */
+  preserveAndPublishAdd: (params) => {
+    return http.post("/cygx/activity/PreserveAndPublish", params);
+  },
+  /**
+   * 获取列表
+   * @param {PageSize } params
+   * @param {CurrentIndex } params
+   * @param {KeyWord } params
+   * @param {StartDate } params  开始时间用0 补齐,列如2021-03-06 08:09:01
+   * @param {EndDate } params  结束时间用0 补齐,列如2021-03-06 08:09:01
+   * @param {PublishStatus } params  发布状态 ,1未发布,1已发布,传2查询所有
+   * @param {ActivityTypeId } params  活动类型id
+   * @param {ChartPermissionId } params  行业ID -
+   * @param {ActiveState } params  活动进行状态 未开始:NotStarted、进行中HaveInHand、已结束Complete
+   * @returns
+   */
+  //获取纪要列表接口
+  getActivityList: (params) => {
+    return http.get("/cygx/activity/list", params);
+  },
+  /**
+   * 删除活动的接口
+   * @param {ActivityTypeId } params  活动ID
+   * @returns
+   */
+  activityDelete: (params) => {
+    return http.post("/cygx/activity/delete", params);
+  },
+  /**
+   * 活动的发布与取消发布接口
+   * @param {ActivityTypeId } params  活动ID
+   * @returns
+   */
+  activityPublishAndCancel: (params) => {
+    return http.post("/cygx/activity/PublishAndCancel", params);
+  },
+  /**
+   * 获取活动详情接口
+   * @param {ActivityTypeId } params  活动ID
+   * @returns
+   */
+  activityDetail: (params) => {
+    return http.get("/cygx/activity/detail", params);
+  },
+  /**
+   * 获取活动详情接口
+   * @param {MeetType } params  会议类型 1线上、2线下
+   * @returns
+   */
+  activityTypeMeetType: (params) => {
+    return http.get("/cygx/activityType/meetType", params);
+  },
+  /**
+   * 获取活动类型列表小分类筛选接口
+   * @param {SearchType } params  筛选类型 1专家/分析师嗲话会、2专家/分析师线下沙龙 、3公司调研/
+   * @returns
+   */
+  activitySignuplistSearch: (params) => {
+    return http.get("/cygx/activityType/listSearch", params);
+  },
+
+  /*********************报名管理的接口*******************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * ********************************************************
+   * */
+
+  /**
+   * 获取报名管理列表接口
+   * @param {PageSize } params
+   * @param {CurrentIndex } params
+   * @param {KeyWord } params
+   * @param {StartDate } params  开始时间用0 补齐,列如2021-03-06 08:09:01
+   * @param {EndDate } params  结束时间用0 补齐,列如2021-03-06 08:09:01
+   * @param {PublishStatus } params  发布状态 ,1未发布,1已发布,传2查询所有
+   * @param {ActivityTypeId } params  活动类型id 隔开列如: 1,2
+   * @param {ChartPermissionId } params  行业ID -
+   * @param {SearchType } params  筛选类型 1专家/分析师电话会、2专家/分析师线下沙龙 、3公司调研/
+   * @returns
+   */
+  activitySignup: (params) => {
+    return http.get("/cygx/activitySignup/list", params);
+  },
+  /**
+   * 获取预约外呼详情列表接口
+   * @param {ActivityId } params  活动ID
+   * @returns
+   */
+  appointmentList: (params) => {
+    return http.get("/cygx/activitySignup/appointmentList", params);
+  },
+  /**
+   * 获取外呼人员列表接口
+   * @returns
+   */
+  activitySignupUserList: (params) => {
+    return http.get("/cygx/activitySignup/userList", params);
+  },
+  /**
+   * 新增外呼人员接口
+   * @param {ActivityIds } params  活动id,多个用,隔开
+   * @param {UserIds } params  用户id,多个用,隔开
+   * @returns
+   */
+  activitySignupAddUser: (params) => {
+    return http.post("/cygx/activitySignup/addUser", params);
+  },
+  /**
+   * 获取报名失败详情列表接口
+   * @param {ActivityId } params  活动id
+   * @returns
+   */
+  salonFailSignupList: (params) => {
+    return http.get("/cygx/activitySignup/salonFailSignupList", params);
+  },
+  /**
+   * 修改公司调研电话会限制报名、预约外呼、自主拨入接口
+   * @param {Id } params
+   * @param {OperationStatus } params
+   * @returns
+   */
+  callSignupEdit: (params) => {
+    return http.post("/cygx/activitySignup/callSignupEdit", params);
+  },
+  /**
+   * 修改沙龙限制报名、加入报名接口
+   * @param {Id } params
+   * @returns
+   */
+  salonSignupEdit: (params) => {
+    return http.post("/cygx/activitySignup/salonSignupEdit", params);
+  },
+  /**
+   * 新增报名人员接口
+   * @param {ActivityIds } params
+   * @param {UserIds } params
+   * @returns
+   */
+  activitySignupAddSignuUser: (params) => {
+    return http.post("/cygx/activitySignup/addSignuUser", params);
+  },
+  /**
+   * 获取单条报名详情接口
+   * @param {Id } params
+   * @returns
+   */
+  activitySignupSignupDetail: (params) => {
+    return http.get("/cygx/activitySignup/signupDetail", params);
+  },
+  /**
+   * 新增报名人员(可择报名方式)接口
+   * @param {ActivityIds } params
+   * @param {JsonStar } params
+   * @returns
+   */
+  addSignuUserOptType: (params) => {
+    return http.post("/cygx/activitySignup/addSignuUserOptType", params);
+  },
+  /**
+   * 活动取消报名接口
+   * @param {SignupId } params
+   * @returns
+   */
+  activitySignupApply: (params) => {
+    return http.post("/cygx/activitySignup/cancel", params);
+  },
+  /**
+   * 修改外呼号码接口
+   * @param {CountryCode } params
+   * @param {OutboundMobile } params
+   * @param {Id } params
+   * @returns
+   */
+  outboundMobileEdit: (params) => {
+    return http.post("/cygx/activitySignup/outboundMobileEdit", params);
+  },
+  /**
+   * 获取带问列表详情接口
+   * @param {ActivityId } params
+   * @returns
+   */
+  activitySignupAskList: (params) => {
+    return http.get("/cygx/activitySignup/askList", params);
+  },
+
+  /*********************到会管理的接口*******************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * *********************************************************
+   * ********************************************************
+   * */
+
+  //获取到会管理列表接口
+  activityMeetList: (params) => {
+    return http.get("/cygx/activityMeet/list", params);
+  },
+  //获取线下报名详情列表接口
+  offlineListDetail: (params) => {
+    return http.get("/cygx/activityMeet/offlineListDetail", params);
+  },
+  //获取线下报名详情列表接口
+  activityMeetmeetingDo: (params) => {
+    return http.post("/cygx/activityMeet/meetingDo", params);
+  },
+  //获取爽约记录接口
+  breakAppointmentList: (params) => {
+    return http.get("/cygx/activityMeet/breakAppointment", params);
+  },
+  //获取爽约记录详情接口
+  breakAppointmentDetail: (params) => {
+    return http.get("/cygx/activityMeet/breakAppointmentDetail", params);
+  },
+  //获取销售接口
+  sellerNameListList: (params) => {
+    return http.get("/cygx/activityMeet/sellerNameList", params);
+  },
+  //提交线下到会情况接口
+  signUpRestrictUid: (params) => {
+    return http.post("/cygx/activityMeet/signUpRestrictUid", params);
+  },
+  //上传参会表格数据
+  activityMeetImport: (params) => {
+    return http.post("/cygx/activityMeet/importYidong", params);
+  },
+  //获取线上到会详情接口
+  attendanceDetail: (params) => {
+    return http.get("/cygx/activityMeet/attendanceDetail", params);
+  },
+  //获取线上到会详情接口
+  activityMeetoffline: (params) => {
+    return http.get("/cygx/activityMeet/offlineMeetingList", params);
+  },
+
+  //纪要获取敏捷搜索关键词的列表接口
+  fastSearchKeWordsummaryManage: (params) => {
+    return http.get("/cygx/summaryManage/fastSearchKeWord", params);
+  },
+  //纪要新增和修改敏捷搜索关键词的列表接口
+  editFastSearchKeWordsummary: (params) => {
+    return http.post("/cygx/summaryManage/editFastSearchKeWord", params);
+  },
+  //获取永续客户是否展示详情接口
+  sustainableDetailSummaryManage: (params) => {
+    return http.get("/cygx/summaryManage/sustainableDetail", params);
+  },
+  //修改永续客户是否展示接口
+  sustainableEditSummaryManage: (params) => {
+    return http.post("/cygx/summaryManage/sustainableEdit", params);
+  },
+
+  //获取活动敏捷搜索关键词的列表接口
+  activityFastSearchKeWord: (params) => {
+    return http.get("/cygx/activity/fastSearchKeWord", params);
+  },
+
+  //获取活动行业分类接口
+  chartPermissionList: (params) => {
+    return http.get("/cygx/activity/chartPermission/list", params);
+  },
+  //研选报告列表接口
+  reportArticleresearchList: (params) => {
+    return http.get("/cygx/reportArticle/research/list", params);
+  },
+  //研选报告详情接口
+  reportArticleDetail: (params) => {
+    return http.get("/cygx/reportArticle/detail", params);
+  },
+  //研选报告列表接口
+  reportPreserveAndPublish: (params) => {
+    return http.post("/cygx/reportArticle/PreserveAndPublish", params);
+  },
+  //研选报告的发布与取消发布接口
+  reportArticlePublishAndCancel: (params) => {
+    return http.post("/cygx/reportArticle/PublishAndCancel", params);
+  },
+  //删除研选报告接口
+  reportArticleDelete: (params) => {
+    return http.post("/cygx/reportArticle/delete", params);
+  },
+  //获取提问列表详情接口
+  reportArticleAskList: (params) => {
+    return http.get("/cygx/reportArticle/askList", params);
+  },
+  /**
+   * 通过报告ID获取对应的匹配类型接口
+   * @param {ReportId } params  报告ID
+   * @returns
+   */
+  getMatchTypeName: (params) => {
+    return http.get("/cygx/reportArticle/getMatchTypeName", params);
+  },
+  //修改报告的匹配类型接口
+  updateMatchTypeName: (params) => {
+    return http.post("/cygx/reportArticle/updateMatchTypeName", params);
+  },
+  //获取关联作者列表接口
+  departmentList: (params) => {
+    return http.get("/cygx/reportArticle/departmentList", params);
+  },
+
+  //获取关联产业列表接口
+  industrialManagementListByName: (params) => {
+    return http.get("/cygx/industrialManagement/listByName", params);
+  },
+  //获取关联标的列表接口
+  industrialSubjectListByName: (params) => {
+    return http.get("/cygx/industrialSubject/listByName", params);
+  },
+  /* 上周、本周、路演精华 模块  */
+  /**
+   * 获取带有图标的一级分类接口
+   * @param {Havestrategy} params 是否有策略,1有,0无 默认无
+   * @returns
+   */
+  chartPermissionFirstHaveIco: (params) => {
+    return http.get("/cygx/chartPermission/firstHaveIco", params);
+  },
+  /**
+   * 获取带有图标的一级分类接口
+   * @param {Havestrategy} params 是否有策略,1有,0无 默认无
+   * @returns
+   */
+  chartPermissiondetailTemplate: (params) => {
+    return http.get("/cygx/researchSummary/detailTemplate", params);
+  },
+  /**
+   * 获取研究汇总列表接口
+   * @param {PageSize} params
+   * @param {CurrentIndex} params
+   * @param {PublishStatus} params 发布状态 ,1未发布,1已发布,传2查询所有
+   * @param {StartDate} params
+   * @param {EndDate} params
+   * @returns
+   */
+  researchSummaryList: (params) => {
+    return http.get("/cygx/researchSummary/list", params);
+  },
+  /**
+   * 研究汇总的发布与取消发布接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  researchSummaryPublishAndCancel: (params) => {
+    return http.post("/cygx/researchSummary/PublishAndCancel", params);
+  },
+  /**
+   * 删除研究汇总内容接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  researchSummaryDelete: (params) => {
+    return http.post("/cygx/researchSummary/delete", params);
+  },
+  /**
+	 * 研究汇总内容的保存与发布接口
+	 * @param {Abstract} params 
+	 * @param {ArticleId} params 
+	 * @param {Content} params 
+	 * ListBzchjh:	[...]
+		ListCydyjy:	[...]
+		ListSdbg:	[...]
+		ListSjdp:	[...]
+		SortBzchjh:	string
+		本周晨会精华排序
+		SortCydyjy:	string
+		产业调研纪要排序
+		SortSdbg:	string
+		深度报告排序
+		SortSjdp:	string
+		事件点评排序
+	 * @param {Department} params 
+	 * @param {DoType} params 
+	 * @param {PublishDate} params 
+	 * @param {Title} params 
+	 * @returns 
+	 */
+  researchSummaryPreserveAndPublish: (params) => {
+    return http.post("/cygx/researchSummary/PreserveAndPublish", params);
+  },
+  /**
+   * 研究汇总内容详情接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  researchSummaryDetail: (params) => {
+    return http.get("/cygx/researchSummary/detail", params);
+  },
+  /**
+   * 路
+   * 演
+   * 精
+   * 华
+   * 模
+   * 块
+   */
+  /**
+   * 研究汇总内容详情接口
+   * @param {PageSize} params
+   * @param {CurrentIndex} params
+   * @param {PublishStatus} params
+   * @param {StartDate} params
+   * @param {EndDate} params
+   * @param {KeyWord} params
+   * @param {ChartPermissionId} params
+   * @returns
+   */
+  roadshowEssenceList: (params) => {
+    return http.get("/cygx/roadshowEssence/list", params);
+  },
+  /**
+   * 路演精华的发布与取消发布接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  roadshowEssencePublishAndCancel: (params) => {
+    return http.post("/cygx/roadshowEssence/PublishAndCancel", params);
+  },
+  /**
+   * 路演精华的删除
+   * @param {ArticleId} params
+   * @returns
+   */
+  roadshowEssenceDelete: (params) => {
+    return http.post("/cygx/roadshowEssence/delete", params);
+  },
+  /**
+   * 研究汇总内容的保存与发布接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  roadshowEssencePreserveAndPublish: (params) => {
+    return http.post("/cygx/roadshowEssence/PreserveAndPublish", params);
+  },
+  /**
+   * 路演精华内容详情接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  roadshowEssenceDetail: (params) => {
+    return http.get("/cygx/roadshowEssence/detail", params);
+  },
+  /**
+   * 报
+   * 告
+   * 精
+   * 选
+   * 模
+   * 块
+   */
+  /* 获取报告精选列表接口
+   * @param {PageSize} params
+   * @param {CurrentIndex} params
+   * @param {PublishStatus} params
+   * @param {StartDate} params
+   * @param {EndDate} params
+   * @returns
+   */
+  reportSelectionList: (params) => {
+    return http.get("/cygx/reportSelection/list", params);
+  },
+  /**
+   * 删除报告精选内容接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  reportSelectionDelete: (params) => {
+    return http.post("/cygx/reportSelection/delete", params);
+  },
+  /**
+   * 报告精选的发布与取消发布接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  reportSelectionPublishAndCancel: (params) => {
+    return http.post("/cygx/reportSelection/PublishAndCancel", params);
+  },
+  /**
+   * 报告精选内容详情接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  reportSelectionDetail: (params) => {
+    return http.get("/cygx/reportSelection/detail", params);
+  },
+  /**
+   * 报告精选内容详情接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  reportSereportSelectiondDetailTemplate: (params) => {
+    return http.get("/cygx/reportSelection/detailTemplate", params);
+  },
+  /**
+   * 通过行业获取关联标的列表接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  industrialSubjectSearch: (params) => {
+    return http.get("/cygx/industrialSubject/search", params);
+  },
+  /**
+   * 报告精选内容的保存与发布接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  industrialSubjectPreserveAndPublish: (params) => {
+    return http.post("/cygx/reportSelection/PreserveAndPublish", params);
+  },
+  /**
+   *  获取期数
+   * @param {ArticleId} params
+   * @returns
+   */
+  industrialSubjectListPeriods: (params) => {
+    return http.get("/cygx/reportSelection/listPeriods", params);
+  },
+  /**
+   *  获取综述报告
+   * @param {ArticleId} params
+   * @returns
+   */
+  getReportSelectionArticle: (params) => {
+    return http.get("/cygx/reportSelection/getArticle", params);
+  },
+
+  /**
+   * 上
+   * 周
+   * 纪
+   * 要
+   * 模
+   * 块
+   */
+  /* 获取报告精选列表接口
+   * @param {PageSize} params
+   * @param {CurrentIndex} params
+   * @param {PublishStatus} params
+   * @param {StartDate} params
+   * @param {EndDate} params
+   * @returns
+   */
+  minutesSummaryList: (params) => {
+    return http.get("cygx/minutesSummary/list", params);
+  },
+  /* 获取报告精选列表接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  minutesSummaryPublishAndCancel: (params) => {
+    return http.post("/cygx/minutesSummary/PublishAndCancel", params);
+  },
+  /* 获取报告精选列表接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  minutesSummaryDelete: (params) => {
+    return http.post("/cygx/minutesSummary/delete", params);
+  },
+  /**
+	 * 上周纪要汇总内容的保存与发布接口
+	 * @param {Abstract} params 
+	 * @param {ArticleId} params 
+	 * @param {Content} params 
+	 * ListBzchjh:	[...]
+		ListCydyjy:	[...]
+		ListSdbg:	[...]
+		ListSjdp:	[...]
+		SortBzchjh:	string
+		本周晨会精华排序
+		SortCydyjy:	string
+		产业调研纪要排序
+		SortSdbg:	string
+		深度报告排序
+		SortSjdp:	string
+		事件点评排序
+	 * @param {Department} params 
+	 * @param {DoType} params 
+	 * @param {PublishDate} params 
+	 * @param {Title} params 
+	 * @returns 
+	 */
+  minutesSummaryPreserveAndPublish: (params) => {
+    return http.post("/cygx/minutesSummary/PreserveAndPublish", params);
+  },
+  /* 获取报告精选列表接口
+   * @param {ArticleId} params
+   * @returns
+   */
+  minutesSummaryDetail: (params) => {
+    return http.get("cygx/minutesSummary/detail", params);
+  },
+  /* 获取线上活动进门财经关联匹配列表接口
+   * @param {KeyWord} params
+   * @returns
+   */
+  activityMeetMatchingList: (params) => {
+    return http.get("cygx/activityMeet/matchingList", params);
+  },
+  /* 手动匹配线上客户参会记录接口
+   * @param {KeyWord} params
+   * @param {ActivityId} params
+   * @returns
+   */
+  activityMeetMatchingByHand: (params) => {
+    return http.post("cygx/activityMeet/matchingByHand", params);
+  },
+  // 获取一级分类所关联的产业列表接口
+  getListIndustrial: (params) => {
+    return http.get("cygx/chartPermission/listIndustrial", params);
+  },
+  // 查找标的
+  industrialSubjectSearch: (params) => {
+    return http.get("cygx/industrialSubject/search", params);
+  },
+  // 查找标的 标的详情搜索
+  industrialSubjectSearchInfo: (params) => {
+    return http.get("/cygx/industrialSubject/searchInfo", params);
+  },
+  //线上到会管理 备注列表接口
+  activityMeetRemarkList: (params) => {
+    return http.get("/cygx/activityMeet/remark/list", params);
+  },
+  //线上到会管理 新增备注接口
+  activityMeetAddRemarks: (params) => {
+    return http.post("/cygx/activityMeet/addRemarks", params);
+  },
+  //线上到会管理 阅读记录列表接口
+  activityMeetHistoryList: (params) => {
+    return http.get("/cygx/activityMeet/history/list", params);
+  },
+  //线上到会管理 上传停留时间
+  activityMeetAddStopTime: (params) => {
+    return http.post("/cygx/activityMeet/addStopTime", params);
+  },
+  //会议提醒人数详情列表接口
+  activitySignupReminder: (params) => {
+    return http.get("/cygx/activitySignup/reminder/list", params);
+  },
+  //预约纪要详情列表接口
+  activitySignupSummaryList: (params) => {
+    return http.get("/cygx/activitySignup/appointment/summaryList", params);
+  },
+  //取消纪要纪要预约接口
+  activityAppointmentCancel: (params) => {
+    return http.post("/cygx/activitySignup/appointment/cancel", params);
+  },
+  //取消会议提醒接口
+  activityReminderCancel: (params) => {
+    return http.post("/cygx/activitySignup/reminder/cancel", params);
+  },
+  //新增预约纪要人员接口
+  activityAddSummaryUser: (params) => {
+    return http.post("/cygx/activitySignup/appointment/addSummaryUser", params);
+  },
+  //文章类型列表接口
+  summaryManageArticleType: (params) => {
+    return http.get("/cygx/summaryManage/articleType/list", params);
+  },
+  //添加文章类型列表接口
+  addSummaryManageArticleType: (params) => {
+    return http.post("/cygx/summaryManage/articleType/add", params);
+  },
+  //研选移动产业
+  industrialManagementMove: (params) => {
+    return http.post("/cygx/industrialManagement/move", params);
+  },
+  //标的-报告活动数量详情
+  industrialSubjectCountDetail: (params) => {
+    return http.get("/cygx/industrialSubject/countDetail", params);
+  }, //本周研究汇总 群发邮件
+  researchSummarySendMail: (params) => {
+    return http.get("/cygx/researchSummary/sendMail", params);
+  },
+  //上周纪要汇总 群发邮件
+  minutesSummarySendMail: (params) => {
+    return http.get("/cygx/minutesSummary/sendMail", params);
+  },
+  //获取流失且参加过会议的参会明细接口
+  getActivityLossCompany: (params) => {
+    return http.get("/cygx/activityLoss/company/list", params);
+  },
+  //获取流失且参加过会议的用户
+  getActivityLossUser: (params) => {
+    return http.get("/cygx/activityLoss/user/list", params);
+  },
+  //获取流失且参加过会议的参会明细接口
+  getActivityLossMeet: (params) => {
+    return http.get("/cygx/activityLoss/meet/list", params);
+  },
+
+  /* 上传图片接口 formData  */
+  upload: (params) => {
+    return http.post("/resource/image/upload", params);
+  },
+  /**
+   * 晨
+   * 会
+   * 管
+   * 理
+   * 模
+   * 块
+   */
+  //获取晨会精华列表 PageSize CurrentIndex KeyWord MeetingTime Status
+  getMorningMeetingList: (params) => {
+    return http.get("/cygx/morningMeeting/list", params);
+  },
+  //晨会列表-发布 ReviewId
+  publishListMeeting: (params) => {
+    return http.post("/cygx/morningMeeting/publish", params);
+  },
+  //晨会列表-取消发布 ReviewIds
+  cancelPublish: (params) => {
+    return http.post("/cygx/morningMeeting/publish/cancel", params);
+  },
+  //晨会列表-删除 ReviewId
+  deleteListMeeting: (params) => {
+    return http.post("/cygx/morningMeeting/delete", params);
+  },
+  //获取晨会精华详情 MeetingId
+  getMorningMeetingDetail: (params) => {
+    return http.get("/cygx/morningMeeting/detail", params);
+  },
+  //发布晨会精华  DoType: 1发布;
+  publishMorningMeeting: (params) => {
+    return http.post("/cygx/morningMeeting/preserveAndPublish", { ...params, ...{ DoType: 1 } });
+  },
+  //保存/新增 MeetingId:为0时是新增 DoType: 0保存
+  editMorningMeeting: (params) => {
+    return http.post("/cygx/morningMeeting/preserveAndPublish", { ...params, ...{ DoType: 0 } });
+  },
+  // 发送模板消息
+  activitySignupTempMsg: (params) => {
+    return http.post("/cygx/activitySignup/tempMsg", params);
+  },
+  // 模版消息发送客户类型列表
+  activitySendGroupList: (params) => {
+    return http.get("/cygx/activitySignup/tempMsg/sendGroupList", params);
+  },
+};
+
+/* 权益小程序管理 专项调研模块*/
+const raiSpecial = {
+  //专项调研内容的保存与发布接口
+  specialPreserveAndPublish: (params) => {
+    return http.post("/cygx/special/PreserveAndPublish", params);
+  },
+  //活动的发布与取消发布接口
+  specialPublishAndCancel: (params) => {
+    return http.post("/cygx/special/PublishAndCancel", params);
+  },
+  //删除活动接口
+  specialDelete: (params) => {
+    return http.post("/cygx/special/delete", params);
+  },
+  //获取活动详情接口
+  specialDetail: (params) => {
+    return http.get("/cygx/special/detail", params);
+  },
+  //获取活动详情接口
+  specialInterested: (params) => {
+    return http.get("/cygx/special/interested/list", params);
+  },
+  //获取活动列表接口
+  getSpecialList: (params) => {
+    return http.get("/cygx/special/list", params);
+  },
+  //获取活动列表接口
+  getSpecialSpecialList: (params) => {
+    return http.get("/cygx/special/signup/list", params);
+  },
+  //确定行程编辑接口
+  postSpecialTripPreserveAndPublish: (params) => {
+    return http.post("/cygx/special/trip/PreserveAndPublish", params);
+  },
+  //活动下线与重新发布
+  postSpecialOffline: (params) => {
+    return http.post("/cygx/special/Offline", params);
+  },
+  //新增报名接口
+  addUserSpecial: (params) => {
+    return http.post("/cygx/special/trip/addUser", params);
+  },
+  //报名列表/下载接口
+  getSpecialtripList: (params) => {
+    return http.get("/cygx/special/tripList", params);
+  },
+  //取消报名
+  cancelSpecialtripList: (params) => {
+    return http.post("/cygx/special/trip/cancel", params);
+  },
+  //到会详情
+  getSpecialtripmeetDetial: (params) => {
+    return http.get("/cygx/special/trip/meetDetial", params);
+  },
+  //提交到会情况
+  postSpecialtripMeetingDo: (params) => {
+    return http.post("/cygx/special/trip/meetingDo", params);
+  },
+  outboundMobileEdit: (params) => {
+    return http.post("/cygx/special/trip/outboundMobileEdit", params);
+  },
+};
+
+/* 商品晨报 */
+const morningPaper = {
+  //文章列表
+  getList: (params) => {
+    return http.get("/advisory/article/list", params);
+  },
+  //获取分类的列表
+  getmyfllow: (params) => {
+    return http.get("/advisory/getmyfllow", params);
+  },
+  //删除文章
+  articleDelete: (params) => {
+    return http.post("/advisory/article/delete", params);
+  },
+  //发布文章
+  articleFirstadd: (params) => {
+    return http.post("/advisory/article/firstadd", params);
+  },
+  //取消发布
+  articleUnpublish: (params) => {
+    return http.post("/advisory/article/unpublish", params);
+  },
+  //保存咨询
+  articlePreservation: (params) => {
+    return http.post("/advisory/article/preservation", params);
+  },
+  //文章详情
+  articleDetail: (params) => {
+    return http.get("/advisory/article/detail", params);
+  },
+  //pv uv
+  getPVAndUv: (params) => {
+    return http.get("/advisory/getPVAndUv", params);
+  },
+};
+
+export { raiInterface, morningPaper, raiSpecial };

+ 34 - 0
src/api/modules/rai/reportApi.js

@@ -0,0 +1,34 @@
+import http from "@/api/http.js";
+/* 权益小程序管理 报告模块*/
+const raiReport = {
+  //报告精选 公司点击详情
+  reportSelectionHistory: (params) => {
+    return http.get("/cygx/reportSelection/history", params);
+  },
+  // 研选报告可见范围
+  summaryManageVisibleRange: (params) => {
+    return http.post("/cygx/summaryManage/visibleRange", params);
+  },
+  // 报告精选可见范围
+  roadshowEssenceVisibleRange: (params) => {
+    return http.post("/cygx/roadshowEssence/visibleRange", params);
+  },
+  // 本周研究汇总可见范围
+  researchSummaryVisibleRange: (params) => {
+    return http.post("/cygx/researchSummary/visibleRange", params);
+  },
+  // 上周研究汇总可见范围
+  minutesSummaryVisibleRange: (params) => {
+    return http.post("/cygx/minutesSummary/visibleRange", params);
+  },
+  // 深度报告精选可见范围
+  reportSelectionVisibleRange: (params) => {
+    return http.post("/cygx/reportSelection/visibleRange", params);
+  },
+  // 产品内测 行业
+  reportChartPermissionFirstProduct: (params) => {
+    return http.get("/cygx/chartPermission/firstProduct", params);
+  },
+};
+
+export default raiReport;

+ 31 - 0
src/api/modules/rai/timeLine.js

@@ -0,0 +1,31 @@
+/* 报告管理 策略时间线 */
+import http from "@/api/http.js";
+
+const timeLineApi = {
+  // 策略时间线列表
+  getTacticsTimeLineList: (params) => {
+    return http.get("/cygx/tacticsTimeLine/list", params);
+  },
+  // 新增策略时间线
+  tacticsTimeLinePreserveAndPublish: (params) => {
+    return http.post("/cygx/tacticsTimeLine/preserveAndPublish", params);
+  },
+  // 一键发布/取消发布报告接口
+  tacticsTimeLineAllCancel: (params) => {
+    return http.post("/cygx/tacticsTimeLine/all/publishAndcancel", params);
+  },
+  // 发布/取消发布报告
+  tacticsTimeLineCancel: (params) => {
+    return http.post("/cygx/tacticsTimeLine/publishAndcancel", params);
+  },
+  // 删除
+  tacticsTimeLineDelete: (params) => {
+    return http.post("/cygx/tacticsTimeLine/delete", params);
+  },
+  // 新建报告类型
+  reportMappingAdd: (params) => {
+    return http.post("/cygx/reportMapping/add", params);
+  },
+};
+
+export default timeLineApi;

+ 53 - 0
src/api/modules/rai/videoListApi.js

@@ -0,0 +1,53 @@
+import http from "@/api/http.js";
+/* 权益小程序管理  视频列表模块*/
+
+export default {
+  /* 视频列表 */
+  videoList: (params) => {
+    return http.get("/cygx/microRoadshow/video/list", params);
+  },
+  /* 音频列表 */
+  voiceList: (params) => {
+    return http.get("/cygx/microRoadshow/voice/list", params);
+  },
+  /* 添加视频 */
+  addVideo: (params) => {
+    return http.post("/cygx/microRoadshow/video/add", params);
+  },
+  /* 编辑视频 */
+  editVideo: (params) => {
+    return http.post("/cygx/microRoadshow/video/edit", params);
+  },
+  /* 发布视频 */
+  videoPublish: (params) => {
+    return http.get("/cygx/microRoadshow/video/publish", params);
+  },
+  /* 视频详情列表 */
+  videoDeatil: (params) => {
+    return http.get("/cygx/microRoadshow/video/deatil", params);
+  },
+  /* 音频详情列表 */
+  voiceDeatil: (params) => {
+    return http.get("/cygx/microRoadshow/voice/deatil", params);
+  },
+  /* 活动视频列表 */
+  getActivityVideo: (params) => {
+    return http.get("/cygx/activityVideo/list", params);
+  },
+  /* 活动视频播放详情 */
+  activityVideoDeatil: (params) => {
+    return http.get("/cygx/activityVideo/deatil", params);
+  },
+  /* 微路演视频留言列表 */
+  getMicroRoadshowVideo: (params) => {
+    return http.get("/cygx/microRoadshow/commentList/video", params);
+  },
+  /* 微路演音频频留言列表 */
+  getMicroRoadshowVoice: (params) => {
+    return http.get("/cygx/activityVideo/commentList", params);
+  },
+  /* 微路演视频留言列表 */
+  getMicroRoadshowCommentList: (params) => {
+    return http.get("/cygx/microRoadshow/commentList/voice", params);
+  },
+};

+ 58 - 0
src/api/modules/reportAuthorApi.js

@@ -0,0 +1,58 @@
+// 研报作者
+import http from "@/api/http.js"
+
+/**
+ * 作者列表
+ * @param {*} params CurrentIndex PageSize Keyword 
+ * AuthorType 1:中文 2:英文
+ * @returns 
+ */
+export const authorList = params => {
+  return http.get('/report_author/author',params)
+}
+
+/**
+ * 新增作者
+ * @param {*} params AuthorType Author
+ * @returns 
+ */
+export const authorAdd = params => {
+  return http.post('/report_author/author/add',params)
+}
+
+/**
+ * 编辑作者
+ * @param {*} params Id Author
+ * @returns 
+ */
+export const authorEdit = params => {
+  return http.post('/report_author/author/edit',params)
+}
+
+/**
+ * 删除作者
+ * @param {*} params Id 
+ * @returns 
+ */
+export const authorDel = params => {
+  return http.post('/report_author/author/delete',params)
+}
+
+/**
+ * 禁用作者
+ * @param {*} params Id EnableType
+ * @returns 
+ */
+export const authorSet = params => {
+  return http.post('/report_author/author/enable',params)
+}
+
+
+/**
+ * 英文作者列表
+ * @param {*} params 
+ * @returns 
+ */
+export const authorEn = params => {
+  return http.get('/english_report/author',params)
+}

+ 234 - 0
src/api/modules/reportEnApi.js

@@ -0,0 +1,234 @@
+// 英文研报
+import http from "@/api/http.js"
+
+/**
+ * 报告列表
+ * @returns 
+ * PageSize:
+  CurrentIndex:1
+  StartDate:
+  EndDate:
+  Frequency:
+  ClassifyNameFirst:
+  ClassifyNameSecond:
+  State:
+  KeyWord:
+  CompanyType:
+ */
+export const reportList = params => {
+  return http.get('/english_report/list',params)
+}
+
+/**
+ * 新增研报
+ * @returns 
+ * "AddType": 1,
+	"ClassifyIdFirst": 1,
+	"ClassifyNameFirst": "一级分类名称",
+	"ClassifyIdSecond": 2,
+	"ClassifyNameSecond": "二级分类名称",
+	"Title": "标题标题",
+	"Abstract": "摘要摘要",
+	"Author": "作者",
+	"Frequency": "频度",
+	"State": 1,
+	"Content": "内容",
+	"CreateTime": "2022-09-27 13:54:44"
+ */
+export const reportAdd = params => {
+  return http.post('/english_report/add',params)
+}
+
+/**
+ * 编辑研报
+ * @returns 
+ * "AddType": 1,
+	"ClassifyIdFirst": 1,
+	"ClassifyNameFirst": "一级分类名称",
+	"ClassifyIdSecond": 2,
+	"ClassifyNameSecond": "二级分类名称",
+	"Title": "标题标题",
+	"Abstract": "摘要摘要",
+	"Author": "作者",
+	"Frequency": "频度",
+	"State": 1,
+	"Content": "内容",
+	"CreateTime": "2022-09-27 13:54:44"
+ */
+export const reportEdit = params => {
+  return http.post('/english_report/edit',params)
+}
+
+/**
+ * 报告详情
+ * @returns ReportId
+ */
+export const reportDetail = params => {
+  return http.get('/english_report/detail',params)
+}
+
+/**
+ * 发布报告
+ * @returns ReportIds
+ */
+export const reportPublish = params => {
+  return http.post('/english_report/publish',params)
+}
+
+/**
+ * 取消发布
+ * @returns ReportIds
+ */
+export const reportCancelPublish = params => {
+  return http.post('/english_report/publish/cancel',params)
+}
+
+/**
+ * 删除报告
+ * @returns ReportIds
+ */
+export const reportDel = params => {
+  return http.post('/english_report/delete',params)
+}
+
+/**
+ * 自动保存
+ * @param {*} params 
+ * "ReportId": 2783, 
+  "Content": "231" 
+ * @returns 
+ */
+export const reportAutoSave = params => {
+  return http.post('/english_report/saveReportContent',params)
+}
+
+/**
+ * 分类列表	
+ * @param {*} params PageSize CurrentIndex
+ * @returns 
+ */
+export const classifyList = params => {
+	return http.get('/english_report/classify/list',params)
+}
+
+/**
+ * 根据分类id获取报告
+ * @param {*} params ClassifyIdFirst ClassifyIdSecond
+ * @returns 
+ */
+export const reportDetailByclassify = params => {
+	return http.get('/english_report/classifyIdDetail',params)
+}
+
+/**
+ * 客户邮箱列表
+ */
+export const customEmailList=params=>{
+	return http.get('/english_report/email/list',params)
+}
+
+/**
+ * 删除客户邮箱
+ */
+export const delCustomEmail=params=>{
+	return http.post('/english_report/email/del',params)
+}
+
+/**
+ * 保存客户邮箱
+ */
+export const saveCustomEamil=params=>{
+	return http.post('/english_report/email/save',params)
+}
+
+/**
+ * 点击量
+ */
+export const PVDetailList=params=>{
+	return http.get('/english_report/email/pv_list',params)
+}
+
+/**
+ * 批量发送邮件
+ */
+export const sendCustomEmail=params=>{
+	return http.post('/english_report/email/send',params)
+}
+/**
+ * 研报标记状态
+ * @param {*} params Status ReportId
+ */
+export const markReport=params => {
+  return http.post('/english_report/mark',params)
+}
+
+/* 发送日志 */
+export const logInterface = {
+	/**
+	 * 日志列表
+	 * @param {*} params PageSize CurrentIndex ReportId
+	 * SendStatus -1-已发送;0-发送失败;1-发送成功
+	 * @returns 
+	 */
+	logList: params => {
+		return http.get('/english_report/email/log_list',params)
+	},
+
+	/**
+	 * 重新推送
+	 * @param {*} params ReportId  SendId
+	 * @returns 
+	 */
+	resend: params => {
+		return http.post('/english_report/email/resend',params)
+	}
+}
+
+/* 线上路演 */
+export const videoENInterface={
+	/**
+	 * 视频列表
+	 * CurrentIndex=1&PageSize=10&KeyWord=线上
+	 * @returns 
+	 */
+	roadVideoList:params=>{
+		return http.get('/english_report/video/list',params)
+	},
+	//保存视频
+	roadVideoSave:params=>{
+		return http.post('/english_report/video/save',params)
+	},
+	//发布视频
+	roadVideoPublished:params=>{
+		return http.post('/english_report/video/publish',params)
+	},
+	//取消发布视频
+	roadVideoPublishedCancel:params=>{
+		return http.post('/english_report/video/publish/cancel',params)
+	},
+	//删除视频
+	roadDelVideo:params=>{
+		return http.post('/english_report/video/delete',params)
+	},
+	/**
+	 * 路演视频封面库
+	 */
+	videoCoverImgList:params=>{
+		return http.get('/english_report/video/cover/list',params)
+	},
+	/**
+	 * 新增/编辑视频封面
+	 */
+	videoCoverImgSave:params=>{
+		return http.post('/english_report/video/cover/save',params)
+	},
+	//删除封面
+	videoCoverImgDel:params=>{
+		return http.post('/english_report/video/cover/delete',params)
+	},
+
+	//邮件群发
+	videoEmailSend:params=>{
+		return http.post('/english_report/email/video/send',params)
+	}
+}

+ 44 - 0
src/api/modules/reportVariety.js

@@ -0,0 +1,44 @@
+//报告品种
+import http from "@/api/http.js"
+
+//英文报告品种权限
+export const reportVarietyENInterence={
+    // 品种列表
+    varietyList:params=>{
+        return http.get('/en_permission/list',params)
+    },
+    //获取过滤后的品种列表数据
+    filterVarietyOpts:params=>{
+        return new Promise((resolve,reject)=>{
+            http.get('/en_permission/list',params).then(res=>{
+                if(res.Ret===200){
+                    const arr=res.Data||[]
+                    arr.forEach(e => {
+                        e.Child&&e.Child.forEach(_e=>{
+                            delete _e.Child
+                        })
+                    });
+                    const resArr=arr.filter(e=>e.Child&&e.Child.length>0)
+                    resolve(resArr)
+                }
+            })
+        })
+    },
+    //父级品种
+    parentVarietyList:params=>{
+        return http.get('/en_permission/parent/list',params)
+    },
+    //新增品种
+    addVariety:params=>{
+        return http.post('/en_permission/add',params)
+    },
+    //编辑品种
+    editVariety:params=>{
+        return http.post('/en_permission/edit',params)
+    },
+    //删除品种
+    delVariety:params=>{
+        return http.post('/en_permission/remove',params)
+    }
+
+}

+ 38 - 0
src/api/modules/reportupdateApi.js

@@ -0,0 +1,38 @@
+//研报更新管理
+
+import http from "@/api/http.js"
+
+/**
+ * 获取停更的统计
+ * @returns 
+ */
+ export const pauseReportAll = params => {
+  return http.get('/report/getStopDayWeekReportChapterTypeList',params)
+}
+
+/**
+ * 获取暂停更新的报告
+ * StopType stop - 暂停更新; disable - 永久停更
+ * @returns 
+ */
+ export const pauseReport = params => {
+  return http.get('/report/getDayWeekReportChapterTypeList',params)
+}
+
+/**
+ * 设置停更
+ * ResearchType
+ *List [ "ReportChapterTypeId": 19,"PauseStartTime": "2022-10-27","PauseEndTime": "2022-11-02"]
+ */
+export const setPauseReport = params => {
+  return http.post('/report/setDayWeekReportUpdateRule',params)
+}
+
+/**
+ * 设置永久停
+ * DayReportChapterTypeId
+ * WeekReportChapterTypeId
+ */
+export const setStopReport = params => {
+  return http.post('/report/setDayWeekReportEnableUpdateRule',params)
+}

+ 331 - 0
src/api/modules/roadshowApi.js

@@ -0,0 +1,331 @@
+// 路演管理模块
+import http from "@/api/http.js"
+
+const roadshowInterence={
+	/**
+	 * 路演FICC销售列表
+	 */
+	getSellerList:params=>{
+		return http.get('/custom/seller/roadshow_ficc/list',params)
+	},
+	/**
+	 * 获取路演-研究员列表
+	 * @param {*} params 
+	 * @returns 
+	 */
+	getResearcherList:params=>{
+		return http.get('/roadshow/researcher/list',params)
+	},
+
+	/**
+	 * 获取日历列表
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @param {CalendarType} params 1:待处理申请,2:已处理申请,3:内部会议
+	 * @returns 
+	 */
+	getCalendarList:params=>{
+		return http.get('/roadshow/calendar/list',params)
+	},
+
+	/**
+	 * 撤回路演活动
+	 * @param {*} params RsCalendarId RsCalendarResearcherId
+	 * @returns 
+	 */
+	revocationRoadshow:params=>{
+		return http.post('/roadshow/back',params)
+	},
+
+	/**
+	 * 接受路演活动
+	 * @param {RsCalendarId} params 
+	 * @param {RsCalendarResearcherId} params 
+	 * @returns 
+	 */
+	acceptRoadshow:params=>{
+		return http.post('/roadshow/accept',params)
+	},
+	
+	/**
+	 * 拒绝路演
+	 * @param {*} params RsCalendarId RsCalendarResearcherId RefuseReason
+	 * @returns 
+	 */
+	refuseRoadshow:params=>{
+		return http.post('/roadshow/refuse',params)
+	},
+
+	/**
+	 * 删除路演活动
+	 * @param {*} params RsCalendarId RsCalendarResearcherId DeleteReason
+	 * @returns 
+	 */
+	deleteRoadshow:params=>{
+		return http.post('/roadshow/delete',params)
+	},
+
+	/**
+	 * 研究员日历
+	 * @param {DateType} params 
+	 * @param {ResearcherId} params 
+	 * @returns 
+	 */
+	getCalendarDetail:params=>{
+		return http.get('/roadshow/researcher/calendar/detail',params)
+	},
+    /**
+	 * 销售员日历
+	 * @param {DateType} params 
+	 * @param {SellerId} params 
+	 * @returns 
+	 */
+	getSellerCalendarDetail:params=>{
+		return http.get('/roadshow/seller/calendar/detail',params)
+	},
+
+	/**
+	 * 我的日历
+	 * @param {DateType} params 
+	 * @returns 
+	 */
+	myCalendarDetail:params=>{
+		return http.get('/roadshow/my/calendar/detail',params)
+	},
+
+
+
+	// 客户搜索 KeyWord
+	searchRoadshowCompany:params=>{
+		return http.get('/roadshow/company/search',params)
+	},
+
+	/**
+	 * 客户详情
+	 * @param {CompanyId} params 
+	 * @returns 
+	 */
+	componyDetail:params=>{
+		return http.get('/roadshow/company/detail',params)
+	},
+
+	/**
+	 * 新增路演活动
+	 * @param {*} params  
+	 * "ActivityType": "路演",
+			"RoadshowType": "线上",
+			"RoadshowPlatform": "腾讯会议",
+			"CompanyId": 16,
+			"CompanyName": "弘则研究",
+			"ResearcherList": [
+				{
+					"ResearcherId": 4,
+					"ResearcherName": "章左昊",
+					"StartDate": "2020-01-11",
+					"EndDate": "2020-01-11",
+					"StartTime": "10:00:00",
+					"EndTime": "11:00:00",
+					"Week": "周二"
+				}
+			]
+	 * @returns 
+	 */
+	addRoadshow:params=>{
+		return http.post('/roadshow/add',params)
+	},
+
+	/**
+	 * 活动编辑 
+	 * @param {*} params  RsCalendarId RsCalendarResearcherId EditType 1修改 2重提
+	 * @returns 
+	 */
+	editRoadshow: params=>{
+		return http.post('/roadshow/edit',params)
+	},
+
+	/**
+	 * 新增事项
+	 * @param {*} params  
+	 * "MatterContent": "休假",
+		"StartDate": "2020-01-11",
+		"EndDate": "2020-01-11",
+		"StartTime": "10:00:00",
+		"EndTime": "11:00:00",
+		"StartWeek": "周二",
+		"EndWeek": "周二"
+	 * @returns 
+	 */
+	addRoadshowMatters:params=>{
+		return http.post('/roadshow/matters/add',params)
+	},
+
+	/**
+	 * 修改事项
+	 * @param {*} params 
+	 * "RsMattersId": 1,
+		"MatterContent": "休假了",
+		"StartDate": "2020-01-11",
+		"EndDate": "2020-01-11",
+		"StartTime": "10:00:00",
+		"EndTime": "11:00:00",
+		"StartWeek": "周二",
+		"EndWeek": "周二"
+	 * @returns 
+	 */
+	editMatters:params=>{
+		return http.post('/roadshow/matters/update',params)
+	},
+
+	/**
+	 * 删除事项
+	 * @param {RsMattersId} params 
+	 * @returns 
+	 */
+	delMatters:params=>{
+		return http.post('/roadshow/matters/delete',params)
+	},
+
+	/**
+	 * 事项列表
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @returns 
+	 */
+	mattersList:params=>{
+		return http.get('/roadshow/matters/list',params)
+	},
+
+	/* ==================  路演统计 ================= */
+	/**
+	 * 研究员统计
+	 * @param {*} params DataType StartDate EndDate
+	 * @returns 
+	 */
+	researcherStatistic: params => {
+		return http.get('/roadshow/report/researcher/list',params)
+	},
+
+	/**
+	 * 销售统计
+	 * @param {*} params DataType StartDate EndDate
+	 * @returns 
+	 */
+	sellerStatistic: params => {
+		return http.get('/roadshow/report/seller/list',params)
+	},
+
+	/**
+	 * 统计详情列表
+	 * @param {} params DataType StartDate EndDate AdminId AdminType
+	 * @returns 
+	 */
+	statisticDetailList: params => {
+		return http.get('/roadshow/report/calendar/list',params)
+	},
+
+	/**
+	 * 选择的研究员接口
+	 * @param {AdminIds} params DataType StartDate EndDate AdminId AdminType
+	 * @returns 
+	 */
+	 roadshowChoiceResearcher: params => {
+		return http.post('/roadshow/report/choice/researcher',params)
+	},
+	
+	/**
+	 * 公开会议日历详情
+	 * @param {} params StartDate EndDate
+	 * @returns 
+	 */
+	meetCalendarDetail: params => {
+		return http.get('/roadshow/public_meeting/detail',params)
+	},
+
+
+	/**
+	 * 获取选择的研究员列表
+	 * @param {} params DataType StartDate EndDate AdminId AdminType
+	 * @returns 
+	 */
+	roadshowAdminList: params => {
+		return http.get('/roadshow/report/admin/list',params)
+	},
+
+	/**
+	 * 专项路演统计接口
+	 * @param {} params DataType StartDate EndDate AdminId AdminType
+	 * @returns 
+	 */
+	roadshowSpecialList: params => {
+		return http.get('/roadshow/report/special/list',params)
+	},
+
+	/**
+	 * 路演反馈列表
+	 * @param {} params PageSize CurrentIndex FeedbackType 0:不显示(默认),1:显示 ResearcherId 
+	 * @returns
+	 */
+	feedbackList: params => {
+		return http.get('/roadshow/feedback/list',params)
+	},
+
+	/**
+	 * 发送路演反馈
+	 * @param {*} params List  [{"RsCalendarResearcherId": 0}
+  ]
+	 * @returns 
+	 */
+	sendFeedback: params => {
+		return http.post('/roadshow/send/feedback',params)
+	},
+
+	/**
+	 * 待反馈列表
+	 * @param {*} params   [{"RsCalendarResearcherId": 0}
+  ]
+	 * @returns 
+	 */
+	toFeedbacklist: params => {
+		return http.get('/roadshow/submit/feedback/list',params)
+	},
+
+	/**
+	 * 填写路演反馈
+	 * @param {*} params   RsCalendarResearcherId FeedbackContent
+  ]
+	 * @returns 
+	 */
+	writeFeedback: params => {
+		return http.post('/roadshow/write/feedback',params)
+	},
+
+	/**
+	 * 提交反馈
+	 * @param {*} params   [{RsCalendarResearcherId}]
+  ]
+	 * @returns 
+	 */
+	submitFeedback: params => {
+		return http.post('/roadshow/submit/feedback',params)
+	},
+    /**
+     * 报告电话会活动类别
+     * @param {*} params 
+     */
+    getTelList:params=>{
+        return http.get('/yb/activity/type/tel_list',params)
+    },
+	// -------------------------------------出差表模块
+	/**
+	 * 获取研究员的出差表
+	 * @param {*} params.AdminId - 研究员的AdminId
+	 * @returns 
+	*/
+	getResearcherBusinessTrip: params => {
+		return http.get('/roadshow/report/researcher/business_trip',params)
+	},
+}
+
+export {
+	roadshowInterence
+}

+ 125 - 0
src/api/modules/sandApi.js

@@ -0,0 +1,125 @@
+import http from "@/api/http.js"
+
+export default {
+	/**
+	 * 保存沙盘 新增or编辑
+	 * @param {*} params 
+	 * @param {SandboxId} params 
+	 * @param {Name} params 
+	 * @param {ChartPermissionId} params 
+	 * @param {Content} params 
+	 * @param {PicUrl} params 
+	 * @returns 
+	 */
+	sandSave: params => {
+		return http.post('/sandbox/save',params)
+	},
+
+	/**
+	 * 保存草稿
+	 * @param {*} params 
+	 * @param {SandboxId} params 
+	 * @param {Name} params 
+	 * @param {ChartPermissionId} params 
+	 * @param {Content} params 
+	 * @returns 
+	 */
+	draftSave: params => {
+		return http.post('/sandbox/draft/add',params)
+	},
+	/**
+	 * 沙盘列表
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params
+	 * @param {Keyword} params 
+	 * @param {ChartPermissionId} params 
+	 * @returns 
+	 */
+	sandlist: params => {
+		return http.get('/sandbox/list',params)
+	},
+
+	/**
+	 * 沙盘列表 添加、编辑 研报(周报晨报)、PPT 用到,可以根据品种名称搜索
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params
+	 * @param {Keyword} params  支持沙盘图名称和品种名称搜索
+	 * @returns 
+	 */
+	 sandlistByQuote: params => {
+		return http.get('/sandbox/list_by_quote',params)
+	},
+	/**
+	 * 标记编辑状态
+	 * @param {SandboxId} params 
+	 * @param {Status} params 
+	 * @returns 
+	 */
+	mark: params => {
+		return http.post('/sandbox/mark',params)
+	},
+	
+	/**
+	 * 获取最新沙盘对应数据
+	 * @param {SandboxId} params 
+	 * @returns 
+	 */
+	sandData: params => {
+		return http.get('/sandbox/last_info',params)
+	},
+
+	/**
+	 * 获取版本对应数据
+	 * @param {SandboxVersionCode} params 
+	 * @returns 
+	 */
+	versionData: params => {
+		return http.get('/sandbox/version/detail',params)
+	},
+
+	/**
+	 * 历史版本列表
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @param {SandboxId} params 
+	 */
+	verisonlist: params => {
+		return http.get('/sandbox/version/list',params)
+	},
+
+	/**
+	 * 前3个历史版本
+	 * @param {SandboxId} params
+	 * @returns 
+	 */
+	childList: params => {
+		return http.get('/sandbox/version/first_list',params)
+	},
+
+	/**
+	 * 删除沙盘
+	 * @param {SandboxId} params 
+	 * @returns 
+	 */
+	sanDelete: params => {
+		return http.post('/sandbox/delete',params)
+	},
+
+	/**
+	 * 取消保存草稿
+	 * @param {SandboxId} params 
+	 */
+	cancelSave: params => {
+		return http.post('/sandbox/draft/reset',params)
+	},
+
+	/**
+	 * 删除版本 SandboxVersionCode
+	 * @param {*} params 
+	 * @returns 
+	 */
+	sandDelVersion: params => {
+		return http.post('/sandbox/version/delete',params)
+	}
+
+}

+ 78 - 0
src/api/modules/sealApi.js

@@ -0,0 +1,78 @@
+// 用印模块
+import http from "@/api/http.js"
+
+const sealInterence={
+	// 用印审批列表
+	getSealApprovalList:params=>{
+		return http.get('/seal/getApprovalPageList',params)
+	},
+
+	// 详情
+	getSealDetail:params=>{
+		return http.get('/seal/getSealApprovalDetail',params)
+	},
+
+	//操作记录
+	getSealOperationList:params=>{
+		return http.get('/seal/getOperationList',params)
+	},
+
+	// 合规修改数据审批通过
+	sealApprovalPassModify:params=>{
+		return http.post('/seal/verifierEditSealApproval',params)
+	},
+
+	// 通过审批
+	sealApprovalPass:params=>{
+		return http.post('/seal/approvedSealApproval',params)
+	},
+
+	// 拒绝审批
+	sealApprovalReject:params=>{
+		return http.post('/seal/rejectSealApproval',params)
+	},
+
+	//用印作废
+	sealInvalid:params=>{
+		return http.post('/seal/invalidSealApproval',params)
+	},
+
+	//用印删除
+	sealDelete:params=>{
+		return http.post('/seal/delSealApproval',params)
+	},
+
+	//撤回申请
+	sealApprovalBack:params=>{
+		return http.post('/seal/cancelSealApproval',params)
+	},
+	//用印审批详情
+	sealApprovalDetail:params=>{
+		return http.get('/seal/getSealApprovalDetail',params)
+	},
+	//获取用印所需合同列表
+	getContractListBySeal:params=>{
+		return http.get('/contract/getListBySeal',params)
+	},
+	//上传接口
+	resourceUpload:params=>{
+		return http.post('/resource/image/upload',params)
+	},
+	//用印申请
+	sealApplySealApproval:params=>{
+		return http.post('/seal/applySealApproval',params)
+	},
+	//编辑用印申请
+	sealEditSealApproval:params=>{
+		return http.post('/seal/editSealApproval',params)
+	},
+
+	//上传/更新签回附件
+	sealCheckFileUpload:params=>{
+		return http.post('/seal/uploadCheckBackFile',params)
+	}
+}
+
+export {
+	sealInterence
+}

+ 278 - 0
src/api/modules/semanticsApi.js

@@ -0,0 +1,278 @@
+/* 语义分析管理 */
+import http from "@/api/http.js"
+
+//标签管理
+const tagInterface = {
+  /**
+   * 标签列表
+   * @param {PageSize,CurrentIndex,Keyword} 
+   * PageSize Number 
+   * CurrentIndex Number
+   * Keyword String 搜索关键词
+   */
+  getTagList:params=>{
+    return http.get('/semantic_analysis/label/page_list',params)
+  },
+  /**
+   * 新增标签
+   * @param {LabelName}
+   * LabelName String 标签名称
+   */
+  addNewTag:params=>{
+    return http.post('/semantic_analysis/label/add',params)
+  },
+  /**
+   * 编辑标签
+   * @param {SaLabelId,LabelName}
+   * SaLabelId Number 标签ID
+   * LabelName String 标签名称
+   */
+   editTag:params=>{
+    return http.post('/semantic_analysis/label/edit',params)
+  },
+  /**
+   * 删除标签
+   * @param {SaLabelId}
+   * SaLabelId Number 标签ID
+   */
+  deleteTag:params=>{
+    return http.post('/semantic_analysis/label/del',params)
+  },
+  /**
+   * 获取标签引用详情
+   * @param {LabelId}
+   * LabelId Number 标签ID
+   */
+  getTagUseDetail:params=>{
+    return http.get('/semantic_analysis/label/use_detail',params)
+  }
+}
+
+//文档管理
+const documentInterface = {
+  /**
+   * 文档分类列表
+   * @param {} 
+   */
+  getClassifyList:params=>{
+    return http.get('/semantic_analysis/doc_classify/list',params)
+  },
+  /**
+   * 新增文档分类
+   * @param {ClassifyName,CoverImg} 
+   * ClassifyName String 分类名称
+   * CoverImg String 图片地址
+   */
+  addNewClassify:params=>{
+    return http.post('/semantic_analysis/doc_classify/add',params)
+  },
+  /**
+   * 编辑文档分类
+   * @param {SaDocClassifyId,ClassifyName,CoverImg} 
+   * SaDocClassifyId Number 文档分类ID
+   * ClassifyName String 分类名称
+   * CoverImg String 图片地址
+   */  
+  editClassify:params=>{
+    return http.post('/semantic_analysis/doc_classify/edit',params)
+  },
+  /**
+   * 删除文档分类
+   * @param {SaDocClassifyId} 
+   * SaDocClassifyId Number 文档分类ID
+   */
+  deleteClassify:params=>{
+    return http.post('/semantic_analysis/doc_classify/del',params)
+  },
+  /**
+   * 文档列表
+   * @param {PageSize,CurrentIndex,Keyword,ClassifyId} 
+   * PageSize Number 
+   * CurrentIndex Number
+   * Keyword Number
+   * ClassifyId Number 文档分类ID
+   */
+  getDocumentList:params=>{
+    return http.get('/semantic_analysis/doc/page_list',params)
+  },
+  /**
+   * 文档详情
+   * @param {DocId} 
+   * DocId Number 文档ID
+   */
+  getDocumentDetail:params=>{
+    return http.get('/semantic_analysis/doc/detail',params)
+  },
+  /**
+   * 删除文档
+   * @param {DocId} 
+   * SaDocId Number 文档ID
+   */
+  deleteDocument:params=>{
+    return http.post('/semantic_analysis/doc/del',params)
+  },
+  /**
+   * 新增文档
+   * @param {Title,Theme,ClassifyId,Content} 
+   * Title String 文档标题
+   * Theme String 文档主题
+   * ClassifyId String 文档分类
+   * Content String 文档内容
+   */  
+  addDocument:params=>{
+    return http.post('/semantic_analysis/doc/add',params)
+  },
+  /**
+   * 编辑文档
+   * @param {SaDocId,Title,Theme,ClassifyId,SectionList} 
+   * SaDocId Number 文档ID
+   * Title String 文档标题
+   * Theme String 文档主题
+   * ClassifyId String 文档分类
+   * SectionList Array 文档段落化后的数组
+   *  SectionList.SaDocSectionId Number 段落ID 为0时表示新增
+   *  SectionList.DocId Number 文档ID
+   *  SectionList.Content String 段落内容
+   *  SectionList.Sort Number 段落排序
+   */ 
+  editDocument:params=>{
+    return http.post('/semantic_analysis/doc/edit',params)
+  },
+  /**
+   * 移动文档
+   * @param {Object} params 
+   * @param {Number} params.SaDocId 文档ID
+   * @param {Number} params.SaDocClassifyId 移动放入的文档分类ID
+   * @param {Number} params.PrevSaDocId 上一个文档ID 如果置顶则为0
+   * @param {Number} params.NextSaDocId 下一个文档ID 如果置底则为0
+   * @returns 
+   */
+  moveDocument:params=>{
+    return http.post('/semantic_analysis/doc/move',params)
+  }
+}
+
+//文档对比管理
+const semanticInterface = {
+  /**
+   * 语义分析分类列表
+   * @param {} 
+   */
+  getClassifyList:params=>{
+    return http.get('/semantic_analysis/compare_classify/list',params)
+  },
+  /**
+   * 新增语义分析分类
+   * @param {ClassifyName} 
+   * ClassifyName String 分类名称
+   */ 
+  addNewClassify:params=>{
+    return http.post('/semantic_analysis/compare_classify/add',params)
+  }, 
+  /**
+   * 编辑语义分析分类
+   * @param {SaCompareClassifyId,ClassifyName} 
+   * SaCompareClassifyId Number 语义分类ID
+   * ClassifyName String 分类名称
+   */   
+  editClassify:params=>{
+    return http.post('/semantic_analysis/compare_classify/edit',params)
+  },
+  /**
+   * 删除语义分析分类
+   * @param {SaCompareClassifyId} 
+   * SaCompareClassifyId Number 语义分类ID
+   */
+  deleteClassify:params=>{
+    return http.post('/semantic_analysis/compare_classify/del',params)
+  },  
+  /**
+   * 语义分析列表
+   * @param {PageSize,CurrentIndex,Keyword,ClassifyId} 
+   * PageSize Number 
+   * CurrentIndex Number
+   * Keyword String
+   * ClassifyId Number
+   */
+  getSemanticList:params=>{
+    return http.get('/semantic_analysis/compare/page_list',params)
+  },
+  /**
+   * 删除语义分析
+   * @param {SaCompareId} 
+   * SaCompareId Number 对比ID
+   */
+  deleteSemantic:params=>{
+    return http.post('/semantic_analysis/compare/del',params)
+  },
+  /**
+   * 保存(编辑)语义分析
+   * @param {SaCompareId,Title,ClassifyId,CompareList} 
+   * SaCompareId Number 对比ID =0是新增,>0是编辑
+   * Title Number 语义分析名称
+   * ClassifyId String 所属分类ID
+   * CompareList Number
+   */
+  saveSemantic:params=>{
+    return http.post('/semantic_analysis/compare/save',params)
+  },
+  /**
+   * 语义分析详情
+   * @param {CompareId} 
+   * CompareId 语义分析ID
+   */
+  getSemanticDetail:params=>{
+    return http.get('/semantic_analysis/compare/detail',params)
+  },
+  /**
+   * 获取对比文档详情
+   * @param {DocIds} 
+   * DocIds String 文档IDs 用英文逗号拼接
+   */
+  getCompareDocumentDetail:params=>{
+    return http.get('/semantic_analysis/compare/select_docs',params)
+  },
+  /**
+   * 更新对比结果图片
+   * @param {SaCompareId,ResultImg} 
+   * SaCompareId Number 对比ID 即保存/另存为成功后返回的ID
+   * ResultImg String 对比结果图片地址
+   */
+  updateSemanticImg:params=>{
+    return http.post('/semantic_analysis/compare/update_result_img',params)
+  },
+  /**
+   * 上传图片
+   * @param {*} params Image
+   * @returns 
+   */
+  uploadImg:params => {
+    return http.post('/resource/upload_image_base64',params)
+  },
+  /**
+   * 
+   * @param {*} params 
+   * SaCompareId Number 对比ID
+   * Keywords Array 搜索词
+   * @returns 
+   */
+  saveKeyWords:params => {
+      return http.post('/semantic_analysis/compare/save_keywords',params)
+  },
+  /**
+   * 移动语义分析
+   * @param {Object} params 
+   * @param {Number} params.SaCompareId 语义分析ID
+   * @param {Number} params.SaCompareClassifyId 移动放入的语义分析分类ID
+   * @param {Number} params.PrevSaDocId 上一个文档ID 如果置顶则为0
+   * @param {Number} params.NextSaDocId 下一个文档ID 如果置底则为0
+   * @returns 
+   */
+  moveCompare:params => {
+      return http.post('/semantic_analysis/compare/move',params)
+  }
+}
+
+
+
+export {tagInterface,documentInterface,semanticInterface}

+ 428 - 0
src/api/modules/setApi.js

@@ -0,0 +1,428 @@
+import http from "@/api/http.js"
+
+/* 部门管理模块 */
+const departInterence = {
+
+	/**
+	 * AdminId
+	 * Enabled 0 1
+	 */
+	statusChange: params => {
+		return http.post('/system/sysuser/editEnabled',params)
+	},
+	/* 审批配置详情 */
+	approvalFlowDetail:params=>{
+		return http.get('/system/flow/detail',params)
+	},
+	/* 添加审批人搜索 */
+	approvalUserSearch:params=>{
+		return http.get('/system/flow/user',params)
+	},
+	/* 审批配置保存/编辑 */
+	approvalFlowSave:params=>{
+		return http.post('/system/flow/edit',params)
+	},
+
+	/* 新增部门接口
+	"DepartmentName": "string" */
+	addDepart: params => {
+		return http.post('/system/department/add',params)
+	},
+	/* 删除部门
+	DepartmentId int */
+	delDepart: params => {
+		return http.post('/system/department/delete',params)
+	},
+	/* 修改部门
+	"DepartmentId": int,
+	"DepartmentName": "string" */
+	editDepart: params => {
+		return http.post('/system/department/edit',params)
+	},
+	/* 获取部门列表 */
+	getDepartList: params => {
+		return http.get('/system/department/list',params)
+	},
+	/* 新增分组
+		"DepartmentId": int,
+		"GroupName": "string"
+	*/
+	addGroup: params => {
+		return http.post('/system/group/add',params)
+	},
+	/* 新增二级分组接口
+		"DepartmentId": int,
+		"GroupName": "string"
+	*/
+	addTeamGroup: params => {
+		return http.post('/system/team/add',params)
+	},
+	/* 删除分组
+	"GroupId": int
+	 */
+	delGroup: params => {
+		return http.post('/system/group/delete',params)
+	},
+	/* 删除分组接口
+	"GroupId": int
+	 */
+	delTeamGroup: params => {
+		return http.post('/system/team/delete',params)
+	},
+	/* 修改分组
+	 "GroupId": int,
+	 "GroupName": "string" 
+	  DepartmentId int*/
+	editGroup: params => {
+		return http.post('/system/group/edit',params)
+	},
+	/* 修改分组
+	 "GroupId": int,
+	 "GroupName": "string" 
+	  DepartmentId int*/
+	editTeamGroup: params => {
+		return http.post('/system/team/edit',params)
+	},
+	/*	新增用户 
+	 "AdminName": "string",
+  "Authority": 0,
+  "DepartmentId": 0,
+  "GroupId": 0,
+  "Mobile": "string",
+  "Password": "string",
+  "Position": "string",
+  "RealName": "string",
+  "RoleId": 0*/
+	addUser: params => {
+		return http.post('/system/sysuser/add',params)
+	},
+	/* 修改用户
+	"AdminId": 0,
+  "AdminName": "string",
+  "Authority": 0,
+  "DepartmentId": 0,
+  "GroupId": 0,
+  "Mobile": "string",
+  "Password": "string",
+  "Position": "string",
+  "RealName": "string",
+  "RoleId": 0 */
+	editUser: params => {
+		return http.post('/system/sysuser/edit',params)
+	},
+	/* 删除用户
+	AdminId */
+	delUser: params => {
+		return http.post('/system/sysuser/delete',params)
+	},
+	/* 获取用户列表
+	PageSize int
+	CurrentIndex int
+	DepartmentId int
+	GroupId int
+	KeyWord  */
+	getUserList: params => {
+		return http.get('/system/sysuser/list',params)
+	},
+	//获取menu
+	getMenu:params => {
+		return http.get('/system/menu/list',params)
+	},
+	/* 获取所有已添加角色 */
+	getRole:params => {
+		return http.get('/system/role/all',params)
+	},
+	/* 新增角色
+	 "RoleName": "string" */
+	addRole: params => {
+		return http.post('/system/role/add',params)
+	},
+	/* 删除角色
+		"RoleId": 0 */
+	delRole: params => {
+		return http.post('/system/role/delete',params)
+	},
+	/* 修改角色
+	  "RoleId": 0 int,
+	  "RoleName": "string" */
+	editRole: params => {
+		return http.post('/system/role/edit',params)
+	},
+	/* 获取角色列表
+	PageSize int
+	CurrentIndex int
+	KeyWord  */
+	getRoleList: params => {
+		return http.get('/system/role/list',params)
+	},
+	/* 新增角色权限
+	MenuIdStr
+	"RoleId" 
+	MenuButtonIdStr
+	*/
+	saveAuth:params => {
+		return http.post('/system/role/menu/add',params)
+	},
+	/* 获取所有权限
+	RoleId  */
+	getAuthList:params => {
+		return http.get('/system/role/menu/list',params)
+	},
+	/* 获取所有功能权限 */
+	getBtnAuth:params => {
+		return http.get('/system/menu/buttons',params)
+	},
+	/* 获取研究方向分组列表 */
+	getResearchGroupList:params => {
+		return http.get('/system/research_group/list',params)
+	},
+	/* 获取研究员的研究方向 */
+	getResearchGroupByAdminId:params => {
+		return http.get('/system/research_group/admin_group',params)
+	},
+	/* 获取需要配置的账号列表 */
+	getQuestionAdminList:params =>{
+		return http.get('/system/role/seller/list',params)
+	},
+	/* 新增运营管理员(批量)*/
+	addQuestionAdmins:params=>{
+		return http.post('/system/role/admin/add',params)
+	},
+	/* 删除运营管理员(单个) RoleTypeCode:yb_question_admin*/
+	deleteQuestionAdmin:params=>{
+		return http.post('/system/role/admin/del',params)
+	},
+	/* 已绑定的管理员列表 
+	RoleTypeCode:yb_comment_admin/yb_question_admin
+	*/
+	getRoleAdminList:params=>{
+		return http.get('/system/role/admin/list',params)
+	},
+	/* 获取标签库数据
+		 IncludeDisableMember:1包含禁用的研究员
+	 */
+	getTagTree:params=>{
+		return http.get('/taglib/variety_tag/tag_tree',params)
+	},
+	/* 同步每刻 
+	*/
+	syncCompanyProfile:params=>{
+		return http.post('/maycur/company_profile/sync',params)
+	},
+	/**
+	 * 移动用户分组
+	 * AdminId
+	 * DepartmentId
+	 * GroupId
+	 * TeamId
+	 */
+	moveSysuser:params=>{
+		return http.post('/system/sysuser/move',params)
+	},
+	/**
+	 * 重置用户密码
+	 * AdminId
+	 * Password 密码是经过md5加密后的字符串
+	 * RePassword 两次的密码要一样
+	 */
+	resetSysuserPass:params=>{
+		return http.post('/system/sysuser/reset_pass',params)
+	},
+	/**
+	 * 部门移动排序
+	 * DepartmentIds 移动的是一级部门时,移动后的排序
+	 * GroupIds 移动的是二级部门时,移动后的排序
+	 * TeamIds 移动的是三级部门时,移动后的排序
+	 */
+	sortDepart:params=>{
+		return http.post('/system/group/set_sort',params)
+	}
+}
+
+/* 视频管理 */
+const videoInterence = {
+	/* 上传视频接口 file  */
+	upload: params => { 
+		return http.post('/resource/video/upload',params);
+	},
+	/* 删除视频 VideoId */
+	delVideo: params => {
+		return http.post('/video/delete',params)
+	},
+	/* 编辑视频   
+  "PlaySeconds": 0,
+  "TagsIdStr": "string",
+  "Title": "string",
+  "VideoCoverUrl": "string",
+  "VideoId": 0,
+  "VideoUrl": "string" */
+	editVideo: params => {
+		return http.post('/video/edit',params)
+	},
+	/* 视频列表 
+	PageSize *
+	CurrentIndex *
+	KeyWord **/
+	getVideoList: params => {
+		return http.get('/video/list',params)
+	},
+	/* 发布 "VideoIds": "string" */
+	publish: params => {
+		return http.post('/video/publish',params)
+	},
+	/* 取消发布 "VideoIds": "string"*/
+	cancelPublish: params => {
+		return http.post('/video/publish/cancel',params)
+	},
+	/* 新增视频 
+	"PlaySeconds": 0,
+  "TagsIdStr": "string",
+  "Title": "string",
+  "VideoCoverUrl": "string",
+  "VideoUrl": "string" */
+	saveVideo: params => {
+		return http.post('/video/save',params)
+	},
+	/* 标签 */
+	tagList: params => {
+		return http.get('/video/tags/list',params)
+	},
+}
+
+/* 互动管理 */
+const InteractionInterence = {
+	/* 问答列表 */
+	getQuestionList:params => {
+		return http.get('/yb/community/question/list',params)
+	},
+	/* 分配回复人 */
+	distributeAnswer:params => {
+		return http.post('/yb/community/question/distribute',params)
+	},
+	/* 删除问答 */
+	deleteQuestion:params => {
+		return http.post('/yb/community/question/delete',params)
+	},
+	/* 推送分配消息 */
+	sendMsg:params =>{
+		return http.post('/yb/community/question/send_template_msg',params)
+	},
+	/* 编辑问题描述 */
+	editQuestion:params=>{
+		return http.post('/yb/community/question/edit',params)
+	},
+	/* 查询点击量详情列表 */
+	questionClickLogs:params=>{
+		return http.get('yb/community/question/click/logs',params)
+	},
+	/* 提问者详情 */
+	questionUser:params=>{
+		return http.get('yb/community/question/user',params)
+	},
+	questionDetail:params=>{
+		return http.get('yb/community/question/detail',params)
+	},
+	// 转移问题
+	questionTransfer:params=>{
+		return http.post('yb/community/question/transfer',params)
+	}
+}
+
+/* 数据操作权限 */
+const operateAuthInterface = {
+	/**
+	 * 列表
+	 * @param {*} params 
+	 * Source=5&UserId=11&CurrentIndex=1&PageSize=10 Keyword
+	 * @returns 
+	 */
+	list: params => {
+		return http.get('/datamanage/edb_chart/list',params)
+	},
+
+	/**
+	 * 修改权限所属
+	 * @param {*} params 
+	 * Source DataIdList NewUserId
+	 * @returns 
+	 */
+	authEdit: params => {
+		return http.post('/datamanage/edb_chart/change_user',params)
+	},
+
+		/**
+	 * 修改权限所属
+	 * @param {*} params.Source - string -来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库
+	 * @returns 
+	 */
+		getClassificationBySource: params => {
+			return http.get('/datamanage/edb_chart/classify',params)
+		},
+
+	/**
+	 * 获取指标无权限列表
+	 * @param {*} params EdbInfoId
+	 * @returns 
+	 */
+	getEdbNoAuthList: params => {
+		return http.get('/datamanage/edb_no_permission/list',params)
+	},
+
+	/**
+	 * 设置无权限用户
+	 * @param {*} params EdbInfoId AdminIdList:[]
+	 * @returns 
+	 */
+	edbNoAuthSet: params => {
+		return http.post('/datamanage/edb_no_permission/modify',params)
+	},
+
+	/**
+	 * 删除指标无权限  EdbInfoId  AdminId
+	 * @param {*} params 
+	 * @returns 
+	 */
+	edbNoAuthDel: params => {
+		return http.post('/datamanage/edb_no_permission/delete',params)
+	},
+
+	/**
+	 * 批量配置无权限用户
+	 * @param {*} params EdbInfoIdList AdminIdList
+	 * @returns 
+	 */
+	edbNoAuthBatchSet: params => {
+		return http.post('/datamanage/edb_no_permission/batch_add',params)
+	}
+}
+
+/* 英文权限管理 */
+const enAuthInterence = {
+  /* 英文权限列表 */
+  getAuthList:params=>{
+    return http.get('/english_report/auth/list',params)
+  },
+  /* 英文权限详情  AdminId*/
+  getAuthDetail:params=>{
+    return http.get('/english_report/auth/detail',params)
+  },
+  /* 英文权限批量新增 AdminIds*/
+  addAuthAdmins:params=>{
+    return http.post('/english_report/auth/batch_add',params)
+  },
+  /* 英文权限编辑 AdminId RoleTypeCodes*/
+  editAuthAdmin:params=>{
+    return http.post('/english_report/auth/edit',params)
+  },
+  /* 英文权限 删除 AdminId*/
+  deleteAuthAdmin:params=>{
+    return http.post('/english_report/auth/del',params)
+  }
+}
+export {
+	departInterence,
+	videoInterence,
+	InteractionInterence,
+	operateAuthInterface,
+  enAuthInterence
+}

+ 248 - 0
src/api/modules/sheetApi.js

@@ -0,0 +1,248 @@
+import http from "@/api/http.js"
+
+/**
+ * 获取分类
+ * @returns 
+ */
+export const classifyList =  params =>{
+	return http.get('/datamanage/excel_classify/list',params)
+}
+
+/**
+ * 新增分类
+ * @param {*} params  "ExcelClassifyName": "分类1-2"
+ * @returns 
+ */
+export const classifyAdd =  params =>{
+	return http.post('/datamanage/excel_classify/add',params)
+}
+
+/**
+ * 编辑分类
+ * @param {*} params  ExcelClassifyName ExcelClassifyId
+ * @returns 
+ */
+export const classifyEdit =  params =>{
+	return http.post('/datamanage/excel_classify/edit',params)
+}
+
+/**
+ * 删除分类检测
+ * @param {*} params ExcelClassifyId ExcelInfoId
+ * @returns 
+ */
+export const classifyDelCheck = params =>{
+	return  http.post('/datamanage/excel_classify/delete/check',params)
+}
+
+/**
+ * 删除分类
+ * @param {*} params ExcelClassifyId ExcelInfoId
+ * @returns 
+ */
+export const classifyDel = params =>{
+	return  http.post('/datamanage/excel_classify/delete',params)
+}
+
+/**
+ * 移动分类
+ * @param {*} params ClassifyId "PrevClassifyId":1, "NextClassifyId":2,
+ * @returns 
+ */
+export const classifyMove = params =>{
+	return  http.post('/datamanage/excel_classify/move',params)
+}
+
+/**
+ * 移动表格
+ * @param {*} params ExcelClassifyId ExcelInfoId PrevExcelInfoId NextExcelInfoId
+ * @returns 
+ */
+export const sheetMove = params => {
+	return http.post('/datamanage/excel_info/move',params)
+}
+
+/**
+ * 表格列表
+ * @param {*} params  CurrentIndex  PageSize  ExcelClassifyId 
+ */
+export const sheetList = params => {
+  return http.get('/datamanage/excel_info/list',params)
+}
+
+/**
+ * 表格分类
+ * @param {*} params 
+ * @returns 
+ */
+export const excelClassifyOne = params => {
+	return http.get('/datamanage/excel_classify/items',params)
+}
+
+/**
+ * 新增表格
+ * @param {*} params ExcelName ExcelClassifyId Content
+ * //自定义表格ExcelImage ExcelType TableData
+ * @returns 
+ */
+export const sheetAdd = params => {
+	return http.post('/datamanage/excel_info/add',params)
+}
+
+/**
+ * 保存表格 
+ * @param {*} params  ExcelInfoId ExcelName ExcelClassifyId Content
+ * @returns 
+ */
+export const sheetEdit = params => {
+	return http.post('/datamanage/excel_info/edit',params)
+}
+
+/**
+ * 获取表格详情
+ * @param {*} params ExcelInfoId 
+ * @returns 
+ */
+export const sheetDetail = params => {
+	return http.get('/datamanage/excel_info/detail',params)
+}
+
+/**
+ * 保存草稿
+ * @param {*} params ExcelInfoId ExcelName ExcelClassifyId Content
+ * @returns 
+ */
+export const sheetDrafSave = params => {
+	return http.post('/datamanage/excel_info/draft/add',params)
+}
+
+/**
+ * 
+ * @param {*} params Image
+ * @returns 
+ */
+export const uploadImg = params => {
+	return http.post('/resource/upload_image_base64',params)
+}
+/**
+ * 获取表格数据
+ */
+ export const getSheetData = params=>{
+  return http.get('/datamanage/excel_info/table_data',params)
+}
+
+/* =====自定义表格====== */
+
+/**
+ * 选择指标插入的数据 第一个指标
+ * @param {*} params 
+ * EdbInfoId Num
+ * @returns 
+ */
+export const getEdbInsertDataA = params => {
+	return http.get('/datamanage/excel_info/table/first_edb_data_list',params)
+}
+
+/**
+ * 选择指标根据日期插入数据  第N个指标
+ * @param {*} params 
+ * EdbInfoId DateList
+ * @returns 
+ */
+export const getEdbInsertDataOther = params => {
+	return http.post('/datamanage/excel_info/table/other_edb_data_list',params)
+}
+
+/**
+ * 根据公式计算结果
+ * @param {*} params 
+ * "CalculateFormula": "=A+B/C",
+		"TagMap":{
+			"A":100,
+			"B":200,
+			"C":0,
+		}
+ * @returns 
+ */
+export const calculateCustomCellData = params => {
+	return http.post('/datamanage/excel_info/table/calculate',params)
+}
+
+/**
+ * 获取未来日期的数据
+ * @param {*} params 
+ * "EdbInfoIdList": [102227],
+	"DateType":2,
+	"StartDate":"2023-07-28",
+	"EndDate":"2023-11-28",
+ * @returns 
+ */
+export const getCustomFutureData = params => {
+	return http.post('/datamanage/excel_info/table/future_date_list',params)
+}
+
+/**
+ * 获取过去N期数据
+ * @param {*} params 
+ * EdbInfoIdList [] EndDate Num
+ * @returns 
+ */
+export const getCustomPastData = params => {
+	return http.post('/datamanage/excel_info/table/history_date_list',params)
+}
+
+/**
+ * 编辑页详情 ExcelInfoId
+ * @param {*} params 
+ * @returns 
+ */
+export const getCustomSheetDetail = params => {
+	return http.get('/datamanage/excel_info/table/detail',params)
+}
+
+/**
+ * 刷新表格 ExcelInfoId
+ * @param {*} params 
+ * @returns 
+ */
+export const refreshCustomSheet = params => {
+	return http.get('/datamanage/excel_info/table/refresh',params)
+}
+
+/**
+ * 下载excel
+ * @param {*} params ExcelInfoId authorization
+ * @returns 
+ */
+export const downExcelFile = params => {
+	return http.get('/datamanage/excel_info/table/download',params)
+}
+
+/**
+ * 另存为
+ * @param {*} params 
+ * ExcelInfoId ExcelName ExcelClassifyId
+ * @returns 
+ */
+export const copyExcel = params => {
+	return http.post('/datamanage/excel_info/copy',params)
+}
+
+/* ======混合表格======= */
+/**
+ * 指标搜索 
+ * @param {*} params KeyWord CurrentIndex PageSize
+ * @returns 
+ */
+export const searchTarget  = params => {
+	return http.get('/datamanage/edb_info/filter_by_es/all',params)
+}
+
+/**
+ * 插值
+ * @param {*} params EdbInfoId Date
+ * @returns 
+ */
+export const insertData = params => {
+	return http.get('/datamanage/edb_info/date_data',params)
+}

+ 271 - 0
src/api/modules/statisticApi.js

@@ -0,0 +1,271 @@
+import http from "@/api/http.js"
+
+
+/* 数据报表模块 */
+const dataMainInterface = {
+	/* 工作台 */
+	workdata: params => {
+		return http.get('/statistic_report/home')
+	},
+	/**
+	 * 获取即将过期的客户列表接口
+	 * @param {PageSize } params 
+	 * @param {CurrentIndex } params 
+	 * @param {EndDate } params 结束日期
+	 * @param {CompanyType} params 
+	 * @param {AdminId } params 销售id,多个用英文逗号隔开,空字符串为全部
+	 * @param {RegionType } params 
+	 * @returns 
+	 */
+	expireList:params => {
+		return http.get('/statistic_report/will_expire_list',params);
+	},
+	/**
+	 * 获取存量客户列表接口
+	 * @param {PageSize } params 
+	 * @param {CurrentIndex } params 
+	 * @param {CompanyType} params 
+	 * @param {AdminId } params 销售id,多个用英文逗号隔开,空字符串为全部
+	 * @param {RegionType } params 
+	 * @param {Date} params 
+	 * @param {DataType} params 
+	 * @returns 
+	 */
+	stackList:params => {
+		return http.get('/statistic_report/stack_company_list',params);
+	},
+	/**
+	 * 获取增量客户列表接口
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @param {EndDate} params 结束日期
+	 * @param {CompanyType} params 
+	 * @param {AdminId } params 销售id,多个用英文逗号隔开,空字符串为全部
+	 * @param {RegionType } params 
+	 * @param {StartDate} params 
+	 * @param {DataType} params 
+	 * @returns 
+	 */
+	incrementalList:params => {
+		return http.get('/statistic_report/incremental_company_list',params);
+	},
+	/**
+	 * 获取收入统计列表接口
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @param {EndDate} params 结束日期
+	 * @param {CompanyType} params 
+	 * @param {AdminId } params 销售id,多个用英文逗号隔开,空字符串为全部
+	 * @param {RegionType } params
+	 * @returns 
+	 */
+	incomeList:params => {
+		return http.get('/statistic_report/income_list',params);
+	},
+	/**
+	 * 获取合同数据报表接口
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @param {EndDate} params 结束日期
+	 * @param {CompanyType} params 
+	 * @param {AdminId } params 销售id,多个用英文逗号隔开,空字符串为全部
+	 * @param {RegionType } params
+	 * @returns 
+	 */
+	contractList:params => {
+		return http.get('/statistic_report/contract_list',params);
+	},
+	/**
+	 * 获取企业客户的合同数据报表接口
+	 * @param {CompanyId  } params
+	 * @returns 
+	 */
+	companyContractList:params => {
+		return http.get('/statistic_report/company_contract_list',params);
+	},
+	// 系统合同类调此接口
+	companyContractDetailList:params => {
+		return http.get('/statistic_report/contract_detail_list',params);
+	},
+
+	// 客户数据未续约说明更多
+	moreRenewReason:params => {
+		return http.get('/statistic_report/more_renew_reason',params);
+	},
+	/**
+	 * 	// 获取图表阅读统计列表
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @param {ClassifyId} params 分类ID
+	 * @param {Order} params 排序
+	 * @returns 
+	 */
+	getchartCensusList:params => {
+		return http.get('/yb/chartCensus/getVisitList',params);
+	},
+	/**
+	 * 	// 图表阅读统计详情列表
+	 * @param {PageSize} params 
+	 * @param {CurrentIndex} params 
+	 * @param {ClassifyId} params 分类ID
+	 * @param {Order} params 排序
+	 * @returns 
+	 */
+	 getchartgetVisitDetailList:params => {
+	   return http.get('yb/chartCensus/getVisitDetailList',params);
+	 },
+	 /**
+	 * 	// 用户图表访问明细
+	 * @returns 
+	 */
+	  getCompanyChartVisitDetail:params => {
+		return http.get('yb/chartCensus/getCompanyChartVisitDetail',params);
+	  },
+	 /**
+	 * 	// 图库权限开通客户统计列表
+	 * @returns 
+	 */
+	 getCompanyAuthCensusList:params => {
+		return http.get('yb/chartCensus/getCompanyAuthCensusList',params);
+	  },
+	  
+	/**新增客户统计 
+	 * StartDate EndDate DataType
+	 * @return 
+	 */
+	newcustomStatistic: params => {
+		return http.get('/statistic_report/report/incremental_company',params)
+	},
+	/**
+	 * 存量客户统计
+	 * Date
+	 * @return
+	 */
+	stockcustomStatistic: params => {
+		return http.get('/statistic_report/report/stack_company',params)
+	},
+	/**续约客户统计 
+	 * StartDate 统计开始时间
+	 * EndDate 统计结束时间
+	 * DataType 统计范围类型
+	 * ProductId 项目类型 1 ficc  2 权益
+	 * @return 
+	 */
+	 renewalCustomStatistic: params => {
+		return http.get('/statistic_report/report/renew_company',params)
+	},
+
+	/**
+	 * 新增客户列表
+	 * @param {} params PageSize CurrentIndex SortParam SortType 	CompanyIds
+	 * @return
+	 */
+	newcustomList: params => {
+		return http.post('/statistic_report/report/company_list',params)
+	},
+	/**
+	 * 销售To do统计
+	 * DataType ProductId StartDate EndDate
+	 * @return
+	 */
+	 todoStatistic: params => {
+		return http.get('/statistic_report/report/seller_company_todo',params)
+	},
+
+	/**
+	 * 语音播报统计
+	 * @param SectionId	板块id
+	 * @param VarietyId 品种id
+	 * @param AdminId  语音管理员id
+	 * @param ClickSort 排序 1升序 2降序
+	 * @param Title 搜索关键词
+	 */
+	voicePlayStatistic:params=>{
+		return http.get('/yb/voice/broadcast/list',params)
+	},
+
+	/**
+	 * 语音播报详情
+	 * @param BroadcastId
+	 */
+	voicePlayDetailSta:params=>{
+		return http.get('/yb/voice/broadcast/deatil',params)
+	},
+
+	/**
+	 * 价格驱动点击量-列表
+	 */
+	priceDrivenStatisticsList:params=>{
+		return http.get('/yb/price_driven/click_census_list',params)
+	},
+	/**
+	 * 价格驱动点击量-详情
+	 */
+	 priceDrivenStatisticsDetail:params=>{
+		return http.get('/yb/price_driven/click_census_detail',params)
+	},
+
+	//ficc产品阅读统计
+	ficcProductStatistic:params=>{
+		return http.get('/statistic_report/report/seller_yb_log',params)
+	},
+
+	/**
+	 * 分产品阅读客户统计-- 新增客户列表
+	 * @param {} params PageSize CurrentIndex SortParam SortType SellerIds ProductId ProductType StartDate EndDate CompanyStatus
+	 * @return
+	*/
+		newCustomProductionList: params => {
+		return http.post('/statistic_report/report/seller_yb_log/user',params)
+	},
+
+  /**
+   * 分产品阅读统计 -- 收藏统计
+   * @param Datatype
+   */
+  collectStatistic:params=>{
+    return http.get('/statistic_report/report/seller_collect_log',params)
+  },
+
+  /**
+   * 分产品阅读统计 -- 收藏统计用户详情
+   * @param Datatype
+   */
+   collectStatisticList:params=>{
+    return http.post('/statistic_report/report/seller_collect_log/user',params)
+  },
+
+  /**
+   * 分产品阅读统计 -- 收藏详情详情
+   * @param CollectionType
+   */
+   collectDetailList:params=>{
+    return http.post('/statistic_report/report/seller_collect_log/detail',params)
+  },
+   /**
+   * 分产品阅读统计 -- 图收藏统计
+   * @param Datatype
+   */
+    chartStatistic:params=>{
+      return http.get('/statistic_report/report/seller_chart_collect_log',params)
+    },
+  /**
+   * 分产品阅读统计 -- 图收藏统计用户详情
+   * @param Datatype
+   */
+  chartStatisticList:params=>{
+    return http.post('/statistic_report/report/seller_chart_collect_log/user',params)
+  },
+  /**
+   * 分产品阅读统计 -- 图收藏详情列表
+   * @param CollectionType
+   */
+   chartDetailList:params=>{
+    return http.post('/statistic_report/report/seller_chart_collect_log/detail',params)
+  },
+
+}
+
+export {
+	dataMainInterface
+}

+ 36 - 0
src/api/modules/strategyReport.js

@@ -0,0 +1,36 @@
+// 策略平台报告模块
+import http from "@/api/http.js"
+
+const strategyReportInterence={
+    /**
+     * 策略报告列表
+     */
+    getReportList:params=>{
+        return http.get('/english_report/policy/list',params)
+    },
+    getReportDetail:params=>{
+        return http.get('/english_report/policy/detail',params)
+    },
+    /**
+     * 获取策略报告
+     */
+    getStrategyReport:params=>{
+        return http.get('/english_report/policy/pull',params)
+    },
+    /**
+     * 一键同步报告
+     */
+    syncStrategyReport:params=>{
+        return http.post('/english_report/policy/sync',params)
+    },
+    /**
+     * 报告编辑
+     */
+    reportEdit:params=>{
+        return http.post('/english_report/edit_policy',params)
+    }
+}
+
+export {
+	strategyReportInterence
+}

+ 183 - 0
src/api/modules/supplyApi.js

@@ -0,0 +1,183 @@
+import http from "@/api/http.js"
+
+/**
+ * 品种列表  IsAnalyse
+ * @param {*} params 
+ * @returns 
+ */
+export const varietyList = params => {
+  return http.get('/supply_analysis/variety/list',params)
+}
+
+/**
+ * 添加品种 
+ * @param {VarietyName AdminIdList} params 
+ * @returns 
+ */
+export const addVariety = params => {
+  return http.post('/supply_analysis/variety/add',params)
+}
+
+/**
+ * 编辑品种
+ * @param {VarietyId VarietyName AdminIdList} params 
+ * @returns 
+ */
+export const editVariety = params => {
+  return http.post('/supply_analysis/variety/edit',params)
+}
+
+/**
+ * 删除品种监测
+ * @param {*VarietyId} params 
+ * @returns 
+ */
+export const delVariety = params => {
+  return http.post('/supply_analysis/variety/delete',params)
+}
+
+/**
+ * 装置列表
+ * @param {*VarietyId} params 
+ * @returns 
+ */
+export const plantList = params => {
+  return http.get('/supply_analysis/variety/plant/list',params)
+}
+
+/**
+ * 添加装置
+ * @param {*} params
+ * "VarietyId": 1,
+    "Province": "江西省",
+    "City": "南昌市",
+    "FactoryName": "第一工厂",
+    "PlantName": "第一装置",
+    "MaintenanceDate": "2023-02-10",
+    "ResumptionDate": "2023-03-24",
+    "AnnualCapacity": 1293,
+    "Coefficient": 0.7,
+    "AverageDailyCapacityReduction": 2.4797 
+ * @returns 
+ */
+export const addPlant = params => {
+  return http.post('/supply_analysis/variety/plant/add',params)
+}
+
+/**
+ * 编辑装置
+ * @param {*} params 
+ *  "VarietyPlantId": 1,
+    "Province": "江西省",
+    "City": "南昌市",
+    "FactoryName": "第一工厂(修改)",
+    "PlantName": "第一装置",
+    "MaintenanceDate": "2023-02-10",
+    "ResumptionDate": "2023-03-24",
+    "AnnualCapacity": 1293,
+    "Coefficient": 0.7,
+    "AverageDailyCapacityReduction": 2.4797
+ * @returns 
+ */
+export const editPlant = params => {
+  return http.post('/supply_analysis/variety/plant/edit',params)
+}
+
+/**
+ * 删除装置
+ * @param {*VarietyPlantId} params 
+ * @returns 
+ */
+export const delPlant =  params => {
+  return http.post('/supply_analysis/variety/plant/delete',params)
+}
+
+/**
+ * 指标列表
+ * @param {*VarietyId} params 
+ * @returns 
+ */
+export const targetList = params => {
+  return http.get('/supply_analysis/variety/edb/list',params)
+}
+
+/**
+ * 分析品种
+ * @param {*VarietyId} params 
+ * @returns 
+ */
+export const analyseVariety = params => {
+  return http.post('/supply_analysis/variety/analysis',params)
+}
+
+/**
+ * 加入eta指标库
+ * @param {* VarietyEdbId Frequency EdbName Unit ClassifyId} params 
+ */
+export const addIntoEtaBase = params => {
+  return http.post('/supply_analysis/variety/edb/add',params)
+}
+
+/**
+ * 获取指标数据
+ * @param {* VarietyEdbId} params 
+ * @returns 
+ */
+export const getEdbData = params => {
+  return http.get('/supply_analysis/variety/edb/data/list',params)
+}
+
+
+/**
+ * 品种详情
+ * @param {*VarietyId} params 
+ * @returns 
+ */
+export const varietyDetail = params => {
+  return http.get('/supply_analysis/variety/detail',params)
+}
+
+/**一键成图
+ * 获取曲线数据
+ * @param {*} params VarietyEdbId
+ * @returns 
+ */
+export const getEdbDetailData = params => {
+  return http.get('/supply_analysis/variety/edb/data/list/v2',params)
+}
+
+/**
+ * 季节数据
+ * @param {*} params VarietyEdbId
+ * @returns 
+ */
+export const getEdbSeasonData = params => {
+  return http.get('/supply_analysis/variety/edb/data/seasonal',params)
+}
+
+/**
+ * 同比数据
+ * @param {*} params VarietyEdbId
+ * @returns 
+ */
+export const getEdbOnyearData = params => {
+  return http.get('/supply_analysis/variety/edb/data/tb',params)
+}
+
+/**
+ * 添加其他装置
+ * @param {*} params  VarietyId PrevVarietyPlantId VarietyPlantIdList
+ * @returns 
+ */
+export const copyOtherPlant = params => {
+  return http.post('/supply_analysis/variety/plant/copy',params)
+}
+
+/**
+ * 设置品种信息
+ * @param {*} params VarietyId Day
+ * @returns 
+ */
+export const setVareityInfo = params => {
+  return http.post('/supply_analysis/variety/production_day/modify',params)
+}

+ 58 - 0
src/api/modules/taglibApi.js

@@ -0,0 +1,58 @@
+import http from "@/api/http.js"
+/**
+ * 标签库-标签管理
+ */
+export default{
+  /**
+   * 标签分类列表
+   * PageSize
+   * CurrentIndex
+   */
+  getClassifyList:params=>{
+    return http.get('/taglib/variety_tag/classify_list',params)
+  },
+  /**
+   * 新增/编辑标签分类
+   * variety_classify_id:为0时是新增,>0为编辑
+   * classify_name
+   */
+  modifyClassify:params=>{
+    return http.post('/taglib/variety_tag/classify_save',params)
+  },
+  /**
+   * 设置标签分类状态
+   * variety_classify_id
+   * state:0-禁用,1-启用
+   */
+  setClassifyState:params=>{
+    return http.post('/taglib/variety_tag/classify_state',params)
+  },
+  /**
+   * 标签列表
+   * PageSize
+   * CurrentIndex
+   * Keywords
+   * ClassifyId
+   */
+  getTagList:params=>{
+    return http.get('/taglib/variety_tag/tag_list',params)
+  },
+  /**
+   * 新增/编辑标签
+   * variety_tag_id:为0时是新增,>0为编辑
+   * variety_classify_id
+   * tag_name
+   * chart_permission_id
+   */
+  modifyTag:params=>{
+    return http.post('/taglib/variety_tag/tag_save',params)
+  },
+  /**
+   * 设置标签状态
+   * variety_tag_id
+   * state:0-禁用,1-启用
+   */
+  setTagStatus:params=>{
+    return http.post('/taglib/variety_tag/tag_state',params)
+  }
+}

+ 691 - 0
src/api/modules/thirdBaseApi.js

@@ -0,0 +1,691 @@
+import http from "@/api/http.js"
+
+/* 隆众数据库 */
+const lzDataInterface = {
+	/**
+	 * 分类列表
+	 * @param {} params 
+	 * @returns 
+	 */
+	classifyList: params => {
+		return http.get('/datamanage/lz/classify',params);
+	},
+	/**
+	 * 数据列表
+	 * @param {BreedId} params 分类id
+	 * @param {Frequency } params
+	 * @returns 
+	 */
+	dataList: params => {
+		return http.get('/datamanage/lz/data',params);
+	},
+	/**
+	 * 频度列表
+	 * @param {BreedId} params 
+	 */
+	frequencyList: params => {
+		return http.get('/datamanage/lz/frequency',params);
+	},
+
+	// 隆重指标搜索接口
+	getTargetListByName:params=>{
+		return http.get('/datamanage/lz/search_list',params)
+	},
+
+}
+
+/* 钢联数据库 */
+const glDataInterface = {
+	/**
+	 * 分类列表
+	 * @param {} params 
+	 * @returns 
+	 */
+	classifyList: params => {
+		return http.get('/datamanage/gl/classify',params);
+	},
+	/**
+	 * 数据列表
+	 * @param {BreedShortName } params 分类id
+	 * @param {Frequency } params
+	 * @returns 
+	 */
+	dataList: params => {
+		return http.get('/datamanage/gl/data',params);
+	},
+	/**
+	 * 频度列表
+	 * @param {BreedShortName } params 
+	 */
+	frequencyList: params => {
+		return http.get('/datamanage/gl/frequency',params);
+	},
+
+	// 钢联指标搜索接口
+	getTargetListByName:params=>{
+		return http.get('/datamanage/gl/search_list',params)
+	},
+	// 钢联单个指标数据列表
+	getTargetDataList:params=>{
+		return http.get('/datamanage/gl/single_data',params)
+	},
+}
+
+/* 有色数据库 */
+const smmDataInterface = {
+	/**
+	 * 分类列表
+	 * @param {} params 
+	 * @returns 
+	 */
+	classifyList: params => {
+		return http.get('/datamanage/smm/classify',params);
+	},
+	/**
+	 * 获取指标目录详情
+	 * @param {ClassifyId}  分类id
+	 * @param {Frequency}  频度名称
+   * @param {CurrentIndex}
+   * @param {PageSize}
+	 * @returns 
+	 */
+	dataList: params => {
+		return http.get('/datamanage/smm/data',params);
+	},
+	/**
+	 * 频度列表
+	 * @param {TypeCode} params 
+	 */
+	frequencyList: params => {
+		return http.get('/datamanage/smm/frequency',params);
+	},
+
+	// smm指标搜索接口
+	getTargetListByName:params=>{
+		return http.get('/datamanage/smm/search_list',params)
+	},
+	/**
+	 * 获取单个指标详情
+	 * @param {IndexCode}  指标id
+	 * @returns 
+	 */
+	getTargetDataList:params=>{
+		return http.get('/datamanage/smm/single_data',params)
+	},
+  /**
+	 * 添加分类
+	 * @param {ParentId} 上级id 为0表示是一级分类
+   * @param {ClassifyName} 分类名称
+	 */
+  addClassifyItem:params=>{
+    return http.post('/datamanage/smm/classify/add',params)
+  },
+  /**
+	 * 编辑分类
+	 * @param {ClassifyId} 分类id
+   * @param {ClassifyName} 分类名称
+	 */
+   editClassifyItem:params=>{
+     return http.post('/datamanage/smm/classify/edit',params)
+   },
+   /**
+	 * 删除分类
+	 * @param {ClassifyId} 分类id
+	 */
+  deleteClassifyItem:params=>{
+    return http.post('/datamanage/smm/classify/del',params)
+  },
+  /**
+   * 分类名称列表
+   */
+  classifyNameList:params=>{
+    return http.get('/datamanage/smm/classify/name',params)
+  },
+  /**
+	 * 编辑指标分类(移动指标)
+	 * @param {ClassifyId} 分类id
+   * @param {BaseFromSmmIndexId} 指标id
+	 */
+  editSmmTarget:params=>{
+    return http.post('/datamanage/smm/edit',params)
+  },
+  /**
+	 * 移动目录
+	 * @param {ClassifyId} 分类id
+   * @param {ParentId} 上级id
+   * @param {PrevClassifyId} 上一个兄弟节点分类id 若移动到第一个 为0
+   * @param {NextClassifyId} 下一个兄弟节点分类id 若移动到最后一个 为0
+	 */
+  moveCatalog:params=>{
+    return http.post('/datamanage/smm/classify/move',params)
+  },
+  /**
+	 * 移动指标
+	 * @param {ClassifyId} 分类id
+   * @param {BaseFromSmmIndexId} 指标id
+   * @param {PrevBaseFromSmmIndexId} 上一个兄弟节点分类id 若移动到第一个 为0
+   * @param {NextBaseFromSmmIndexId} 下一个兄弟节点分类id 若移动到最后一个 为0
+	 */
+  moveSMMtarget:params=>{
+    return http.post('/datamanage/smm/move',params)
+  },
+  /**
+	 * 删除指标
+   * @param {BaseFromSmmIndexId} 指标id
+	 */
+  deleteSMMtarget:params=>{
+    return http.post('/datamanage/smm/del',params)
+  },
+  /**
+	 * 清除指标分类
+   * @param {BaseFromSmmIndexId} 指标id
+	 */
+  cleanClassify:params=>{
+    return http.post('/datamanage/smm/reset',params)
+  }
+}
+
+/* 中国煤炭网 */
+const coalDataInterface = {
+	/**
+	 * 分类列表
+	 * @param {} params 
+	 * @returns 
+	 */
+	 classifyList: params => {
+		return http.get('/entry/data/coalMineData/classify',params);
+	},
+	/**
+	 * 中国煤炭网数据列表
+	 * @param {ClassifyId } params 分类id
+	 * @param {Frequency } params
+	 * @param {GroupName } params
+	 * @returns 
+	 */
+	dataList: params => {
+		return http.get('/entry/data/coalMineData/data',params);
+	},
+	/**
+	 * 频度列表
+	 * @param {ClassifyId } params 
+	 */
+	frequencyList: params => {
+		return http.get('/entry/data/coalMineData/frequency',params);
+	},
+
+	// 中国煤炭网指标搜索接口
+	getTargetListByName:params=>{
+		return http.get('/entry/data/coalMineData/search',params)
+	},
+	// 中国煤炭网单个指标数据列表
+	getTargetDataList:params=>{
+		return http.get('/entry/data/coalMineData/single_data',params)
+	},
+
+}
+
+/* 钢联化工 */
+const steelInterface = {
+	/**
+	 * 分类列表
+	 * @param {*} params 
+	 * @returns 
+	 */
+	classifyList: params => {
+		return http.get('/datamanage/mysteel_chemical/classify')
+	},
+
+	/**
+	 * 编辑分类 ClassifyName BaseFromMysteelChemicalClassifyId ParentId  Level
+	 * @param {*} params 
+	 * @returns 
+	 */
+	classifyEdit: params => {
+		return http.post('/datamanage/mysteel_chemical/classify/edit',params)
+	},
+
+	/**
+	 * 新增分类
+	 * @param {*} params ClassifyName ParentId  Level
+	 * @returns 
+	 */
+	classifyAdd: params => {
+		return http.post('/datamanage/mysteel_chemical/classify/add',params)
+	},
+
+	/**
+	 * 删除分类
+	 * @param {*} params BaseFromMysteelChemicalClassifyId
+	 * @returns 
+	 */
+	classifyDel: params => {
+		return http.post('/datamanage/mysteel_chemical/classify/del',params)
+	},
+
+	/**
+	 * 移动分类
+	 * @param {*} params BaseFromMysteelChemicalClassifyId PrevBaseFromMysteelChemicalClassifyId NextBaseFromMysteelChemicalClassifyId
+	 ParentBaseFromMysteelChemicalClassifyId
+	 * @returns 
+	 */
+	classifyMove: params => {
+		return http.post('/datamanage/mysteel_chemical/classify/move',params)
+	},
+
+	/**
+	 * 获取频度
+	 * @param {*} params BaseFromMysteelChemicalClassifyId
+	 * @returns 
+	 */
+	frequencyList: params => {
+		return http.get('/datamanage/mysteel_chemical/frequency',params)
+	},
+
+	/**
+	 * 数据接口 
+	 * @param {*} params BaseFromMysteelChemicalClassifyId Frequency
+	 * @returns 
+	 */
+	dataList: params => {
+		return http.get('/datamanage/mysteel_chemical/data',params)
+	},
+
+	/**
+	 * 新增指标
+	 * @param {*} params BaseFromMysteelChemicalClassifyId IndexCode UpdateWeek
+	 * @returns 
+	 */
+	edbAdd: params => {
+		return http.post('/datamanage/mysteel_chemical/add',params)
+	},
+
+	/**
+	 * 编辑指标
+	 * @param {*} params 
+	 * BaseFromMysteelChemicalIndexId
+	 * BaseFromMysteelChemicalClassifyId
+	 * UpdateWeek
+	 * UpdateTime
+	 * @returns 
+	 */
+	edbEdit: params => {
+		return http.post('/datamanage/mysteel_chemical/edit',params)
+	},
+
+	/**
+	 * 指标详情
+	 * BaseFromMysteelChemicalIndexId
+	 * @param {*} params 
+	 * @returns 
+	 */
+	edbDetail: params => {
+		return http.get('/datamanage/mysteel_chemical/detail',params)
+	},
+
+	/**
+	 * 指标移动
+	 * BaseFromMysteelChemicalIndexId 
+	 * BaseFromMysteelChemicalClassifyId
+	 * NextBaseFromMysteelChemicalIndexId
+	 * PrevBaseFromMysteelChemicalIndexId
+	 * @param {*} params 
+	 * @returns 
+	 */
+	edbMove: params => {
+		return http.post('/datamanage/mysteel_chemical/move',params)
+	},
+
+	/**
+	 * 指标删除
+	 * @param {*} params BaseFromMysteelChemicalIndexId
+	 * @returns 
+	 */
+	edbDel: params => {
+		return http.post('/datamanage/mysteel_chemical/del',params)
+	},
+
+	/**
+	 * 搜索指标
+	 * @param {*} params Keyword
+	 * @returns 
+	 */
+	searchEdb: params => {
+		return http.get('/datamanage/mysteel_chemical/search',params)
+	},
+
+	/**
+	 * 指标刷新
+	 * @param {*} params BaseFromMysteelChemicalIndexId
+	 * @returns 
+	 */
+	edbRefresh: params => {
+		return http.get('/datamanage/mysteel_chemical/refresh',params)
+	}
+}
+
+/* ela steo */
+const steoInterface = {
+	/**
+	 * 分类列表
+	 * @param {} params 
+	 * @returns 
+	 */
+	 classifyList: params => {
+		return http.get('/datamanage/eia_steo/classify',params);
+	},
+	/**
+	 * 数据列表
+	 * @param {BaseFromEiaSteoClassifyId } params 分类id
+	 * @param {IndexCode } params
+	 * @param {PageSize } params
+	 * @param {CurrentIndex } params
+	 * @param {IsExport } params
+	 * @returns 
+	 */
+	dataList: params => {
+		return http.get('/datamanage/eia_steo/data',params);
+	},
+
+	/**
+	 * 指标搜索接口Keyword
+	 * 
+	 * */  
+	targetSearch: params=>{
+		return http.get('/datamanage/eia_steo/search_list',params)
+	},
+}
+
+/* 卓创数据库 */
+const sciDataInterface = {
+  /**
+	 * 分类列表
+	 * @param {} params 
+	 * @returns 
+	 */
+
+  classifyList:params=>{
+    return http.get('/datamanage/sci/classify',params)
+  },
+
+  /**
+	 * 频度列表
+	 * @param {ClassifyId} 分类id
+	 * @returns 
+	 */
+
+  frequencyList:params=>{
+    return http.get('/datamanage/sci/frequency',params)
+  },
+
+  /**
+	 * 获取目录详情
+	 * @param {ClassifyId}  分类id
+	 * @param {Frequency}  频度名称
+   * @param {CurrentIndex}
+   * @param {PageSize}
+	 * @returns 
+	 */
+  dataList:params=>{
+    return http.get('/datamanage/sci/data',params);
+  },
+
+  /**
+	 * 获取单个指标详情
+	 * @param {IndexCode}  指标id
+	 * @returns 
+	 */
+
+  getTargetDataList:params=>{
+    return http.get('/datamanage/sci/single_data',params)
+  },
+
+  /**
+	 * 搜索指标
+	 * @param {Keyword}  搜索关键词
+	 * @returns 
+	 */
+  getTargetListByName:params=>{
+    return http.get('/datamanage/sci/search_list',params)
+  },
+
+  /**
+	 * 添加分类
+	 * @param {ParentId} 上级id 为0表示是一级分类
+   * @param {ClassifyName} 分类名称
+	 */
+  addClassifyItem:params=>{
+    return http.post('/datamanage/sci/classify/add',params)
+  },
+  /**
+   * 编辑分类
+   * @param {ClassifyId} 分类id
+   * @param {ClassifyName} 分类名称
+   */
+  editClassifyItem:params=>{
+    return http.post('/datamanage/sci/classify/edit',params)
+  },
+  /**
+   * 删除分类
+   * @param {ClassifyId} 分类id
+   */
+  deleteClassifyItem:params=>{
+    return http.post('/datamanage/sci/classify/del',params)
+  },
+  /**
+	 * 移动目录
+	 * @param {ClassifyId} 分类id
+   * @param {ParentId} 上级id
+   * @param {PrevClassifyId} 上一个兄弟节点分类id 若移动到第一个 为0
+   * @param {NextClassifyId} 下一个兄弟节点分类id 若移动到最后一个 为0
+	 */
+  moveCatalog:params=>{
+    return http.post('/datamanage/sci/classify/move',params)
+  },
+
+  /**
+   * 分类名称列表
+   */
+  classifyNameList:params=>{
+    return http.get('/datamanage/sci/classify/name',params)
+  },
+  /**
+	 * 编辑指标分类(移动指标)
+	 * @param {ClassifyId} 分类id
+   * @param {BaseFromSciIndexId} 指标id
+	 */
+  editSciTarget:params=>{
+    return http.post('/datamanage/sci/edit',params)
+  },
+  /**
+	 * 删除指标
+   * @param {BaseFromSciIndexId} 指标id
+	 */
+  deleteSCItarget:params=>{
+    return http.post('/datamanage/sci/del',params)
+  },
+  /**
+	 * 清除指标分类
+   * @param {BaseFromSciIndexId} 指标id
+	 */
+  cleanClassify:params=>{
+    return http.post('/datamanage/sci/reset',params)
+  },
+  /**
+	 * 移动指标
+	 * @param {ClassifyId} 分类id
+   * @param {BaseFromSciIndexId} 指标id
+   * @param {PrevBaseFromSciIndexId} 上一个兄弟节点分类id 若移动到第一个 为0
+   * @param {NextBaseFromSciIndexId} 下一个兄弟节点分类id 若移动到最后一个 为0
+	 */
+  moveSCItarget:params=>{
+    return http.post('/datamanage/sci/move',params)
+  },
+  
+}
+
+/* 百川盈孚数据库 */
+const baiinfoInterface = {
+	/**
+	 * 分类列表
+	 * @param {} params 
+	 * @returns 
+	 */
+	classifyList: params => {
+		return http.get('/datamanage/baiinfo/classify',params);
+	},
+	/**
+	 * 获取指标列表详情
+	 * @param {ClassifyId}  分类id
+	 * @param {Frequency}  频度名称
+   * @param {CurrentIndex}
+   * @param {PageSize}
+	 * @returns 
+	 */
+	dataList: params => {
+		return http.get('/datamanage/baiinfo/data',params);
+	},
+	/**
+	 * 频度列表
+	 * @param {ClassifyId} params 
+	 */
+	frequencyList: params => {
+		return http.get('/datamanage/baiinfo/frequency',params);
+	},
+
+	// smm指标搜索接口
+	getTargetListByName:params=>{
+		return http.get('/datamanage/baiinfo/search_list',params)
+	},
+	/**
+	 * 获取单个指标详情
+	 * @param {IndexCode}  指标id
+	 * @returns 
+	 */
+	getTargetDataList:params=>{
+		return http.get('/datamanage/baiinfo/single_data',params)
+	},
+  /**
+	 * 添加分类
+	 * @param {ParentId} 上级id 为0表示是一级分类
+   * @param {ClassifyName} 分类名称
+	 */
+  addClassifyItem:params=>{
+    return http.post('/datamanage/baiinfo/classify/add',params)
+  },
+  /**
+	 * 编辑分类
+	 * @param {ClassifyId} 分类id
+   * @param {ClassifyName} 分类名称
+	 */
+   editClassifyItem:params=>{
+     return http.post('/datamanage/baiinfo/classify/edit',params)
+   },
+   /**
+	 * 删除分类
+	 * @param {ClassifyId} 分类id
+	 */
+  deleteClassifyItem:params=>{
+    return http.post('/datamanage/baiinfo/classify/del',params)
+  },
+  /**
+   * 分类名称列表
+   */
+  classifyNameList:params=>{
+    return http.get('/datamanage/baiinfo/classify/name',params)
+  },
+  /**
+	 * 编辑指标
+	 * @param {ClassifyId} 分类id
+   * @param {BaseFromSmmIndexId} 指标id
+	 */
+  editSmmTarget:params=>{
+    return http.post('/datamanage/baiinfo/edit',params)
+  },
+  /**
+	 * 移动目录
+	 * @param {ClassifyId} 分类id
+   * @param {ParentId} 上级id
+   * @param {PrevClassifyId} 上一个兄弟节点分类id 若移动到第一个 为0
+   * @param {NextClassifyId} 下一个兄弟节点分类id 若移动到最后一个 为0
+	 */
+  moveCatalog:params=>{
+    return http.post('/datamanage/baiinfo/classify/move',params)
+  },
+  /**
+	 * 移动指标
+	 * @param {ClassifyId} 分类id
+   * @param {BaseFromSmmIndexId} 指标id
+   * @param {PrevBaseFromSmmIndexId} 上一个兄弟节点分类id 若移动到第一个 为0
+   * @param {NextBaseFromSmmIndexId} 下一个兄弟节点分类id 若移动到最后一个 为0
+	 */
+  moveSMMtarget:params=>{
+    return http.post('/datamanage/baiinfo/move',params)
+  },
+  /**
+	 * 删除指标
+   * @param {BaseFromSmmIndexId} 指标id
+	 */
+  deleteSMMtarget:params=>{
+    return http.post('/datamanage/baiinfo/del',params)
+  },
+  /**
+	 * 清除指标分类
+   * @param {BaseFromSmmIndexId} 指标id
+	 */
+  cleanClassify:params=>{
+    return http.post('/datamanage/baiinfo/reset',params)
+  }
+}
+
+/* 国家统计局数据库 */
+
+const nationalInterface = {
+    /**
+     * 获取菜单列表
+     * @param {*} params 
+     */
+    getMenuList:params=>{
+        return http.get('/datamanage/base_from_national_statistics/db_list',params)
+    },
+    /**
+     * 获取对应菜单下,指标分类列表
+     * @param {Object} params 
+     * @param {String} params.Dbcode
+     */
+    getClassifyList:params=>{
+        return http.get('/datamanage/base_from_national_statistics/classify_list',params)
+    },
+    /**
+     * 获取对应指标分类/关键词下,指标列表
+     * @param {Object} params 
+     * @param {String} params.Dbcode
+     * @param {Number} params.ClassifyId 选填
+     * @param {String} params.Keywords 选填
+     */
+    getIndexList:params=>{
+        return http.get('/datamanage/base_from_national_statistics/index_list',params)
+    },
+    /**
+     * 获取指标详情
+     * @param {Object} params 
+     * @param {Number} params.IndexId
+     * @param {Number} params.ClassifyId 
+     * @param {String} params.Reg 地区
+     * @param {Boolean} params.IsExport 是否导出 选填
+     */
+    getIndexDetail:params=>{
+        return http.get('/datamanage/base_from_national_statistics/index_detail',params)
+    }
+}
+
+export { 
+	lzDataInterface,
+	glDataInterface,
+	smmDataInterface,
+	coalDataInterface,
+	steelInterface,
+	steoInterface,
+  sciDataInterface,
+  baiinfoInterface,
+  nationalInterface
+}

+ 162 - 0
src/api/modules/videoApi.js

@@ -0,0 +1,162 @@
+import http from "@/api/http.js"
+
+/* 视频管理模块 */
+
+export default{
+    /**
+     * 新增/编辑视频
+     */
+    saveVideo:params=>{
+        return http.post('/yb/community/video/save',params)
+    },
+
+    /**
+     * 视频列表
+     */
+    videoList:params=>{
+        return http.get('/yb/community/video/list',params)
+    },
+
+    /**
+     * 发布\取消发布视频
+     */
+    published:params=>{
+        return http.post('/yb/community/video/publish',params)
+    },
+
+    /**
+     * 删除视频
+     */
+    delVideo:params=>{
+        return http.post('/yb/community/video/delete',params)
+    },
+
+    /**
+     * 推送客群
+     */
+    sendMsg:params=>{
+        return http.post('/yb/community/video/send_ths',params)
+    },
+
+    //推送模版消息
+    sendTempMsg:params=>{
+        return http.post('/yb/community/video/send_template_msg',params)
+    },
+
+    /**
+     * 点击量详情
+     */
+    videoLogList:params=>{
+        return http.get('/yb/community/video/click/logs',params)
+    },
+
+    /**
+     * 视频封面图片列表
+     */
+    videoCoverImgList:params=>{
+        return http.get('/yb/community/video/cover_list',params)
+    },
+
+    /**
+     * 编辑/保存视频封面
+     * CoverId
+     * CoverName
+     * CoverUrl
+     */
+    videoCoverImgSave:params=>{
+        return http.post('/yb/community/video/cover_save',params)
+    },
+
+    //删除封面图
+    videoCoverImgDel:params=>{
+        return http.post('/yb/community/video/cover_delete',params)
+    },
+
+    //路演视频列表
+    roadVideoList:params=>{
+        return http.get('/yb/road/video/list',params)
+    },
+
+    /**
+     * 路演视频 新增/编辑视频
+     */
+    roadSaveVideo:params=>{
+        return http.post('/yb/road/video/save',params)
+    },
+
+    /**
+     * 发布\取消发布视频
+     */
+    roadPublished:params=>{
+        return http.post('/yb/road/video/publish',params)
+    },
+
+    /**
+     * 删除视频
+     */
+    roadDelVideo:params=>{
+        return http.post('/yb/road/video/delete',params)
+    },
+
+    /**
+     * 推送客群
+     */
+    roadSendMsg:params=>{
+        return http.post('/yb/road/video/send_ths',params)
+    },
+
+    //推送模版消息
+    roadSendTempMsg:params=>{
+        return http.post('/yb/road/video/send_template_msg',params)
+    },
+
+    //获取品种
+    getPermissionList:()=>{
+        return http.get('/yb/road/permission',{})
+    },
+    
+    /**
+     * 点击量详情
+     */
+    roadVideoLogList:params=>{
+        return http.get('/yb/road/video/click/logs',params)
+    },
+
+    /**
+     * 弹幕列表
+     */
+    bulletChatList:params=>{
+        return http.get('/yb/bullet_chat/list',params)
+    },
+
+    /**
+     * 删除弹幕
+     */
+    bulletChatDel:params=>{
+        return http.post('/yb/bullet_chat/delete',params)
+    },
+
+    //关联报告类型
+    getReportType:params=>{
+      return http.get('/yb/road/video/two_week_classify_list',params)
+    },
+    //关联报告列表 ClassifyIdSecond 报告类型id
+    getReportList:params=>{
+      return http.get('/yb/road/video/simple_report_list',params)
+    },
+
+    //路演视频推送消息(客群和模板消息)
+    roadMsgPush:params=>{
+        return http.post('/yb/road/video/send_msg',params)
+    },
+
+    //5分钟视频推送消息(客群和模板消息)
+    msgPush:params=>{
+        return http.post('/yb/community/video/send_msg',params)
+    },
+
+}
+
+
+
+

BIN
src/assets/css/fonts/element-icons.woff


+ 1 - 0
src/assets/icons/arrow.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1641545545200" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13104" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M692.4 559.5V432c0-8.8-7.2-16-16-16H48c-26.5 0-48-21.5-48-48s21.5-48 48-48h628.4c8.8 0 16-7.2 16-16V176.5L1024 368 692.4 559.5z" p-id="13105"></path><path d="M1024 656c0 26.5-21.5 48-48 48H347.6c-8.8 0-16 7.2-16 16v127.5L0 656l331.6-191.5V592c0 8.8 7.2 16 16 16H976c26.5 0 48 21.5 48 48z" p-id="13106"></path></svg>

+ 3 - 0
src/assets/icons/broom.svg

@@ -0,0 +1,3 @@
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M22.1991 2.59373L21.2645 2.1411C20.5615 1.80162 19.7158 2.0953 19.3764 2.80119L16.2602 9.25125L16.0744 9.15964C14.3479 8.32712 12.274 9.04918 11.4418 10.7762L11.1724 11.3339L21.2779 16.2159L21.5473 15.6582C22.3795 13.9312 21.6577 11.8566 19.9313 11.0241L19.7454 10.9352L22.8589 4.4851C23.1983 3.77921 22.9047 2.93321 22.1991 2.59373V2.59373ZM20.8443 17.1077L10.7253 12.2203C10.1086 13.0286 9.31132 13.9393 8.29861 14.8445C6.74993 16.2294 5.21471 17.1427 4 17.7382C4.35283 18.8536 5.09889 19.3897 5.6241 19.9555C5.81802 20.1657 8.81035 16.9299 9.02582 17.1373C9.24129 17.3448 6.68259 20.9928 6.91692 21.1949C7.6145 21.793 8.39827 22.3642 9.25206 22.9004C9.42713 23.0108 13.1601 17.916 13.3271 18.0076C13.6611 18.1908 10.9597 23.8649 11.3125 24.0346C11.6626 24.2044 12.0155 24.3633 12.3656 24.5115C13.5803 25.0234 14.7869 25.4006 15.9424 25.6485C16.2952 25.7239 18.1509 19.3332 18.4903 19.3843C18.8324 19.4355 17.6608 25.9287 17.9867 25.9556C18.9697 26.0365 19.8882 26.0068 20.7043 25.8667C20.4215 24.4011 20.2141 22.5097 20.3676 20.322C20.4538 19.123 20.6342 18.0453 20.8443 17.1077Z" fill="#333333"/>
+</svg>

+ 3 - 0
src/assets/icons/brush.svg

@@ -0,0 +1,3 @@
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9.1952 16.3651C9.1952 16.3651 6.34439 17.9358 6.23408 20.3975C6.1238 22.8594 3.80763 24.6498 3.03558 24.8736C2.26352 25.0973 14.3224 25.6039 13.44 20.3446L9.19523 16.3651L9.1952 16.3651ZM14.4945 18.0362C14.9338 18.4687 15.045 19.0751 14.743 19.3909C14.441 19.7066 13.8401 19.612 13.401 19.1795L10.4938 16.3651C10.0546 15.9327 9.94334 15.3262 10.2453 15.0105C10.5473 14.6948 11.1482 14.7894 11.5874 15.2218L14.4945 18.0362V18.0362ZM24.5772 3.24902C23.7892 2.70676 23.0811 3.19296 22.7759 3.36999C21.8641 3.98952 15.3411 10.4211 12.5066 13.3915C12.1586 13.8621 11.924 14.2275 13.5929 15.9207C15.0016 17.3499 15.658 17.2564 16.3714 16.6393C17.5593 15.4341 22.6171 8.27965 24.4856 5.55207C24.7924 5.10402 25.421 3.82975 24.5772 3.24902V3.24902Z" fill="#333333"/>
+</svg>

+ 3 - 0
src/assets/icons/eraser.svg

@@ -0,0 +1,3 @@
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M24.7799 11.786C25.0734 11.5107 25.0734 11.0635 24.7799 10.7882L16.7008 3.2065C16.4074 2.93117 15.9309 2.93117 15.6375 3.2065L3.88021 14.2398C2.7066 15.3412 2.7066 17.1254 3.88021 18.2267L10.2647 24.1806C10.828 24.7048 11.5885 25 12.3819 25H22.036C22.4515 25 22.7871 24.685 22.7871 24.2951C22.7871 24.1013 22.7026 23.9251 22.5665 23.7973C22.4304 23.6696 22.2426 23.5903 22.036 23.5903H15.8276C14.4897 23.5903 13.8184 22.0726 14.7643 21.1827L24.7799 11.786V11.786ZM11.9617 21.8215C11.3749 22.3722 10.4243 22.3722 9.83748 21.8215L4.94351 17.2311C4.3567 16.6804 4.3567 15.7883 4.94351 15.2376L7.94561 12.4204L14.9638 19.0065L11.9617 21.8215V21.8215Z" fill="#333333"/>
+</svg>

+ 10 - 0
src/assets/icons/folder.svg

@@ -0,0 +1,10 @@
+<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M32 8.64865H0V3.74775C0 3.09785 0.240816 2.47457 0.66947 2.01502C1.09812 1.55547 1.67951 1.2973 2.28571 1.2973H10.2857L14.8571 6.1982H29.7143C30.3205 6.1982 30.9019 6.45638 31.3305 6.91592C31.7592 7.37547 32 7.99875 32 8.64865Z" fill="#409EFF"/>
+<path d="M2.28571 11.2432H29.7143C31.2381 11.2432 32 12.036 32 13.6216V27.8919C32 29.4775 31.2381 30.2703 29.7143 30.2703H2.28571C0.761905 30.2703 0 29.4775 0 27.8919V13.6216C0 12.036 0.761905 11.2432 2.28571 11.2432Z" fill="url(#paint0_linear_467_11351)"/>
+<defs>
+<linearGradient id="paint0_linear_467_11351" x1="16" y1="11.2432" x2="16" y2="30.2703" gradientUnits="userSpaceOnUse">
+<stop stop-color="#409EFF"/>
+<stop offset="1" stop-color="#2B8BED"/>
+</linearGradient>
+</defs>
+</svg>

+ 53 - 0
src/assets/icons/iconfont.css

@@ -0,0 +1,53 @@
+@font-face {
+  font-family: "iconfont"; /* Project id  */
+  src: url('iconfont.ttf?t=1641538732111') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-bordercolor:before {
+  content: "\ea99";
+}
+
+.icon--shixian:before {
+  content: "\e63f";
+}
+
+.icon--xuxian:before {
+  content: "\e641";
+}
+
+.icon-bold:before {
+  content: "\e7f7";
+}
+
+.icon-font-colors:before {
+  content: "\e7f8";
+}
+
+.icon-bg-colors:before {
+  content: "\e800";
+}
+
+.icon-biaodanbiankuangxuxian:before {
+  content: "\e61e";
+}
+
+.icon-arrow-right:before {
+  content: "\e6c9";
+}
+
+.icon-arrow-left:before {
+  content: "\e6ca";
+}
+
+.icon-arrow-both:before {
+  content: "\e609";
+}
+

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
src/assets/icons/iconfont.js


+ 79 - 0
src/assets/icons/iconfont.json

@@ -0,0 +1,79 @@
+{
+  "id": "",
+  "name": "",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "489911",
+      "name": "border_color",
+      "font_class": "bordercolor",
+      "unicode": "ea99",
+      "unicode_decimal": 60057
+    },
+    {
+      "icon_id": "1726184",
+      "name": "82-实线",
+      "font_class": "-shixian",
+      "unicode": "e63f",
+      "unicode_decimal": 58943
+    },
+    {
+      "icon_id": "1726186",
+      "name": "84-虚线",
+      "font_class": "-xuxian",
+      "unicode": "e641",
+      "unicode_decimal": 58945
+    },
+    {
+      "icon_id": "4767078",
+      "name": "bold",
+      "font_class": "bold",
+      "unicode": "e7f7",
+      "unicode_decimal": 59383
+    },
+    {
+      "icon_id": "4767079",
+      "name": "font-colors",
+      "font_class": "font-colors",
+      "unicode": "e7f8",
+      "unicode_decimal": 59384
+    },
+    {
+      "icon_id": "4767106",
+      "name": "bg-colors",
+      "font_class": "bg-colors",
+      "unicode": "e800",
+      "unicode_decimal": 59392
+    },
+    {
+      "icon_id": "11328312",
+      "name": "表单边框虚线",
+      "font_class": "biaodanbiankuangxuxian",
+      "unicode": "e61e",
+      "unicode_decimal": 58910
+    },
+    {
+      "icon_id": "15188201",
+      "name": "arrow-right",
+      "font_class": "arrow-right",
+      "unicode": "e6c9",
+      "unicode_decimal": 59081
+    },
+    {
+      "icon_id": "15188209",
+      "name": "arrow-left",
+      "font_class": "arrow-left",
+      "unicode": "e6ca",
+      "unicode_decimal": 59082
+    },
+    {
+      "icon_id": "17575441",
+      "name": "arrow-both",
+      "font_class": "arrow-both",
+      "unicode": "e609",
+      "unicode_decimal": 58889
+    }
+  ]
+}

BIN
src/assets/icons/iconfont.ttf


BIN
src/assets/icons/iconfont.woff


BIN
src/assets/icons/iconfont.woff2


+ 1 - 0
src/assets/icons/line.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1641545789918" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1104" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M153.6 153.6h716.8a51.2 51.2 0 0 1 0 102.4H153.6a51.2 51.2 0 1 1 0-102.4z m0 614.4h716.8a51.2 51.2 0 0 1 0 102.4H153.6a51.2 51.2 0 0 1 0-102.4z m0-307.2h131.6352a51.2 51.2 0 1 1 0 102.4H153.6a51.2 51.2 0 0 1 0-102.4z m292.5568 0h131.6864a51.2 51.2 0 0 1 0 102.4H446.1568a51.2 51.2 0 0 1 0-102.4z m292.608 0H870.4a51.2 51.2 0 0 1 0 102.4h-131.6352a51.2 51.2 0 0 1 0-102.4z" fill="#000000" p-id="1105"></path></svg>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 1 - 0
src/assets/icons/palette.svg


+ 6 - 0
src/assets/icons/uploadImg-blue.svg

@@ -0,0 +1,6 @@
+<svg width="51" height="50" viewBox="0 0 51 50" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M50.5 0H0.5V50H50.5V0Z" fill="white"/>
+<path d="M48.9375 1.5625H2.0625V48.4375H48.9375V1.5625Z" stroke="#409EFF" stroke-width="2"/>
+<path d="M25.5 9.99988L25.5 39.9999" stroke="#409EFF" stroke-width="2"/>
+<path d="M10.5001 25H40.5001" stroke="#409EFF" stroke-width="2"/>
+</svg>

BIN
src/assets/img/404.gif


BIN
src/assets/img/ai_m/delete.png


BIN
src/assets/img/ai_m/edit.png


BIN
src/assets/img/ai_m/empty_list.png


BIN
src/assets/img/ai_m/save.png


BIN
src/assets/img/ai_m/send.png


BIN
src/assets/img/approval_ notice.png


BIN
src/assets/img/approve_wait.png


BIN
src/assets/img/attention.png


BIN
src/assets/img/avart.png


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor