index.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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 = `${location.origin}/pages/index/index?mdType=iframeWindow`;
  58. }
  59. diyGetInfo(parseInt(pageId)).then((datas) => {
  60. let data = datas.data.info.value;
  61. if (data) {
  62. this.upData(data);
  63. } else {
  64. diySave(parseInt(pageId), {
  65. value: defaultData,
  66. }).then((res) => {});
  67. }
  68. });
  69. },
  70. mounted() {
  71. //监听子页面给当前页面传值
  72. window.addEventListener('message', this.handleMessage, false);
  73. },
  74. methods: {
  75. //接收iframe值
  76. handleMessage(event) {
  77. if (event.data.name) {
  78. let obj = { name: event.data.name, num: event.data.dataName };
  79. this.configName = obj;
  80. this.configNum = event.data.dataName;
  81. this.add(event.data.name);
  82. }
  83. },
  84. add(data) {
  85. this.$store.commit('moren/setConfig', data);
  86. },
  87. upData(data) {
  88. this.$store.commit('moren/updataConfig', data);
  89. },
  90. // ...mapMutations({
  91. // add: 'diy/setConfig',
  92. // upData:'diy/updataConfig'
  93. // })
  94. },
  95. };
  96. </script>
  97. <style scoped lang="stylus">
  98. .content {
  99. // width: 500px;
  100. }
  101. .flex-wrapper {
  102. display: flex;
  103. }
  104. .iframe-box {
  105. min-width: 375px;
  106. height: 700px;
  107. /* border: 1px solid #ddd; */
  108. border-radius: 4px;
  109. box-shadow: 0 0 7px #cccccc;
  110. }
  111. .right-box {
  112. width: 500px;
  113. margin-left: 50px;
  114. border: 1px solid #ddd;
  115. border-radius: 4px;
  116. .title-bar {
  117. width: 100%;
  118. height: 38px;
  119. line-height: 38px;
  120. padding-left: 24px;
  121. color: #333;
  122. border-radius: 4px;
  123. border-bottom: 1px solid #eee;
  124. }
  125. }
  126. </style>