Browse Source

Merge branch 'http_mock' of git.xiaojukeji.com:pu_qa_tool/thoth-frontend into http_mock

qinzhipeng_v@didiglobal.com 4 years ago
parent
commit
1dcd8d34e0
1 changed files with 33 additions and 2 deletions
  1. 33 2
      src/views/useCase/components/requirementCase.vue

+ 33 - 2
src/views/useCase/components/requirementCase.vue

@@ -2,6 +2,7 @@
   <section v-if="bizId !== -1" v-loading="loading" class="case-main">
     <iframe
       id="useCaseIframe"
+      :class="{ 'full-screen': fullScreen}"
       frameborder="0"
       scrolling="no"
       :src="src"
@@ -18,7 +19,8 @@ export default {
     return {
       ifr: null,
       srcHost: '/case/caseList/zhihui/',
-      loading: true
+      loading: true,
+      fullScreen: false, // 是否全屏
     }
   },
   computed: {
@@ -30,7 +32,7 @@ export default {
         : getEnv() === 'pre'
           ? 'http://agiletc-pre.intra.xiaojukeji.com/#'
           : 'http://agiletc.intra.xiaojukeji.com/#'
-      const src = `${host}${this.srcHost}${encodeURIComponent(bizId)}`
+      const src = `${host}${this.$route.query.detailCaseUrl?'/case/caseManager/zhihui/' : this.srcHost }${ this.$route.query.detailCaseUrl || encodeURIComponent(bizId)}`
       return src
     }
   },
@@ -49,6 +51,26 @@ export default {
         this.loading = false
         this.loaded()
       }
+      if(e.data && e.data.event){
+        const { event, payload } = e.data;
+        const { href, hash } = window.location;
+        // 链接跳转时发送message的data
+        if (event === 'case-link') {
+          const detailCaseUrl = payload.url.replace(/http.*zhihui\//, ''); // 截取 iframe 传递过来的页面地址
+          if(detailCaseUrl.search(/http/) > -1) return; // 字符串截取失败终止
+          let websiteUrl = `${ href }&detailCaseUrl=${encodeURIComponent(detailCaseUrl)}`; // 新的页面地址
+          // 如果当前打开页面地址是已分享地址,则将原有的 detailCaseUrl 值替换
+          if (hash.search(/detailCaseUrl/) > -1) {
+            websiteUrl = href.replace(/detailCaseUrl=.*/,`detailCaseUrl=${encodeURIComponent(detailCaseUrl)}`);
+          }
+          // 改变浏览器历史URL
+          window.history.pushState({url: websiteUrl, title: document.title}, document.title, websiteUrl)
+        }
+        // 全屏操作时发送message的data
+        if (event === 'case-operations') {
+          this.fullScreen = payload.fullScreen
+        }
+      }
     }, false)
   },
   beforeDestroy() {
@@ -77,4 +99,13 @@ export default {
   width: 100%;
   height: 100vh;
 }
+.full-screen {
+  position: fixed;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  z-index: 999;
+}
+
 </style>