浏览代码

导出报告,查看导出记录,下载导出的报告,删除导出记录

zhuliu 3 年之前
父节点
当前提交
efefff699c

+ 181 - 23
RMS-FrontEnd/package-lock.json

@@ -2199,7 +2199,6 @@
       "version": "1.0.10",
       "resolved": "https://registry.nlark.com/argparse/download/argparse-1.0.10.tgz",
       "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
-      "dev": true,
       "requires": {
         "sprintf-js": "~1.0.2"
       }
@@ -3885,8 +3884,7 @@
     "core-util-is": {
       "version": "1.0.2",
       "resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.2.tgz",
-      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
-      "dev": true
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
     },
     "cosmiconfig": {
       "version": "5.2.1",
@@ -4506,6 +4504,11 @@
         }
       }
     },
+    "dingbat-to-unicode": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/dingbat-to-unicode/-/dingbat-to-unicode-1.0.1.tgz",
+      "integrity": "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w=="
+    },
     "dir-glob": {
       "version": "2.2.2",
       "resolved": "https://registry.nlark.com/dir-glob/download/dir-glob-2.2.2.tgz",
@@ -4628,6 +4631,14 @@
       "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=",
       "dev": true
     },
+    "duck": {
+      "version": "0.1.12",
+      "resolved": "https://registry.npmmirror.com/duck/-/duck-0.1.12.tgz",
+      "integrity": "sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==",
+      "requires": {
+        "underscore": "^1.13.1"
+      }
+    },
     "duplexer": {
       "version": "0.1.2",
       "resolved": "https://registry.nlark.com/duplexer/download/duplexer-0.1.2.tgz",
@@ -6384,6 +6395,11 @@
       "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz",
       "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ=="
     },
+    "immediate": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz",
+      "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
+    },
     "immutable": {
       "version": "4.0.0",
       "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.0.0.tgz",
@@ -6509,8 +6525,7 @@
     "inherits": {
       "version": "2.0.4",
       "resolved": "https://registry.nlark.com/inherits/download/inherits-2.0.4.tgz",
-      "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=",
-      "dev": true
+      "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w="
     },
     "inquirer": {
       "version": "7.3.3",
@@ -7013,8 +7028,7 @@
     "isarray": {
       "version": "1.0.0",
       "resolved": "https://registry.nlark.com/isarray/download/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-      "dev": true
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
     },
     "isexe": {
       "version": "2.0.0",
@@ -7164,6 +7178,17 @@
         "verror": "1.10.0"
       }
     },
+    "jszip": {
+      "version": "3.10.1",
+      "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz",
+      "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+      "requires": {
+        "lie": "~3.3.0",
+        "pako": "~1.0.2",
+        "readable-stream": "~2.3.6",
+        "setimmediate": "^1.0.5"
+      }
+    },
     "killable": {
       "version": "1.0.1",
       "resolved": "https://registry.nlark.com/killable/download/killable-1.0.1.tgz",
@@ -7261,6 +7286,14 @@
         "type-check": "~0.3.2"
       }
     },
+    "lie": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz",
+      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+      "requires": {
+        "immediate": "~3.0.5"
+      }
+    },
     "lines-and-columns": {
       "version": "1.1.6",
       "resolved": "https://registry.nlark.com/lines-and-columns/download/lines-and-columns-1.1.6.tgz",
@@ -7415,6 +7448,16 @@
       "integrity": "sha1-AF/eL15uRwaPk1/yhXPhJe9y8Zc=",
       "dev": true
     },
+    "lop": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmmirror.com/lop/-/lop-0.4.1.tgz",
+      "integrity": "sha512-9xyho9why2A2tzm5aIcMWKvzqKsnxrf9B5I+8O30olh6lQU8PH978LqZoI4++37RBgS1Em5i54v1TFs/3wnmXQ==",
+      "requires": {
+        "duck": "^0.1.12",
+        "option": "~0.2.1",
+        "underscore": "^1.13.1"
+      }
+    },
     "lower-case": {
       "version": "1.1.4",
       "resolved": "https://registry.nlark.com/lower-case/download/lower-case-1.1.4.tgz",
@@ -7439,6 +7482,34 @@
         "semver": "^6.0.0"
       }
     },
