lcw
This commit is contained in:
259
package-lock.json
generated
259
package-lock.json
generated
@ -1710,12 +1710,6 @@
|
|||||||
"integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
|
"integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/raf": {
|
|
||||||
"version": "3.4.3",
|
|
||||||
"resolved": "https://registry.npmmirror.com/@types/raf/-/raf-3.4.3.tgz",
|
|
||||||
"integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"@types/range-parser": {
|
"@types/range-parser": {
|
||||||
"version": "1.2.4",
|
"version": "1.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
|
||||||
@ -2145,6 +2139,51 @@
|
|||||||
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
|
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
|
||||||
"dev": true
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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
|
||||||
|
},
|
||||||
"ssri": {
|
"ssri": {
|
||||||
"version": "8.0.1",
|
"version": "8.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
|
||||||
@ -2153,6 +2192,28 @@
|
|||||||
"requires": {
|
"requires": {
|
||||||
"minipass": "^3.1.1"
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -3095,7 +3156,8 @@
|
|||||||
"atob": {
|
"atob": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
|
||||||
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
|
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"autoprefixer": {
|
"autoprefixer": {
|
||||||
"version": "9.8.8",
|
"version": "9.8.8",
|
||||||
@ -3282,11 +3344,6 @@
|
|||||||
"integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==",
|
"integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"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": {
|
"base64-js": {
|
||||||
"version": "1.5.1",
|
"version": "1.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||||
@ -3600,11 +3657,6 @@
|
|||||||
"update-browserslist-db": "^1.0.5"
|
"update-browserslist-db": "^1.0.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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": {
|
"buffer": {
|
||||||
"version": "4.9.2",
|
"version": "4.9.2",
|
||||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
|
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
|
||||||
@ -3819,22 +3871,6 @@
|
|||||||
"integrity": "sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ==",
|
"integrity": "sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"canvg": {
|
|
||||||
"version": "3.0.11",
|
|
||||||
"resolved": "https://registry.npmmirror.com/canvg/-/canvg-3.0.11.tgz",
|
|
||||||
"integrity": "sha512-5ON+q7jCTgMp9cjpu4Jo6XbvfYwSB2Ow3kzHKfIyJfaCAOHLbdKPQqGKgfED/R5B+3TFFfe8pegYA+b423SRyA==",
|
|
||||||
"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": {
|
"case-sensitive-paths-webpack-plugin": {
|
||||||
"version": "2.4.0",
|
"version": "2.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz",
|
||||||
@ -4894,14 +4930,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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": {
|
"css-loader": {
|
||||||
"version": "3.6.0",
|
"version": "3.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz",
|
||||||
@ -5645,7 +5673,8 @@
|
|||||||
"dompurify": {
|
"dompurify": {
|
||||||
"version": "2.3.10",
|
"version": "2.3.10",
|
||||||
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.10.tgz",
|
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.10.tgz",
|
||||||
"integrity": "sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g=="
|
"integrity": "sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"domready": {
|
"domready": {
|
||||||
"version": "1.0.8",
|
"version": "1.0.8",
|
||||||
@ -6926,11 +6955,6 @@
|
|||||||
"websocket-driver": ">=0.5.1"
|
"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": {
|
"figgy-pudding": {
|
||||||
"version": "3.5.2",
|
"version": "3.5.2",
|
||||||
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
|
||||||
@ -6989,7 +7013,7 @@
|
|||||||
},
|
},
|
||||||
"file-saver": {
|
"file-saver": {
|
||||||
"version": "2.0.5",
|
"version": "2.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
|
"resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
|
||||||
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
|
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
|
||||||
},
|
},
|
||||||
"file-uri-to-path": {
|
"file-uri-to-path": {
|
||||||
@ -7919,15 +7943,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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": {
|
"htmlparser2": {
|
||||||
"version": "6.1.0",
|
"version": "6.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
|
||||||
@ -8989,21 +9004,6 @@
|
|||||||
"graceful-fs": "^4.1.6"
|
"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"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"jsprim": {
|
"jsprim": {
|
||||||
"version": "1.4.2",
|
"version": "1.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
|
||||||
@ -10865,7 +10865,8 @@
|
|||||||
"performance-now": {
|
"performance-now": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
||||||
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
|
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"picocolors": {
|
"picocolors": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@ -12484,15 +12485,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz",
|
||||||
"integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
|
"integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
|
||||||
},
|
},
|
||||||
"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": {
|
"randombytes": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
|
||||||
@ -12920,12 +12912,6 @@
|
|||||||
"integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==",
|
"integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==",
|
||||||
"dev": true
|
"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": {
|
"rimraf": {
|
||||||
"version": "2.7.1",
|
"version": "2.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
|
||||||
@ -13828,12 +13814,6 @@
|
|||||||
"integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
|
"integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"stackblur-canvas": {
|
|
||||||
"version": "2.7.0",
|
|
||||||
"resolved": "https://registry.npmmirror.com/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz",
|
|
||||||
"integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"stackframe": {
|
"stackframe": {
|
||||||
"version": "1.3.4",
|
"version": "1.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
|
||||||
@ -14336,12 +14316,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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": {
|
"svg-sprite-loader": {
|
||||||
"version": "6.0.11",
|
"version": "6.0.11",
|
||||||
"resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-6.0.11.tgz",
|
"resolved": "https://registry.npmjs.org/svg-sprite-loader/-/svg-sprite-loader-6.0.11.tgz",
|
||||||
@ -14603,14 +14577,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/tesseract.js-core/-/tesseract.js-core-6.0.0.tgz",
|
||||||
"integrity": "sha512-1Qncm/9oKM7xgrQXZXNB+NRh19qiXGhxlrR8EwFbK5SaUbPZnS5OMtP/ghtqfd23hsr1ZvZbZjeuAGcMxd/ooA=="
|
"integrity": "sha512-1Qncm/9oKM7xgrQXZXNB+NRh19qiXGhxlrR8EwFbK5SaUbPZnS5OMtP/ghtqfd23hsr1ZvZbZjeuAGcMxd/ooA=="
|
||||||
},
|
},
|
||||||
"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": {
|
"text-table": {
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
||||||
@ -15227,14 +15193,6 @@
|
|||||||
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
|
"integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
|
||||||
"dev": true
|
"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": {
|
"uuid": {
|
||||||
"version": "3.4.0",
|
"version": "3.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
|
||||||
@ -15383,75 +15341,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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
|
|
||||||
},
|
|
||||||
"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-router": {
|
"vue-router": {
|
||||||
"version": "4.1.3",
|
"version": "4.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz",
|
||||||
|
|||||||
@ -30,9 +30,7 @@
|
|||||||
"file-saver": "^2.0.5",
|
"file-saver": "^2.0.5",
|
||||||
"fzui-fengqun-vue": "^1.0.1",
|
"fzui-fengqun-vue": "^1.0.1",
|
||||||
"gifler": "^0.1.0",
|
"gifler": "^0.1.0",
|
||||||
"html2canvas": "^1.4.1",
|
|
||||||
"image-compressor.js": "^1.1.4",
|
"image-compressor.js": "^1.1.4",
|
||||||
"jspdf": "^2.5.1",
|
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"mitt": "^3.0.0",
|
"mitt": "^3.0.0",
|
||||||
"moment": "^2.30.1",
|
"moment": "^2.30.1",
|
||||||
|
|||||||
@ -258,7 +258,7 @@
|
|||||||
left: 50%;
|
left: 50%;
|
||||||
bottom: 2px;
|
bottom: 2px;
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
width: calc(100% - 920px);
|
width: calc(100% - 890px);
|
||||||
height: calc((100% - 141px)/3 - 32px);
|
height: calc((100% - 141px)/3 - 32px);
|
||||||
min-width: 560px;
|
min-width: 560px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|||||||
@ -7,8 +7,8 @@
|
|||||||
<Editor :style="`height: ${props.heightNumber}px; overflow-y: hidden`" v-model="textContent" :defaultConfig="editorConfig" :mode="mode" @onCreated="handleCreated" @onChange="handChange" />
|
<Editor :style="`height: ${props.heightNumber}px; overflow-y: hidden`" v-model="textContent" :defaultConfig="editorConfig" :mode="mode" @onCreated="handleCreated" @onChange="handChange" />
|
||||||
</div>
|
</div>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button type="primary">暂存</el-button>
|
<!-- <el-button type="primary">暂存</el-button> -->
|
||||||
<el-button type="primary">下载</el-button>
|
<el-button type="primary" @click="downloadWithStyles">下载</el-button>
|
||||||
<el-button type="primary" @click="close">取消</el-button>
|
<el-button type="primary" @click="close">取消</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
@ -19,6 +19,7 @@ import { compressImage } from "@/utils/tools.js";
|
|||||||
import "@wangeditor/editor/dist/css/style.css";
|
import "@wangeditor/editor/dist/css/style.css";
|
||||||
import { qcckPost } from "@/api/qcckApi.js";
|
import { qcckPost } from "@/api/qcckApi.js";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
|
import { saveAs } from 'file-saver';
|
||||||
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
|
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
|
||||||
import { ref, shallowRef, onBeforeUnmount, defineEmits, defineProps, watch } from "vue";
|
import { ref, shallowRef, onBeforeUnmount, defineEmits, defineProps, watch } from "vue";
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@ -46,7 +47,7 @@ const mode = "default";
|
|||||||
const toolbarConfig = {
|
const toolbarConfig = {
|
||||||
excludeKeys: ["blockquote", "codeBlock"] //清除不必要的工具,引用和代码块
|
excludeKeys: ["blockquote", "codeBlock"] //清除不必要的工具,引用和代码块
|
||||||
};
|
};
|
||||||
const emits = defineEmits(["update:textContent", "changeFn"]);
|
const emits = defineEmits(["update:textContent", "changeFn","update:modelValue"]);
|
||||||
//编辑器配置
|
//编辑器配置
|
||||||
const editorConfig = {
|
const editorConfig = {
|
||||||
withCredentials: true, //允许跨域
|
withCredentials: true, //允许跨域
|
||||||
@ -86,7 +87,6 @@ const handleCreated = (editor) => {
|
|||||||
};
|
};
|
||||||
//内容发生变化
|
//内容发生变化
|
||||||
const handChange = (editor) => {
|
const handChange = (editor) => {
|
||||||
console.log(editor.getHtml(),'====editor.getHtml()');
|
|
||||||
// 判断是否是一个空段落,是空就传空文本
|
// 判断是否是一个空段落,是空就传空文本
|
||||||
if (editor.isEmpty()) {
|
if (editor.isEmpty()) {
|
||||||
emits("changeFn", editor.getText());
|
emits("changeFn", editor.getText());
|
||||||
@ -94,11 +94,34 @@ const handChange = (editor) => {
|
|||||||
emits("changeFn", editor.getHtml());
|
emits("changeFn", editor.getHtml());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
const close = () => {
|
||||||
|
emits("update:modelValue", false)
|
||||||
|
}
|
||||||
onBeforeUnmount(() => {
|
onBeforeUnmount(() => {
|
||||||
const editor = editorRef.value;
|
const editor = editorRef.value;
|
||||||
if (editor) editor.destroy();
|
if (editor) editor.destroy();
|
||||||
});
|
});
|
||||||
|
// 带样式的下载方法
|
||||||
|
const downloadWithStyles = () => {
|
||||||
|
|
||||||
|
const wordDocument = `
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
|
<title>富文本导出</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
${props.textContent}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`;
|
||||||
|
|
||||||
|
const blob = new Blob([wordDocument], {
|
||||||
|
type: 'application/msword'
|
||||||
|
});
|
||||||
|
|
||||||
|
saveAs(blob, 'styled-document.doc');
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
18
src/main.js
18
src/main.js
@ -52,7 +52,7 @@ import mitt from "mitt";
|
|||||||
import { resetForm } from "@/utils/validate";
|
import { resetForm } from "@/utils/validate";
|
||||||
import { getDict, setCascader } from '@/utils/dict';
|
import { getDict, setCascader } from '@/utils/dict';
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import fzui from 'fzui-fengqun-vue'
|
// import fzui from 'fzui-fengqun-vue'
|
||||||
|
|
||||||
//挂载全局方法
|
//挂载全局方法
|
||||||
app.config.globalProperties.resetForm = resetForm;
|
app.config.globalProperties.resetForm = resetForm;
|
||||||
@ -66,12 +66,12 @@ installElementPlus(app);
|
|||||||
installIcons(app);
|
installIcons(app);
|
||||||
installFilter(app);
|
installFilter(app);
|
||||||
installDirective(app);
|
installDirective(app);
|
||||||
app.use(fzui, {
|
// app.use(fzui, {
|
||||||
getOwnHostLabel: () => {
|
// getOwnHostLabel: () => {
|
||||||
return '/fd_api';
|
// return '/fd_api';
|
||||||
},
|
// },
|
||||||
translateHostLabel: () => {
|
// translateHostLabel: () => {
|
||||||
return '/fd_api';
|
// return '/fd_api';
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
app.use(store).use(ELMessage).use(router).use(plugins).mount("#app");
|
app.use(store).use(ELMessage).use(router).use(plugins).mount("#app");
|
||||||
|
|||||||
@ -616,15 +616,16 @@ export const publicRoutes = [
|
|||||||
title: "语义分析",
|
title: "语义分析",
|
||||||
icon: "article"
|
icon: "article"
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
path: "/analysisReport",
|
|
||||||
name: "AnalysisReport",
|
|
||||||
component: () => import("@/views/backOfficeSystem/AnalysisReport/index"),
|
|
||||||
meta: {
|
|
||||||
title: "分析报告",
|
|
||||||
icon: "article"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// path: "/analysisReport",
|
||||||
|
// name: "AnalysisReport",
|
||||||
|
// component: () => import("@/views/backOfficeSystem/AnalysisReport/index"),
|
||||||
|
// meta: {
|
||||||
|
// title: "分析报告",
|
||||||
|
// icon: "article"
|
||||||
|
// }
|
||||||
|
// },
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@ -1,78 +0,0 @@
|
|||||||
// import jsPDF from 'jspdf';
|
|
||||||
// import html2canvas from 'html2canvas';
|
|
||||||
|
|
||||||
|
|
||||||
// export function useExportToPDF() {
|
|
||||||
// const exportToImage = async (element, filename = 'screenshot.png') => {
|
|
||||||
// const canvas = await html2canvas(element, {
|
|
||||||
// scale: 2,
|
|
||||||
// useCORS: true,
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // 转换为图片并下载
|
|
||||||
// const link = document.createElement('a');
|
|
||||||
// link.download = filename;
|
|
||||||
// link.href = canvas.toDataURL('image/png');
|
|
||||||
// link.click();
|
|
||||||
// };
|
|
||||||
|
|
||||||
// // 将div导出为PDF的方法
|
|
||||||
// const exportDivToPDF = async (element, filename = 'document.pdf') => {
|
|
||||||
// try {
|
|
||||||
// // 使用html2canvas将div转换为canvas
|
|
||||||
// const canvas = await html2canvas(element, {
|
|
||||||
// scale: 2, // 提高清晰度
|
|
||||||
// useCORS: true, // 允许跨域图片
|
|
||||||
// logging: false, // 关闭日志
|
|
||||||
// width: element.offsetWidth,
|
|
||||||
// height: element.offsetHeight,
|
|
||||||
// windowWidth: element.scrollWidth,
|
|
||||||
// windowHeight: element.scrollHeight,
|
|
||||||
// backgroundColor: '#ffffff' // 设置背景色为白色
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // 获取canvas的宽高
|
|
||||||
// const imgWidth = 210; // A4纸宽度(mm)
|
|
||||||
// const pageHeight = 297; // A4纸高度(mm)
|
|
||||||
// const imgHeight = canvas.height * imgWidth / canvas.width;
|
|
||||||
// let heightLeft = imgHeight;
|
|
||||||
// let position = 0;
|
|
||||||
|
|
||||||
// // 创建PDF文档
|
|
||||||
// const pdf = new jsPDF({
|
|
||||||
// orientation: 'portrait',
|
|
||||||
// unit: 'mm',
|
|
||||||
// format: 'a4'
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // 将canvas转换为图片并添加到PDF
|
|
||||||
// const imgData = canvas.toDataURL('image/png');
|
|
||||||
// pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);
|
|
||||||
// heightLeft -= pageHeight;
|
|
||||||
|
|
||||||
// // 如果内容超出一页,添加新页面
|
|
||||||
// while (heightLeft > 0) {
|
|
||||||
// position = heightLeft - imgHeight;
|
|
||||||
// pdf.addPage();
|
|
||||||
// pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);
|
|
||||||
// heightLeft -= pageHeight;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 下载PDF
|
|
||||||
// pdf.save(filename);
|
|
||||||
// } catch (error) {
|
|
||||||
// console.error('导出PDF失败:', error);
|
|
||||||
// alert('导出PDF失败,请稍后重试');
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
|
|
||||||
// return {
|
|
||||||
// exportToImage,
|
|
||||||
// exportDivToPDF
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
// exportToImage
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
export function exportDivToPDF(divId, filename) {
|
|
||||||
}
|
|
||||||
@ -124,17 +124,13 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
import PageTitle from "@/components/aboutTable/PageTitle.vue";
|
||||||
// import { useExportToPDF } from './components/a.js';
|
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
|
|
||||||
import MaleNightingalePicture from './components/maleNightingalePicture.vue'
|
import MaleNightingalePicture from './components/maleNightingalePicture.vue'
|
||||||
import Histogram from './components/histogram.vue'
|
import Histogram from './components/histogram.vue'
|
||||||
import { timeValidate } from '@/utils/tools.js'
|
import { timeValidate } from '@/utils/tools.js'
|
||||||
import { getItem, setItem } from '@/utils/storage'
|
import { getItem, setItem } from '@/utils/storage'
|
||||||
import { fxbgDywdtj, getDictItem, fxbgJqlxtj, fxbgJqlytj, fxbgYdfx, fxbgXsfx, fxgbCljgf, fxgbCzlfx, fxbgTj } from '@/api/semanticAnalysis'
|
import { fxbgDywdtj, getDictItem, fxbgJqlxtj, fxbgJqlytj, fxbgYdfx, fxbgXsfx, fxgbCljgf, fxgbCzlfx, fxbgTj } from '@/api/semanticAnalysis'
|
||||||
// import AddForm from './components/a/addForm.vue'
|
|
||||||
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
import { qcckGet, qcckPost } from "@/api/qcckApi.js";
|
||||||
// import ItemXs from './components/itemXs/itemXs.vue'
|
|
||||||
import { reactive, ref, onMounted, getCurrentInstance, nextTick, computed, watch } from "vue";
|
import { reactive, ref, onMounted, getCurrentInstance, nextTick, computed, watch } from "vue";
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_GS_XS_LX } = proxy.$dict("D_GS_XS_LX"); //获取字典数据
|
const { D_GS_XS_LX } = proxy.$dict("D_GS_XS_LX"); //获取字典数据
|
||||||
@ -398,68 +394,9 @@ watch(() => dictItemList.value, (val) => {
|
|||||||
}, { deep: true })
|
}, { deep: true })
|
||||||
getDictItemList()
|
getDictItemList()
|
||||||
|
|
||||||
|
|
||||||
const tableBox = ref(null);
|
const tableBox = ref(null);
|
||||||
|
|
||||||
async function generatePDF(filename = 'document.pdf') {
|
|
||||||
// try {
|
|
||||||
const element = tableBox.value;
|
|
||||||
console.log();
|
|
||||||
|
|
||||||
// // 保存原始滚动位置和样式
|
|
||||||
// const originalScrollTop = element.scrollTop;
|
|
||||||
// const originalOverflow = element.style.overflow;
|
|
||||||
|
|
||||||
// // 临时允许元素滚动并获取完整高度
|
|
||||||
// element.style.overflow = 'visible';
|
|
||||||
|
|
||||||
// const canvas = await html2canvas(element, {
|
|
||||||
// scale: 2, // 提高清晰度
|
|
||||||
// useCORS: true, // 允许跨域图片
|
|
||||||
// logging: false, // 关闭日志
|
|
||||||
// scrollY: 0, // 禁止窗口滚动
|
|
||||||
// scrollX: 0,
|
|
||||||
// windowWidth: element.scrollWidth, // 设置窗口大小为元素大小
|
|
||||||
// windowHeight: element.scrollHeight,
|
|
||||||
// width: element.scrollWidth, // 设置canvas大小为元素大小
|
|
||||||
// height: element.scrollHeight
|
|
||||||
// });
|
|
||||||
|
|
||||||
// // 恢复原始样式和滚动位置
|
|
||||||
// element.style.overflow = originalOverflow;
|
|
||||||
// element.scrollTop = originalScrollTop;
|
|
||||||
|
|
||||||
// const imgData = canvas.toDataURL('image/png');
|
|
||||||
// const pdf = new jsPDF('p', 'mm', 'a4');
|
|
||||||
|
|
||||||
// const imgProps = pdf.getImageProperties(imgData);
|
|
||||||
// const pdfWidth = pdf.internal.pageSize.getWidth();
|
|
||||||
// const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;
|
|
||||||
|
|
||||||
// // 计算需要多少页
|
|
||||||
// const pageHeight = pdf.internal.pageSize.getHeight();
|
|
||||||
// let heightLeft = pdfHeight;
|
|
||||||
// let position = 0;
|
|
||||||
|
|
||||||
// // 添加第一页
|
|
||||||
// pdf.addImage(imgData, 'PNG', 0, position, pdfWidth, pdfHeight);
|
|
||||||
// heightLeft -= pageHeight;
|
|
||||||
|
|
||||||
// // 添加更多页(如果需要)
|
|
||||||
// while (heightLeft > 0) {
|
|
||||||
// position = -heightLeft;
|
|
||||||
// pdf.addPage();
|
|
||||||
// pdf.addImage(imgData, 'PNG', 0, position, pdfWidth, pdfHeight);
|
|
||||||
// heightLeft -= pageHeight;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// pdf.save(filename);
|
|
||||||
|
|
||||||
// } catch (error) {
|
|
||||||
// console.error('生成PDF时出错:', error);
|
|
||||||
// alert('生成PDF时出错,请查看控制台获取详细信息');
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
<div class="infoItem flex nowrap">
|
<div class="infoItem flex nowrap">
|
||||||
<span class="smllbtn" @click.stop="handleQsFk(props.item,'签收')" v-if="props.item.yjJb != 10 && props.item.czzt == '01' && deptLevel=='40' ">签收</span>
|
<span class="smllbtn" @click.stop="handleQsFk(props.item,'签收')" v-if="props.item.yjJb != 10 && props.item.czzt == '01' && deptLevel=='40' ">签收</span>
|
||||||
<span class="smllbtn" @click.stop="handleQsFk(props.item,'反馈')" v-if="props.item.yjJb != 10 && props.item.czzt == '02' && deptLevel=='40'"> 反馈 </span>
|
<span class="smllbtn" @click.stop="handleQsFk(props.item,'反馈')" v-if="props.item.yjJb != 10 && props.item.czzt == '02' && deptLevel=='40'"> 反馈 </span>
|
||||||
<span class="smllbtn" @click.stop="handleQsFk(props.item,'查看反馈')" v-if="props.item.yjJb != 10 && props.item.czzt == '03' && deptLevel=='40' "> 查看反馈 </span>
|
<span class="smllbtn" @click.stop="handleQsFk(props.item,'查看反馈')" v-if="props.item.yjJb != 10 && props.item.czzt == '03'"> 查看反馈 </span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="items">
|
<div class="items">
|
||||||
@ -82,7 +82,7 @@ const rules = reactive({
|
|||||||
fknr: [{ required: true, message: "请输入反馈内容", trigger: "blur" }],
|
fknr: [{ required: true, message: "请输入反馈内容", trigger: "blur" }],
|
||||||
})
|
})
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
deptLevel.value = localStorage.getItem("deptId") ? JSON.parse(localStorage.getItem("deptId"))[0].deptLevel : null;
|
// deptLevel.value = localStorage.getItem("deptId") ? JSON.parse(localStorage.getItem("deptId"))[0].deptLevel : null;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
// 正文
|
||||||
|
export const textStyle = (data) => {
|
||||||
|
return `<p style="text-indent: 2em;"><span style="font-size: 16px; font-family: 仿宋;">${data}</span></p>`
|
||||||
|
}
|
||||||
|
//一级标题
|
||||||
|
export const Firstlevelheading = (data) => {
|
||||||
|
return `<p style="text-indent: 2em;"><span style="font-size: 16px; font-family: 黑体;">${data}</span></p>`
|
||||||
|
}
|
||||||
|
//二级标题
|
||||||
|
export const Subheading = (data) => {
|
||||||
|
return `<p style="text-indent: 2em;"><span style="font-size: 16px; font-family: 仿宋;">${data}</span></p>`
|
||||||
|
}
|
||||||
|
export const BiheadlinegTitle = (data) => {
|
||||||
|
return `<p style="text-indent: 2em;"><span style="font-size: 16px; font-family: 楷体;"><strong>${data}</strong></span></p>`
|
||||||
|
}
|
||||||
|
// 大标题
|
||||||
|
export const BigTitle = (data) => {
|
||||||
|
return `<h4 style="text-align: center;"><span style="color: rgb(225, 60, 57); font-size: 32px; font-family: 标楷体;">${data}</span></h4>`
|
||||||
|
}
|
||||||
|
export const headTitle = (data) => {
|
||||||
|
return `<p style="text-align: left;"><span style="color: rgb(225, 60, 57); font-size: 16px; font-family: 标楷体;"> ${data.orgName}编 第${data.serialNumber}号 ${data.time} </span></p ><hr/>`
|
||||||
|
}
|
||||||
|
export const report = (data) => {
|
||||||
|
return `<p><br></p ><p style="text-indent: 2em;">报抄:西藏公安厅</p ><hr/><p> `
|
||||||
|
}
|
||||||
|
export const signature = () => {
|
||||||
|
return `<p> 承办人: 核稿人 : 签发人:</p >`
|
||||||
|
}
|
||||||
|
|
||||||
@ -7,36 +7,23 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="listBox">
|
<div class="listBox">
|
||||||
<div ref="searchBox">
|
<div ref="searchBox">
|
||||||
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"></Search>
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<div class="tabBox">
|
<div class="tabBox">
|
||||||
<MyTable
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:tableData="pageData.tableData"
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
:tableColumn="pageData.tableColumn"
|
<template #jqlbdm="{ row }">
|
||||||
:tableHeight="pageData.tableHeight"
|
<DictTag :tag="false" :value="row.jqlbdm" :options="dict.JQLB" />
|
||||||
:key="pageData.keyCount"
|
|
||||||
:tableConfiger="pageData.tableConfiger"
|
|
||||||
:controlsWidth="pageData.controlsWidth"
|
|
||||||
>
|
|
||||||
<template #zdrRyjb="{ row }">
|
|
||||||
<DictTag :value="row.zdrRyjb" :tag="false" :options="D_GS_ZDR_RYJB" />
|
|
||||||
</template>
|
</template>
|
||||||
<template #zdrYjdj="{ row }">
|
|
||||||
<DictTag :value="row.zdrYjdj" :tag="false" :options="D_GS_ZDR_YJDJ" />
|
</MyTable>
|
||||||
</template>
|
<Pages @changeNo="changeNo" @changeSize="changeSize" :tableHeight="pageData.tableHeight" :pageConfiger="{
|
||||||
</MyTable>
|
|
||||||
<Pages
|
|
||||||
@changeNo="changeNo"
|
|
||||||
@changeSize="changeSize"
|
|
||||||
:tableHeight="pageData.tableHeight"
|
|
||||||
:pageConfiger="{
|
|
||||||
...pageData.pageConfiger,
|
...pageData.pageConfiger,
|
||||||
total: pageData.total
|
total: pageData.total
|
||||||
}"
|
}"></Pages>
|
||||||
></Pages>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -48,19 +35,28 @@ import Pages from "@/components/aboutTable/Pages.vue";
|
|||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import { qcckPost } from "@/api/qcckApi.js";
|
import { qcckPost } from "@/api/qcckApi.js";
|
||||||
import { ref, reactive, nextTick, getCurrentInstance } from 'vue';
|
import { ref, reactive, nextTick, getCurrentInstance } from 'vue';
|
||||||
import { useRouter,useRoute } from 'vue-router'
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_GS_ZDR_RYJB,D_GS_ZDR_YJDJ} = proxy.$dict("D_GS_ZDR_RYJB","D_GS_ZDR_YJDJ"); //获取字典数据
|
|
||||||
const showDialog = ref(false)
|
const showDialog = ref(false)
|
||||||
const searchBox = ref(); //搜索框
|
const searchBox = ref(); //搜索框
|
||||||
const searchConfiger = ref(
|
const searchConfiger = ref(
|
||||||
[
|
[
|
||||||
{ label: "姓名", prop: 'ryXm', placeholder: "请输入姓名", showType: "input"},
|
{ label: "研判名称", prop: 'ypmc', placeholder: "请输入研判名称", showType: "input" },
|
||||||
{ label: "身份证号", prop: 'rySfzh', placeholder: "请输入身份证号", showType: "input"},
|
]);
|
||||||
]);
|
const props=defineProps({
|
||||||
const emit=defineEmits(['getData'])
|
dict: {
|
||||||
|
type: Object,
|
||||||
|
default: ()=>{}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['getData'])
|
||||||
|
const ypPremsess = ref()
|
||||||
|
const onSearch = (val) => {
|
||||||
|
ypPremsess.value = val
|
||||||
|
getList()
|
||||||
|
}
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const route=useRoute()
|
const route = useRoute()
|
||||||
const pageData = reactive({
|
const pageData = reactive({
|
||||||
tableData: [], //表格数据
|
tableData: [], //表格数据
|
||||||
keyCount: 0,
|
keyCount: 0,
|
||||||
@ -77,13 +73,14 @@ const pageData = reactive({
|
|||||||
}, //分页
|
}, //分页
|
||||||
controlsWidth: 160, //操作栏宽度
|
controlsWidth: 160, //操作栏宽度
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "姓名", prop: "ryXm" },
|
{ label: "研判名称", prop: "ypmc" },
|
||||||
{ label: "身份证号", prop: "rySfzh" },
|
{ label: "报警时间", prop: "bjsj" },
|
||||||
{ label: "联系电话", prop: "ryLxdh" },
|
{ label: "报警地址", prop: "bjdz" },
|
||||||
{ label: "重点人员级别", prop: "zdrRyjb",showSolt:true },
|
{ label: "警情类型", prop: "jqlbdm",showSolt:true },
|
||||||
{ label: "预警等级", prop: "zdrYjdj",showSolt:true },
|
{ label: "报警内容", prop: "bjnr", showOverflowTooltip: true },
|
||||||
{ label: "关联民警", prop: "gkMjXm" },
|
{ label: "报警电话", prop: "bjdh" },
|
||||||
{ label: "民警警号", prop: "gkMjJh" },
|
{ label: "报警时间", prop: "bjsj" },
|
||||||
|
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
const item = ref({})
|
const item = ref({})
|
||||||
@ -106,50 +103,50 @@ const changeSize = (val) => {
|
|||||||
getList();
|
getList();
|
||||||
};
|
};
|
||||||
|
|
||||||
const getList = () =>{
|
const getList = () => {
|
||||||
let params = {
|
let params = {
|
||||||
ypid:item.value.id,
|
ypid: item.value.id,
|
||||||
// sjLx:sjlx.value,
|
ypmc:ypPremsess.value,
|
||||||
pageCurrent:pageData.pageConfiger.pageCurrent,
|
pageCurrent: pageData.pageConfiger.pageCurrent,
|
||||||
pageSize:pageData.pageConfiger.pageSize,
|
pageSize: pageData.pageConfiger.pageSize,
|
||||||
}
|
}
|
||||||
pageData.tableConfiger.loading = true;
|
pageData.tableConfiger.loading = true;
|
||||||
qcckPost(params,'/jjdbYp/getPageList').then(res=>{
|
qcckPost(params, '/mosty-gsxt/jjdbYp/getPageList').then(res => {
|
||||||
pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
pageData.tableData = res.records || []
|
pageData.tableData = res.records || []
|
||||||
pageData.total = res.total;
|
pageData.total = res.total;
|
||||||
}).catch(()=>{
|
}).catch(() => {
|
||||||
pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const close = () =>{
|
const close = () => {
|
||||||
pageData.tableData = [];
|
pageData.tableData = [];
|
||||||
showDialog.value = false;
|
showDialog.value = false;
|
||||||
router.replace(route.query)
|
router.replace(route.query)
|
||||||
emit("getData")
|
// emit("getData")
|
||||||
}
|
}
|
||||||
|
|
||||||
const init = (val,lxs) =>{
|
const init = (val, lxs) => {
|
||||||
showDialog.value = true;
|
showDialog.value = true;
|
||||||
item.value = val;
|
item.value = val;
|
||||||
sjlx.value = lxs;
|
sjlx.value = lxs;
|
||||||
getList()
|
getList()
|
||||||
nextTick(()=>{
|
nextTick(() => {
|
||||||
tabHeightFn()
|
tabHeightFn()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
defineExpose({init})
|
defineExpose({ init })
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.listBox{
|
.listBox {
|
||||||
height: calc(100% - 50px);
|
height: calc(100% - 50px);
|
||||||
::v-deep .searchBox{
|
|
||||||
margin-bottom: 0 !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
::v-deep .searchBox {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,14 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="statistical-analysis">
|
<div class="statistical-analysis">
|
||||||
<!-- 左侧树形菜单 -->
|
|
||||||
<div class="left-menu">
|
|
||||||
<!-- 数据类型 -->
|
<!-- 数据类型 -->
|
||||||
|
<!-- 左侧树形菜单 -->
|
||||||
|
<!-- <div class="left-menu">
|
||||||
<CheckBox :data="checkData.sjlxBtn" customClass="all" @changeData="changeData_sjly"></CheckBox>
|
<CheckBox :data="checkData.sjlxBtn" customClass="all" @changeData="changeData_sjly"></CheckBox>
|
||||||
</div>
|
</div> -->
|
||||||
<!-- 右侧内容区 -->
|
<!-- 右侧内容区 -->
|
||||||
|
<!-- 研判类型 -->
|
||||||
|
|
||||||
<div class="right-content">
|
<div class="right-content">
|
||||||
<div class="btnsBox" ref="refBtn">
|
<div class="btnsBox" ref="refBtn">
|
||||||
<!-- 研判类型 -->
|
|
||||||
<CheckBox :data="checkData.yplxBtn" @changeData="changeData_yplx"></CheckBox>
|
<CheckBox :data="checkData.yplxBtn" @changeData="changeData_yplx"></CheckBox>
|
||||||
</div>
|
</div>
|
||||||
<div ref="searchBox">
|
<div ref="searchBox">
|
||||||
@ -24,7 +25,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="f14 lh24 pl4 pr4 one_text_detail">数量:{{ it.num }}</div>
|
<div class="f14 lh24 pl4 pr4 one_text_detail">数量:{{ it.num }}</div>
|
||||||
<div class="foot">
|
<div class="foot">
|
||||||
<span class="ml10 pointer" @click.stop="handleYp(it)" style="color:#027ff0 ;"><el-icon style="top: 2px;">
|
<span class="ml10 pointer" @click.stop="funAll(it.id)" style="color:#027ff0 ;"><el-icon style="top: 2px;">
|
||||||
<Document />
|
<Document />
|
||||||
</el-icon>报告</span>
|
</el-icon>报告</span>
|
||||||
<span class="ml10 pointer" @click="handleHs(it)" style="color:#f4ac47 ;"><el-icon style="top: 2px;">
|
<span class="ml10 pointer" @click="handleHs(it)" style="color:#f4ac47 ;"><el-icon style="top: 2px;">
|
||||||
@ -40,8 +41,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 详情 -->
|
<!-- 详情 -->
|
||||||
<Detail ref="detailForm" @getData="getLits"></Detail>
|
<Detail ref="detailForm" @getData="getLits" :dict="JQLB"></Detail>
|
||||||
<YpModel v-model="showModel" :textContent="textContent"></YpModel>
|
<YpModel v-model="showModel" :heightNumber="650" v-model:textContent="textContent"></YpModel>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
@ -51,12 +52,16 @@ import * as MOSTY from "@/components/MyComponents/index";
|
|||||||
import CheckBox from "@/components/checkBox/index.vue";
|
import CheckBox from "@/components/checkBox/index.vue";
|
||||||
import Search from "@/components/aboutTable/Search.vue";
|
import Search from "@/components/aboutTable/Search.vue";
|
||||||
import { qcckPost } from "@/api/qcckApi.js";
|
import { qcckPost } from "@/api/qcckApi.js";
|
||||||
|
import { timeValidate } from '@/utils/tools.js'
|
||||||
|
import {getItem} from '@/utils/storage.js'
|
||||||
import { useRoute, useRouter } from 'vue-router';
|
import { useRoute, useRouter } from 'vue-router';
|
||||||
import { reactive, ref, onMounted, getCurrentInstance, watch, nextTick } from "vue";
|
import { reactive, ref, onMounted, getCurrentInstance, watch, nextTick } from "vue";
|
||||||
import { jqypDywdtj, jqypfxbgJqlxtj, jqypfxbgYdfx, jqypfxbgJqlytj, jqypfxbgTj, jqypfxbgCljgf, jqypfxbgCzlfx, getDictItem } from '@/api/semanticAnalysis'
|
import { jqypDywdtj, jqypfxbgJqlxtj, jqypfxbgYdfx, jqypfxbgJqlytj, jqypfxbgTj, jqypfxbgCljgf, jqypfxbgCzlfx, getDictItem } from '@/api/semanticAnalysis'
|
||||||
|
import { textStyle, Firstlevelheading, Subheading, BiheadlinegTitle, BigTitle, headTitle, report, signature } from './components/content.js'
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const { D_SG_SJLY, D_SG_TSYPGZ } = proxy.$dict("D_SG_SJLY", "D_SG_TSYPGZ"); //获取字典数据
|
|
||||||
|
const { D_SG_SJLY, D_SG_TSYPGZ,JQLB } = proxy.$dict("D_SG_SJLY", "D_SG_TSYPGZ","JQLB"); //获取字典数据
|
||||||
const searchBox = ref(); //搜索框
|
const searchBox = ref(); //搜索框
|
||||||
const showModel = ref(false);
|
const showModel = ref(false);
|
||||||
const textContent = ref('');
|
const textContent = ref('');
|
||||||
@ -90,6 +95,7 @@ watch(() => [D_SG_SJLY.value, D_SG_TSYPGZ.value], val => {
|
|||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
show.value = true;
|
show.value = true;
|
||||||
|
Time()
|
||||||
tabHeightFn();
|
tabHeightFn();
|
||||||
if (route.query.id) {
|
if (route.query.id) {
|
||||||
lookDeatl(route.query)
|
lookDeatl(route.query)
|
||||||
@ -153,38 +159,6 @@ const getLits = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleYp = async (val) => {
|
|
||||||
await funAll(val.id)
|
|
||||||
let params = { tsypid: val.id, }
|
|
||||||
await qcckPost(params, '/mosty-gsxt/wshs/getDcypbg').then(res => {
|
|
||||||
let data = res || {};
|
|
||||||
const content = `
|
|
||||||
<p>为全面、客观、准确掌握全区公安机关的执法状况,自治区公安厅基于数据统计,对全区公安机关2021年度的执法状况作了客观分析。</p>
|
|
||||||
<p>一、执法状况总体分析</p>
|
|
||||||
<p>1.接处警情况</p>
|
|
||||||
<p>1.1接报警情</p>
|
|
||||||
`
|
|
||||||
// let html = `<p class="html_bt">${data.bt}</p>`
|
|
||||||
html += `<p>${data.head}</p>`
|
|
||||||
// html += `<p>${data.nr}</p>`
|
|
||||||
html += `<p class="html_bt">${content}
|
|
||||||
${sortingRatioValue.fxbg}
|
|
||||||
${sortingRatioValue.jqlx}
|
|
||||||
${sortingRatioValue.jqly}
|
|
||||||
${sortingRatioValue.dywd}
|
|
||||||
${sortingRatioValue.ydfx}
|
|
||||||
${sortingRatioValue.czjgfx}
|
|
||||||
${sortingRatioValue.xlwdfx}
|
|
||||||
</p>`;
|
|
||||||
html += `<p>${data.bc}</p>`
|
|
||||||
html += `<p>${data.end}</p>`
|
|
||||||
console.log(html);
|
|
||||||
|
|
||||||
textContent.value = html
|
|
||||||
showModel.value = true;
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleHs = (val) => {
|
const handleHs = (val) => {
|
||||||
router.push({ path: '/MeetingRoom', query: { tsypid: val.id } })
|
router.push({ path: '/MeetingRoom', query: { tsypid: val.id } })
|
||||||
}
|
}
|
||||||
@ -217,14 +191,13 @@ const dataList = reactive({
|
|||||||
CljgfTj: [],
|
CljgfTj: [],
|
||||||
XsfxTj: [],
|
XsfxTj: [],
|
||||||
})
|
})
|
||||||
const sortingRatioValue = reactive({
|
const sortingRatioValue = ref({
|
||||||
jqlx: "",
|
jqlx: "",
|
||||||
jqly: "",
|
jqly: "",
|
||||||
dywd: "",
|
dywd: "",
|
||||||
ydfx: "",
|
ydfx: "",
|
||||||
xlwdfx: "",
|
xlwdfx: "",
|
||||||
czjgfx: "",
|
czjgfx: "",
|
||||||
fxbg: ""
|
|
||||||
})
|
})
|
||||||
const sortingRatio = (data) => {
|
const sortingRatio = (data) => {
|
||||||
// 提取所有number值
|
// 提取所有number值
|
||||||
@ -256,19 +229,64 @@ const getDictItemList = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
getDictItemList()
|
getDictItemList()
|
||||||
const funAll =async (val) => {
|
const funAll = (val) => {
|
||||||
// await getfxbgDywdtj(val)
|
const dev=getItem('deptId')[0]
|
||||||
// await getfxbgJqlxtj(val)
|
textContent.value = BigTitle(`${endYears.value}年度西藏公安执法数据分析`) + headTitle({
|
||||||
// await getfxbgJqlytj(val)
|
orgName:dev.deptName,
|
||||||
// await getfxbgYdfx(val)
|
serialNumber: timeValidate("","mm"),
|
||||||
// await getfxgbCljgf(val)
|
time: timeValidate(),
|
||||||
// await getfxgbCzlfx(val)
|
})
|
||||||
// await getfxbgTj(val)
|
const data = `为全面、客观、准确掌握全区公安机关的执法状况,自治区公安厅基于数据统计,对全区公安机关${endYears.value}年度的执法状况作了客观分析。`
|
||||||
|
textContent.value += BiheadlinegTitle('1.接处警情况') + textStyle(data) + Firstlevelheading('一、执法状况总体分析')
|
||||||
|
getfxbgYdfx(val)
|
||||||
|
getfxbgTj()
|
||||||
|
getfxbgJqlxtj(val)
|
||||||
|
getfxbgJqlytj(val)
|
||||||
|
getfxbgDywdtj(val)
|
||||||
|
|
||||||
|
getfxgbCljgf(val)
|
||||||
|
getfxgbCzlfx(val)
|
||||||
|
console.log(sortingRatioValue.value);
|
||||||
|
showModel.value = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
watch(() => sortingRatioValue.value, (val) => {
|
||||||
|
if (val.jqlx&&val.jqly&&val.dywd&&val.ydfx&&val.xlwdfx&&val.czjgfx) {
|
||||||
|
textContent.value +=val.jqlx +val.jqly +val.dywd +val.ydfx + val.xlwdfx +val.czjgfx+report()+signature()
|
||||||
|
}
|
||||||
|
|
||||||
|
},{deep:true})
|
||||||
|
const getfxbgTj = (val) => {
|
||||||
|
jqypfxbgTj({ ypid: val }).then(res => {
|
||||||
|
const data = `${Time()} ,全区公安机关共接报各类警情${res.total}起,同比上升 ${res.tbbsb}%,同比上升${res.hbbsb}%`
|
||||||
|
textContent.value += BiheadlinegTitle('1.1接报警情') + textStyle(data)
|
||||||
|
dataList.XsfxTj = res
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 警情类型统计
|
||||||
|
const getfxbgJqlxtj = (val) => {
|
||||||
|
let params = {
|
||||||
|
...pageData.parameter,
|
||||||
|
ypid: val
|
||||||
|
}
|
||||||
|
jqypfxbgJqlxtj(params).then(res => {
|
||||||
|
const model = sortingRatio(res)
|
||||||
|
const data = `按警情类型来看,${model[0].name}最多,占到${model[0].ratio};其次为${model[1].name}最多,占到${model[1].ratio}。`
|
||||||
|
sortingRatioValue.value.jqlx = Subheading('1.1.1类型维度') + textStyle(data)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 警情来源统计
|
||||||
|
const getfxbgJqlytj = (val) => {
|
||||||
|
jqypfxbgJqlytj({ ypid: val }).then(res => {
|
||||||
|
const model = sortingRatio(res)
|
||||||
|
const data = `按警情来源来看,${model[0].name}最多,占到${model[0].ratio};其次为${model[1].name}最多,占到${model[1].ratio}。`
|
||||||
|
sortingRatioValue.value.jqly = Subheading('1.1.2来源维度') + textStyle(data)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
// 地域统计
|
// 地域统计
|
||||||
const getfxbgDywdtj = (val) => {
|
const getfxbgDywdtj = (val) => {
|
||||||
jqypDywdtj({ypid:val}).then(res => {
|
jqypDywdtj({ ypid: val }).then(res => {
|
||||||
dataList.dyTj.xAxisData = res.map(it => it.ssbm)
|
dataList.dyTj.xAxisData = res.map(it => it.ssbm)
|
||||||
dataList.dyTj.seriesData = [];
|
dataList.dyTj.seriesData = [];
|
||||||
for (let i = 0; i < res.length; i++) {
|
for (let i = 0; i < res.length; i++) {
|
||||||
@ -281,81 +299,42 @@ const getfxbgDywdtj = (val) => {
|
|||||||
dataList.dyTj.seriesData[i][i] = res[i].number
|
dataList.dyTj.seriesData[i][i] = res[i].number
|
||||||
}
|
}
|
||||||
const model = sortingRatio(res)
|
const model = sortingRatio(res)
|
||||||
sortingRatioValue.dywd = `<p>1.1.3地域维度</p><p>从地市分布地市来看,${model[0].ssbm}警情量最大,占到全区警情总量的${model[0].number}。其次为${model[1].ssbm}和${model[2].ssbm},两市警情量较为接近。警情量最少的为${model[model.length - 1].ssbm} </p>`
|
let data
|
||||||
// sortingRatioValue.Dywdtj = sortingRatio(res)
|
if (model.length>1) {
|
||||||
})
|
data = `从地市分布地市来看,${model[0].ssbm}警情量最大,占到全区警情总量的${model[0].number}。其次为${model[1].ssbm}和${model[2].ssbm},两市警情量较为接近。警情量最少的为${model[model.length - 1].ssbm}。`
|
||||||
}
|
} else {
|
||||||
// 警情类型统计
|
data = `从地市分布地市来看,${model[0].ssbm}警情量最大,占到全区警情总量的${model[0].number}。`
|
||||||
const getfxbgJqlxtj = (val) => {
|
}
|
||||||
let params = {
|
sortingRatioValue.value.dywd = Subheading('1.1.3地域维度') + textStyle(data)
|
||||||
...pageData.parameter,
|
|
||||||
ypid:val
|
|
||||||
}
|
|
||||||
jqypfxbgJqlxtj(params).then(res => {
|
|
||||||
// sortingRatioValue.Jqlx =
|
|
||||||
const model = sortingRatio(res)
|
|
||||||
sortingRatioValue.jqlx = `<p>1.1.1类型维度</p><p>按警情类型来看,${model[0].name}最多,占到${model[0].ratio};其次为${model[1].name}最多,占到${model[1].ratio}。</p>`
|
|
||||||
dataList.jqlxTj = res.map(item => {
|
|
||||||
return {
|
|
||||||
name: item.name,
|
|
||||||
value: item.number
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
// 警情来源统计
|
|
||||||
const getfxbgJqlytj = (val) => {
|
|
||||||
jqypfxbgJqlytj({ypid:val}).then(res => {
|
|
||||||
// sortingRatioValue.Lyfx =
|
|
||||||
const model = sortingRatio(res)
|
|
||||||
sortingRatioValue.jqly = `<p>1.1.2来源维度</p><p>按警情来源来看,${model[0].name}最多,占到${model[0].ratio};其次为${model[1].name}最多,占到${model[1].ratio}。</p>`
|
|
||||||
dataList.jqlyTj = res.map(item => {
|
|
||||||
return {
|
|
||||||
name: item.name,
|
|
||||||
value: item.number
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
//分析报告-时间维度-月分析
|
//分析报告-时间维度-月分析
|
||||||
const getfxbgYdfx = (val) => {
|
const getfxbgYdfx = (val) => {
|
||||||
jqypfxbgYdfx({ypid:val}).then(res => {
|
jqypfxbgYdfx({ ypid: val }).then(res => {
|
||||||
// sortingRatioValue.Ydfx =
|
|
||||||
const model = sortingRatio(res)
|
const model = sortingRatio(res)
|
||||||
sortingRatioValue.ydfx = `<p >1.1.4时间维度</p> <p>我们将所有警情按照月份划分进行统计发现,每月警情分布较为平均。最高月份为${model[0].month}月,占到${model[0].number};最低月份为${model[res.length - 1].month}月,占到${model[res.length - 1].number}。考虑是因为${model[0].month}月为我区传统旅游旺季,进藏人员较多。 ${model[res.length - 1].month}月一般春节及藏历新年期间,在藏人员较少。</p>
|
const data = `我们将所有警情按照月份划分进行统计发现,每月警情分布较为平均。最高月份为${model[0].month}月,占到${model[0].number};最低月份为${model[res.length - 1].month}月,占到${model[res.length - 1].number}。考虑是因为${model[0].month}月为我区传统旅游旺季,进藏人员较多。 ${model[res.length - 1].month}月一般春节及藏历新年期间,在藏人员较少。`
|
||||||
`
|
sortingRatioValue.value.ydfx = Subheading('1.1.4时间维度') + textStyle(data)
|
||||||
// dataList.ydTj = res.map(item => {
|
|
||||||
// return {
|
|
||||||
// name: item.month,
|
|
||||||
// value: item.number
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 分析报告-处理结果分析
|
// 分析报告-处理结果分析
|
||||||
const getfxgbCljgf = (val) => {
|
const getfxgbCljgf = (val) => {
|
||||||
jqypfxbgCljgf({ypid:val}).then(res => {
|
jqypfxbgCljgf({ ypid: val }).then(res => {
|
||||||
// sortingRatioValue.Cljgf =
|
// sortingRatioValue.Cljgf =
|
||||||
const model = sortingRatio(res)
|
const model = sortingRatio(res)
|
||||||
dataList.CljgfTj = res.map(item => {
|
|
||||||
return {
|
|
||||||
name: item.name,
|
|
||||||
value: item.number
|
|
||||||
}
|
|
||||||
})
|
|
||||||
let czjgfx = `从警情处置结果来看,`
|
let czjgfx = `从警情处置结果来看,`
|
||||||
model.forEach(item => {
|
model.forEach(item => {
|
||||||
czjgfx += `${item.name},占到${item.ratio};`
|
czjgfx += `${item.name},占到${item.ratio};`
|
||||||
})
|
})
|
||||||
sortingRatioValue.czjgfx = `<p>1.2警情处置</p><p>1.2.1结果维度</p><p>${czjgfx}</p>`
|
sortingRatioValue.value.xlwdfx = BiheadlinegTitle('1.2警情处置') + Firstlevelheading('1.2.1结果维度') + textStyle(czjgfx)
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 分析报告-处置率分析
|
// 分析报告-处置率分析
|
||||||
const getfxgbCzlfx = (val) => {
|
const getfxgbCzlfx = (val) => {
|
||||||
|
|
||||||
jqypfxbgCzlfx({ypid:val}).then(res => {
|
jqypfxbgCzlfx({ ypid: val }).then(res => {
|
||||||
dataList.withinTj = [{
|
dataList.withinTj = [{
|
||||||
name: "超时分流(超过24小时)",
|
name: "超时分流(超过24小时)",
|
||||||
value: res.within24h ? res.within24h : 0
|
value: res.within24h ? res.within24h : 0
|
||||||
@ -363,18 +342,13 @@ const getfxgbCzlfx = (val) => {
|
|||||||
name: "按时分流(24小时内)",
|
name: "按时分流(24小时内)",
|
||||||
value: res.over24h ? res.over24h : 0
|
value: res.over24h ? res.over24h : 0
|
||||||
}]
|
}]
|
||||||
sortingRatioValue.xlwdfx = `<p>1.2.2效率维度</p><p>从处警效率来看,24小时以内处警的,占到${res.over24h}%。表明我区公安机关在接警之后能够在第一时间处警。</p>
|
const data = `从处警效率来看,24小时以内处警的,占到${res.over24h}%。表明我区公安机关在接警之后能够在第一时间处警。`
|
||||||
`
|
sortingRatioValue.value.czjgfx = Subheading('1.2.2效率维度') + textStyle(data)
|
||||||
// sortingRatioValue.Czlfx = sortingRatio(dataList.withinTj)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const getfxbgTj = (val) => {
|
const timeDate = ref()
|
||||||
jqypfxbgTj({ypid:val}).then(res => {
|
const endYears=ref()
|
||||||
sortingRatioValue.fxbg = `<p>${Time()} ,全区公安机关共 接报各类警情${res.total}起,同比上升 ${res.tbbsb}%,同比上升${res.hbbsb}%</p>`
|
|
||||||
dataList.XsfxTj = res
|
|
||||||
})
|
|
||||||
}
|
|
||||||
const Time = () => {
|
const Time = () => {
|
||||||
const currentYear = new Date().getFullYear();
|
const currentYear = new Date().getFullYear();
|
||||||
const startOfYear = new Date(currentYear, 0, 1); // 今年1月1日
|
const startOfYear = new Date(currentYear, 0, 1); // 今年1月1日
|
||||||
@ -385,19 +359,15 @@ const Time = () => {
|
|||||||
const endYear = endOfYear.getFullYear();
|
const endYear = endOfYear.getFullYear();
|
||||||
const endMonth = String(endOfYear.getMonth() + 1).padStart(2, '0');
|
const endMonth = String(endOfYear.getMonth() + 1).padStart(2, '0');
|
||||||
const endDay = String(endOfYear.getDate()).padStart(2, '0');
|
const endDay = String(endOfYear.getDate()).padStart(2, '0');
|
||||||
|
timeDate.value=`${endYear}年${endMonth}月${endDay}日`
|
||||||
|
endYears.value=year
|
||||||
return `${year}年${month}月${day}日 至${endYear}年${endMonth}月${endDay}日`
|
return `${year}年${month}月${day}日 至${endYear}年${endMonth}月${endDay}日`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@ -447,7 +417,8 @@ const Time = () => {
|
|||||||
|
|
||||||
.right-content {
|
.right-content {
|
||||||
float: left;
|
float: left;
|
||||||
width: calc(100% - 290px);
|
// width: calc(100% - 290px);
|
||||||
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
@ -465,7 +436,7 @@ const Time = () => {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
align-content: start;
|
align-content: start;
|
||||||
gap: 22px;
|
gap: 18px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
@ -484,7 +455,7 @@ const Time = () => {
|
|||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
border-top: 1px solid #ccc;
|
border-top: 1px solid #ccc;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
box-sizing: border-box ;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,9 +2,7 @@
|
|||||||
<div class="homeBox">
|
<div class="homeBox">
|
||||||
<!-- <GdMap></GdMap> -->
|
<!-- <GdMap></GdMap> -->
|
||||||
<!-- 头部 -->
|
<!-- 头部 -->
|
||||||
|
|
||||||
<Head></Head>
|
<Head></Head>
|
||||||
<!-- 内容 -->
|
|
||||||
<!-- 左边 -->
|
<!-- 左边 -->
|
||||||
<div class="home-aside asideL">
|
<div class="home-aside asideL">
|
||||||
<div class="asideL-top">
|
<div class="asideL-top">
|
||||||
@ -36,16 +34,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 中间 -->
|
<!-- 中间 -->
|
||||||
<div class="home-center">
|
<div class="home-center">
|
||||||
<div class="middle-top">
|
<div class="middle-top"><Yszs /></div>
|
||||||
<Yszs />
|
|
||||||
</div>
|
|
||||||
<div class="flex middle-bottom mt10">
|
<div class="flex middle-bottom mt10">
|
||||||
<div class="mr10" style="width: 50%;">
|
<div class="mr10" style="width: 50%;"><DeployControl /></div>
|
||||||
<DeployControl />
|
<div class="flex-1" style="flex: 1;"><ZdryWarning /></div>
|
||||||
</div>
|
|
||||||
<div class="flex-1" style="flex: 1;">
|
|
||||||
<ZdryWarning />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<div style="height:33px;">
|
<div style="height:33px;">
|
||||||
<CheckBox :data="checkData" @changeData="changeData"></CheckBox>
|
<CheckBox :data="checkData" @changeData="changeData"></CheckBox>
|
||||||
</div>
|
</div>
|
||||||
<ul class="ryBox" v-loading="loading" v-infinite-scroll="loadList" style="overflow: auto">
|
<ul class="ryBox" ref="scrollTableRef" @mouseenter="stopAutoScroll" @mouseleave="startAutoScroll" v-loading="loading" v-infinite-scroll="loadList" >
|
||||||
<li v-for="item in personList" :key="item.id" @click="chooseItem(item)">
|
<li v-for="item in personList" :key="item.id" @click="chooseItem(item)">
|
||||||
<DeployControlItem :item="item" :dict="{D_BZ_HPZL}"/>
|
<DeployControlItem :item="item" :dict="{D_BZ_HPZL}"/>
|
||||||
</li>
|
</li>
|
||||||
@ -21,7 +21,7 @@ import { qcckPost } from "@/api/qcckApi.js";
|
|||||||
import DeployControlItem from "@/views/home/components/deployControlItem.vue";
|
import DeployControlItem from "@/views/home/components/deployControlItem.vue";
|
||||||
import * as MOSTY from "@/components/MyComponents/index";
|
import * as MOSTY from "@/components/MyComponents/index";
|
||||||
import CheckBox from "@/components/checkBox/index.vue";
|
import CheckBox from "@/components/checkBox/index.vue";
|
||||||
import { ref ,reactive, onMounted,getCurrentInstance} from 'vue';
|
import { ref ,reactive, onMounted,onUnmounted,getCurrentInstance} from 'vue';
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const {D_BZ_HPZL} =proxy.$dict('D_BZ_HPZL')
|
const {D_BZ_HPZL} =proxy.$dict('D_BZ_HPZL')
|
||||||
const checkData = reactive({
|
const checkData = reactive({
|
||||||
@ -33,9 +33,51 @@ const yjJb = ref('10,20,30,40');
|
|||||||
const pageNum = ref(1);
|
const pageNum = ref(1);
|
||||||
const loading = ref(false); // 加载中
|
const loading = ref(false); // 加载中
|
||||||
const personList = ref([]);
|
const personList = ref([]);
|
||||||
|
|
||||||
|
const scrollTableRef = ref(null) // 滚动元素区域
|
||||||
|
let isAutoScrolling = true // 是否自动滚动
|
||||||
|
const intervalId = ref(null) //定时器
|
||||||
|
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
getList()
|
getList()
|
||||||
|
autoScroll()
|
||||||
})
|
})
|
||||||
|
onUnmounted(() => {
|
||||||
|
if (intervalId.value) clearInterval(intervalId.value)// 清理定时器
|
||||||
|
})
|
||||||
|
// 自动滚动
|
||||||
|
const autoScroll = () => {
|
||||||
|
if(personList.value.length==0){return}
|
||||||
|
intervalId.value = setInterval(() => {
|
||||||
|
if (!isAutoScrolling) return
|
||||||
|
const scrollTableEl = scrollTableRef.value
|
||||||
|
scrollTableEl.scrollTop += 1 // 垂直滚动距离
|
||||||
|
let scrollTop = scrollTableEl.scrollTop;
|
||||||
|
let scrollHeight = scrollTableEl.scrollHeight;
|
||||||
|
let offsetHeight = Math.ceil(scrollTableEl.getBoundingClientRect().height);
|
||||||
|
let currentHeight = scrollTop + offsetHeight;
|
||||||
|
if (currentHeight >= scrollHeight) { // 到底部
|
||||||
|
if(personList.value.length == total.value){
|
||||||
|
scrollTableEl.scrollTop = 0;
|
||||||
|
}else{
|
||||||
|
pageNum.value++;
|
||||||
|
getList('load')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 100)
|
||||||
|
}
|
||||||
|
// 停止滚动
|
||||||
|
const stopAutoScroll = () => {
|
||||||
|
isAutoScrolling = false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 开始滚动
|
||||||
|
const startAutoScroll = () => {
|
||||||
|
isAutoScrolling = true
|
||||||
|
autoScroll()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 复选框切换
|
// 复选框切换
|
||||||
function changeData(val){
|
function changeData(val){
|
||||||
pageNum.value = 1;
|
pageNum.value = 1;
|
||||||
@ -60,9 +102,9 @@ const loadList = () =>{
|
|||||||
getList()
|
getList()
|
||||||
}
|
}
|
||||||
|
|
||||||
const getList = () =>{
|
const getList = (type) =>{
|
||||||
let data = { pageSize:10, pageNum:pageNum.value,yjJb:yjJb.value ,bkyj:1};
|
let data = { pageSize:10, pageNum:pageNum.value,yjJb:yjJb.value ,bkyj:1};
|
||||||
loading.value = true;
|
loading.value = !type ? true : false;
|
||||||
qcckPost(data,'/mosty-gsxt/tbYjxx/getPageList').then(res=>{
|
qcckPost(data,'/mosty-gsxt/tbYjxx/getPageList').then(res=>{
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
let arr = res.records || [];
|
let arr = res.records || [];
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<div style="height:33px;">
|
<div style="height:33px;">
|
||||||
<CheckBox :data="checkData" @changeData="changeData"></CheckBox>
|
<CheckBox :data="checkData" @changeData="changeData"></CheckBox>
|
||||||
</div>
|
</div>
|
||||||
<ul class="ryBox" v-loading="loading" v-infinite-scroll="loadList" style="overflow: auto">
|
<ul class="ryBox" ref="scrollCgTableRef" @mouseenter="stopAutoScroll" @mouseleave="startAutoScroll" v-loading="loading" v-infinite-scroll="loadList">
|
||||||
<li v-for="item in personList" :key="item.id" @click="chooseItem(item)">
|
<li v-for="item in personList" :key="item.id" @click="chooseItem(item)">
|
||||||
<YjItem :item="item" :dict="{D_BZ_HPZL}"></YjItem>
|
<YjItem :item="item" :dict="{D_BZ_HPZL}"></YjItem>
|
||||||
</li>
|
</li>
|
||||||
@ -21,7 +21,7 @@ import { qcckPost } from "@/api/qcckApi.js";
|
|||||||
import YjItem from "@/views/home/components/yjItem.vue";
|
import YjItem from "@/views/home/components/yjItem.vue";
|
||||||
import * as MOSTY from "@/components/MyComponents/index";
|
import * as MOSTY from "@/components/MyComponents/index";
|
||||||
import CheckBox from "@/components/checkBox/index.vue";
|
import CheckBox from "@/components/checkBox/index.vue";
|
||||||
import { ref ,reactive, onMounted,getCurrentInstance} from 'vue';
|
import { ref ,reactive, onMounted,getCurrentInstance , onUnmounted} from 'vue';
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
const {D_BZ_HPZL} =proxy.$dict('D_BZ_HPZL')
|
const {D_BZ_HPZL} =proxy.$dict('D_BZ_HPZL')
|
||||||
const checkData = reactive({
|
const checkData = reactive({
|
||||||
@ -33,9 +33,51 @@ const yjJb = ref('1,2');
|
|||||||
const pageNum = ref(1);
|
const pageNum = ref(1);
|
||||||
const loading = ref(false); // 加载中
|
const loading = ref(false); // 加载中
|
||||||
const personList = ref([]);
|
const personList = ref([]);
|
||||||
|
|
||||||
|
const scrollCgTableRef = ref(null) // 滚动元素区域
|
||||||
|
let isAutoScrolling = true // 是否自动滚动
|
||||||
|
const intervalId = ref(null) //定时器
|
||||||
|
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
getList()
|
getList()
|
||||||
|
autoScroll()
|
||||||
})
|
})
|
||||||
|
onUnmounted(() => {
|
||||||
|
if (intervalId.value) clearInterval(intervalId.value)// 清理定时器
|
||||||
|
})
|
||||||
|
// 自动滚动
|
||||||
|
const autoScroll = () => {
|
||||||
|
|
||||||
|
if(personList.value.length==0){return}
|
||||||
|
intervalId.value = setInterval(() => {
|
||||||
|
if (!isAutoScrolling) return
|
||||||
|
const scrollTableEl = scrollCgTableRef.value
|
||||||
|
scrollTableEl.scrollTop += 1 // 垂直滚动距离
|
||||||
|
let scrollTop = scrollTableEl.scrollTop;
|
||||||
|
let scrollHeight = scrollTableEl.scrollHeight;
|
||||||
|
let offsetHeight = Math.ceil(scrollTableEl.getBoundingClientRect().height);
|
||||||
|
let currentHeight = scrollTop + offsetHeight;
|
||||||
|
if (currentHeight >= scrollHeight) { // 到底部
|
||||||
|
if(personList.value.length == total.value){
|
||||||
|
scrollTableEl.scrollTop = 0;
|
||||||
|
}else{
|
||||||
|
pageNum.value++;
|
||||||
|
getList('load')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 100)
|
||||||
|
}
|
||||||
|
// 停止滚动
|
||||||
|
const stopAutoScroll = () => {
|
||||||
|
isAutoScrolling = false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 开始滚动
|
||||||
|
const startAutoScroll = () => {
|
||||||
|
isAutoScrolling = true
|
||||||
|
autoScroll()
|
||||||
|
}
|
||||||
|
|
||||||
// 复选框切换
|
// 复选框切换
|
||||||
function changeData(val){
|
function changeData(val){
|
||||||
pageNum.value = 1;
|
pageNum.value = 1;
|
||||||
@ -58,9 +100,9 @@ const loadList = () =>{
|
|||||||
getList()
|
getList()
|
||||||
}
|
}
|
||||||
|
|
||||||
const getList = () =>{
|
const getList = (type) =>{
|
||||||
let data = { pageSize:10, pageNum:pageNum.value,yjLx:yjJb.value };
|
let data = { pageSize:10, pageNum:pageNum.value,yjLx:yjJb.value };
|
||||||
loading.value = true;
|
loading.value = !type ? true : false;
|
||||||
qcckPost(data,'/mosty-gsxt/tbYjxx/getPageList').then(res=>{
|
qcckPost(data,'/mosty-gsxt/tbYjxx/getPageList').then(res=>{
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
let arr = res.records || [];
|
let arr = res.records || [];
|
||||||
|
|||||||
Reference in New Issue
Block a user