DataSetting.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883
  1. <template>
  2. <div
  3. class="bs-setting-wrap"
  4. @click.stop
  5. >
  6. <el-form
  7. ref="form"
  8. :model="config"
  9. :rules="rules"
  10. label-width="100px"
  11. label-position="left"
  12. class="setting-body bs-el-form"
  13. >
  14. <div class="data-setting-box">
  15. <div
  16. v-if="config.option.displayOption.dataSourceType.enable"
  17. class="data-setting-data-box"
  18. >
  19. <div class="lc-field-head">
  20. <div class="lc-field-title">
  21. 数据来源
  22. </div>
  23. </div>
  24. <div class="lc-field-body">
  25. <el-form-item
  26. label="数据集"
  27. >
  28. <data-set-select
  29. :dataset-name="datasetName"
  30. :ds-id="config.dataSource.businessKey"
  31. @getDsId="dsId => { getDataSetDetailsById(dsId, 'treeTable');}"
  32. />
  33. </el-form-item>
  34. </div>
  35. </div>
  36. <div
  37. v-if="config.type === 'customComponent'"
  38. class="data-setting-data-box"
  39. >
  40. <div class="lc-field-head">
  41. <div class="lc-field-title">
  42. 数据处理
  43. </div>
  44. </div>
  45. <div class="lc-field-body">
  46. <el-form-item
  47. label="数据处理脚本"
  48. >
  49. <el-input
  50. v-model="config.dataHandler"
  51. type="textarea"
  52. :rows="5"
  53. placeholder="请输入数据处理脚本"
  54. />
  55. </el-form-item>
  56. </div>
  57. </div>
  58. <div
  59. v-if="!['tree','multipleNumberChart','carousel'].includes(config.type) && config.option.displayOption.dataSourceType.enable "
  60. class="data-setting-data-box"
  61. >
  62. <div class="lc-field-head">
  63. <div class="lc-field-title">
  64. 数据配置
  65. </div>
  66. </div>
  67. <template v-if="!['customComponent', 'remoteComponent'].includes(config.type)">
  68. <!--维度多选-->
  69. <el-form-item
  70. v-if="config.option.displayOption.dimensionField.enable"
  71. :label="config.option.displayOption.dimensionField.label"
  72. :prop="config.option.displayOption.dimensionField.multiple? 'dataSource.dimensionFieldList' : 'dataSource.dimensionField'"
  73. class="data-form-item"
  74. >
  75. <el-drag-select
  76. v-if="config.option.displayOption.dimensionField.enable && config.option.displayOption.dimensionField.multiple"
  77. v-model="config.dataSource.dimensionFieldList"
  78. class="bs-el-select"
  79. popper-class="bs-el-select"
  80. clearable
  81. :multiple="config.option.displayOption.dimensionField.multiple"
  82. @change="dimensionFieldListChange"
  83. >
  84. <el-option
  85. v-for="(field, index) in dataSourceDataList"
  86. :key="index"
  87. :label="field.comment"
  88. :value="field.name"
  89. >
  90. <div class="source-key-option">
  91. <div>
  92. {{ field.comment !== "" ? field.comment : field.name }}
  93. </div>
  94. <div class="option-txt">
  95. {{ field.name }}
  96. </div>
  97. </div>
  98. </el-option>
  99. </el-drag-select>
  100. <!--维度单选-->
  101. <el-select
  102. v-else
  103. v-model="config.dataSource.dimensionField"
  104. class="bs-el-select"
  105. popper-class="bs-el-select"
  106. clearable
  107. >
  108. <el-option
  109. v-for="(field, index) in dataSourceDataList"
  110. :key="index"
  111. :label="field.comment"
  112. :value="field.name"
  113. >
  114. <div class="source-key-option">
  115. <div>
  116. {{ field.comment !== "" ? field.comment : field.name }}
  117. </div>
  118. <div class="option-txt">
  119. {{ field.name }}
  120. </div>
  121. </div>
  122. </el-option>
  123. </el-select>
  124. </el-form-item>
  125. <!--指标-->
  126. <el-form-item
  127. v-if="config.option.displayOption.metricField.enable"
  128. :label="config.option.displayOption.metricField.label"
  129. prop="dataSource.metricField"
  130. class="data-form-item"
  131. >
  132. <el-select
  133. v-model="config.dataSource.metricField"
  134. class="bs-el-select"
  135. popper-class="bs-el-select"
  136. clearable
  137. >
  138. <el-option
  139. v-for="(field, index) in dataSourceDataList"
  140. :key="index"
  141. :label="field.comment"
  142. :value="field.name"
  143. >
  144. <div class="source-key-option">
  145. <div>
  146. {{ field.comment !== "" ? field.comment : field.name }}
  147. </div>
  148. <div class="option-txt">
  149. {{ field.name }}
  150. </div>
  151. </div>
  152. </el-option>
  153. </el-select>
  154. </el-form-item>
  155. </template>
  156. <template v-else>
  157. <template
  158. v-for="(setting, index) in config.setting.filter(set => set.tabName === 'data')"
  159. >
  160. <el-form-item
  161. :key="index"
  162. :label="setting.label"
  163. class="data-form-item"
  164. >
  165. <el-select
  166. v-if="setting.type === 'select'"
  167. class="bs-el-select select"
  168. popper-class="bs-el-select"
  169. :value="setting.value"
  170. clearable
  171. :multiple="setting.multiple"
  172. :placeholder="`请选择${setting.label}`"
  173. @change="changeCustomProps(...arguments, index)"
  174. >
  175. <el-option
  176. v-for="(field, fieldIndex) in dataSourceDataList"
  177. :key="fieldIndex"
  178. :label="field.comment"
  179. :value="field.name"
  180. >
  181. <div class="source-key-option">
  182. <div>
  183. {{ field.comment !== "" ? field.comment : field.name }}
  184. </div>
  185. <div class="option-txt">
  186. {{ field.name }}
  187. </div>
  188. </div>
  189. </el-option>
  190. </el-select>
  191. <el-input
  192. v-else
  193. :value="setting.value"
  194. :placeholder="`请输入${setting.label}`"
  195. @change="changeCustomProps(...arguments, index)"
  196. />
  197. </el-form-item>
  198. </template>
  199. </template>
  200. </div>
  201. <div
  202. v-if="config.option.displayOption.headerField && config.option.displayOption.headerField.enable"
  203. name="轮播表配置"
  204. >
  205. <template slot="title">
  206. <div class="lc-field-head">
  207. <div class="lc-field-title">
  208. 轮播表配置
  209. </div>
  210. </div>
  211. </template>
  212. <div class="lc-field-body">
  213. <el-table
  214. ref="headerTable"
  215. :border="true"
  216. :data="config.customize.columnConfig"
  217. class="params-config"
  218. >
  219. <el-table-column
  220. prop="code"
  221. label="参数名称"
  222. align="center"
  223. >
  224. <template slot-scope="scope">
  225. <el-input
  226. v-model="scope.row.code"
  227. placeholder="请输入名称"
  228. readonly
  229. />
  230. </template>
  231. </el-table-column>
  232. <el-table-column
  233. prop="name"
  234. label="列名称"
  235. align="center"
  236. >
  237. <template slot-scope="scope">
  238. <el-input
  239. v-model="scope.row.name"
  240. placeholder="请输入字段名称"
  241. />
  242. </template>
  243. </el-table-column>
  244. <el-table-column
  245. prop="width"
  246. label="列宽"
  247. align="center"
  248. >
  249. <template slot-scope="scope">
  250. <el-input
  251. v-model="scope.row.width"
  252. placeholder="请输入列宽"
  253. clearable
  254. />
  255. </template>
  256. </el-table-column>
  257. <el-table-column
  258. prop="align"
  259. label="对齐方式"
  260. align="center"
  261. >
  262. <template slot-scope="scope">
  263. <el-select
  264. v-model="scope.row.align"
  265. class="bs-el-select"
  266. popper-class="bs-el-select"
  267. clearable
  268. placeholder="请选择对齐方式"
  269. >
  270. <el-option
  271. value="left"
  272. label="左对齐"
  273. />
  274. <el-option
  275. value="center"
  276. label="居中"
  277. />
  278. <el-option
  279. value="right"
  280. label="右对齐"
  281. />
  282. </el-select>
  283. </template>
  284. </el-table-column>
  285. </el-table>
  286. </div>
  287. </div>
  288. <div
  289. v-if="config.option.displayOption.mapField && config.option.displayOption.mapField.enable"
  290. name="地图数据配置"
  291. >
  292. <template slot="title">
  293. <div class="lc-field-head">
  294. <div class="lc-field-title">
  295. 地图数据配置
  296. </div>
  297. </div>
  298. </template>
  299. <div class="lc-field-body">
  300. <el-form-item
  301. label="展示字段"
  302. class="data-form-item"
  303. >
  304. <el-select
  305. v-model="config.customize.value"
  306. class="bs-el-select"
  307. popper-class="bs-el-select"
  308. clearable
  309. >
  310. <el-option
  311. v-for="(field, index) in dataSourceDataList"
  312. :key="index"
  313. :label="field.comment"
  314. :value="field.name"
  315. >
  316. <div class="source-key-option">
  317. <div>
  318. {{ field.comment !== "" ? field.comment : field.name }}
  319. </div>
  320. <div class="option-txt">
  321. {{ field.name }}
  322. </div>
  323. </div>
  324. </el-option>
  325. </el-select>
  326. </el-form-item>
  327. <el-form-item
  328. label="地名字段"
  329. class="data-form-item"
  330. >
  331. <el-select
  332. v-model="config.customize.name"
  333. class="bs-el-select"
  334. popper-class="bs-el-select"
  335. clearable
  336. >
  337. <el-option
  338. v-for="(field, index) in dataSourceDataList"
  339. :key="index"
  340. :label="field.comment"
  341. :value="field.name"
  342. >
  343. <div class="source-key-option">
  344. <div>
  345. {{ field.comment !== "" ? field.comment : field.name }}
  346. </div>
  347. <div class="option-txt">
  348. {{ field.name }}
  349. </div>
  350. </div>
  351. </el-option>
  352. </el-select>
  353. </el-form-item>
  354. <el-form-item
  355. label="x坐标"
  356. class="data-form-item"
  357. >
  358. <el-select
  359. v-model="config.customize.xaxis"
  360. class="bs-el-select"
  361. popper-class="bs-el-select"
  362. clearable
  363. >
  364. <el-option
  365. v-for="(field, index) in dataSourceDataList"
  366. :key="index"
  367. :label="field.comment"
  368. :value="field.name"
  369. >
  370. <div class="source-key-option">
  371. <div>
  372. {{ field.comment !== "" ? field.comment : field.name }}
  373. </div>
  374. <div class="option-txt">
  375. {{ field.name }}
  376. </div>
  377. </div>
  378. </el-option>
  379. </el-select>
  380. </el-form-item>
  381. <el-form-item
  382. label="y坐标"
  383. class="data-form-item"
  384. >
  385. <el-select
  386. v-model="config.customize.yaxis"
  387. class="bs-el-select"
  388. popper-class="bs-el-select"
  389. clearable
  390. >
  391. <el-option
  392. v-for="(field, index) in dataSourceDataList"
  393. :key="index"
  394. :label="field.comment"
  395. :value="field.name"
  396. >
  397. <div class="source-key-option">
  398. <div>
  399. {{ field.comment !== "" ? field.comment : field.name }}
  400. </div>
  401. <div class="option-txt">
  402. {{ field.name }}
  403. </div>
  404. </div>
  405. </el-option>
  406. </el-select>
  407. </el-form-item>
  408. </div>
  409. </div>
  410. <div
  411. v-if="config.option.displayOption.params.enable"
  412. class="data-setting-data-box"
  413. >
  414. <div class="lc-field-head">
  415. <div class="lc-field-title">
  416. 参数配置
  417. </div>
  418. </div>
  419. <div class="lc-field-body">
  420. <el-table
  421. ref="singleTable"
  422. :border="true"
  423. :data="params"
  424. class="params-config"
  425. >
  426. <el-table-column
  427. prop="name"
  428. label="参数名称"
  429. align="center"
  430. >
  431. <template slot-scope="scope">
  432. <div>
  433. <el-form-item>
  434. <el-input
  435. v-model="scope.row.name"
  436. placeholder="请输入名称"
  437. readonly
  438. />
  439. <el-tooltip
  440. :content="
  441. `${
  442. scope.row.type ? '参数类型:' + scope.row.type : ''
  443. }
  444. ${
  445. scope.row.remark ? '备注:' + scope.row.remark : ''
  446. }`
  447. "
  448. placement="top"
  449. >
  450. <span
  451. class="el-icon-question"
  452. style="color:#9e9e9e"
  453. />
  454. </el-tooltip>
  455. </el-form-item>
  456. </div>
  457. </template>
  458. </el-table-column>
  459. <el-table-column
  460. prop="value"
  461. label="参数值"
  462. align="center"
  463. >
  464. <template slot-scope="scope">
  465. <el-form-item
  466. :prop="scope.row.require === 1 ? 'params' : null"
  467. >
  468. <el-date-picker
  469. v-if="scope.row.type === 'Date'"
  470. v-model="scope.row.value"
  471. type="datetime"
  472. value-format="yyyy-MM-dd HH:mm:ss"
  473. placeholder="选择日期时间"
  474. />
  475. <el-input
  476. v-else
  477. v-model="scope.row.value"
  478. clearable
  479. placeholder="请输入参数值"
  480. />
  481. </el-form-item>
  482. </template>
  483. </el-table-column>
  484. </el-table>
  485. </div>
  486. </div>
  487. <div
  488. v-if="config.option.displayOption.serverPagination.enable"
  489. class="data-setting-data-box"
  490. name="分页配置"
  491. >
  492. <div class="lc-field-head">
  493. <div class="lc-field-title">
  494. 分页配置
  495. </div>
  496. </div>
  497. <div class="form">
  498. <el-form-item
  499. v-if="config.option.displayOption.serverPagination.enable"
  500. label="服务端分页"
  501. prop="dataSource.serverPagination"
  502. >
  503. <el-radio-group
  504. v-model="config.dataSource.serverPagination"
  505. class="status-radio"
  506. size="mini"
  507. @change="serverPaginationChange"
  508. >
  509. <el-radio-button :label="true">
  510. 开启
  511. </el-radio-button>
  512. <el-radio-button :label="false">
  513. 关闭
  514. </el-radio-button>
  515. </el-radio-group>
  516. </el-form-item>
  517. <el-form-item
  518. v-if="
  519. config.dataSource.serverPagination &&
  520. config.option.displayOption.pageSize.enable
  521. "
  522. label="分页长度"
  523. prop="dataSource.pageSize"
  524. >
  525. <el-select
  526. v-model="config.dataSource.pageSize"
  527. class="bs-el-select"
  528. popper-class="bs-el-select"
  529. filterable
  530. allow-create
  531. default-first-option
  532. >
  533. <el-option
  534. v-for="size in pageSizeList"
  535. :key="size"
  536. :label="size"
  537. :value="size"
  538. />
  539. </el-select>
  540. </el-form-item>
  541. </div>
  542. </div>
  543. <ComponentBinding
  544. v-if="['button'].includes(config.type)"
  545. :config="config"
  546. :source-field-list="sourceFieldList"
  547. />
  548. <ComponentRelation
  549. v-if="!['carousel','gauge','liquid'].includes(config.type)"
  550. :config="config"
  551. :source-field-list="sourceFieldList"
  552. />
  553. </div>
  554. </el-form>
  555. </div>
  556. </template>
  557. <script>
  558. import ElDragSelect from './ElDragSelect.vue'
  559. import { isEmpty, cloneDeep } from 'lodash'
  560. import ComponentRelation from 'packages/BigScreenDesign/RightSetting/ComponentRelation/index.vue'
  561. import ComponentBinding from 'packages/BigScreenDesign/RightSetting/ComponentBinding/index.vue'
  562. import dataSetSelect from 'packages/DataSetSetting/index.vue'
  563. import { mapState } from 'vuex'
  564. import { getDataSetDetails } from 'packages/js/api/bigScreenApi'
  565. export default {
  566. name: 'DataSetting',
  567. components: {
  568. ComponentRelation,
  569. ComponentBinding,
  570. dataSetSelect,
  571. ElDragSelect
  572. },
  573. data () {
  574. return {
  575. fieldsList: [],
  576. params: [], // 参数配置
  577. datasetName: '',
  578. headerList: [],
  579. pageSizeList: [10, 20, 50, 100],
  580. rules: {
  581. // 'dataSource.businessKey': [
  582. // { required: true, message: '请选择数据集', trigger: 'change' }
  583. // ],
  584. // 'dataSource.dimensionField': [
  585. // { required: true, message: '请选择维度', trigger: 'change' }
  586. // ],
  587. // 'dataSource.dimensionFieldList': [
  588. // { required: true, message: '请选择维度', trigger: 'change' }
  589. // ],
  590. // 'dataSource.metricField': [
  591. // { required: true, message: '请选择指标', trigger: 'change' }
  592. // ],
  593. params: [
  594. {
  595. validator: (rule, value, callback) => {
  596. if (!value) {
  597. this.params.map(sort => {
  598. if (!sort.value) {
  599. callback(new Error('请输入参数值'))
  600. } else {
  601. callback()
  602. }
  603. })
  604. } else {
  605. callback()
  606. }
  607. }
  608. }
  609. ]
  610. }
  611. }
  612. },
  613. computed: {
  614. ...mapState({
  615. pageInfo: state => state.bigScreen.pageInfo,
  616. config: state => state.bigScreen.activeItemConfig
  617. // 缓存数据集
  618. // cacheDataSets: state => state.bigScreen.pageInfo.pageConfig.cacheDataSets
  619. }),
  620. dataSourceDataList () {
  621. return this.fieldsList?.map(item => ({
  622. ...item,
  623. comment: item?.fieldDesc || item?.fieldName,
  624. name: item?.fieldName
  625. }))
  626. },
  627. appCode: {
  628. get () {
  629. return this.$store.state.bigScreen.pageInfo.appCode
  630. }
  631. },
  632. seriesFieldProp () {
  633. if (this.config.option.displayOption.seriesField.required) {
  634. return 'dataSource.seriesField'
  635. } else {
  636. return ''
  637. }
  638. },
  639. pageCode () {
  640. return this.$route.query.code
  641. },
  642. // 映射字段
  643. sourceFieldList () {
  644. const list = this?.config?.customize?.bindComponents || this.fieldsList
  645. return (
  646. list?.map(field => {
  647. return {
  648. label: field.fieldDesc,
  649. value: field.fieldName
  650. }
  651. }) || []
  652. )
  653. }
  654. },
  655. watch: {
  656. // 切换数据集时将其他配置清空
  657. 'config.dataSource.businessKey' (val) {
  658. this.clearCustomVerify()
  659. this.clearVerify()
  660. },
  661. // 切换数据集类型时将其他配置清空
  662. 'config.dataSource.dataSetType' () {
  663. this.config.dataSource.businessKey = ''
  664. this.clearCustomVerify()
  665. this.clearVerify()
  666. },
  667. // 参数改变时
  668. params: {
  669. handler (val) {
  670. if (!isEmpty(val)) {
  671. const params = cloneDeep(val)
  672. const paramsMap = params.reduce((obj, param) => {
  673. obj[param.name] = param.value
  674. return obj
  675. }, {})
  676. this.config.dataSource.params = paramsMap
  677. }
  678. },
  679. deep: true
  680. }
  681. },
  682. mounted () {
  683. if (this.config.dataSource && this.config.dataSource.businessKey) {
  684. this.getDataSetDetailsById(this.config.dataSource.businessKey, 'initial')
  685. }
  686. },
  687. methods: {
  688. // 切换前后端分页
  689. serverPaginationChange (val) {
  690. this.config.customize.webPagination = !val
  691. },
  692. // 清空自定义组件配置,与手动配置的组件区分开
  693. clearCustomVerify () {
  694. this.config.setting = this.config.setting?.map(set => {
  695. this.datasetName = ''
  696. if (set.tabName === 'data') {
  697. set.value = ''
  698. }
  699. return set
  700. })
  701. },
  702. // 清空手动配置的组件配置
  703. clearVerify () {
  704. this.config.dataSource.metricField = ''
  705. this.config.dataSource.dimensionField = ''
  706. this.config.dataSource.dimensionFieldList = []
  707. this.config.dataSource.seriesField = ''
  708. this.config.dataSource.params = {}
  709. },
  710. // 根据数据集来获取数据集详情
  711. getDataSetDetailsById (id, type) {
  712. if (id) {
  713. this.config.dataSource.businessKey = id
  714. getDataSetDetails(id).then(res => {
  715. this.fieldsList = res.fields
  716. // 初始化时以组件本来的参数设置为主
  717. if (type === 'initial') {
  718. for (const key in this.config.dataSource.params) {
  719. const param = res?.params?.find(field => field.name === key)
  720. this.params.push({
  721. name: key,
  722. value: this.config.dataSource.params[key],
  723. type: param?.type,
  724. remark: param?.remark
  725. })
  726. }
  727. } else {
  728. this.params = res.params
  729. }
  730. this.datasetName = res.name
  731. // 选择数据集的时候,如果数据集类型是dataModel,则不显示参数配置
  732. this.config.option.displayOption.params.enable = res.type !== 'dataModel'
  733. // 根据数据集初始化组件的入参:inparams
  734. if (res.type !== 'dataModel') {
  735. this.config.inParams =
  736. this.params?.map(param => {
  737. return {
  738. name: param.remark, // 参数名
  739. code: param.name // 参数值
  740. }
  741. }) || []
  742. } else {
  743. this.config.inParams =
  744. this.fieldsList?.map(field => {
  745. return {
  746. name: field.fieldDesc, // 参数名
  747. code: field.fieldName // 参数值
  748. }
  749. }) || []
  750. }
  751. // 根据数据集的参数初始化表单项
  752. this.config.paramsList = this.params
  753. if (type === 'treeTable') {
  754. const enumeration = {
  755. dataSetType: '1', // 数据集类型
  756. dataSetKey: '', // 数据集
  757. itemKeyName: '', // 选项显示字段
  758. itemValueName: '', // 选项value字段
  759. params: []
  760. }
  761. this.config.fields =
  762. this.params?.map(param => {
  763. return {
  764. name: param.name,
  765. label: param.remark || param.name,
  766. component: 'input',
  767. display: res.type !== 'dataModel',
  768. enumeration: {
  769. ...enumeration
  770. },
  771. queryRule: 'like'
  772. }
  773. }) || []
  774. }
  775. })
  776. }
  777. },
  778. // 改变维度
  779. dimensionFieldListChange (list) {
  780. const colFieldList = []
  781. if (list.length > 0) {
  782. list.forEach(item => {
  783. colFieldList.push(
  784. this.dataSourceDataList.find(field => field.name === item)
  785. )
  786. })
  787. }
  788. this.headerList = []
  789. colFieldList.forEach(item => {
  790. this.headerList.push({ name: item.comment, code: item.name, width: '150', align: 'left' })
  791. })
  792. this.config.customize.columnConfig = cloneDeep(this.headerList)
  793. this.$store.commit('bigScreen/changeActiveItemConfig', this.config)
  794. },
  795. changeCustomProps (value, index) {
  796. this.$set(this.config.setting[index], 'value', value)
  797. }
  798. // 改变缓存数据集key
  799. // changeCacheBusinessKey (id) {
  800. // // 根据id在缓存中获取fields
  801. // this.fieldsList = this.cacheDataSets?.find(cache => cache.dataSetId === id)?.fields
  802. // this.params = this.cacheDataSets?.find(cache => cache.dataSetId === id)?.params
  803. // }
  804. }
  805. }
  806. </script>
  807. <style lang="scss" scoped>
  808. @import "~packages/assets/style/settingWrap.scss";
  809. .add-filter-box {
  810. position: relative;
  811. .add-filter {
  812. margin-left: 100px;
  813. }
  814. .add-filter-btn {
  815. position: absolute;
  816. top: 0;
  817. }
  818. }
  819. .form {
  820. padding: 12px;
  821. }
  822. ::v-deep .el-tag__close.el-icon-close::before {
  823. color: #fff;
  824. }
  825. ::v-deep .el-tag__close.el-icon-close {
  826. top: -1px;
  827. &:hover {
  828. background-color:var(--bs-el-color-primary);
  829. }
  830. }
  831. .opt-wrap{
  832. margin-top: 10px;
  833. }
  834. .link-set-item {
  835. position: relative;
  836. border: 1px solid #f5f7fa;
  837. padding: 30px 16px 10px;
  838. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  839. margin: 10px;
  840. .del-icon {
  841. cursor: pointer;
  842. position: absolute;
  843. right: 10px;
  844. top: 5px;
  845. font-size: 20px;
  846. color: #f00;
  847. }
  848. .opt-wrap {
  849. display: flex;
  850. justify-content: center;
  851. }
  852. }
  853. // 修改设置面板样式
  854. .data-setting-box{
  855. .data-setting-data-box{
  856. .lc-field-head{
  857. height: 30px;
  858. .lc-field-title{
  859. position: relative;
  860. padding-left: 12px;
  861. line-height: 30px;
  862. height: 30px;
  863. &:after{
  864. position: absolute;
  865. left: 0;
  866. top: 50%;
  867. transform: translateY(-50%);
  868. content: '';
  869. width: 4px;
  870. height: 14px;
  871. background-color: var(--bs-el-color-primary);
  872. }
  873. }
  874. }
  875. }
  876. }
  877. </style>