index.vue 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <!--
  2. * @Author: lide1202@hotmail.com
  3. * @Date: 2021-3-13 11:04:24
  4. * @Last Modified by: lide1202@hotmail.com
  5. * @Last Modified time: 2021-3-13 11:04:24
  6. !-->
  7. <template>
  8. <div>
  9. <el-dialog
  10. title="请输入分享码"
  11. :visible.sync="dialogVisible"
  12. width="30%"
  13. :close-on-click-modal="false"
  14. :before-close="handleClose"
  15. >
  16. <el-input v-model="password" placeholder="请输入分享码"></el-input>
  17. <span slot="footer" class="dialog-footer">
  18. <el-button @click="dialogVisible = false">取 消</el-button>
  19. <el-button type="primary" @click="checkPassword()">确 定</el-button>
  20. </span>
  21. </el-dialog>
  22. </div>
  23. </template>
  24. <script>
  25. import { reportShareDetailByCode } from "@/api/reportShare";
  26. import { setShareToken } from "@/utils/auth";
  27. export default {
  28. name: "Report",
  29. components: {},
  30. data() {
  31. return {
  32. password: "",
  33. sharePassword: "",
  34. dialogVisible: false,
  35. reportCode: "",
  36. shareToken: ""
  37. };
  38. },
  39. created() {
  40. this.handleOpen();
  41. },
  42. methods: {
  43. async handleOpen() {
  44. const url = window.location.href;
  45. const shareCode = url.split('?')[0].substring(url.lastIndexOf("/") + 1);
  46. const { code, data } = await reportShareDetailByCode(shareCode);
  47. if (code != "200") return;
  48. this.reportCode = data.reportCode;
  49. this.sharePassword = data.sharePassword;
  50. this.shareToken = data.shareToken;
  51. if (this.sharePassword) {
  52. this.dialogVisible = true;
  53. } else {
  54. this.pushAj();
  55. }
  56. },
  57. checkPassword() {
  58. const md5 = require("js-md5");
  59. const inputPassword = md5(this.password);
  60. if (inputPassword == this.sharePassword) {
  61. this.pushAj();
  62. } else {
  63. this.$message.error("分享码输入不正确");
  64. }
  65. },
  66. pushAj() {
  67. setShareToken(this.shareToken);
  68. const url = window.location.href;
  69. const urlParamsObj = this.toUrlParamsMap(url.split('?')[1])
  70. const queryParams = { ...urlParamsObj, reportCode: this.reportCode }
  71. this.$router.push({
  72. path: "/bigscreen/viewer",
  73. query: queryParams
  74. });
  75. },
  76. toUrlParamsMap(params) {
  77. if(!params) return {}
  78. const urlObj = {}
  79. params.split("&").map(item => urlObj[item.split("=")[0]] = item.split("=")[1])
  80. return urlObj
  81. },
  82. handleClose(done) {
  83. this.$confirm("确认关闭?")
  84. .then(_ => {
  85. done();
  86. })
  87. .catch(_ => {});
  88. }
  89. }
  90. };
  91. </script>