setting.vue 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. <template>
  2. <div class="bs-setting-wrap">
  3. <el-form
  4. ref="form"
  5. :model="config"
  6. label-width="90px"
  7. label-position="left"
  8. class="setting-body bs-el-form"
  9. >
  10. <SettingTitle>标题</SettingTitle>
  11. <div class="lc-field-body">
  12. <el-form-item
  13. label="标题"
  14. label-width="100px"
  15. >
  16. <el-input
  17. v-model="config.title"
  18. placeholder="请输入标题"
  19. clearable
  20. />
  21. </el-form-item>
  22. </div>
  23. <SettingTitle>位置</SettingTitle>
  24. <div class="lc-field-body">
  25. <PosWhSetting :config="config" />
  26. </div>
  27. <SettingTitle>基础</SettingTitle>
  28. <div class="lc-field-body">
  29. <el-form-item
  30. label="是否显示地名"
  31. label-width="100px"
  32. >
  33. <el-switch
  34. v-model="config.customize.mapName"
  35. class="bs-el-switch"
  36. active-color="#007aff"
  37. />
  38. </el-form-item>
  39. <el-form-item
  40. label="地图级别"
  41. label-width="100px"
  42. >
  43. <el-select
  44. v-model="config.customize.level"
  45. popper-class="bs-el-select"
  46. class="bs-el-select"
  47. @change="changeLevel()"
  48. >
  49. <el-option
  50. label="国家"
  51. value="country"
  52. />
  53. <el-option
  54. label="省份"
  55. value="province"
  56. />
  57. </el-select>
  58. </el-form-item>
  59. <el-form-item
  60. v-if="config.customize.level == 'province'"
  61. label="地图显示区域"
  62. label-width="100px"
  63. >
  64. <el-select
  65. v-model="config.customize.dataMap"
  66. popper-class="bs-el-select"
  67. class="bs-el-select"
  68. >
  69. <el-option
  70. v-for="map in mapList"
  71. :key="map.name"
  72. :label="map.name"
  73. :value="map.url"
  74. />
  75. </el-select>
  76. </el-form-item>
  77. <el-form-item
  78. v-if="config.customize.level == 'country'"
  79. label="是否开启下钻"
  80. label-width="100px"
  81. >
  82. <el-switch
  83. v-model="config.customize.down"
  84. class="bs-el-switch"
  85. active-color="#007aff"
  86. />
  87. </el-form-item>
  88. <el-form-item
  89. v-if="config.customize.down"
  90. label="头部字体颜色"
  91. label-width="100px"
  92. >
  93. <ColorPicker
  94. v-model="config.customize.fontGraphicColor"
  95. :predefine-colors="predefineThemeColors"
  96. />
  97. </el-form-item>
  98. <el-form-item
  99. v-if="config.customize.down"
  100. label="头部字体大小"
  101. label-width="100px"
  102. >
  103. <el-input-number
  104. v-model="config.customize.fontSize"
  105. placeholder="请输入字体大小"
  106. controls-position="right"
  107. :step="1"
  108. />
  109. </el-form-item>
  110. <el-form-item
  111. label="地图背景色"
  112. label-width="100px"
  113. >
  114. <ColorPicker
  115. v-model="config.customize.backgroundColor"
  116. :predefine-colors="predefineThemeColors"
  117. />
  118. </el-form-item>
  119. <el-form-item
  120. label="地图分割线颜色"
  121. label-width="100px"
  122. >
  123. <ColorPicker
  124. v-model="config.customize.mapLineColor"
  125. :predefine-colors="predefineThemeColors"
  126. />
  127. </el-form-item>
  128. <el-form-item
  129. label="地图分割块颜色"
  130. label-width="100px"
  131. >
  132. <ColorPicker
  133. v-model="config.customize.areaColor"
  134. :predefine-colors="predefineThemeColors"
  135. />
  136. </el-form-item>
  137. <el-form-item
  138. label="是否打点"
  139. label-width="100px"
  140. >
  141. <el-switch
  142. v-model="config.customize.scatter"
  143. class="bs-el-switch"
  144. active-color="#007aff"
  145. />
  146. </el-form-item>
  147. <el-form-item
  148. v-if="config.customize.scatter"
  149. label="打点图背景色"
  150. label-width="100px"
  151. >
  152. <ColorPicker
  153. v-model="config.customize.scatterBackgroundColor"
  154. :predefine-colors="predefineThemeColors"
  155. />
  156. </el-form-item>
  157. <el-form-item
  158. v-if="config.customize.scatter"
  159. label="打点图文字颜色"
  160. label-width="100px"
  161. >
  162. <ColorPicker
  163. v-model="config.customize.scatterColor"
  164. :predefine-colors="predefineThemeColors"
  165. />
  166. </el-form-item>
  167. <el-form-item
  168. v-if="!config.customize.scatter"
  169. label="悬浮框背景色"
  170. label-width="100px"
  171. >
  172. <ColorPicker
  173. v-model="config.customize.tooltipBackgroundColor"
  174. :predefine-colors="predefineThemeColors"
  175. />
  176. </el-form-item>
  177. <el-form-item
  178. v-if="!config.customize.scatter"
  179. label="悬浮框边框色"
  180. label-width="100px"
  181. >
  182. <ColorPicker
  183. v-model="config.customize.borderColor"
  184. :predefine-colors="predefineThemeColors"
  185. />
  186. </el-form-item>
  187. <el-form-item
  188. label="是否开启筛选"
  189. label-width="100px"
  190. >
  191. <el-switch
  192. v-model="config.customize.visual"
  193. class="bs-el-switch"
  194. active-color="#007aff"
  195. />
  196. </el-form-item>
  197. <el-form-item
  198. v-if="config.customize.visual"
  199. label="数值范围"
  200. label-width="100px"
  201. >
  202. <el-input-number
  203. v-model="config.customize.range[0]"
  204. placeholder="请输入最小值"
  205. controls-position="right"
  206. :step="1"
  207. />
  208. -
  209. <el-input-number
  210. v-model="config.customize.range[1]"
  211. controls-position="right"
  212. placeholder="请输入最大值"
  213. :step="1"
  214. />
  215. </el-form-item>
  216. <el-form-item
  217. v-if="config.customize.visual"
  218. label="配色方案"
  219. label-width="100px"
  220. >
  221. <color-select
  222. v-model="config.customize.rangeColor"
  223. @update="updateColorScheme"
  224. />
  225. <div
  226. style="
  227. display: flex;
  228. align-items: center;
  229. height: 42px;
  230. flex-wrap: wrap;
  231. "
  232. >
  233. <el-color-picker
  234. v-for="(colorItem, index) in colors"
  235. :key="index"
  236. v-model="config.customize.rangeColor[index]"
  237. show-alpha
  238. popper-class="bs-el-color-picker"
  239. class="start-color bs-el-color-picker"
  240. />
  241. <span
  242. class="el-icon-circle-plus-outline"
  243. style="color: #007aff; font-size: 20px"
  244. @click="addColor"
  245. />
  246. <span
  247. v-if="colors.length"
  248. class="el-icon-remove-outline"
  249. style="color: #ea0b30; font-size: 20px"
  250. @click="delColor"
  251. />
  252. </div>
  253. </el-form-item>
  254. </div>
  255. </el-form>
  256. </div>
  257. </template>
  258. <script>
  259. import SettingTitle from 'data-room-ui/SettingTitle/index.vue'
  260. import { chartSettingMixins } from 'data-room-ui/js/mixins/chartSettingMixins'
  261. import ColorSelect from 'data-room-ui/ColorMultipleSelect/index.vue'
  262. import ColorPicker from 'data-room-ui/ColorPicker/index.vue'
  263. import PosWhSetting from 'data-room-ui/BigScreenDesign/RightSetting/PosWhSetting.vue'
  264. export default {
  265. name: 'BarSetting',
  266. components: {
  267. ColorSelect,
  268. ColorPicker,
  269. PosWhSetting,
  270. SettingTitle
  271. },
  272. mixins: [chartSettingMixins],
  273. props: {},
  274. data () {
  275. return {
  276. mapList: [],
  277. predefineThemeColors: [
  278. '#007aff',
  279. '#1aa97b',
  280. '#ff4d53',
  281. '#1890FF',
  282. '#DF0E1B',
  283. '#0086CC',
  284. '#2B74CF',
  285. '#00BC9D',
  286. '#ED7D32'
  287. ]
  288. }
  289. },
  290. computed: {
  291. config: {
  292. get () {
  293. return this.$store.state.bigScreen.activeItemConfig
  294. },
  295. set (val) {
  296. this.$store.state.bigScreen.activeItemConfig = val
  297. }
  298. }
  299. },
  300. watch: {},
  301. mounted () {
  302. this.getMapList()
  303. },
  304. methods: {
  305. getMapList () {
  306. this.$dataRoomAxios.get(`${window.BS_CONFIG?.httpConfigs?.baseURL}/bigScreen/design/map/list/${this.config.customize.level}`).then((res) => {
  307. this.mapList = res
  308. })
  309. },
  310. changeLevel () {
  311. this.getMapList()
  312. if (this.config.customize.level === 'country') {
  313. this.config.customize.dataMap = '中华人民共和国.json'
  314. } else if (this.config.customize.level === 'province') {
  315. this.config.customize.dataMap = '安徽省.json'
  316. this.config.customize.down=false
  317. }else{
  318. this.config.customize.down=false
  319. }
  320. },
  321. delColor () {
  322. this.colors = []
  323. this.config.customize.rangeColor = []
  324. },
  325. addColor () {
  326. this.colors.push('')
  327. },
  328. updateColorScheme (colors) {
  329. this.colors = [...colors]
  330. this.config.customize.rangeColor = [...colors]
  331. }
  332. }
  333. }
  334. </script>
  335. <style lang="scss" scoped>
  336. @import '../../assets/style/settingWrap.scss';
  337. @import '../../assets/style/bsTheme.scss';
  338. // 筛选条件的按钮样式
  339. .add-filter-box {
  340. position: relative;
  341. .add-filter {
  342. margin-left: 90px;
  343. margin-bottom: 10px;
  344. }
  345. .add-filter-btn {
  346. position: absolute;
  347. top: 0;
  348. }
  349. }
  350. .lc-field-body {
  351. padding: 12px 16px;
  352. }
  353. </style>