template.vue 2.6 KB

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