setting.vue 9.1 KB

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