design.html 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <nc-component :data="data[index]" class="notice">
  2. <!-- 预览 -->
  3. <template slot="preview">
  4. <template v-if="nc.lazyLoad">
  5. <div class="preview-box"
  6. :style="{
  7. borderTopLeftRadius: (nc.componentAngle == 'round' ? nc.topAroundRadius + 'px' : 0),
  8. borderTopRightRadius: (nc.componentAngle == 'round' ? nc.topAroundRadius + 'px' : 0),
  9. borderBottomLeftRadius: (nc.componentAngle == 'round' ? nc.bottomAroundRadius + 'px' : 0),
  10. borderBottomRightRadius: (nc.componentAngle == 'round' ? nc.bottomAroundRadius + 'px' : 0),
  11. backgroundColor : nc.componentBgColor }">
  12. <div :class="['notice-box',nc.contentStyle]">
  13. <div class="notice-con" v-for="(item, previewIndex) in nc.list" v-if="previewIndex < 1">
  14. <div :class="['img-wrap',nc.iconType]" v-if="previewIndex == 0">
  15. <img v-if="nc.iconType == 'img'" :src="changeImgUrl(nc.imageUrl)" />
  16. <div v-if="nc.iconType == 'icon'" class="icon-box">
  17. <iconfont :icon="nc.icon" v-if="nc.icon" :value="nc.style ? nc.style : ''"></iconfont>
  18. </div>
  19. </div>
  20. <div class="notice-con-split"></div>
  21. <span class="notice-con-font" :style="{color: nc.textColor ? nc.textColor : 'rgba(0,0,0,0)',fontWeight: nc.fontWeight,fontSize: nc.fontSize + 'px'}">{{ item.title }}</span>
  22. </div>
  23. </div>
  24. </div>
  25. </template>
  26. </template>
  27. <!-- 内容编辑 -->
  28. <template slot="edit-content">
  29. <template v-if="nc.lazyLoad">
  30. <notice-sources></notice-sources>
  31. <div class="template-edit-title">
  32. <h3>公告风格</h3>
  33. <div class="goods-list-edit layui-form" v-if="nc.tempData.iconList">
  34. <div class="layui-form-item icon-radio">
  35. <label class="layui-form-label sm">公告图标</label>
  36. <div class="layui-input-block">
  37. <span v-for="(item, sourcesKey) in nc.tempData.iconList" :key="sourcesKey" :class="[sourcesKey == nc.iconSources ? '' : 'layui-hide']">{{item.text}}</span>
  38. <ul class="icon-wrap">
  39. <li v-for="(item, sourcesKey) in nc.tempData.iconList" :key="sourcesKey" :class="[sourcesKey == nc.iconSources ? 'text-color border-color' : '']" @click="nc.iconSources=sourcesKey;nc.iconType=item.type;">
  40. <i class="iconfont" :class="[{'text-color': sourcesKey == nc.iconSources}, item.src]"></i>
  41. </li>
  42. </ul>
  43. </div>
  44. <div v-if="nc.iconSources == 'initial'" class="system-img">
  45. <div class="system-img-item" v-for="item in nc.tempData.iconList[nc.iconSources].icon" :class="{'border-color': nc.imageUrl == item}" @click="nc.imageUrl = item">
  46. <img :src="changeImgUrl(item)"/>
  47. </div>
  48. </div>
  49. </div>
  50. <div class="diy-img" v-show="nc.iconSources == 'diy'">
  51. <img-icon-upload :data="{data : nc}"></img-icon-upload>
  52. <div class="right-wrap">
  53. <div class="action-box" v-show="nc.iconType == 'icon'">
  54. <div class="action" @click="nc.tempData.methods.iconStyle($event)"><i class="iconfont iconpifu"></i></div>
  55. <div class="action" :id="'notice-color-' + nc.index"><i class="iconfont iconyanse"></i></div>
  56. </div>
  57. <div class="desc">宽度自适应,高度20px</div>
  58. </div>
  59. </div>
  60. <!-- <div class="layui-form-item">-->
  61. <!-- <label class="layui-form-label sm">风格</label>-->
  62. <!-- <div class="layui-input-block">-->
  63. <!-- <div @click="nc.contentStyle='style-1'" :class="{ 'layui-unselect layui-form-radio' : true,'layui-form-radioed' : (nc.contentStyle=='style-1') }">-->
  64. <!-- <i class="layui-anim layui-icon">{{ nc.contentStyle=='style-1' ? "&#xe643;" : "&#xe63f;" }}</i>-->
  65. <!-- <div>风格一</div>-->
  66. <!-- </div>-->
  67. <!-- <div @click="nc.contentStyle='style-2'" :class="{ 'layui-unselect layui-form-radio' : true,'layui-form-radioed' : (nc.contentStyle=='style-2') }">-->
  68. <!-- <i class="layui-anim layui-icon">{{ nc.contentStyle=='style-2' ? "&#xe643;" : "&#xe63f;" }}</i>-->
  69. <!-- <div>风格二</div>-->
  70. <!-- </div>-->
  71. <!-- </div>-->
  72. <!-- </div>-->
  73. <div class="layui-form-item">
  74. <label class="layui-form-label sm">滚动方式</label>
  75. <div class="layui-input-block">
  76. <div @click="nc.scrollWay='upDown'" :class="{ 'layui-unselect layui-form-radio' : true,'layui-form-radioed' : (nc.scrollWay=='upDown') }">
  77. <i class="layui-anim layui-icon">{{ nc.scrollWay=='upDown' ? "&#xe643;" : "&#xe63f;" }}</i>
  78. <div>上下滚动</div>
  79. </div>
  80. <div @click="nc.scrollWay='horizontal'" :class="{ 'layui-unselect layui-form-radio' : true,'layui-form-radioed' : (nc.scrollWay=='horizontal') }">
  81. <i class="layui-anim layui-icon">{{ nc.scrollWay=='horizontal' ? "&#xe643;" : "&#xe63f;" }}</i>
  82. <div>横向滚动</div>
  83. </div>
  84. </div>
  85. </div>
  86. </div>
  87. </div>
  88. <div class="template-edit-title">
  89. <h3>公告内容</h3>
  90. <div class="layui-form-item" v-if="nc.tempData.noticeSources">
  91. <label class="layui-form-label sm">数据来源</label>
  92. <div class="layui-input-block">
  93. <div class="source-selected">
  94. <div class="source">{{ nc.tempData.noticeSources[nc.sources].text }}</div>
  95. <div v-for="(item,sourcesKey) in nc.tempData.noticeSources" :key="sourcesKey" class="source-item" :title="item.text" @click="nc.sources=sourcesKey" :class="{ 'text-color border-color' : (nc.sources == sourcesKey) }">
  96. <i class='iconfont' :class='item.icon'></i>
  97. </div>
  98. </div>
  99. </div>
  100. </div>
  101. <div class="layui-form-item" v-if="nc.sources == 'initial' && nc.tempData.methods">
  102. <label class="layui-form-label sm">选择公告</label>
  103. <div class="layui-input-block">
  104. <div class="input-text selected-style" @click="nc.tempData.methods.selectNotice()">
  105. <span v-if="nc.noticeIds.length == 0">请选择</span>
  106. <span v-if="nc.noticeIds.length > 0" class="text-color">已选{{ nc.noticeIds.length }}个</span>
  107. <i class="iconfont iconyoujiantou"></i>
  108. </div>
  109. </div>
  110. </div>
  111. <div class="notice-config" v-if="nc.sources == 'diy'">
  112. <ul>
  113. <li v-for="(item,index) in nc.list" :key="item.id">
  114. <div class="content-block">
  115. <div class="layui-form-item" >
  116. <label class="layui-form-label sm">内容</label>
  117. <div class="layui-input-block">
  118. <input type="text" name='title' v-model="item.title" class="layui-input" />
  119. </div>
  120. </div>
  121. <nc-link :data="{ field : nc.list[index].link, label:'链接' }"></nc-link>
  122. </div>
  123. <i class="del" @click="nc.list.splice(index,1)">x</i>
  124. <div class="iconfont icontuodong"></div>
  125. </li>
  126. </ul>
  127. <div class="add-item text-color border-color" @click="nc.tempData.methods.addNotice()">
  128. <i>+</i>
  129. <span>添加一条公告</span>
  130. </div>
  131. </div>
  132. </div>
  133. </template>
  134. </template>
  135. <!-- 样式编辑 -->
  136. <template slot="edit-style">
  137. <template v-if="nc.lazyLoad">
  138. <div class="template-edit-title">
  139. <h3>文字设置</h3>
  140. <slide :data="{ field : 'fontSize', label : '文字大小', min: 12, max : 20 }"></slide>
  141. <div class="layui-form-item icon-radio">
  142. <label class="layui-form-label sm">文字粗细</label>
  143. <div class="layui-input-block">
  144. <span v-for="item in nc.tempData.thicknessList" :class="[item.value == nc.fontWeight ? '' : 'layui-hide']">{{item.name}}</span>
  145. <ul class="icon-wrap">
  146. <li v-for="(item, index) in nc.tempData.thicknessList" :class="[item.value == nc.fontWeight ? 'text-color border-color' : '']" @click="nc.fontWeight = item.value">
  147. <i class="iconfont" :class="[{'text-color': item.value == nc.fontWeight}, item.src]"></i>
  148. </li>
  149. </ul>
  150. </div>
  151. </div>
  152. <color :data="{ field : 'textColor', label : '文字颜色',defaultColor: '#303133' }"></color>
  153. </div>
  154. </template>
  155. </template>
  156. <!-- 资源 -->
  157. <template slot="resource">
  158. <js>
  159. var noticeResourcePath = "{$resource_path}"; // http路径
  160. var noticeRelativePath = "{$relative_path}"; // 相对路径
  161. </js>
  162. <css src="{$resource_path}/css/design.css"></css>
  163. <js src="{$resource_path}/js/design.js"></js>
  164. </template>
  165. </nc-component>