design.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. <nc-component :data="data[index]" class="component-title">
  2. <!-- 预览 -->
  3. <template slot="preview">
  4. <div class="preview-box" :style="{ backgroundColor: nc.componentBgColor,
  5. borderTopLeftRadius: (nc.componentAngle == 'round' ? nc.topAroundRadius + 'px' : 0),
  6. borderTopRightRadius: (nc.componentAngle == 'round' ? nc.topAroundRadius + 'px' : 0),
  7. borderBottomLeftRadius: (nc.componentAngle == 'round' ? nc.bottomAroundRadius + 'px' : 0),
  8. borderBottomRightRadius: (nc.componentAngle == 'round' ? nc.bottomAroundRadius + 'px' : 0) }">
  9. <!-- 图零 -->
  10. <div class="text-title" :class="'text-'+ nc.style" v-if="nc.style == 'style-0'">
  11. <div class="text-title-box" v-show="nc.text">
  12. <span class="text-title-con" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, padding: '0 7px', fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  13. </div>
  14. </div>
  15. <!-- 图一 -->
  16. <div class="text-title" :class="'text-'+ nc.style" v-if="nc.style == 'style-1'">
  17. <div class="text-title-box" v-show="nc.text">
  18. <span class="text-title-con" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, padding: '0 7px', fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  19. <span class="line-left" :style="{ background: nc.textColor }"></span>
  20. <span class="line-right" :style="{ background: nc.textColor }"></span>
  21. </div>
  22. </div>
  23. <!-- 图二 -->
  24. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-2'">
  25. <div class="text-title-box" v-show="nc.text">
  26. <span class="text-title-con" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, paddingBottom: 3+'px', fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  27. </div>
  28. <div :class="'text-title-'+ nc.style">
  29. <span class="inner-line" :style="{ background: nc.textColor }"></span>
  30. <span class="line-triangle" :style="{ borderColor: nc.textColor, opacity: nc.textColor ? 1 : 0 }"></span>
  31. </div>
  32. </div>
  33. <!-- 图三 -->
  34. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-3'">
  35. <div class="text-title-box" v-show="nc.text">
  36. <span class="text-title-con" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, paddingBottom: 3+'px', fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  37. </div>
  38. <div :class="'text-title-'+ nc.style">
  39. <span class="inner-line" :style="{ background: nc.textColor }"></span>
  40. <span class="line-short" :style="{ background: nc.textColor, opacity: nc.textColor ? 1 : 0 }"></span>
  41. </div>
  42. </div>
  43. <!-- 图四 -->
  44. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-4'">
  45. <div class="text-title-box" v-show="nc.text">
  46. <span class="text-title-con" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, paddingBottom: 3+'px', fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  47. </div>
  48. <div class="text-title-line">
  49. <span class="line-left" :style="{ background: nc.textColor }"></span>
  50. <span class="line-center" :style="{ borderColor: nc.textColor, opacity: nc.textColor ? 1 : 0 }"></span>
  51. <span class="line-right" :style="{ background: nc.textColor }"></span>
  52. </div>
  53. </div>
  54. <!-- 图五 -->
  55. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-5'">
  56. <div class="text-title-box" v-show="nc.text">
  57. <span class="text-title-block" :style="{ borderColor: nc.textColor, opacity: nc.textColor ? 1 : 0 }">
  58. <span class="text-title-con" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, paddingBottom: 3+'px', borderColor: nc.textColor, fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  59. <span class="line-left" :style="{ background: nc.textColor }"></span>
  60. <span class="line-right" :style="{ background: nc.textColor }"></span>
  61. </span>
  62. </div>
  63. </div>
  64. <!-- 图六 -->
  65. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-6'">
  66. <div class="text-title-box" v-show="nc.text">
  67. <span class="text-title-outer" :style="{ borderColor: nc.textColor }">
  68. <span class="text-title-con" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, paddingBottom: 3+'px', borderColor: nc.textColor, background: '#fff', fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  69. <span class="text-title-con-2" :style="{ borderColor: nc.textColor, opacity: nc.textColor ? 1 : 0 }"></span>
  70. </span>
  71. </div>
  72. </div>
  73. <!-- 图七 -->
  74. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-7'">
  75. <div class="text-title-box" v-show="nc.text">
  76. <span class="text-title-outer" :style="{ borderColor: nc.textColor }">
  77. <span class="text-title-con" :style="{ fontSize : nc.fontSize + 'px', color : '#fff', paddingBottom: 3+'px', borderColor: nc.textColor, background: nc.textColor, fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  78. <span class="text-title-con-2" :style="{ borderColor: nc.textColor, opacity: nc.textColor ? 1 : 0 }"></span>
  79. </span>
  80. </div>
  81. </div>
  82. <!-- 图八 -->
  83. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-8'" >
  84. <div class="text-title-box" v-show="nc.text" :style="{ textAlign: 'left'}">
  85. <span class="text-title-con" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, paddingBottom: 3+'px', fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  86. <span class="line-left" :style="{ height: nc.fontSize + 'px', background: nc.textColor}"></span>
  87. </div>
  88. </div>
  89. <!-- 图九 -->
  90. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-9'" >
  91. <div class="text-title-box" v-show="nc.text">
  92. <div class="left"></div>
  93. <div class="center">
  94. <div><img src="{$resource_path}/img/style9-1.png" /></div>
  95. <span class="text-title-con" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, paddingBottom: 3+'px', fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  96. <div><img src="{$resource_path}/img/style9-2.png" /></div>
  97. </div>
  98. <div v-show="nc.more.isShow == 1" class="more" :style="{ color: nc.more.color, opacity: nc.more.color ? 1 : 0 }">{{nc.more.text}} <i class="iconfont iconyoujiantou"></i></div>
  99. </div>
  100. <div class="text-subTitle-box" v-show="nc.subTitle.text">
  101. <p v-show="nc.subTitle.text" :style="{ fontSize : nc.subTitle.fontSize + 'px', color: nc.subTitle.color, opacity: nc.subTitle.color ? 1 : 0 }">{{ nc.subTitle.text }}</p>
  102. </div>
  103. </div>
  104. <!-- 图十 -->
  105. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-10'" >
  106. <div class="text-title-box" v-show="nc.text">
  107. <div class="left"></div>
  108. <div class="center">
  109. <div><img src="{$resource_path}/img/style10-1.png" /></div>
  110. <span class="text-title-con" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, paddingBottom: 3+'px', fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  111. <div><img src="{$resource_path}/img/style10-2.png" /></div>
  112. <img src="{$resource_path}/img/style10-3.png" />
  113. </div>
  114. <div v-show="nc.more.isShow == 1" class="more" :style="{ color: nc.more.color, opacity: nc.more.color ? 1 : 0 }">{{nc.more.text}} <i class="iconfont iconyoujiantou"></i></div>
  115. </div>
  116. <div class="text-subTitle-box" v-show="nc.subTitle.text">
  117. <p v-show="nc.subTitle.text" :style="{ fontSize : nc.subTitle.fontSize + 'px', color: nc.subTitle.color, opacity: nc.subTitle.color ? 1 : 0 }">{{ nc.subTitle.text }}</p>
  118. </div>
  119. </div>
  120. <!-- 图十一 -->
  121. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-11'" >
  122. <div class="text-title-box" v-show="nc.text">
  123. <div class="left">
  124. <span class="text-title-con" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, paddingBottom: 3+'px', fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  125. <div class="text-subTitle-box" v-show="nc.subTitle.text">
  126. <p v-show="nc.subTitle.text" :style="{ fontSize : nc.subTitle.fontSize + 'px', color: nc.subTitle.color, opacity: nc.subTitle.color ? 1 : 0 }">{{ nc.subTitle.text }}</p>
  127. </div>
  128. </div>
  129. <div v-show="nc.more.isShow == 1" class="more" :style="{ color: nc.more.color, opacity: nc.more.color ? 1 : 0 }"><span>{{nc.more.text}}</span> <i class="iconfont iconyoujiantou"></i></div>
  130. <img class="left-img" src="{$resource_path}/img/style11-1.png" />
  131. <img class="right-img" src="{$resource_path}/img/style11-2.png" />
  132. </div>
  133. </div>
  134. <!-- 图十二 -->
  135. <div class="text-title" :class="'text-'+ nc.style" v-if="nc.style == 'style-12'">
  136. <div class="text-title-box" v-show="nc.text">
  137. <span class="title" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  138. <span class="sub-title" v-show="nc.subTitle.text" :style="{ fontSize : nc.subTitle.fontSize + 'px', color: nc.subTitle.color, opacity: nc.subTitle.color ? 1 : 0 }">{{nc.subTitle.text}}</span>
  139. <div v-show="nc.more.isShow == 1" class="more" :style="{ color: nc.more.color, opacity: nc.more.color ? 1 : 0 }"><span>{{nc.more.text}}</span> <i class="iconfont iconyoujiantou"></i></div>
  140. </div>
  141. </div>
  142. <!-- 图十三 -->
  143. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-13'" >
  144. <div class="text-title-box" v-show="nc.text">
  145. <img class="left-img" src="{$resource_path}/img/style13-1.png" />
  146. <span class="text-title" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, opacity: nc.textColor ? 1 : 0,fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  147. <img class="right-img" src="{$resource_path}/img/style13-1.png" />
  148. </div>
  149. </div>
  150. <!-- 图十四 -->
  151. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-14'">
  152. <div class="title-wrap">
  153. <div class="text">
  154. <span :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  155. <span class="zone" :style="{ fontSize : nc.fontSize + 'px', fontWeight: nc.fontWeight }">专区</span>
  156. </div>
  157. <i class="iconfont icondanxuan-xuanzhong" :style="{ color : nc.textColor,fontWeight: nc.fontWeight }"></i>
  158. <i class="iconfont icondanxuan-xuanzhong" :style="{ color : nc.textColor,fontWeight: nc.fontWeight }"></i>
  159. <i class="iconfont icondanxuan-xuanzhong" :style="{ color : nc.textColor,fontWeight: nc.fontWeight }"></i>
  160. <div class="sub-title" v-show="nc.subTitle.text" :style="{ fontSize : nc.subTitle.fontSize + 'px', color: nc.subTitle.color, opacity: nc.subTitle.color ? 0.6 : 0 }">{{nc.subTitle.text}}</div>
  161. </div>
  162. <div v-show="nc.more.isShow == 1" class="more" :style="{ color: nc.more.color, opacity: nc.more.color ? 1 : 0 }"><span>{{nc.more.text}}</span> <i class="iconfont iconyoujiantou"></i></div>
  163. </div>
  164. <!-- 图十五 -->
  165. <div class="text-title" :class="'text-'+ nc.style" v-else-if="nc.style == 'style-15'">
  166. <div class="title-wrap">
  167. <div class="ornament" style="margin-right: 20px;">
  168. <span class="line" :style="{ color : nc.textColor,fontWeight: nc.fontWeight }"></span>
  169. <span class="line" :style="{ color : nc.textColor,fontWeight: nc.fontWeight }"></span>
  170. <span class="my">
  171. <i class="yuan" :style="{ backgroundColor : nc.textColor,fontWeight: nc.fontWeight }"></i>
  172. <i class="vertical" :style="{ color : nc.textColor,fontWeight: nc.fontWeight }"></i>
  173. </span>
  174. </div>
  175. <span :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  176. <div class="ornament" style="margin-left: 20px;">
  177. <span class="line" :style="{ color : nc.textColor,fontWeight: nc.fontWeight }"></span>
  178. <span class="line" :style="{ color : nc.textColor,fontWeight: nc.fontWeight }"></span>
  179. <span class="my">
  180. <i class="yuan" :style="{ backgroundColor : nc.textColor,fontWeight: nc.fontWeight }"></i>
  181. <i class="vertical" :style="{ color : nc.textColor,fontWeight: nc.fontWeight }"></i>
  182. </span>
  183. </div>
  184. </div>
  185. <div class="sub-title" v-show="nc.subTitle.text" :style="{ fontSize : nc.subTitle.fontSize + 'px', color: nc.subTitle.color, opacity: nc.subTitle.color ? 0.6 : 0 }">{{nc.subTitle.text}}</div>
  186. </div>
  187. <!-- 图十六 -->
  188. <div class="text-title" :class="'text-'+ nc.style" v-if="nc.style == 'style-16'">
  189. <div class="text-title-box" v-show="nc.text">
  190. <span class="title" :style="{ fontSize : nc.fontSize + 'px', color : nc.textColor, fontWeight: nc.fontWeight }">{{ nc.text }}</span>
  191. <div class="sub-title" v-show="nc.subTitle.text" :style="{ backgroundColor: nc.subTitle.bgColor, fontSize : nc.subTitle.fontSize + 'px', color: nc.subTitle.color, opacity: nc.subTitle.color ? 1 : 0 }">
  192. <i :class="[nc.subTitle.icon]" :style="{ backgroundColor: nc.subTitle.bgColor}"></i>
  193. <span :style="{ fontWeight: nc.subTitle.fontWeight}">{{nc.subTitle.text}}</span>
  194. </div>
  195. <div v-show="nc.more.isShow == 1" class="more" :style="{ color: nc.more.color, opacity: nc.more.color ? 1 : 0 }"><span>{{nc.more.text}}</span> <i class="iconfont iconyoujiantou"></i></div>
  196. </div>
  197. </div>
  198. </div>
  199. </template>
  200. <!-- 内容编辑 -->
  201. <template slot="edit-content">
  202. <template v-if="nc.lazyLoad">
  203. <div class="template-edit-title">
  204. <h3>风格设置</h3>
  205. <text-style></text-style>
  206. </div>
  207. <div class="template-edit-title">
  208. <h3>标题内容</h3>
  209. <div class="layui-form-item">
  210. <label class="layui-form-label sm">标题名称</label>
  211. <div class="layui-input-block">
  212. <input type="text" v-model="nc.text" maxlength="15" placeholder="请输入标题" class="layui-input">
  213. </div>
  214. </div>
  215. <nc-link :data="{ field : nc.link }"></nc-link>
  216. </div>
  217. <div class="template-edit-title" v-if="nc.subTitle.isElementShow">
  218. <h3>副标题内容</h3>
  219. <div class="layui-form-item">
  220. <label class="layui-form-label sm">副标题名称</label>
  221. <div class="layui-input-block">
  222. <input type="text" maxlength="30" v-model="nc.subTitle.text" placeholder="请输入副标题名称" class="layui-input">
  223. </div>
  224. </div>
  225. </div>
  226. <!-- “更多”按钮设置 -->
  227. <div class="template-edit-title" v-if="nc.more.isElementShow">
  228. <h3>“更多”按钮内容</h3>
  229. <div class="layui-form-item">
  230. <label class="layui-form-label sm">按钮文字</label>
  231. <div class="layui-input-block">
  232. <input type="text" v-model="nc.more.text" maxlength="8" placeholder="查看更多" class="layui-input">
  233. </div>
  234. </div>
  235. <nc-link :data="{ field : nc.more.link }"></nc-link>
  236. </div>
  237. <!-- 弹框 -->
  238. <article class="style-list-box-text">
  239. <div class="style-list-text layui-form">
  240. <div class="style-list-con-text">
  241. <div class="style-li-text" v-for="(value,name,index) in nc.tempData.styleList" :key="name" :class="{'selected border-color': nc.style == name}" :data_key="name">
  242. <span class="layui-hide">风格{{index + 1}}</span>
  243. <img :src="'{$resource_path}/img/style' + index + '.png'" />
  244. </div>
  245. </div>
  246. <input type="hidden" name="style">
  247. <input type="hidden" name="style_name" />
  248. </div>
  249. </article>
  250. </template>
  251. </template>
  252. <!-- 样式编辑 -->
  253. <template slot="edit-style">
  254. <template v-if="nc.lazyLoad">
  255. <div class="template-edit-title">
  256. <h3>标题样式</h3>
  257. <slide :data="{ field : 'fontSize', label : '文字大小', min: 12, max : 20 }"></slide>
  258. <text-font-weight></text-font-weight>
  259. <color :data="{ field : 'textColor', label : '文字颜色',defaultColor : '#303133'}"></color>
  260. </div>
  261. <div class="template-edit-title" v-if="nc.subTitle.isElementShow">
  262. <h3>副标题样式</h3>
  263. <slide :data="{ field : 'fontSize',parent:'subTitle', label : '文字大小', min: 12, max : 16 }"></slide>
  264. <color :data="{ field : 'color', label : '文字颜色', parent : 'subTitle',defaultColor : '#999999'}"></color>
  265. <div v-show="nc.style == 'style-16'">
  266. <color :data="{ field : 'bgColor', label : '背景颜色', parent : 'subTitle',defaultColor: ''}"></color>
  267. <text-font-weight :weight-data="{ parent : 'subTitle' }"></text-font-weight>
  268. <nc-icon :data="{ field : 'icon' , label:'选择图标', parent : 'subTitle'}"></nc-icon>
  269. </div>
  270. </div>
  271. <!-- “更多”按钮设置 -->
  272. <div class="template-edit-title" v-show="nc.more.isElementShow">
  273. <h3>“更多”按钮样式</h3>
  274. <div class="layui-form-item">
  275. <label class="layui-form-label sm">是否显示</label>
  276. <div class="layui-input-block">
  277. <div class="layui-unselect layui-form-checkbox" lay-skin="primary" @click="nc.more.isShow = nc.more.isShow ? 0 : 1" :class="{ 'layui-form-checked' : nc.more.isShow == 1 }">
  278. <span>{{ nc.more.isShow == 1 ? '显示' : '隐藏' }}</span>
  279. <i class="layui-icon layui-icon-ok"></i>
  280. </div>
  281. </div>
  282. </div>
  283. <color :data="{ field : 'color', 'label' : '文字颜色',parent : 'more',defaultColor : '#999999'}"></color>
  284. </div>
  285. </template>
  286. </template>
  287. <!-- 资源 -->
  288. <template slot="resource">
  289. <js>
  290. var textResourcePath = "{$resource_path}"; // http路径
  291. var textRelativePath = "{$relative_path}"; // 相对路径
  292. </js>
  293. <css src="{$resource_path}/css/design.css"></css>
  294. <js src="{$resource_path}/js/design.js"></js>
  295. </template>
  296. </nc-component>