Ver código fonte

预览 下载功能(下载未成)

qinpeng 2 anos atrás
pai
commit
68b2250938

+ 215 - 82
package-lock.json

@@ -1016,7 +1016,6 @@
       "version": "7.13.10",
       "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.13.10.tgz?cache=0&sync_timestamp=1615242998622&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.13.10.tgz",
       "integrity": "sha1-R9QqV7YJX0Ro2kQDiP262L6/DX0=",
-      "dev": true,
       "requires": {
         "regenerator-runtime": "^0.13.4"
       }
@@ -1393,6 +1392,12 @@
       "integrity": "sha1-35w8izGiR+wxXmmWVmvjFx30s7E=",
       "dev": true
     },
+    "@types/raf": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmmirror.com/@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?cache=0&sync_timestamp=1613380995775&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Frange-parser%2Fdownload%2F%40types%2Frange-parser-1.2.3.tgz",
@@ -1786,16 +1791,6 @@
           "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
           "dev": true
         },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
         "cacache": {
           "version": "13.0.1",
           "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz",
@@ -1822,53 +1817,6 @@
             "unique-filename": "^1.1.1"
           }
         },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true,
-          "optional": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true,
-          "optional": true
-        },
-        "loader-utils": {
-          "version": "2.0.4",
-          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
-          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^2.1.2"
-          }
-        },
         "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=1598275560784&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz",
@@ -1885,16 +1833,6 @@
             "minipass": "^3.1.1"
           }
         },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
         "terser-webpack-plugin": {
           "version": "2.3.8",
           "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.8.tgz",
@@ -1911,18 +1849,6 @@
             "terser": "^4.6.12",
             "webpack-sources": "^1.4.3"
           }
-        },
-        "vue-loader-v16": {
-          "version": "npm:vue-loader@16.8.3",
-          "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
-          "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "chalk": "^4.1.0",
-            "hash-sum": "^2.0.0",
-            "loader-utils": "^2.0.0"
-          }
         }
       }
     },
@@ -2726,6 +2652,11 @@
         }
       }
     },
+    "base64-arraybuffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+      "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
+    },
     "base64-js": {
       "version": "1.5.1",
       "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.5.1.tgz",
@@ -3018,6 +2949,11 @@
         "node-releases": "^1.1.71"
       }
     },
+    "btoa": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/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?cache=0&sync_timestamp=1606098184526&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbuffer%2Fdownload%2Fbuffer-4.9.2.tgz",
@@ -3209,6 +3145,22 @@
       "integrity": "sha1-vkDVKLsQJy66ADeoitxABUgQ+OI=",
       "dev": true
     },
+    "canvg": {
+      "version": "3.0.10",
+      "resolved": "https://registry.npmmirror.com/canvg/-/canvg-3.0.10.tgz",
+      "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==",
+      "optional": true,
+      "requires": {
+        "@babel/runtime": "^7.12.5",
+        "@types/raf": "^3.4.0",
+        "core-js": "^3.8.3",
+        "raf": "^3.4.1",
+        "regenerator-runtime": "^0.13.7",
+        "rgbcolor": "^1.0.1",
+        "stackblur-canvas": "^2.0.0",
+        "svg-pathdata": "^6.0.3"
+      }
+    },
     "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",
@@ -4285,6 +4237,14 @@
         "timsort": "^0.3.0"
       }
     },
+    "css-line-break": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
+      "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+      "requires": {
+        "utrie": "^1.0.2"
+      }
+    },
     "css-loader": {
       "version": "3.6.0",
       "resolved": "https://registry.nlark.com/css-loader/download/css-loader-3.6.0.tgz",
@@ -4895,6 +4855,12 @@
         "domelementtype": "1"
       }
     },
+    "dompurify": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-2.4.1.tgz",
+      "integrity": "sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA==",
+      "optional": true
+    },
     "domready": {
       "version": "1.0.8",
       "resolved": "https://registry.npmmirror.com/domready/-/domready-1.0.8.tgz",
@@ -5748,6 +5714,11 @@
         "websocket-driver": ">=0.5.1"
       }
     },
+    "fflate": {
+      "version": "0.4.8",
+      "resolved": "https://registry.npmmirror.com/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",
@@ -6771,6 +6742,15 @@
         }
       }
     },
