/** * [图片导航的图片]·组件 */ var quickNavListHtml = '
'; Vue.component("quick-nav-list", { template: quickNavListHtml, data: function () { return { data: this.$parent.data, list: this.$parent.data.list, ornamentList: [ { type: 'default', text: '默认', }, { type: 'shadow', text: '投影', }, { type: 'stroke', text: '描边', }, ], }; }, created: function () { if (!this.$parent.data.verify) this.$parent.data.verify = []; this.$parent.data.verify.push(this.verify);//加载验证方法 this.$parent.data.ignore = ['textColor', 'elementBgColor', 'elementAngle'];//加载忽略内容 -- 其他设置中的属性设置 this.$parent.data.ignoreLoad = true; // 等待忽略数组赋值后加载 // 组件所需的临时数据 this.$parent.data.tempData = { ...this.$parent.data.tempData, ornamentList: this.ornamentList, methods: { addNav: this.addNav } }; this.list.forEach(function (e, i) { if(!e.id) e.id = ns.gen_non_duplicate(6); }); this.$parent.data.list = this.list; var moveBeforeIndex = 0; var _this = this; setTimeout(function () { var componentIndex = _this.data.index; $('[data-index="' + componentIndex + '"] .navigation-set-list').DDSort({ target: 'li', floatStyle: { 'border': '1px solid #ccc', 'background-color': '#fff' }, //设置可拖拽区域 draggableArea: "icontuodong", down: function (index) { moveBeforeIndex = index; }, up: function () { var index = $(this).index(); var temp = _this.list[moveBeforeIndex]; _this.list.splice(moveBeforeIndex, 1); _this.list.splice(index, 0, temp); _this.$parent.data.list = _this.list; } }); }) }, methods: { addNav() { this.list.push({ "title": "", "icon": "", "iconType": "img", "imageUrl": "", "style": { "fontSize": "60", "iconBgColor": [], "iconBgColorDeg": 0, "iconBgImg": "", "bgRadius": 0, "iconColor": [ "#000000" ], "iconColorDeg": 0 }, "link": { "name": "" }, "bgColorStart": "", "bgColorEnd": "", "textColor": "#303133", id: ns.gen_non_duplicate(6) }); }, verify: function (index) { var res = {code: true, message: ""}; $(".draggable-element[data-index='" + index + "'] .quick-navigation .quick-nav-list .navigation-set-list>li").each(function (i) { if (vue.data[index].list[i].title === "") { res.code = false; res.message = "请输入标题"; $(this).find("input[name='title']").attr("style", "border-color:red !important;").focus(); return res; } else { $(this).find("input[name='title']").removeAttr("style"); } }); return res; } } }); var quickUploadImgHtml = '
'; quickUploadImgHtml += ''; quickUploadImgHtml += '
'; quickUploadImgHtml += '
'; quickUploadImgHtml += '
'; quickUploadImgHtml += '
'; quickUploadImgHtml += '
'; Vue.component("quick-image-upload", { template: quickUploadImgHtml, props: { data: { type: Object, default: function () { return { data: {}, field: "", callback: null }; } } }, data: function () { return { myData: this.data, list: [], parent: this.$parent.data, id: '', colorPicker:{} }; }, created: function () { this.id = ns.gen_non_duplicate(10); }, methods: { // 选择图标风格 iconStyle(event) { var self = this; selectIconStyle({ elem: event.currentTarget, icon: self.myData.data.icon, callback: function (data) { if (data) { self.myData.data.style = data; } else { iconStyleSet({ style: JSON.stringify(self.myData.data.style), query: { icon: self.myData.data.icon } }, function (style) { self.myData.data.style = style; }) } } }) }, /** * 渲染颜色组件 * @param id * @param color * @param callback */ colorRender(id, color, callback) { var self = this; if (this.colorPicker[id]) return; setTimeout(function () { self.colorPicker[id] = Colorpicker.create({ el: id, color: color, change: function (elem, hex) { callback(elem, hex) } }); $('#' + id).click(); }, 10) }, selectColor(id) { let self = this; this.colorRender(id, '', function (elem, color) { if (self.myData.data.style['iconBgImg'] || self.myData.data.style['iconBgColor'].length) { self.myData.data.style['iconBgColor'] = [color]; } else { self.myData.data.style['iconColor'] = [color]; } self.$forceUpdate(); }) }, } });