setting.vue 8.4 KB

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