BorderSetting.vue 5.3 KB

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