DataSetting.vue 28 KB

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