setting.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <template>
  2. <div class="bs-setting-wrap">
  3. <el-form
  4. ref="form"
  5. :model="config"
  6. label-width="100px"
  7. label-position="left"
  8. class="setting-body bs-el-form"
  9. >
  10. <div>
  11. <slot name="top" />
  12. <el-form
  13. :model="config.customize"
  14. label-position="left"
  15. class="setting-body bs-el-form"
  16. label-width="100px"
  17. >
  18. <SettingTitle>位置</SettingTitle>
  19. <div class="lc-field-body">
  20. <PosWhSetting :config="config" />
  21. </div>
  22. <SettingTitle>基础</SettingTitle>
  23. <div class="lc-field-body">
  24. <el-form-item label="按钮名称">
  25. <el-input
  26. v-model="config.title"
  27. class="bs-el-input"
  28. clearable
  29. />
  30. </el-form-item>
  31. <el-form-item label="字体颜色">
  32. <ColorPicker
  33. v-model="config.customize.fontColor"
  34. :predefine="predefineThemeColors"
  35. />
  36. </el-form-item>
  37. <el-form-item label="字体大小">
  38. <el-input-number
  39. v-model="config.customize.fontSize"
  40. class="bs-el-input-number"
  41. controls-position="right"
  42. :min="12"
  43. :max="100"
  44. />
  45. </el-form-item>
  46. <el-form-item label="背景颜色">
  47. <div>
  48. <ColorPicker
  49. v-model="config.customize.backgroundColor"
  50. :predefine="predefineThemeColors"
  51. />
  52. </div>
  53. </el-form-item>
  54. <el-form-item label="图标选择">
  55. <IconPicker v-model="config.customize.icon.name" />
  56. </el-form-item>
  57. <el-form-item label="图标位置">
  58. <el-select
  59. v-model="config.customize.icon.position"
  60. popper-class="bs-el-select"
  61. class="bs-el-select"
  62. >
  63. <el-option
  64. v-for="iconPosition in iconPositionOptions"
  65. :key="iconPosition.value"
  66. :label="iconPosition.label"
  67. :value="iconPosition.value"
  68. />
  69. </el-select>
  70. </el-form-item>
  71. <el-form-item label="边框颜色">
  72. <ColorPicker
  73. v-model="config.customize.borderStyle.borderColor"
  74. :predefine="predefineThemeColors"
  75. />
  76. </el-form-item>
  77. <el-form-item label="边框宽度">
  78. <el-input-number
  79. v-model="config.customize.borderStyle.borderWidth"
  80. class="bs-el-input-number"
  81. controls-position="right"
  82. :min="0"
  83. :max="10"
  84. />
  85. </el-form-item>
  86. <el-form-item label="边框样式">
  87. <el-select
  88. v-model="config.customize.borderStyle.borderStyle"
  89. popper-class="bs-el-select"
  90. class="bs-el-select"
  91. clearable
  92. >
  93. <el-option
  94. v-for="borderStyleItem in borderStyleOptions"
  95. :key="borderStyleItem.value"
  96. :label="borderStyleItem.label"
  97. :value="borderStyleItem.value"
  98. />
  99. </el-select>
  100. </el-form-item>
  101. <el-form-item label="边框圆角">
  102. <el-input-number
  103. v-model="config.customize.borderStyle.borderRadius"
  104. class="bs-el-input-number"
  105. controls-position="right"
  106. :min="0"
  107. :max="100"
  108. />
  109. </el-form-item>
  110. </div>
  111. </el-form>
  112. </div>
  113. </el-form>
  114. </div>
  115. </template>
  116. <script>
  117. import SettingTitle from 'packages/SettingTitle/index.vue'
  118. import IconPicker from 'packages/IconPicker/index.vue'
  119. import ColorPicker from 'packages/ColorPicker/index.vue'
  120. import PosWhSetting from 'packages/BigScreenDesign/RightSetting/PosWhSetting.vue'
  121. export default {
  122. name: 'Border14Setting',
  123. components: {
  124. IconPicker,
  125. ColorPicker,
  126. PosWhSetting,
  127. SettingTitle
  128. },
  129. props: {
  130. config: {
  131. type: Object,
  132. required: true
  133. },
  134. predefineThemeColors: {
  135. type: Array,
  136. default: () => {
  137. return [
  138. '#007aff',
  139. '#1aa97b',
  140. '#ff4d53',
  141. '#1890FF',
  142. '#DF0E1B',
  143. '#0086CC',
  144. '#2B74CF',
  145. '#00BC9D',
  146. '#ED7D32'
  147. ]
  148. }
  149. }
  150. },
  151. data () {
  152. return {
  153. typeOptions: [
  154. {
  155. label: '默认按钮',
  156. value: 'default'
  157. },
  158. {
  159. label: '主要按钮',
  160. value: 'primary'
  161. },
  162. {
  163. label: '文字按钮',
  164. value: 'text'
  165. },
  166. {
  167. label: '成功按钮',
  168. value: 'success'
  169. },
  170. {
  171. label: '信息按钮',
  172. value: 'info'
  173. },
  174. {
  175. label: '警告按钮',
  176. value: 'warning'
  177. },
  178. {
  179. label: '危险按钮',
  180. value: 'danger'
  181. }
  182. ],
  183. borderStyleOptions: [
  184. {
  185. label: '实线',
  186. value: 'solid'
  187. },
  188. {
  189. label: '虚线',
  190. value: 'dashed'
  191. },
  192. {
  193. label: '点线',
  194. value: 'dotted'
  195. }
  196. ],
  197. iconPositionOptions: [
  198. {
  199. label: '左',
  200. value: 'left'
  201. },
  202. {
  203. label: '右',
  204. value: 'right'
  205. }
  206. ]
  207. }
  208. },
  209. watch: {},
  210. mounted () {},
  211. methods: {}
  212. }
  213. </script>
  214. <style lang="scss" scoped>
  215. .lc-field-body {
  216. width: 97%;
  217. padding: 16px;
  218. //padding-bottom: 70px;
  219. }
  220. </style>