+    "html2canvas": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
+      "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+      "requires": {
+        "css-line-break": "^2.1.0",
+        "text-segmentation": "^1.0.3"
+      }
+    },
     "htmlparser2": {
       "version": "3.10.1",
       "resolved": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz",
@@ -7774,6 +7754,36 @@
         "graceful-fs": "^4.1.6"
       }
     },
+    "jspdf": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmmirror.com/jspdf/-/jspdf-2.5.1.tgz",
+      "integrity": "sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==",
+      "requires": {
+        "@babel/runtime": "^7.14.0",
+        "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"
+      },
+      "dependencies": {
+        "@babel/runtime": {
+          "version": "7.20.6",
+          "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.6.tgz",
+          "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==",
+          "requires": {
+            "regenerator-runtime": "^0.13.11"
+          }
+        },
+        "regenerator-runtime": {
+          "version": "0.13.11",
+          "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+          "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+        }
+      }
+    },
     "jsprim": {
       "version": "1.4.1",
       "resolved": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
@@ -10501,6 +10511,15 @@
       "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=",
       "dev": true
     },
+    "raf": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmmirror.com/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",
@@ -10703,8 +10722,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",
@@ -10952,6 +10970,12 @@
       "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=",
       "dev": true
     },
+    "rgbcolor": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/rgbcolor/-/rgbcolor-1.0.1.tgz",
+      "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
+      "optional": true
+    },
     "rimraf": {
       "version": "2.7.1",
       "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz?cache=0&sync_timestamp=1598275565847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-2.7.1.tgz",
@@ -11911,6 +11935,12 @@
       "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
       "dev": true
     },
+    "stackblur-canvas": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmmirror.com/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",
@@ -12333,6 +12363,12 @@
         }
       }
     },
+    "svg-pathdata": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmmirror.com/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
+      "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
+      "optional": true
+    },
     "svg-sprite-loader": {
       "version": "6.0.11",
       "resolved": "https://registry.npmmirror.com/svg-sprite-loader/-/svg-sprite-loader-6.0.11.tgz",
@@ -12577,6 +12613,14 @@
       "resolved": "https://registry.npm.taobao.org/tether/download/tether-1.4.7.tgz",
       "integrity": "sha1-1WqBhZDY/nLjh/d6Z/k6uW2OH7I="
     },
+    "text-segmentation": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
+      "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+      "requires": {
+        "utrie": "^1.0.2"
+      }
+    },
     "text-table": {
       "version": "0.2.0",
       "resolved": "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz",
@@ -13126,6 +13170,14 @@
       "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
       "dev": true
     },
+    "utrie": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
+      "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+      "requires": {
+        "base64-arraybuffer": "^1.0.2"
+      }
+    },
     "uuid": {
       "version": "3.4.0",
       "resolved": "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz",
@@ -13237,6 +13289,87 @@
         }
       }
     },
