setting.vue 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  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. label="地图背景色"
  79. label-width="100px"
  80. >
  81. <ColorPicker
  82. v-model="config.customize.backgroundColor"
  83. :predefine-colors="predefineThemeColors"
  84. />
  85. </el-form-item>
  86. <el-form-item
  87. label="地图分割线颜色"
  88. label-width="100px"
  89. >
  90. <ColorPicker
  91. v-model="config.customize.mapLineColor"
  92. :predefine-colors="predefineThemeColors"
  93. />
  94. </el-form-item>
  95. <el-form-item
  96. label="地图分割块颜色"
  97. label-width="100px"
  98. >
  99. <ColorPicker
  100. v-model="config.customize.areaColor"
  101. :predefine-colors="predefineThemeColors"
  102. />
  103. </el-form-item>
  104. <el-form-item
  105. label="是否打点"
  106. label-width="100px"
  107. >
  108. <el-switch
  109. v-model="config.customize.scatter"
  110. class="bs-el-switch"
  111. active-color="#007aff"
  112. />
  113. </el-form-item>
  114. <el-form-item
  115. v-if="config.customize.scatter"
  116. label="打点图背景色"
  117. label-width="100px"
  118. >
  119. <ColorPicker
  120. v-model="config.customize.scatterBackgroundColor"
  121. :predefine-colors="predefineThemeColors"
  122. />
  123. </el-form-item>
  124. <el-form-item
  125. v-if="config.customize.scatter"
  126. label="打点图文字颜色"
  127. label-width="100px"
  128. >
  129. <ColorPicker
  130. v-model="config.customize.scatterColor"
  131. :predefine-colors="predefineThemeColors"
  132. />
  133. </el-form-item>
  134. <el-form-item
  135. v-if="!config.customize.scatter"
  136. label="悬浮框背景色"
  137. label-width="100px"
  138. >
  139. <ColorPicker
  140. v-model="config.customize.tooltipBackgroundColor"
  141. :predefine-colors="predefineThemeColors"
  142. />
  143. </el-form-item>
  144. <el-form-item
  145. v-if="!config.customize.scatter"
  146. label="悬浮框边框色"
  147. label-width="100px"
  148. >
  149. <ColorPicker
  150. v-model="config.customize.borderColor"
  151. :predefine-colors="predefineThemeColors"
  152. />
  153. </el-form-item>
  154. <el-form-item
  155. label="是否开启筛选"
  156. label-width="100px"
  157. >
  158. <el-switch
  159. v-model="config.customize.visual"
  160. class="bs-el-switch"
  161. active-color="#007aff"
  162. />
  163. </el-form-item>
  164. <el-form-item
  165. v-if="config.customize.visual"
  166. label="数值范围"
  167. label-width="100px"
  168. >
  169. <el-input-number
  170. v-model="config.customize.range[0]"
  171. placeholder="请输入最小值"
  172. controls-position="right"
  173. :step="1"
  174. />
  175. -
  176. <el-input-number
  177. v-model="config.customize.range[1]"
  178. controls-position="right"
  179. placeholder="请输入最大值"
  180. :step="1"
  181. />
  182. </el-form-item>
  183. <el-form-item
  184. v-if="config.customize.visual"
  185. label="配色方案"
  186. label-width="100px"
  187. >
  188. <color-select
  189. v-model="config.customize.rangeColor"
  190. @update="updateColorScheme"
  191. />
  192. <div
  193. style="
  194. display: flex;
  195. align-items: center;
  196. height: 42px;
  197. flex-wrap: wrap;
  198. "
  199. >
  200. <el-color-picker
  201. v-for="(colorItem, index) in colors"
  202. :key="index"
  203. v-model="config.customize.rangeColor[index]"
  204. show-alpha
  205. class="start-color"
  206. />
  207. <span
  208. class="el-icon-circle-plus-outline"
  209. style="color: #007aff; font-size: 20px"
  210. @click="addColor"
  211. />
  212. <span
  213. v-if="colors.length"
  214. class="el-icon-remove-outline"
  215. style="color: #ea0b30; font-size: 20px"
  216. @click="delColor"
  217. />
  218. </div>
  219. </el-form-item>
  220. </div>
  221. </el-form>
  222. </div>
  223. </template>
  224. <script>
  225. import SettingTitle from 'packages/SettingTitle/index.vue'
  226. import { chartSettingMixins } from 'packages/js/mixins/chartSettingMixins'
  227. import ColorSelect from 'packages/ColorMultipleSelect/index.vue'
  228. import ColorPicker from 'packages/ColorPicker/index.vue'
  229. import { get } from 'packages/js/utils/http'
  230. import PosWhSetting from 'packages/BigScreenDesign/RightSetting/PosWhSetting.vue'
  231. export default {
  232. name: 'BarSetting',
  233. components: {
  234. ColorSelect,
  235. ColorPicker,
  236. PosWhSetting,
  237. SettingTitle
  238. },
  239. mixins: [chartSettingMixins],
  240. props: {},
  241. data () {
  242. return {
  243. mapList: [],
  244. predefineThemeColors: [
  245. '#007aff',
  246. '#1aa97b',
  247. '#ff4d53',
  248. '#1890FF',
  249. '#DF0E1B',
  250. '#0086CC',
  251. '#2B74CF',
  252. '#00BC9D',
  253. '#ED7D32'
  254. ]
  255. }
  256. },
  257. computed: {
  258. config: {
  259. get () {
  260. return this.$store.state.bigScreen.activeItemConfig
  261. },
  262. set (val) {
  263. this.$store.state.bigScreen.activeItemConfig = val
  264. }
  265. }
  266. },
  267. watch: {},
  268. mounted () {
  269. this.getMapList()
  270. },
  271. methods: {
  272. getMapList () {
  273. get(
  274. `${window.BS_CONFIG?.httpConfigs?.baseURL}/bigScreen/design/map/list/${this.config.customize.level}`
  275. ).then((res) => {
  276. this.mapList = res
  277. })
  278. },
  279. changeLevel () {
  280. this.getMapList()
  281. if (this.config.customize.level === 'country') {
  282. this.config.customize.dataMap = '中华人民共和国.json'
  283. } else if (this.config.customize.level === 'province') {
  284. this.config.customize.dataMap = '安徽省.json'
  285. }
  286. },
  287. delColor () {
  288. this.config.customize.rangeColor = []
  289. },
  290. addColor () {
  291. this.colors.push('')
  292. },
  293. updateColorScheme (colors) {
  294. this.colors = [...colors]
  295. this.config.customize.rangeColor = [...colors]
  296. }
  297. }
  298. }
  299. </script>
  300. <style lang="scss" scoped>
  301. @import '../~packages/assets/style/settingWrap.scss';
  302. // 筛选条件的按钮样式
  303. .add-filter-box {
  304. position: relative;
  305. .add-filter {
  306. margin-left: 90px;
  307. margin-bottom: 10px;
  308. }
  309. .add-filter-btn {
  310. position: absolute;
  311. top: 0;
  312. }
  313. }
  314. .lc-field-body {
  315. padding: 12px 16px;
  316. }
  317. </style>