DataSetting.vue 28 KB

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