+    "vue-loader-v16": {
+      "version": "npm:vue-loader@16.8.3",
+      "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
+      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chalk": "^4.1.0",
+        "hash-sum": "^2.0.0",
+        "loader-utils": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true,
+          "optional": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true,
+          "optional": true
+        },
+        "loader-utils": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
     "vue-pdf": {
       "version": "4.2.0",
       "resolved": "https://registry.npm.taobao.org/vue-pdf/download/vue-pdf-4.2.0.tgz",

+ 2 - 0
package.json

@@ -18,9 +18,11 @@
         "file-saver": "^2.0.5",
         "hanzi-writer": "^3.4.0",
         "html-docx-js": "^0.3.1",
+        "html2canvas": "^1.4.1",
         "jquery": "^3.6.0",
         "js-cookie": "^2.2.1",
         "js-md5": "^0.7.3",
+        "jspdf": "^2.5.1",
         "mockjs": "^1.1.0",
         "node-sass": "^4.14.1",
         "nprogress": "^0.2.0",

BIN
src/assets/teacherdev/creadCad-close.png


BIN
src/assets/teacherdev/creadCad-left.png


BIN
src/assets/teacherdev/creadCad-right.png


+ 3 - 0
src/main.js

@@ -20,6 +20,9 @@ import '@/icons' // icon
 import zh_tran from "@/utils/lang.js"
 Vue.prototype.$zh_tran = zh_tran
 
+import htmlToPdf from '@/utils/htmlToPdf'
+Vue.use(htmlToPdf)
+
 // element 下拉框下拉加载
 Vue.directive('loadmore', {
     bind(el, binding) {

+ 37 - 0
src/utils/htmlToPdf.js

@@ -0,0 +1,37 @@
+import html2Canvas from 'html2canvas'
+import JsPDF from 'jspdf'
+export default {
+    install(Vue, options) {
+        Vue.prototype.getPdf = function () {
+            var title = this.htmlTitle
+            html2Canvas(document.querySelector('#pdfDom'), {
+                allowTaint: true,
+                tianTest: false,
+            }).then(function (canvas) {
+                let contentWidth = canvas.width
+                let contentHeight = canvas.height
+                let pageHeight = contentWidth / 592.28 * 841.89
+                let leftHeight = contentHeight
+                let position = 0
+                let imgWidth = 595.28
+                let imgHeight = 592.28 / contentWidth * contentHeight
+                let pageData = canvas.toDataURL('image/jpeg', 1.0)
+                let PDF = new JsPDF('', 'pt', 'a4')
+                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(title + '.pdf')
+            }
+            )
+        }
+    }
+}

+ 347 - 190
src/views/wordcard/cread.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="cread" v-loading="loading">
     <Header />
-    <div class="main">
+    <div class="main" v-if="!isPreview">
       <div class="from">
         <div class="type">
           <div :class="[typeIndex == 0 ? 'sele' : '']" @click="cutType(0)">
@@ -78,7 +78,7 @@
               <div style="margin-right: 16px">
                 <span class="title">书写格</span>
                 <el-input
-                  style="width: 60px;text-align:center"
+                  style="width: 60px; text-align: center"
                   v-model="from.writeBoxNumber"
                   type="number"
                 ></el-input>
@@ -89,7 +89,7 @@
               <div style="margin-right: 16px">
                 <span class="title">描红</span>
                 <el-input
-                  style="width: 60px;text-align:center"
+                  style="width: 60px; text-align: center"
                   v-model="from.miaoRedBoxNumber"
                   type="number"
                 ></el-input>
@@ -100,7 +100,7 @@
               <div>
                 <span class="title">文末空行</span>
                 <el-input
-                  style="width: 60px;text-align:center"
+                  style="width: 60px; text-align: center"
                   v-model="from.lastNullrow"
                   type="number"
                 ></el-input>
@@ -119,21 +119,68 @@
           </div>
         </div>
       </div>
-      <div class="operation">
+      <div class="operation" v-if="isCread">
         <div>
           <img src="../../assets/teacherdev/word-save.png" alt="" /> 保存
         </div>
-        <div>
+        <div @click="previewEvent">
           <img src="../../assets/teacherdev/word-eyes.png" alt="" /> 预览
         </div>
-        <div>
+        <div @click="download">
           <img src="../../assets/teacherdev/word-download.png" alt="" /> 下载
         </div>
       </div>
-      <div class="word_main" v-if="writeTableData&&writeTableData.result">
-        <div class="word_main_table" v-for="(itemT,indexT) in writeTableData.result" :key="indexT">
-            <writeTable :type="typeIndex" :dataConfig="writeTableData" :data="itemT" :pageNumber="indexT+1" :totalNumber="writeTableData.result.length" />
+      <div
+        class="word_main"
+        id="pdfDom"
+        v-if="writeTableData && writeTableData.result"
+      >
+        <div
+          class="word_main_table"
+          v-for="(itemT, indexT) in writeTableData.result"
+          :key="indexT"
+        >
+          <writeTable
+            :type="typeIndex"
+            :dataConfig="writeTableData"
+            :data="itemT"
+            :pageNumber="indexT + 1"
+            :totalNumber="writeTableData.result.length"
+          />
+        </div>
+      </div>
+    </div>
+    <div class="preview_dv" v-if="isPreview">
+      <img
+        class="close"
+        src="../../assets/teacherdev/creadCad-close.png"
+        alt=""
+        @click="closepreviewEvent"
+      />
+      <div class="preview_main">
+        <img
+          class="left"
+          src="../../assets/teacherdev/creadCad-left.png"
+          alt=""
+          @click="changepreviewIndex('remove')"
+        />
+        <div class="word_main">
+          <div class="word_main_table">
+            <writeTable
+              :type="typeIndex"
+              :dataConfig="writeTableData"
+              :data="writeTableData.result[previewIndex]"
+              :pageNumber="previewIndex + 1"
+              :totalNumber="writeTableData.result.length"
+            />
+          </div>
         </div>
+        <img
+          class="right"
+          src="../../assets/teacherdev/creadCad-right.png"
+          alt=""
+          @click="changepreviewIndex('add')"
+        />
       </div>
     </div>
   </div>
@@ -144,13 +191,13 @@
 //例如:import 《组件名称》from ‘《组件路径》';
 import Header from "@/components/Header";
 import { getLogin } from "@/api/api";
-import writeTable from "./writeTable.vue"
-
+import writeTable from "./writeTable.vue";
+import { jsPDF } from "jspdf";
 export default {
   //import引入的组件需要注入到对象中才能使用
   components: {
     Header,
-    writeTable
+    writeTable,
   },
   props: {},
   data() {
@@ -173,6 +220,10 @@ export default {
       },
       loading: false,
       writeTableData: null,
+      isCread: false,
+      isPreview: false,
+      previewIndex: 0,
+      htmlTitle: "1",
     };
   },
   //计算属性 类似于data概念
@@ -181,18 +232,60 @@ export default {
   watch: {},
   //方法集合
   methods: {
+    download() {
+      // 1
+      // this.getPdf("#pdfDom")
+      // 2
+      var pdf = new jsPDF("", "pt", "a4");
+      pdf.html(document.getElementById("pdfDom"), {
+        // 只有 addFileToVFS 方法添加的字体才能用于 .html 方法
+        callback: function (pdf) {
+          //pdf.output('datauristring');// 渲染 pdf
+          pdf.save("A4.pdf"); //自动下载
+        },
+      });
+    },
+    changepreviewIndex(type) {
+      if (type == "add") {
+        if (this.previewIndex == this.writeTableData.result.length - 1) {
+          this.$message.warning("当前已经是最后一页");
+          return;
+        }
+        this.previewIndex++;
+      } else {
+        if (this.previewIndex == 0) {
+          this.$message.warning("当前已经是第一页");
+          return;
+        }
+        this.previewIndex--;
+      }
+    },
+    // 预览
+    previewEvent() {
+      this.isPreview = true;
+    },
+    // 关闭预览
+    closepreviewEvent() {
+      this.isPreview = false;
+    },
     // 切换类型
     cutType(index) {
       this.typeIndex = index;
     },
     // 生成
     creadEvent() {
-      this.writeTableData = null
+      this.writeTableData = null;
       if (this.from.content == "") {
         this.$message.warning("请先输入内容");
         return;
       }
-      if(!(this.from.writeBoxNumber||this.from.miaoRedBoxNumber||this.from.lastNullrow)){
+      if (
+        !(
+          this.from.writeBoxNumber ||
+          this.from.miaoRedBoxNumber ||
+          this.from.lastNullrow
+        )
+      ) {
         this.$message.warning("请先输入配置内容");
         return;
       }
@@ -217,50 +310,50 @@ export default {
         data.rowNumber = 8;
         data.pageNumber = 9;
         data.marginBottom = "15px";
-        data.playWidth = "11px"
+        data.playWidth = "11px";
       } else if (this.from.fontSize == "center") {
         data.width = "49px";
         data.fontSize = "38px";
         data.rowNumber = 10;
         data.pageNumber = 12;
         data.marginBottom = "8px";
-        data.playWidth = "9px"
+        data.playWidth = "9px";
       } else {
         data.width = "41px";
         data.fontSize = "31px";
         data.rowNumber = 12;
         data.pageNumber = 14;
         data.marginBottom = "7px";
-        data.playWidth = "8px"
+        data.playWidth = "8px";
       }
       let contentArr = this.from.content.split("\n");
       for (let i = 0; i < contentArr.length; i++) {
-        if(data.typeIndex == 0){
-            if(contentArr[i].length==1){
-                if(/^[\u4e00-\u9fa5]/.test(contentArr[i])){
-                    let obj = {
-                        con: contentArr[i],
-                    };
-                    data.option.push(obj);
-                }
-            }else{
-                for(let m=0;m<contentArr[i].length;m++){
-                    if(/^[\u4e00-\u9fa5]/.test(contentArr[i][m])){
-                        let obj = {
-                            con: contentArr[i][m],
-                        };
-                        data.option.push(obj);
-                    }
-                }
+        if (data.typeIndex == 0) {
+          if (contentArr[i].length == 1) {
+            if (/^[\u4e00-\u9fa5]/.test(contentArr[i])) {
+              let obj = {
+                con: contentArr[i],
+              };
+              data.option.push(obj);
             }
-        }else{
-            let contentItem = ""
-            for(let s=0;s<contentArr[i].length;s++){
-                if(/^[\u4e00-\u9fa5]/.test(contentArr[i][s])){
-                    contentItem += contentArr[i][s]
-                }
+          } else {
+            for (let m = 0; m < contentArr[i].length; m++) {
+              if (/^[\u4e00-\u9fa5]/.test(contentArr[i][m])) {
+                let obj = {
+                  con: contentArr[i][m],
+                };
+                data.option.push(obj);
+              }
             }
-            if(contentItem) data.option.push(contentItem);
+          }
+        } else {
+          let contentItem = "";
+          for (let s = 0; s < contentArr[i].length; s++) {
+            if (/^[\u4e00-\u9fa5]/.test(contentArr[i][s])) {
+              contentItem += contentArr[i][s];
+            }
+          }
+          if (contentItem) data.option.push(contentItem);
         }
       }
       //   字模式 笔顺打开
@@ -296,20 +389,26 @@ export default {
               data.option.forEach((item) => {
                 let arr = [];
                 let hzLength = 1;
-                let arrOption = []
+                let arrOption = [];
                 // 拆分字和笔画为每一项
                 arr.push({
                   con: item.con,
                 });
-                if(item.hzDetail&&item.hzDetail.hz_json&&item.hzDetail.hz_json.medians){
-                    hzLength += item.hzDetail.hz_json.medians.length
-                    item.hzDetail.hz_json.medians.forEach((items, indexs) => {
-                        arr.push({
-                            con: item.con,
-                            answer: indexs + 1,
-                            hzDetail: JSON.parse(JSON.stringify(item.hzDetail.hz_json)),
-                        });
+                if (
+                  item.hzDetail &&
+                  item.hzDetail.hz_json &&
+                  item.hzDetail.hz_json.medians
+                ) {
+                  hzLength += item.hzDetail.hz_json.medians.length;
+                  item.hzDetail.hz_json.medians.forEach((items, indexs) => {
+                    arr.push({
+                      con: item.con,
+                      answer: indexs + 1,
+                      hzDetail: JSON.parse(
+                        JSON.stringify(item.hzDetail.hz_json)
+                      ),
                     });
+                  });
                 }
                 // 如果不满一行则补满
                 let newarr = [];
@@ -340,33 +439,37 @@ export default {
                       });
                     }
                     // 描红格
-                    if (i==0&&data.miaoRedBoxNumber) {
-                        let m = Math.ceil(data.miaoRedBoxNumber/data.rowNumber) > data.writeBoxNumber ? data.writeBoxNumber : Math.ceil(data.miaoRedBoxNumber/data.rowNumber)
-                        for (let j = 0; j < m; j++) {
-                            let miaoArr = []
-                            for(let l = 0; l < data.rowNumber; l++){
-                                if(j*data.rowNumber+l<data.miaoRedBoxNumber){
-                                    miaoArr[l] = {
-                                        con: item.con,
-                                        miaoRed: true,
-                                        write: true,
-                                    };
-                                }else{
-                                    miaoArr[l] = {
-                                        con: item.con,
-                                        write: true,
-                                    }
-                                }
-                            }
-                            arrOption.push(JSON.parse(JSON.stringify(miaoArr)));
+                    if (i == 0 && data.miaoRedBoxNumber) {
+                      let m =
+                        Math.ceil(data.miaoRedBoxNumber / data.rowNumber) >
+                        data.writeBoxNumber
+                          ? data.writeBoxNumber
+                          : Math.ceil(data.miaoRedBoxNumber / data.rowNumber);
+                      for (let j = 0; j < m; j++) {
+                        let miaoArr = [];
+                        for (let l = 0; l < data.rowNumber; l++) {
+                          if (j * data.rowNumber + l < data.miaoRedBoxNumber) {
+                            miaoArr[l] = {
+                              con: item.con,
+                              miaoRed: true,
+                              write: true,
+                            };
+                          } else {
+                            miaoArr[l] = {
+                              con: item.con,
+                              write: true,
+                            };
+                          }
                         }
+                        arrOption.push(JSON.parse(JSON.stringify(miaoArr)));
+                      }
                     }
-                    arrOption.push(numrow)
-                    arrOption = arrOption.slice(0,data.writeBoxNumber)
+                    arrOption.push(numrow);
+                    arrOption = arrOption.slice(0, data.writeBoxNumber);
                   }
-                  arrOption.forEach(itemA=>{
-                    allArr.push(itemA)
-                  })
+                  arrOption.forEach((itemA) => {
+                    allArr.push(itemA);
+                  });
                 }
               });
               if (data.lastNullrow) {
@@ -381,7 +484,7 @@ export default {
                 }
               }
               data.result = this.arrSplice(allArr, data.pageNumber);
-              this.writeTableData = data
+              this.writeTableData = data;
               clearInterval(timer);
               timer = null;
             }
@@ -390,26 +493,26 @@ export default {
           let allArr = [];
           data.option.forEach((item) => {
             let arr = [];
-            let arrOption = []
+            let arrOption = [];
             // 拆分字和笔画为每一项
             arr.push({
               con: item.con,
             });
             // 如果不满一行则补满
             let newarr = [];
-            let areadyMiao = 0
+            let areadyMiao = 0;
             if (arr.length % data.rowNumber != 0) {
               let num = data.rowNumber - (arr.length % data.rowNumber);
               for (let i = 0; i < num; i++) {
-                if (data.miaoRedBoxNumber&&i<data.miaoRedBoxNumber) {
-                    arr.push({
-                        con: item.con,
-                        miaoRed: true,
-                        write: true,
-                    });
-                    areadyMiao++;
-                }else{
-                    arr.push({});
+                if (data.miaoRedBoxNumber && i < data.miaoRedBoxNumber) {
+                  arr.push({
+                    con: item.con,
+                    miaoRed: true,
+                    write: true,
+                  });
+                  areadyMiao++;
+                } else {
+                  arr.push({});
                 }
               }
               if (arr.length > data.rowNumber) {
@@ -434,33 +537,43 @@ export default {
                   });
                 }
                 // 描红格
-                if (i==0&&data.miaoRedBoxNumber) {
-                    let m = Math.ceil((data.miaoRedBoxNumber-areadyMiao)/data.rowNumber) > data.writeBoxNumber ? data.writeBoxNumber : Math.ceil((data.miaoRedBoxNumber-areadyMiao)/data.rowNumber)
-                    for (let j = 0; j < m; j++) {
-                        let miaoArr = []
-                        for(let l = 0; l < data.rowNumber; l++){
-                            if(j*data.rowNumber+l<(data.miaoRedBoxNumber-areadyMiao)){
-                                miaoArr[l] = {
-                                    con: item.con,
-                                    miaoRed: true,
-                                    write: true,
-                                };
-                            }else{
-                                miaoArr[l] = {
-                                    con: item.con,
-                                    write: true,
-                                }
-                            }
-                        }
-                        arrOption.push(JSON.parse(JSON.stringify(miaoArr)));
+                if (i == 0 && data.miaoRedBoxNumber) {
+                  let m =
+                    Math.ceil(
+                      (data.miaoRedBoxNumber - areadyMiao) / data.rowNumber
+                    ) > data.writeBoxNumber
+                      ? data.writeBoxNumber
+                      : Math.ceil(
+                          (data.miaoRedBoxNumber - areadyMiao) / data.rowNumber
+                        );
+                  for (let j = 0; j < m; j++) {
+                    let miaoArr = [];
+                    for (let l = 0; l < data.rowNumber; l++) {
+                      if (
+                        j * data.rowNumber + l <
+                        data.miaoRedBoxNumber - areadyMiao
+                      ) {
+                        miaoArr[l] = {
+                          con: item.con,
+                          miaoRed: true,
+                          write: true,
+                        };
+                      } else {
+                        miaoArr[l] = {
+                          con: item.con,
+                          write: true,
+                        };
+                      }
                     }
+                    arrOption.push(JSON.parse(JSON.stringify(miaoArr)));
+                  }
                 }
-                arrOption.push(numrow)
-                arrOption = arrOption.slice(0,data.writeBoxNumber)
+                arrOption.push(numrow);
+                arrOption = arrOption.slice(0, data.writeBoxNumber);
               }
-              arrOption.forEach(itemA=>{
-                allArr.push(itemA)
-              })
+              arrOption.forEach((itemA) => {
+                allArr.push(itemA);
+              });
             }
           });
           if (data.lastNullrow) {
@@ -475,88 +588,98 @@ export default {
             }
           }
           data.result = this.arrSplice(allArr, data.pageNumber);
-          this.writeTableData = data
+          this.writeTableData = data;
         }
       } else {
         // 处理句模式数据
         let allArr = [];
         data.option.forEach((item) => {
-            let sentenceArr = [] // 每一句的内容
-            let sentence = Math.ceil(item.length/data.rowNumber)
-            for(let k=0; k<sentence; k++){
-                let sentenceItem = []
-                for(let s=0; s< data.rowNumber; s++){
-                    if(k*data.rowNumber+s<item.length){
-                        sentenceItem.push({
-                            con: item[k*data.rowNumber+s],
-                        });
-                    }else{
-                        sentenceItem.push({})
-                    }
-                }
-               allArr.push(JSON.parse(JSON.stringify(sentenceItem))) 
+          let sentenceArr = []; // 每一句的内容
+          let sentence = Math.ceil(item.length / data.rowNumber);
+          for (let k = 0; k < sentence; k++) {
+            let sentenceItem = [];
+            for (let s = 0; s < data.rowNumber; s++) {
+              if (k * data.rowNumber + s < item.length) {
+                sentenceItem.push({
+                  con: item[k * data.rowNumber + s],
+                });
+              } else {
+                sentenceItem.push({});
+              }
             }
-            if(data.miaoRedBoxNumber>0&&data.writeBoxNumber>0){
-                let sentenceMiao = []
-                for(let k=0; k<sentence; k++){
-                    let sentenceItemMiao = []
-                    this.loading = true
-                    for(let s=0; s< data.rowNumber; s++){
-                        if(k*data.rowNumber+s<item.length){
-                            sentenceItemMiao[s] = {
-                                con: item[k*data.rowNumber+s],
-                                miaoRed: true,
-                            }
-                            let MethodName = "hz_resource_manager-GetHZStrokesContent";
-                            getLogin(MethodName, {hz:item[k*data.rowNumber+s]})
-                            .then((res) => {
-                                this.$set(sentenceItemMiao[s],"hzDetail",{'hz_json':res})
-                            })
-                            .catch(() => {
-                                this.loading = false;
-                            });
-                            
-                        }else{
-                            sentenceItemMiao[s] = {}
-                        }
-                    }
-                sentenceMiao.push(JSON.parse(JSON.stringify(sentenceItemMiao)))
-                }
-                this.loading = false;
-                // 描红内容
-                for(let l=0; l< data.miaoRedBoxNumber; l++){
-                    for(let j=0; j<sentenceMiao.length; j++){
-                        sentenceArr.push(JSON.parse(JSON.stringify(sentenceMiao[j])))
-                    }
+            allArr.push(JSON.parse(JSON.stringify(sentenceItem)));
+          }
+          if (data.miaoRedBoxNumber > 0 && data.writeBoxNumber > 0) {
+            let sentenceMiao = [];
+            for (let k = 0; k < sentence; k++) {
+              let sentenceItemMiao = [];
+              this.loading = true;
+              for (let s = 0; s < data.rowNumber; s++) {
+                if (k * data.rowNumber + s < item.length) {
+                  sentenceItemMiao[s] = {
+                    con: item[k * data.rowNumber + s],
+                    miaoRed: true,
+                  };
+                  let MethodName = "hz_resource_manager-GetHZStrokesContent";
+                  getLogin(MethodName, { hz: item[k * data.rowNumber + s] })
+                    .then((res) => {
+                      this.$set(sentenceItemMiao[s], "hzDetail", {
+                        hz_json: res,
+                      });
+                    })
+                    .catch(() => {
+                      this.loading = false;
+                    });
+                } else {
+                  sentenceItemMiao[s] = {};
                 }
+              }
+              sentenceMiao.push(JSON.parse(JSON.stringify(sentenceItemMiao)));
             }
-            // 书写内容
-            if(data.writeBoxNumber>0){
-                for(let w=0; w<Number(sentence)*Number(data.writeBoxNumber); w++){
-                    let sentenceItemWrite = []
-                    for(let j=0; j<data.rowNumber; j++){
-                        sentenceItemWrite.push({})
-                    }
-                    sentenceArr.push(JSON.parse(JSON.stringify(sentenceItemWrite)))
-                }
+            this.loading = false;
+            // 描红内容
+            for (let l = 0; l < data.miaoRedBoxNumber; l++) {
+              for (let j = 0; j < sentenceMiao.length; j++) {
+                sentenceArr.push(JSON.parse(JSON.stringify(sentenceMiao[j])));
+              }
             }
-            sentenceArr = sentenceArr.slice(0,Number(sentence)*Number(data.writeBoxNumber))
-            sentenceArr.forEach((itemS,indexS)=>{
-                allArr.push(JSON.parse(JSON.stringify(itemS)))
-            })
+          }
+          // 书写内容
+          if (data.writeBoxNumber > 0) {
+            for (
+              let w = 0;
+              w < Number(sentence) * Number(data.writeBoxNumber);
+              w++
+            ) {
+              let sentenceItemWrite = [];
+              for (let j = 0; j < data.rowNumber; j++) {
+                sentenceItemWrite.push({});
+              }
+              sentenceArr.push(JSON.parse(JSON.stringify(sentenceItemWrite)));
+            }
+          }
+          sentenceArr = sentenceArr.slice(
+            0,
+            Number(sentence) * Number(data.writeBoxNumber)
+          );
+          sentenceArr.forEach((itemS, indexS) => {
+            allArr.push(JSON.parse(JSON.stringify(itemS)));
+          });
         });
-        if(data.lastNullrow>0){
-            for(let t=0; t<data.lastNullrow; t++){
-                let sentenceItemNull = []
-                for(let j=0; j<data.rowNumber; j++){
-                    sentenceItemNull.push({})
-                }
-                allArr.push(JSON.parse(JSON.stringify(sentenceItemNull)))
+        if (data.lastNullrow > 0) {
+          for (let t = 0; t < data.lastNullrow; t++) {
+            let sentenceItemNull = [];
+            for (let j = 0; j < data.rowNumber; j++) {
+              sentenceItemNull.push({});
             }
+            allArr.push(JSON.parse(JSON.stringify(sentenceItemNull)));
+          }
         }
         data.result = this.arrSplice(allArr, data.pageNumber);
-        this.writeTableData = data
+        this.writeTableData = data;
       }
+      this.$forceUpdate();
+      this.isCread = true;
     },
     arrSplice(arr, chunkSize) {
       //定义一个空数组来接收返回值
@@ -595,6 +718,8 @@ export default {
 /* @import url(); 引入css类 */
 .cread {
   height: 100%;
+  position: relative;
+
   .main {
     min-height: 100%;
     background: #f7f7f7;
@@ -715,15 +840,47 @@ export default {
         }
       }
     }
-    .word_main{
-        width: 1200px;
-        margin: 0 auto;
-        display: flex;
-        flex-flow: wrap;
-        justify-content: space-between;
-        &_table{
-            margin-top: 10px;
-        }
+    .word_main {
+      width: 1200px;
+      margin: 0 auto;
+      display: flex;
+      flex-flow: wrap;
+      justify-content: space-between;
+      &_table {
+        margin-top: 10px;
+      }
+    }
+  }
+  .preview_dv {
+    position: absolute;
+    left: 0;
+    top: 64px;
+    width: 100%;
+    height: 100%;
+    background: #f2f2f2;
+    > img {
+      width: 40px;
+      height: 40px;
+      cursor: pointer;
+      position: absolute;
+      top: 24px;
+      right: 31px;
+    }
+    .preview_main {
+      padding-top: 100px;
+      width: 667px;
+      margin: 0 auto;
+      display: flex;
+      align-items: center;
+      height: 100%;
+      > div {
+        margin: 0 24px;
+      }
+      img {
+        width: 48px;
+        height: 48px;
+        cursor: pointer;
+      }
     }
   }
 }
@@ -796,8 +953,8 @@ export default {
     .el-switch__label.is-active {
       color: #000000;
     }
-    .el-input__inner{
-        text-align: right;
+    .el-input__inner {
+      text-align: right;
     }
   }
 }