headerTool.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <div class="textTool">
  3. <h3 class="toolTit">头部设置</h3>
  4. <div class="operationBox">
  5. <div class="itemBox">
  6. <div class="Tit">LOGO类型</div>
  7. <el-radio-group v-model="activeComponent.componentContent.logoType">
  8. <el-radio :label="1">图片</el-radio>
  9. <el-radio :label="2">文本</el-radio>
  10. </el-radio-group>
  11. </div>
  12. <div v-if="activeComponent.componentContent.logoType === 1">
  13. <tool-single-img :imageUrl.sync='activeComponent.componentContent.imageUrl' tip='建议尺寸: 高度100px, 宽度自适应'></tool-single-img>
  14. </div>
  15. <div v-else>
  16. <div class="itemBox">
  17. <div class="Tit">LOGO文本</div>
  18. <el-input class="item-input" v-model="activeComponent.componentContent.title" maxlength="20" placeholder="请输入内容"></el-input>
  19. </div>
  20. <div class="itemBox">
  21. <div class="Tit">文本大小</div>
  22. <div class="modifyBox fontSize">
  23. <font-size-select :fontSize.sync='activeComponent.componentContent.fontSizeNum'></font-size-select>
  24. </div>
  25. </div>
  26. <div class="itemBox">
  27. <div class="Tit">文本粗细</div>
  28. <div class="Info" v-text="activeComponent.componentContent.textFontW === 'bold' ? '加粗体' : '常规体'"></div>
  29. <div class="modifyBox fontSize">
  30. <span class="iconfont" :class="{textActive: activeComponent.componentContent.textFontW === 'bold'}" @click="changeFontW(type = 'bold')">&#xe649;</span>
  31. <span class="iconfont" :class="{textActive: activeComponent.componentContent.textFontW === 'normal'}" @click="changeFontW(type = 'normal')">&#xe8c2;</span>
  32. </div>
  33. </div>
  34. <div class="itemBox">
  35. <div class="Tit">文本颜色</div>
  36. <div class="Info">{{activeComponent.componentContent.titColor}}</div>
  37. <div class="modifyBox">
  38. <div class="colorBox">
  39. <span @click="resetColor">重置</span>
  40. <div class="block">
  41. <el-color-picker v-model="activeComponent.componentContent.titColor"></el-color-picker>
  42. </div>
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. </template>
  50. <script>
  51. import {toolMixin} from '@@/config/mixin'
  52. import FontSizeSelect from '../toolModule/font-size-select'
  53. import ToolSingleImg from "../toolModule/tool-single-img";
  54. export default {
  55. name: 'textTool',
  56. components: {ToolSingleImg, FontSizeSelect },
  57. mixins: [toolMixin],
  58. data () {
  59. return {
  60. }
  61. },
  62. computed: {
  63. },
  64. methods: {
  65. // 修改文本字体粗细
  66. changeFontW (type) {
  67. this.activeComponent.componentContent.textFontW = type
  68. },
  69. // 重置文本颜色
  70. resetColor () {
  71. this.activeComponent.componentContent.titColor = '#333333'
  72. }
  73. }
  74. }
  75. </script>
  76. <style lang="scss" scoped>
  77. .textTool {
  78. padding: 20px 20px 0 20px;
  79. h3 {
  80. font-size: 18px;
  81. font-weight: 500;
  82. height: 35px;
  83. line-height: 35px;
  84. color: #333333;
  85. margin-bottom: 20px;
  86. }
  87. .operationBox {
  88. margin-top: 30px;
  89. .itemBox {
  90. font-size: 14px;
  91. display: flex;
  92. margin-bottom: 20px;
  93. align-items: center;
  94. .Tit {
  95. color: #888888;
  96. margin-right: 10px;
  97. width: 70px;
  98. }
  99. .item-input{
  100. flex: 1;
  101. }
  102. .Info {
  103. color: #222222;
  104. }
  105. .modifyBox {
  106. text-align: right;
  107. margin-left: auto;
  108. span {
  109. height: 26px;
  110. line-height: 26px;
  111. float: left;
  112. display: block;
  113. text-align: center;
  114. cursor: pointer;
  115. width: 30px;
  116. border: 1px solid #E8EAEC;
  117. }
  118. /*span:last-child {*/
  119. /* border-right: 1px solid #E8EAEC;*/
  120. /*}*/
  121. .textActive {
  122. border: 1px solid $mainColor;
  123. color: $mainColor;
  124. }
  125. .colorBox {
  126. display: flex;
  127. align-items: center;
  128. justify-content: flex-end;
  129. span {
  130. margin-right: 10px;
  131. cursor: pointer;
  132. border: none;
  133. color: $mainColor;
  134. }
  135. }
  136. }
  137. .fontSize {
  138. span:nth-child(1) {
  139. font-size: 16px;
  140. }
  141. span:nth-child(2) {
  142. font-size: 14px;
  143. }
  144. span:nth-child(3) {
  145. font-size: 12px;
  146. }
  147. }
  148. }
  149. .moreBox{
  150. border: 1px solid #E8EAEC;
  151. border-radius: 4px;
  152. padding:20px 10px;
  153. .radio{
  154. margin-bottom: 20px;
  155. }
  156. .el-radio{
  157. margin-right: 10px;
  158. }
  159. .link{
  160. display: flex;
  161. justify-content: space-between;
  162. align-items: center;
  163. }
  164. }
  165. }
  166. .block {
  167. height: 30px;
  168. }
  169. ::v-deep .el-color-picker__trigger {
  170. width: 45px;
  171. height: 26px;
  172. }
  173. ::v-deep .el-icon-arrow-down:before {
  174. display: none;
  175. }
  176. }
  177. </style>