+    "mammoth": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmmirror.com/mammoth/-/mammoth-1.5.1.tgz",
+      "integrity": "sha512-7ZioZBf/1HjYrm1qZJOO+DD+rYxLvwrHS+HVOwW89hwIp+r6ZqJ/Eq2rXSS+8ezZ3/DuW6FUUp2Dfz6e7B2pBQ==",
+      "requires": {
+        "argparse": "~1.0.3",
+        "bluebird": "~3.4.0",
+        "dingbat-to-unicode": "^1.0.1",
+        "jszip": "^3.7.1",
+        "lop": "^0.4.1",
+        "path-is-absolute": "^1.0.0",
+        "sax": "~1.1.1",
+        "underscore": "^1.13.1",
+        "xmlbuilder": "^10.0.0"
+      },
+      "dependencies": {
+        "bluebird": {
+          "version": "3.4.7",
+          "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz",
+          "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA=="
+        },
+        "sax": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmmirror.com/sax/-/sax-1.1.6.tgz",
+          "integrity": "sha512-8zci48uUQyfqynGDSkUMD7FCJB96hwLnlZOXlgs1l3TX+LW27t3psSWKUxC0fxVgA86i8tL4NwGcY1h/6t3ESg=="
+        }
+      }
+    },
     "map-cache": {
       "version": "0.2.2",
       "resolved": "https://registry.nlark.com/map-cache/download/map-cache-0.2.2.tgz",
@@ -8306,6 +8377,11 @@
         }
       }
     },
+    "option": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmmirror.com/option/-/option-0.2.4.tgz",
+      "integrity": "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A=="
+    },
     "optionator": {
       "version": "0.8.3",
       "resolved": "https://registry.nlark.com/optionator/download/optionator-0.8.3.tgz",
@@ -8442,8 +8518,7 @@
     "pako": {
       "version": "1.0.11",
       "resolved": "https://registry.nlark.com/pako/download/pako-1.0.11.tgz?cache=0&sync_timestamp=1627560125189&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpako%2Fdownload%2Fpako-1.0.11.tgz",
-      "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=",
-      "dev": true
+      "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8="
     },
     "parallel-transform": {
       "version": "1.2.0",
@@ -8572,8 +8647,7 @@
     "path-is-absolute": {
       "version": "1.0.1",
       "resolved": "https://registry.nlark.com/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
-      "dev": true
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
     },
     "path-is-inside": {
       "version": "1.0.2",
@@ -9481,8 +9555,7 @@
     "process-nextick-args": {
       "version": "2.0.1",
       "resolved": "https://registry.nlark.com/process-nextick-args/download/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=",
-      "dev": true
+      "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I="
     },
     "progress": {
       "version": "2.0.3",
@@ -9730,7 +9803,6 @@
       "version": "2.3.7",
       "resolved": "https://registry.npmmirror.com/readable-stream/download/readable-stream-2.3.7.tgz",
       "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
-      "dev": true,
       "requires": {
         "core-util-is": "~1.0.0",
         "inherits": "~2.0.3",
@@ -9745,7 +9817,6 @@
           "version": "1.1.1",
           "resolved": "https://registry.nlark.com/string_decoder/download/string_decoder-1.1.1.tgz",
           "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
-          "dev": true,
           "requires": {
             "safe-buffer": "~5.1.0"
           }
@@ -10076,8 +10147,7 @@
     "safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.nlark.com/safe-buffer/download/safe-buffer-5.1.2.tgz",
-      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=",
-      "dev": true
+      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
     },
     "safe-regex": {
       "version": "1.1.0",
@@ -10354,8 +10424,7 @@
     "setimmediate": {
       "version": "1.0.5",
       "resolved": "https://registry.nlark.com/setimmediate/download/setimmediate-1.0.5.tgz",
-      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
-      "dev": true
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
     },
     "setprototypeof": {
       "version": "1.1.1",
@@ -10815,8 +10884,7 @@
     "sprintf-js": {
       "version": "1.0.3",
       "resolved": "https://registry.nlark.com/sprintf-js/download/sprintf-js-1.0.3.tgz",
-      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
-      "dev": true
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
     },
     "sshpk": {
       "version": "1.16.1",
@@ -11933,6 +12001,11 @@
         "which-boxed-primitive": "^1.0.2"
       }
     },
+    "underscore": {
+      "version": "1.13.6",
+      "resolved": "https://registry.npmmirror.com/underscore/-/underscore-1.13.6.tgz",
+      "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
+    },
     "unicode-canonical-property-names-ecmascript": {
       "version": "2.0.0",
       "resolved": "https://registry.nlark.com/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-2.0.0.tgz?cache=0&sync_timestamp=1631615461691&other_urls=https%3A%2F%2Fregistry.nlark.com%2Funicode-canonical-property-names-ecmascript%2Fdownload%2Funicode-canonical-property-names-ecmascript-2.0.0.tgz",
@@ -12183,8 +12256,7 @@
     "util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.nlark.com/util-deprecate/download/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-      "dev": true
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
     },
     "util.promisify": {
       "version": "1.0.0",
@@ -12333,6 +12405,87 @@
         }
       }
     },
+    "vue-loader-v16": {
+      "version": "npm:vue-loader@16.8.3",
+      "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
+      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chalk": "^4.1.0",
+        "hash-sum": "^2.0.0",
+        "loader-utils": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true,
+          "optional": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true,
+          "optional": true
+        },
+        "loader-utils": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
     "vue-particles": {
       "version": "1.0.9",
       "resolved": "https://registry.npmmirror.com/vue-particles/-/vue-particles-1.0.9.tgz",
@@ -13222,6 +13375,11 @@
         "async-limiter": "~1.0.0"
       }
     },
+    "xmlbuilder": {
+      "version": "10.1.1",
+      "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-10.1.1.tgz",
+      "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg=="
+    },
     "xtend": {
       "version": "4.0.2",
       "resolved": "https://registry.nlark.com/xtend/download/xtend-4.0.2.tgz",

+ 1 - 0
RMS-FrontEnd/package.json

@@ -16,6 +16,7 @@
     "js-cookie": "^3.0.1",
     "less": "^4.1.2",
     "less-loader": "^5.0.0",
+    "mammoth": "^1.5.1",
     "mockjs": "^1.1.0",
     "moment": "^2.29.1",
     "sass": "^1.43.4",

+ 21 - 1
RMS-FrontEnd/src/api/report.js

@@ -301,5 +301,25 @@ export default {
   //文件上传
   upload(params){
     return axios.post('/report/api/reportFile/add',params)
-  }
+  },
+
+  //查询报告模板
+  getTemplateByType(params){
+    return axios.post('/report/api/template/getTemplateByType',params)
+  },
+
+  //导出报告
+  exportReport(params){
+    return axios.get('/report/api/reportDocument/exportReport',{params})
+  },
+
+  //获得导出记录
+  getExportList(params){
+    return axios.post('/report/api/reportDocument/getExportList',params)
+  },
+
+  //删除导出记录
+  deleteExport(params){
+    return axios.get('/report/api/reportDocument/deleteExport',{params})
+  },
 }

+ 5 - 5
RMS-FrontEnd/src/router/index.js

@@ -109,11 +109,11 @@ const routes = [
       }
     ]
   },
