guhongwei 4 年之前
父节点
当前提交
c6dba6ce5f

+ 206 - 93
package-lock.json

@@ -1021,6 +1021,16 @@
         "regenerator-runtime": "^0.13.4"
       }
     },
+    "@babel/runtime-corejs3": {
+      "version": "7.14.0",
+      "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz",
+      "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==",
+      "optional": true,
+      "requires": {
+        "core-js-pure": "^3.0.0",
+        "regenerator-runtime": "^0.13.4"
+      }
+    },
     "@babel/template": {
       "version": "7.12.13",
       "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz",
@@ -1325,6 +1335,12 @@
       "integrity": "sha1-35w8izGiR+wxXmmWVmvjFx30s7E=",
       "dev": true
     },
+    "@types/raf": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.0.tgz",
+      "integrity": "sha512-taW5/WYqo36N7V39oYyHP9Ipfd5pNFvGTIQsNGj86xV88YQ7GnI30/yMfKDF7Zgin0m3e+ikX88FvImnK4RjGw==",
+      "optional": true
+    },
     "@types/range-parser": {
       "version": "1.2.3",
       "resolved": "https://registry.npm.taobao.org/@types/range-parser/download/@types/range-parser-1.2.3.tgz",
@@ -1718,16 +1734,6 @@
           "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
           "dev": true
         },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618552152737&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
-          "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
         "cacache": {
           "version": "13.0.1",
           "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz?cache=0&sync_timestamp=1616431156987&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-13.0.1.tgz",
@@ -1754,53 +1760,6 @@
             "unique-filename": "^1.1.1"
           }
         },
-        "chalk": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz",
-          "integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
-          "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
-          "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
-          "dev": true,
-          "optional": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1618559744568&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz",
-          "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
-          "dev": true,
-          "optional": true
-        },
-        "loader-utils": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
-          "integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^2.1.2"
-          }
-        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&sync_timestamp=1601546737481&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
@@ -1817,16 +1776,6 @@
             "minipass": "^3.1.1"
           }
         },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1618561027869&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
-          "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
         "terser-webpack-plugin": {
           "version": "2.3.8",
           "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.8.tgz?cache=0&sync_timestamp=1610194199773&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-2.3.8.tgz",
@@ -1843,18 +1792,6 @@
             "terser": "^4.6.12",
             "webpack-sources": "^1.4.3"
           }
-        },
-        "vue-loader-v16": {
-          "version": "npm:vue-loader@16.2.0",
-          "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-16.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-16.2.0.tgz",
-          "integrity": "sha1-BGpTMI3Ufljv4g3ewe3sAnzjtG4=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "chalk": "^4.1.0",
-            "hash-sum": "^2.0.0",
-            "loader-utils": "^2.0.0"
-          }
         }
       }
     },
@@ -2453,8 +2390,7 @@
     "atob": {
       "version": "2.1.2",
       "resolved": "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz",
-      "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=",
-      "dev": true
+      "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k="
     },
     "autoprefixer": {
       "version": "9.8.6",
@@ -2643,6 +2579,11 @@
         }
       }
     },
+    "base64-arraybuffer": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz",
+      "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ=="
+    },
     "base64-js": {
       "version": "1.5.1",
       "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.5.1.tgz",
@@ -2930,6 +2871,11 @@
         "node-releases": "^1.1.71"
       }
     },
+    "btoa": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz",
+      "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g=="
+    },
     "buffer": {
       "version": "4.9.2",
       "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-4.9.2.tgz",
@@ -2943,7 +2889,7 @@
     },
     "buffer-equal-constant-time": {
       "version": "1.0.1",
-      "resolved": "https://registry.npm.taobao.org/buffer-equal-constant-time/download/buffer-equal-constant-time-1.0.1.tgz",
+      "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
       "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
     },
     "buffer-from": {
@@ -3110,6 +3056,20 @@
       "integrity": "sha1-G7S+C9EY6Y4hz7fvYXse8hZGIvQ=",
       "dev": true
     },
+    "canvg": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.7.tgz",
+      "integrity": "sha512-4sq6iL5Q4VOXS3PL1BapiXIZItpxYyANVzsAKpTPS5oq4u3SKbGfUcbZh2gdLCQ3jWpG/y5wRkMlBBAJhXeiZA==",
+      "optional": true,
+      "requires": {
+        "@babel/runtime-corejs3": "^7.9.6",
+        "@types/raf": "^3.4.0",
+        "raf": "^3.4.1",
+        "rgbcolor": "^1.0.1",
+        "stackblur-canvas": "^2.0.0",
+        "svg-pathdata": "^5.0.5"
+      }
+    },
     "case-sensitive-paths-webpack-plugin": {
       "version": "2.4.0",
       "resolved": "https://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.4.0.tgz",
@@ -3864,6 +3824,12 @@
         }
       }
     },
+    "core-js-pure": {
+      "version": "3.12.1",
+      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.12.1.tgz",
+      "integrity": "sha512-1cch+qads4JnDSWsvc7d6nzlKAippwjUlf6vykkTLW53VSV+NkE6muGBToAjEA8pG90cSfcud3JgVmW2ds5TaQ==",
+      "optional": true
+    },
     "core-util-is": {
       "version": "1.0.2",
       "resolved": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz",
@@ -3995,6 +3961,14 @@
         "timsort": "^0.3.0"
       }
     },
+    "css-line-break": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.1.1.tgz",
+      "integrity": "sha512-1feNVaM4Fyzdj4mKPIQNL2n70MmuYzAXZ1aytlROFX1JsOo070OsugwGjj7nl6jnDJWHDM8zRZswkmeYVWZJQA==",
+      "requires": {
+        "base64-arraybuffer": "^0.2.0"
+      }
+    },
     "css-loader": {
       "version": "3.6.0",
       "resolved": "https://registry.npm.taobao.org/css-loader/download/css-loader-3.6.0.tgz?cache=0&sync_timestamp=1617981443482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-loader%2Fdownload%2Fcss-loader-3.6.0.tgz",
@@ -4611,6 +4585,12 @@
         "domelementtype": "1"
       }
     },
+    "dompurify": {
+      "version": "2.2.8",
+      "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.2.8.tgz",
+      "integrity": "sha512-9H0UL59EkDLgY3dUFjLV6IEUaHm5qp3mxSqWw7Yyx4Zhk2Jn2cmLe+CNPP3xy13zl8Bqg+0NehQzkdMoVhGRww==",
+      "optional": true
+    },
     "domutils": {
       "version": "1.7.0",
       "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz?cache=0&sync_timestamp=1617913465626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.7.0.tgz",
@@ -5481,6 +5461,11 @@
         "websocket-driver": ">=0.5.1"
       }
     },
+    "fflate": {
+      "version": "0.4.8",
+      "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz",
+      "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA=="
+    },
     "figgy-pudding": {
       "version": "3.5.2",
       "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.2.tgz",
@@ -6162,6 +6147,14 @@
         }
       }
     },
+    "html2canvas": {
+      "version": "1.0.0-rc.7",
+      "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-rc.7.tgz",
+      "integrity": "sha512-yvPNZGejB2KOyKleZspjK/NruXVQuowu8NnV2HYG7gW7ytzl+umffbtUI62v2dCHQLDdsK6HIDtyJZ0W3neerA==",
+      "requires": {
+        "css-line-break": "1.1.1"
+      }
+    },
     "htmlparser2": {
       "version": "3.10.1",
       "resolved": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz?cache=0&sync_timestamp=1617915295732&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-3.10.1.tgz",
@@ -7148,6 +7141,20 @@
         }
       }
     },
+    "jspdf": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.3.1.tgz",
+      "integrity": "sha512-1vp0USP1mQi1h7NKpwxjFgQkJ5ncZvtH858aLpycUc/M+r/RpWJT8PixAU7Cw/3fPd4fpC8eB/Bj42LnsR21YQ==",
+      "requires": {
+        "atob": "^2.1.2",
+        "btoa": "^1.2.1",
+        "canvg": "^3.0.6",
+        "core-js": "^3.6.0",
+        "dompurify": "^2.2.0",
+        "fflate": "^0.4.8",
+        "html2canvas": "^1.0.0-rc.5"
+      }
+    },
     "jsprim": {
       "version": "1.4.1",
       "resolved": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
@@ -7403,32 +7410,32 @@
     },
     "lodash.includes": {
       "version": "4.3.0",
-      "resolved": "https://registry.npm.taobao.org/lodash.includes/download/lodash.includes-4.3.0.tgz",
+      "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
       "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
     },
     "lodash.isboolean": {
       "version": "3.0.3",
-      "resolved": "https://registry.npm.taobao.org/lodash.isboolean/download/lodash.isboolean-3.0.3.tgz",
+      "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
       "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
     },
     "lodash.isinteger": {
       "version": "4.0.4",
-      "resolved": "https://registry.npm.taobao.org/lodash.isinteger/download/lodash.isinteger-4.0.4.tgz",
+      "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
       "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
     },
     "lodash.isnumber": {
       "version": "3.0.3",
-      "resolved": "https://registry.npm.taobao.org/lodash.isnumber/download/lodash.isnumber-3.0.3.tgz",
+      "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
       "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
     },
     "lodash.isplainobject": {
       "version": "4.0.6",
-      "resolved": "https://registry.npm.taobao.org/lodash.isplainobject/download/lodash.isplainobject-4.0.6.tgz",
+      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
       "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
     },
     "lodash.isstring": {
       "version": "4.0.1",
-      "resolved": "https://registry.npm.taobao.org/lodash.isstring/download/lodash.isstring-4.0.1.tgz",
+      "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
       "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
     },
     "lodash.kebabcase": {
@@ -7451,7 +7458,7 @@
     },
     "lodash.once": {
       "version": "4.1.1",
-      "resolved": "https://registry.npm.taobao.org/lodash.once/download/lodash.once-4.1.1.tgz",
+      "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
       "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
     },
     "lodash.transform": {
@@ -8555,8 +8562,7 @@
     "performance-now": {
       "version": "2.1.0",
       "resolved": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
-      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
-      "dev": true
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
     },
     "picomatch": {
       "version": "2.2.3",
@@ -9405,6 +9411,15 @@
       "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=",
       "dev": true
     },
+    "raf": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+      "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+      "optional": true,
+      "requires": {
+        "performance-now": "^2.1.0"
+      }
+    },
     "randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz",
