quanwei
18 hours ago c441dea81bd86bdfb12dff35821fed51f4cc91c2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<template>
  <!--
      作者:wangxw
      时间:2020-06-10
      描述:页面-首页
  -->
  <div v-loading="loading" class="diy-container clearfix">
 
    <!--类别选择-->
    <div class="diy-menu"><Type v-if="!loading" :defaultData="defaultData"></Type></div>
 
    <!--手机diy容器-->
    <div class="diy-phone"><Model v-if="!loading" ref="model" :form="form" :defaultData="defaultData" :diyData="diyData"></Model></div>
 
    <!--参数设置-->
    <div class="diy-info"><Params v-if="!loading" :form="form" :defaultData="defaultData" :diyData="diyData"></Params></div>
 
    <!--提交-->
    <div class="common-button-wrapper">
      <el-button size="small" type="primary" @click="Submit()" :loading="loading">保存</el-button>
    </div>
  </div>
</template>
 
<script>
import {deepClone} from '@/utils/base.js'
import PageApi from '@/api/page.js';
import Type from './diy/Type.vue';
import Model from './diy/Model.vue';
import Params from './diy/Params.vue';
export default {
  components: {
    /*组件类别*/
    Type,
    /*组件信息*/
    Model,
    /*参数信息*/
    Params
  },
  data() {
    return {
      /*是否正在加载*/
      loading: true,
      /*默认数据*/
      defaultData: {},
      /*组件数据列表*/
      diyData: {
        items: []
      },
      opts: {},
      /*表单对象*/
      form: {
        umeditor: {},
        /*当前选中*/
        curItem: {},
        /*当前选中的元素(下标)*/
        selectedIndex: -1
      }
    };
  },
  created() {
    /*获取列表*/
    this.getData();
  },
  methods: {
    /*获取列表*/
    getData() {
      let self = this;
      PageApi.editHome({}, true)
        .then(res => {
          self.defaultData = res.data.defaultData;
          self.diyData = res.data.jsonData;
          self.form.curItem=self.diyData.page;
          self.opts = res.data.opts;
          self.loading = false;
        })
        .catch(error => {
          self.loading = false;
        });
    },
 
   /*新增Diy组件*/
   onAddItem: function(key) {
     // 复制默认diy组件数据
     let item = deepClone(this.defaultData[key]),cur_index=0;
     if(this.form.selectedIndex<0){
       cur_index=0;
       this.diyData.items.unshift(item);
     }else{
       cur_index=this.form.selectedIndex + 1;
        this.diyData.items.splice(cur_index,0,item);
     }
     // 编辑当前选中的元素
     this.$refs.model.onEditer(cur_index);
   },
 
    /*上架*/
    Submit() {
      let self = this;
      self.loading = true;
      let params = self.diyData;
      let page_id = self.page_id;
      PageApi.SavePage(
        {
          params: JSON.stringify(params),
          page_id: page_id
        },
        true
      )
        .then(data => {
          self.loading = false;
          self.$message({
            message: '恭喜你,修改成功',
            type: 'success'
          });
          self.getData();
          self.form.selectedIndex= -1;
        })
        .catch(error => {
          self.loading = false;
        });
    }
  }
};
</script>
 
<style lang="scss">
@import '@/styles/page/diy.scss';
</style>