steelChemicalbase.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814
  1. <template>
  2. <div class="steelChemical-container" id="box">
  3. <div class="left-cont minHeight" id="left">
  4. <div class="left-top">
  5. <div>
  6. <el-button v-permission="permissionBtn.dataSourcePermission.mysteelData_add"
  7. type="primary" size="medium" @click="addTargetHandle"
  8. >新增指标</el-button
  9. >
  10. <el-button
  11. v-permission="permissionBtn.dataSourcePermission.mysteelData_export"
  12. type="primary"
  13. plain
  14. size="medium"
  15. @click="exportClick"
  16. :loading="btnload"
  17. >导出Excel</el-button
  18. >
  19. </div>
  20. <el-autocomplete
  21. style="margin: 20px 0; width: 100%"
  22. prefix-icon="el-icon-search"
  23. v-model="leftSearchVal"
  24. :fetch-suggestions="handleLeftSearch"
  25. :trigger-on-focus="false"
  26. placeholder="指标名称/指标ID"
  27. @select="handleSelectLeftSearchval"
  28. popper-class="el-autocomplete-suggestion-data-entry"
  29. clearable
  30. >
  31. <template slot-scope="scope">
  32. <div v-if="scope.item.nodata" style="text-align: center">
  33. 暂无数据
  34. </div>
  35. <div v-else>
  36. {{ scope.item.IndexName }}
  37. </div>
  38. </template>
  39. </el-autocomplete>
  40. </div>
  41. <div class="scroll-wrap">
  42. <el-tree
  43. ref="treeRef"
  44. class="target_tree"
  45. :data="classifyList"
  46. node-key="UniqueCode"
  47. :props="{
  48. label: 'ClassifyName',
  49. children: 'Children',
  50. }"
  51. :allow-drag="canDragHandle"
  52. :allow-drop="canDropHandle"
  53. :current-node-key="select_node"
  54. :default-expanded-keys="defaultShowNodes"
  55. draggable
  56. :expand-on-click-node="false"
  57. check-strictly
  58. empty-text="暂无分类"
  59. @node-expand="handleNodeExpand"
  60. @node-collapse="handleNodeCollapse"
  61. @current-change="nodeChangeHandle"
  62. @node-drop="dropOverHandle"
  63. @node-drag-end="dropMouseLeave"
  64. @node-drag-leave="dropMouseLeave"
  65. @node-drag-enter="dropMouseOver"
  66. >
  67. <div class="custom-tree-node" slot-scope="{ node, data }">
  68. <span
  69. class="text_oneLine"
  70. :style="`width:${
  71. (select_node === data.UniqueCode && node.Nodewidth) || ''
  72. }`"
  73. >{{ data.ClassifyName }}</span
  74. >
  75. <div v-if="select_node === data.UniqueCode">
  76. <img
  77. src="~@/assets/img/data_m/move_ico.png"
  78. v-if="data.Button.MoveButton"
  79. alt=""
  80. style="width: 14px; height: 14px; margin-right: 5px"
  81. @click.stop="clickClassifyHandle('move', data, node)"
  82. />
  83. <img
  84. src="~@/assets/img/set_m/add.png"
  85. style="width: 14px; height: 14px; margin-right: 5px"
  86. @click.stop="clickClassifyHandle('add', data, node)"
  87. v-if="data.Button.AddButton"
  88. />
  89. <img
  90. src="~@/assets/img/set_m/edit.png"
  91. v-if="data.Button.OpButton"
  92. alt=""
  93. style="width: 14px; height: 14px; margin-right: 5px"
  94. @click.stop="clickClassifyHandle('edit', data, node)"
  95. />
  96. <img
  97. src="~@/assets/img/set_m/del.png"
  98. v-if="data.Button.DeleteButton"
  99. alt=""
  100. style="width: 14px; height: 14px"
  101. @click.stop="clickClassifyHandle('del', data, node)"
  102. />
  103. </div>
  104. </div>
  105. </el-tree>
  106. <div class="add-cont" @click="addClassifyHandle">
  107. <img
  108. src="~@/assets/img/set_m/add_ico.png"
  109. alt=""
  110. style="width: 16px; height: 16px; margin: 10px"
  111. />
  112. <span>添加分类</span>
  113. </div>
  114. </div>
  115. <span
  116. class="move-btn resize"
  117. v-drag
  118. id="resize"
  119. @mousemove="dynamicNode && resetNodeStyle(dynamicNode)"
  120. >
  121. </span>
  122. </div>
  123. <div
  124. class="right-cont minHeight"
  125. id="right"
  126. v-loading="dataloading"
  127. element-loading-text="获取数据中..."
  128. >
  129. <template v-if="rightShow">
  130. <el-button
  131. v-permission="permissionBtn.dataSourcePermission.mysteelData_refresh"
  132. type="primary"
  133. size="medium"
  134. @click="edbRefreshHandle"
  135. :loading="isRefresh"
  136. style="margin-bottom: 10px"
  137. v-if="edb_id"
  138. >一键更新</el-button
  139. >
  140. <div
  141. class="right-box"
  142. v-infinite-scroll="loadNext"
  143. :infinite-scroll-disabled="!haveMore"
  144. :infinite-scroll-immediate="false"
  145. >
  146. <div class="data-header">
  147. <lz-table
  148. :tableOption="tableOption"
  149. tableType="header"
  150. ref="table"
  151. source="gl"
  152. />
  153. </div>
  154. <div class="data-cont" v-if="dateArr.length">
  155. <lz-table
  156. :tableOption="tableOption"
  157. tableType="data"
  158. :dateArr="dateArr"
  159. source="gl"
  160. />
  161. </div>
  162. <div v-else class="nodata"></div>
  163. </div>
  164. <div class="frequency-list" v-if="frequencyList.length > 1">
  165. <el-button
  166. type="primary"
  167. class="frequency-btn"
  168. :plain="select_frequency !== item.key"
  169. v-for="item in frequencyList"
  170. :key="item.key"
  171. @click="changeFrequency(item.key)"
  172. >{{ item.key }}</el-button
  173. >
  174. </div>
  175. </template>
  176. <div v-else class="nodata-cont">
  177. <tableNoData text="暂无数据"/>
  178. </div>
  179. </div>
  180. <!-- 分类弹窗 -->
  181. <m-dialog
  182. :show.sync="openClassifyDia"
  183. width="700px"
  184. :title="classifyForm.title"
  185. @close="openClassifyDia = false"
  186. >
  187. <div class="dialog-cont">
  188. <el-form
  189. ref="classifyFormRef"
  190. label-position="left"
  191. hide-required-asterisk
  192. label-width="80px"
  193. :model="classifyForm"
  194. :rules="classifyFormRules"
  195. @close="cancelDialogHandle"
  196. >
  197. <el-form-item label="一级目录" v-if="classifyForm.parent_classify_id">
  198. <span>{{ classifyForm.parent_classify_name }}</span>
  199. </el-form-item>
  200. <el-form-item label="分类名称" prop="classify_name">
  201. <el-input
  202. v-model="classifyForm.classify_name"
  203. style="width: 80%"
  204. placeholder="必填项"
  205. />
  206. </el-form-item>
  207. </el-form>
  208. </div>
  209. <div class="dia-bot">
  210. <el-button
  211. type="primary"
  212. style="margin-right: 20px"
  213. @click="saveClassifyHandle"
  214. >保存</el-button
  215. >
  216. <el-button type="primary" plain @click="cancelDialogHandle"
  217. >取消</el-button
  218. >
  219. </div>
  220. </m-dialog>
  221. <!-- 指标弹窗 -->
  222. <target-dialog
  223. :isOpenDialog.sync="addTargetDialog"
  224. :classifyList="classifyList"
  225. :edbForm="edbForm"
  226. @successCallback="addSuccessCallback"
  227. />
  228. </div>
  229. </template>
  230. <script>
  231. import lzTable from "@/components/lzTable.vue";
  232. import { steelInterface } from "@/api/modules/thirdBaseApi";
  233. import mDialog from "@/components/mDialog.vue";
  234. import targetDialog from "./components/targetDialog.vue";
  235. import leftMixin from "./mixins/leftMixin.js";
  236. export default {
  237. name: "",
  238. mixins: [leftMixin],
  239. components: { lzTable, mDialog, targetDialog },
  240. data() {
  241. return {
  242. dataloading: false,
  243. rightShow: false,
  244. exportBase:
  245. process.env.VUE_APP_API_ROOT +
  246. "/datamanage/mysteel_chemical/export/dataList", //数据导出接口
  247. select_classify: "",
  248. leftSearchVal: "",
  249. classifyList: [],
  250. select_frequency: "",
  251. frequencyList: [],
  252. tableOption: [],
  253. dateArr: [], //最长的日期数组
  254. btnload: false,
  255. page_size: 20,
  256. page_no: 1,
  257. haveMore: false,
  258. isRefresh: false,
  259. edb_id: "", //搜索指标id
  260. select_node: "",
  261. dynamicNode: null,
  262. defaultShowNodes: [], //展开节点
  263. openClassifyDia: false,
  264. classifyForm: {
  265. title: "添加分类",
  266. classify_name: "",
  267. parent_classify_name: "",
  268. parent_classify_id: "",
  269. },
  270. classifyFormRules: {
  271. classify_name: [
  272. { required: true, message: "分类名称不能为空", trigger: "blur" },
  273. ],
  274. },
  275. addTargetDialog: false, //添加指标弹窗
  276. edbForm: {},
  277. };
  278. },
  279. methods: {
  280. /* 获取分类 */
  281. getClassify(params = null) {
  282. steelInterface.classifyList().then((res) => {
  283. if (res.Ret !== 200) return;
  284. this.classifyList = res.Data || [];
  285. // this.select_classify = this.select_classify || this.classifyList[0].BaseFromMysteelChemicalClassifyId;
  286. this.$nextTick(() => {
  287. /* 处理树展开和选中 */
  288. params && this.selectCurrentNode(params);
  289. !params &&
  290. this.select_node &&
  291. this.$refs.treeRef.setCurrentKey(this.select_node);
  292. });
  293. });
  294. },
  295. /* 获取频度 */
  296. getFrequency(defaultSelect) {
  297. steelInterface
  298. .frequencyList({
  299. BaseFromMysteelChemicalClassifyId: this.select_classify,
  300. BaseFromMysteelChemicalIndexId: this.edb_id,
  301. })
  302. .then((res) => {
  303. if (res.Ret !== 200) return;
  304. this.frequencyList = res.Data
  305. ? res.Data.map((item) => ({
  306. key: item.Frequency,
  307. }))
  308. : [];
  309. //设置当前选中的频度,若传入有默认选项则选中默认频度,否则选中列表第一个
  310. this.select_frequency =
  311. defaultSelect || this.frequencyList.length
  312. ? this.frequencyList[0].key
  313. : "";
  314. this.page_no = 1;
  315. this.select_frequency && this.getDataList();
  316. });
  317. },
  318. /* 获取数据 */
  319. getDataList() {
  320. this.dataloading = true;
  321. steelInterface
  322. .dataList({
  323. BaseFromMysteelChemicalClassifyId: this.select_classify,
  324. BaseFromMysteelChemicalIndexId: this.edb_id,
  325. Frequency: this.select_frequency,
  326. PageSize: this.page_size,
  327. CurrentIndex: this.page_no,
  328. })
  329. .then((res) => {
  330. this.rightShow = true;
  331. if (res.Ret !== 200) return;
  332. // 找出最多的页码 判断是否还有数据
  333. let page_arrs = res.Data.map((item) => item.Paging.Pages);
  334. let totalPage = Math.max.apply(Math, page_arrs);
  335. this.haveMore = this.page_no < totalPage ? true : false;
  336. // 合并数据
  337. if (this.page_no === 1) {
  338. this.tableOption = res.Data;
  339. } else {
  340. this.tableOption.forEach((item) => {
  341. res.Data.forEach((_item) => {
  342. if (item.IndexCode === _item.IndexCode) {
  343. item.DataList = [...item.DataList, ..._item.DataList];
  344. }
  345. });
  346. });
  347. }
  348. // 合并所有指标中的日期 作为日期数组
  349. let arr = res.Data.map((item) => {
  350. return item.DataList;
  351. });
  352. let obj = [];
  353. for (let i of arr) {
  354. for (let j of i) {
  355. obj.push(j.DataTime);
  356. }
  357. }
  358. let arr2 = [...new Set(obj)].sort().reverse();
  359. let concatArr = [...new Set([...this.dateArr, ...arr2])]
  360. .sort()
  361. .reverse();
  362. this.dateArr = this.page_no === 1 ? arr2 : concatArr;
  363. /* 不满6个追加6个空的显示一排 别问 问就是为了美观 */
  364. if (res.Data.length < 7)
  365. for (let i = 0; i < 7; i++) {
  366. this.tableOption.push({
  367. DataList: [],
  368. });
  369. if (this.tableOption.length >= 7) break;
  370. }
  371. //数据最大长度小于12个 追加数据满12个 别问 问就是为了美观
  372. if (this.dateArr.length < 12)
  373. for (let i = 0; i < 12; i++) {
  374. this.dateArr.push("");
  375. if (this.dateArr.length >= 12) break;
  376. }
  377. this.dataloading = false;
  378. this.page_no === 1 &&
  379. this.$nextTick(() => {
  380. this.initWidth();
  381. });
  382. });
  383. },
  384. loadNext() {
  385. this.page_no++;
  386. this.getDataList();
  387. },
  388. /* 改变节点 */
  389. nodeChangeHandle(data, node) {
  390. if (this.dataloading)
  391. return this.$message("请求频繁,请数据加载完成后再试!");
  392. this.dynamicNode = node;
  393. this.select_node = data.UniqueCode;
  394. this.select_classify = data.BaseFromMysteelChemicalClassifyId;
  395. this.edb_id = data.BaseFromMysteelChemicalIndexId;
  396. this.select_frequency = "";
  397. this.rightShow = false;
  398. this.leftSearchVal = "";
  399. this.getFrequency();
  400. this.resetNodeStyle(node);
  401. },
  402. /* 改变频度 */
  403. changeFrequency(key) {
  404. this.select_frequency = key;
  405. this.getDataList();
  406. },
  407. initWidth() {
  408. $(".right-box")[0].style.width =
  409. this.$refs.table.$el.clientWidth + 5 + "px";
  410. $(".right-box")[0].scrollTop = 0;
  411. $(".right-box")[0].scrollLeft = 0;
  412. },
  413. /* 钢联数据导出 */
  414. exportClick() {
  415. this.btnload = true;
  416. const link = document.createElement("a");
  417. link.href = this.exportGlapi;
  418. link.download = "";
  419. link.click();
  420. setTimeout(() => {
  421. this.btnload = false;
  422. }, 5000);
  423. },
  424. //左侧搜索
  425. async handleLeftSearch(query, cb) {
  426. cb([]);
  427. if (!query) return;
  428. const res = await steelInterface.searchEdb({
  429. Keyword: query,
  430. });
  431. if (res.Ret === 200) {
  432. let arr = res.Data || [];
  433. if (!arr.length) {
  434. cb([{ nodata: true }]);
  435. } else {
  436. cb(arr);
  437. }
  438. }
  439. },
  440. // 选中左侧搜索值
  441. handleSelectLeftSearchval(e) {
  442. if (!e.IndexCode) return;
  443. this.leftSearchVal = e.IndexName;
  444. this.getClassify({ code: e.UniqueCode, id: e.Id });
  445. },
  446. /* 编辑分类 */
  447. async editClassifyHandle(
  448. {
  449. BaseFromMysteelChemicalClassifyId,
  450. ClassifyName,
  451. ParentId,
  452. BaseFromMysteelChemicalIndexId,
  453. },
  454. node
  455. ) {
  456. if (node.level === 3) {
  457. // 指标
  458. let { Data } = await steelInterface.edbDetail({
  459. BaseFromMysteelChemicalIndexId,
  460. });
  461. this.edbForm = {
  462. edb_id: Data.BaseFromMysteelChemicalIndexId,
  463. classify_id: Data.BaseFromMysteelChemicalClassifyId,
  464. from_edb_code: Data.IndexCode,
  465. frequency: Data.UpdateWeek,
  466. update_time: Data.UpdateTime ? Data.UpdateTime.split(",") : [],
  467. };
  468. this.addTargetDialog = true;
  469. } else {
  470. //分类
  471. this.openClassifyDia = true;
  472. this.classifyForm = {
  473. title: "编辑分类",
  474. classify_name: ClassifyName,
  475. classify_id: BaseFromMysteelChemicalClassifyId,
  476. parent_classify_name:
  477. node.level === 2 ? node.parent.data.ClassifyName : "",
  478. parent_classify_id: node.level === 2 ? ParentId : "",
  479. };
  480. }
  481. },
  482. /* 删除分类 */
  483. delClassifyHandle(
  484. { BaseFromMysteelChemicalClassifyId, BaseFromMysteelChemicalIndexId },
  485. node
  486. ) {
  487. this.$confirm(
  488. `${
  489. node.level === 3
  490. ? "删除后该指标不能被引用,确认删除吗?"
  491. : "删除分类将同步删除分类下所有指标,确认删除吗?"
  492. }`,
  493. "提示",
  494. {
  495. type: "warning",
  496. }
  497. )
  498. .then(async () => {
  499. let res =
  500. node.level === 3
  501. ? await steelInterface.edbDel({ BaseFromMysteelChemicalIndexId })
  502. : await steelInterface.classifyDel({
  503. BaseFromMysteelChemicalClassifyId,
  504. });
  505. if (res.Ret !== 200) return;
  506. this.$message.success("删除成功");
  507. this.getClassify();
  508. })
  509. .catch(() => {});
  510. },
  511. clickClassifyHandle(key, item, node) {
  512. const handleMap = {
  513. add: this.addClassifyHandle,
  514. edit: this.editClassifyHandle,
  515. del: this.delClassifyHandle,
  516. };
  517. handleMap[key] && handleMap[key](item, node);
  518. },
  519. /* 添加分类 */
  520. addClassifyHandle(item = null) {
  521. this.openClassifyDia = true;
  522. this.classifyForm = item
  523. ? {
  524. title: "添加分类",
  525. classify_name: "",
  526. parent_classify_name: item.ClassifyName,
  527. parent_classify_id: item.BaseFromMysteelChemicalClassifyId,
  528. }
  529. : {
  530. title: "添加分类",
  531. classify_name: "",
  532. };
  533. },
  534. cancelDialogHandle() {
  535. this.$refs.classifyFormRef.clearValidate();
  536. this.classifyForm.classify_name = "";
  537. this.openClassifyDia = false;
  538. },
  539. /* 保存分类 */
  540. async saveClassifyHandle() {
  541. await this.$refs.classifyFormRef.validate();
  542. let params = {
  543. ClassifyName: this.classifyForm.classify_name,
  544. ParentId: this.classifyForm.parent_classify_id,
  545. Level: this.classifyForm.parent_classify_id ? 1 : 0,
  546. };
  547. const res = this.classifyForm.classify_id
  548. ? await steelInterface.classifyEdit({
  549. ...params,
  550. BaseFromMysteelChemicalClassifyId: this.classifyForm.classify_id,
  551. })
  552. : await steelInterface.classifyAdd(params);
  553. if (res.Ret !== 200) return;
  554. this.$message.success("保存成功");
  555. this.getClassify();
  556. this.openClassifyDia = false;
  557. },
  558. /* 添加指标 */
  559. addTargetHandle() {
  560. this.edbForm = {};
  561. this.addTargetDialog = true;
  562. },
  563. /* 指标刷新 */
  564. edbRefreshHandle() {
  565. this.isRefresh = true;
  566. steelInterface
  567. .edbRefresh({
  568. BaseFromMysteelChemicalIndexId: this.edb_id,
  569. })
  570. .then((res) => {
  571. this.isRefresh = false;
  572. if (res.Ret !== 200) return;
  573. this.$message.success("刷新成功");
  574. this.page_no = 1;
  575. this.getDataList();
  576. });
  577. },
  578. /* 添加后回调 */
  579. addSuccessCallback({ code, id }) {
  580. this.getClassify({ code, id });
  581. },
  582. // 对[# ;]转义
  583. escapeStr(str) {
  584. return str.replace(/#/g, escape("#")).replace(/;/g, escape(";"));
  585. },
  586. },
  587. computed: {
  588. exportGlapi() {
  589. // 数据导出接口
  590. let urlStr = this.exportBase;
  591. // token
  592. urlStr += `?${localStorage.getItem("auth") || ""}`;
  593. // 指标名称参数
  594. urlStr += `&BaseFromMysteelChemicalClassifyId=${this.select_classify}`;
  595. return this.escapeStr(urlStr);
  596. },
  597. },
  598. mounted() {
  599. this.getClassify();
  600. },
  601. };
  602. </script>
  603. <style lang="scss" scoped>
  604. .steelChemical-container {
  605. display: flex;
  606. * {
  607. box-sizing: border-box;
  608. }
  609. .minHeight {
  610. height: calc(100vh - 120px);
  611. background-color: #fff;
  612. box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.05);
  613. border-radius: 4px;
  614. }
  615. div::-webkit-scrollbar {
  616. width: 5px !important;
  617. }
  618. .left-cont {
  619. min-width: 300px;
  620. width: 300px;
  621. flex-shrink: 0;
  622. margin-right: 20px;
  623. padding: 30px 0;
  624. overflow: hidden;
  625. position: relative;
  626. .left-top {
  627. padding: 0 20px;
  628. }
  629. .scroll-wrap {
  630. padding: 0 10px;
  631. height: calc(100vh - 280px);
  632. overflow-y: auto;
  633. }
  634. .target_tree {
  635. color: #333;
  636. .label-input .el-input__inner {
  637. height: 25px;
  638. line-height: 25px;
  639. }
  640. .custom-tree-node {
  641. display: flex !important;
  642. justify-content: space-between;
  643. align-items: center;
  644. display: block;
  645. flex: 1;
  646. .node_label {
  647. margin-right: 2px;
  648. }
  649. .el-icon-view {
  650. color: #409eff;
  651. font-size: 18px;
  652. margin-left: 5px;
  653. }
  654. }
  655. }
  656. .add-cont {
  657. margin: 50px 0 20px;
  658. display: flex;
  659. align-items: center;
  660. justify-content: center;
  661. color: #409eff;
  662. font-size: 16px;
  663. cursor: pointer;
  664. }
  665. .move-btn {
  666. height: 100%;
  667. width: 4px;
  668. position: absolute;
  669. right: 0px;
  670. top: 0;
  671. &:hover {
  672. cursor: col-resize;
  673. }
  674. }
  675. }
  676. .right-cont {
  677. width: 82%;
  678. padding: 30px;
  679. position: relative;
  680. .right-box {
  681. max-width: 100%;
  682. max-height: calc(100vh - 230px);
  683. border-left: 1px solid #dcdfe6;
  684. border-right: 1px solid #dcdfe6;
  685. overflow: auto;
  686. .data-header {
  687. width: 100%;
  688. position: sticky;
  689. top: 0;
  690. z-index: 2;
  691. }
  692. .data-cont {
  693. height: calc(100vh - 444px);
  694. }
  695. .nodata {
  696. height: calc(100vh - 460px);
  697. border: 1px solid #dcdfe6;
  698. font-size: 16px;
  699. color: #999;
  700. }
  701. }
  702. .frequency-list {
  703. margin-top: 20px;
  704. display: flex;
  705. flex-wrap: wrap;
  706. .frequency-btn {
  707. width: 112px;
  708. margin: 0 30px 10px 0;
  709. }
  710. }
  711. }
  712. .nodata-cont {
  713. width: 150px !important;
  714. text-align: center;
  715. color: #666;
  716. font-size: 16px;
  717. margin: 0 auto;
  718. }
  719. }
  720. .dialog-cont {
  721. padding-left: 50px;
  722. }
  723. .dia-bot {
  724. display: flex;
  725. justify-content: center;
  726. }
  727. </style>
  728. <style lang="scss">
  729. .steelChemical-container {
  730. .el-tree__drop-indicator {
  731. height: 3px;
  732. background-color: #409eff;
  733. }
  734. .el-tree-node__content {
  735. margin-bottom: 14px !important;
  736. }
  737. .el-tree-node__children {
  738. .el-tree-node {
  739. margin-bottom: 0px !important;
  740. padding-left: 18px;
  741. }
  742. .el-tree-node__content {
  743. margin-bottom: 5px !important;
  744. padding-left: 0 !important;
  745. }
  746. }
  747. .expanded.el-icon-caret-right:before {
  748. content: url("~@/assets/img/set_m/down.png") !important;
  749. }
  750. .el-icon-caret-right:before {
  751. content: url("~@/assets/img/set_m/slide.png") !important;
  752. }
  753. .el-tree-node__expand-icon.is-leaf.el-icon-caret-right:before {
  754. content: "" !important;
  755. }
  756. .el-tree-node__expand-icon.expanded {
  757. -webkit-transform: rotate(0deg);
  758. transform: rotate(0deg);
  759. }
  760. .el-tree-node.is-current > .el-tree-node__content {
  761. background-color: #f0f4ff !important;
  762. }
  763. .el-tree-node__content {
  764. padding-right: 10px !important;
  765. }
  766. }
  767. </style>