@@ -9497,8 +9512,7 @@
     "regenerator-runtime": {
       "version": "0.13.7",
       "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz",
-      "integrity": "sha1-ysLazIoepnX+qrrriugziYrkb1U=",
-      "dev": true
+      "integrity": "sha1-ysLazIoepnX+qrrriugziYrkb1U="
     },
     "regenerator-transform": {
       "version": "0.14.5",
@@ -9742,6 +9756,12 @@
       "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=",
       "dev": true
     },
+    "rgbcolor": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz",
+      "integrity": "sha1-1lBezbMEplldom+ktDMHMGd1lF0=",
+      "optional": true
+    },
     "rimraf": {
       "version": "2.7.1",
       "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz",
@@ -10435,6 +10455,12 @@
       "integrity": "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=",
       "dev": true
     },
+    "stackblur-canvas": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.5.0.tgz",
+      "integrity": "sha512-EeNzTVfj+1In7aSLPKDD03F/ly4RxEuF/EX0YcOG0cKoPXs+SLZxDawQbexQDBzwROs4VKLWTOaZQlZkGBFEIQ==",
+      "optional": true
+    },
     "stackframe": {
       "version": "1.2.0",
       "resolved": "https://registry.npm.taobao.org/stackframe/download/stackframe-1.2.0.tgz",
@@ -10627,6 +10653,12 @@
         "has-flag": "^3.0.0"
       }
     },
+    "svg-pathdata": {
+      "version": "5.0.5",
+      "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-5.0.5.tgz",
+      "integrity": "sha512-TAAvLNSE3fEhyl/Da19JWfMAdhSXTYeviXsLSoDT1UM76ADj5ndwAPX1FKQEgB/gFMPavOy6tOqfalXKUiXrow==",
+      "optional": true
+    },
     "svg-tags": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz",
@@ -11455,6 +11487,87 @@
         }
       }
     },
+    "vue-loader-v16": {
+      "version": "npm:vue-loader@16.2.0",
+      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.2.0.tgz",
+      "integrity": "sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q==",
+      "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.npmjs.org/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.1",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+          "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/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.npmjs.org/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.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true,
+          "optional": true
+        },
+        "loader-utils": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+          "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
+          "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.npmjs.org/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-meta": {
       "version": "2.4.0",
       "resolved": "https://registry.npm.taobao.org/vue-meta/download/vue-meta-2.4.0.tgz",

+ 2 - 0
package.json

@@ -13,7 +13,9 @@
     "core-js": "^3.6.5",
     "echarts": "^5.1.0",
     "element-ui": "^2.15.1",
+    "html2canvas": "^1.0.0-rc.7",
     "jsonwebtoken": "^8.5.1",
+    "jspdf": "^2.3.1",
     "lodash": "^4.17.21",
     "moment": "^2.29.1",
     "naf-core": "^0.1.2",

+ 12 - 0
src/router/index.js

@@ -172,6 +172,12 @@ const fwjg = [
     meta: { title: '创新券兑付-审核管理' },
     component: () => import('../views/adminCenter/cashing/coupons/detail.vue'),
   },
+  {
+    path: '/adminCenter/cashing/coupons/result',
+    name: 'admin_cashing_coupons_result',
+    meta: { title: '创新券兑付-审核结果查看' },
+    component: () => import('../views/adminCenter/cashing/coupons/result.vue'),
+  },
   // 服务机构-订单
   // {
   //   path: '/adminCenter/order/list',
@@ -290,6 +296,12 @@ const qy = [
     meta: { title: '创新券兑付' },
     component: () => import('../views/adminCenter/company/cashing/coupons/couponsResult.vue'),
   },
+  {
+    path: '/adminCenter/company/cashing/couponsResult_info',
+    name: 'company_cashing_couponsResult_info',
+    meta: { title: '创新券兑付-审核结果' },
+    component: () => import('../views/adminCenter/company/cashing/coupons/couponsResult_info.vue'),
+  },
   // // 企业-创新券申领
   // {
   //   path: '/adminCenter/company/coupons',

+ 90 - 0
src/unit/htmlToPdf.js

@@ -0,0 +1,90 @@
+//不使用JQuery版的
+
+import html2canvas from 'html2canvas';
+import JsPDF from 'jspdf';
+
+/**
+ * @param  ele          要生成 pdf 的DOM元素(容器)
+ * @param  padfName     PDF文件生成后的文件名字
+ * */
+
+function downloadPDF(ele, pdfName) {
+  let eleW = ele.offsetWidth; // 获得该容器的宽
+  let eleH = ele.offsetHeight; // 获得该容器的高
+
+  let eleOffsetTop = ele.offsetTop; // 获得该容器到文档顶部的距离
+  let eleOffsetLeft = ele.offsetLeft; // 获得该容器到文档最左的距离
+
+  var canvas = document.createElement('canvas');
+  var abs = 0;
+
+  let win_in = document.documentElement.clientWidth || document.body.clientWidth; // 获得当前可视窗口的宽度(不包含滚动条)
+  let win_out = window.innerWidth; // 获得当前窗口的宽度(包含滚动条)
+
+  if (win_out > win_in) {
+    // abs = (win_o - win_i)/2;    // 获得滚动条长度的一半
+    abs = (win_out - win_in) / 2; // 获得滚动条宽度的一半
+    // console.log(a, '新abs');
+  }
+
+  canvas.width = eleW * 2; // 将画布宽&&高放大两倍
+  canvas.height = eleH * 2;
+
+  var context = canvas.getContext('2d');
+
+  context.scale(2, 2);
+
+  context.translate(-eleOffsetLeft - abs, -eleOffsetTop);
+  // 这里默认横向没有滚动条的情况,因为offset.left(),有无滚动条的时候存在差值,因此
+  // translate的时候,要把这个差值去掉
+
+  // html2canvas(element).then( (canvas)=>{ //报错
+  // html2canvas(element[0]).then( (canvas)=>{
+  html2canvas(ele, {
+    dpi: 300,
+    // allowTaint: true,  //允许 canvas 污染, allowTaint参数要去掉,否则是无法通过toDataURL导出canvas数据的
+    useCORS: true, //允许canvas画布内 可以跨域请求外部链接图片, 允许跨域请求。
+  }).then((canvas) => {
+    var contentWidth = canvas.width;
+    var contentHeight = canvas.height;
+    //一页pdf显示html页面生成的canvas高度;
+    var pageHeight = (contentWidth / 592.28) * 841.89;
+    //未生成pdf的html页面高度
+    var leftHeight = contentHeight;
+    //页面偏移
+    var position = 0;
+    //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
+    var imgWidth = 595.28;
+    var imgHeight = (595.28 / contentWidth) * contentHeight;
+
+    var pageData = canvas.toDataURL('image/jpeg', 1.0);
+
+    var pdf = new JsPDF('', 'pt', 'a4');
+
+    //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
+    //当内容未超过pdf一页显示的范围,无需分页
+    if (leftHeight < pageHeight) {
+      //在pdf.addImage(pageData, 'JPEG', 左,上,宽度,高度)设置在pdf中显示;
+      pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);
+      // pdf.addImage(pageData, 'JPEG', 20, 40, imgWidth, imgHeight);
+    } else {
+      // 分页
+      while (leftHeight > 0) {
+        pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight);
+        leftHeight -= pageHeight;
+        position -= 841.89;
+        //避免添加空白页
+        if (leftHeight > 0) {
+          pdf.addPage();
+        }
+      }
+    }
+
+    //可动态生成
+    pdf.save(pdfName);
+  });
+}
+
+export default {
+  downloadPDF,
+};

+ 109 - 0
src/unit/htmlToPdfJQ.js

@@ -0,0 +1,109 @@
+//使用JQuery方式写的。
+
+import html2canvas from 'html2canvas';
+import JsPDF from 'jspdf';
+import $ from 'jquery';
+
+// console.log($, '这是什么什么');
+
+
+
+function download(ele){
+    var element = $("#demo");    // 这个dom元素是要导出pdf的div容器
+    console.log(element,'1212122');
+
+
+    // var element = ele;    // 这个dom元素是要导出pdf的div容器
+
+    var w = element.width();    // 获得该容器的宽
+    var h = element.height();    // 获得该容器的高
+
+
+
+    var offsetTop = element.offset().top;    // 获得该容器到文档顶部的距离
+    var offsetLeft = element.offset().left;    // 获得该容器到文档最左的距离
+
+    console.log(offsetTop,'------',offsetLeft);
+
+
+
+
+    var canvas = document.createElement("canvas");
+    var abs = 0;
+    var win_i = $(window).width();    // 获得当前可视窗口的宽度(不包含滚动条)
+    var win_o = window.innerWidth;    // 获得当前窗口的宽度(包含滚动条)
+
+    console.log(canvas, abs, win_i, win_o);
+
+
+
+
+
+    if(win_o>win_i){
+        abs = (win_o - win_i)/2;    // 获得滚动条长度的一半
+    }
+
+
+
+
+
+
+    canvas.width = w * 2;    // 将画布宽&&高放大两倍
+    canvas.height = h * 2;
+    var context = canvas.getContext("2d");
+    context.scale(2, 2);
+    context.translate(-offsetLeft-abs,-offsetTop);
+    // 这里默认横向没有滚动条的情况,因为offset.left(),有无滚动条的时候存在差值,因此
+    // translate的时候,要把这个差值去掉
+
+    // html2canvas(element).then( (canvas)=>{ //报错
+    html2canvas(element[0]).then( (canvas)=>{
+
+        var contentWidth = canvas.width;
+        var contentHeight = canvas.height;
+        //一页pdf显示html页面生成的canvas高度;
+        var pageHeight = contentWidth / 592.28 * 841.89;
+        //未生成pdf的html页面高度
+        var leftHeight = contentHeight;
+        //页面偏移
+        var position = 0;
+        //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
+        var imgWidth = 595.28;
+        var imgHeight = 592.28/contentWidth * contentHeight;
+
+        var pageData = canvas.toDataURL('image/jpeg', 1.0);
+
+
+
+
+        var pdf = new JsPDF('', 'pt', 'a4');
+
+        //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
+        //当内容未超过pdf一页显示的范围,无需分页
+        if (leftHeight < pageHeight) {
+            pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);
+        } else {    // 分页
+            while(leftHeight > 0) {
+                pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
+                leftHeight -= pageHeight;
+                position -= 841.89;
+                //避免添加空白页
+                if(leftHeight > 0) {
+                    pdf.addPage();
+                }
+            }
+        }
+
+
+
+        pdf.save('我的简历.pdf');
+    })
+
+
+
+}
+
+
+export default {
+    download
+}

