index.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <template>
  2. <div>
  3. <div class="i-layout-page-header header_top">
  4. <div class="i-layout-page-header fl_header">
  5. <router-link :to="{ path: $routeProStr + '/setting/pages/devise' }"
  6. ><Button icon="ios-arrow-back" size="small" type="text">返回</Button></router-link
  7. >
  8. <Divider type="vertical" />
  9. <span class="ivu-page-header-title mr20" style="padding: 0">页面设计</span>
  10. </div>
  11. </div>
  12. <Card :bordered="false" dis-hover class="ivu-mt">
  13. <div class="flex-wrapper">
  14. <!-- :src="iframeUrl" -->
  15. <iframe class="iframe-box" :src="iframeUrl" frameborder="0" ref="iframe"></iframe>
  16. <div>
  17. <div class="content">
  18. <rightConfig :name="configName" :pageId="pageId" :configNum="configNum"></rightConfig>
  19. </div>
  20. </div>
  21. <!-- <links v-if="show"></links> -->
  22. </div>
  23. </Card>
  24. </div>
  25. </template>
  26. <script>
  27. import { diyGetInfo, diySave } from '@/api/diy';
  28. import { mapMutations } from 'vuex';
  29. import rightConfig from '@/components/rightConfig/index';
  30. import links from './links';
  31. import { getCookies, setCookies } from '@/libs/util';
  32. export default {
  33. name: 'index',
  34. components: {
  35. rightConfig,
  36. links,
  37. },
  38. data() {
  39. return {
  40. configName: {},
  41. configNum: 'default',
  42. iframeUrl: '',
  43. setConfig: '',
  44. updataConfig: '',
  45. pageId: 0,
  46. };
  47. },
  48. created() {
  49. this.show = true;
  50. let pageId = this.$route.query.id;
  51. let defaultData = this.$store.state.moren.defaultConfig;
  52. this.pageId = parseInt(pageId);
  53. let moveLink = getCookies('moveLink');
  54. if (Number(this.$route.query.type) === 1) {
  55. this.iframeUrl = `${moveLink}/pages/index/index?mdType=iframeWindow`;
  56. } else {
  57. // this.iframeUrl = `https://v4.wuht.net/pages/index/index?type=iframeWindow`;
  58. this.iframeUrl = `${location.origin}/pages/index/index?mdType=iframeWindow`;
  59. }
  60. diyGetInfo(parseInt(pageId)).then((datas) => {
  61. let data = datas.data.info.value;
  62. if (data) {
  63. this.upData(data);
  64. } else {
  65. diySave(parseInt(pageId), {
  66. value: defaultData,
  67. }).then((res) => {});
  68. }
  69. });
  70. },
  71. mounted() {
  72. //监听子页面给当前页面传值
  73. window.addEventListener('message', this.handleMessage, false);
  74. },
  75. methods: {
  76. //接收iframe值
  77. handleMessage(event) {
  78. console.log(event.data.name)
  79. if (event.data.name) {
  80. let obj = { name: event.data.name, num: event.data.dataName };
  81. this.configName = obj;
  82. this.configNum = event.data.dataName;
  83. this.add(event.data.name);
  84. }
  85. },
  86. add(data) {
  87. this.$store.commit('moren/setConfig', data);
  88. },
  89. upData(data) {
  90. this.$store.commit('moren/updataConfig', data);
  91. },
  92. // ...mapMutations({
  93. // add: 'diy/setConfig',
  94. // upData:'diy/updataConfig'
  95. // })
  96. },
  97. };
  98. </script>
  99. <style scoped lang="stylus">
  100. .content {
  101. // width: 500px;
  102. }
  103. .flex-wrapper {
  104. display: flex;
  105. }
  106. .iframe-box {
  107. min-width: 375px;
  108. height: 700px;
  109. /* border: 1px solid #ddd; */
  110. border-radius: 4px;
  111. box-shadow: 0 0 7px #cccccc;
  112. }
  113. .right-box {
  114. width: 500px;
  115. margin-left: 50px;
  116. border: 1px solid #ddd;
  117. border-radius: 4px;
  118. .title-bar {
  119. width: 100%;
  120. height: 38px;
  121. line-height: 38px;
  122. padding-left: 24px;
  123. color: #333;
  124. border-radius: 4px;
  125. border-bottom: 1px solid #eee;
  126. }
  127. }
  128. </style>