setting.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477
  1. <!--
  2. * @description: 标题属性设置面板
  3. * @Date: 2022-08-17 16:53:28
  4. * @Author: shiyi
  5. -->
  6. <template>
  7. <div>
  8. <el-form
  9. ref="form"
  10. label-width="100px"
  11. label-position="left"
  12. :model="config"
  13. :rules="rules"
  14. class="bs-el-form"
  15. >
  16. <SettingTitle>标题</SettingTitle>
  17. <div class="bs-setting-wrap">
  18. <el-form-item
  19. label="标题"
  20. label-width="100px"
  21. prop="title"
  22. >
  23. <el-input
  24. v-model="config.customize.title"
  25. placeholder="请输入标题"
  26. clearable
  27. />
  28. </el-form-item>
  29. </div>
  30. <SettingTitle>位置</SettingTitle>
  31. <div class="lc-field-body">
  32. <PosWhSetting :config="config" />
  33. </div>
  34. <SettingTitle v-if="config.border">边框</SettingTitle>
  35. <div class="lc-field-body">
  36. <BorderSetting
  37. v-if="config.border"
  38. label-width="100px"
  39. :config="config.border"
  40. />
  41. </div>
  42. <SettingTitle>基础</SettingTitle>
  43. <div class="lc-field-body">
  44. <el-form-item
  45. label="字体大小"
  46. label-width="100px"
  47. >
  48. <el-input
  49. v-model="config.customize.fontSize"
  50. placeholder="请输入标题字体大小"
  51. clearable
  52. >
  53. <template slot="append">
  54. px
  55. </template>
  56. </el-input>
  57. </el-form-item>
  58. <el-form-item
  59. label="字体权重"
  60. label-width="100px"
  61. >
  62. <el-input-number
  63. v-model="config.customize.fontWeight"
  64. class="bs-el-input-number"
  65. placeholder="请输入标题字体权重"
  66. />
  67. </el-form-item>
  68. <!-- 走马灯走向 -->
  69. <el-form-item
  70. label="滚动方向"
  71. label-width="100px"
  72. >
  73. <el-select
  74. v-model="config.customize.direction"
  75. class="bs-el-select"
  76. popper-class="bs-el-select"
  77. filterable
  78. clearable
  79. >
  80. <el-option
  81. v-for="direction in directionList"
  82. :key="direction.value"
  83. :label="direction.label"
  84. :value="direction.value"
  85. />
  86. </el-select>
  87. </el-form-item>
  88. <!-- 滚动速度 -->
  89. <el-form-item
  90. label="滚动间隔"
  91. label-width="100px"
  92. >
  93. <el-input-number
  94. v-model="config.customize.dur"
  95. class="bs-el-input-number"
  96. placeholder="请输入滚动间隔"
  97. :min="1"
  98. :step="1"
  99. >
  100. <template slot="append">
  101. s
  102. </template>
  103. </el-input-number>
  104. </el-form-item>
  105. <!-- 图标选择 -->
  106. <el-form-item
  107. label="图标选择"
  108. label-width="100px"
  109. >
  110. <!-- <IconPicker v-model="config.customize.icon.name" /> -->
  111. <el-select
  112. v-model="config.customize.icon.name"
  113. class="bs-el-select"
  114. popper-class="bs-el-select"
  115. filterable
  116. clearable
  117. >
  118. <el-option
  119. v-for="(icbroadcaston,index) in broadcastList"
  120. :key="index"
  121. :label="icbroadcaston.label"
  122. :value="icbroadcaston.value"
  123. >
  124. <icon-svg :name="icbroadcaston.value" />
  125. <span style="float: right; color: #8492a6; font-size: 13px">{{ icbroadcaston.label }}</span>
  126. </el-option>
  127. </el-select>
  128. </el-form-item>
  129. <!-- 图标位置 -->
  130. <el-form-item
  131. v-if="config.customize.icon.name"
  132. label="图标位置"
  133. label-width="100px"
  134. >
  135. <el-select
  136. v-model="config.customize.icon.position"
  137. class="bs-el-select"
  138. popper-class="bs-el-select"
  139. filterable
  140. clearable
  141. >
  142. <el-option
  143. v-for="iconPosition in iconPositionOptions"
  144. :key="iconPosition.value"
  145. :label="iconPosition.label"
  146. :value="iconPosition.value"
  147. />
  148. </el-select>
  149. </el-form-item>
  150. <!-- 图标颜色 -->
  151. <el-form-item
  152. v-if="config.customize.icon.name"
  153. label="图标颜色"
  154. label-width="100px"
  155. >
  156. <ColorPicker
  157. v-model="config.customize.icon.color"
  158. placeholder="请选择图标颜色"
  159. :predefine-colors="predefineThemeColors"
  160. />
  161. </el-form-item>
  162. <el-form-item label="文字颜色类型">
  163. <el-select
  164. v-model="config.customize.textColorType"
  165. popper-class="bs-el-select"
  166. class="bs-el-select"
  167. filterable
  168. clearable
  169. >
  170. <el-option
  171. label="纯色"
  172. value="pure"
  173. />
  174. <el-option
  175. label="渐变色"
  176. value="gradient"
  177. />
  178. </el-select>
  179. </el-form-item>
  180. <el-form-item
  181. v-if="config.customize.textColorType === 'pure'"
  182. label="文字颜色"
  183. >
  184. <ColorPicker
  185. v-model="config.customize.textColor"
  186. placeholder="请选择文字颜色"
  187. :predefine-colors="predefineThemeColors"
  188. />
  189. </el-form-item>
  190. <el-form-item
  191. v-if="config.customize.textColorType === 'gradient'"
  192. label="文字渐变色方向"
  193. >
  194. <el-select
  195. v-model="config.customize.textGradientDirection"
  196. popper-class="bs-el-select"
  197. class="bs-el-select"
  198. filterable
  199. clearable
  200. >
  201. <el-option
  202. v-for="direction in gradientDirection"
  203. :key="direction.value"
  204. :label="direction.label"
  205. :value="direction.value"
  206. />
  207. </el-select>
  208. </el-form-item>
  209. <el-form-item
  210. v-if="config.customize.textColorType === 'gradient'"
  211. label="文字渐变开始色"
  212. >
  213. <ColorPicker
  214. v-model="config.customize.textGradientColor0"
  215. placeholder="请选择渐变色开始色值"
  216. :predefine-colors="predefineThemeColors"
  217. />
  218. </el-form-item>
  219. <el-form-item
  220. v-if="config.customize.textColorType === 'gradient'"
  221. label="文字渐变结束色"
  222. >
  223. <ColorPicker
  224. v-model="config.customize.textGradientColor1"
  225. placeholder="请选择渐变色结束色值"
  226. :predefine-colors="predefineThemeColors"
  227. />
  228. </el-form-item>
  229. <el-form-item label="背景色类型">
  230. <el-select
  231. v-model="config.customize.backgroundColorType"
  232. popper-class="bs-el-select"
  233. class="bs-el-select"
  234. filterable
  235. clearable
  236. >
  237. <el-option
  238. label="透明"
  239. value="transparent"
  240. />
  241. <el-option
  242. label="纯色"
  243. value="pure"
  244. />
  245. <el-option
  246. label="渐变色"
  247. value="gradient"
  248. />
  249. </el-select>
  250. </el-form-item>
  251. <el-form-item
  252. v-if="config.customize.backgroundColorType === 'pure'"
  253. label="背景色"
  254. >
  255. <ColorPicker
  256. v-model="config.customize.backgroundColor"
  257. placeholder="请选择背景色"
  258. :predefine-colors="predefineThemeColors"
  259. />
  260. </el-form-item>
  261. <el-form-item
  262. v-if="config.customize.backgroundColorType === 'gradient'"
  263. label="背景渐变色方向"
  264. >
  265. <el-select
  266. v-model="config.customize.bgGradientDirection"
  267. popper-class="bs-el-select"
  268. class="bs-el-select"
  269. filterable
  270. clearable
  271. >
  272. <el-option
  273. v-for="direction in gradientDirection"
  274. :key="direction.value"
  275. :label="direction.label"
  276. :value="direction.value"
  277. />
  278. </el-select>
  279. </el-form-item>
  280. <el-form-item
  281. v-if="config.customize.backgroundColorType === 'gradient'"
  282. label="背景渐变开始色"
  283. >
  284. <ColorPicker
  285. v-model="config.customize.bgGradientColor0"
  286. placeholder="请选择渐变色开始色值"
  287. :predefine-colors="predefineThemeColors"
  288. />
  289. </el-form-item>
  290. <el-form-item
  291. v-if="config.customize.backgroundColorType === 'gradient'"
  292. label="背景渐变结束色"
  293. >
  294. <ColorPicker
  295. v-model="config.customize.bgGradientColor1"
  296. placeholder="请选择渐变色结束色值"
  297. :predefine-colors="predefineThemeColors"
  298. />
  299. </el-form-item>
  300. </div>
  301. <SettingTitle>其他</SettingTitle>
  302. <div class="lc-field-body">
  303. <!-- 是否开启语音播报 -->
  304. <el-form-item
  305. label="语音播报"
  306. label-width="100px"
  307. >
  308. <el-switch
  309. v-model="config.customize.voiceBroadcast"
  310. :active-value="true"
  311. :inactive-value="false"
  312. class="bs-el-switch"
  313. />
  314. </el-form-item>
  315. </div>
  316. </el-form>
  317. </div>
  318. </template>
  319. <script>
  320. import SettingTitle from 'data-room-ui/SettingTitle/index.vue'
  321. import ColorPicker from 'data-room-ui/ColorPicker/index.vue'
  322. import BorderSetting from 'data-room-ui/BigScreenDesign/RightSetting/BorderSetting.vue'
  323. import PosWhSetting from 'data-room-ui/BigScreenDesign/RightSetting/PosWhSetting.vue'
  324. import IconSvg from 'data-room-ui/SvgIcon'
  325. export default {
  326. name: 'TextSetting',
  327. components: {
  328. PosWhSetting,
  329. ColorPicker,
  330. SettingTitle,
  331. IconSvg,
  332. BorderSetting
  333. },
  334. data () {
  335. return {
  336. predefineThemeColors: [
  337. '#007aff',
  338. '#1aa97b',
  339. '#ff4d53',
  340. '#1890FF',
  341. '#DF0E1B',
  342. '#0086CC',
  343. '#2B74CF',
  344. '#00BC9D',
  345. '#ED7D32'
  346. ],
  347. directionList: [
  348. {
  349. value: 'right',
  350. label: '从右到左'
  351. },
  352. {
  353. value: 'left',
  354. label: '从左到右'
  355. },
  356. {
  357. value: 'top',
  358. label: '从上到下'
  359. },
  360. {
  361. value: 'bottom',
  362. label: '从下到上'
  363. }
  364. ],
  365. gradientDirection: [
  366. {
  367. label: '从左到右',
  368. value: 'to right'
  369. },
  370. {
  371. label: '从上到下',
  372. value: 'to bottom'
  373. },
  374. {
  375. label: '从左上到右下',
  376. value: 'to bottom right'
  377. },
  378. {
  379. label: '从左下到右上',
  380. value: 'to top right'
  381. }
  382. ],
  383. iconPositionOptions: [
  384. {
  385. label: '左侧',
  386. value: 'left'
  387. },
  388. {
  389. label: '右侧',
  390. value: 'right'
  391. }
  392. ],
  393. broadcastList: [
  394. {
  395. label: '广播1',
  396. value: 'broadcast-1'
  397. },
  398. {
  399. label: '广播2',
  400. value: 'broadcast-2'
  401. },
  402. {
  403. label: '广播3',
  404. value: 'broadcast-3'
  405. },
  406. {
  407. label: '广播4',
  408. value: 'broadcast-4'
  409. },
  410. {
  411. label: '广播5',
  412. value: 'broadcast-5'
  413. },
  414. {
  415. label: '广播6',
  416. value: 'broadcast-6'
  417. },
  418. {
  419. label: '广播7',
  420. value: 'broadcast-7'
  421. },
  422. {
  423. label: '广播8',
  424. value: 'broadcast-8'
  425. },
  426. {
  427. label: '广播9',
  428. value: 'broadcast-9'
  429. },
  430. {
  431. label: '广播10',
  432. value: 'broadcast-10'
  433. },
  434. {
  435. label: '广播11',
  436. value: 'broadcast-11'
  437. }
  438. ],
  439. rules: {
  440. title: [
  441. { required: true, message: '请输入标题', trigger: 'blur' }
  442. ]
  443. }
  444. }
  445. },
  446. computed: {
  447. config: {
  448. get () {
  449. return this.$store.state.bigScreen.activeItemConfig
  450. },
  451. set (val) {
  452. this.$store.state.bigScreen.activeItemConfig = val
  453. }
  454. }
  455. },
  456. watch: {
  457. },
  458. mounted () { },
  459. methods: {
  460. changeStyle () { }
  461. }
  462. }
  463. </script>
  464. <style lang="scss" scoped>
  465. @import '../../assets/style/settingWrap.scss';
  466. @import '../../assets/style/bsTheme.scss';
  467. .bs-setting-wrap {
  468. padding: 12px 16px;
  469. }
  470. .lc-field-body {
  471. padding: 12px 16px;
  472. }
  473. </style>