edit.php 159 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247
  1. <link rel="stylesheet" href="assets/common/plugins/umeditor/themes/default/css/umeditor.css">
  2. <link rel="stylesheet" href="assets/store/css/diy.css?v=<?= $version ?>">
  3. <div class="row-content am-cf">
  4. <div class="widget am-cf">
  5. <div class="widget-body">
  6. <!-- diy 工作区 -->
  7. <div id="app" class="work-diy dis-flex flex-x-between">
  8. <!-- 工具栏 -->
  9. <div id="diy-menu" class="diy-menu">
  10. <div class="menu-title"><span>组件库</span></div>
  11. <div class="navs">
  12. <div class="navs-group">
  13. <div class="title">媒体组件</div>
  14. <div class="navs-components am-cf">
  15. <nav class="special" @click="onAddItem('banner')">
  16. <p class="item-icon"><i class="iconfont icon-tupianlunbo"></i></p>
  17. <p>图片轮播</p>
  18. </nav>
  19. <nav class="special" @click="onAddItem('imageSingle')">
  20. <p class="item-icon"><i class="iconfont icon-tupian1"></i></p>
  21. <p>单图组</p>
  22. </nav>
  23. <nav class="special" @click="onAddItem('window')">
  24. <p class="item-icon"><i class="iconfont icon-newbilayout"></i></p>
  25. <p>图片橱窗</p>
  26. </nav>
  27. <nav class="special" @click="onAddItem('video')">
  28. <p class="item-icon"><i class="iconfont icon-shipin7"></i></p>
  29. <p>视频组</p>
  30. </nav>
  31. <nav class="special" @click="onAddItem('article')">
  32. <p class="item-icon"><i class="iconfont icon-zixun"></i></p>
  33. <p>文章组</p>
  34. </nav>
  35. <nav class="special" @click="onAddItem('special')">
  36. <p class="item-icon"><i class="iconfont icon-toutiao"></i></p>
  37. <p>头条快报</p>
  38. </nav>
  39. </div>
  40. <div class="title">商城组件</div>
  41. <div class="navs-components am-cf">
  42. <nav class="special" @click="onAddItem('search')">
  43. <p class="item-icon"><i class="iconfont icon-wxbsousuotuiguang"></i></p>
  44. <p>搜索框</p>
  45. </nav>
  46. <nav class="special" @click="onAddItem('notice')">
  47. <p class="item-icon"><i class="iconfont icon-gonggao"></i></p>
  48. <p>公告组</p>
  49. </nav>
  50. <nav class="special" @click="onAddItem('navBar')">
  51. <p class="item-icon"><i class="iconfont icon-daohang"></i></p>
  52. <p>导航组</p>
  53. </nav>
  54. <nav class="special" @click="onAddItem('goods')">
  55. <p class="item-icon"><i class="iconfont icon-shangpin5"></i></p>
  56. <p>商品组</p>
  57. </nav>
  58. <nav class="special" @click="onAddItem('coupon')">
  59. <p class="item-icon"><i class="iconfont icon-youhuiquan2"></i></p>
  60. <p>优惠券组</p>
  61. </nav>
  62. <nav class="special" @click="onAddItem('sharingGoods')">
  63. <p class="item-icon"><i class="iconfont icon-shangpin5"></i></p>
  64. <p>拼团商品</p>
  65. </nav>
  66. <nav class="special" @click="onAddItem('bargainGoods')">
  67. <p class="item-icon"><i class="iconfont icon-kanjia"></i></p>
  68. <p>砍价商品</p>
  69. </nav>
  70. <nav class="special" @click="onAddItem('sharpGoods')">
  71. <p class="item-icon"><i class="iconfont icon-miaosha"></i></p>
  72. <p>秒杀商品</p>
  73. </nav>
  74. <nav class="special" @click="onAddItem('shop')">
  75. <p class="item-icon"><i class="iconfont icon-mendian"></i></p>
  76. <p>线下门店</p>
  77. </nav>
  78. </div>
  79. <div class="title">工具组件</div>
  80. <div class="navs-components am-cf">
  81. <nav class="special" @click="onAddItem('service')">
  82. <p class="item-icon"><i class="iconfont icon-kefu"></i></p>
  83. <p>在线客服</p>
  84. </nav>
  85. <nav class="special" @click="onAddItem('officialAccount')">
  86. <p class="item-icon"><i class="iconfont icon-weixin"></i></p>
  87. <p>关注公众号</p>
  88. </nav>
  89. <nav class="special" @click="onAddItem('richText')">
  90. <p class="item-icon"><i class="iconfont icon-wenbenbianji"></i></p>
  91. <p>富文本</p>
  92. </nav>
  93. <nav class="special" @click="onAddItem('blank')">
  94. <p class="item-icon"><i class="iconfont icon-kongbai"></i></p>
  95. <p>辅助空白</p>
  96. </nav>
  97. <nav class="special" @click="onAddItem('guide')">
  98. <p class="item-icon"><i class="iconfont icon-fengexian1"></i></p>
  99. <p>辅助线</p>
  100. </nav>
  101. </div>
  102. </div>
  103. </div>
  104. <div class="action">
  105. <button @click.stop="onSubmit" type="button" class="am-btn am-btn-xs am-btn-secondary">
  106. 保存页面
  107. </button>
  108. </div>
  109. </div>
  110. <!--手机diy容器-->
  111. <div class="diy-phone" v-cloak>
  112. <!-- 手机顶部标题 -->
  113. <div id="diy-page" class="phone-top optional" @click.stop="onEditer('page')"
  114. :class="{selected: 'page' === selectedIndex}"
  115. :style="{background: diyData.page.style.titleBackgroundColor + ' url(assets/store/img/diy/phone-top-' + diyData.page.style.titleTextColor + '.png) no-repeat center / contain'}">
  116. <h4 :style="{color: diyData.page.style.titleTextColor}">{{ diyData.page.params.title }}</h4>
  117. </div>
  118. <!-- 小程序内容区域 -->
  119. <div id="phone-main" class="phone-main" v-cloak>
  120. <draggable :list="diyData.items" class="dragArea" @update="onDragItemEnd"
  121. :options="{animation: 120, filter: '.drag__nomove' }">
  122. <template v-for="(item, index) in diyData.items">
  123. <!-- diy元素: 图片轮播 -->
  124. <template v-if="item.type == 'banner'">
  125. <div class="drag optional" @click.stop="onEditer(index)"
  126. :class="{selected: index === selectedIndex}">
  127. <div class="diy-banner">
  128. <img v-for="(banner, index) in item.data" v-if="index <= 1"
  129. :src="banner.imgUrl">
  130. <div class="dots center" :class="item.style.btnShape">
  131. <span v-for="banner in item.data"
  132. :style="{background:item.style.btnColor}"></span>
  133. </div>
  134. </div>
  135. <div class="btn-edit-del">
  136. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  137. </div>
  138. </div>
  139. </template>
  140. <!-- diy元素: 单图组 -->
  141. <template v-else-if="item.type == 'imageSingle'">
  142. <div @click.stop="onEditer(index)">
  143. <div class="drag optional" :class="{selected:index === selectedIndex}">
  144. <div class="diy-imageSingle"
  145. :style="{ paddingBottom: item.style.paddingTop + 'px', background: item.style.background}">
  146. <div class="item-image" v-for="imageSingle in item.data"
  147. :style="{padding: item.style.paddingTop + 'px ' + item.style.paddingLeft + 'px 0'}">
  148. <img :src="imageSingle.imgUrl">
  149. </div>
  150. </div>
  151. <div class="btn-edit-del">
  152. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  153. </div>
  154. </div>
  155. </div>
  156. </template>
  157. <!-- diy元素: 图片橱窗 -->
  158. <template v-else-if="item.type == 'window'">
  159. <div @click.stop="onEditer(index)">
  160. <div class="drag optional" :class="{selected:index === selectedIndex}">
  161. <div class="diy-window"
  162. :style="{ background: item.style.background, padding: item.style.paddingTop + 'px ' + item.style.paddingLeft + 'px' }">
  163. <ul class="data-list" v-if="item.style.layout > -1"
  164. :class="'am-avg-sm-' + item.style.layout">
  165. <li v-for="window in item.data"
  166. :style="{ padding: item.style.paddingTop + 'px ' + item.style.paddingLeft + 'px' }">
  167. <div class="item-image">
  168. <img :src="window.imgUrl">
  169. </div>
  170. </li>
  171. </ul>
  172. <div class="display" v-else>
  173. <div class="display-left"
  174. :style="{ padding: item.style.paddingTop + 'px ' + item.style.paddingLeft + 'px' }">
  175. <img :src="item.data[0].imgUrl">
  176. </div>
  177. <div class="display-right">
  178. <div v-if="item.data.length >= 2" class="display-right1"
  179. :style="{ padding:item.style.paddingTop+'px '+item.style.paddingLeft +'px' }">
  180. <img :src="item.data[1].imgUrl">
  181. </div>
  182. <div class="display-right2">
  183. <div v-if="item.data.length >= 3" class="left"
  184. :style="{ padding:item.style.paddingTop + 'px ' + item.style.paddingLeft + 'px' }">
  185. <img :src="item.data[2].imgUrl">
  186. </div>
  187. <div v-if="item.data.length >= 4" class="right"
  188. :style="{ padding:item.style.paddingTop + 'px ' + item.style.paddingLeft + 'px' }">
  189. <img :src="item.data[3].imgUrl">
  190. </div>
  191. </div>
  192. </div>
  193. </div>
  194. </div>
  195. <div class="btn-edit-del">
  196. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  197. </div>
  198. </div>
  199. </div>
  200. </template>
  201. <!-- diy元素: 视频组 -->
  202. <template v-else-if="item.type == 'video'">
  203. <div @click.stop="onEditer(index)">
  204. <div class="drag optional" :class="{selected:index === selectedIndex}">
  205. <div class="diy-video" :style="{padding:item.style.paddingTop + 'px 0'}">
  206. <video :style="{height:item.style.height + 'px'}"
  207. :src="item.params.videoUrl"
  208. :poster="item.params.poster"
  209. :autoplay="item.params.autoplay == 1"
  210. controls>
  211. 您的浏览器不支持 video 标签
  212. </video>
  213. </div>
  214. <div class="btn-edit-del">
  215. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  216. </div>
  217. </div>
  218. </div>
  219. </template>
  220. <!-- diy元素: 文章组 -->
  221. <template v-else-if="item.type == 'article'">
  222. <div @click.stop="onEditer(index)">
  223. <div class="drag optional" :class="{selected:index === selectedIndex}">
  224. <div class="diy-article">
  225. <div class="article-item"
  226. v-for="item in (item.params.source == 'choice' ? item.data : item.defaultData)"
  227. :class="'show-type__' + item.show_type">
  228. <!-- 小图模式 -->
  229. <template v-if="item.show_type == 10">
  230. <div class="article-item__left flex-box">
  231. <div class="article-item__title twolist-hidden">
  232. <span class="f-30 col-3">{{ item.article_title }}</span>
  233. </div>
  234. <div class="article-item__footer">
  235. <span class="article-views">
  236. {{ item.views_num }}次浏览
  237. </span>
  238. </div>
  239. </div>
  240. <div class="article-item__image">
  241. <img :src="item.image" alt="">
  242. </div>
  243. </template>
  244. <!-- 大图模式 -->
  245. <template v-if="item.show_type == 20">
  246. <div class="article-item__title">
  247. <span class="f-30 col-3">{{ item.article_title }}</span>
  248. </div>
  249. <div class="article-item__image">
  250. <img :src="item.image">
  251. </div>
  252. <div class="article-item__footer">
  253. <span class="article-views">
  254. {{ item.views_num }}次浏览
  255. </span>
  256. </div>
  257. </template>
  258. </div>
  259. </div>
  260. <div class="btn-edit-del">
  261. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  262. </div>
  263. </div>
  264. </div>
  265. </template>
  266. <!-- diy元素: 头条快报 -->
  267. <template v-else-if="item.type == 'special'">
  268. <div @click.stop="onEditer(index)">
  269. <div class="drag optional" :class="{selected:index === selectedIndex}">
  270. <div class="diy-special dis-flex flex-y-center">
  271. <div class="special-left">
  272. <img :src="item.style.image" alt="">
  273. </div>
  274. <div class="special-content flex-box"
  275. :class="'display_' + item.style.display">
  276. <ul class="special-content-list">
  277. <li class="content-item am-text-truncate"
  278. v-for="item in (item.params.source == 'choice' ? item.data : item.defaultData)">
  279. <span>{{ item.article_title }}</span>
  280. </li>
  281. </ul>
  282. </div>
  283. <div class="special-more">
  284. <i class="iconfont icon-xiangyoujiantou"></i>
  285. </div>
  286. </div>
  287. <div class="btn-edit-del">
  288. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  289. </div>
  290. </div>
  291. </div>
  292. </template>
  293. <!-- diy元素: 搜索栏 -->
  294. <template v-else-if="item.type == 'search'">
  295. <div @click.stop="onEditer(index)">
  296. <div class="drag optional" :class="{selected:index === selectedIndex}">
  297. <div class="diy-search">
  298. <div class="inner"
  299. :class="item.style.searchStyle">
  300. <div class="search-input"
  301. :style="{textAlign: item.style.textAlign}">
  302. <i class="search-icon iconfont icon-ss-search"></i>
  303. <span>{{item.params.placeholder}}</span>
  304. </div>
  305. </div>
  306. </div>
  307. <div class="btn-edit-del">
  308. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  309. </div>
  310. </div>
  311. </div>
  312. </template>
  313. <!-- diy元素: 公告组 -->
  314. <template v-else-if="item.type == 'notice'">
  315. <div @click.stop="onEditer(index)">
  316. <div class="drag optional" :class="{selected:index === selectedIndex}">
  317. <div class="diy-notice dis-flex"
  318. :style="{padding: item.style.paddingTop + 'px' + ' 10px', background: item.style.background}">
  319. <div class="notice__icon">
  320. <img :src="item.params.icon">
  321. </div>
  322. <div class="notice__text flex-box am-text-truncate">
  323. <span :style="{color: item.style.textColor}">{{item.params.text}}</span>
  324. </div>
  325. </div>
  326. <div class="btn-edit-del">
  327. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  328. </div>
  329. </div>
  330. </div>
  331. </template>
  332. <!-- diy元素: 导航组 -->
  333. <template v-else-if="item.type == 'navBar'">
  334. <div @click.stop="onEditer(index)">
  335. <div class="drag optional" :class="{selected:index === selectedIndex}">
  336. <div class="diy-navBar" :style="{background:item.style.background}">
  337. <ul class=""
  338. :class="item.style.rowsNum === '4'?'am-avg-sm-4':(item.style.rowsNum ==='3'?'am-avg-sm-3':'am-avg-sm-5')">
  339. <li class="" v-for="(navBar,index) in item.data">
  340. <div class="item-image">
  341. <img :src="navBar.imgUrl">
  342. </div>
  343. <p class="item-text am-text-truncate"
  344. :style="{color:navBar.color}">
  345. {{navBar.text}}</p>
  346. </li>
  347. </ul>
  348. </div>
  349. <div class="btn-edit-del">
  350. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  351. </div>
  352. </div>
  353. </div>
  354. </template>
  355. <!-- diy元素: 商品组 -->
  356. <template v-else-if="item.type == 'goods'">
  357. <div @click.stop="onEditer(index)">
  358. <div class="drag optional" :class="{selected: index === selectedIndex}">
  359. <div class="diy-goods" :style="{background:item.style.background}">
  360. <ul class="goods-list am-cf"
  361. :class="['display__' + item.style.display, 'column__' + item.style.column]">
  362. <li class="goods-item"
  363. v-for="goods in (item.params.source == 'choice' ? item.data : item.defaultData)">
  364. <!-- 单列商品 -->
  365. <template v-if="item.style.column == 1">
  366. <div class="dis-flex">
  367. <!-- 商品图片 -->
  368. <div class="goods-item_left">
  369. <img :src="goods.image">
  370. </div>
  371. <div class="goods-item_right">
  372. <!-- 商品名称 -->
  373. <div v-if="item.style.show.goodsName"
  374. class="goods-item_title twolist-hidden">
  375. <span>{{ goods.goods_name }}</span>
  376. </div>
  377. <div class="goods-item_desc">
  378. <!-- 商品卖点 -->
  379. <div v-if="item.style.show.sellingPoint"
  380. class="desc-selling_point am-text-truncate">
  381. <span>{{ goods.selling_point }}</span>
  382. </div>
  383. <!-- 商品销量 -->
  384. <div v-if="item.style.show.goodsSales"
  385. class="desc-goods_sales am-text-truncate">
  386. <span>已售{{ goods.goods_sales }}件</span>
  387. </div>
  388. <!-- 商品价格 -->
  389. <div class="desc_footer">
  390. <span v-if="item.style.show.goodsPrice"
  391. class="price_x">¥{{ goods.goods_price }}</span>
  392. <span class="price_y x-color-999"
  393. v-if="item.style.show.linePrice && goods.line_price > 0">¥{{ goods.line_price }}</span>
  394. </div>
  395. </div>
  396. </div>
  397. </div>
  398. </template>
  399. <!-- 两列三列 -->
  400. <template v-else>
  401. <div class="goods-image">
  402. <img :src="goods.image">
  403. </div>
  404. <div class="detail">
  405. <p v-if="item.style.show.goodsName"
  406. class="goods-name twolist-hidden">
  407. {{goods.goods_name}}
  408. </p>
  409. <p class="detail-price">
  410. <span v-if="item.style.show.goodsPrice"
  411. class="goods-price x-color-red">{{ goods.goods_price }}</span>
  412. <span v-if="item.style.show.linePrice && goods.line_price > 0"
  413. class="line-price">{{ goods.line_price }}</span>
  414. </p>
  415. </div>
  416. </template>
  417. </li>
  418. </ul>
  419. </div>
  420. <div class="btn-edit-del">
  421. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  422. </div>
  423. </div>
  424. </div>
  425. </template>
  426. <!-- diy元素: 优惠券组 -->
  427. <template v-else-if="item.type == 'coupon'">
  428. <div @click.stop="onEditer(index)"
  429. class="drag optional" :class="{selected: index === selectedIndex}">
  430. <div class="diy-coupon dis-flex flex-x-around"
  431. :style="{background:item.style.background,padding: item.style.paddingTop+'px '+' 0'}">
  432. <div v-for="coupon in item.data" class="coupon-wrapper">
  433. <div class="coupon-item" :style="{background:coupon.color}">
  434. <i class="before" :style="{background:item.style.background}"></i>
  435. <div :style="{background:coupon.color}"
  436. class="left-content dis-flex flex-dir-column flex-x-center flex-y-center">
  437. <div class="content-top">
  438. <span class="unit">¥</span>
  439. <span class="price">{{ coupon.reduce_price }}</span>
  440. </div>
  441. <div class="content-bottom">
  442. <span>满{{ coupon.min_price }}元可用</span>
  443. </div>
  444. </div>
  445. <div class="right-receive dis-flex flex-dir-column flex-x-center flex-y-center">
  446. <span>立即</span>
  447. <span>领取</span>
  448. </div>
  449. </div>
  450. </div>
  451. </div>
  452. <div class="btn-edit-del">
  453. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  454. </div>
  455. </div>
  456. </template>
  457. <!-- diy元素: 拼团商品组 -->
  458. <template v-else-if="item.type == 'sharingGoods'">
  459. <div @click.stop="onEditer(index)">
  460. <div class="drag optional" :class="{selected:index === selectedIndex}">
  461. <div class="diy-sharingGoods" :style="{background: item.style.background }">
  462. <div class="goods-item dis-flex" v-for="(goods, index) in item.data">
  463. <!-- 商品图片 -->
  464. <div class="goods-item_left">
  465. <img :src="goods.image">
  466. </div>
  467. <div class="goods-item_right">
  468. <!-- 商品名称 -->
  469. <div v-if="item.style.show.goodsName"
  470. class="goods-item_title twolist-hidden">
  471. <span>{{ goods.goods_name }}</span>
  472. </div>
  473. <div class="goods-item_desc">
  474. <!-- 商品卖点 -->
  475. <div v-if="item.style.show.sellingPoint"
  476. class="desc-selling_point am-text-truncate">
  477. <span>{{ goods.selling_point }}</span>
  478. </div>
  479. <!-- 拼团信息 -->
  480. <div class="desc-situation">
  481. <span class="iconfont icon-pintuan_huaban"></span>
  482. <span class="people">2人团</span>
  483. <span class="x-color-999">已有43人进行拼团</span>
  484. </div>
  485. <!-- 商品价格 -->
  486. <div class="desc_footer">
  487. <span class="price_x"
  488. v-if="item.style.show.sharingPrice">¥{{ goods.sharing_price }}</span>
  489. <span class="price_y x-color-999"
  490. v-if="item.style.show.linePrice && goods.line_price > 0">¥{{ goods.line_price }}</span>
  491. </div>
  492. </div>
  493. <div class="btn-settlement">去拼团</div>
  494. </div>
  495. </div>
  496. </div>
  497. <div class="btn-edit-del">
  498. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  499. </div>
  500. </div>
  501. </div>
  502. </template>
  503. <!-- diy元素: 砍价商品组 -->
  504. <template v-else-if="item.type == 'bargainGoods'">
  505. <div @click.stop="onEditer(index)">
  506. <div class="drag optional" :class="{selected:index === selectedIndex}">
  507. <div class="diy-bargainGoods" :style="{background: item.style.background }">
  508. <div class="goods-item dis-flex" v-for="(goods, index) in item.data">
  509. <!-- 商品图片 -->
  510. <div class="goods-image">
  511. <img :src="goods.goods_image">
  512. </div>
  513. <div class="goods-info">
  514. <!-- 商品名称 -->
  515. <div v-if="item.style.show.goodsName" class="goods-name">
  516. <span class="twolist-hidden">{{ goods.goods_name }}</span>
  517. </div>
  518. <!-- 参与的用户头像 -->
  519. <div v-if="item.style.show.peoples"
  520. class="peoples dis-flex">
  521. <div class="user-list dis-flex">
  522. <div v-for="help in item.demo.helps"
  523. class="user-item-avatar">
  524. <img :src="help.avatarUrl">
  525. </div>
  526. </div>
  527. <div class="people__text">
  528. <span>{{ item.demo.helps_count }}人正在砍价</span>
  529. </div>
  530. </div>
  531. <!-- 商品原价 -->
  532. <div v-if="item.style.show.originalPrice" class="goods-price">
  533. <span>¥{{ goods.original_price }}</span>
  534. </div>
  535. <!-- 砍价低价 -->
  536. <div v-if="item.style.show.floorPrice" class="floor-price">
  537. <span class="small">最低¥</span><span class="big">{{ goods.floor_price }}</span>
  538. </div>
  539. <!-- 操作按钮 -->
  540. <div class="opt-touch">
  541. <div class="touch-btn">
  542. <span>立即参加</span>
  543. </div>
  544. </div>
  545. </div>
  546. </div>
  547. </div>
  548. <div class="btn-edit-del">
  549. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  550. </div>
  551. </div>
  552. </div>
  553. </template>
  554. <!-- diy元素: 秒杀商品组 -->
  555. <template v-else-if="item.type == 'sharpGoods'">
  556. <div @click.stop="onEditer(index)">
  557. <div class="drag optional" :class="{selected: index === selectedIndex}">
  558. <div class="diy-sharpGoods" :style="{background:item.style.background}">
  559. <div class="sharp-top dis-flex flex-y-center">
  560. <div class="sharp-top--left flex-box dis-flex flex-y-center">
  561. <div class="sharp-modular dis-flex flex-y-center">
  562. <i class="iconfont icon-miaosha-b"></i>
  563. <span class="modular-name">限时秒杀</span>
  564. </div>
  565. <div class="sharp-active-status">
  566. <span>正在疯抢</span>
  567. </div>
  568. <div class="active-count-down">
  569. <div class="clock dis-flex">
  570. <div class="clock-time">
  571. <span>00</span>
  572. </div>
  573. <div class="clock-symbol">
  574. <span>:</span>
  575. </div>
  576. <div class="clock-time">
  577. <span>58</span>
  578. </div>
  579. <div class="clock-symbol">
  580. <span>:</span>
  581. </div>
  582. <div class="clock-time">
  583. <span>04</span>
  584. </div>
  585. </div>
  586. </div>
  587. </div>
  588. <div class="sharp-top--right">
  589. <div class="sharp-more dis-flex flex-y-center">
  590. <span class="sharp-more-text">更多</span>
  591. <span class="sharp-more-arrow">
  592. <i class="iconfont icon-xiangyoujiantou"></i>
  593. </span>
  594. </div>
  595. </div>
  596. </div>
  597. <div class="goods-list">
  598. <ul class="goods-list display__list am-cf"
  599. :class="['column__' + item.style.column]">
  600. <li class="goods-item"
  601. v-for="goods in item.data">
  602. <!-- 单列商品 -->
  603. <template v-if="item.style.column == 1">
  604. </template>
  605. <!-- 两列三列 -->
  606. <template v-else>
  607. <div class="goods-image">
  608. <img :src="goods.goods_image">
  609. </div>
  610. <div class="detail">
  611. <p v-if="item.style.show.goodsName"
  612. class="goods-name twolist-hidden">
  613. {{goods.goods_name}}
  614. </p>
  615. <p class="detail-price">
  616. <span v-if="item.style.show.seckillPrice"
  617. class="goods-price x-color-red">{{ goods.seckill_price }}</span>
  618. <span v-if="item.style.show.originalPrice && goods.original_price > 0"
  619. class="line-price">{{ goods.original_price }}</span>
  620. </p>
  621. </div>
  622. </template>
  623. </li>
  624. </ul>
  625. </div>
  626. </div>
  627. <div class="btn-edit-del">
  628. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  629. </div>
  630. </div>
  631. </div>
  632. </template>
  633. <!-- diy元素: 线下门店 -->
  634. <template v-else-if="item.type == 'shop'">
  635. <div @click.stop="onEditer(index)">
  636. <div class="drag optional" :class="{selected:index === selectedIndex}">
  637. <div class="diy-shop">
  638. <div class="shop-item dis-flex flex-y-center"
  639. v-for="(shop, index) in (item.params.source == 'choice' ? item.data : item.defaultData)">
  640. <div class="shop-item__logo">
  641. <img :src="shop.logo_image" alt="门店logo">
  642. </div>
  643. <div class="shop-item__content flex-box">
  644. <div class="shop-item__title">
  645. <span>{{ shop.shop_name }}</span>
  646. </div>
  647. <div class="shop-item__address am-text-truncate">
  648. <span>门店地址:{{ shop.region.province }}{{ shop.region.city }}{{ shop.region.region }}{{ shop.address }}</span>
  649. </div>
  650. <div class="shop-item__phone">
  651. <span>联系电话:{{ shop.phone }}</span>
  652. </div>
  653. </div>
  654. </div>
  655. </div>
  656. <div class="btn-edit-del">
  657. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  658. </div>
  659. </div>
  660. </div>
  661. </template>
  662. <!-- diy元素: 辅助空白 -->
  663. <template v-else-if="item.type == 'blank'">
  664. <div @click.stop="onEditer(index)">
  665. <div class="drag optional" :class="{selected:index === selectedIndex}">
  666. <div class="diy-blank"
  667. :style="{height: item.style.height +'px', background:item.style.background }">
  668. </div>
  669. <div class="btn-edit-del">
  670. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  671. </div>
  672. </div>
  673. </div>
  674. </template>
  675. <!-- diy元素: 辅助线 -->
  676. <template v-else-if="item.type == 'guide'">
  677. <div @click.stop="onEditer(index)"
  678. class="drag optional" :class="{selected: index === selectedIndex}">
  679. <div class="diy-guide"
  680. :style="{padding: item.style.paddingTop +'px '+'0', background:item.style.background }">
  681. <p class="line"
  682. :style="{borderTopWidth: item.style.lineHeight +'px',borderTopColor:item.style.lineColor,borderTopStyle: item.style.lineStyle }">
  683. </p>
  684. </div>
  685. <div class="btn-edit-del">
  686. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  687. </div>
  688. </div>
  689. </template>
  690. <!-- diy元素: 在线客服 -->
  691. <template v-else-if="item.type == 'service'">
  692. <div class="diy-service drag optional drag__nomove" @click.stop="onEditer(index)"
  693. :class="{selected: index === selectedIndex}"
  694. :style="{ right: item.style.right + '%', bottom: item.style.bottom + '%', opacity: item.style.opacity / 100 }">
  695. <div class="service-icon">
  696. <img :src="item.params.image" alt="">
  697. </div>
  698. <div class="btn-edit-del">
  699. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  700. </div>
  701. </div>
  702. </template>
  703. <!-- diy元素: 关注公众号 -->
  704. <template v-else-if="item.type == 'officialAccount'">
  705. <div @click.stop="onEditer(index)">
  706. <div class="drag optional" :class="{selected:index === selectedIndex}">
  707. <div class="diy-officialAccount">
  708. <div class="item-top">
  709. <span>关联的公众号</span>
  710. </div>
  711. <div class="item-content am-cf">
  712. <div class="item-cont-avatar am-fl">
  713. <img src="assets/store/img/diy/circular.png" alt="">
  714. </div>
  715. <div class="item-cont-public am-fl">
  716. <div class="public-name"><span>公众号名称</span></div>
  717. <div class="public-describe"><span>公众号简介公众号简介公众号简介</span></div>
  718. </div>
  719. <div class="item-cont-active am-fl">
  720. <div class="active-btn">
  721. <span>关注</span>
  722. </div>
  723. </div>
  724. </div>
  725. </div>
  726. <div class="btn-edit-del">
  727. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  728. </div>
  729. </div>
  730. </div>
  731. </template>
  732. <!-- diy元素: 富文本 -->
  733. <template v-else-if="item.type == 'richText'">
  734. <div @click.stop="onEditer(index)">
  735. <div class="drag optional" :class="{selected: index === selectedIndex}">
  736. <div class="diy-richText"
  737. :style="{background: item.style.background, padding: item.style.paddingTop + 'px ' + item.style.paddingLeft + 'px'}"
  738. v-html="item.params.content">
  739. </div>
  740. <div class="btn-edit-del">
  741. <div class="btn-del" @click.stop="onDeleleItem(index)">删除</div>
  742. </div>
  743. </div>
  744. </div>
  745. </template>
  746. </template>
  747. </draggable>
  748. </div>
  749. </div>
  750. <!-- 编辑器容器 -->
  751. <div id="diy-editor" ref="diy-editor" class="diy-editor form-horizontal"
  752. :style="{ visibility: selectedIndex != -1 ? 'visible' : 'hidden' } " v-cloak>
  753. <!-- 编辑器: 标题栏 -->
  754. <div id="tpl_editor_page" v-if="selectedIndex === 'page'">
  755. <div class="editor-title"><span>{{ diyData.page.name }}</span></div>
  756. <form class="am-form tpl-form-line-form">
  757. <div class="am-form-group">
  758. <label class="am-u-sm-3 am-form-label am-text-xs">页面名称 </label>
  759. <div class="am-u-sm-8 am-u-end">
  760. <input class="tpl-form-input" type="text"
  761. v-model="diyData.page.params.name">
  762. <div class="help-block am-margin-top-xs">
  763. <small>页面名称仅用于后台查找</small>
  764. </div>
  765. </div>
  766. </div>
  767. <div class="am-form-group">
  768. <label class="am-u-sm-3 am-form-label am-text-xs">页面标题 </label>
  769. <div class="am-u-sm-8 am-u-end">
  770. <input class="tpl-form-input" type="text"
  771. v-model="diyData.page.params.title">
  772. <div class="help-block am-margin-top-xs">
  773. <small>小程序端顶部显示的标题</small>
  774. </div>
  775. </div>
  776. </div>
  777. <div class="am-form-group">
  778. <label class="am-u-sm-3 am-form-label am-text-xs">分享标题 </label>
  779. <div class="am-u-sm-8 am-u-end">
  780. <input class="tpl-form-input" type="text"
  781. v-model="diyData.page.params.share_title">
  782. <div class="help-block am-margin-top-xs">
  783. <small>小程序端转发时显示的标题</small>
  784. </div>
  785. </div>
  786. </div>
  787. <div class="am-form-group">
  788. <label class="am-u-sm-3 am-form-label am-text-xs">标题栏文字 </label>
  789. <div class="am-u-sm-8 am-u-end">
  790. <label class="am-radio-inline">
  791. <input type="radio" value="black"
  792. v-model="diyData.page.style.titleTextColor">
  793. 黑色
  794. </label>
  795. <label class="am-radio-inline">
  796. <input type="radio" value="white"
  797. v-model="diyData.page.style.titleTextColor">
  798. 白色
  799. </label>
  800. </div>
  801. </div>
  802. <div class="am-form-group">
  803. <label class="am-u-sm-3 am-form-label am-text-xs">标题栏背景 </label>
  804. <div class="am-u-sm-8 am-u-end">
  805. <input class="" type="color"
  806. v-model="diyData.page.style.titleBackgroundColor">
  807. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  808. @click.stop="onEditorResetColor(diyData.page.style, 'titleBackgroundColor', '#ffffff')">
  809. 重置
  810. </button>
  811. </div>
  812. </div>
  813. </form>
  814. </div>
  815. <template v-if="diyData.items.length && curItem">
  816. <!--编辑器: 在线客服-->
  817. <div id="tpl_editor_service" v-if="curItem.type == 'service'">
  818. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  819. <form class="am-form tpl-form-line-form">
  820. <div class="am-form-group">
  821. <label class="am-u-sm-3 am-form-label am-text-xs"> 底边距 </label>
  822. <div class="am-u-sm-8 am-u-end">
  823. <input class="tpl-form-input" type="range"
  824. v-model="curItem.style.bottom" min="0" max="100">
  825. <div class="display-value">
  826. <span class="value">{{ curItem.style.bottom }}</span>%
  827. </div>
  828. </div>
  829. </div>
  830. <div class="am-form-group">
  831. <label class="am-u-sm-3 am-form-label am-text-xs"> 右边距 </label>
  832. <div class="am-u-sm-8 am-u-end">
  833. <input class="tpl-form-input" type="range"
  834. v-model="curItem.style.right" min="0" max="100">
  835. <div class="display-value">
  836. <span class="value">{{ curItem.style.right }}</span>%
  837. </div>
  838. </div>
  839. </div>
  840. <div class="am-form-group">
  841. <label class="am-u-sm-3 am-form-label am-text-xs"> 不透明度 </label>
  842. <div class="am-u-sm-8 am-u-end">
  843. <input class="tpl-form-input" type="range"
  844. v-model="curItem.style.opacity" min="0" max="100">
  845. <div class="display-value">
  846. <span class="value">{{ curItem.style.opacity }}</span>%
  847. </div>
  848. </div>
  849. </div>
  850. <hr data-am-widget="divider" class="am-divider am-divider-dashed">
  851. <div class="am-form-group">
  852. <label class="am-u-sm-3 am-form-label am-text-xs"> 客服类型 </label>
  853. <div class="am-u-sm-9 am-u-end">
  854. <label class="am-radio-inline">
  855. <input type="radio" value="chat"
  856. v-model="curItem.params.type"> 在线聊天
  857. </label>
  858. <label class="am-radio-inline">
  859. <input type="radio" value="phone"
  860. v-model="curItem.params.type"> 拨打电话
  861. </label>
  862. </div>
  863. </div>
  864. <div class="am-form-group" v-show="curItem.params.type == 'phone'">
  865. <label class="am-u-sm-3 am-form-label am-text-xs"> 电话号码 </label>
  866. <div class="am-u-sm-9 am-u-end">
  867. <input type="text" class="tpl-form-input" placeholder="请输入电话号码"
  868. v-model="curItem.params.phone_num">
  869. </div>
  870. </div>
  871. <div class="am-form-group">
  872. <label class="am-u-sm-3 am-form-label am-text-xs"> 客服图标 </label>
  873. <div class="am-u-sm-8 am-u-end">
  874. <div class="data-image">
  875. <img :src="curItem.params.image"
  876. style="height: 45px;" title="点击更换图片" alt=""
  877. @click="onEditorSelectImage(curItem.params, 'image')">
  878. </div>
  879. <div class="help-block">
  880. <small>建议尺寸:90×90</small>
  881. </div>
  882. </div>
  883. </div>
  884. </form>
  885. </div>
  886. <!-- 编辑器: 图片轮播 -->
  887. <div id="tpl_editor_banner" v-if="curItem.type == 'banner'">
  888. <div class="editor-title"><span>{{curItem.name}}</span></div>
  889. <form class="am-form tpl-form-line-form">
  890. <div class="am-form-group">
  891. <label class="am-u-sm-3 am-form-label am-text-xs">指示点形状 </label>
  892. <div class="am-u-sm-9 am-u-end">
  893. <label class="am-radio-inline">
  894. <input type="radio" value="round"
  895. v-model="curItem.style.btnShape"> 圆形
  896. </label>
  897. <label class="am-radio-inline">
  898. <input type="radio" value="square"
  899. v-model="curItem.style.btnShape"> 正方形
  900. </label>
  901. <label class="am-radio-inline">
  902. <input type="radio" value="rectangle"
  903. v-model="curItem.style.btnShape"> 长方形
  904. </label>
  905. </div>
  906. </div>
  907. <div class="am-form-group">
  908. <label class="am-u-sm-3 am-form-label am-text-xs">指示点颜色 </label>
  909. <div class="am-u-sm-9 am-u-end">
  910. <input class="" type="color"
  911. v-model="curItem.style.btnColor">
  912. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  913. @click.stop="onEditorResetColor(curItem.style, 'btnColor', '#ffffff')">
  914. 重置
  915. </button>
  916. </div>
  917. </div>
  918. <div class="am-form-group">
  919. <label class="am-u-sm-3 am-form-label am-text-xs"> 切换时间 </label>
  920. <div class="am-u-sm-8 am-u-end">
  921. <input class="tpl-form-input" type="number"
  922. v-model="curItem.params.interval">
  923. <div class="help-block">
  924. <small>轮播图自动切换的间隔时间,单位:毫秒</small>
  925. </div>
  926. </div>
  927. </div>
  928. <div class="form-items">
  929. <draggable :list="curItem.data"
  930. :options="{ animation: 120, filter: 'input', preventOnFilter: false }">
  931. <div class="form-item"
  932. v-for="(banner, index) in curItem.data">
  933. <i class="iconfont icon-shanchu item-delete"
  934. @click="onEditorDeleleData(index, selectedIndex)"></i>
  935. <div class="item-inner">
  936. <div class="am-form-group">
  937. <label class="am-u-sm-3 am-form-label am-text-xs">图片 </label>
  938. <div class="am-u-sm-8 am-u-end">
  939. <div class="data-image">
  940. <img :src="banner.imgUrl" alt=""
  941. @click="onEditorSelectImage(banner, 'imgUrl')">
  942. </div>
  943. <div class="help-block">
  944. <small>建议尺寸750x360</small>
  945. </div>
  946. </div>
  947. </div>
  948. <div class="am-form-group">
  949. <label class="am-u-sm-3 am-form-label am-text-xs">链接地址 </label>
  950. <div class="am-u-sm-8 am-u-end">
  951. <input type="text" value=""
  952. v-model='banner.linkUrl'>
  953. </div>
  954. </div>
  955. </div>
  956. </div>
  957. </draggable>
  958. </div>
  959. <div class="j-data-add form-item-add" @click="onEditorAddData">
  960. <i class="fa fa-plus"></i> 添加一个
  961. </div>
  962. </form>
  963. </div>
  964. <!--编辑器: 单图组-->
  965. <div id="tpl_editor_imageSingle" v-if="curItem.type == 'imageSingle'">
  966. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  967. <form class="am-form tpl-form-line-form">
  968. <div class="am-form-group">
  969. <label class="am-u-sm-3 am-form-label am-text-xs">上下边距 </label>
  970. <div class="am-u-sm-9 am-u-end">
  971. <input class="tpl-form-input" type="range"
  972. v-model="curItem.style.paddingTop" min="0" max="50">
  973. <div class="display-value">
  974. <span class="value">{{ curItem.style.paddingTop }}</span>px
  975. (像素)
  976. </div>
  977. </div>
  978. </div>
  979. <div class="am-form-group">
  980. <label class="am-u-sm-3 am-form-label am-text-xs">左右边距 </label>
  981. <div class="am-u-sm-9 am-u-end">
  982. <input class="tpl-form-input" type="range"
  983. v-model="curItem.style.paddingLeft" min="0"
  984. max="50">
  985. <div class="display-value">
  986. <span class="value">{{ curItem.style.paddingLeft }}</span>px
  987. (像素)
  988. </div>
  989. </div>
  990. </div>
  991. <div class="am-form-group">
  992. <label class="am-u-sm-3 am-form-label am-text-xs">背景颜色 </label>
  993. <div class="am-u-sm-9 am-u-end">
  994. <input class="" type="color"
  995. v-model="curItem.style.background">
  996. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  997. @click.stop="onEditorResetColor(curItem.style, 'background', '#ffffff')">
  998. 重置
  999. </button>
  1000. </div>
  1001. </div>
  1002. <div class="form-items">
  1003. <draggable :list="curItem.data"
  1004. :options="{ animation: 120, filter: 'input', preventOnFilter: false }">
  1005. <div class="form-item drag" v-for="(imageSingle, index) in curItem.data">
  1006. <i class="iconfont icon-shanchu item-delete"
  1007. @click="onEditorDeleleData(index,selectedIndex)"></i>
  1008. <div class="item-inner">
  1009. <div class="am-form-group">
  1010. <label class="am-u-sm-3 am-form-label am-text-xs">图片 </label>
  1011. <div class="am-u-sm-8 am-u-end">
  1012. <div class="data-image">
  1013. <img :src="imageSingle.imgUrl" alt=""
  1014. @click="onEditorSelectImage(imageSingle, 'imgUrl')">
  1015. </div>
  1016. </div>
  1017. </div>
  1018. <div class="am-form-group">
  1019. <label class="am-u-sm-3 am-form-label am-text-xs">链接地址 </label>
  1020. <div class="am-u-sm-8 am-u-end">
  1021. <input type="text" value="" v-model='imageSingle.linkUrl'>
  1022. </div>
  1023. </div>
  1024. </div>
  1025. </div>
  1026. </draggable>
  1027. </div>
  1028. <div class="j-data-add form-item-add" @click="onEditorAddData">
  1029. <i class="fa fa-plus"></i> 添加一个
  1030. </div>
  1031. </form>
  1032. </div>
  1033. <!--编辑器: 图片橱窗-->
  1034. <div id="tpl_editor_window" v-if="curItem.type == 'window'">
  1035. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1036. <form class="am-form tpl-form-line-form">
  1037. <div class="am-form-group">
  1038. <label class="am-u-sm-3 am-form-label am-text-xs">上下边距 </label>
  1039. <div class="am-u-sm-9 am-u-end">
  1040. <input class="tpl-form-input" type="range"
  1041. v-model="curItem.style.paddingTop" min="0" max="50">
  1042. <div class="display-value">
  1043. <span class="value">{{ curItem.style.paddingTop }}</span>px
  1044. (像素)
  1045. </div>
  1046. </div>
  1047. </div>
  1048. <div class="am-form-group">
  1049. <label class="am-u-sm-3 am-form-label am-text-xs">左右边距 </label>
  1050. <div class="am-u-sm-9 am-u-end">
  1051. <input class="tpl-form-input" type="range"
  1052. v-model="curItem.style.paddingLeft" min="0"
  1053. max="50">
  1054. <div class="display-value">
  1055. <span class="value">{{ curItem.style.paddingLeft }}</span>px
  1056. (像素)
  1057. </div>
  1058. </div>
  1059. </div>
  1060. <div class="am-form-group">
  1061. <label class="am-u-sm-3 am-form-label am-text-xs">背景颜色 </label>
  1062. <div class="am-u-sm-9 am-u-end">
  1063. <input class="" type="color"
  1064. v-model="curItem.style.background">
  1065. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  1066. @click.stop="onEditorResetColor(curItem.style, 'background', '#ffffff')">
  1067. 重置
  1068. </button>
  1069. </div>
  1070. </div>
  1071. <div class="am-form-group">
  1072. <label class="am-u-sm-3 am-form-label am-text-xs">布局方式 </label>
  1073. <div class="j-switch-help am-u-sm-8 am-u-end">
  1074. <label class="am-radio-inline">
  1075. <input type="radio" value="2"
  1076. v-model="curItem.style.layout"> 堆积两列
  1077. </label>
  1078. <label class="am-radio-inline">
  1079. <input type="radio" value="3"
  1080. v-model="curItem.style.layout"> 堆积三列
  1081. </label>
  1082. <label class="am-radio-inline">
  1083. <input type="radio" value="4"
  1084. v-model="curItem.style.layout"> 堆积四列
  1085. </label>
  1086. <label class="am-radio-inline">
  1087. <input type="radio" value="-1"
  1088. v-model="curItem.style.layout"> 橱窗样式
  1089. <small class="help am-hide">
  1090. 最多显示四张图片,超出隐藏
  1091. </small>
  1092. </label>
  1093. <div class="help-block am-margin-top-xs" data-default="请确保所有图片的尺寸/比例相同。">
  1094. <small>请确保所有图片的尺寸/比例相同。</small>
  1095. </div>
  1096. </div>
  1097. </div>
  1098. <div class="form-items">
  1099. <draggable :list="curItem.data"
  1100. :options="{ animation: 120, filter: 'input', preventOnFilter: false }">
  1101. <div class="form-item drag" v-for="(item, index) in curItem.data">
  1102. <i class="iconfont icon-shanchu item-delete"
  1103. @click="onEditorDeleleData(index,selectedIndex)">
  1104. </i>
  1105. <div class="item-inner">
  1106. <div class="am-form-group">
  1107. <label class="am-u-sm-3 am-form-label am-text-xs">图片 </label>
  1108. <div class="am-u-sm-8 am-u-end">
  1109. <div class="data-image">
  1110. <img :src="item.imgUrl" alt=""
  1111. @click="onEditorSelectImage(item, 'imgUrl')">
  1112. </div>
  1113. </div>
  1114. </div>
  1115. <div class="am-form-group">
  1116. <label class="am-u-sm-3 am-form-label am-text-xs">链接地址 </label>
  1117. <div class="am-u-sm-8 am-u-end">
  1118. <input type="text" v-model="item.linkUrl">
  1119. </div>
  1120. </div>
  1121. </div>
  1122. </div>
  1123. </draggable>
  1124. </div>
  1125. <div class="j-data-add form-item-add" @click="onEditorAddData">
  1126. <i class="fa fa-plus"></i> 添加一个
  1127. </div>
  1128. </form>
  1129. </div>
  1130. <!--编辑器: 视频组-->
  1131. <div id="tpl_editor_video" v-if="curItem.type == 'video'">
  1132. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1133. <form class="am-form tpl-form-line-form">
  1134. <div class="am-form-group">
  1135. <label class="am-u-sm-3 am-form-label am-text-xs">上下边距 </label>
  1136. <div class="am-u-sm-8 am-u-end">
  1137. <input class="tpl-form-input" type="range"
  1138. v-model="curItem.style.paddingTop" min="0" max="50">
  1139. <div class="display-value">
  1140. <span class="value">{{ curItem.style.paddingTop }}</span>px
  1141. (像素)
  1142. </div>
  1143. </div>
  1144. </div>
  1145. <div class="am-form-group">
  1146. <label class="am-u-sm-3 am-form-label am-text-xs">视频高度 </label>
  1147. <div class="am-u-sm-8 am-u-end">
  1148. <input class="tpl-form-input" type="range"
  1149. v-model="curItem.style.height" min="50" max="500">
  1150. <div class="display-value">
  1151. <span class="value">{{ curItem.style.height }}</span>px
  1152. (像素)
  1153. </div>
  1154. <div class="help-block am-margin-top-xs">
  1155. <small>滑块可用左右方向键精确调整</small>
  1156. </div>
  1157. </div>
  1158. </div>
  1159. <div class="am-form-group am-padding-top">
  1160. <label class="am-u-sm-3 am-form-label am-text-xs">视频封面 </label>
  1161. <div class="am-u-sm-8 am-u-end">
  1162. <div class="data-image">
  1163. <img :src="curItem.params.poster" alt=""
  1164. @click="onEditorSelectImage(curItem.params, 'poster')">
  1165. </div>
  1166. </div>
  1167. </div>
  1168. <div class="am-form-group">
  1169. <label class="am-u-sm-3 am-form-label am-text-xs">视频地址 </label>
  1170. <div class="am-u-sm-9 am-u-end">
  1171. <input class="tpl-form-input" type="url"
  1172. v-model="curItem.params.videoUrl">
  1173. </div>
  1174. </div>
  1175. <div class="am-form-group">
  1176. <label class="am-u-sm-3 am-form-label am-text-xs">自动播放 </label>
  1177. <div class="am-u-sm-9 am-u-end">
  1178. <label class="am-radio-inline">
  1179. <input type="radio" value="0"
  1180. v-model="curItem.params.autoplay"> 否
  1181. </label>
  1182. <label class="am-radio-inline">
  1183. <input type="radio" value="1"
  1184. v-model="curItem.params.autoplay"> 是
  1185. </label>
  1186. </div>
  1187. </div>
  1188. </form>
  1189. </div>
  1190. <!--编辑器: 文章组-->
  1191. <div id="tpl_editor_article" v-if="curItem.type == 'article'">
  1192. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1193. <form class="am-form tpl-form-line-form">
  1194. <div class="am-form-group">
  1195. <label class="am-u-sm-3 am-form-label am-text-xs">文章分类 </label>
  1196. <div class="am-u-sm-8 am-u-end">
  1197. <select v-model="curItem.params.auto.category"
  1198. data-am-selected="{btnSize: 'sm', placeholder:'全部分类', maxHeight: 400}">
  1199. <option value="0"> -- 全部分类 --</option>
  1200. <template v-for="item in opts.articleCatgory">
  1201. <option :value="item.category_id"> {{ item.name }}</option>
  1202. </template>
  1203. </select>
  1204. </div>
  1205. </div>
  1206. <div class="am-form-group">
  1207. <label class="am-u-sm-3 am-form-label am-text-xs">显示数量 </label>
  1208. <div class="am-u-sm-8 am-u-end">
  1209. <input class="tpl-form-input" type="number" min="1"
  1210. v-model="curItem.params.auto.showNum">
  1211. <div class="help-block am-padding-top-xs">
  1212. <small>文章数据请到 <a href="<?= url('content.article/index') ?>" target="_blank">内容管理
  1213. - 文章列表</a>
  1214. 中管理
  1215. </small>
  1216. </div>
  1217. </div>
  1218. </div>
  1219. </form>
  1220. </div>
  1221. <!-- 编辑器: 头条快报 -->
  1222. <div id="tpl_editor_special" v-if="curItem.type == 'special'">
  1223. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1224. <form class="am-form tpl-form-line-form">
  1225. <div class="am-form-group">
  1226. <label class="am-u-sm-3 am-form-label am-text-xs">文章分类 </label>
  1227. <div class="am-u-sm-8 am-u-end">
  1228. <select v-model="curItem.params.auto.category"
  1229. data-am-selected="{btnSize: 'sm', placeholder:'全部分类', maxHeight: 400}">
  1230. <option value="0"> -- 全部分类 --</option>
  1231. <template v-for="item in opts.articleCatgory">
  1232. <option :value="item.category_id"> {{ item.name }}</option>
  1233. </template>
  1234. </select>
  1235. </div>
  1236. </div>
  1237. <div class="am-form-group">
  1238. <label class="am-u-sm-3 am-form-label am-text-xs">显示数量 </label>
  1239. <div class="am-u-sm-8 am-u-end">
  1240. <input class="tpl-form-input" type="number" min="1"
  1241. v-model="curItem.params.auto.showNum">
  1242. <div class="help-block am-padding-top-xs">
  1243. <small>文章数据请到 <a href="<?= url('content.article/index') ?>" target="_blank">内容管理
  1244. - 文章列表</a>
  1245. 中管理
  1246. </small>
  1247. </div>
  1248. </div>
  1249. </div>
  1250. <hr data-am-widget="divider" class="am-divider am-divider-dashed">
  1251. <div class="am-form-group">
  1252. <label class="am-u-sm-3 am-form-label am-text-xs form-require">图片 </label>
  1253. <div class="am-u-sm-8 am-u-end">
  1254. <div class="data-image">
  1255. <img :src="curItem.style.image" style="height: 38px;" alt=""
  1256. @click="onEditorSelectImage(curItem.style, 'image')">
  1257. </div>
  1258. <div class="help-block am-padding-top-xs">
  1259. <small>建议尺寸140×38</small>
  1260. </div>
  1261. </div>
  1262. </div>
  1263. <div class="am-form-group">
  1264. <label class="am-u-sm-3 am-form-label am-text-xs form-require"> 显示类型 </label>
  1265. <div class="am-u-sm-8 am-u-end">
  1266. <label class="am-radio-inline">
  1267. <input type="radio" value="1" v-model="curItem.style.display">
  1268. 单行
  1269. </label>
  1270. <label class="am-radio-inline">
  1271. <input type="radio" value="2" v-model="curItem.style.display">
  1272. 两行 </label>
  1273. </div>
  1274. </div>
  1275. </form>
  1276. </div>
  1277. <!--编辑器: 搜索栏-->
  1278. <div id="tpl_editor_search" v-if="curItem.type == 'search'">
  1279. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1280. <form class="am-form tpl-form-line-form">
  1281. <div class="am-form-group">
  1282. <label class="am-u-sm-3 am-form-label am-text-xs">提示文字 </label>
  1283. <div class="am-u-sm-9 am-u-end">
  1284. <input class="tpl-form-input" type="text"
  1285. v-model="curItem.params.placeholder">
  1286. </div>
  1287. </div>
  1288. <div class="am-form-group">
  1289. <label class="am-u-sm-3 am-form-label am-text-xs">搜索框样式 </label>
  1290. <div class="am-u-sm-9 am-u-end">
  1291. <label class="am-radio-inline">
  1292. <input type="radio" value="square"
  1293. v-model="curItem.style.searchStyle"> 方形
  1294. </label>
  1295. <label class="am-radio-inline">
  1296. <input type="radio" value="radius"
  1297. v-model="curItem.style.searchStyle"> 圆角
  1298. </label>
  1299. <label class="am-radio-inline">
  1300. <input type="radio" value="round"
  1301. v-model="curItem.style.searchStyle"> 圆弧
  1302. </label>
  1303. </div>
  1304. </div>
  1305. <div class="am-form-group">
  1306. <label class="am-u-sm-3 am-form-label am-text-xs">文字对齐 </label>
  1307. <div class="am-u-sm-9 am-u-end">
  1308. <label class="am-radio-inline">
  1309. <input type="radio" value="left"
  1310. v-model="curItem.style.textAlign">
  1311. 居左
  1312. </label>
  1313. <label class="am-radio-inline">
  1314. <input type="radio" value="center"
  1315. v-model="curItem.style.textAlign">
  1316. 居中
  1317. </label>
  1318. <label class="am-radio-inline">
  1319. <input type="radio" value="right"
  1320. v-model="curItem.style.textAlign">
  1321. 居右
  1322. </label>
  1323. </div>
  1324. </div>
  1325. </form>
  1326. </div>
  1327. <!--编辑器: 公告组-->
  1328. <div id="tpl_editor_notice" v-if="curItem.type == 'notice'">
  1329. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1330. <form class="am-form tpl-form-line-form">
  1331. <div class="am-form-group">
  1332. <label class="am-u-sm-3 am-form-label am-text-xs">上下边距 </label>
  1333. <div class="am-u-sm-8 am-u-end">
  1334. <input class="tpl-form-input" type="range"
  1335. v-model="curItem.style.paddingTop" min="0" max="50">
  1336. <div class="display-value">
  1337. <span class="value">{{ curItem.style.paddingTop }}</span>px
  1338. (像素)
  1339. </div>
  1340. </div>
  1341. </div>
  1342. <div class="am-form-group">
  1343. <label class="am-u-sm-3 am-form-label am-text-xs">背景颜色 </label>
  1344. <div class="am-u-sm-9 am-u-end">
  1345. <input class="" type="color"
  1346. v-model="curItem.style.background">
  1347. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  1348. @click.stop="onEditorResetColor(curItem.style, 'background', '#ffffff')">
  1349. 重置
  1350. </button>
  1351. </div>
  1352. </div>
  1353. <div class="am-form-group">
  1354. <label class="am-u-sm-3 am-form-label am-text-xs">文字颜色 </label>
  1355. <div class="am-u-sm-9 am-u-end">
  1356. <input class="" type="color"
  1357. v-model="curItem.style.textColor">
  1358. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  1359. @click.stop="onEditorResetColor(curItem.style, 'textColor', '#000000')">
  1360. 重置
  1361. </button>
  1362. </div>
  1363. </div>
  1364. <div class="am-form-group">
  1365. <label class="am-u-sm-3 am-form-label am-text-xs">公告图标 </label>
  1366. <div class="am-u-sm-8 am-u-end">
  1367. <div class="data-image">
  1368. <img :src="curItem.params.icon"
  1369. @click="onEditorSelectImage(curItem.params, 'icon')"
  1370. style="height: 30px;" alt="">
  1371. </div>
  1372. <div class="help-block">
  1373. <small>建议尺寸:32×32</small>
  1374. </div>
  1375. </div>
  1376. </div>
  1377. <div class="am-form-group">
  1378. <label class="am-u-sm-3 am-form-label am-text-xs">公告内容</label>
  1379. <div class="am-u-sm-9 am-u-end">
  1380. <input class="tpl-form-input" type="text"
  1381. v-model="curItem.params.text">
  1382. </div>
  1383. </div>
  1384. </form>
  1385. </div>
  1386. <!--编辑器: 导航组-->
  1387. <div id="tpl_editor_navBar" v-if="curItem.type == 'navBar'">
  1388. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1389. <form class="am-form tpl-form-line-form">
  1390. <div class="am-form-group">
  1391. <label class="am-u-sm-4 am-form-label am-text-xs">背景颜色 </label>
  1392. <div class="am-u-sm-8 am-u-end">
  1393. <input class="" type="color"
  1394. v-model="curItem.style.background">
  1395. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  1396. @click.stop="onEditorResetColor(curItem.style, 'background', '#ffffff')">
  1397. 重置
  1398. </button>
  1399. </div>
  1400. </div>
  1401. <div class="am-form-group">
  1402. <label class="am-u-sm-4 am-form-label am-text-xs">每行数量 </label>
  1403. <div class="am-u-sm-8 am-u-end">
  1404. <label class="am-radio-inline">
  1405. <input type="radio" value="3"
  1406. v-model="curItem.style.rowsNum"> 3个
  1407. </label>
  1408. <label class="am-radio-inline">
  1409. <input type="radio" value="4"
  1410. v-model="curItem.style.rowsNum"> 4个
  1411. </label>
  1412. <label class="am-radio-inline">
  1413. <input type="radio" value="5"
  1414. v-model="curItem.style.rowsNum"> 5个
  1415. </label>
  1416. </div>
  1417. </div>
  1418. <div class="form-items">
  1419. <draggable :list="curItem.data"
  1420. :options="{ animation: 120, filter: 'input', preventOnFilter: false }">
  1421. <div class="form-item drag" v-for="(navBar, index) in curItem.data">
  1422. <i class="iconfont icon-shanchu item-delete"
  1423. @click="onEditorDeleleData(index, selectedIndex)"></i>
  1424. <div class="item-inner">
  1425. <div class="am-form-group">
  1426. <label class="am-u-sm-3 am-form-label am-text-xs">图片 </label>
  1427. <div class="am-u-sm-8 am-u-end">
  1428. <div class="data-image">
  1429. <img :src="navBar.imgUrl" alt=""
  1430. @click="onEditorSelectImage(navBar, 'imgUrl')">
  1431. </div>
  1432. <div class="help-block">
  1433. <small>建议尺寸100x100</small>
  1434. </div>
  1435. </div>
  1436. </div>
  1437. <div class="am-form-group">
  1438. <label class="am-u-sm-3 am-form-label am-text-xs">文字内容 </label>
  1439. <div class="am-u-sm-8 am-u-end">
  1440. <input type="text" v-model="navBar.text">
  1441. </div>
  1442. </div>
  1443. <div class="am-form-group">
  1444. <label class="am-u-sm-3 am-form-label am-text-xs">文字颜色 </label>
  1445. <div class="am-u-sm-8 am-u-end">
  1446. <input type="color" v-model="navBar.color">
  1447. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  1448. @click.stop="onEditorResetColor(navBar, 'color', '#666666')">
  1449. 重置
  1450. </button>
  1451. </div>
  1452. </div>
  1453. <div class="am-form-group">
  1454. <label class="am-u-sm-3 am-form-label am-text-xs">链接地址 </label>
  1455. <div class="am-u-sm-8 am-u-end">
  1456. <input type="text" v-model="navBar.linkUrl">
  1457. </div>
  1458. </div>
  1459. </div>
  1460. </div>
  1461. </draggable>
  1462. </div>
  1463. <div class="j-data-add form-item-add" @click="onEditorAddData">
  1464. <i class="fa fa-plus"></i> 添加一个
  1465. </div>
  1466. </form>
  1467. </div>
  1468. <!--编辑器: 商品组-->
  1469. <div id="tpl_editor_goods" v-if="curItem.type == 'goods'">
  1470. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1471. <form class="am-form tpl-form-line-form">
  1472. <!--商品数据-->
  1473. <div class="j-switch-box" data-item-class="switch-source">
  1474. <div class="am-form-group">
  1475. <label class="am-u-sm-3 am-form-label am-text-xs">商品来源 </label>
  1476. <div class="am-u-sm-8 am-u-end">
  1477. <label class="am-radio-inline">
  1478. <input type="radio" value="auto"
  1479. v-model="curItem.params.source"> 自动获取
  1480. </label>
  1481. <label class="am-radio-inline">
  1482. <input type="radio" value="choice"
  1483. v-model="curItem.params.source"> 手动选择
  1484. </label>
  1485. </div>
  1486. </div>
  1487. <!--手动选择-->
  1488. <div class="switch-source __choice "
  1489. v-show="curItem.params.source == 'choice'">
  1490. <div class="form-items __goods am-cf">
  1491. <draggable :list="curItem.data"
  1492. :options="{ animation: 120, filter: 'input', preventOnFilter: false }">
  1493. <div v-for="(goods,index) in curItem.data"
  1494. class="form-item drag">
  1495. <i class="iconfont icon-shanchu item-delete" data-no-confirm="true"
  1496. @click="onEditorDeleleData(index, selectedIndex)"></i>
  1497. <div class="item-inner">
  1498. <div class="data-image">
  1499. <img :src="goods.image" alt="">
  1500. </div>
  1501. </div>
  1502. </div>
  1503. </draggable>
  1504. </div>
  1505. <div class="j-selectGoods form-item-add" @click.stop="onSelectGoods(curItem)">
  1506. <i class="fa fa-plus"></i> 选择商品
  1507. </div>
  1508. </div>
  1509. <!-- 自动获取 -->
  1510. <div class="switch-source"
  1511. v-show="curItem.params.source == 'auto'">
  1512. <div class="am-form-group">
  1513. <label class="am-u-sm-3 am-form-label am-text-xs">商品分类 </label>
  1514. <div class="am-u-sm-8 am-u-end">
  1515. <select v-model="curItem.params.auto.category"
  1516. data-am-selected="{btnSize: 'sm', placeholder:'全部分类', maxHeight: 400}">
  1517. <option value="0"> -- 全部分类 --</option>
  1518. <template v-for="first in opts.catgory">
  1519. <option :value="first.category_id"> {{ first.name }}</option>
  1520. <template v-if="first.child">
  1521. <option v-for="two in first.child" :value="two.category_id">
  1522.  {{ two.name }}
  1523. </option>
  1524. </template>
  1525. </template>
  1526. </select>
  1527. </div>
  1528. </div>
  1529. <div class="am-form-group">
  1530. <label class="am-u-sm-3 am-form-label am-text-xs"> 商品排序 </label>
  1531. <div class="am-u-sm-8 am-u-end">
  1532. <label class="am-radio-inline">
  1533. <input type="radio" value="all"
  1534. v-model="curItem.params.auto.goodsSort">
  1535. 综合
  1536. </label>
  1537. <label class="am-radio-inline">
  1538. <input type="radio" value="sales"
  1539. v-model="curItem.params.auto.goodsSort">
  1540. 销量 </label>
  1541. <label class="am-radio-inline">
  1542. <input type="radio" value="price"
  1543. v-model="curItem.params.auto.goodsSort">
  1544. 价格 </label>
  1545. </div>
  1546. </div>
  1547. <div class="am-form-group">
  1548. <label class="am-u-sm-3 am-form-label am-text-xs"> 显示数量 </label>
  1549. <div class="am-u-sm-8 am-u-end">
  1550. <input class="tpl-form-input" type="number" min="1"
  1551. v-model="curItem.params.auto.showNum">
  1552. </div>
  1553. </div>
  1554. </div>
  1555. </div>
  1556. <!--分割线-->
  1557. <hr data-am-widget="divider" style="" class="am-divider am-divider-dashed"/>
  1558. <!--组件样式-->
  1559. <div class="am-form-group">
  1560. <label class="am-u-sm-3 am-form-label am-text-xs">背景颜色 </label>
  1561. <div class="am-u-sm-8 am-u-end">
  1562. <input type="color"
  1563. v-model="curItem.style.background">
  1564. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  1565. @click.stop="onEditorResetColor(curItem.style, 'background', '#f3f3f3')">
  1566. 重置
  1567. </button>
  1568. </div>
  1569. </div>
  1570. <div class="am-form-group">
  1571. <label class="am-u-sm-3 am-form-label am-text-xs">显示类型 </label>
  1572. <div class="am-u-sm-8 am-u-end">
  1573. <label class="am-radio-inline">
  1574. <input type="radio" value="list"
  1575. v-model="curItem.style.display"> 列表平铺
  1576. </label>
  1577. <label class="am-radio-inline">
  1578. <input type="radio" value="slide"
  1579. v-model="curItem.style.display"
  1580. :disabled="curItem.style.column == 1"> 横向滑动
  1581. </label>
  1582. </div>
  1583. </div>
  1584. <div class="am-form-group">
  1585. <label class="am-u-sm-3 am-form-label am-text-xs">分列数量 </label>
  1586. <div class="am-u-sm-8 am-u-end">
  1587. <label class="am-radio-inline">
  1588. <input type="radio" value="1"
  1589. v-model="curItem.style.column"
  1590. :disabled="curItem.style.display == 'slide'"> 单列
  1591. </label>
  1592. <label class="am-radio-inline">
  1593. <input type="radio" value="2"
  1594. v-model="curItem.style.column"> 两列
  1595. </label>
  1596. <label class="am-radio-inline">
  1597. <input type="radio" value="3"
  1598. v-model="curItem.style.column"> 三列
  1599. </label>
  1600. </div>
  1601. </div>
  1602. <div class="am-form-group">
  1603. <label class="am-u-sm-3 am-form-label am-text-xs">显示内容 </label>
  1604. <div class="am-u-sm-8 am-u-end">
  1605. <label class="am-checkbox-inline">
  1606. <input type="checkbox"
  1607. v-model="curItem.style.show.goodsName"> 商品名称
  1608. </label>
  1609. <label class="am-checkbox-inline">
  1610. <input type="checkbox"
  1611. v-model="curItem.style.show.goodsPrice"> 商品价格
  1612. </label>
  1613. <label class="am-checkbox-inline">
  1614. <input type="checkbox"
  1615. v-model="curItem.style.show.linePrice"> 划线价格
  1616. </label>
  1617. <label class="am-checkbox-inline" v-show="curItem.style.column == 1">
  1618. <input type="checkbox"
  1619. v-model="curItem.style.show.sellingPoint"> 商品卖点
  1620. </label>
  1621. <label class="am-checkbox-inline" v-show="curItem.style.column == 1">
  1622. <input type="checkbox"
  1623. v-model="curItem.style.show.goodsSales"> 商品销量
  1624. </label>
  1625. </div>
  1626. </div>
  1627. </form>
  1628. </div>
  1629. <!-- 编辑器: 优惠券组 -->
  1630. <div id="tpl_editor_coupon" v-if="curItem.type == 'coupon'">
  1631. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1632. <form class="am-form tpl-form-line-form">
  1633. <div class="am-form-group">
  1634. <label class="am-u-sm-3 am-form-label am-text-xs">上下边距 </label>
  1635. <div class="am-u-sm-9 am-u-end">
  1636. <input class="tpl-form-input" type="range"
  1637. v-model="curItem.style.paddingTop" min="0" max="50">
  1638. <div class="display-value">
  1639. <span class="value">{{ curItem.style.paddingTop }}</span>px
  1640. (像素)
  1641. </div>
  1642. </div>
  1643. </div>
  1644. <div class="am-form-group">
  1645. <label class="am-u-sm-3 am-form-label am-text-xs">背景颜色 </label>
  1646. <div class="am-u-sm-9 am-u-end">
  1647. <input type="color" v-model="curItem.style.background">
  1648. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  1649. @click.stop="onEditorResetColor(curItem.style, 'background', '#ffffff')">
  1650. 重置
  1651. </button>
  1652. </div>
  1653. </div>
  1654. <div class="am-form-group">
  1655. <label class="am-u-sm-3 am-form-label am-text-xs">显示数量 </label>
  1656. <div class="am-u-sm-9 am-u-end">
  1657. <input class="tpl-form-input" type="range"
  1658. v-model="curItem.params.limit" min="1" max="5">
  1659. <div class="display-value">
  1660. 最多<span class="value">{{ curItem.params.limit }}</span>个
  1661. </div>
  1662. </div>
  1663. </div>
  1664. </form>
  1665. </div>
  1666. <!-- 编辑器: 拼团商品组 -->
  1667. <div id="tpl_editor_sharingGoods" v-if="curItem.type == 'sharingGoods'">
  1668. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1669. <form class="am-form tpl-form-line-form">
  1670. <!--商品数据-->
  1671. <div class="j-switch-box" data-item-class="switch-source">
  1672. <div class="am-form-group">
  1673. <label class="am-u-sm-3 am-form-label am-text-xs">商品来源 </label>
  1674. <div class="am-u-sm-8 am-u-end">
  1675. <label class="am-radio-inline">
  1676. <input type="radio" value="auto"
  1677. v-model="curItem.params.source"> 自动获取
  1678. </label>
  1679. <label class="am-radio-inline">
  1680. <input type="radio" value="choice"
  1681. v-model="curItem.params.source"> 手动选择
  1682. </label>
  1683. </div>
  1684. </div>
  1685. <!--手动选择-->
  1686. <div class="switch-source __choice" v-show="curItem.params.source == 'choice'">
  1687. <div class="form-items __goods am-cf">
  1688. <draggable :list="curItem.data"
  1689. :options="{ animation: 120, filter: 'input', preventOnFilter: false }">
  1690. <div v-for="(goods, index) in curItem.data"
  1691. class="form-item drag">
  1692. <i class="iconfont icon-shanchu item-delete" data-no-confirm="true"
  1693. @click="onEditorDeleleData(index,selectedIndex)"></i>
  1694. <div class="item-inner">
  1695. <div class="data-image">
  1696. <img :src="goods.image" alt="">
  1697. </div>
  1698. </div>
  1699. </div>
  1700. </draggable>
  1701. </div>
  1702. <div class="j-selectGoods form-item-add" @click.stop="onSelectGoods(curItem)">
  1703. <i class="fa fa-plus"></i> 选择商品
  1704. </div>
  1705. </div>
  1706. <!--自动获取-->
  1707. <div class="switch-source __auto" v-show="curItem.params.source !== 'choice'">
  1708. <div class="am-form-group">
  1709. <label class="am-u-sm-3 am-form-label am-text-xs">商品分类 </label>
  1710. <div class="am-u-sm-8 am-u-end">
  1711. <select v-model="curItem.params.auto.category"
  1712. data-am-selected="{btnSize: 'sm', placeholder:'全部分类', maxHeight: 400}">
  1713. <option value="0"> -- 全部分类 --</option>
  1714. <template v-for="first in opts.sharingCatgory">
  1715. <option :value="first.category_id"> {{ first.name }}</option>
  1716. <template v-if="first.child">
  1717. <option v-for="two in first.child" :value="two.category_id">
  1718.  {{ two.name }}
  1719. </option>
  1720. </template>
  1721. </template>
  1722. </select>
  1723. </div>
  1724. </div>
  1725. <div class="am-form-group">
  1726. <label class="am-u-sm-3 am-form-label am-text-xs">商品排序 </label>
  1727. <div class="am-u-sm-8 am-u-end">
  1728. <label class="am-radio-inline">
  1729. <input type="radio" value="all"
  1730. v-model="curItem.params.auto.goodsSort">
  1731. 综合
  1732. </label>
  1733. <label class="am-radio-inline">
  1734. <input type="radio" value="sales"
  1735. v-model="curItem.params.auto.goodsSort">
  1736. 销量
  1737. </label>
  1738. <label class="am-radio-inline">
  1739. <input type="radio" value="price"
  1740. v-model="curItem.params.auto.goodsSort">
  1741. 价格
  1742. </label>
  1743. </div>
  1744. </div>
  1745. <div class="am-form-group">
  1746. <label class="am-u-sm-3 am-form-label am-text-xs">显示数量 </label>
  1747. <div class="am-u-sm-8 am-u-end">
  1748. <input class="tpl-form-input" type="number" min="1"
  1749. v-model="curItem.params.auto.showNum">
  1750. </div>
  1751. </div>
  1752. </div>
  1753. </div>
  1754. <!--分割线-->
  1755. <hr data-am-widget="divider" style="" class="am-divider am-divider-dashed"/>
  1756. <!--组件样式-->
  1757. <div class="am-form-group">
  1758. <label class="am-u-sm-3 am-form-label am-text-xs">背景颜色 </label>
  1759. <div class="am-u-sm-8 am-u-end">
  1760. <input class="" type="color"
  1761. v-model="curItem.style.background">
  1762. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  1763. @click.stop="onEditorResetColor(curItem.style, 'background', '#f3f3f3')">
  1764. 重置
  1765. </button>
  1766. </div>
  1767. </div>
  1768. <div class="am-form-group">
  1769. <label class="am-u-sm-3 am-form-label am-text-xs">显示内容 </label>
  1770. <div class="am-u-sm-8 am-u-end">
  1771. <label class="am-checkbox-inline">
  1772. <input type="checkbox" value="1"
  1773. v-model="curItem.style.show.sellingPoint"> 商品卖点
  1774. </label>
  1775. <label class="am-checkbox-inline">
  1776. <input type="checkbox" value="1"
  1777. v-model="curItem.style.show.sharingPrice"> 拼团价格
  1778. </label>
  1779. <label class="am-checkbox-inline">
  1780. <input type="checkbox"
  1781. v-model="curItem.style.show.linePrice"> 划线价格
  1782. </label>
  1783. </div>
  1784. </div>
  1785. </form>
  1786. </div>
  1787. <!-- 编辑器: 砍价商品组 -->
  1788. <div id="tpl_editor_bargainGoods" v-if="curItem.type == 'bargainGoods'">
  1789. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1790. <form class="am-form tpl-form-line-form">
  1791. <!--商品数据-->
  1792. <div class="j-switch-box" data-item-class="switch-source">
  1793. <div class="am-form-group">
  1794. <label class="am-u-sm-3 am-form-label am-text-xs">商品来源 </label>
  1795. <div class="am-u-sm-8 am-u-end">
  1796. <label class="am-radio-inline">
  1797. <input type="radio" value="auto"
  1798. v-model="curItem.params.source"> 自动获取
  1799. </label>
  1800. <label class="am-radio-inline">
  1801. <input type="radio" value="choice"
  1802. v-model="curItem.params.source"> 手动选择
  1803. </label>
  1804. </div>
  1805. </div>
  1806. <!--手动选择-->
  1807. <div class="switch-source __choice" v-show="curItem.params.source == 'choice'">
  1808. <div class="form-items __goods am-cf">
  1809. <draggable :list="curItem.data"
  1810. :options="{ animation: 120, filter: 'input', preventOnFilter: false }">
  1811. <div v-for="(goods, index) in curItem.data"
  1812. class="form-item drag">
  1813. <i class="iconfont icon-shanchu item-delete" data-no-confirm="true"
  1814. @click="onEditorDeleleData(index,selectedIndex)"></i>
  1815. <div class="item-inner">
  1816. <div class="data-image">
  1817. <img :src="goods.goods_image" alt="">
  1818. </div>
  1819. </div>
  1820. </div>
  1821. </draggable>
  1822. </div>
  1823. <div class="j-selectGoods form-item-add" @click.stop="onSelectGoods(curItem)">
  1824. <i class="fa fa-plus"></i> 选择商品
  1825. </div>
  1826. </div>
  1827. <!--自动获取-->
  1828. <div class="switch-source __auto" v-show="curItem.params.source !== 'choice'">
  1829. <div class="am-form-group">
  1830. <label class="am-u-sm-3 am-form-label am-text-xs">商品排序 </label>
  1831. <div class="am-u-sm-8 am-u-end">
  1832. <label class="am-radio-inline">
  1833. <input type="radio" value="all"
  1834. v-model="curItem.params.auto.goodsSort">
  1835. 综合
  1836. </label>
  1837. <label class="am-radio-inline">
  1838. <input type="radio" value="sales"
  1839. v-model="curItem.params.auto.goodsSort">
  1840. 销量
  1841. </label>
  1842. <label class="am-radio-inline">
  1843. <input type="radio" value="price"
  1844. v-model="curItem.params.auto.goodsSort">
  1845. 价格
  1846. </label>
  1847. </div>
  1848. </div>
  1849. <div class="am-form-group">
  1850. <label class="am-u-sm-3 am-form-label am-text-xs">显示数量 </label>
  1851. <div class="am-u-sm-8 am-u-end">
  1852. <input class="tpl-form-input" type="number" min="1"
  1853. v-model="curItem.params.auto.showNum">
  1854. </div>
  1855. </div>
  1856. </div>
  1857. </div>
  1858. <!-- 分割线 -->
  1859. <hr data-am-widget="divider" style="" class="am-divider am-divider-dashed"/>
  1860. <!-- 组件样式 -->
  1861. <div class="am-form-group">
  1862. <label class="am-u-sm-3 am-form-label am-text-xs">背景颜色 </label>
  1863. <div class="am-u-sm-8 am-u-end">
  1864. <input class="" type="color"
  1865. v-model="curItem.style.background">
  1866. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  1867. @click.stop="onEditorResetColor(curItem.style, 'background', '#f3f3f3')">
  1868. 重置
  1869. </button>
  1870. </div>
  1871. </div>
  1872. <div class="am-form-group">
  1873. <label class="am-u-sm-3 am-form-label am-text-xs">显示内容 </label>
  1874. <div class="am-u-sm-8 am-u-end">
  1875. <label class="am-checkbox-inline">
  1876. <input type="checkbox" value="1"
  1877. v-model="curItem.style.show.goodsName"> 商品名称
  1878. </label>
  1879. <label class="am-checkbox-inline">
  1880. <input type="checkbox" value="1"
  1881. v-model="curItem.style.show.peoples"> 正在砍价
  1882. </label>
  1883. <label class="am-checkbox-inline">
  1884. <input type="checkbox" value="1"
  1885. v-model="curItem.style.show.floorPrice"> 砍价底价
  1886. </label>
  1887. <label class="am-checkbox-inline">
  1888. <input type="checkbox"
  1889. v-model="curItem.style.show.originalPrice"> 商品原价
  1890. </label>
  1891. </div>
  1892. </div>
  1893. </form>
  1894. </div>
  1895. <!-- 编辑器: 秒杀商品组 -->
  1896. <div id="tpl_editor_sharpGoods" v-if="curItem.type == 'sharpGoods'">
  1897. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1898. <form class="am-form tpl-form-line-form">
  1899. <!-- 商品数据 -->
  1900. <div class="j-switch-box" data-item-class="switch-source">
  1901. <!--自动获取-->
  1902. <div class="switch-source __auto" v-show="curItem.params.source !== 'choice'">
  1903. <div class="am-form-group">
  1904. <label class="am-u-sm-3 am-form-label am-text-xs">商品数量 </label>
  1905. <div class="am-u-sm-8 am-u-end">
  1906. <input class="tpl-form-input" type="number" min="1"
  1907. v-model="curItem.params.showNum">
  1908. </div>
  1909. </div>
  1910. </div>
  1911. </div>
  1912. <!-- 分割线 -->
  1913. <hr data-am-widget="divider" style="" class="am-divider am-divider-dashed"/>
  1914. <!-- 组件样式 -->
  1915. <div class="am-form-group">
  1916. <label class="am-u-sm-3 am-form-label am-text-xs">背景颜色 </label>
  1917. <div class="am-u-sm-8 am-u-end">
  1918. <input class="" type="color"
  1919. v-model="curItem.style.background">
  1920. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  1921. @click.stop="onEditorResetColor(curItem.style, 'background', '#ffffff')">
  1922. 重置
  1923. </button>
  1924. </div>
  1925. </div>
  1926. <div class="am-form-group">
  1927. <label class="am-u-sm-3 am-form-label am-text-xs">分列数量 </label>
  1928. <div class="am-u-sm-8 am-u-end">
  1929. <!-- <label class="am-radio-inline"> -->
  1930. <!-- <input type="radio" value="1" -->
  1931. <!-- v-model="curItem.style.column" -->
  1932. <!-- :disabled="curItem.style.display == 'slide'"> 单列 -->
  1933. <!-- </label> -->
  1934. <label class="am-radio-inline">
  1935. <input type="radio" value="2"
  1936. v-model="curItem.style.column"> 两列
  1937. </label>
  1938. <label class="am-radio-inline">
  1939. <input type="radio" value="3"
  1940. v-model="curItem.style.column"> 三列
  1941. </label>
  1942. </div>
  1943. </div>
  1944. <div class="am-form-group">
  1945. <label class="am-u-sm-3 am-form-label am-text-xs">显示内容 </label>
  1946. <div class="am-u-sm-8 am-u-end">
  1947. <label class="am-checkbox-inline">
  1948. <input type="checkbox" value="1"
  1949. v-model="curItem.style.show.goodsName"> 商品名称
  1950. </label>
  1951. <label class="am-checkbox-inline">
  1952. <input type="checkbox"
  1953. v-model="curItem.style.show.seckillPrice"> 秒杀价格
  1954. </label>
  1955. <label class="am-checkbox-inline">
  1956. <input type="checkbox"
  1957. v-model="curItem.style.show.originalPrice"> 商品原价
  1958. </label>
  1959. </div>
  1960. </div>
  1961. </form>
  1962. </div>
  1963. <!--编辑器: 辅助空白-->
  1964. <div id="tpl_editor_blank" v-if="curItem.type == 'blank'">
  1965. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1966. <form class="am-form tpl-form-line-form">
  1967. <div class="am-form-group">
  1968. <label class="am-u-sm-4 am-form-label am-text-xs">背景颜色 </label>
  1969. <div class="am-u-sm-8 am-u-end">
  1970. <input class="" type="color"
  1971. v-model="curItem.style.background">
  1972. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  1973. @click.stop="onEditorResetColor(curItem.style, 'background', '#ffffff')">
  1974. 重置
  1975. </button>
  1976. </div>
  1977. </div>
  1978. <div class="am-form-group">
  1979. <label class="am-u-sm-4 am-form-label am-text-xs">组件高度 </label>
  1980. <div class="am-u-sm-8 am-u-end">
  1981. <input class="tpl-form-input" type="range"
  1982. v-model="curItem.style.height" min="1" max="200">
  1983. <div class="display-value">
  1984. <span class="value">{{ curItem.style.height }}</span>px
  1985. (像素)
  1986. </div>
  1987. </div>
  1988. </div>
  1989. </form>
  1990. </div>
  1991. <!--编辑器: 辅助线-->
  1992. <div id="tpl_editor_guide" v-if="curItem.type == 'guide'">
  1993. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  1994. <form class="am-form tpl-form-line-form">
  1995. <div class="am-form-group">
  1996. <label class="am-u-sm-4 am-form-label am-text-xs">背景颜色 </label>
  1997. <div class="am-u-sm-8 am-u-end">
  1998. <input class="" type="color"
  1999. v-model="curItem.style.background">
  2000. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  2001. @click.stop="onEditorResetColor(curItem.style, 'background', '#ffffff')">
  2002. 重置
  2003. </button>
  2004. </div>
  2005. </div>
  2006. <div class="am-form-group">
  2007. <label class="am-u-sm-4 am-form-label am-text-xs">线条样式 </label>
  2008. <div class="am-u-sm-8 am-u-end">
  2009. <label class="am-radio-inline">
  2010. <input type="radio" value="solid"
  2011. v-model='curItem.style.lineStyle'>
  2012. 实线
  2013. </label>
  2014. <label class="am-radio-inline">
  2015. <input type="radio" value="dashed"
  2016. v-model='curItem.style.lineStyle'> 虚线
  2017. </label>
  2018. <label class="am-radio-inline">
  2019. <input type="radio" value="dotted"
  2020. v-model='curItem.style.lineStyle'> 点状
  2021. </label>
  2022. </div>
  2023. </div>
  2024. <div class="am-form-group">
  2025. <label class="am-u-sm-4 am-form-label am-text-xs">线条颜色 </label>
  2026. <div class="am-u-sm-8 am-u-end">
  2027. <input class="" type="color"
  2028. v-model="curItem.style.lineColor">
  2029. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  2030. @click.stop="onEditorResetColor(curItem.style, 'lineColor', '#000000')">
  2031. 重置
  2032. </button>
  2033. </div>
  2034. </div>
  2035. <div class="am-form-group">
  2036. <label class="am-u-sm-4 am-form-label am-text-xs">线条高度 </label>
  2037. <div class="am-u-sm-8 am-u-end">
  2038. <input class="tpl-form-input" type="range"
  2039. v-model="curItem.style.lineHeight" min="1" max="20">
  2040. <div class="display-value">
  2041. <span class="value">{{ curItem.style.lineHeight }}</span>px
  2042. (像素)
  2043. </div>
  2044. </div>
  2045. </div>
  2046. <div class="am-form-group">
  2047. <label class="am-u-sm-4 am-form-label am-text-xs">上下边距 </label>
  2048. <div class="am-u-sm-8 am-u-end">
  2049. <input class="tpl-form-input" type="range"
  2050. v-model="curItem.style.paddingTop" min="0" max="50">
  2051. <div class="display-value">
  2052. <span class="value">{{ curItem.style.paddingTop }}</span>px(像素)
  2053. </div>
  2054. </div>
  2055. </div>
  2056. </form>
  2057. </div>
  2058. <!--编辑器: 富文本-->
  2059. <div id="tpl_editor_richText" v-if="curItem.type == 'richText'">
  2060. <div class="editor-title"><span>{{curItem.name}}</span></div>
  2061. <form class="am-form tpl-form-line-form">
  2062. <div class="am-form-group">
  2063. <label class="am-u-sm-3 am-form-label am-text-xs">上下边距 </label>
  2064. <div class="am-u-sm-8 am-u-end">
  2065. <input class="tpl-form-input" type="range"
  2066. v-model="curItem.style.paddingTop" min="0" max="50">
  2067. <div class="display-value">
  2068. <span class="value">{{ curItem.style.paddingTop }}</span>px
  2069. (像素)
  2070. </div>
  2071. </div>
  2072. </div>
  2073. <div class="am-form-group">
  2074. <label class="am-u-sm-3 am-form-label am-text-xs">左右边距 </label>
  2075. <div class="am-u-sm-8 am-u-end">
  2076. <input class="tpl-form-input" type="range" min="0" max="50"
  2077. v-model="curItem.style.paddingLeft">
  2078. <div class="display-value">
  2079. <span class="value">{{curItem.style.paddingLeft}}</span>px
  2080. (像素)
  2081. </div>
  2082. </div>
  2083. </div>
  2084. <div class="am-form-group">
  2085. <label class="am-u-sm-3 am-form-label am-text-xs">背景颜色 </label>
  2086. <div class="am-u-sm-9 am-u-end">
  2087. <input class="" type="color"
  2088. v-model="curItem.style.background">
  2089. <button type="button" class="btn-resetColor am-btn am-btn-xs"
  2090. @click.stop="onEditorResetColor(curItem.style, 'background', '#ffffff')">
  2091. 重置
  2092. </button>
  2093. </div>
  2094. </div>
  2095. <div class="am-form-group am-padding-top-sm">
  2096. <textarea id="ume-editor" name="editorValue"></textarea>
  2097. </div>
  2098. </form>
  2099. </div>
  2100. <!--编辑器: 线下门店-->
  2101. <div id="tpl_editor_shop" v-if="curItem.type == 'shop'">
  2102. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  2103. <form class="am-form tpl-form-line-form">
  2104. <!--商品数据-->
  2105. <div class="j-switch-box" data-item-class="switch-source">
  2106. <div class="am-form-group">
  2107. <label class="am-u-sm-3 am-form-label am-text-xs">商品来源 </label>
  2108. <div class="am-u-sm-8 am-u-end">
  2109. <label class="am-radio-inline">
  2110. <input type="radio" value="auto"
  2111. v-model="curItem.params.source"> 自动获取
  2112. </label>
  2113. <label class="am-radio-inline">
  2114. <input type="radio" value="choice"
  2115. v-model="curItem.params.source"> 手动选择
  2116. </label>
  2117. </div>
  2118. </div>
  2119. <!--手动选择-->
  2120. <div class="switch-source __choice"
  2121. v-show="curItem.params.source == 'choice'">
  2122. <div class="form-items __goods am-cf">
  2123. <draggable :list="curItem.data"
  2124. :options="{ animation: 120, filter: 'input', preventOnFilter: false }">
  2125. <div v-for="(shop, index) in curItem.data"
  2126. class="form-item drag">
  2127. <i class="iconfont icon-shanchu item-delete" data-no-confirm="true"
  2128. @click="onEditorDeleleData(index, selectedIndex)"></i>
  2129. <div class="item-inner">
  2130. <div class="data-image"><img :src="shop.logo_image" alt="">
  2131. </div>
  2132. </div>
  2133. </div>
  2134. </draggable>
  2135. </div>
  2136. <div class="j-selectShop form-item-add" @click.stop="onSelectShop(curItem)">
  2137. <span>选择门店</span>
  2138. </div>
  2139. </div>
  2140. <!-- 自动获取 -->
  2141. <div class="switch-source"
  2142. v-show="curItem.params.source == 'auto'">
  2143. <div class="am-form-group">
  2144. <label class="am-u-sm-3 am-form-label am-text-xs"> 展示数量 </label>
  2145. <div class="am-u-sm-8 am-u-end">
  2146. <input class="tpl-form-input" type="number" min="1"
  2147. v-model="curItem.params.auto.showNum">
  2148. </div>
  2149. </div>
  2150. </div>
  2151. </div>
  2152. </form>
  2153. </div>
  2154. <!-- 编辑器: 关注公众号 -->
  2155. <div id="tpl_editor_officialAccount" v-if="curItem.type == 'officialAccount'">
  2156. <div class="editor-title"><span>{{ curItem.name }}</span></div>
  2157. <div class="editor-centent">
  2158. <p>1、使用组件前,需前往<a href="https://mp.weixin.qq.com" target="_blank">小程序后台</a>,在“设置”->“接口设置”->“公众号关注组件”中设置要展示的公众号。</p>
  2159. <p class="x-mb-10">注:设置的公众号需与小程序主体一致。</p>
  2160. <p>2、当小程序从扫二维码场景(场景值1011)打开时,才具有展示引导关注公众号组件的能力。</p>
  2161. </div>
  2162. </div>
  2163. </template>
  2164. </div>
  2165. </div>
  2166. <!-- 提示 -->
  2167. <div class="tips am-margin-top-lg am-margin-bottom-sm">
  2168. <div class="pre">
  2169. <p>1. 设计完成后点击"保存页面",在小程序端页面下拉刷新即可看到效果。</p>
  2170. <p>2. 如需填写链接地址请参考<a href="<?= url('wxapp.page/links') ?>" target="_blank">页面链接</a></p>
  2171. </div>
  2172. </div>
  2173. </div>
  2174. </div>
  2175. </div>
  2176. <!-- 文件库弹窗 -->
  2177. {{include file="layouts/_template/file_library" /}}
  2178. <script src="assets/common/js/vue.min.js?v=<?= $version ?>"></script>
  2179. <script src="assets/common/js/Sortable.min.js?v=<?= $version ?>"></script>
  2180. <script src="assets/common/js/vuedraggable.min.js?v=<?= $version ?>"></script>
  2181. <script src="assets/store/js/select.data.js?v=<?= $version ?>"></script>
  2182. <script src="assets/common/plugins/umeditor/umeditor.config.js?v=<?= $version ?>"></script>
  2183. <script src="assets/common/plugins/umeditor/umeditor.min.js?v=<?= $version ?>"></script>
  2184. <script src="assets/store/js/diy.js?v=<?= $version ?>"></script>
  2185. <script>
  2186. $(function () {
  2187. // 渲染diy页面
  2188. new diyPhone(<?= $defaultData ?>, <?= $jsonData ?>, <?= $opts ?>);
  2189. });
  2190. </script>