-  // {
-  //   path: '/AnalysisIndex',
-  //   name:"AnalysisIndex",
-  //   component:() => import('@/views/report/components/analysis/index'),
-  // },
+  {
+    path: '/showFile',
+    name:"showFile",
+    component:() => import('@/views/components/common/showFile.vue'),
+  },
   
  
 ]

+ 1 - 1
RMS-FrontEnd/src/utils/index.js

@@ -52,7 +52,7 @@ export const downLoadBase64 = (content, fileName) => {
 }
 
 export const downLoad2 = (url) => {
-  const href = `/api/v2/common/download?url=${encodeURIComponent(url)}`
+  const href = `/api/report/api/download/downloadFile?url=${encodeURIComponent(url)}`
   const anchor = document.createElement('a');
   const fileName = 'download';
   if ('download' in anchor) {

+ 15 - 0
RMS-FrontEnd/src/views/components/common/showFile.vue

@@ -0,0 +1,15 @@
+<template>
+    <div>
+        <iframe :src="url" frameborder="0"></iframe>
+    </div>
+</template>
+
+<script>
+export default{
+    data() {
+        return {
+            
+        }
+    },
+}
+</script>

+ 36 - 10
RMS-FrontEnd/src/views/report/components/CreateReport.vue

@@ -46,7 +46,10 @@
               <el-input v-model="form.volumeNumber" autocomplete="off" placeholder="请输入卷号"></el-input>
             </el-form-item>
             <el-form-item label="上传附件">
-              <el-upload class="upload-file" drag action="#" :auto-upload="false" :show-file-list="false" :on-change="onChange" multiple>
+              <div v-if="form.id" class="upload-file">
+                <div v-for="item in form.reportFiles" style="margin:0;display:flex;justify-content:space-around;"><p style="margin:0;width:calc(100% - 40px);overflow: hidden;white-space: nowrap;text-overflow:ellipsis">{{item.name?item.name:item.fileName}}</p> <p style="margin:0;"><i class="el-icon-close"></i></p></div>
+              </div>
+              <el-upload  ref="upload" class="upload-file" drag action="#" :auto-upload="false" :show-file-list="true" :on-change="onChange" multiple   :on-preview="handlePreview" :on-remove="handleRemove">
                 <i :class="!file ? 'el-icon-upload' : 'el-icon-refresh'"></i>
                 <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
                 <div class="el-upload__tip" slot="tip"></div>
@@ -65,6 +68,10 @@
       <Personnel-List @checked="getPerson"></Personnel-List>
     
     </el-dialog>
+    <el-dialog :visible.sync="showFile">
+      <!-- <img width="100%" :src="imageUrl" alt=""> -->
+      <div v-html="imageUrl"></div>
+    </el-dialog>
   </div>
 </template>
 
@@ -73,6 +80,7 @@ import { mapGetters } from "vuex";
 import SelectTree from '@/views/components/common/treeSelect.vue'
 import { PatentDetails } from "@/views/components/common/mixins";
 import PersonnelList from './personnelList.vue'
+
 export default {
   props: ['isTrue'],
   mixins:[PatentDetails],
@@ -110,6 +118,8 @@ export default {
       }
     }
     return {
+      imageUrl:'',
+      showFile:false,
       file:[],
       form: {
         signPatentNo: "",
@@ -150,16 +160,24 @@ export default {
   methods: {
     onChange(file, fileList) {
       this.file.push(file.raw) 
-    
-      // let formData = new FormData()
-      // formData.append('id', 1)
-
-      // formData.append('file', this.file)
-      // this.$api.upload(formData).then(response=>{
-      //   console.log(response)
-      // })
-      console.log(typeof(this.file) )
+      // console.log(this.file,document.getElementsByClassName("el-upload__input")[0].outerHTML ,document.getElementsByClassName("el-upload__input")[0].value)
+    },
+    handleRemove(file, fileList) {
+      var index = this.file.findIndex(item=>{
+        return item.uid == file.raw.uid
+      })
+      if(index!=-1){
+        this.file.splice(index,1)
+      }
+      console.log(this.file, fileList);
+      },
+    handlePreview(file) {
+      console.log(file);
+      // this.imageUrl ='https://view.xdocin.com/view?src=' + URL.createObjectURL(file.raw)
+      // this.showFile = true
     },
+   
+
     //获取审核人
     getPerson(val){
       this.person = val
@@ -279,6 +297,7 @@ export default {
                       this.$api.AddReport(formData).then(response=>{
                         if(response.code == 200){
                           this.file = null
+                          this.$refs.upload.clearFiles()
                           this.$message.success('报告创建成功')
                           this.$emit('getList',true)
                           this.handleClose()
@@ -290,6 +309,7 @@ export default {
                             
                     });
           }else{
+            console.log(this.form)
             this.$api.UpdateReport(this.form).then(response=>{
               if(response.code == 200){
                 this.$message.success('报告更新成功')
@@ -305,6 +325,8 @@ export default {
     },
     // 弹出框关闭
     handleClose() {
+      this.$refs.upload.clearFiles()
+      this.file = null
       this.showDialog = false
       // this.$refs.reportForm.resetFields();
       this.show = 0
@@ -319,6 +341,10 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+.upload-file{
+  width: 300px !important;
+  // height: 150px;
+}
 .el-select{
   width: 100% !important;
 }

+ 106 - 0
RMS-FrontEnd/src/views/report/components/ReportTemplate.vue

@@ -0,0 +1,106 @@
+<template>
+    <div>
+        <el-table
+            :data="tableData"
+            border
+            style="width: 100%">
+            <el-table-column
+                label="选择"
+                width="180"
+                align="center">
+                <template slot-scope="scope">
+                    <div>
+                        <el-radio v-model="templateId" @input="getTemplateId(scope.row.id)"></el-radio>
+                    </div>
+                </template>
+            </el-table-column>
+            <el-table-column
+                prop="templateName"
+                label="模板名称"
+                width="180"
+                align="center">
+            </el-table-column>
+            <el-table-column
+                prop="reportType"
+                label="所属报告类型"
+                width="180"
+                align="center">
+                <template slot-scope="scope">
+                    <div>
+                        {{dictMessage[scope.row.reportType]}}
+                    </div>
+                </template>
+            </el-table-column>
+            <el-table-column
+                prop="personName"
+                label="创建人"
+                align="center">
+            </el-table-column>
+            <el-table-column
+                prop="createTime"
+                label="创建日期"
+                align="center">
+            </el-table-column>
+        </el-table>
+        <div class="pagination">
+            <el-pagination :current-page.sync="queryParams.current" :page-size="queryParams.size" :total="total" @current-change="handleCurrentChange" layout="total, prev, pager, next, jumper" background></el-pagination>
+          </div>
+    </div>
+</template>
+
+<script>
+export default {
+    props:['reportType'],
+    data() {
+        return {
+            templateId:'',
+            tableData:[],
+            queryParams:{
+                size:10,
+                current:1,
+                reportType:this.reportType
+            },
+            total:0
+        }
+    },
+    watch:{
+        reportType(val){
+            this.queryParams.reportType = val
+            this.getList()
+        }
+    },
+    computed:{
+        dictMessage() {
+            var a = this.$store.state.dictMessage.dictMessage.REPORT_TYPE
+            var b = []
+            a.forEach(item => {
+                b[item.dictChildValue] = item.dictChildLabel
+            });
+            // console.log(b)
+            return b
+        },
+    },
+    mounted() {
+        this.getList()
+    },
+    methods: {
+        getList(){
+            this.$api.getTemplateByType(this.queryParams).then(response=>{
+                if(response.code == 200){
+                    console.log(response.data)
+                    this.tableData = response.data.records
+                    this.total = response.data.total
+                }
+            })
+        },
+        handleCurrentChange(val) {//分页
+            this.queryParams.current = val
+            this.getList()
+        },
+        getTemplateId(val){
+            console.log(val)
+            this.$emit('getReportTemplateId',val)
+        },
+    },
+}
+</script>

+ 42 - 4
RMS-FrontEnd/src/views/report/index.vue

@@ -48,6 +48,13 @@
       <el-dialog width="1100px" title="设置" :visible.sync="setVisible" :before-close="close">
           <Project-Field :reportId="reportId"></Project-Field>
     </el-dialog>
+    <el-dialog width="1000px" title="选择模板" :visible.sync="reportTemplate" :before-close="close1">
+          <Report-Template :reportType="reportType" @getReportTemplateId="getReportTemplateId"></Report-Template>
+          <div slot="footer" class="dialog-footer">
+            <el-button @click="close1">取 消</el-button>
+            <el-button type="primary" @click="submitExport" :loading="btnLoading">确 定</el-button>
+          </div>
+    </el-dialog>
     </div>
 </template>
 
@@ -56,15 +63,19 @@ import ReportTabel from './components/Tabel';
 import ReportCard from './components/Card'
 import CreateReport from './components/CreateReport.vue'
 import ProjectField from '@/views/layout/components/field.vue';
+import ReportTemplate from './components/ReportTemplate.vue';
 export default {
   components: {
     ReportTabel,
     ReportCard,
     CreateReport,
-    ProjectField
+    ProjectField,
+    ReportTemplate
   },
   data() {
     return {
+      btnLoading:false,
+      reportTemplate:false,
       setVisible:false,
       dataList: [],
       queryShowType: '0',
@@ -80,7 +91,8 @@ export default {
       loading: false,
       showDialog: false,
       reportId: "",
-     
+      reportType:'',
+      reportTemplateId:''
     }
   },
   computed: {
@@ -93,6 +105,26 @@ export default {
     this.getList()
   },
   methods: {
+    getReportTemplateId(val){
+      this.reportTemplateId = val
+    },
+    close1(){
+      this.reportTemplate = false
+    },
+    submitExport(){
+      var a = {
+        reportId : this.reportId,
+        templeId :this.reportTemplateId
+      }
+      this.$api.exportReport(a).then(response=>{
+        if(response.code == 200){
+          this.$message.success('导出成功')
+          this.reportTemplateId = ''
+          this.reportTemplate = false
+          console.log(response.data)
+        }
+      })
+    },
     //关闭弹窗
     close(){
       this.setVisible = false
@@ -126,8 +158,8 @@ export default {
         case '0':
           this.handleImportPatent(row)
           break
-        case '1':
-          this.handleUser(row)
+        case '1'://导出报告
+          this.exportReport(row)
           break
         case '2':
           this.handleFile(row, 1)
@@ -152,6 +184,12 @@ export default {
           break
       }
     },
+    exportReport(row){
+      console.log(row)
+      this.reportId = row.id
+      this.reportType = row.type
+      this.reportTemplate = true
+    },
     handleDetails(row){
       console.log(row,this.dictMessage)
       const router = this.$router.resolve({

+ 115 - 0
RMS-FrontEnd/src/views/report/reportDetails/components/reportFile.vue

@@ -0,0 +1,115 @@
+<template>
+    <div>
+        <el-table
+            :data="tableData"
+            border
+            v-loading="loading"
+            style="width: 100%">
+            <el-table-column type="index" label="序号" width="100" align="center"></el-table-column>
+            <el-table-column
+                prop="fileName"
+                label="文件名称"
+                width="300"
+                align="center">
+            </el-table-column>
+            <el-table-column
+                prop="templateName"
+                label="模板名称"
+                width="300"
+                align="center">
+            </el-table-column>
+
+            <el-table-column
+                prop="personName"
+                label="创建人"
+                min-width="200"
+                align="center">
+            </el-table-column>
+            <el-table-column
+                prop="createTime"
+                min-width="200"
+                label="创建日期"
+                align="center">
+            </el-table-column>
+            <el-table-column
+                label="操作"
+                width="300px"
+                align="center">
+                <template slot-scope="scope">
+                    <div>
+                        <el-button type="primary" @click="handleDownload(scope.row)">下载</el-button>
+                        <el-button type="danger" @click="deleteExport(scope.row)">删除</el-button>
+                    </div>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination">
+            <el-pagination :current-page.sync="queryParams.current" :page-size="queryParams.size" :total="total" @current-change="handleCurrentChange" layout="total, prev, pager, next, jumper" background></el-pagination>
+          </div>
+    </div>
+</template>
+
+<script>
+import { downLoad2 } from "@/utils";
+export default {
+    props:['reportId'],
+    data() {
+        return {
+            loading:false,
+            tableData:[],
+            queryParams:{
+                size:10,
+                current:1,
+                reportId:this.reportId
+            },
+            total:0
+        }
+    },
+    mounted() {
+        this.getList()
+    },
+    methods: {
+        getList(){
+            this.loading = true
+            this.$api.getExportList(this.queryParams).then(response=>{
+                if(response.code == 200){
+                    console.log(response.data)
+                    this.loading = false
+                    this.tableData = response.data.records
+                    this.total = response.data.total
+                }
+            })
+        },
+        handleCurrentChange(val) {//分页
+            this.queryParams.current = val
+            this.getList()
+        },
+        handleDownload(row) {
+            downLoad2(row.filePath)
+        },
+        deleteExport(row){
+            this.$confirm('是否删除该记录', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                this.$api.deleteExport({id:row.id}).then(response=>{
+                    if(response.code == 200){
+                         this.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                        this.getList()
+                    }
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '已取消删除'
+                }); 
+            });
+           
+        },
+    },
+}
+</script>

+ 4 - 3
RMS-FrontEnd/src/views/report/reportDetails/index.vue

@@ -25,14 +25,15 @@ import SignPatent from '@/views/components/articles/components/features.vue';
 import ContrastFile from '../components/SelectedPatent.vue';
 import ContrastResult from '../Invalid/InvalidPage/Result.vue';
 import ContrastPlan from './components/ContrastPlan.vue';
-// import BasicInformation from '../components/CreateReport.vue';
+import ReportFile from './components/reportFile.vue';
 export default {
     components:{
         BasicInformation,
         SignPatent,
         ContrastFile,
         ContrastResult,
-        ContrastPlan
+        ContrastPlan,
+        ReportFile
     },
     data() {
         return {
@@ -43,7 +44,7 @@ export default {
                 { title: '对比文件', path:"ContrastFile"}, 
                 { title: '任务对比结果', path:"ContrastResult"}, 
                 { title: '对比方案', path:"ContrastPlan"}, 
-                { title: '报告文档', path:"task/MyHandle"}, 
+                { title: '报告文档', path:"ReportFile"}, 
             ],
         }
     },