design.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  1. // 顶部内容组件
  2. var presaleTopConHtml = '<div>';
  3. presaleTopConHtml += '<template v-if="data.style == 1">';
  4. presaleTopConHtml += '<div class="goods-head">';
  5. presaleTopConHtml += '<div class="title-wrap">';
  6. presaleTopConHtml += '<template v-for="(item, index) in list" v-if="item.style == 1">';
  7. presaleTopConHtml += '<div class="left-icon" v-if="item.imageUrl && item.imageUrl.split(\'/\')[0] == \'public\'"><img v-bind:src="imgUrl1" /></div>';
  8. presaleTopConHtml += '<div class="left-icon" v-if="item.imageUrl && item.imageUrl.split(\'/\')[0] != \'public\'"><img v-bind:src="$parent.$parent.changeImgUrl(item.imageUrl)" /></div>';
  9. presaleTopConHtml += '<span class="name">{{item.title}}</span>';
  10. presaleTopConHtml += '</template>';
  11. presaleTopConHtml += '</div>';
  12. presaleTopConHtml += '<div class="more violet" v-if="data.bgSelect==\'violet\'">';
  13. presaleTopConHtml += '<span>';
  14. presaleTopConHtml += '<span style="color: #8662FD;">更多</span>';
  15. presaleTopConHtml += '<span style="color: #627BFD;">预售</span>';
  16. presaleTopConHtml += '</span>';
  17. presaleTopConHtml += '<i class="iconfont iconyoujiantou" style="color: #627BFD;"></i>';
  18. presaleTopConHtml += '</div>';
  19. presaleTopConHtml += '<div class="more red" v-if="data.bgSelect==\'red\'">';
  20. presaleTopConHtml += '<span>';
  21. presaleTopConHtml += '<span style="color: #FF7B91;">更多</span>';
  22. presaleTopConHtml += '<span style="color: #FF5151;">预售</span>';
  23. presaleTopConHtml += '</span>';
  24. presaleTopConHtml += '<i class="iconfont iconyoujiantou" style="color: #FF5151;"></i>';
  25. presaleTopConHtml += '</div>';
  26. presaleTopConHtml += '<div class="more blue" v-if="data.bgSelect==\'blue\'">';
  27. presaleTopConHtml += '<span>';
  28. presaleTopConHtml += '<span style="color: #12D0AE;">更多</span>';
  29. presaleTopConHtml += '<span style="color: #0ECFD3;">预售</span>';
  30. presaleTopConHtml += '</span>';
  31. presaleTopConHtml += '<i class="iconfont iconyoujiantou" style="color: #0ECFD3;"></i>';
  32. presaleTopConHtml += '</div>';
  33. presaleTopConHtml += '<div class="more yellow" v-if="data.bgSelect==\'yellow\'">';
  34. presaleTopConHtml += '<span>';
  35. presaleTopConHtml += '<span style="color: #FEB632;">更多</span>';
  36. presaleTopConHtml += '<span style="color: #FE6232;">预售</span>';
  37. presaleTopConHtml += '</span>';
  38. presaleTopConHtml += '<i class="iconfont iconyoujiantou" style="color: #FE6232;"></i>';
  39. presaleTopConHtml += '</div>';
  40. presaleTopConHtml += '</div>';
  41. presaleTopConHtml += '</template>';
  42. presaleTopConHtml += '<template v-if="data.style == 2">';
  43. presaleTopConHtml += '<div class="title title-2">';
  44. presaleTopConHtml += '<div class="title-left">';
  45. presaleTopConHtml += '<template v-for="(item, index) in list" v-if="item.style == 2">';
  46. presaleTopConHtml += '<img v-if="item.imageUrl && item.imageUrl.split(\'/\')[0] == \'public\'" :src="imgUrl2" />';
  47. presaleTopConHtml += '<img v-if="item.imageUrl && item.imageUrl.split(\'/\')[0] != \'public\'" :src="$parent.$parent.changeImgUrl(item.imageUrl)" />';
  48. presaleTopConHtml += '</template>';
  49. presaleTopConHtml += '</div>';
  50. presaleTopConHtml += '<div class="title-right">更多预售<i class="iconfont iconyoujiantou"></i></div>';
  51. presaleTopConHtml += '</div>';
  52. presaleTopConHtml += '</template>';
  53. presaleTopConHtml += '<template v-if="data.style == 3">';
  54. presaleTopConHtml += '<div class="title title-3">';
  55. presaleTopConHtml += '<div class="title-left">';
  56. presaleTopConHtml += '<template v-for="(item, index) in list" v-if="item.style == 3">';
  57. presaleTopConHtml += '<img v-if="item.imageUrl && item.imageUrl.split(\'/\')[0] == \'public\'" :src="imgUrl3" />';
  58. presaleTopConHtml += '<img v-if="item.imageUrl && item.imageUrl.split(\'/\')[0] != \'public\'" :src="$parent.$parent.changeImgUrl(item.imageUrl)" />';
  59. presaleTopConHtml += '</template>';
  60. presaleTopConHtml += '</div>';
  61. presaleTopConHtml += '</div>';
  62. presaleTopConHtml += '</template>';
  63. /* presaleTopConHtml += '<div class="more ns-red-color" v-if="listMore.title">';
  64. presaleTopConHtml += '<span v-bind:style="{color: data.moreTextColor?data.moreTextColor:\'rgba(0,0,0,0)\'}">{{listMore.title}}</span>';
  65. presaleTopConHtml += '<div class="right-icon" v-if="listMore.imageUrl"><img v-bind:src="$parent.$parent.changeImgUrl(listMore.imageUrl)" /></div>';
  66. presaleTopConHtml += '<i class="iconfont iconyoujiantou" v-else v-bind:style="{color: data.moreTextColor?data.moreTextColor:\'rgba(0,0,0,0)\'}"></i>';
  67. presaleTopConHtml += '</div>'; */
  68. presaleTopConHtml +='</div>';
  69. Vue.component("presale-top-content", {
  70. data: function () {
  71. return {
  72. data: this.$parent.data,
  73. list: this.$parent.data.list,
  74. listMore: this.$parent.data.listMore,
  75. imgUrl1: "",
  76. imgUrl2: "",
  77. imgUrl3: ""
  78. }
  79. },
  80. created: function () {
  81. this.imgUrl1 = ns.img(this.list[0].imageUrl);
  82. this.imgUrl2 = ns.img(this.list[1].imageUrl);
  83. this.imgUrl3 = ns.img(this.list[2].imageUrl);
  84. if(!this.$parent.data.verify) this.$parent.data.verify = [];
  85. this.$parent.data.verify.push(this.verify);//加载验证方法
  86. },
  87. methods: {
  88. verify : function () {
  89. var res = { code : true, message : "" };
  90. return res;
  91. },
  92. },
  93. template: presaleTopConHtml
  94. });
  95. /**
  96. * 空的验证组件,后续如果增加业务,则更改组件
  97. */
  98. var presaleListHtml = '<div class="goods-list-edit layui-form">';
  99. presaleListHtml += '<div class="layui-form-item ns-icon-radio">';
  100. presaleListHtml += '<label class="layui-form-label sm">商品来源</label>';
  101. presaleListHtml += '<div class="layui-input-block">';
  102. presaleListHtml += '<template v-for="(item, index) in goodsSources" v-bind:k="index">';
  103. presaleListHtml += '<span :class="[item.value == data.sources ? \'\' : \'layui-hide\']">{{item.text}}</span>';
  104. presaleListHtml += '</template>';
  105. presaleListHtml += '<ul class="ns-icon">';
  106. presaleListHtml += '<li v-for="(item, index) in goodsSources" v-bind:k="index" :class="[item.value == data.sources ? \'ns-text-color ns-border-color ns-bg-color-diaphaneity\' : \'\']" @click="data.sources=item.value">';
  107. presaleListHtml += '<img v-if="item.value == data.sources" :src="item.selectedSrc" />'
  108. presaleListHtml += '<img v-else :src="item.src" />'
  109. presaleListHtml += '</li>';
  110. presaleListHtml += '</ul>';
  111. /* presaleListHtml += '<template v-for="(item,index) in goodsSources" v-bind:k="index">';
  112. presaleListHtml += '<div v-on:click="data.sources=item.value" v-bind:class="{ \'layui-unselect layui-form-radio\' : true,\'layui-form-radioed\' : (data.sources==item.value) }"><i class="layui-anim layui-icon">&#xe63f;</i><div>{{item.text}}</div></div>';
  113. presaleListHtml += '</template>'; */
  114. presaleListHtml += '</div>';
  115. presaleListHtml += '</div>';
  116. presaleListHtml += '<div class="layui-form-item" v-if="data.sources == \'diy\'">';
  117. presaleListHtml += '<label class="layui-form-label sm">手动选择</label>';
  118. presaleListHtml += '<div class="layui-input-block">';
  119. presaleListHtml += '<a href="#" class="ns-input-text selected-style" v-on:click="addGoods">选择<i class="layui-icon layui-icon-right"></i></a>';
  120. presaleListHtml += '</div>';
  121. presaleListHtml += '</div>';
  122. /* presaleListHtml += '<div class="layui-form-item" v-show="data.sources == \'default\'">';
  123. presaleListHtml += '<label class="layui-form-label sm">商品数量</label>';
  124. presaleListHtml += '<div class="layui-input-block">';
  125. presaleListHtml += '<input type="number" class="layui-input goods-account" v-on:keyup="shopNum" v-model="data.goodsCount"/>';
  126. presaleListHtml += '</div>';
  127. presaleListHtml += '</div>';
  128. presaleListHtml += '<div class="layui-form-item" v-show="data.sources == \'default\'">';
  129. presaleListHtml += '<label class="layui-form-label sm"></label>';
  130. presaleListHtml += '<div class="layui-input-block">';
  131. presaleListHtml += '<template v-for="(item,index) in goodsCount" v-bind:k="index">';
  132. presaleListHtml += '<div v-on:click="data.goodsCount=item" v-bind:class="{ \'layui-unselect layui-form-radio\' : true,\'layui-form-radioed\' : (data.goodsCount==item) }"><i class="layui-anim layui-icon">&#xe63f;</i><div>{{item}}</div></div>';
  133. presaleListHtml += '</template>';
  134. presaleListHtml += '</div>';
  135. presaleListHtml += '</div>'; */
  136. presaleListHtml += '<slide v-bind:data="{ field : \'goodsCount\', label: \'商品数量\', max: 9, min: 1}" v-show="data.sources == \'default\'"></slide>';
  137. // presaleListHtml += '<p class="hint">商品数量选择 0 时,前台会自动上拉加载更多</p>';
  138. presaleListHtml += '</div>';
  139. var select_goods_list = []; //配合商品选择器使用
  140. Vue.component("presale-list", {
  141. template: presaleListHtml,
  142. data: function () {
  143. return {
  144. data: this.$parent.data,
  145. goodsSources: [
  146. {
  147. text: "默认",
  148. value: "default",
  149. src: presaleResourcePath + "/presale/img/goods.png",
  150. selectedSrc: presaleResourcePath + "/presale/img/goods_1.png"
  151. },
  152. {
  153. text : "手动选择",
  154. value : "diy",
  155. src: presaleResourcePath + "/presale/img/manual.png",
  156. selectedSrc: presaleResourcePath + "/presale/img/manual_1.png"
  157. }
  158. ],
  159. categoryList: [],
  160. isLoad: false,
  161. isShow: false,
  162. selectIndex: 0,//当前选中的下标
  163. goodsCount: [6, 12, 18, 24, 30],
  164. }
  165. },
  166. created:function() {
  167. if(!this.$parent.data.verify) this.$parent.data.verify = [];
  168. this.$parent.data.verify.push(this.verify);//加载验证方法
  169. },
  170. methods: {
  171. shopNum: function () {
  172. if (this.$parent.data.goodsCount > 50) {
  173. layer.msg("商品数量最多为50");
  174. this.$parent.data.goodsCount = 50;
  175. }
  176. if (this.$parent.data.goodsCount.length > 0 && this.$parent.data.goodsCount < 1) {
  177. layer.msg("商品数量不能小于0");
  178. this.$parent.data.goodsCount = 1;
  179. }
  180. },
  181. verify: function () {
  182. var res = {code: true, message: ""};
  183. if (this.data.goodsCount.length === 0) {
  184. res.code = false;
  185. res.message = "请输入商品数量";
  186. }
  187. if (this.data.goodsCount < 0) {
  188. res.code = false;
  189. res.message = "商品数量不能小于0";
  190. }
  191. if (this.data.goodsCount > 50) {
  192. res.message = "商品数量最多为50";
  193. }
  194. return res;
  195. },
  196. addGoods: function () {
  197. var self = this;
  198. goodsSelect(function (res) {
  199. // if (!res.length) return false;
  200. // self.$parent.data.goodsId = [];
  201. // for (var i = 0; i < res.length; i++) {
  202. // self.$parent.data.goodsId.push(res[i]);
  203. // }
  204. self.$parent.data.goodsId = res;
  205. }, self.$parent.data.goodsId, {mode: "spu", promotion: "presale", disabled: 0, post: post});
  206. }
  207. }
  208. });
  209. var presaleStyleHtml = '<div class="layui-form-item">';
  210. presaleStyleHtml += '<label class="layui-form-label sm">选择风格</label>';
  211. presaleStyleHtml += '<div class="layui-input-block">';
  212. // presaleStyleHtml += '<span>{{data.styleName}}</span>';
  213. presaleStyleHtml += '<div v-if="data.styleName" class="ns-input-text ns-text-color selected-style" v-on:click="selectGroupbuyStyle">{{data.styleName}} <i class="layui-icon layui-icon-right"></i></div>';
  214. presaleStyleHtml += '<div v-else class="ns-input-text selected-style" v-on:click="selectGroupbuyStyle">选择 <i class="layui-icon layui-icon-right"></i></div>';
  215. presaleStyleHtml += '</div>';
  216. presaleStyleHtml += '</div>';
  217. Vue.component("presale-style", {
  218. template: presaleStyleHtml,
  219. data: function() {
  220. return {
  221. data: this.$parent.data,
  222. }
  223. },
  224. created:function() {
  225. if(!this.$parent.data.verify) this.$parent.data.verify = [];
  226. this.$parent.data.verify.push(this.verify);//加载验证方法
  227. },
  228. methods: {
  229. verify: function () {
  230. var res = { code: true, message: "" };
  231. return res;
  232. },
  233. selectGroupbuyStyle: function() {
  234. var self = this;
  235. layer.open({
  236. type: 1,
  237. title: '风格选择',
  238. area:['930px','630px'],
  239. btn: ['确定', '返回'],
  240. content: $(".draggable-element[data-index='" + self.data.index + "'] .edit-attribute .presale-list-style").html(),
  241. success: function(layero, index) {
  242. $(".layui-layer-content input[name='style']").val(self.data.style);
  243. $(".layui-layer-content input[name='style_name']").val(self.data.styleName);
  244. $("body").on("click", ".layui-layer-content .style-list-con-presale .style-li-presale", function () {
  245. $(this).addClass("selected ns-border-color").siblings().removeClass("selected ns-border-color");
  246. $(".layui-layer-content input[name='style']").val($(this).index() + 1);
  247. $(".layui-layer-content input[name='style_name']").val($(this).find("span").text());
  248. });
  249. },
  250. yes: function (index, layero) {
  251. self.data.style = $(".layui-layer-content input[name='style']").val();
  252. self.data.styleName = $(".layui-layer-content input[name='style_name']").val();
  253. layer.closeAll()
  254. }
  255. });
  256. },
  257. }
  258. })
  259. // 图片上传
  260. var presaleTopHtml = '<ul class="fenxiao-addon-title">';
  261. presaleTopHtml += '<li>';
  262. presaleTopHtml += '<template v-if="data.style == 1">';
  263. presaleTopHtml += '<div class="layui-form-item">';
  264. presaleTopHtml += '<label class="layui-form-label sm">左侧图标</label>';
  265. presaleTopHtml += '<template v-for="(item, index) in list" v-if="item.style == data.style">';
  266. presaleTopHtml += '<div class="layui-input-block ns-img-upload">';
  267. presaleTopHtml += '<img-sec-upload v-bind:data="{ data : item, text: \'\' }"></img-sec-upload>';
  268. presaleTopHtml += '</div>';
  269. presaleTopHtml += '<div class="ns-word-aux ns-diy-word-aux">建议上传图标大小:125px * 30px</div>';
  270. presaleTopHtml += '</template>';
  271. presaleTopHtml += '</div>';
  272. // presaleTopHtml += '<img-upload v-bind:data="{ data : list }"></img-upload>';
  273. presaleTopHtml += '<div class="content-block">';
  274. presaleTopHtml += '<div class="layui-form-item">';
  275. presaleTopHtml += '<label class="layui-form-label sm">标题内容</label>';
  276. presaleTopHtml += '<template v-for="(item, index) in list" v-if="item.style == data.style">';
  277. presaleTopHtml += '<div class="layui-input-block">';
  278. presaleTopHtml += '<input type="text" name=\'title\' v-model="item.title" class="layui-input" />';
  279. presaleTopHtml += '</div>';
  280. presaleTopHtml += '</template>';
  281. presaleTopHtml += '</div>';
  282. presaleTopHtml += '</div>';
  283. presaleTopHtml += '</template>';
  284. presaleTopHtml += '<template v-if="data.style == 2">';
  285. presaleTopHtml += '<div class="layui-form-item">';
  286. presaleTopHtml += '<label class="layui-form-label sm">左侧图标</label>';
  287. presaleTopHtml += '<template v-for="(item, index) in list" v-if="item.style == data.style">';
  288. presaleTopHtml += '<div class="layui-input-block ns-img-upload">';
  289. presaleTopHtml += '<img-sec-upload v-bind:data="{ data : item, text: \'\' }"></img-sec-upload>';
  290. presaleTopHtml += '</div>';
  291. presaleTopHtml += '</template>';
  292. presaleTopHtml += '<div class="ns-word-aux ns-diy-word-aux">建议上传图片大小:123px * 37px</div>';
  293. presaleTopHtml += '</div>';
  294. presaleTopHtml += '</template>';
  295. presaleTopHtml += '<template v-if="data.style == 3">';
  296. presaleTopHtml += '<div class="layui-form-item">';
  297. presaleTopHtml += '<label class="layui-form-label sm">顶部图标</label>';
  298. presaleTopHtml += '<template v-for="(item, index) in list" v-if="item.style == data.style">';
  299. presaleTopHtml += '<div class="layui-input-block ns-img-upload">';
  300. presaleTopHtml += '<img-sec-upload v-bind:data="{ data : item, text: \'\' }"></img-sec-upload>';
  301. presaleTopHtml += '</div>';
  302. presaleTopHtml += '</template>';
  303. presaleTopHtml += '<div class="ns-word-aux ns-diy-word-aux">建议上传图片大小:174px * 37px</div>';
  304. presaleTopHtml += '</div>';
  305. presaleTopHtml += '</template>';
  306. // presaleTopHtml += '<color v-bind:data="{ field : \'titleTextColor\', label : \'标题颜色\', defaultcolor: \'#000\' }"></color>';
  307. presaleTopHtml += '</li>';
  308. /* presaleTopHtml += '<li>';
  309. presaleTopHtml += '<div class="content-block">';
  310. presaleTopHtml += '<div class="layui-form-item">';
  311. presaleTopHtml += '<label class="layui-form-label sm">文本内容</label>';
  312. presaleTopHtml += '<div class="layui-input-block">';
  313. presaleTopHtml += '<input type="text" name=\'title\' v-model="listMore.title" class="layui-input" />';
  314. presaleTopHtml += '</div>';
  315. presaleTopHtml += '</div>';
  316. presaleTopHtml += '<color v-bind:data="{ field : \'moreTextColor\', defaultcolor: \'#858585\' }"></color>';
  317. presaleTopHtml += '</div>';
  318. presaleTopHtml += '</li>'; */
  319. presaleTopHtml += '</ul>';
  320. Vue.component("presale-top-list",{
  321. template : presaleTopHtml,
  322. data : function(){
  323. return {
  324. data : this.$parent.data,
  325. list : this.$parent.data.list,
  326. listMore: this.$parent.data.listMore
  327. };
  328. },
  329. created : function(){
  330. console.log(this.list);
  331. if(!this.$parent.data.verify) this.$parent.data.verify = [];
  332. this.$parent.data.verify.push(this.verify);//加载验证方法
  333. },
  334. watch : {
  335. },
  336. methods : {
  337. verify:function () {
  338. var res = { code : true, message : "" };
  339. var _self = this;
  340. $(".draggable-element[data-index='" + this.data.index + "'] .graphic-navigation .graphic-nav-list>ul>li").each(function(index){
  341. if(_self.selectedTemplate == "imageNavigation"){
  342. $(this).find("input[name='title']").removeAttr("style");//清空输入框的样式
  343. //检测是否有未上传的图片
  344. if(_self.list[index].imageUrl == ""){
  345. res.code = false;
  346. res.message = "请选择一张图片";
  347. $(this).find(".error-msg").text("请选择一张图片").show();
  348. return res;
  349. }else{
  350. $(this).find(".error-msg").text("").hide();
  351. }
  352. }else{
  353. if(_self.list[index].title == ""){
  354. res.code = false;
  355. res.message = "请输入标题";
  356. $(this).find("input[name='title']").attr("style","border-color:red !important;").focus();
  357. $(this).find(".error-msg").text("请输入标题").show();
  358. return res;
  359. }else{
  360. $(this).find("input[name='title']").removeAttr("style");
  361. $(this).find(".error-msg").text("").hide();
  362. }
  363. }
  364. });
  365. return res;
  366. }
  367. }
  368. });
  369. // 背景颜色可选
  370. var presaleColorHtml = '<div class="layui-form-item ns-bg-select">';
  371. presaleColorHtml += '<label class="layui-form-label sm">背景颜色</label>';
  372. presaleColorHtml += '<div class="layui-input-block">';
  373. presaleColorHtml += '<ul class="ns-bg-select-ul">';
  374. presaleColorHtml += '<li v-for="(item, index) in colorList" v-bind:k="index" :class="[item.className == data.bgSelect ? \'ns-text-color ns-border-color\' : \'\']" @click="data.bgSelect = item.className">';
  375. presaleColorHtml += '<div :style="{background: item.color}"></div>';
  376. presaleColorHtml += '</li>';
  377. presaleColorHtml += '</ul>';
  378. presaleColorHtml += '</div>';
  379. presaleColorHtml += '</div>';
  380. Vue.component("presale-color", {
  381. template: presaleColorHtml,
  382. data: function () {
  383. return {
  384. data: this.$parent.data,
  385. colorList: [
  386. {name: "红", className: "red", color: "#FFD7D7"},
  387. {name: "蓝", className: "blue", color: "#D7FAFF"},
  388. {name: "黄", className: "yellow", color: "#FFF4E0"},
  389. {name: "紫", className: "violet", color: "#F9E5FF"}
  390. ]
  391. };
  392. },
  393. created: function () {
  394. if(!this.$parent.data.verify) this.$parent.data.verify = [];
  395. this.$parent.data.verify.push(this.verify);//加载验证方法
  396. },
  397. methods: {
  398. verify : function () {
  399. var res = { code : true, message : "" };
  400. return res;
  401. }
  402. },
  403. });
  404. // 切换方式
  405. var changeType = '<div class="layui-form-item ns-icon-radio">';
  406. changeType += '<label class="layui-form-label sm">滑动方式</label>';
  407. changeType += '<div class="layui-input-block align-right">';
  408. changeType += '<template v-for="(item,index) in changeTypeList" v-bind:k="index">';
  409. changeType += '<div v-on:click="data.changeType=item.value" v-bind:class="{ \'layui-unselect layui-form-radio\' : true,\'layui-form-radioed\' : (data.changeType==item.value) }"><i class="layui-anim layui-icon">&#xe63f;</i><div>{{item.name}}</div></div>';
  410. changeType += '</template>';
  411. changeType += '</div>';
  412. /* changeType += '<label class="layui-form-label sm">滑动方式</label>';
  413. changeType += '<div class="layui-input-block">';
  414. changeType += '<template v-for="(item, index) in changeTypeList" v-bind:k="index">';
  415. changeType += '<span :class="[item.value == data.changeType ? \'\' : \'layui-hide\']">{{item.name}}</span>';
  416. changeType += '</template>';
  417. changeType += '<ul class="ns-icon">';
  418. changeType += '<li v-for="(item, index) in changeTypeList" v-bind:k="index" :class="[item.value == data.changeType ? \'ns-text-color ns-border-color\' : \'\']" @click="data.changeType = item.value">';
  419. changeType += '<img v-if="item.value == data.changeType" :src="item.selectedSrc" />'
  420. changeType += '<img v-else :src="item.src" />'
  421. changeType += '</li>';
  422. changeType += '</ul>';
  423. changeType += '</div>'; */
  424. changeType += '</div>';
  425. Vue.component("change-type", {
  426. template: changeType,
  427. data: function () {
  428. return {
  429. data: this.$parent.data,
  430. changeTypeList: [
  431. {name: "平移滑动", value: 1, src: presaleResourcePath + "/presale/img/manual.png", selectedSrc: presaleResourcePath + "/presale/img/manual_1.png"},
  432. {name: "切屏滑动", value: 2, src: presaleResourcePath + "/presale/img/manual.png", selectedSrc: presaleResourcePath + "/presale/img/manual_1.png"},
  433. ]
  434. };
  435. },
  436. created: function () {
  437. if(!this.$parent.data.verify) this.$parent.data.verify = [];
  438. this.$parent.data.verify.push(this.verify);//加载验证方法
  439. },
  440. methods: {
  441. verify : function () {
  442. var res = { code : true, message : "" };
  443. return res;
  444. }
  445. },
  446. });