多租户商城-商户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

331 lines
11 KiB

2 years ago
  1. <template>
  2. <div class="textTool">
  3. <h3 class="toolTit">文本设置</h3>
  4. <div class="toolBox">
  5. <div class="itemBox">
  6. <label>标题内容</label>
  7. <el-input v-model="activeComponent.componentContent.title" placeholder="请输入内容"></el-input>
  8. </div>
  9. <div class="itemBox">
  10. <label>描述内容</label>
  11. <el-input
  12. type="textarea"
  13. :rows="2"
  14. placeholder="请输入内容"
  15. resize="none"
  16. v-model="activeComponent.componentContent.describe">
  17. </el-input>
  18. </div>
  19. </div>
  20. <div class="operationBox">
  21. <div class="itemBox">
  22. <div class="Tit">显示位置</div>
  23. <div class="Info">{{positionText}}显示</div>
  24. <div class="modifyBox">
  25. <span class="iconfont" :class="{textActive: activeComponent.componentContent.textPos === 'left'}" @click="textPosition(type = 'left')">&#xec86;</span>
  26. <span class="iconfont" :class="{textActive: activeComponent.componentContent.textPos === 'center'}" @click="textPosition(type = 'center')">&#xe619;</span>
  27. <span class="iconfont" :class="{textActive: activeComponent.componentContent.textPos === 'right'}" @click="textPosition(type = 'right')">&#xec82;</span>
  28. </div>
  29. </div>
  30. <div class="itemBox">
  31. <div class="Tit">标题大小</div>
  32. <!--<div class="Info">{{fontSize}}{{activeComponent.componentContent.fontSizeNum}}</div>-->
  33. <div class="modifyBox fontSize">
  34. <font-size-select :fontSize.sync='activeComponent.componentContent.fontSizeNum'></font-size-select>
  35. </div>
  36. </div>
  37. <div class="itemBox">
  38. <div class="Tit">描述大小</div>
  39. <!--<div class="Info">{{describeSize}}{{activeComponent.componentContent.describeSizeNum}}</div>-->
  40. <div class="modifyBox fontSize">
  41. <font-size-select :fontSize.sync='activeComponent.componentContent.describeSizeNum'></font-size-select>
  42. </div>
  43. </div>
  44. <div class="itemBox">
  45. <div class="Tit">标题粗细</div>
  46. <div class="Info" v-text="activeComponent.componentContent.textFontW === 'bold' ? '加粗体' : '常规体'"></div>
  47. <div class="modifyBox fontSize">
  48. <span class="iconfont" :class="{textActive: activeComponent.componentContent.textFontW === 'bold'}" @click="changeFontW(type = 'bold')">&#xe649;</span>
  49. <span class="iconfont" :class="{textActive: activeComponent.componentContent.textFontW === 'normal'}" @click="changeFontW(type = 'normal')">&#xe8c2;</span>
  50. </div>
  51. </div>
  52. <div class="itemBox">
  53. <div class="Tit">描述粗细</div>
  54. <div class="Info" v-text="activeComponent.componentContent.describeFontW === 'bold' ? '加粗体' : '常规体'"></div>
  55. <div class="modifyBox">
  56. <span class="iconfont" :class="{textActive: activeComponent.componentContent.describeFontW === 'bold'}" @click="changeInfoFontW(type = 'bold')">&#xe649;</span>
  57. <span class="iconfont" :class="{textActive: activeComponent.componentContent.describeFontW === 'normal'}" @click="changeInfoFontW(type = 'normal')">&#xe8c2;</span>
  58. </div>
  59. </div>
  60. <div class="itemBox">
  61. <div class="Tit">标题颜色</div>
  62. <div class="Info">{{activeComponent.componentContent.titColor}}</div>
  63. <div class="modifyBox">
  64. <div class="colorBox">
  65. <span @click="resetColor">重置</span>
  66. <div class="block">
  67. <el-color-picker v-model="activeComponent.componentContent.titColor"></el-color-picker>
  68. </div>
  69. </div>
  70. </div>
  71. </div>
  72. <div class="itemBox">
  73. <div class="Tit">描述颜色</div>
  74. <div class="Info">{{activeComponent.componentContent.describeColor}}</div>
  75. <div class="modifyBox">
  76. <div class="colorBox">
  77. <span @click="resetDescribeColor">重置</span>
  78. <div class="block">
  79. <el-color-picker v-model="activeComponent.componentContent.describeColor"></el-color-picker>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. <div class="itemBox">
  85. <div class="Tit">背景颜色</div>
  86. <div class="Info">{{activeComponent.componentContent.bgColor}}</div>
  87. <div class="modifyBox">
  88. <div class="colorBox">
  89. <span @click="resetBgColor">重置</span>
  90. <div class="block">
  91. <el-color-picker v-model="activeComponent.componentContent.bgColor"></el-color-picker>
  92. </div>
  93. </div>
  94. </div>
  95. </div>
  96. <div class="itemBox">
  97. <div class="Tit">底部分割线</div>
  98. <div class="Info" v-text="activeComponent.componentContent.showLine ? '显示' : '隐藏'"></div>
  99. <div class="modifyBox">
  100. <el-checkbox v-model="activeComponent.componentContent.showLine"></el-checkbox>
  101. </div>
  102. </div>
  103. <div class="itemBox">
  104. <div class="Tit">查看更多</div>
  105. <div class="Info" v-text="activeComponent.componentContent.showMore ? '显示' : '隐藏'"></div>
  106. <div class="modifyBox">
  107. <el-checkbox v-model="activeComponent.componentContent.showMore"></el-checkbox>
  108. </div>
  109. </div>
  110. <div class="moreBox" v-show="activeComponent.componentContent.showMore">
  111. <div class="radio">
  112. <el-radio v-model="activeComponent.componentContent.styleValue" label="1">样式一</el-radio>
  113. <el-radio v-model="activeComponent.componentContent.styleValue" label="2">样式二</el-radio>
  114. <el-radio v-model="activeComponent.componentContent.styleValue" label="3">样式三</el-radio>
  115. </div>
  116. <div class="link">
  117. <tool-select-link :linkObj.sync='activeComponent.componentContent.linkObj' styleType="1"></tool-select-link>
  118. </div>
  119. </div>
  120. </div>
  121. </div>
  122. </template>
  123. <script>
  124. import {toolMixin} from '@@/config/mixin'
  125. import FontSizeSelect from '../toolModule/font-size-select'
  126. import ToolSelectLink from '@@/components/toolBar/toolModule/tool-select-link'
  127. export default {
  128. name: 'textTool',
  129. components: { ToolSelectLink, FontSizeSelect },
  130. mixins: [toolMixin],
  131. data () {
  132. return {
  133. linkOptions: [
  134. {
  135. value: '/index',
  136. label: '首页'
  137. },
  138. {
  139. value: '/list',
  140. label: '列表页'
  141. },
  142. {
  143. value: '/detail',
  144. label: '详情页'
  145. },
  146. {
  147. value: '/about',
  148. label: '关于我们'
  149. }
  150. ]
  151. }
  152. },
  153. computed: {
  154. fontSize () {
  155. if (this.activeComponent.componentContent.fontSizeNum === 16) {
  156. return '大'
  157. } else if (this.activeComponent.componentContent.fontSizeNum === 14) {
  158. return '中'
  159. } else {
  160. return '小'
  161. }
  162. },
  163. describeSize () {
  164. if (this.activeComponent.componentContent.describeSizeNum === 16) {
  165. return '大'
  166. } else if (this.activeComponent.componentContent.describeSizeNum === 14) {
  167. return '中'
  168. } else {
  169. return '小'
  170. }
  171. },
  172. positionText () {
  173. if (this.activeComponent.componentContent.textPos === 'left') {
  174. return '左'
  175. } else if (this.activeComponent.componentContent.textPos === 'center') {
  176. return '中'
  177. } else {
  178. return '右'
  179. }
  180. }
  181. },
  182. methods: {
  183. // 修改文字对齐方向
  184. textPosition (type) {
  185. this.activeComponent.componentContent.textPos = type
  186. },
  187. // 修改文本大小
  188. changeSize (sizeNum) {
  189. this.activeComponent.componentContent.fontSizeNum = sizeNum
  190. },
  191. // 修改描述大小
  192. changeDescribe (sizeNum) {
  193. this.activeComponent.componentContent.describeSizeNum = sizeNum
  194. },
  195. // 修改文本字体粗细
  196. changeFontW (type) {
  197. this.activeComponent.componentContent.textFontW = type
  198. },
  199. // 修改描述文字粗细
  200. changeInfoFontW (type) {
  201. this.activeComponent.componentContent.describeFontW = type
  202. },
  203. // 重置文本颜色
  204. resetColor () {
  205. this.activeComponent.componentContent.titColor = '#333333'
  206. },
  207. // 重置描述颜色
  208. resetDescribeColor () {
  209. this.activeComponent.componentContent.describeColor = '#333333'
  210. },
  211. // 重置背景颜色
  212. resetBgColor () {
  213. this.activeComponent.componentContent.bgColor = '#FFFFFF'
  214. }
  215. }
  216. }
  217. </script>
  218. <style lang="scss" scoped>
  219. .textTool {
  220. padding: 20px 20px 0 20px;
  221. h3 {
  222. font-size: 18px;
  223. font-weight: 500;
  224. height: 35px;
  225. line-height: 35px;
  226. color: #333333;
  227. margin-bottom: 20px;
  228. }
  229. .toolBox {
  230. padding-bottom: 10px;
  231. .itemBox {
  232. label {
  233. font-size: 14px;
  234. color: #666666;
  235. height: 40px;
  236. line-height: 40px;
  237. }
  238. margin-bottom: 15px;
  239. }
  240. border-bottom: 1px solid #eeeeee;
  241. }
  242. .operationBox {
  243. margin-top: 30px;
  244. .itemBox {
  245. font-size: 14px;
  246. display: flex;
  247. margin-bottom: 20px;
  248. align-items: center;
  249. .Tit {
  250. color: #888888;
  251. margin-right: 10px;
  252. width: 70px;
  253. }
  254. .Info {
  255. color: #222222;
  256. }
  257. .modifyBox {
  258. text-align: right;
  259. margin-left: auto;
  260. span {
  261. height: 26px;
  262. line-height: 26px;
  263. float: left;
  264. display: block;
  265. text-align: center;
  266. cursor: pointer;
  267. width: 30px;
  268. border: 1px solid #E8EAEC;
  269. }
  270. /*span:last-child {*/
  271. /* border-right: 1px solid #E8EAEC;*/
  272. /*}*/
  273. .textActive {
  274. border: 1px solid $mainColor;
  275. color: $mainColor;
  276. }
  277. .colorBox {
  278. display: flex;
  279. align-items: center;
  280. justify-content: flex-end;
  281. span {
  282. margin-right: 10px;
  283. cursor: pointer;
  284. border: none;
  285. color: $mainColor;
  286. }
  287. }
  288. }
  289. .fontSize {
  290. span:nth-child(1) {
  291. font-size: 16px;
  292. }
  293. span:nth-child(2) {
  294. font-size: 14px;
  295. }
  296. span:nth-child(3) {
  297. font-size: 12px;
  298. }
  299. }
  300. }
  301. .moreBox{
  302. border: 1px solid #E8EAEC;
  303. border-radius: 4px;
  304. padding:20px 10px;
  305. .radio{
  306. margin-bottom: 20px;
  307. }
  308. .el-radio{
  309. margin-right: 10px;
  310. }
  311. .link{
  312. display: flex;
  313. justify-content: space-between;
  314. align-items: center;
  315. }
  316. }
  317. }
  318. .block {
  319. height: 30px;
  320. }
  321. ::v-deep .el-color-picker__trigger {
  322. width: 45px;
  323. height: 26px;
  324. }
  325. ::v-deep .el-icon-arrow-down:before {
  326. display: none;
  327. }
  328. }
  329. </style>