soundSetCore.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741
  1. <template>
  2. <div>
  3. <div
  4. :class="isField ? 'soundBtnWrap' : 'soundBtnFixed'"
  5. v-if="!basdisabled"
  6. >
  7. <el-button
  8. type="primary"
  9. @click="allin"
  10. v-if="teamStatus != 'resetTeam' && !basdisabled"
  11. >全选</el-button
  12. >
  13. <el-button
  14. type="danger"
  15. @click="deleteRow"
  16. v-if="teamStatus != 'resetTeam' && !basdisabled"
  17. >删除</el-button
  18. >
  19. <el-button type="primary" @click="soundVisible = true" v-if="!basdisabled"
  20. >添加</el-button
  21. >
  22. </div>
  23. <div class="wall" v-if="!basdisabled"></div>
  24. <div class="coreWrap">
  25. <el-checkbox-group v-model="checkList" @change="lookCheck">
  26. <el-collapse v-model="chioseActiveSound">
  27. <el-collapse-item
  28. v-for="(item, index) in activeSoundList"
  29. :name="item.id"
  30. :key="index"
  31. >
  32. <template slot="title">
  33. <div class="coreItemTitle">
  34. <el-checkbox :label="item.id" :disabled="basdisabled">{{
  35. item.sound
  36. }}</el-checkbox>
  37. </div>
  38. </template>
  39. <div class="coreItem">
  40. <div class="coreItemRow">
  41. <p class="title">计划招生人数:</p>
  42. <el-input
  43. :disabled="basdisabled"
  44. style="width: 180px"
  45. v-model="item.expectedStudentNum"
  46. ></el-input>
  47. </div>
  48. </div>
  49. <el-divider></el-divider>
  50. <chioseMusic
  51. :activeSoundList="activeSoundList"
  52. :item="item"
  53. @lookMusic="lookMusic"
  54. :basdisabled="basdisabled"
  55. />
  56. <div class="coreItemRow">
  57. <p class="title">教辅:</p>
  58. <el-select
  59. style="width: 558px !important"
  60. v-model="item.markChioseList"
  61. :disabled="basdisabled"
  62. clearable
  63. filterable
  64. multiple
  65. >
  66. <el-option
  67. v-for="(item, index) in item.markList"
  68. :key="index"
  69. :label="item.name"
  70. :value="item.id"
  71. >
  72. <span style="float: left">{{ item.name }}</span>
  73. <span
  74. style="
  75. float: right;
  76. color: #8492a6;
  77. font-size: 13px;
  78. padding-right: 20px;
  79. "
  80. >{{ item.groupPurchasePrice | moneyFormat }}元</span
  81. >
  82. </el-option>
  83. </el-select>
  84. </div>
  85. </el-collapse-item>
  86. </el-collapse>
  87. </el-checkbox-group>
  88. </div>
  89. <el-dialog title="声部选择" :visible.sync="soundVisible" destroy-on-close>
  90. <chioseSoundList
  91. :soundList="soundList"
  92. :activeSound="activeSound"
  93. @chioseSound="chioseSound"
  94. />
  95. </el-dialog>
  96. </div>
  97. </template>
  98. <script>
  99. import store from "@/store";
  100. import { formatData } from "@/utils/utils";
  101. import {
  102. getSubject,
  103. getDefaultSubject,
  104. getGoods,
  105. createTeam,
  106. getSoundTree,
  107. findMusicGroupSubjectInfo,
  108. updateSubjectInfo,
  109. auditSuccess,
  110. auditFailed,
  111. getSubjectGoods,
  112. } from "@/api/buildTeam";
  113. import dayjs from "dayjs";
  114. import chioseSoundList from "./chioseSoundList";
  115. import chioseMusic from "./chioseMusic";
  116. import { findIndex } from "lodash";
  117. import numeral from "numeral";
  118. export default {
  119. components: { chioseSoundList, chioseMusic },
  120. data() {
  121. return {
  122. soundList: [], // 接口返回的一级二级声部
  123. soundVisible: false, // 设置声部弹窗
  124. childSoundList: [],
  125. activeSoundList: [], //列表上的声部
  126. activeSound: null, // 展开的列表
  127. chioseActiveSound: [],
  128. soundList: [], // 接口返回的一级二级声部
  129. childSoundList: [],
  130. teamStatus: "", // 乐团状态
  131. checkList: [],
  132. basdisabled: false,
  133. teamid: "",
  134. isField: true,
  135. };
  136. },
  137. mounted() {
  138. if (this.$route.query.id) {
  139. this.teamid = this.$route.query.id;
  140. }
  141. window.addEventListener("scroll", this.getScroll);
  142. this.init();
  143. },
  144. deactivated() {
  145. window.removeEventListener("scroll", this.getScroll);
  146. },
  147. beforeDestroy() {
  148. sessionStorage.setItem(
  149. `${this.teamid}sound`,
  150. JSON.stringify(this.activeSoundList)
  151. );
  152. window.removeEventListener("scroll", this.getScroll);
  153. },
  154. activated() {
  155. if (
  156. (this.teamid && this.teamid != this.$route.query.id) ||
  157. this.teamStatus != this.$route.query.type
  158. ) {
  159. this.init();
  160. } else {
  161. if (!this.teamid && this.activeSoundList.length < 1) {
  162. this.init();
  163. }
  164. }
  165. this.teamStatus = this.$route.query.type;
  166. if (
  167. this.teamStatus == "look" ||
  168. this.teamStatus == "teamAudit" ||
  169. this.teamStatus == "feeAudit"||
  170. this.teamStatus == "teamCanceled"
  171. ) {
  172. this.basdisabled = true;
  173. } else {
  174. this.basdisabled = false;
  175. }
  176. },
  177. deactivated(){
  178. this.activeSoundList = []
  179. },
  180. methods: {
  181. init() {
  182. // 获取第一页的数据
  183. this.topfor = this.$store.getters.topinfo;
  184. let type = this.topfor.type;
  185. let section = this.topfor.section;
  186. this.teamStatus = this.$route.query.type;
  187. if (
  188. this.teamStatus == "look" ||
  189. this.teamStatus == "teamAudit" ||
  190. this.teamStatus == "feeAudit" ||
  191. this.teamStatus == "teamCanceled"
  192. ) {
  193. this.basdisabled = true;
  194. } else {
  195. this.basdisabled = false;
  196. }
  197. let sotrage = JSON.parse(
  198. sessionStorage.getItem(`${this.$route.query.id}sound`)
  199. );
  200. if (sotrage&&sotrage[0]?.id) {
  201. this.activeSoundList = sotrage;
  202. let activeSound = [];
  203. this.activeSoundList.forEach((item) => {
  204. activeSound.push(item.id);
  205. });
  206. this.chioseActiveSound = activeSound;
  207. } else {
  208. getSoundTree({ tenantId: 1 }).then((res) => {
  209. if (res.code == 200) {
  210. this.soundList = res.data.rows;
  211. if (this.teamStatus == "newTeam" && type && section) {
  212. getDefaultSubject({
  213. chargeTypeId: type,
  214. organId: section,
  215. number: 1,
  216. }).then((res) => {
  217. if (res.code == 200) {
  218. let activeSound = [];
  219. this.activeSoundList = res.data.map((item) => {
  220. activeSound.push(item.id);
  221. return this.initSound(item);
  222. });
  223. this.activeSound = activeSound;
  224. this.chioseActiveSound = activeSound;
  225. this.changeActiveSound(activeSound.join(","));
  226. }
  227. });
  228. } else {
  229. this.teamid = this.$route.query.id;
  230. if (this.teamid) {
  231. findMusicGroupSubjectInfo({ musicGroupId: this.teamid }).then(
  232. (res) => {
  233. if (res.code == 200) {
  234. let activeSound = [];
  235. this.activeSoundList = res.data?.musicGroupSubjectPlans.map(
  236. (item) => {
  237. activeSound.push(item.subjectId);
  238. return {
  239. id: parseInt(item.subjectId),
  240. sound: item.subName,
  241. expectedStudentNum: item.expectedStudentNum,
  242. chioseMusic: [],
  243. markChioseList: [],
  244. goodsList: [],
  245. markList: [],
  246. };
  247. }
  248. );
  249. this.activeSound = activeSound;
  250. this.chioseActiveSound = activeSound;
  251. this.changeActiveSound(activeSound.join(","));
  252. // 格式化商品和教辅
  253. res.data.musicGroupSubjectGoodsGroups.forEach((shop) => {
  254. let index = findIndex(this.activeSoundList, (o) => {
  255. return o.id == shop.subjectId;
  256. });
  257. if (index != -1) {
  258. if (shop.type == "ACCESSORIES") {
  259. shop.goodsIdList.split(",").forEach((item) => {
  260. this.activeSoundList[index].markChioseList.push(
  261. parseInt(item)
  262. );
  263. });
  264. } else if (shop.type == "INSTRUMENT") {
  265. // 商品
  266. let typeJson = Object.keys(
  267. JSON.parse(shop.kitGroupPurchaseTypeJson)
  268. );
  269. this.activeSoundList[index].chioseMusic.push({
  270. musical: parseInt(shop.goodsIdList),
  271. type: typeJson,
  272. groupPrice: shop.price,
  273. borrowPrice: shop.depositFee,
  274. groupRemissionCourseFee: Boolean(
  275. shop.groupRemissionCourseFee
  276. ),
  277. });
  278. }
  279. }
  280. });
  281. }
  282. }
  283. );
  284. }
  285. }
  286. }
  287. });
  288. }
  289. getSubject({ tenantId: 1 }).then((res) => {
  290. if (res.code == 200) {
  291. this.childSoundList = res.data;
  292. }
  293. });
  294. },
  295. lookCheck(val) {
  296. this.checkList = [...new Set(val)];
  297. },
  298. chioseSound(activeSound) {
  299. // 同步数据
  300. this.activeSound = [...new Set(activeSound)];
  301. let newSoundList = [];
  302. for (let i in this.childSoundList) {
  303. if (this.activeSound.includes(this.childSoundList[i].id)) {
  304. newSoundList.push(this.initSound(this.childSoundList[i]));
  305. }
  306. }
  307. let idList = this.activeSoundList.map((item) => {
  308. return item.id;
  309. });
  310. for (let x in newSoundList) {
  311. const indexof = idList.indexOf(newSoundList[x]?.id);
  312. if (indexof > -1) {
  313. newSoundList[x] = this.activeSoundList[indexof];
  314. }
  315. }
  316. this.activeSoundList = newSoundList;
  317. let newActiveSound = [];
  318. this.activeSoundList.forEach((item) => {
  319. newActiveSound.push(item.id);
  320. });
  321. this.activeSound = newActiveSound;
  322. this.chioseActiveSound = newActiveSound;
  323. this.changeActiveSound(newActiveSound.join(","));
  324. this.soundVisible = false;
  325. },
  326. initSound(item) {
  327. let obj = {
  328. id: item.id,
  329. sound: item.name,
  330. expectedStudentNum: item.expectedStudentNum,
  331. chioseMusic: [
  332. {
  333. musical: "",
  334. type: ["GROUP"],
  335. groupPrice: 0,
  336. borrowPrice: 1500,
  337. groupRemissionCourseFee: Boolean(item.groupRemissionCourseFee),
  338. },
  339. ],
  340. markChioseList: [],
  341. goodsList: [],
  342. markList: [],
  343. };
  344. return obj;
  345. },
  346. changeActiveSound(val) {
  347. // 写入声部商品和辅件
  348. getSubjectGoods({
  349. subjectIds: val,
  350. chargeTypeId: this.topfor.type,
  351. }).then((res) => {
  352. if (res.code == 200) {
  353. if (res.data) {
  354. let keys = Object.keys(res.data);
  355. this.activeSoundList.forEach((item) => {
  356. if (keys.indexOf(item.id + "") != -1) {
  357. let goodList = [];
  358. let markList = [];
  359. res.data[item.id].forEach((shop) => {
  360. if (shop.type == "INSTRUMENT") {
  361. goodList.push(shop);
  362. } else if (shop.type == "ACCESSORIES") {
  363. markList.push(shop);
  364. }
  365. });
  366. item.goodsList = goodList;
  367. item.markList = markList;
  368. }
  369. });
  370. }
  371. }
  372. });
  373. },
  374. lookMusic() {},
  375. submitInfo(type) {
  376. // 计划招生人数
  377. // 可选乐器
  378. // 教辅
  379. if (this.activeSoundList.length <= 0) {
  380. this.$message.error(`请至少设置一个声部`);
  381. return;
  382. }
  383. let flag = true;
  384. this.activeSoundList.forEach((item) => {
  385. if (!item.expectedStudentNum) {
  386. this.$message.error(`请填写${item.sound}的预计招生人数`);
  387. flag = false;
  388. return;
  389. }
  390. if (!item.chioseMusic[0]?.musical) {
  391. this.$message.error(`请至少一个选择${item.sound}的可选乐器`);
  392. flag = false;
  393. return;
  394. }
  395. item.chioseMusic.forEach((music) => {
  396. if (music.type.indexOf("LEASE") != -1) {
  397. if (!music.borrowPrice || parseFloat(music.borrowPrice) <= 0) {
  398. this.$message.error(`请填写正确的${item.sound}租赁押金`);
  399. flag = false;
  400. }
  401. }
  402. });
  403. });
  404. if (!flag) return;
  405. // 新建团
  406. let obj = {};
  407. // if (this.teamStatus == "newTeam") {
  408. // this.initCreateTeam(obj);
  409. // }
  410. // 初始化声部
  411. obj.musicGroupSubjectGoodsGroups = [];
  412. obj.musicGroupSubjectPlans = [];
  413. this.activeSoundList.forEach((active) => {
  414. // 格式化声部数据
  415. let item = {
  416. expectedStudentNum: active.expectedStudentNum,
  417. subName: active.sound,
  418. subjectId: active.id,
  419. };
  420. obj.musicGroupSubjectPlans.push(item);
  421. // 格式化商品数据 chioseMusic: [{ musical: '', type: ["GROUP"], groupPrice: 0, borrowPrice: 1500 }],
  422. active.chioseMusic.forEach((music) => {
  423. let goodsItem = null;
  424. let depositFee = music.borrowPrice;
  425. let price = music.groupPrice;
  426. let groupRemissionCourseFee;
  427. if (music.type.indexOf("GROUP") != -1) {
  428. groupRemissionCourseFee = music.groupRemissionCourseFee * 1;
  429. } else {
  430. groupRemissionCourseFee = 0;
  431. }
  432. let index = findIndex(active.goodsList, (o) => {
  433. return o.id == music.musical;
  434. });
  435. if (index != -1) {
  436. goodsItem = active.goodsList[index];
  437. }
  438. let kitGroupPurchaseTypeJson = {};
  439. music.type.forEach((type) => {
  440. kitGroupPurchaseTypeJson[type] = 0;
  441. });
  442. // if (Array.isArray(music.type)) {
  443. // music.type.forEach((type) => {
  444. // kitGroupPurchaseTypeJson[type] = 0;
  445. // });
  446. // }else{
  447. // // 字符串
  448. // let arr = [ music.type]
  449. // arr.forEach((type) => {
  450. // kitGroupPurchaseTypeJson[type] = 0;
  451. // });
  452. // }
  453. kitGroupPurchaseTypeJson = JSON.stringify(kitGroupPurchaseTypeJson);
  454. if (goodsItem) {
  455. let some = {
  456. subjectId: active.id,
  457. type: "INSTRUMENT",
  458. goodsIdList: music.musical,
  459. name: goodsItem.name,
  460. kitGroupPurchaseTypeJson,
  461. depositFee,
  462. price,
  463. groupRemissionCourseFee,
  464. };
  465. obj.musicGroupSubjectGoodsGroups.push(some);
  466. }
  467. });
  468. // 格式化辅件
  469. // markChioseList: [],
  470. // goodsList: [],
  471. // markList: [],
  472. active.markChioseList.forEach((ass) => {
  473. let index = findIndex(active.markList, (o) => {
  474. return o.id == ass;
  475. });
  476. let goodsItem = null;
  477. if (index != -1) {
  478. goodsItem = active.markList[index];
  479. }
  480. if (goodsItem) {
  481. let some = {
  482. subjectId: active.id,
  483. type: "ACCESSORIES",
  484. goodsIdList: ass,
  485. name: goodsItem.name,
  486. price: goodsItem.groupPurchasePrice,
  487. };
  488. obj.musicGroupSubjectGoodsGroups.push(some);
  489. }
  490. });
  491. });
  492. if (this.teamStatus == "newTeam") {
  493. // createTeam(obj).then((res) => {
  494. // if (res.code == 200) {
  495. // // 成功 跳转到乐团报名详情
  496. // // let query = this.$route.query;
  497. // // query.type = "teamDraft";
  498. // // this.$router.push({
  499. // // query: {
  500. // // ...query,
  501. // // id: res.data,
  502. // // },
  503. // // });
  504. // // this.$emit("chiosetab", 2);
  505. // // this.$emit("getBaseInfo", obj);
  506. // // zheli
  507. // // 把第3步单独拆出来做成独立的模块
  508. // this.$confirm("乐团创建成功,是否提交审核?", "提示", {
  509. // confirmButtonText: "确定",
  510. // cancelButtonText: "取消",
  511. // type: "warning",
  512. // })
  513. // .then(() => {
  514. // this.teamStatus = "teamDraft";
  515. // this.teamid = res.data;
  516. // this.submitInfo(1);
  517. // })
  518. // .catch(() => {
  519. // this.$store.dispatch("delVisitedViews", this.$route);
  520. // this.$router.push({
  521. // path: "/business/teamDetail",
  522. // });
  523. // });
  524. // }
  525. // });
  526. } else {
  527. obj.musicGroupId = this.teamid;
  528. console.log(obj,type)
  529. if (type) {
  530. obj.musicGroupStatus = "AUDIT";
  531. } else {
  532. obj.musicGroupStatus = "DRAFT";
  533. }
  534. if (type == 2) {
  535. this.$confirm("是否提交审核?", "提示", {
  536. confirmButtonText: "确定",
  537. cancelButtonText: "取消",
  538. type: "warning",
  539. })
  540. .then(() => {
  541. updateSubjectInfo(obj).then((res) => {
  542. if (res.code == 200) {
  543. this.$message.success("提交成功");
  544. this.$store.dispatch("delVisitedViews", this.$route);
  545. this.$router.push({
  546. path: "/business/teamDetail",
  547. });
  548. }
  549. });
  550. })
  551. .catch(() => {});
  552. }else{
  553. updateSubjectInfo(obj).then((res) => {
  554. if (res.code == 200) {
  555. // this.$emit("chiosetab", 2);
  556. // 创建乐团,只会到声部了
  557. let query = this.$route.query;
  558. this.$store.dispatch("delVisitedViews", this.$route);
  559. this.$router.push({
  560. path: "/business/teamDetail",
  561. query: {
  562. ...query,
  563. },
  564. });
  565. }
  566. });
  567. }
  568. }
  569. },
  570. deleteRow() {
  571. if (this.checkList.length < 1) {
  572. this.$message.error("请至少勾选一个");
  573. return;
  574. }
  575. this.$confirm("确定删除选中声部?", "提示", {
  576. confirmButtonText: "确定",
  577. cancelButtonText: "取消",
  578. type: "warning",
  579. })
  580. .then(() => {
  581. for (let i = 0; i < this.activeSoundList.length; i++) {
  582. let index = this.checkList.indexOf(this.activeSoundList[i].id);
  583. if (index != -1) {
  584. this.activeSoundList.splice(i, 1);
  585. this.activeSound.splice(i, 1);
  586. i--;
  587. }
  588. }
  589. this.checkList = [];
  590. this.$message.success("删除成功");
  591. })
  592. .catch(() => {});
  593. },
  594. allin() {
  595. this.checkList = [];
  596. this.activeSoundList.forEach((item, index) => {
  597. this.checkList.push(item.id);
  598. });
  599. },
  600. initCreateTeam(obj) {
  601. let enrollClasses;
  602. this.topfor.startClass
  603. ? (enrollClasses = this.topfor.startClass.join(","))
  604. : (enrollClasses = null);
  605. obj.musicGroup = {
  606. settlementType: this.topfor.salary,
  607. applyExpireDate: dayjs(this.topfor.time).format("YYYY-MM-DD HH:mm:ss"),
  608. chargeTypeId: this.topfor.type,
  609. cooperationOrganId: this.topfor.school,
  610. courseViewType: this.topfor.courseViewType,
  611. teamTeacherId: this.topfor.boss,
  612. educationalTeacherId: this.topfor.teacher,
  613. enrollClasses,
  614. name: this.topfor.name,
  615. organId: this.topfor.section,
  616. paymentPattern: this.topfor.paymentPattern,
  617. paymentValidStartDate: this.topfor.paymentValidStartDate
  618. ? dayjs(this.topfor.paymentValidStartDate).format("YYYY-MM-DD")
  619. : this.topfor.paymentValidStartDate,
  620. paymentValidEndDate: this.topfor.paymentValidEndDate
  621. ? dayjs(this.topfor.paymentValidEndDate).format("YYYY-MM-DD")
  622. : this.topfor.paymentValidEndDate,
  623. // paymentMonths:obj.months 有待确认
  624. schoolId: this.topfor.address,
  625. expectStartGroupDate: this.topfor.startTime,
  626. isClassroomLessons: this.topfor.isClass,
  627. status: "DRAFT",
  628. ownershipType: this.topfor.ownershipType,
  629. repairUserId: this.topfor.repairUserId,
  630. feeType: this.topfor.feeType,
  631. directorUserId: this.topfor.head,
  632. };
  633. return obj;
  634. },
  635. getScroll() {
  636. this.scrollTop =
  637. window.pageYOffset ||
  638. document.documentElement.scrollTop ||
  639. document.body.scrollTop;
  640. if (!!this.scrollTop && this.scrollTop >= 210) {
  641. this.isField = false;
  642. } else {
  643. this.isField = true;
  644. }
  645. },
  646. },
  647. watch: {
  648. activeSoundList: {
  649. immediate: true,
  650. deep: true,
  651. handler(n) {
  652. let chioseSoundNum = 0;
  653. let PlannedCount = 0;
  654. let activeSoundList = this.activeSoundList;
  655. if (n) {
  656. let Count = 0;
  657. if (n.length > 0) {
  658. for (let item in n) {
  659. Count += parseInt(n[item]?.expectedStudentNum) || 0;
  660. }
  661. }
  662. chioseSoundNum = n.length;
  663. PlannedCount = Count;
  664. this.$emit("getNumber", chioseSoundNum, PlannedCount);
  665. }
  666. },
  667. },
  668. },
  669. };
  670. </script>
  671. <style lang="scss" scoped>
  672. .wall {
  673. height: 60px;
  674. margin-bottom: 20px;
  675. }
  676. .soundBtnWrap {
  677. width: 100%;
  678. position: absolute;
  679. background-color: #fff;
  680. z-index: 100;
  681. padding: 20px;
  682. }
  683. .soundBtnFixed {
  684. top: 86px;
  685. left: 270px; // 205
  686. width: 100%;
  687. position: fixed;
  688. background-color: #fff;
  689. z-index: 100;
  690. padding: 20px;
  691. }
  692. /deep/.el-collapse-item__header {
  693. background-color: #edeef0;
  694. }
  695. .coreItemTitle {
  696. background-color: #edeef0;
  697. height: 46px;
  698. line-height: 46px;
  699. padding: 0 20px;
  700. }
  701. .coreItem {
  702. padding: 25px 0 0;
  703. }
  704. .coreItemRow {
  705. padding: 0 20px;
  706. line-height: 50px;
  707. display: flex;
  708. flex-direction: row;
  709. align-items: center;
  710. p {
  711. margin-right: 10px;
  712. }
  713. .title {
  714. width: 140px;
  715. text-align: right;
  716. }
  717. }
  718. .marginLeft10 {
  719. margin-left: 10px;
  720. }
  721. /deep/.el-collapse-item__header {
  722. border-bottom: 1px solid #fff;
  723. }
  724. </style>