/** * [魔方]属性组件 * 修改时间:2018年9月13日19:08:50 */ //预览自定义魔方组件 var diyHtml = "
";//1px用于解决定位偏差问题 Vue.component("rubik-cube-diy-html",{ props : ["diyHtml"], template : diyHtml, created : function(){ if(!this.$parent.data.verify) this.$parent.data.verify = []; this.$parent.data.verify.push(this.verify);//加载验证方法 this.html = this.diyHtml.replace(/"/g,'"'); }, data : function(){ return { html : "" }; }, watch : { diyHtml : function(v){ this.html = v.toString().replace(/"/g,'"'); } }, methods: { verify : function (index) { var res = { code : true, message : "" }; return res; }, }, }); //编辑属性组件 var rubikCubeHtml = '
'; rubikCubeHtml += '
'; rubikCubeHtml += '

选择风格

'; rubikCubeHtml += '
'; rubikCubeHtml += ''; rubikCubeHtml += '
'; rubikCubeHtml += ''; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '
    '; rubikCubeHtml += '
  • '; rubikCubeHtml += ''; rubikCubeHtml += '
  • '; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += ''; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += ''; rubikCubeHtml += ''; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '
{{item.text}}
'; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '
'; // rubikCubeHtml += '
'; // rubikCubeHtml += '

间隙设置

'; // rubikCubeHtml += ''; // rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '

魔方布局

'; // rubikCubeHtml += '

选定布局区域,在下方添加图片,建议添加比例一致的图片

'; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '
    '; // rubikCubeHtml += '
  • '; // rubikCubeHtml += '
    '; rubikCubeHtml += '
  • '; rubikCubeHtml += '
    '; rubikCubeHtml += '

    {{li.name}}

    '; rubikCubeHtml += '

    {{li.desc}}

    '; // rubikCubeHtml += '

    {{li.size}}

    '; rubikCubeHtml += '
    '; rubikCubeHtml += '
    '; rubikCubeHtml += ''; rubikCubeHtml += '
    '; rubikCubeHtml += '
  • '; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '
    '; rubikCubeHtml += '
  • '; rubikCubeHtml += ''; rubikCubeHtml += '
    '; rubikCubeHtml += '{{li.name}}'; rubikCubeHtml += ''; rubikCubeHtml += ''; rubikCubeHtml += '
    '; rubikCubeHtml += '
  • '; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '
'; // rubikCubeHtml += '

选定布局区域,在下方添加图片,建议添加比例一致的图片

'; rubikCubeHtml += '
'; rubikCubeHtml += '
'; rubikCubeHtml += '
'; Vue.component("rubik-cube", { props: {}, data: function () { return { windowWidth: 375, //是否显示魔方密度 isShowCustomRubikCube: false, //布局密度 customRubikCube: this.$parent.data.customRubikCube, //自定义区域集合 customRubikCubeArray: [], //已设定好的自定义区域集合 selectedRubikCubeArray: this.$parent.data.selectedRubikCubeArray, //当前选中的布局下标 selectIndex: 0, //控制魔方密度下拉框的显示隐藏 isShowRubikCubeDensity: false, //可选择的魔方模板 templateList: [], customRubikCubeList: [ {value: 4, text: "4x4"}, {value: 5, text: "5x5"}, {value: 6, text: "6x6"}, {value: 7, text: "7x7"} ], //当前编辑图片的链接地址 currentIndex: 0, data: this.$parent.data, currentList: this.$parent.data.list, } }, template: rubikCubeHtml, created: function () { this.initCustomRubikCubeArray(); this.initTemplateList(); this.calcRatio(); if (!this.$parent.data.verify) this.$parent.data.verify = []; this.$parent.data.verify.push(this.verify);//加载验证方法 this.$parent.data.ignore = ['textColor', 'elementBgColor'];//加载忽略内容 -- 其他设置中的属性设置 this.$parent.data.ignoreLoad = true; // 等待忽略数组赋值后加载 }, methods: { //初始化自定义区域集合 initCustomRubikCubeArray: function () { for (var i = 0; i < this.customRubikCube; i++) { for (var j = 0; j < this.customRubikCube; j++) { var obj = { coordinates: (i + 1) + ":" + (j + 1), row: (i + 1), //行 column: (j + 1), //列 selected: false, //是否已选择 start: false, //开始 finish: false, //是否已设定 ranksNumber: "", //行列数量 selectedCoordinates: [] //已选择的行列 }; this.customRubikCubeArray.push(obj); } } // console.log(JSON.stringify(this.customRubikCubeArray)); }, //初始化可选择的模板集合 initTemplateList: function () { this.templateList.push({ name: "1行2个", src: 'iconyihangliangge', className: "row1-of2", dimensionScale: [{desc: "宽度50%", size: "200px * 200px", name: "图一"}, { desc: "宽度50%", size: "200px * 200px", name: "图二" }], descAux: "选定布局区域,在下方添加图片,建议添加尺寸一致的图片,宽度最小建议为:200px" }); this.templateList.push({ name: "1行3个", src: 'iconyihangsange', className: "row1-of3", dimensionScale: [{desc: "宽度33.33%", size: "200px * 200px", name: "图一"}, { desc: "宽度33.33%", size: "200px * 200px", name: "图二" }, {desc: "宽度33.33%", size: "200px * 200px", name: "图三"}], descAux: "选定布局区域,在下方添加图片,建议添加尺寸一致的图片,宽度最小建议为:130px" }); this.templateList.push({ name: "1行4个", src: 'iconyihangsige', className: "row1-of4", dimensionScale: [{desc: "宽度25%", size: "200px * 200px", name: "图一"}, { desc: "宽度25%", size: "200px * 200px", name: "图二" }, {desc: "宽度25%", size: "200px * 200px", name: "图三"}, { desc: "宽度25%", size: "200px * 200px", name: "图四" },], descAux: "选定布局区域,在下方添加图片,建议添加尺寸一致的图片,宽度最小建议为:100px" }); this.templateList.push({ name: "2左2右", src: 'iconmofang-liangzuoliangyou', className: "row2-lt-of2-rt", dimensionScale: [{desc: "宽度50%", size: "200px * 200px", name: "图一"}, { desc: "宽度50%", size: "200px * 200px", name: "图二" }, {desc: "宽度50%", size: "200px * 200px", name: "图三"}, { desc: "宽度50%", size: "200px * 200px", name: "图四" }], descAux: "选定布局区域,在下方添加图片,建议添加尺寸一致的图片,宽度最小建议为:200px" }); this.templateList.push({ name: "1左2右", src: 'iconmofang-yizuoliangyou', className: "row1-lt-of2-rt", dimensionScale: [{desc: "宽度50% * 高度100%", size: "200px * 400px", name: "图一"}, { desc: "宽度50% * 高度50%", size: "200px * 200px", name: "图二" }, {desc: "宽度50% * 高度50%", size: "200px * 200px", name: "图三"}], descAux: "选定布局区域,在下方添加图片,宽度最小建议为:200px,右侧两张图片高度一致,左侧图片高度为右侧两张图片高度之和(例:左侧图片尺寸:200px * 300px,右侧两张图片尺寸:200px * 150px)" }); this.templateList.push({ name: "1上2下", src: 'iconmofang-yishangliangxia', className: "row1-tp-of2-bm", dimensionScale: [{desc: "宽度100% * 高度50%", size: "400px * 200px", name: "图一"}, { desc: "宽度50% * 高度50%", size: "200px * 200px", name: "图二" }, {desc: "宽度50% * 高度50%", size: "200px * 200px", name: "图三"}], descAux: "选定布局区域,在下方添加图片,上方一张图片的宽度为下方两张图片宽度之和,下放两张图片尺寸一致,高度可根据实际需求自行确定(例:上方图片尺寸:400px * 150px,下方两张图片尺寸:200px * 150px)" }); this.templateList.push({ name: "1左3右", src: 'iconxuanzemoban-yizuosanyou', className: "row1-lt-of1-tp-of2-bm", dimensionScale: [{desc: "宽度50% * 高度100%", size: "200px * 400px", name: "图一"}, { desc: "宽度50% * 高度50%", size: "200px * 200px", name: "图二" }, {desc: "宽度25% * 高度50%", size: "100px * 200px", name: "图三"}, { desc: "宽度25% * 高度50%", size: "100px * 200px", name: "图四" }], descAux: "选定布局区域,在下方添加图片,左右两侧内容宽高相同,右侧上下区域高度各占50%,右侧内容下半部分两张图片的宽度相同,各占右侧内容宽度的50%(例:左侧图片尺寸:200px * 400px,右侧上半部分图片尺寸:200px * 200px,右侧下半部分两张图片尺寸:100px * 200px)" }); // this.templateList.push({ name : "自定义", src : prefix + "/rubik_cube_diy.png", className : "custom-rubik-cube", dimensionScale : [] }); //初始化加载时 for (var i = 0; i < this.templateList.length; i++) { if (this.templateList[i].className == this.$parent.data.mode) { //判断当前选中模板是否为自定义区域,然后进行特殊处理 if (this.templateList[i].dimensionScale.length == 0) { this.isShowCustomRubikCube = true;//显示自定义 } } } }, //切换选中模板 changeTemplateList: function (v) { this.isShowCustomRubikCube = false; for (var i = 0; i < this.templateList.length; i++) { if (i == v) { this.$parent.data.mode = this.templateList[i].className; //自定义区域特殊处理 if (this.templateList[i].dimensionScale.length == 0) { this.isShowCustomRubikCube = true; //清空链接地址的数据 this.currentList.length = 0; this.selectedRubikCubeArray.length = 0; } else { var count = this.templateList[i].dimensionScale.length; //重置当前编辑的图片集合 //数量不够,进行添加 if (count > this.currentList.length) { for (var j = 0; j < count; j++) { if ((j + 1) > this.currentList.length) this.currentList.push({ imageUrl: "", imgWidth: 0, imgHeight: 0, previewWidth: 0, previewHeight: 0, link: {name: ""} }); } } else { //数量不相同时,并且数量超出,减去 if (count != this.currentList.length) { for (var j = 0; j < this.currentList.length; j++) { if ((j + 1) > count) { this.currentList.splice(j, 1); j = 0; } } //设置当前选中为最后一个 this.currentIndex = this.currentList.length - 1; } } } } } this.templateList.push({}); this.templateList.pop(); this.calcRatio(); }, //选中当前编辑的布局 changeCurrentIndex: function (index) { this.currentIndex = index; }, calcRatio: function () { var singleRow = { 'row1-of2': { ratio: 2, width: '50%' }, 'row1-of3': { ratio: 3, width: '33.33%' }, 'row1-of4': { ratio: 4, width: '25%' } }; if (singleRow[this.data.mode]) { this.calcSingleRow(singleRow[this.data.mode]); } else if (this.data.mode == 'row2-lt-of2-rt') { this.calcFourSquare(); } else if (this.data.mode == 'row1-lt-of2-rt') { this.calcRowOneLeftOfTwoRight(); } else if (this.data.mode == 'row1-tp-of2-bm') { this.calcRowOneTopOfTwoBottom(); } else if (this.data.mode == 'row1-lt-of1-tp-of2-bm') { this.calcRowOneLeftOfOneTopOfTwoBottom(); } }, /** * 魔方:单行多个,平分宽度 * 公式: * 宽度:屏幕宽度/2,示例:375/2=187.5 * 比例:原图高/原图宽,示例:322/690=0.46 * 高度:宽度*比例,示例:187.5*0.46=86.25 */ calcSingleRow: function (params) { let maxHeight = 0; this.currentList.forEach((item, index) => { let ratio = item.imgHeight / item.imgWidth; // 获取原图比例 if (isNaN(ratio)) ratio = 0; let width = this.windowWidth - (this.data.margin.both * 2); // 减去左右间距 if (this.data.imageGap > 0) { width -= params.ratio * this.data.imageGap ; // 减去间隙 } item.previewWidth = width / params.ratio; item.previewHeight = item.previewWidth * ratio; // 获取最大高度 if (maxHeight == 0 || maxHeight < item.previewHeight) maxHeight = item.previewHeight; }); this.currentList.forEach((item, index) => { item.previewHeight = item.previewHeight.toFixed(2); item.previewHeight = maxHeight + 'px'; }); }, /** * 魔方:四方型,各占50% */ calcFourSquare: function () { let maxHeightFirst = 0; let maxHeightTwo = 0; this.currentList.forEach((item, index) => { var ratio = item.imgHeight / item.imgWidth; // 获取原图比例 if (isNaN(ratio)) ratio = 0; item.previewWidth = this.windowWidth / 2; item.previewWidth -= this.data.margin.both * 2; item.previewHeight = item.previewWidth * ratio; // 获取每行最大高度 if (index <= 1) { if (maxHeightFirst == 0 || maxHeightFirst < item.previewHeight) { maxHeightFirst = item.previewHeight; } } else if (index > 1) { if (maxHeightTwo == 0 || maxHeightTwo < item.previewHeight) { maxHeightTwo = item.previewHeight; } } }); this.currentList.forEach((item, index) => { item.previewHeight = item.previewHeight.toFixed(2); if (index <= 1) { item.previewHeight = maxHeightFirst + 'px'; } else if (index > 1) { item.previewHeight = maxHeightTwo + 'px'; } }); }, /** * 魔方:1左2右 * 如果右侧2图宽度一致,则 */ calcRowOneLeftOfTwoRight: function () { let rightHeight = 0; // 右侧两图平分高度 let divide = 'left'; // 划分规则,left:左,right:右 if (this.currentList[1].imgWidth === this.currentList[2].imgWidth) divide = 'right'; this.currentList.forEach((item, index) => { if (index === 0) { var ratio = item.imgHeight / item.imgWidth; // 获取左图的尺寸比例 if (isNaN(ratio)) ratio = 0; item.previewWidth = this.windowWidth / 2; item.previewWidth -= this.data.margin.both * 2; item.previewHeight = item.previewWidth * ratio; rightHeight = item.previewHeight / 2; } else { item.previewWidth = this.currentList[0].previewWidth; item.previewHeight = rightHeight; } }); this.currentList.forEach((item, index) => { if (index == 0) { item.previewHeight += (this.data.imageGap); } item.previewHeight = item.previewHeight.toFixed(2); item.previewHeight += 'px'; }); }, /** * 魔方:1上2下 */ calcRowOneTopOfTwoBottom: function () { var maxHeight = 0; this.currentList.forEach((item, index) => { var ratio = item.imgHeight / item.imgWidth; // 获取左图的尺寸比例 if (isNaN(ratio)) ratio = 0; if (index == 0) item.previewWidth = this.windowWidth; else if (index > 0) item.previewWidth = this.windowWidth / 2; item.previewWidth -= this.data.margin.both * 2; item.previewHeight = item.previewWidth * ratio; // 获取最大高度 if (index > 0 && (maxHeight == 0 || maxHeight < item.previewHeight)) maxHeight = item.previewHeight.toFixed(2); }); this.currentList.forEach((item, index) => { item.previewWidth += 'px'; if (index > 0) { item.previewHeight = maxHeight + 'px'; } else { item.previewHeight = item.previewHeight.toFixed(2); item.previewHeight += 'px'; } }); }, /** * 魔方:1左3右 */ calcRowOneLeftOfOneTopOfTwoBottom: function () { this.currentList.forEach((item, index) => { // 左图 if (index == 0) { var ratio = item.imgHeight / item.imgWidth; // 获取原图比例 if (isNaN(ratio)) ratio = 0; item.previewWidth = this.windowWidth / 2; item.previewWidth -= this.data.margin.both; item.previewHeight = item.previewWidth * ratio; } else if (index == 1) { item.previewWidth = this.windowWidth / 2; item.previewWidth -= this.data.margin.both; item.previewHeight = this.currentList[0].previewHeight / 2; } else if (index > 1) { item.previewWidth = this.currentList[0].previewWidth / 2; item.previewHeight = this.currentList[0].previewHeight / 2; } }); this.currentList.forEach((item, index) => { if (index == 0) { item.previewHeight += (this.data.imageGap); } item.previewHeight = item.previewHeight.toFixed(2); item.previewHeight += 'px'; }); }, //自定义魔方区域点击事件 customRubikCubeClick: function (position) { if (this.customRubikCubeArray[position].start && !this.customRubikCubeArray[position].selected) { // console.log("当前操作还没有结束,不能继续操作哦"); return; } //再次点击确定 if (this.customRubikCubeArray[position].selected) { var ranksNumber = ""; var selectedCoordinates = ""; var positionXY = ""; for (var i = 0; i < this.customRubikCubeArray.length; i++) { if (this.customRubikCubeArray[i].selected && this.customRubikCubeArray[i].start) { ranksNumber = this.customRubikCubeArray[i].ranksNumber;//行列数量 selectedCoordinates = this.customRubikCubeArray[i].selectedCoordinates;//已选中的坐标集合 } if (this.customRubikCubeArray[i].selected && !this.customRubikCubeArray[i].finish) { if (positionXY == "") positionXY = $(this.$refs.rubikCube[i]).position(); } } var rowCount = ranksNumber.split(":")[0];//选中的总行数 var columnCount = ranksNumber.split(":")[1];//选中的总列数 //按照百分比计算宽高 var width = (100 / this.customRubikCube) * columnCount; var height = (100 / this.customRubikCube) * rowCount; //left值采用百分比计算,公式:(同一行中当前魔方位置之前的宽度总和) //公式:(当前列-1) * (100/魔方密度) var left = (selectedCoordinates[0].split(":")[1] - 1) * (100 / this.customRubikCube); //1:4 2:4 第四列 left = (4-1)*25 = 75 //3:3 4:3 第三列 left = (3-1)*25 = 50 //3:2 3:3 4:2 4:3 第二列、第三列 //2:3 2:4 3:3 3:4 第三列、第四列 //1:3 1:4 2:3 2:4 3:3 3:4 4:3 4:4 第三列、第四列 var selectedRubikCube = { proportion: rowCount + ":" + columnCount, selected: true, top: positionXY.top + "px", left: left + "%", width: (width + 0.0) + "%", height: (height + 0.0) + "%", lineHeight: 0 + "px", selectedCoordinates: selectedCoordinates }; for (var i = 0; i < this.selectedRubikCubeArray.length; i++) { this.selectedRubikCubeArray[i].selected = false; } this.selectedRubikCubeArray.push(selectedRubikCube); for (var i = 0; i < this.customRubikCubeArray.length; i++) { //将当前选中的设置为已完成(表示不可操作了) if (this.customRubikCubeArray[i].selected) { this.customRubikCubeArray[i].finish = true; } //删除开始位置 if (this.customRubikCubeArray[i].selected && this.customRubikCubeArray[i].start) { this.customRubikCubeArray[i].start = false; } } this.currentList.push({imageUrl: "", link: {name: ""}}); //默认选择当前添加的下标 this.changeCurrentIndex(this.currentList.length - 1); // console.log(JSON.stringify(this.currentList)); // console.log(JSON.stringify(this.selectedRubikCubeArray)); //计算当前添加的自定义魔方区域的行高,用于将图片进行垂直居中 setTimeout(function () { selectedRubikCube.lineHeight = $(".draggable-element.selected .rubik-cube .layout div.selected-rubik-cube.selected").outerHeight() + "px"; }, 100); } else { //设置当前自定义模块的开始位置,并且设定好它可以如何选中 for (var i = 0; i < this.customRubikCubeArray.length; i++) { if (i == position) { this.customRubikCubeArray[i].start = true; this.customRubikCubeArray[i].selected = true; } else { this.customRubikCubeArray[i].start = false; } } } }, //自定义魔方区域 customRubikCubeMouseMove: function (position) { //当前坐标 var currentMoveCoordinates = this.customRubikCubeArray[position].coordinates; var coordinates = ""; for (var i = 0; i < this.customRubikCubeArray.length; i++) { //找到开始位置 if (this.customRubikCubeArray[i].selected && this.customRubikCubeArray[i].start) { coordinates = this.customRubikCubeArray[i].coordinates; break; } } //清空 for (var j = 0; j < this.customRubikCubeArray.length; j++) { if (this.customRubikCubeArray[j].coordinates != coordinates && !this.customRubikCubeArray[j].finish) { this.customRubikCubeArray[j].selected = false; } } if (coordinates != "") { //开始行列 var rowStart = coordinates.split(":")[0]; var columnStart = coordinates.split(":")[1]; //结束行列 var rowEnd = parseInt(currentMoveCoordinates.split(":")[0]); var columnEnd = parseInt(currentMoveCoordinates.split(":")[1]); var tempRow = rowStart; //如果开始行大于结束行,则开始行用结束行,结束行用开始行 if (rowStart > rowEnd) { rowStart = rowEnd; rowEnd = tempRow; } var tempColumn = columnStart; //如果开始列大于结束列,则开始列用结束列,结束列用开始列 if (columnStart > columnEnd) { columnStart = columnEnd; columnEnd = tempColumn; } var rowCount = 0; //总行数 var columnCount = new Array(); //总列数 var isAdd = true; var selectedCoordinates = new Array(); //遍历行 for (rowStart; rowStart <= rowEnd; rowStart++) { rowCount++; //遍历列 for (var i = columnStart; i <= columnEnd; i++) { //当前行列坐标 var currentCoordinates = rowStart + ":" + i; //检测当前的模块是否被占用,如果被占用,那么整个都不能选择 for (var j = 0; j < this.customRubikCubeArray.length; j++) { if (this.customRubikCubeArray[j].coordinates == currentCoordinates && this.customRubikCubeArray[j].finish) { isAdd = false; break; } } if ($.inArray(i, columnCount) == -1) columnCount.push(i); selectedCoordinates.push(currentCoordinates); for (var j = 0; j < this.customRubikCubeArray.length; j++) { if (this.customRubikCubeArray[j].coordinates == currentCoordinates) { this.customRubikCubeArray[j].selected = true; } } } } if (!isAdd) { for (var j = 0; j < this.customRubikCubeArray.length; j++) { if (this.customRubikCubeArray[j].selected && !this.customRubikCubeArray[j].finish) { this.customRubikCubeArray[j].selected = false; } } for (var j = 0; j < this.customRubikCubeArray.length; j++) { if (this.customRubikCubeArray[j].start) { this.customRubikCubeArray[j].selected = true; } } } for (var j = 0; j < this.customRubikCubeArray.length; j++) { if (this.customRubikCubeArray[j].selected && this.customRubikCubeArray[j].start) { this.customRubikCubeArray[j].ranksNumber = rowCount + ":" + columnCount.length; this.customRubikCubeArray[j].selectedCoordinates = selectedCoordinates; } } this.customRubikCubeArray.push({}); this.customRubikCubeArray.pop(); } }, //点击已设定好的自定义区域 selectedRubikCubeClick: function (position) { for (var i = 0; i < this.selectedRubikCubeArray.length; i++) { if (i == position) { this.selectedRubikCubeArray[i].selected = true; } else { this.selectedRubikCubeArray[i].selected = false; } } this.changeCurrentIndex(position); }, //删除已设定好的自定义区域 deleteSelectedRubikCubeClick: function (position) { var selectedCoordinates = this.selectedRubikCubeArray[position].selectedCoordinates; for (var i = 0; i < selectedCoordinates.length; i++) { for (var j = 0; j < this.customRubikCubeArray.length; j++) { if (this.customRubikCubeArray[j].coordinates == selectedCoordinates[i]) { this.customRubikCubeArray[j].selected = false; this.customRubikCubeArray[j].finish = false; this.customRubikCubeArray[j].ranksNumber = ""; } } } this.currentList.splice(position, 1); //删除后应该选择最后一个 this.changeCurrentIndex(this.currentList.length - 1); for (var i = 0; i < this.selectedRubikCubeArray.length; i++) { if (this.currentIndex == i) { this.selectedRubikCubeArray[i].selected = true; break; } } this.customRubikCubeArray.push({}); this.customRubikCubeArray.pop(); this.selectedRubikCubeArray.splice(position, 1); }, //刷新自定义区域Html代码 refreshDiyHtml: function () { this.calcRatio(); if (this.isShowCustomRubikCube) { var self = this; setTimeout(function () { var height = $(".draggable-element.selected .rubik-cube .layout div.selected-rubik-cube.have-image").parent().outerHeight() + "px"; var diy = $(".draggable-element.selected .rubik-cube .layout div.selected-rubik-cube.have-image").clone(); var diyHtml = '
'; diy.each(function () { $(this).find(".del").remove(); $(this).find("span").remove(); diyHtml += $(this).prop("outerHTML"); }); diyHtml += "
"; self.$parent.data.diyHtml = diyHtml.replace(/"/g, """).replace(/z-index: 1/g, ""); }, 100); } }, //监听链接地址回调,更新diyHtml linkCallBack: function (index) { this.refreshDiyHtml(); }, verify: function (index) { var res = {code: true, message: ""}; if (vue.data[index].mode === "custom-rubik-cube") { //自定义魔方,不能有空缺 var customRubikCubeArray = new Array(); var selectedCount = 0;//选择数量 for (var i = 0; i < this.customRubikCube; i++) { for (var j = 0; j < this.customRubikCube; j++) { customRubikCubeArray.push((i + 1) + ":" + (j + 1)); } } for (var i = 0; i < this.customRubikCube; i++) { for (var j = 0; j < this.customRubikCube; j++) { customRubikCubeArray.push((i + 1) + ":" + (j + 1)); } } for (var i = 0; i < customRubikCubeArray.length; i++) { for (var j = 0; j < this.selectedRubikCubeArray.length; j++) { var selectedCoordinates = this.selectedRubikCubeArray[j].selectedCoordinates; for (var k = 0; k < selectedCoordinates.length; k++) { if (customRubikCubeArray[i] == selectedCoordinates[k]) { selectedCount++; } } } } if (selectedCount != customRubikCubeArray.length) { res.code = false; res.message = "自定义魔方必须填满,不能有空缺哦"; } } for (var i = 0; i < this.currentList.length; i++) { var item = this.currentList[i]; if (!item.imageUrl) { res.code = false; res.message = "请上传图片"; break; } } return res; }, customRubikCubeFn(item,index){ this.customRubikCube=item.value; this.isShowRubikCubeDensity=false; this.selectIndex=index; //自定义区域集合 this.customRubikCubeArray.splice(0, this.customRubikCubeArray.length); this.selectedRubikCubeArray.splice(0, this.selectedRubikCubeArray.length); this.initCustomRubikCubeArray(); } }, watch: { /** * 监听集合,更新自定义区域Html代码 */ currentList: function () { this.refreshDiyHtml(); } } });