+ 159 - 2
src/views/adminCenter/cashing/coupons/detail.vue

@@ -43,6 +43,116 @@
                   <el-input v-model="form.total" disabled></el-input>
                 </el-form-item>
               </el-col>
+              <!-- <el-col :span="24" class="file">
+                <el-col :span="24" class="file_title"> 相关附件 </el-col>
+                <el-col :span="24" class="file_info">
+                  <el-col :span="24" class="info_tit">1.创新券服务合同 </el-col>
+                  <el-col :span="24" class="info_upl">
+                    <el-col :span="4" v-for="(i, index) in form.contract" :key="`contract-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="file_info">
+                  <el-col :span="24" class="info_tit">2.官方受理通知书 </el-col>
+                  <el-col :span="24" class="info_upl">
+                    <el-col :span="4" v-for="(i, index) in form.accept" :key="`accept-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="file_info">
+                  <el-col :span="24" class="info_tit">3.官方缴费证明 </el-col>
+                  <el-col :span="24" class="info_upl">
+                    <el-col :span="4" v-for="(i, index) in form.cost" :key="`cost-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="file_info">
+                  <el-col :span="24" class="info_tit">4.服务结果证明 </el-col>
+                  <el-col :span="24" class="info_upl">
+                    <el-col :span="4" v-for="(i, index) in form.result" :key="`result-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="file_info">
+                  <el-col :span="24" class="info_tit">5.其他能够证明服务真实发生的材料 </el-col>
+                  <el-col :span="24" class="info_upl">
+                    <el-col :span="4" v-for="(i, index) in form.result_else" :key="`result_else-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+              </el-col> -->
+              <el-col :span="24" class="file">
+                <el-col :span="24" class="file_title"> 相关附件 </el-col>
+                <el-col :span="24" class="text">
+                  <el-col :span="24" class="left">1.创新券服务合同</el-col>
+                  <el-col :span="24" class="right">
+                    <el-col :span="4" v-for="(i, index) in form.contract" :key="`contract-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="text">
+                  <el-col :span="24" class="left">2.官方缴费证明</el-col>
+                  <el-col :span="24" class="right">
+                    <el-col :span="4" v-for="(i, index) in form.accept" :key="`accept-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="text">
+                  <el-col :span="24" class="left">3.创新券服务合同</el-col>
+                  <el-col :span="24" class="right">
+                    <el-col :span="4" v-for="(i, index) in form.cost" :key="`cost-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="text">
+                  <el-col :span="24" class="left">4.服务结果证明</el-col>
+                  <el-col :span="24" class="right">
+                    <el-col :span="4" v-for="(i, index) in form.result" :key="`result-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="text">
+                  <el-col :span="24" class="left">5.其他能够证明服务真实发生的材料</el-col>
+                  <el-col :span="24" class="right">
+                    <el-col :span="4" v-for="(i, index) in form.result_else" :key="`result_else-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="text">
+                <el-col :span="1" class="left"> 审核状态</el-col>
+                <el-col :span="23" class="right">
+                  <el-radio-group v-model="form.status">
+                    <el-radio v-for="(i, index) in statusList" :key="`status-${index}`" :label="i.value">{{ i.label }}</el-radio>
+                  </el-radio-group>
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="text">
+                <el-col :span="1" class="left"> 审核意见</el-col>
+                <el-col :span="23" class="right">
+                  <el-input v-model="form.desc" type="textarea" maxlength="300" :autosize="{ minRows: 4, maxRows: 6 }" show-word-limit></el-input>
+                </el-col>
+              </el-col>
               <el-col :span="24" class="formBtn">
                 <el-button type="danger" size="mini" @click="back">取消保存</el-button>
                 <el-button type="primary" size="mini" @click="onSubmit('form')">确认订单</el-button>
@@ -56,6 +166,8 @@
 </template>
 
 <script>
+const moment = require('moment');
+const { cashingresult } = require('@common/dict/index');
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: cashing } = createNamespacedHelpers('cashing');
 const { mapActions: coupons } = createNamespacedHelpers('coupons');
