|
@@ -6,6 +6,9 @@ import { Message } from 'element-ui'; //注意在这里引入是非常不符合
|
|
|
import Vue from 'vue'; //导入Vue 因为我们要进行深层次的json修改,深拷贝的数据无法令视图更新
|
|
|
//所以我们需要使用Vue的$set方法来强制视图更新,在vuex中没有this,这里我们需要通过引入vue来使用vue.$set
|
|
|
|
|
|
+//引入随机模板json
|
|
|
+import randomTemplateJson from '@/utils/templateJson/index/1.js';//首页
|
|
|
+
|
|
|
const state = {
|
|
|
//0.全局配置 start------------------------------------------------------------>
|
|
|
editWebsiteId: "",//当前编辑网站的id
|
|
@@ -51,6 +54,7 @@ const state = {
|
|
|
editComponentWindowStatus:false,//选择组件样式弹出框是否显示
|
|
|
editWindowTitle:"",//编辑弹出框标题
|
|
|
editSectorId:0,//当前正在编辑的板块id
|
|
|
+ editDataSort:0,//当前正在编辑的数据位置
|
|
|
editComponentSort:0,//当前正在编辑的组件id
|
|
|
editComponentType:0,//当前正在编辑的组件类型
|
|
|
editComponentSize:0,//当前组件展示的条数
|
|
@@ -106,6 +110,7 @@ const mutations = {
|
|
|
setEditWindowStatus(state,data){
|
|
|
state.editWindowStatus = true;
|
|
|
state.editSectorId = data.id;
|
|
|
+ state.editDataSort = data.dataSort;
|
|
|
state.editComponentSort = data.sort;
|
|
|
state.editComponentType = data.type;
|
|
|
state.editComponentSize = data.size;
|
|
@@ -113,15 +118,12 @@ const mutations = {
|
|
|
//关闭编辑组件弹出框
|
|
|
closeEditWindowStatus(state){
|
|
|
state.editWindowStatus = false;
|
|
|
- // state.editSectorId = "";
|
|
|
- // state.editComponentSort = "";
|
|
|
- // state.editComponentType = "";
|
|
|
- // state.editComponentSize = "";
|
|
|
},
|
|
|
//打开选择组件样式弹出框
|
|
|
setComponentStyleStatus(state,data){
|
|
|
state.editComponentWindowStatus = true;
|
|
|
state.editSectorId = data.id;
|
|
|
+ state.editDataSort = data.dataSort;
|
|
|
state.editComponentSort = data.sort;
|
|
|
state.editComponentType = data.type;
|
|
|
state.editComponentStyle = data.style;
|
|
@@ -129,51 +131,12 @@ const mutations = {
|
|
|
//关闭选择组件样式弹出框
|
|
|
closeComponentStyleStatus(state){
|
|
|
state.editComponentWindowStatus = false;
|
|
|
- // state.editSectorId = "";
|
|
|
- // state.editComponentSort = "";
|
|
|
- // state.editComponentType = "";
|
|
|
- // state.editComponentStyle = "";
|
|
|
},
|
|
|
//选择组件样式
|
|
|
selectComponentStyleNumber(state,data){
|
|
|
state.editComponentStyle = data;
|
|
|
},
|
|
|
- //设置组件样式
|
|
|
- setComponentStyleNumber(state,data){
|
|
|
- let id = state.editSectorId;
|
|
|
- let sort = state.editComponentSort;
|
|
|
- let num = state.editComponentStyle;
|
|
|
|
|
|
- //pageStatus==1 首页
|
|
|
- if(state.pageStatus == 1){
|
|
|
- // 获取当前模块数据并进行深拷贝
|
|
|
- let module = JSON.parse(JSON.stringify(state.pageData.index[id]));
|
|
|
- //module.content.componentList[sort].component_style = num;
|
|
|
- //确保修改属性时 Vue 能监控到变化
|
|
|
- Vue.set(module.content.componentList, sort, {
|
|
|
- ...module.content.componentList[sort],
|
|
|
- component_style: num
|
|
|
- });
|
|
|
- // 拷贝后直接替换原来的板块
|
|
|
- //state.pageData.index[id] = module;
|
|
|
- // 使用Vue.set来强制视图更新
|
|
|
- Vue.set(state.pageData.index, id, module);
|
|
|
- console.log("当前的板块数据为:");
|
|
|
- console.log(state.pageData.index);
|
|
|
- }
|
|
|
- //pageStatus==2 分类页
|
|
|
- if(state.pageStatus == 2){}
|
|
|
- //pageStatus==3 列表页
|
|
|
- if(state.pageStatus == 3){}
|
|
|
- //pageStatus==4 详情页
|
|
|
- if(state.pageStatus == 4){}
|
|
|
- //pageStatus==5 搜索页
|
|
|
- if(state.pageStatus == 5){}
|
|
|
- //pageStatus==6 自定义列表页
|
|
|
- if(state.pageStatus == 6){}
|
|
|
- //pageStatus==7 自定义详情页
|
|
|
- if(state.pageStatus == 7){}
|
|
|
- },
|
|
|
//0.全局配置 start------------------------------------------------------------>
|
|
|
//1.配置模块 start------------------------------------------------------------>
|
|
|
//添加板块
|
|
@@ -185,26 +148,31 @@ const mutations = {
|
|
|
Message.error('最多只能添加10个模块!');
|
|
|
return;
|
|
|
}else{
|
|
|
+ //通过时间戳生成id
|
|
|
+ const currentTimestamp = Date.now();
|
|
|
+ let id = currentTimestamp;
|
|
|
//data.type 组件名称 data.h 模块高度
|
|
|
//计算当前布局的最大 y 值
|
|
|
const maxY = Math.max(...state.pageData.index.map(item => item.y), 0);
|
|
|
console.log(data);
|
|
|
+ //设置数据在构建json中的位置
|
|
|
+ let dataSort = state.pageData.index.length;
|
|
|
//添加板块id
|
|
|
state.pageData.index.push({
|
|
|
- i: state.pageData.index.length,
|
|
|
+ //i: state.pageData.index.length, //base 0.0.1 此方法会导致重复的id出现
|
|
|
+ i: id,
|
|
|
x: 0,
|
|
|
y: maxY + 1,
|
|
|
w: 12,
|
|
|
h: data.h,
|
|
|
type: data.type,
|
|
|
- //content:"",
|
|
|
- //sectorData:data.jsonData
|
|
|
- content:data.jsonData
|
|
|
+ //sectorData:data.jsonData //base 0.0.1 此问题导致深层数据无法被视图渲染
|
|
|
+ content:data.jsonData,
|
|
|
+ dataSort:dataSort
|
|
|
});
|
|
|
- // console.log("当前添加的板块id:" + state.pageData.index.length);
|
|
|
- // data.jsonData.sectorId = state.pageData.index.length;
|
|
|
- // console.log("添加完毕后的数据:");
|
|
|
- // console.log(state.pageData.index);
|
|
|
+ console.log("当前添加模块的dataSort为:" + dataSort);
|
|
|
+ //当前的页面构建数据
|
|
|
+ console.log(state.pageData.index);
|
|
|
}
|
|
|
}
|
|
|
//pageStatus==2 分类页
|
|
@@ -222,15 +190,52 @@ const mutations = {
|
|
|
},
|
|
|
//删除板块
|
|
|
deleteModule(state,data){
|
|
|
+ //data.i = id
|
|
|
+ //data.dataSort = dataSort
|
|
|
//pageStatus==1 首页
|
|
|
if(state.pageStatus == 1){
|
|
|
- for(let i = 0; i < state.pageData.index.length; i++) {
|
|
|
- if(state.pageData.index[i].i == data.i) {
|
|
|
- state.pageData.index.splice(i, 1);
|
|
|
- }
|
|
|
- }
|
|
|
+ //不能这么删除,因为不按顺序删除会导致数组里面的位置法生变化
|
|
|
+ state.pageData.index.splice(data.dataSort,1);
|
|
|
Message.success('模块已删除!');
|
|
|
- console.log("删除后的数据结构:");
|
|
|
+ console.log(state.pageData.index);
|
|
|
+ }
|
|
|
+ //pageStatus==2 分类页
|
|
|
+ if(state.pageStatus == 2){}
|
|
|
+ //pageStatus==3 列表页
|
|
|
+ if(state.pageStatus == 3){}
|
|
|
+ //pageStatus==4 详情页
|
|
|
+ if(state.pageStatus == 4){}
|
|
|
+ //pageStatus==5 搜索页
|
|
|
+ if(state.pageStatus == 5){}
|
|
|
+ //pageStatus==6 自定义列表页
|
|
|
+ if(state.pageStatus == 6){}
|
|
|
+ //pageStatus==7 自定义详情页
|
|
|
+ if(state.pageStatus == 7){}
|
|
|
+ },
|
|
|
+ //设置组件样式
|
|
|
+ setComponentStyleNumber(state,data){
|
|
|
+ let id = state.editSectorId;
|
|
|
+ let dataSort = state.editDataSort;
|
|
|
+ let sort = state.editComponentSort;
|
|
|
+ let num = state.editComponentStyle;
|
|
|
+
|
|
|
+ console.log(id,dataSort,sort,num);
|
|
|
+
|
|
|
+ //pageStatus==1 首页
|
|
|
+ if(state.pageStatus == 1){
|
|
|
+ // 获取当前模块数据并进行深拷贝
|
|
|
+ let module = JSON.parse(JSON.stringify(state.pageData.index[dataSort]));
|
|
|
+ //module.content.componentList[sort].component_style = num;
|
|
|
+ //确保修改属性时 Vue 能监控到变化
|
|
|
+ Vue.set(module.content.componentList, sort, {
|
|
|
+ ...module.content.componentList[sort],
|
|
|
+ component_style: num
|
|
|
+ });
|
|
|
+ // 拷贝后直接替换原来的板块
|
|
|
+ //state.pageData.index[id] = module;
|
|
|
+ // 使用Vue.set来强制视图更新
|
|
|
+ Vue.set(state.pageData.index, dataSort, module);
|
|
|
+ console.log("当前的板块数据为:");
|
|
|
console.log(state.pageData.index);
|
|
|
}
|
|
|
//pageStatus==2 分类页
|
|
@@ -315,7 +320,7 @@ const mutations = {
|
|
|
// if (state.pageStatus == 7) {}
|
|
|
},
|
|
|
//修改首页板块高度
|
|
|
- setIndexModuleHeight(state,data){
|
|
|
+ setModuleHeight(state,data){
|
|
|
// pageStatus == 1 首页
|
|
|
if (state.pageStatus == 1) {
|
|
|
console.log(data);
|
|
@@ -368,7 +373,7 @@ const mutations = {
|
|
|
//随机生成模板
|
|
|
randomTemplate(state){
|
|
|
console.log("随机生成模板");
|
|
|
- const randomIndex = Math.floor(Math.random() * 9) + 1; // Generates a random number between 1 and 2
|
|
|
+ const randomIndex = Math.floor(Math.random() * 3); // Generates a random number between 1 and 2
|
|
|
console.log(`随机生成的数字是: ${randomIndex}`);
|
|
|
|
|
|
// pageStatus == 1 首页
|