setting.vue 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. 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. <el-form-item label="是否显示标题">
  21. <el-switch
  22. v-model="config.customize.showTitle"
  23. class="bs-el-switch"
  24. active-color="#007aff"
  25. />
  26. </el-form-item>
  27. <el-form-item
  28. v-if="config.customize.showTitle"
  29. label="标题"
  30. >
  31. <el-input
  32. v-model="config.customize.title"
  33. class="bs-el-input"
  34. clearable
  35. />
  36. </el-form-item>
  37. <el-form-item
  38. v-if="config.customize.showTitle"
  39. label="标题大小"
  40. >
  41. <el-input-number
  42. v-model="config.customize.titleStyle.fontSize"
  43. class="bs-el-input-number"
  44. :min="12"
  45. :max="100"
  46. />
  47. </el-form-item>
  48. <el-form-item
  49. v-if="config.customize.showTitle"
  50. label="标题颜色"
  51. >
  52. <ColorPicker
  53. v-model="config.customize.titleStyle.color"
  54. :predefine="predefineThemeColors"
  55. />
  56. </el-form-item>
  57. <el-form-item
  58. v-if="config.customize.showTitle"
  59. label="标题右间距"
  60. >
  61. <el-input-number
  62. v-model="config.customize.titleStyle.marginRight"
  63. class="bs-el-input-number"
  64. :min="0"
  65. :max="100"
  66. />
  67. </el-form-item>
  68. </div>
  69. <SettingTitle>位置</SettingTitle>
  70. <div class="lc-field-body">
  71. <PosWhSetting :config="config" />
  72. </div>
  73. <SettingTitle>旋转</SettingTitle>
  74. <div class="lc-field-body">
  75. <RotateSetting
  76. :config="config"
  77. />
  78. </div>
  79. <SettingTitle>基础</SettingTitle>
  80. <div class="lc-field-body">
  81. <el-form-item label="输入值字体大小">
  82. <el-input-number
  83. v-model="config.customize.inputStyle.fontSize"
  84. class="bs-el-input-number"
  85. :min="12"
  86. :max="100"
  87. />
  88. </el-form-item>
  89. <el-form-item label="输入值字体颜色">
  90. <ColorPicker
  91. v-model="config.customize.inputStyle.color"
  92. :predefine="predefineThemeColors"
  93. />
  94. </el-form-item>
  95. <!-- <el-form-item label="输入值左间距">
  96. <el-input-number
  97. v-model="config.customize.inputStyle.paddingLeft"
  98. class="bs-el-input-number"
  99. controls-position="right"
  100. :min="0"
  101. :max="100"
  102. />
  103. </el-form-item> -->
  104. <el-form-item label="背景颜色">
  105. <ColorPicker
  106. v-model="config.customize.backgroundStyle.backgroundColor"
  107. :predefine="predefineThemeColors"
  108. />
  109. </el-form-item>
  110. <el-form-item label="占位符">
  111. <el-input
  112. v-model="config.customize.placeholderStyle.placeholder"
  113. class="bs-el-input"
  114. clearable
  115. />
  116. </el-form-item>
  117. <el-form-item label="占位符字体颜色">
  118. <ColorPicker
  119. v-model="config.customize.placeholderStyle.placeholderColor"
  120. :predefine="predefineThemeColors"
  121. />
  122. </el-form-item>
  123. <el-form-item label="占位符字体大小">
  124. <el-input-number
  125. v-model="config.customize.placeholderStyle.placeholderFontSize"
  126. class="bs-el-input-number"
  127. :min="12"
  128. :max="100"
  129. />
  130. </el-form-item>
  131. <el-form-item label="图标选择">
  132. <IconPicker v-model="config.customize.icon.name" />
  133. </el-form-item>
  134. <el-form-item label="图标位置">
  135. <el-select
  136. v-model="config.customize.icon.position"
  137. popper-class="bs-el-select"
  138. class="bs-el-select"
  139. >
  140. <el-option
  141. v-for="iconPosition in iconPositionOptions"
  142. :key="iconPosition.value"
  143. :label="iconPosition.label"
  144. :value="iconPosition.value"
  145. />
  146. </el-select>
  147. </el-form-item>
  148. <el-form-item label="边框颜色">
  149. <ColorPicker
  150. v-model="config.customize.borderStyle.borderColor"
  151. :predefine="predefineThemeColors"
  152. />
  153. </el-form-item>
  154. <el-form-item label="边框宽度">
  155. <el-input-number
  156. v-model="config.customize.borderStyle.borderWidth"
  157. class="bs-el-input-number"
  158. :min="0"
  159. :max="10"
  160. />
  161. </el-form-item>
  162. <el-form-item label="边框样式">
  163. <el-select
  164. v-model="config.customize.borderStyle.borderStyle"
  165. popper-class="bs-el-select"
  166. class="bs-el-select"
  167. clearable
  168. >
  169. <el-option
  170. v-for="borderStyle in borderStyleOptions"
  171. :key="borderStyle.value"
  172. :label="borderStyle.label"
  173. :value="borderStyle.value"
  174. />
  175. </el-select>
  176. </el-form-item>
  177. <el-form-item label="边框圆角">
  178. <el-input-number
  179. v-model="config.customize.borderStyle.borderRadius"
  180. class="bs-el-input-number"
  181. :min="0"
  182. :max="100"
  183. />
  184. </el-form-item>
  185. </div>
  186. </el-form>
  187. </div>
  188. </el-form>
  189. </div>
  190. </template>
  191. <script>
  192. import SettingTitle from 'data-room-ui/SettingTitle/index.vue'
  193. import IconPicker from 'data-room-ui/IconPicker/index.vue'
  194. import ColorPicker from 'data-room-ui/ColorPicker/index.vue'
  195. import BorderSetting from 'data-room-ui/BigScreenDesign/RightSetting/BorderSetting.vue'
  196. import PosWhSetting from 'data-room-ui/BigScreenDesign/RightSetting/PosWhSetting.vue'
  197. import RotateSetting from 'data-room-ui/BigScreenDesign/RightSetting/RotateSetting.vue'
  198. import { predefineColors } from 'data-room-ui/js/utils/colorList'
  199. export default {
  200. name: 'InputSetting',
  201. components: {
  202. ColorPicker,
  203. IconPicker,
  204. PosWhSetting,
  205. SettingTitle,
  206. BorderSetting,
  207. RotateSetting
  208. },
  209. props: {
  210. config: {
  211. type: Object,
  212. required: true
  213. },
  214. predefineThemeColors: {
  215. type: Array,
  216. default: () => predefineColors
  217. }
  218. },
  219. data () {
  220. return {
  221. // 输入框类型
  222. // typeOptions: [
  223. // {
  224. // label: '单行文本',
  225. // value: 'text'
  226. // },
  227. // {
  228. // label: '多行文本',
  229. // value: 'textarea'
  230. // }
  231. // ],
  232. // 标题位置
  233. titlePositionOptions: [
  234. {
  235. label: '左',
  236. value: 'left'
  237. },
  238. {
  239. label: '右',
  240. value: 'right'
  241. },
  242. {
  243. label: '上',
  244. value: 'top'
  245. },
  246. {
  247. label: '下',
  248. value: 'bottom'
  249. }
  250. ],
  251. // 边框样式
  252. borderStyleOptions: [
  253. {
  254. label: '实线',
  255. value: 'solid'
  256. },
  257. {
  258. label: '虚线',
  259. value: 'dashed'
  260. },
  261. {
  262. label: '点线',
  263. value: 'dotted'
  264. }
  265. ],
  266. iconPositionOptions: [
  267. {
  268. label: '左',
  269. value: 'left'
  270. },
  271. {
  272. label: '右',
  273. value: 'right'
  274. }
  275. ]
  276. }
  277. },
  278. watch: {},
  279. mounted () {},
  280. methods: {}
  281. }
  282. </script>
  283. <style lang="scss" scoped>
  284. .lc-field-body {
  285. width: 97%;
  286. padding: 12px 16px;
  287. //padding-bottom: 65px;
  288. }
  289. </style>