@@ -66,6 +178,8 @@ export default {
   data: function () {
     return {
       form: {},
+      imgList: ['jpg', 'jpeg', 'png', 'bmp', 'gif'],
+      statusList: cashingresult,
     };
   },
   created() {
@@ -86,6 +200,7 @@ export default {
         if (valid) {
           let data = this.form;
           data.status = '1';
+          data.end_time = this.nowDate();
           let arr = await this.couponsFetch(data.coupons_id);
           if (this.$checkRes(arr)) {
             let couponsData = arr.data;
@@ -103,6 +218,8 @@ export default {
               data.total = Number(data.money - couponsData.allowance);
             }
           }
+          let newRecord = this.getRecord(data);
+          data.record = data.record.concat(newRecord);
           let res = await this.update(data);
           if (this.$checkRes(res)) {
             this.$message({
@@ -117,9 +234,26 @@ export default {
         }
       });
     },
+    // 审核列表整合
+    getRecord(data) {
+      let arr = [{ status: data.status, desc: data.desc, desc_time: moment().format('YYYY-MM-DD HH:mm:ss') }];
+      return arr;
+    },
+    // 最后审核时间
+    nowDate() {
+      return moment().format('YYYY-MM-DD HH:mm:ss');
+    },
     back() {
       this.$router.push({ path: '/adminCenter/cashing/coupons' });
     },
+    isImg(url) {
+      const arr = url.split('.');
+      const suffix = _.last(arr);
+      return this.imgList.includes(suffix);
+    },
+    toOpen(url) {
+      window.open(url);
+    },
   },
   computed: {
     ...mapState(['user']),
@@ -151,8 +285,23 @@ export default {
   }
   .down {
     .text {
-      border-bottom: 1px dashed #ccc;
-      padding: 15px 0;
+      padding: 10px 0;
+      border-bottom: 1px dashed #333;
+      .left {
+        text-align: left;
+        color: #666;
+      }
+      .right {
+        padding: 0 10px;
+        img {
+          width: 200px;
+          height: 200px;
+          border: 1px solid #ccc;
+        }
+      }
+      .desc {
+        margin: 10px 0 0 0;
+      }
     }
     /deep/.el-form-item {
       margin: 0;
@@ -164,6 +313,14 @@ export default {
       text-align: center;
       padding: 10px 0;
     }
+    .file {
+      padding: 0 15px;
+      .file_title {
+        font-size: 16px;
+        font-weight: bold;
+        margin: 10px 0 0 0;
+      }
+    }
   }
 }
 .main:hover {

+ 4 - 2
src/views/adminCenter/cashing/coupons/index.vue

@@ -39,11 +39,13 @@ export default {
         { label: '使用单位', prop: 'company_name', filter: 'input' },
         { label: '券的类别', prop: 'coupons_type' },
         { label: '使用单位', prop: 'company_name', filter: 'input' },
-        { label: '提交时间', prop: 'create_time' },
+        { label: '最后提交时间', prop: 'create_time' },
+        { label: '最后审核时间', prop: 'end_time' },
         { label: '服务提供商', prop: 'mechanism_name' },
         { label: '订单金额', prop: 'money' },
         { label: '券抵扣金额', prop: 'allowance' },
         { label: '应收金额', prop: 'total' },
+
         {
           label: '兑付审核状态',
           prop: 'status',
@@ -74,7 +76,7 @@ export default {
     },
     // 查看
     toView({ data }) {
-      console.log(data);
+      this.$router.push({ path: '/adminCenter/cashing/coupons/result', query: { id: data._id } });
     },
   },
   computed: {

+ 242 - 0
src/views/adminCenter/cashing/coupons/result.vue

@@ -0,0 +1,242 @@
+<template>
+  <div id="result">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="one">
+          <el-col :span="24" class="top">
+            <el-button type="primary" size="mini" @click="back">返回</el-button>
+          </el-col>
+          <el-col :span="24" class="down">
+            <el-form :model="form" ref="form" label-width="100px">
+              <el-col :span="24" class="text">
+                <el-col :span="2" class="left"> 订单号</el-col>
+                <el-col :span="22" class="right">
+                  {{ form.cashing_no || '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="text">
+                <el-col :span="2" class="left"> 券的类别</el-col>
+                <el-col :span="22" class="right">
+                  {{ form.coupons_type || '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="text">
+                <el-col :span="2" class="left"> 使用单位</el-col>
+                <el-col :span="22" class="right">
+                  {{ form.company_name || '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="text">
+                <el-col :span="2" class="left"> 最后提交时间</el-col>
+                <el-col :span="22" class="right">
+                  {{ form.create_time || '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="text">
+                <el-col :span="2" class="left"> 最后审核时间</el-col>
+                <el-col :span="22" class="right">
+                  {{ form.end_time || '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="text">
+                <el-col :span="2" class="left"> 服务提供商</el-col>
+                <el-col :span="22" class="right">
+                  {{ form.mechanism_name || '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="text">
+                <el-col :span="2" class="left"> 订单金额</el-col>
+                <el-col :span="22" class="right"> {{ getMoney(form.money) }}元 </el-col>
+              </el-col>
+              <el-col :span="24" class="text">
+                <el-col :span="2" class="left"> 券抵扣金额</el-col>
+                <el-col :span="22" class="right"> {{ getMoney(form.allowance) }}元 </el-col>
+              </el-col>
+              <el-col :span="24" class="text">
+                <el-col :span="2" class="left"> 应收金额</el-col>
+                <el-col :span="22" class="right"> {{ getMoney(form.total) }}元 </el-col>
+              </el-col>
+              <el-col :span="24" class="file">
+                <el-col :span="24" class="file_title"> 相关附件 </el-col>
+                <el-col :span="24" class="text">
+                  <el-col :span="24" class="left">1.创新券服务合同</el-col>
+                  <el-col :span="24" class="right">
+                    <el-col :span="4" v-for="(i, index) in form.contract" :key="`contract-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="text">
+                  <el-col :span="24" class="left">2.官方缴费证明</el-col>
+                  <el-col :span="24" class="right">
+                    <el-col :span="4" v-for="(i, index) in form.accept" :key="`accept-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="text">
+                  <el-col :span="24" class="left">3.创新券服务合同</el-col>
+                  <el-col :span="24" class="right">
+                    <el-col :span="4" v-for="(i, index) in form.cost" :key="`cost-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="text">
+                  <el-col :span="24" class="left">4.服务结果证明</el-col>
+                  <el-col :span="24" class="right">
+                    <el-col :span="4" v-for="(i, index) in form.result" :key="`result-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="text">
+                  <el-col :span="24" class="left">5.其他能够证明服务真实发生的材料</el-col>
+                  <el-col :span="24" class="right">
+                    <el-col :span="4" v-for="(i, index) in form.result_else" :key="`result_else-${index}`">
+                      <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                      <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                    </el-col>
+                  </el-col>
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="text">
+                <el-col :span="2" class="left"> 审核状态:</el-col>
+                <el-col :span="22" class="right">
+                  {{ getStatus(form.status) }}
+                </el-col>
+              </el-col>
+              <el-col :span="24" class="text">
+                <el-col :span="24" class="left"> 审核意见:</el-col>
+                <el-col :span="24" class="right desc">
+                  <el-timeline>
+                    <el-timeline-item v-for="(item, index) in form.record" :key="index" :timestamp="item.desc_time" placement="top" type="success">
+                      <el-card>
+                        <p>审核状态:{{ getStatus(item.status) || '暂无' }}</p>
+                        <p>审核意见:{{ item.desc || '暂无' }}</p>
+                      </el-card>
+                    </el-timeline-item>
+                  </el-timeline>
+                </el-col>
+              </el-col>
+            </el-form>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+const _ = require('lodash');
+const moment = require('moment');
+const { cashingresult } = require('@common/dict/index');
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: cashing } = createNamespacedHelpers('cashing');
+export default {
+  name: 'result',
+  props: {},
+  components: {},
+  data: function () {
+    return {
+      form: {},
+      imgList: ['jpg', 'jpeg', 'png', 'bmp', 'gif'],
+    };
+  },
+  created() {
+    if (this.id) this.search();
+  },
+  methods: {
+    ...cashing(['fetch']),
+    async search() {
+      let res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `form`, res.data);
+      }
+    },
+    getStatus(i) {
+      const r = cashingresult.find((f) => f.value === i);
+      if (r) return r.label;
+    },
+    back() {
+      this.$router.push({ path: '/adminCenter/cashing/coupons' });
+    },
+    // 判断钱
+    getMoney(data) {
+      if (data == undefined) return '暂无';
+      else return data;
+    },
+    isImg(url) {
+      const arr = url.split('.');
+      const suffix = _.last(arr);
+      return this.imgList.includes(suffix);
+    },
+    toOpen(url) {
+      window.open(url);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  border-radius: 10px;
+  box-shadow: 0 0 5px #cccccc;
+  padding: 20px;
+  .one {
+    .top {
+      text-align: right;
+      margin: 0 0 10px 0;
+    }
+    .down {
+      .text {
+        padding: 10px 0;
+        border-bottom: 1px dashed #333;
+        .left {
+          text-align: left;
+        }
+        .right {
+          img {
+            width: 200px;
+            height: 200px;
+            border: 1px solid #ccc;
+          }
+        }
+        .desc {
+          margin: 10px 0 0 0;
+        }
+      }
+      .file {
+        .file_title {
+          font-size: 16px;
+          font-weight: bold;
+          margin: 10px 0 0 0;
+        }
+      }
+    }
+  }
+}
+.main:hover {
+  box-shadow: 0 0 5px #409eff;
+}
+</style>

+ 11 - 3
src/views/adminCenter/company/cashing/coupons/couponsResult.vue

@@ -3,7 +3,7 @@
     <el-row>
       <el-col :span="24" class="main">
         <el-col :span="24" class="one">
-          <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search"> </data-table>
+          <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search" @view="toView"> </data-table>
         </el-col>
       </el-col>
     </el-row>
@@ -22,10 +22,15 @@ export default {
     return {
       list: [],
       total: 0,
-      opera: [],
+      opera: [
+        {
+          label: '查看结果',
+          method: 'view',
+          display: (i) => i.status == '1' || i.status == '-1',
+        },
+      ],
       fields: [
         { label: '订单号', prop: 'cashing_no', filter: 'input' },
-        { label: '使用单位', prop: 'company_name', filter: 'input' },
         { label: '券的类别', prop: 'coupons_type' },
         { label: '使用单位', prop: 'company_name', filter: 'input' },
         { label: '提交时间', prop: 'create_time' },
@@ -57,6 +62,9 @@ export default {
         this.$set(this, `total`, res.total);
       }
     },
+    toView({ data }) {
+      this.$router.push({ path: '/adminCenter/company/cashing/couponsResult_info', query: { id: data._id } });
+    },
   },
   computed: {
     ...mapState(['user']),

+ 301 - 0
src/views/adminCenter/company/cashing/coupons/couponsResult_info.vue

@@ -0,0 +1,301 @@
+<template>
+  <div id="couponsResult_info">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="one">
+          <el-col :span="24" class="top">
+            <el-button type="primary" size="mini" @click="back">返回</el-button>
+          </el-col>
+          <el-col :span="24" class="down">
+            <el-col :span="12" class="common down_left">
+              <el-col :span="24" class="down_leftTix"> 兑付订单详情 </el-col>
+              <el-col :span="24" class="down_leftInfo">
+                <el-form :model="form" ref="form" label-width="100px">
+                  <el-col :span="24" class="text">
+                    <el-col :span="3" class="left"> 订单号</el-col>
+                    <el-col :span="21" class="right">
+                      {{ form.cashing_no || '暂无' }}
+                    </el-col>
+                  </el-col>
+                  <el-col :span="24" class="text">
+                    <el-col :span="3" class="left"> 券的类别</el-col>
+                    <el-col :span="21" class="right">
+                      {{ form.coupons_type || '暂无' }}
+                    </el-col>
+                  </el-col>
+                  <el-col :span="24" class="text">
+                    <el-col :span="3" class="left"> 使用单位</el-col>
+                    <el-col :span="21" class="right">
+                      {{ form.company_name || '暂无' }}
+                    </el-col>
+                  </el-col>
+                  <el-col :span="24" class="text">
+                    <el-col :span="3" class="left"> 最后提交时间</el-col>
+                    <el-col :span="21" class="right">
+                      {{ form.create_time || '暂无' }}
+                    </el-col>
+                  </el-col>
+                  <el-col :span="24" class="text">
+                    <el-col :span="3" class="left"> 最后审核时间</el-col>
+                    <el-col :span="21" class="right">
+                      {{ form.end_time || '暂无' }}
+                    </el-col>
+                  </el-col>
+                  <el-col :span="24" class="text">
+                    <el-col :span="3" class="left"> 服务提供商</el-col>
+                    <el-col :span="21" class="right">
+                      {{ form.mechanism_name || '暂无' }}
+                    </el-col>
+                  </el-col>
+                  <el-col :span="24" class="text">
+                    <el-col :span="3" class="left"> 订单金额</el-col>
+                    <el-col :span="21" class="right"> {{ getMoney(form.money) }}元 </el-col>
+                  </el-col>
+                  <el-col :span="24" class="text">
+                    <el-col :span="3" class="left"> 券抵扣金额</el-col>
+                    <el-col :span="21" class="right"> {{ getMoney(form.allowance) }}元 </el-col>
+                  </el-col>
+                  <el-col :span="24" class="text">
+                    <el-col :span="3" class="left"> 应收金额</el-col>
+                    <el-col :span="21" class="right"> {{ getMoney(form.total) }}元 </el-col>
+                  </el-col>
+                  <el-col :span="24" class="file">
+                    <el-col :span="24" class="file_title"> 相关附件 </el-col>
+                    <el-col :span="24" class="text">
+                      <el-col :span="24" class="left">1.创新券服务合同</el-col>
+                      <el-col :span="24" class="right">
+                        <el-col :span="4" v-for="(i, index) in form.contract" :key="`contract-${index}`">
+                          <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                          <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                    <el-col :span="24" class="text">
+                      <el-col :span="24" class="left">2.官方缴费证明</el-col>
+                      <el-col :span="24" class="right">
+                        <el-col :span="4" v-for="(i, index) in form.accept" :key="`accept-${index}`">
+                          <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                          <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                    <el-col :span="24" class="text">
+                      <el-col :span="24" class="left">3.创新券服务合同</el-col>
+                      <el-col :span="24" class="right">
+                        <el-col :span="4" v-for="(i, index) in form.cost" :key="`cost-${index}`">
+                          <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                          <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                    <el-col :span="24" class="text">
+                      <el-col :span="24" class="left">4.服务结果证明</el-col>
+                      <el-col :span="24" class="right">
+                        <el-col :span="4" v-for="(i, index) in form.result" :key="`result-${index}`">
+                          <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                          <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                    <el-col :span="24" class="text">
+                      <el-col :span="24" class="left">5.其他能够证明服务真实发生的材料</el-col>
+                      <el-col :span="24" class="right">
+                        <el-col :span="4" v-for="(i, index) in form.result_else" :key="`result_else-${index}`">
+                          <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
+                          <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col :span="24" class="text">
+                    <el-col :span="3" class="left"> 审核状态:</el-col>
+                    <el-col :span="21" class="right">
+                      {{ getStatus(form.status) }}
+                    </el-col>
+                  </el-col>
+                  <el-col :span="24" class="text">
+                    <el-col :span="24" class="left"> 审核意见:</el-col>
+                    <el-col :span="24" class="right desc">
+                      <el-timeline>
+                        <el-timeline-item v-for="(item, index) in form.record" :key="index" :timestamp="item.desc_time" placement="top" type="success">
+                          <el-card>
+                            <p>审核状态:{{ getStatus(item.status) || '暂无' }}</p>
+                            <p>审核意见:{{ item.desc || '暂无' }}</p>
+                          </el-card>
+                        </el-timeline-item>
+                      </el-timeline>
+                    </el-col>
+                  </el-col>
+                </el-form>
+              </el-col>
+            </el-col>
+            <el-col :span="12" class="common down_right">
+              <el-col :span="24" class="down_rightTix">
+                <span>凭证详细</span>
+                <el-button type="primary" size="mini" @click="download">下载凭证</el-button>
+              </el-col>
+              <el-col :span="24" class="down_rightInfo">
+                <div id="demo">凭证详细信息</div>
+              </el-col>
+            </el-col>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+const _ = require('lodash');
+const moment = require('moment');
+import htmlToPdf from '@/unit/htmlToPdf.js';
+const { cashingresult } = require('@common/dict/index');
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: cashing } = createNamespacedHelpers('cashing');
+export default {
+  name: 'couponsResult_info',
+  props: {},
+  components: {},
+  data: function () {
+    return {
+      form: {},
+      imgList: ['jpg', 'jpeg', 'png', 'bmp', 'gif'],
+    };
+  },
+  created() {
+    if (this.id) this.search();
+  },
+  methods: {
+    ...cashing(['fetch']),
+    async search() {
+      let res = await this.fetch(this.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `form`, res.data);
+      }
+    },
+    getStatus(i) {
+      const r = cashingresult.find((f) => f.value === i);
+      if (r) return r.label;
+    },
+    back() {
+      this.$router.push({ path: '/adminCenter/company/cashing/couponsResult' });
+    },
+    // 判断钱
+    getMoney(data) {
+      if (data == undefined) return '暂无';
+      else return data;
+    },
+    isImg(url) {
+      const arr = url.split('.');
+      const suffix = _.last(arr);
+      return this.imgList.includes(suffix);
+    },
+    toOpen(url) {
+      window.open(url);
+    },
+    //pdf下载
+    download() {
+      htmlToPdf.downloadPDF(document.querySelector('#demo'), '凭证');
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  border-radius: 10px;
+  box-shadow: 0 0 5px #cccccc;
+  padding: 20px;
+  .one {
+    .top {
+      text-align: right;
+      margin: 0 0 10px 0;
+    }
+    .down {
+      .down_left {
+        .down_leftTix {
+          text-align: center;
+          font-size: 16px;
+          font-weight: bold;
+          border-bottom: 1px solid #409eff;
+          padding: 10px 0;
+        }
+        .text {
+          padding: 10px 0;
+          border-bottom: 1px dashed #333;
+          .left {
+            text-align: left;
+          }
+          .right {
+            img {
+              width: 200px;
+              height: 200px;
+              border: 1px solid #ccc;
+            }
+          }
+          .desc {
+            margin: 10px 0 0 0;
+          }
+        }
+      }
+      .down_right {
+        .down_rightTix {
+          text-align: center;
+          font-size: 16px;
+          font-weight: bold;
+          border-bottom: 1px solid #409eff;
+          padding: 10px 0;
+          margin: 0 0 10px 0;
+          .el-button {
+            margin: 0 0 0 5px;
+          }
+        }
+        .down_rightInfo {
+          #demo {
+            width: 100%;
+            height: 930px;
+            border: 1px solid #ff0000;
+          }
+        }
+      }
+      .common {
+        border: 1px solid #000;
+        padding: 10px;
+        border-radius: 5px;
+        width: 49.5%;
+        margin: 0 15px 0 0;
+      }
+      .common:nth-child(2) {
+        margin: 0;
+      }
+      .file {
+        .file_title {
+          font-size: 16px;
+          font-weight: bold;
+          margin: 10px 0 0 0;
+          // text-align: center;
+        }
+      }
+    }
+  }
+}
+.main:hover {
+  box-shadow: 0 0 5px #409eff;
+}
+</style>

+ 60 - 1
src/views/adminCenter/company/cashing/coupons/detail.vue

@@ -31,7 +31,39 @@
                   <span style="padding: 0 5px">元</span>
                 </el-form-item>
               </el-col>
-
+              <el-col :span="24" class="file">
+                <el-col :span="24" class="file_title"> 相关附件 </el-col>
+                <el-col :span="24" class="file_info">
+                  <el-col :span="24" class="info_tit">1.创新券服务合同 </el-col>
+                  <el-col :span="24" class="info_upl">
+                    <e-upload url="/files/cysci/contract/upload" :limit="1" v-model="form.contract" type="text"></e-upload>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="file_info">
+                  <el-col :span="24" class="info_tit">2.官方受理通知书 </el-col>
+                  <el-col :span="24" class="info_upl">
+                    <e-upload url="/files/cysci/accept/upload" :limit="1" v-model="form.accept" type="text"></e-upload>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="file_info">
+                  <el-col :span="24" class="info_tit">3.官方缴费证明 </el-col>
+                  <el-col :span="24" class="info_upl">
+                    <e-upload url="/files/cysci/cost/upload" :limit="1" v-model="form.cost" type="text"></e-upload>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="file_info">
+                  <el-col :span="24" class="info_tit">4.服务结果证明 </el-col>
+                  <el-col :span="24" class="info_upl">
+                    <e-upload url="/files/cysci/result/upload" :limit="1" v-model="form.result" type="text"></e-upload>
+                  </el-col>
+                </el-col>
+                <el-col :span="24" class="file_info">
+                  <el-col :span="24" class="info_tit">5.其他能够证明服务真实发生的材料 </el-col>
+                  <el-col :span="24" class="info_upl">
+                    <e-upload url="/files/cysci/result_else/upload" :limit="1" v-model="form.result_else" type="text"></e-upload>
+                  </el-col>
+                </el-col>
+              </el-col>
               <el-col :span="24" class="formBtn">
                 <el-button type="danger" size="mini" @click="back">取消申领</el-button>
                 <el-button type="primary" size="mini" @click="onSubmit('form')">提交资料</el-button>
@@ -111,6 +143,11 @@ export default {
           company_name: res.data.name,
           mechanism_id: res.data.mechanism_id,
           mechanism_name: res.data.mechanism.name,
+          contract: [],
+          accept: [],
+          cost: [],
+          result: [],
+          result_else: [],
         };
         this.$set(this, `form`, data);
       }
@@ -180,6 +217,28 @@ export default {
       text-align: center;
       padding: 15px 0;
     }
+    .file {
+      .file_title {
+        font-size: 16px;
+        font-weight: bold;
+        padding: 0 16px;
+        margin: 0 0 10px 0;
+      }
+      .file_info {
+        border-bottom: 1px dashed #ccc;
+        margin: 0 0 10px 0;
+        padding: 0 0 15px 0;
+        .info_tit {
+          font-size: 14px;
+          color: #666;
+          padding: 0 30px;
+          margin: 0 0 10px 0;
+        }
+        .info_upl {
+          padding: 0 30px;
+        }
+      }
+    }
   }
 }
 .main:hover {

+ 0 - 320
src/views/adminCenter/company/备份/coupons/detail.vue

@@ -1,320 +0,0 @@
-<template>
-  <div id="detail">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="one">
-          <el-col :span="24" class="top">
-            <el-button type="primary" size="mini" @click="back">返回</el-button>
-          </el-col>
-          <el-col :span="24" class="down">
-            <el-form :model="form" :rules="rules" ref="form" label-width="100px">
-              <el-col :span="24" class="text">
-                <el-form-item label="申请单位" prop="company">
-                  {{ form.company }}
-                  <!-- <el-input v-model="form.company" placeholder="请输入申请单位"></el-input> -->
-                </el-form-item>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-form-item label="申请人" prop="apply_personal">
-                  <el-input v-model="form.apply_personal" placeholder="请输入申请人"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-form-item label="联系电话" prop="phone">
-                  <el-input v-model="form.phone" placeholder="请输入联系电话"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-form-item label="法人复印件" prop="qyfr">
-                  <e-upload url="/files/cysci/qyfr_file/upload" :limit="1" v-model="form.qyfr" type="text"></e-upload>
-                </el-form-item>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-form-item label="企业营业执照" prop="yyzz">
-                  <e-upload url="/files/cysci/yyzz_file/upload" :limit="1" v-model="form.yyzz" type="text"></e-upload>
-                </el-form-item>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-form-item label="企业利润表" prop="qylr">
-                  <e-upload url="/files/cysci/qylr_file/upload" :limit="1" v-model="form.qylr" type="text"></e-upload>
-                </el-form-item>
-              </el-col>
-              <el-col :span="24" class="formBtn" v-if="form.status == ''">
-                <el-button type="danger" size="mini" @click="back">取消申领</el-button>
-                <el-button type="primary" size="mini" @click="onSubmit('form')">提交资料</el-button>
-              </el-col>
-            </el-form>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-const _ = require('lodash');
-const moment = require('moment');
-const { policyType, policyStatus } = require('@common/dict/index');
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: policyApply } = createNamespacedHelpers('policyApply');
-moment.locale('zh-cn');
-export default {
-  name: 'detail',
-  props: {},
-  components: {},
-  data: function () {
-    return {
-      form: {
-        qyfr: [],
-        yyzz: [],
-        qylr: [],
-        status: '',
-      },
-      rules: {},
-      typeList: policyType,
-      statusList: policyStatus,
-      logo: require('@a/jszx1.png'),
-    };
-  },
-  created() {
-    if (this.user && this.user.name) this.form.company = this.user.name;
-    if (this.policy_id) this.form.policy_id = this.policy_id;
-    if (this.id) this.search();
-  },
-  methods: {
-    ...policyApply(['create']),
-    onSubmit(formName) {
-      this.$refs[formName].validate(async (valid) => {
-        if (valid) {
-          let data = this.form;
-          data.status = '0';
-          data.user_id = this.user.id;
-          let res = await this.create(data);
-          if (this.$checkRes(res)) {
-            this.$message({
-              message: '创新券申领成功,请耐心等待结果',
-              type: 'success',
-            });
-            this.back();
-          }
-        } else {
-          console.log('error submit!!');
-          return false;
-        }
-      });
-    },
-    back() {
-      this.$router.push({ path: '/adminCenter/company/coupons' });
-    },
-    // 整理时间
-    getDate(date, type) {
-      if (type == '1') {
-        let newDate = moment(date).format('LL');
-        return newDate;
-      } else if (type == '2') {
-        let newDate = moment(date).endOf('year').format('LL');
-        return newDate;
-      } else if (type == '3') {
-        let newDate = moment().valueOf();
-        return newDate;
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-    policy_id() {
-      return this.$route.query.policy_id;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  watch: {
-    test: {
-      deep: true,
-      immediate: true,
-      handler(val) {},
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  border-radius: 10px;
-  box-shadow: 0 0 5px #cccccc;
-  padding: 20px;
-  .one {
-    .top {
-      text-align: right;
-      margin: 0 0 15px 0;
-    }
-    .down {
-      .text {
-        border-bottom: 1px dashed #333;
-      }
-      /deep/.el-form-item {
-        padding: 20px 10px;
-        margin: 0;
-      }
-      /deep/.el-input__inner {
-        border: 1px solid #333;
-      }
-      .formBtn {
-        text-align: center;
-        padding: 15px 0;
-      }
-    }
-    .coupons {
-      height: 160px;
-      line-height: normal;
-      width: 35%;
-      border: 1px solid #f1f1f1;
-      background: url('~@a/1.jpg');
-      background-repeat: no-repeat;
-      background-size: 100% 100%;
-      .coupons_1 {
-        position: relative;
-        height: 158px;
-        .coupons_1one {
-          padding: 0 30px;
-          .image {
-            .el-image {
-              width: 50px;
-              height: 50px;
-            }
-          }
-          .title {
-            font-size: 20px;
-            height: 50px;
-            line-height: 50px;
-            color: #fff;
-            font-weight: bold;
-            font-family: cursive;
-          }
-        }
-        .coupons_1two {
-          text-align: center;
-          font-size: 35px;
-          color: #fff;
-          font-weight: bold;
-          letter-spacing: 10px;
-          font-family: cursive;
-        }
-        .coupons_1thr {
-          position: absolute;
-          bottom: 0;
-          p {
-            text-align: center;
-            padding: 2px 0;
-          }
-          p:nth-child(1) {
-            font-size: 14px;
-            font-weight: bold;
-          }
-          p:nth-child(2) {
-            font-size: 14px;
-            font-weight: bold;
-            span {
-              color: #ff0000;
-            }
-          }
-        }
-      }
-      .coupons_2 {
-        border-left: 1px dashed #00fa9a;
-        height: 158px;
-        text-align: center;
-        p:nth-child(1) {
-          font-weight: bold;
-          font-size: 18px;
-          color: #fff;
-          writing-mode: vertical-rl;
-          padding: 12px 42% 5px 42%;
-          text-align: center;
-        }
-        p:nth-child(2) {
-          span {
-            background: #008000;
-            border-radius: 360px;
-            padding: 10px 0px;
-            font-weight: bold;
-            font-size: 18px;
-            color: #ffd700;
-            display: inline-block;
-            width: 80%;
-            font-family: monospace;
-          }
-        }
-      }
-    }
-    // .coupons {
-    //   height: 250px;
-    //   border: 5px solid #008000;
-    //   line-height: normal;
-    //   padding: 5px;
-    //   background: #b3e2be5f;
-    //   .coupons_1 {
-    //     .image {
-    //       text-align: center;
-    //       .el-image {
-    //         width: 60px;
-    //         height: 60px;
-    //       }
-    //     }
-    //     .title {
-    //       height: 60px;
-    //       line-height: 60px;
-    //       font-size: 32px;
-    //       font-family: cursive;
-    //       color: #000;
-
-    //       font-weight: bold;
-    //       letter-spacing: 3px;
-    //     }
-    //   }
-    //   .coupons_2 {
-    //     p {
-    //       text-align: center;
-    //     }
-    //     p:nth-child(1) {
-    //       font-size: 60px;
-    //       font-family: cursive;
-    //       -webkit-text-stroke: 1px #000;
-    //       -webkit-text-fill-color: #cccccc5f;
-    //     }
-    //     p:nth-child(2) {
-    //       font-size: 40px;
-    //       font-family: cursive;
-    //       -webkit-text-stroke: 1px #000;
-    //       -webkit-text-fill-color: #cccccc5f;
-    //       letter-spacing: 15px;
-    //     }
-    //   }
-    //   .coupons_3 {
-    //     p {
-    //       text-align: center;
-    //       padding: 2px 0;
-    //     }
-    //     p:nth-child(1) {
-    //       font-size: 16px;
-    //       font-weight: bold;
-    //     }
-    //     p:nth-child(2) {
-    //       font-size: 16px;
-    //       font-weight: bold;
-    //       span {
-    //         color: #ff0000;
-    //       }
-    //     }
-    //   }
-    // }
-  }
-}
-.main:hover {
-  box-shadow: 0 0 5px #409eff;
-}
-</style>

+ 0 - 116
src/views/adminCenter/company/备份/coupons/index.vue

@@ -1,116 +0,0 @@
-<template>
-  <div id="index">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="one">
-          <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search" @apply="toView">
-            <template #options="{ item }">
-              <template v-if="item.prop === 'type'">
-                <el-option v-for="(i, index) in typeList" :key="`type-${index}`" :label="i" :value="i"></el-option>
-              </template>
-            </template>
-            <template #custom="{ item, row }">
-              <template v-if="item.prop === 'name'">
-                <el-link type="primary" @click="dialogDetail(row)">{{ row[item.prop] }}</el-link>
-              </template>
-            </template>
-          </data-table>
-        </el-col>
-      </el-col>
-    </el-row>
-    <el-dialog :title="detail.name" center :visible.sync="dialog" width="80%" :destroy-on-close="true" @close="toClose">
-      <info :form="detail" />
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import info from './info.vue';
-const { policyType, policyStatus } = require('@common/dict/index');
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: policy } = createNamespacedHelpers('policy');
-export default {
-  name: 'index',
-  props: {},
-  components: { info },
-  data: function () {
-    return {
-      list: [],
-      total: 0,
-      opera: [
-        {
-          label: '申请',
-          method: 'apply',
-        },
-      ],
-      fields: [
-        { label: '创新券类型', prop: 'type', filter: 'select' },
-        { label: '创新券名称', prop: 'name', filter: 'input', custom: true },
-        { label: '折扣类型', prop: 'discount_type' },
-        { label: '使用服务类型', prop: 'use_type' },
-        { label: '期限', prop: 'limit_time' },
-        { label: '补贴比例', prop: 'scale' },
-        { label: '券总额度', prop: 'total_allowance' },
-      ],
-      // 创新券类型
-      typeList: policyType,
-      detail: {},
-      dialog: false,
-    };
-  },
-  created() {
-    this.search();
-  },
-  methods: {
-    ...policy(['query', 'delete']),
-    async search({ skip = 0, limit = 10, ...info } = {}) {
-      info.status = '1';
-      const res = await this.query({ skip, limit, ...info });
-      if (this.$checkRes(res)) {
-        this.$set(this, `list`, res.data);
-        this.$set(this, `total`, res.total);
-      }
-    },
-    // 申请创新券
-    toAdd() {
-      this.$router.push({ path: '/adminCenter/company/coupons/detail' });
-    },
-    // 查看创新券
-    toView({ data }) {
-      this.$router.push({ path: '/adminCenter/company/coupons/detail', query: { policy_id: data._id } });
-    },
-    dialogDetail(row) {
-      this.$set(this, 'detail', row);
-      this.dialog = true;
-    },
-    toClose() {
-      this.dialog = false;
-      this.detail = {};
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  watch: {
-    test: {
-      deep: true,
-      immediate: true,
-      handler(val) {},
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  border-radius: 10px;
-  box-shadow: 0 0 5px #cccccc;
-  padding: 20px;
-}
-.main:hover {
-  box-shadow: 0 0 5px #409eff;
-}
-</style>

+ 0 - 129
src/views/adminCenter/company/备份/coupons/info.vue

@@ -1,129 +0,0 @@
-<template>
-  <div id="info">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="one">
-          <el-col :span="12" class="text">
-            <el-col :span="4" class="left">创新券名称</el-col>
-            <el-col :span="20" class="left">{{ form.name || '暂无' }} </el-col>
-          </el-col>
-          <el-col :span="12" class="text">
-            <el-col :span="4" class="left">创新券类型</el-col>
-            <el-col :span="20" class="left">{{ form.type || '暂无' }} </el-col>
-          </el-col>
-          <el-col :span="12" class="text">
-            <el-col :span="4" class="left">折扣类型</el-col>
-            <el-col :span="20" class="left">{{ form.discount_type || '暂无' }} </el-col>
-          </el-col>
-          <el-col :span="12" class="text">
-            <el-col :span="4" class="left">使用服务类型</el-col>
-            <el-col :span="20" class="left">{{ form.use_type || '暂无' }} </el-col>
-          </el-col>
-          <el-col :span="12" class="text">
-            <el-col :span="4" class="left">所属分类</el-col>
-            <el-col :span="20" class="left">{{ form.classify || '暂无' }} </el-col>
-          </el-col>
-          <el-col :span="12" class="text">
-            <el-col :span="4" class="left">期限</el-col>
-            <el-col :span="20" class="left">{{ form.limit_time || '暂无' }} 个/月 </el-col>
-          </el-col>
-          <el-col :span="12" class="text">
-            <el-col :span="4" class="left">补贴比例</el-col>
-            <el-col :span="20" class="left">{{ form.scale || '暂无' }} %</el-col>
-          </el-col>
-          <el-col :span="12" class="text">
-            <el-col :span="4" class="left">面额</el-col>
-            <el-col :span="20" class="left">{{ form.allowance || '暂无' }} 元</el-col>
-          </el-col>
-          <el-col :span="12" class="text">
-            <el-col :span="4" class="left">券总额度</el-col>
-            <el-col :span="20" class="left">{{ form.total_allowance || '暂无' }} 元</el-col>
-          </el-col>
-          <el-col :span="12" class="text">
-            <el-col :span="4" class="left">最大额度</el-col>
-            <el-col :span="20" class="left">{{ form.unit_allowance || '暂无' }} 元</el-col>
-          </el-col>
-          <el-col :span="24" class="langText">
-            <el-col :span="2" class="left">描述</el-col>
-            <el-col :span="22" class="left">{{ form.desc || '暂无' }} </el-col>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-export default {
-  name: 'info',
-  props: ['form'],
-  components: {},
-  data: function () {
-    return {};
-  },
-  created() {},
-  methods: {},
-  computed: {
-    ...mapState(['user', 'menuParams']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  .one {
-    border: 1px solid #ccc;
-    border-radius: 10px;
-    padding: 20px;
-    .text {
-      .left {
-        padding: 10px;
-        border: 1px solid #333;
-      }
-      .left:nth-child(1) {
-        text-align: center;
-      }
-    }
-    .langText {
-      .left {
-        height: 106px;
-        overflow: hidden;
-        padding: 10px;
-        border: 1px solid #333;
-      }
-      .left:nth-child(1) {
-        text-align: center;
-        line-height: 75px;
-      }
-    }
-    .image {
-      .left {
-        padding: 10px;
-        border: 1px solid #333;
-        .el-image {
-          width: 150px;
-          height: 124px;
-          margin: 0 10px 0 0;
-        }
-      }
-      .left:nth-child(1) {
-        height: 150px;
-        overflow: hidden;
-        text-align: center;
-        line-height: 130px;
-      }
-    }
-    .btn {
-      text-align: center;
-      padding: 15px 0;
-    }
-  }
-}
-</style>

+ 0 - 190
src/views/adminCenter/company/备份/policy_apply/apply_info.vue

@@ -1,190 +0,0 @@
-<template>
-  <div id="apply_check">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="one">
-          <el-col :span="24" class="top">
-            <el-button type="primary" size="mini" @click="back">返回</el-button>
-          </el-col>
-          <el-col :span="24" class="down">
-            <el-form :model="form" ref="form" label-width="100px">
-              <el-col :span="24" class="text">
-                <el-col :span="2" class="left"> 所属创新券</el-col>
-                <el-col :span="22" class="right">
-                  {{ form.policy.name }}
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-col :span="2" class="left"> 申请单位</el-col>
-                <el-col :span="22" class="right">
-                  {{ form.company }}
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-col :span="2" class="left"> 申请人</el-col>
-                <el-col :span="22" class="right">
-                  {{ form.apply_personal }}
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-col :span="2" class="left"> 联系电话</el-col>
-                <el-col :span="22" class="right">
-                  {{ form.phone }}
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-col :span="2" class="left"> 法人复印件:</el-col>
-                <el-col :span="20" class="right">
-                  <el-col :span="4" v-for="(i, index) in form.qyfr" :key="`medium_material-${index}`">
-                    <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
-                    <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
-                  </el-col>
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-col :span="2" class="left"> 企业营业执照:</el-col>
-                <el-col :span="20" class="right">
-                  <el-col :span="4" v-for="(i, index) in form.yyzz" :key="`medium_material-${index}`">
-                    <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
-                    <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
-                  </el-col>
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-col :span="2" class="left"> 企业利润表:</el-col>
-                <el-col :span="20" class="right">
-                  <el-col :span="4" v-for="(i, index) in form.qylr" :key="`medium_material-${index}`">
-                    <img v-if="isImg(i.url)" :src="i.url" width="150px" height="150px" @click="toOpen(i.url)" />
-                    <el-link v-else type="primary" @click="toOpen(i.url)"> <i class="el-icon-view"></i> {{ i.name }} </el-link>
-                  </el-col>
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-col :span="2" class="left"> 审核状态:</el-col>
-                <el-col :span="22" class="right">
-                  {{ getStatus(form.status) }}
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-col :span="24" class="left"> 审核意见:</el-col>
-                <el-col :span="24" class="right desc">
-                  <el-timeline>
-                    <el-timeline-item v-for="(item, index) in form.record" :key="index" :timestamp="item.desc_time" placement="top">
-                      <el-card>
-                        <p>审核状态:{{ getStatus(item.status) || '暂无' }}</p>
-                        <p>审核意见:{{ item.desc || '暂无' }}</p>
-                      </el-card>
-                    </el-timeline-item>
-                  </el-timeline>
-                </el-col>
-              </el-col>
-            </el-form>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-const _ = require('lodash');
-const moment = require('moment');
-const { policyStatus } = require('@common/dict/index');
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: policyApply } = createNamespacedHelpers('policyApply');
-export default {
-  name: 'apply_check',
-  props: {},
-  components: {},
-  data: function () {
-    return {
-      form: {
-        policy: {},
-      },
-      imgList: ['jpg', 'jpeg', 'png', 'bmp', 'gif'],
-    };
-  },
-  created() {
-    if (this.id) this.search();
-  },
-  methods: {
-    ...policyApply(['fetch', 'update']),
-    async search() {
-      let res = await this.fetch(this.id);
-      if (this.$checkRes(res)) {
-        this.$set(this, `form`, res.data);
-      }
-    },
-    back() {
-      this.$router.push({ path: '/adminCenter/company/policyApply/index' });
-    },
-    isImg(url) {
-      const arr = url.split('.');
-      const suffix = _.last(arr);
-      return this.imgList.includes(suffix);
-    },
-    toOpen(url) {
-      window.open(url);
-    },
-    getStatus(i) {
-      const r = policyStatus.find((f) => f.value === i);
-      console.log(r);
-      if (r) return r.label;
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  watch: {
-    test: {
-      deep: true,
-      immediate: true,
-      handler(val) {},
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  border-radius: 10px;
-  box-shadow: 0 0 5px #cccccc;
-  padding: 20px;
-  .top {
-    text-align: right;
-    margin: 0 0 10px 0;
-  }
-  .down {
-    .text {
-      padding: 10px 0;
-      border-bottom: 1px dashed #333;
-      .left {
-        text-align: left;
-      }
-      .right {
-        img {
-          width: 200px;
-          height: 200px;
-          border: 1px solid #ccc;
-        }
-      }
-      .desc {
-        margin: 10px 0 0 0;
-      }
-    }
-    .formBtn {
-      text-align: center;
-      padding: 10px 0;
-    }
-  }
-}
-.main:hover {
-  box-shadow: 0 0 5px #409eff;
-}
-</style>

+ 0 - 92
src/views/adminCenter/company/备份/policy_apply/index.vue

@@ -1,92 +0,0 @@
-<template>
-  <div id="list">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="one">
-          <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search" @view="toView" @pay="toPay"> </data-table>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-const { policyStatus } = require('@common/dict/index');
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: policyApply } = createNamespacedHelpers('policyApply');
-export default {
-  name: 'list',
-  props: {},
-  components: {},
-  data: function () {
-    return {
-      list: [],
-      total: 0,
-      opera: [
-        {
-          label: '查看',
-          method: 'view',
-        },
-        {
-          label: '我要兑付',
-          method: 'pay',
-          display: (i) => i.status === '1',
-        },
-      ],
-      fields: [
-        { label: '所属创新券', prop: 'policy.name' },
-        { label: '申领企业', prop: 'company', filter: 'input' },
-        { label: '联系人', prop: 'apply_personal' },
-        { label: '联系电话', prop: 'phone' },
-        {
-          label: '审核状态',
-          prop: 'status',
-          format: (i) => {
-            const r = policyStatus.find((f) => f.value === i);
-            if (r) return r.label;
-            else return '';
-          },
-        },
-      ],
-    };
-  },
-  created() {
-    this.search();
-  },
-  methods: {
-    ...policyApply(['query', 'update']),
-    async search({ skip = 0, limit = 10, ...info } = {}) {
-      info.user_id = this.user.id;
-      const res = await this.query({ skip, limit, ...info });
-      if (this.$checkRes(res)) {
-        this.$set(this, `list`, res.data);
-        this.$set(this, `total`, res.total);
-      }
-    },
-    // 查看
-    toView({ data }) {
-      this.$router.push({ path: '/adminCenter/company/policyApply/info', query: { id: data._id } });
-    },
-    toPay({ data }) {
-      this.$router.push({ path: '/adminCenter/company/policyApply/order', query: { id: data._id } });
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  border-radius: 10px;
-  box-shadow: 0 0 5px #cccccc;
-  padding: 20px;
-}
-.main:hover {
-  box-shadow: 0 0 5px #409eff;
-}
-</style>

+ 0 - 222
src/views/adminCenter/company/备份/policy_apply/order_apply.vue

@@ -1,222 +0,0 @@
-<template>
-  <div id="order_apply">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="one">
-          <el-col :span="24" class="top">
-            <el-button type="primary" size="mini" @click="back">返回</el-button>
-          </el-col>
-          <el-col :span="24" class="down">
-            <el-form :model="form" ref="form" label-width="100px" :rules="rules">
-              <el-col :span="24" class="text">
-                <el-form-item label="需求描述" prop="req_desc">
-                  <el-input v-model="form.req_desc" type="textarea" maxlength="300" :autosize="{ minRows: 4, maxRows: 6 }" show-word-limit></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12" class="text">
-                <el-form-item label="订单名称" prop="name">
-                  <el-input v-model="form.name"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12" class="text">
-                <!-- mechanism_id是服务端要的 -->
-                <el-form-item label="服务机构" prop="mechanism_name">
-                  <el-input v-model="form.mechanism_name" :disabled="true"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12" class="text">
-                <el-form-item label="联系人" prop="mechanism_person">
-                  <el-input v-model="form.mechanism_person"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12" class="text">
-                <el-form-item label="联系电话" prop="mechanism_mobile">
-                  <el-input v-model="form.mechanism_mobile"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12" class="text">
-                <!-- user_id是要的 -->
-                <el-form-item label="需方机构名称" prop="user_name">
-                  <el-input v-model="form.user_name" :disabled="true"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12" class="text">
-                <el-form-item label="联系人" prop="person">
-                  <el-input v-model="form.person"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12" class="text">
-                <el-form-item label="联系电话" prop="phone">
-                  <el-input v-model="form.phone"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12" class="text">
-                <el-form-item label="电子邮箱" prop="email">
-                  <el-input v-model="form.email"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-form-item label="订单总金额" prop="money">
-                  <el-input v-model.number="form.money" type="number" style="width: 98%"></el-input>
-                  <span style="padding: 0 5px">元</span>
-                </el-form-item>
-              </el-col>
-              <el-col :span="24" class="text">
-                <el-form-item label="备注" prop="remark">
-                  <el-input v-model="form.remark" type="textarea" maxlength="300" :autosize="{ minRows: 4, maxRows: 6 }" show-word-limit></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="24" class="formBtn">
-                <el-button type="danger" size="mini" @click="back">取消添加</el-button>
-                <el-button type="primary" size="mini" @click="onSubmit('form')">提交保存</el-button>
-              </el-col>
-            </el-form>
-          </el-col>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-const _ = require('lodash');
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: policyApply } = createNamespacedHelpers('policyApply');
-const { mapActions: policyOrder } = createNamespacedHelpers('policyOrder');
-export default {
-  name: 'order_apply',
-  props: {},
-  components: {},
-  data: function () {
-    return {
-      form: {},
-      apply: {},
-      rules: {
-        req_desc: [{ required: true, message: '请填写需求描述', trigger: 'blur' }],
-        name: [{ required: true, message: '请填写订单名称', trigger: 'blur' }],
-        mechanism_person: [{ required: true, message: '请填写服务机构联系人', trigger: 'blur' }],
-        mechanism_mobile: [{ required: true, message: '请填写服务机构联系电话', trigger: 'blur' }],
-        person: [{ required: true, message: '请填写需方机构联系人', trigger: 'blur' }],
-        phone: [{ required: true, message: '请填写需方机构联系电话', trigger: 'blur' }],
-        email: [{ required: true, message: '请填写需方机构电子邮箱', trigger: 'blur' }],
-        money: [
-          { required: true, message: '请填写订单总金额', trigger: 'blur' },
-          { type: 'number', message: '请填写订单总金额', trigger: 'blur' },
-        ],
-        remark: [{ required: true, message: '请填写备注', trigger: 'blur' }],
-      },
-    };
-  },
-  created() {
-    this.getApply();
-  },
-  methods: {
-    ...policyApply(['fetch']),
-    ...policyOrder(['create']),
-    async getApply() {
-      const res = await this.fetch(this.id);
-      if (this.$checkRes(res)) {
-        this.$set(this, `apply`, res.data);
-        // 整理数据
-        const policy = _.get(res.data, 'policy', {});
-        const user = _.get(policy, 'user', {});
-        let obj = {};
-        // 服务机构数据
-        const uArr = [
-          { key: '_id', prop: 'mechanism_id' },
-          { key: 'deptname', prop: 'mechanism_person' },
-          { key: 'phone', prop: 'mechanism_mobile' },
-          { key: 'deptname', prop: 'mechanism_name' },
-        ];
-        obj = this.setObj(user, uArr);
-        // 用户数据
-        const aArr = [
-          { key: '_id', prop: 'user_id' },
-          { key: 'name', prop: 'user_name' },
-          { key: 'companyperson', prop: 'person' },
-          { key: 'phone', prop: 'phone' },
-          { key: 'email', prop: 'email' },
-        ];
-        obj = { ...obj, ...this.setObj(this.user, aArr) };
-        obj.apply_id = this.id;
-        obj.policy_user_type = _.get(policy, 'use_type');
-        obj.policy_id = _.get(policy, '_id');
-        this.$set(this, 'form', obj);
-      }
-    },
-    onSubmit(formName) {
-      this.$refs[formName].validate((valid) => {
-        if (valid) {
-          this.toOrder();
-        } else {
-          console.log('error submit!!');
-          return false;
-        }
-      });
-    },
-    async toOrder() {
-      const dup = _.cloneDeep(this.form);
-      const res = await this.create(dup);
-      if (this.$checkRes(res, '订单创建成功', res.errmsg || '订单创建失败')) {
-        this.back();
-      }
-    },
-    back() {
-      this.$router.push({ path: '/adminCenter/company/policyApply/index' });
-    },
-    setObj(object, list) {
-      const obj = {};
-      for (const i of list) {
-        const { key, prop } = i;
-        obj[prop] = object[key];
-      }
-      return obj;
-    },
-  },
-  computed: {
-    ...mapState(['user', 'menuParams']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-    id() {
-      return this.$route.query.id;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  border-radius: 10px;
-  box-shadow: 0 0 5px #cccccc;
-  padding: 20px;
-  .one {
-    .top {
-      text-align: right;
-      margin: 0 0 15px 0;
-    }
-    .down {
-      .text {
-        border-bottom: 1px dashed #333;
-      }
-      /deep/.el-form-item {
-        padding: 20px 10px;
-        margin: 0;
-      }
-      /deep/.el-input__inner {
-        border: 1px solid #333;
-      }
-      .formBtn {
-        text-align: center;
-        padding: 15px 0;
-      }
-    }
-  }
-}
-.main:hover {
-  box-shadow: 0 0 5px #409eff;
-}
-</style>

+ 0 - 88
src/views/adminCenter/company/备份/policy_apply/order_index.vue

@@ -1,88 +0,0 @@
-<template>
-  <div id="order_info">
-    <el-row>
-      <el-col :span="24" class="main">
-        <el-col :span="24" class="one">
-          <data-table :fields="fields" :opera="opera" :data="list" :total="total" @query="search"> </data-table>
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-
-<script>
-const moment = require('moment');
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: policyOrder } = createNamespacedHelpers('policyOrder');
-export default {
-  name: 'order_info',
-  props: {},
-  components: {},
-  data: function () {
-    return {
-      list: [],
-      total: 0,
-      opera: [],
-      fields: [
-        { label: '订单号', prop: 'no', filter: 'input' },
-        { label: '订单名称', prop: 'name', filter: 'input' },
-        { label: '服务类型', prop: 'policy_user_type' },
-        { label: '所属单位', prop: 'mechanism_person' },
-        { label: '购买单位', prop: 'user_name' },
-        { label: '订单总金额', prop: 'money' },
-        { label: '创新券抵扣金额', prop: 'allowance' },
-        { label: '应收金额', prop: 'total' },
-        { label: '提交时间', prop: 'meta.updateAt', format: (i) => moment(i).format('YYYY-MM-DD HH:mm:ss') },
-        {
-          label: '信息状态',
-          prop: 'status',
-          format: (item) => {
-            return item === '0' ? '待确认' : item === '1' ? '订单已确认' : item === '2' ? '订单已取消' : '未识别';
-          },
-        },
-      ],
-    };
-  },
-  created() {
-    console.log(this.user);
-    this.search();
-  },
-  methods: {
-    ...policyOrder(['query', 'update']),
-    async search({ skip = 0, limit = 10, ...info } = {}) {
-      info.user_id = this.user.id;
-      const res = await this.query({ skip, limit, ...info });
-      if (this.$checkRes(res)) {
-        this.$set(this, `list`, res.data);
-        this.$set(this, `total`, res.total);
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  watch: {
-    type: {
-      deep: true,
-      immediate: true,
-      handler(val) {
-        this.search();
-      },
-    },
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.main {
-  border-radius: 10px;
-  box-shadow: 0 0 5px #cccccc;
-  padding: 20px;
-}
-.main:hover {
-  box-shadow: 0 0 5px #409eff;
-}
-</style>

+ 0 - 15
src/views/adminCenter/备份/ticket/detail.vue

@@ -48,21 +48,6 @@
                   </el-col>
                 </el-col>
               </el-col>
-              <!-- <el-col :span="24" class="text" v-if="dataStatus == '0'">
-                <el-col :span="2" class="left"> 资质审核:</el-col>
-                <el-col :span="20" class="right">
-                  <el-radio-group v-model="form.status">
-                    <el-radio label="1">通过</el-radio>
-                    <el-radio label="-1">拒绝</el-radio>
-                  </el-radio-group>
-                </el-col>
-              </el-col>
-              <el-col :span="24" class="text" v-if="dataStatus === '0' || dataStatus === '3'">
-                <el-col :span="2" class="left"> 审核意见:</el-col>
-                <el-col :span="22" class="right">
-                  <el-input v-model="form.desc" placeholder="请填写审核意见" type="textarea" :autosize="{ maxRows: 5, minRows: 3 }"></el-input>
-                </el-col>
-              </el-col> -->
               <el-col :span="24" class="formBtn">
                 <el-button type="danger" size="mini" @click="back">取消保存</el-button>
                 <el-button type="primary" size="mini" v-if="dataStatus === '0'" @click="onSubmit()">提交保存</el-button>