BorderSetting.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  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"
  9. >
  10. <el-form
  11. :model="config.customize"
  12. label-position="left"
  13. class="setting-body"
  14. label-width="100px"
  15. >
  16. <SettingTitle>标题</SettingTitle>
  17. <el-form-item label="边框名称" class="lc-field-body">
  18. <el-input
  19. v-model="config.title"
  20. clearable
  21. />
  22. </el-form-item>
  23. <SettingTitle>位置</SettingTitle>
  24. <div class="lc-field-body">
  25. <PosWhSetting :config="config" />
  26. </div>
  27. <SettingTitle>基础</SettingTitle>
  28. <div class="lc-field-body">
  29. <slot name="top" />
  30. <el-form-item label="边框主颜色">
  31. <ColorPicker
  32. v-model="config.customize.borderMainColor"
  33. placeholder="请选择边框主颜色"
  34. :predefine-colors="predefineThemeColors"
  35. />
  36. </el-form-item>
  37. <el-form-item label="边框副颜色">
  38. <ColorPicker
  39. v-model="config.customize.borderSecondaryColor"
  40. placeholder="请选择边框副颜色"
  41. :predefine-colors="predefineThemeColors"
  42. />
  43. </el-form-item>
  44. <el-form-item label="背景色类型">
  45. <el-radio-group v-model="config.customize.colorType">
  46. <el-radio label="single">
  47. 纯色
  48. </el-radio>
  49. <el-radio label="gradient">
  50. 渐变色
  51. </el-radio>
  52. </el-radio-group>
  53. </el-form-item>
  54. <el-form-item
  55. v-if="config.customize.colorType === 'single'"
  56. label="背景色"
  57. >
  58. <ColorPicker
  59. v-model="config.customize.backgroundColor"
  60. placeholder="请选择背景色"
  61. :predefine-colors="predefineThemeColors"
  62. />
  63. </el-form-item>
  64. <el-form-item
  65. v-if="config.customize.colorType === 'gradient'"
  66. label="开始色值"
  67. >
  68. <ColorPicker
  69. v-model="config.customize.gradientColor0"
  70. placeholder="请选择渐变色开始色值"
  71. :predefine-colors="predefineThemeColors"
  72. />
  73. </el-form-item>
  74. <el-form-item
  75. v-if="config.customize.colorType === 'gradient'"
  76. label="结束色值"
  77. >
  78. <ColorPicker
  79. v-model="config.customize.gradientColor1"
  80. placeholder="请选择渐变色结束色值"
  81. :predefine-colors="predefineThemeColors"
  82. />
  83. </el-form-item>
  84. <el-form-item
  85. v-if="config.customize.colorType === 'gradient'"
  86. label="渐变色方向"
  87. >
  88. <el-select
  89. v-model="config.customize.gradientDirection"
  90. popper-class="bs-el-select"
  91. class="bs-el-select"
  92. >
  93. <el-option
  94. v-for="item in gradientDirection"
  95. :key="item.value"
  96. :label="item.label"
  97. :value="item.value"
  98. />
  99. </el-select>
  100. </el-form-item>
  101. <el-form-item label="不透明度">
  102. <el-input-number
  103. v-model="config.customize.opacity"
  104. class="bs-el-input-number"
  105. :min="0"
  106. :max="100"
  107. :step="10"
  108. />
  109. </el-form-item>
  110. <slot name="bottom" />
  111. </div>
  112. </el-form>
  113. </el-form>
  114. </div>
  115. </template>
  116. <script>
  117. import SettingTitle from 'packages/SettingTitle/index.vue'
  118. import ColorPicker from 'packages/ColorPicker/index.vue'
  119. import PosWhSetting from 'packages/BigScreenDesign/RightSetting/PosWhSetting.vue'
  120. export default {
  121. name: 'BorderSetting',
  122. components: {
  123. ColorPicker,
  124. PosWhSetting,
  125. SettingTitle
  126. },
  127. props: {
  128. config: {
  129. type: Object,
  130. required: true
  131. },
  132. predefineThemeColors: {
  133. type: Array,
  134. default: () => {
  135. return [
  136. '#007aff',
  137. '#1aa97b',
  138. '#ff4d53',
  139. '#1890FF',
  140. '#DF0E1B',
  141. '#0086CC',
  142. '#2B74CF',
  143. '#00BC9D',
  144. '#ED7D32'
  145. ]
  146. }
  147. }
  148. },
  149. data () {
  150. return {
  151. gradientDirection: [
  152. {
  153. label: '从左到右',
  154. value: 'to right'
  155. },
  156. {
  157. label: '从右到左',
  158. value: 'to left'
  159. },
  160. {
  161. label: '从上到下',
  162. value: 'to bottom'
  163. },
  164. {
  165. label: '从下到上',
  166. value: 'to top'
  167. },
  168. {
  169. label: '从左上到右下',
  170. value: 'to bottom right'
  171. },
  172. {
  173. label: '从右上到左下',
  174. value: 'to bottom left'
  175. },
  176. {
  177. label: '从左下到右上',
  178. value: 'to top right'
  179. },
  180. {
  181. label: '从右下到左上',
  182. value: 'to top left'
  183. }
  184. ]
  185. }
  186. },
  187. watch: {},
  188. mounted () {},
  189. methods: {}
  190. }
  191. </script>
  192. <style lang="scss" scoped>
  193. .lc-field-body {
  194. padding: 12px 16px;
  195. }
  196. .padding {
  197. padding: 10px 0;
  198. }
  199. </style>