textbox.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. // 文字
  2. import tools from '@/views/components/PictureEditor/mixin/edit/module/tools'
  3. import linethrough from '@/views/components/PictureEditor/mixin/edit/images/linethrough.svg'
  4. import underline from '@/views/components/PictureEditor/mixin/edit/images/underline.svg'
  5. import textalignCenter from '@/views/components/PictureEditor/mixin/edit/images/textalign-center.svg'
  6. import textalignLeft from '@/views/components/PictureEditor/mixin/edit/images/textalign-left.svg'
  7. import textalignLR from '@/views/components/PictureEditor/mixin/edit/images/textalign-lr.svg'
  8. import textalignRight from '@/views/components/PictureEditor/mixin/edit/images/textalign-right.svg'
  9. const textbox = () => {
  10. return `
  11. <div class="edit-wrap">
  12. <div class="title step-label"><span class="step-row_color">编辑内容</span></div>
  13. <div class="label title_two">字体</div>
  14. <div class="flex left">
  15. <el-select
  16. v-model="fontFamilyStyle || editLayer.fontFamily"
  17. :clearable="false"
  18. placeholder="请选择"
  19. @change="setFontFamily"
  20. size="small"
  21. >
  22. <el-option
  23. v-for="item in options"
  24. :key="item.name"
  25. :label="item.name"
  26. :value="item.name">
  27. <img :src="item.thumbnail" style="max-width: 100%; height: 32px;">
  28. </el-option>
  29. </el-select>
  30. </div>
  31. <div class="flex left mar-top-10">
  32. <div class="edit-font-size flex left position-r">
  33. <el-select :value="editLayer.fontSize" :clearable="false"
  34. size="small"
  35. @change="(val)=>editObj({label:'fontSize',value:val})">
  36. <el-option v-for="item,index in TextboxConfig.fontSize" :key="index" :value="item">{{item}}</el-option>
  37. </el-select>
  38. <div class="bq fs-14 c-999">px</div>
  39. </div>
  40. <el-color-picker class="mar-left-10" :value="editLayer.fill"
  41. size="small"
  42. @change="(val)=>editObj({label:'fill',value:val})"></el-color-picker>
  43. </div>
  44. <div class="flex left">
  45. <div class="flex-item">
  46. <div class="label title_two">行高</div>
  47. <div class="value">
  48. <el-input-number
  49. v-model="editLayer.lineHeight"
  50. size="small"
  51. style="width:130px"
  52. controls-position="right"
  53. :precision="2"
  54. :step="0.01"
  55. @change="(val)=>editObj({label:'lineHeight',value:val} )"
  56. :min="0.01"
  57. :max="100"/>
  58. </div>
  59. </div>
  60. <div class="flex-item mar-left-10">
  61. <div class="label title_two">字距</div>
  62. <div class="edit-font-size flex left">
  63. <el-input-number
  64. :value="editLayer.charSpacing"
  65. size="small"
  66. style="width:130px"
  67. controls-position="right"
  68. :precision="1"
  69. :step="1"
  70. @change="(val)=>editObj({label:'charSpacing',value:val})"/>
  71. </div>
  72. </div>
  73. </div>
  74. <div class="flex line-20 mar-top-10">
  75. <el-button size="small" class="flex-item" @click="editObj({label:'underline',value:!editLayer.underline})">
  76. <el-tooltip effect="dark" content="下划线" placement="top"><img src="${underline}" style="height: 12px"></el-tooltip>
  77. </el-button>
  78. <el-button size="small" class="flex-item" @click="editObj({label:'linethrough',value:!editLayer.linethrough})">
  79. <el-tooltip effect="dark" content="删除线" placement="top"><img src="${linethrough}" style="height: 12px"></el-tooltip>
  80. </el-button>
  81. </div>
  82. <div class="title_two">对齐方式</div>
  83. <div class="flex line-20">
  84. <el-button size="small" class="flex-item" @click="editObj({label:'textAlign',value:'left'})">
  85. <el-tooltip effect="dark" content="左对齐" placement="top"><img src="${textalignLeft}" style="height: 12px"></el-tooltip>
  86. </el-button>
  87. <el-button size="small" class="flex-item" @click="editObj({label:'textAlign',value:'center'})">
  88. <el-tooltip effect="dark" content="居中对齐" placement="top"><img src="${textalignCenter}" style="height: 12px"></el-tooltip>
  89. </el-button>
  90. <el-button size="small" class="flex-item" @click="editObj({label:'textAlign',value:'right'})">
  91. <el-tooltip effect="dark" content="右对齐" placement="top"><img src="${textalignRight}" style="height: 12px"></el-tooltip>
  92. </el-button>
  93. <el-button size="small" class="flex-item" @click="editObj({label:'textAlign',value:'justify'})">
  94. <el-tooltip effect="dark" content="两端对齐" placement="top"><img src="${textalignLR}" style="height: 12px"></el-tooltip>
  95. </el-button>
  96. </div>
  97. ${tools.flip()}
  98. ${tools.straw()}
  99. ${tools.opacity()}
  100. <div class="title_two">新增/修改</div>
  101. <div>
  102. <el-input
  103. v-model="editLayer.text"
  104. type="textarea"
  105. :autosize="{ minRows: 2, maxRows: 8}"
  106. maxlength="255"
  107. @input.native="(val)=> editObj({label:'text',value:val})"
  108. />
  109. </div>
  110. <div class="title_two">描边</div>
  111. <div class="flex left">
  112. <el-slider
  113. :value="editLayer.strokeWidth"
  114. style="width:100%"
  115. :step="0.1"
  116. @input="(val)=>editObj({label:'strokeWidth',value:val} )"
  117. :min="0"
  118. :max="5"
  119. ></el-slider>
  120. <el-color-picker class="mar-left-10" size="mini" :value="editLayer.stroke" @change="(val)=>editObj({label:'stroke',value:val})"></el-color-picker>
  121. </div>
  122. <div class="title_two">阴影</div>
  123. <div>
  124. <div class="flex left">
  125. <div class="flex left flex-item">
  126. x轴:
  127. <el-input-number
  128. v-model="shadowText.x"
  129. style="width:90px; margin-left: 5px;"
  130. size="small"
  131. controls-position="right"
  132. :step="1"
  133. @change="(val)=>editObj({label:'shadow',value:shadow})"/>
  134. </div>
  135. <div class="flex left flex-item mar-left-10">
  136. y轴:
  137. <el-input-number
  138. v-model="shadowText.y"
  139. style="width:90px; margin-left: 5px;"
  140. size="small"
  141. controls-position="right"
  142. :step="1"
  143. @change="(val)=>editObj({label:'shadow',value:shadow})"/>
  144. </div>
  145. </div>
  146. <div class="flex left mar-top-10">
  147. <div class="flex left flex-item">
  148. 模糊:
  149. <el-input-number
  150. v-model="shadowText.vague"
  151. style="width:90px; margin-left: 5px;"
  152. size="small"
  153. controls-position="right"
  154. :step="1"
  155. @change="(val)=>editObj({label:'shadow',value:shadow})"/>
  156. </div>
  157. <div class="flex left flex-item mar-left-10">
  158. 颜色:
  159. <el-color-picker
  160. size="small" class="mar-left-10" v-model="shadowText.color" @change="(val)=>editObj({label:'shadow',value:shadow})"></el-color-picker>
  161. </div>
  162. </div>
  163. </div>
  164. </div>
  165. `
  166. }
  167. export default textbox