setting.vue 13 KB

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