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. :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. />
  74. </el-form-item>
  75. <!-- 走马灯走向 -->
  76. <el-form-item
  77. label="滚动方向"
  78. label-width="100px"
  79. >
  80. <el-select
  81. v-model="config.customize.direction"
  82. class="bs-el-select"
  83. popper-class="bs-el-select"
  84. filterable
  85. clearable
  86. >
  87. <el-option
  88. v-for="direction in directionList"
  89. :key="direction.value"
  90. :label="direction.label"
  91. :value="direction.value"
  92. />
  93. </el-select>
  94. </el-form-item>
  95. <!-- 滚动速度 -->
  96. <el-form-item
  97. label="滚动间隔"
  98. label-width="100px"
  99. >
  100. <el-input-number
  101. v-model="config.customize.dur"
  102. class="bs-el-input-number"
  103. placeholder="请输入滚动间隔"
  104. :min="1"
  105. :step="1"
  106. >
  107. <template slot="append">
  108. s
  109. </template>
  110. </el-input-number>
  111. </el-form-item>
  112. <!-- 图标选择 -->
  113. <el-form-item
  114. label="图标选择"
  115. label-width="100px"
  116. >
  117. <!-- <IconPicker v-model="config.customize.icon.name" /> -->
  118. <el-select
  119. v-model="config.customize.icon.name"
  120. class="bs-el-select"
  121. popper-class="bs-el-select"
  122. filterable
  123. clearable
  124. >
  125. <el-option
  126. v-for="(icbroadcaston,index) in broadcastList"
  127. :key="index"
  128. :label="icbroadcaston.label"
  129. :value="icbroadcaston.value"
  130. >
  131. <icon-svg :name="icbroadcaston.value" />
  132. <span style="float: right; color: #8492a6; font-size: 13px">{{ icbroadcaston.label }}</span>
  133. </el-option>
  134. </el-select>
  135. </el-form-item>
  136. <!-- 图标位置 -->
  137. <el-form-item
  138. v-if="config.customize.icon.name"
  139. label="图标位置"
  140. label-width="100px"
  141. >
  142. <el-select
  143. v-model="config.customize.icon.position"
  144. class="bs-el-select"
  145. popper-class="bs-el-select"
  146. filterable
  147. clearable
  148. >
  149. <el-option
  150. v-for="iconPosition in iconPositionOptions"
  151. :key="iconPosition.value"
  152. :label="iconPosition.label"
  153. :value="iconPosition.value"
  154. />
  155. </el-select>
  156. </el-form-item>
  157. <!-- 图标颜色 -->
  158. <el-form-item
  159. v-if="config.customize.icon.name"
  160. label="图标颜色"
  161. label-width="100px"
  162. >
  163. <ColorPicker
  164. v-model="config.customize.icon.color"
  165. placeholder="请选择图标颜色"
  166. :predefine-colors="predefineThemeColors"
  167. />
  168. </el-form-item>
  169. <el-form-item label="文字颜色类型">
  170. <el-select
  171. v-model="config.customize.textColorType"
  172. popper-class="bs-el-select"
  173. class="bs-el-select"
  174. filterable
  175. clearable
  176. >
  177. <el-option
  178. label="纯色"
  179. value="pure"
  180. />
  181. <el-option
  182. label="渐变色"
  183. value="gradient"
  184. />
  185. </el-select>
  186. </el-form-item>
  187. <el-form-item
  188. v-if="config.customize.textColorType === 'pure'"
  189. label="文字颜色"
  190. >
  191. <ColorPicker
  192. v-model="config.customize.textColor"
  193. placeholder="请选择文字颜色"
  194. :predefine-colors="predefineThemeColors"
  195. />
  196. </el-form-item>
  197. <el-form-item
  198. v-if="config.customize.textColorType === 'gradient'"
  199. label="文字渐变色方向"
  200. >
  201. <el-select
  202. v-model="config.customize.textGradientDirection"
  203. popper-class="bs-el-select"
  204. class="bs-el-select"
  205. filterable
  206. clearable
  207. >
  208. <el-option
  209. v-for="direction in gradientDirection"
  210. :key="direction.value"
  211. :label="direction.label"
  212. :value="direction.value"
  213. />
  214. </el-select>
  215. </el-form-item>
  216. <el-form-item
  217. v-if="config.customize.textColorType === 'gradient'"
  218. label="文字渐变开始色"
  219. >
  220. <ColorPicker
  221. v-model="config.customize.textGradientColor0"
  222. placeholder="请选择渐变色开始色值"
  223. :predefine-colors="predefineThemeColors"
  224. />
  225. </el-form-item>
  226. <el-form-item
  227. v-if="config.customize.textColorType === 'gradient'"
  228. label="文字渐变结束色"
  229. >
  230. <ColorPicker
  231. v-model="config.customize.textGradientColor1"
  232. placeholder="请选择渐变色结束色值"
  233. :predefine-colors="predefineThemeColors"
  234. />
  235. </el-form-item>
  236. <el-form-item label="背景色类型">
  237. <el-select
  238. v-model="config.customize.backgroundColorType"
  239. popper-class="bs-el-select"
  240. class="bs-el-select"
  241. filterable
  242. clearable
  243. >
  244. <el-option
  245. label="透明"
  246. value="transparent"
  247. />
  248. <el-option
  249. label="纯色"
  250. value="pure"
  251. />
  252. <el-option
  253. label="渐变色"
  254. value="gradient"
  255. />
  256. </el-select>
  257. </el-form-item>
  258. <el-form-item
  259. v-if="config.customize.backgroundColorType === 'pure'"
  260. label="背景色"
  261. >
  262. <ColorPicker
  263. v-model="config.customize.backgroundColor"
  264. placeholder="请选择背景色"
  265. :predefine-colors="predefineThemeColors"
  266. />
  267. </el-form-item>
  268. <el-form-item
  269. v-if="config.customize.backgroundColorType === 'gradient'"
  270. label="背景渐变色方向"
  271. >
  272. <el-select
  273. v-model="config.customize.bgGradientDirection"
  274. popper-class="bs-el-select"
  275. class="bs-el-select"
  276. filterable
  277. clearable
  278. >
  279. <el-option
  280. v-for="direction in gradientDirection"
  281. :key="direction.value"
  282. :label="direction.label"
  283. :value="direction.value"
  284. />
  285. </el-select>
  286. </el-form-item>
  287. <el-form-item
  288. v-if="config.customize.backgroundColorType === 'gradient'"
  289. label="背景渐变开始色"
  290. >
  291. <ColorPicker
  292. v-model="config.customize.bgGradientColor0"
  293. placeholder="请选择渐变色开始色值"
  294. :predefine-colors="predefineThemeColors"
  295. />
  296. </el-form-item>
  297. <el-form-item
  298. v-if="config.customize.backgroundColorType === 'gradient'"
  299. label="背景渐变结束色"
  300. >
  301. <ColorPicker
  302. v-model="config.customize.bgGradientColor1"
  303. placeholder="请选择渐变色结束色值"
  304. :predefine-colors="predefineThemeColors"
  305. />
  306. </el-form-item>
  307. </div>
  308. <SettingTitle>其他</SettingTitle>
  309. <div class="lc-field-body">
  310. <!-- 是否开启语音播报 -->
  311. <el-form-item
  312. label="语音播报"
  313. label-width="100px"
  314. >
  315. <el-switch
  316. v-model="config.customize.voiceBroadcast"
  317. :active-value="true"
  318. :inactive-value="false"
  319. class="bs-el-switch"
  320. />
  321. </el-form-item>
  322. </div>
  323. </el-form>
  324. </div>
  325. </template>
  326. <script>
  327. import SettingTitle from 'data-room-ui/SettingTitle/index.vue'
  328. import ColorPicker from 'data-room-ui/ColorPicker/index.vue'
  329. import BorderSetting from 'data-room-ui/BigScreenDesign/RightSetting/BorderSetting.vue'
  330. import PosWhSetting from 'data-room-ui/BigScreenDesign/RightSetting/PosWhSetting.vue'
  331. import RotateSetting from 'data-room-ui/BigScreenDesign/RightSetting/RotateSetting.vue'
  332. import IconSvg from 'data-room-ui/SvgIcon'
  333. import {predefineColors} from "data-room-ui/js/utils/colorList";
  334. export default {
  335. name: 'TextSetting',
  336. components: {
  337. PosWhSetting,
  338. ColorPicker,
  339. SettingTitle,
  340. RotateSetting,
  341. IconSvg,
  342. BorderSetting
  343. },
  344. data () {
  345. return {
  346. predefineThemeColors: predefineColors,
  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>