setting.vue 12 KB

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