payInfoDetail.vue 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506
  1. <template>
  2. <div class="m-container1">
  3. <el-page-header
  4. @back="goback"
  5. style="padding: 20px"
  6. :content="$route.query.payUserType == 'SCHOOL' ? '学校缴费' : '学员缴费'"
  7. >
  8. </el-page-header>
  9. <div class="payInfoWrap">
  10. <div class="left">
  11. <!-- <div class="Wall"></div> -->
  12. <div class="m-core1">
  13. <el-form :inline="true" :model="form" label-width="120px" ref="form">
  14. <div :class="isField ? 'baseWrapFixed' : 'baseWrap'">
  15. <div class="payTitle">
  16. <div class="squrt"></div>
  17. <p>基础项目配置</p>
  18. <div class="payContext">请选择您需要的课程配置</div>
  19. <el-form-item
  20. label="计价标准"
  21. class="vertical"
  22. prop="isShowMusicInsuranceForPay"
  23. v-if="$route.query.payUserType == 'SCHOOL'"
  24. >
  25. <el-select
  26. size="mini"
  27. v-model="form.calenderFeeType"
  28. placeholder="请选择计价标准"
  29. >
  30. <el-option label="按学生" value="STUDENT"> </el-option>
  31. <el-option
  32. label="按老师"
  33. value="TEACHER"
  34. :disabled="!teamCourse"
  35. >
  36. </el-option>
  37. </el-select>
  38. </el-form-item>
  39. </div>
  40. <div class="checkWrap">
  41. <div
  42. class="checkBtn"
  43. :class="[
  44. teamCourse ? 'active' : '',
  45. teamCourseDisabled ? 'disabled' : '',
  46. ]"
  47. @click.prevent="
  48. () => {
  49. if (teamCourseDisabled) return;
  50. teamCourse = !teamCourse;
  51. if (teamCourse && form.eclass.length < 0) {
  52. form.eclass = [];
  53. form.eclass.push({});
  54. }
  55. if (!teamCourse) {
  56. form.calenderFeeType = 'STUDENT';
  57. }
  58. }
  59. "
  60. >
  61. <div class="checkLeft">
  62. <img src="../images/checkIcon1.png" alt="" />
  63. </div>
  64. <div class="checkRight">
  65. <p>乐团课</p>
  66. <p class="checkSubTitle">创建课程类型标准</p>
  67. </div>
  68. <div class="checTriangle" v-if="teamCourse">
  69. <img src="../images/checkGou.png" alt="" />
  70. </div>
  71. <!-- <el-checkbox
  72. v-model="teamCourse"
  73. :disabled="teamCourseDisabled"
  74. ></el-checkbox> -->
  75. </div>
  76. <div
  77. class="checkBtn"
  78. :class="[
  79. member ? 'active' : '',
  80. memberDisabled ? 'disabled' : '',
  81. ]"
  82. @click.prevent="
  83. () => {
  84. if (memberDisabled) return;
  85. member = !member;
  86. if (member && form.memberList.length < 0) {
  87. form.memberList = [];
  88. form.memberList.push({});
  89. }
  90. }
  91. "
  92. >
  93. <div class="checkLeft">
  94. <img src="../images/checkIcon2.png" alt="" />
  95. </div>
  96. <div class="checkRight">
  97. <p>云教练</p>
  98. <p class="checkSubTitle">乐团训练工具</p>
  99. </div>
  100. <div class="checTriangle" v-if="member">
  101. <img src="../images/checkGou.png" alt="" />
  102. </div>
  103. </div>
  104. <div
  105. v-if="
  106. isShowLeBao &&
  107. tenantId == 1 &&
  108. $route.query.team_status != 'PROGRESS'
  109. "
  110. class="checkBtn"
  111. :class="[
  112. leBao ? 'active' : '',
  113. leBaoDisabled ? 'disabled' : '',
  114. ]"
  115. @click.prevent="
  116. () => {
  117. if (leBaoDisabled) return;
  118. leBao = !leBao;
  119. if (leBao && form.leBaoList.length < 0) {
  120. form.leBaoList = [];
  121. form.leBaoList.push({});
  122. }
  123. }
  124. "
  125. >
  126. <div class="checkLeft">
  127. <img src="../images/checkIcon3.png" alt="" />
  128. </div>
  129. <div class="checkRight">
  130. <p>乐保</p>
  131. <p class="checkSubTitle">乐器维修保养</p>
  132. </div>
  133. <div class="checTriangle" v-if="leBao">
  134. <img src="../images/checkGou.png" alt="" />
  135. </div>
  136. </div>
  137. <div
  138. class="checkBtn"
  139. :class="[
  140. teamActive ? 'active' : '',
  141. teamActiveDisabled ? 'disabled' : '',
  142. ]"
  143. @click.prevent="
  144. () => {
  145. if (teamActiveDisabled) return;
  146. teamActive = !teamActive;
  147. if (teamActive && form.activeList.length < 0) {
  148. form.activeList = [];
  149. form.activeList.push({});
  150. }
  151. }
  152. "
  153. >
  154. <div class="checkLeft">
  155. <img src="../images/checkIcon4.png" alt="" />
  156. </div>
  157. <div class="checkRight">
  158. <p>小课</p>
  159. <p class="checkSubTitle">创建活动课程方案</p>
  160. </div>
  161. <div class="checTriangle" v-if="teamActive">
  162. <img src="../images/checkGou.png" alt="" />
  163. </div>
  164. </div>
  165. </div>
  166. </div>
  167. <div class="wall" style="height: 184px" v-if="isField"></div>
  168. <div class="coreList">
  169. <payTeamCourse
  170. :form="form"
  171. :charges="charges"
  172. :courseUnitPriceSettingsByType="
  173. organizationCourseUnitPriceSettingsByType
  174. "
  175. v-if="teamCourse"
  176. @create="addExtraClass"
  177. @remove="removeExtraClass"
  178. @moneyChange="syncAllMoney"
  179. @priceChange="priceChange"
  180. />
  181. <payMember
  182. ref="payMember"
  183. :memberRankList="memberRankList"
  184. @moneyChange="syncAllMoney"
  185. @priceChange="priceChange"
  186. :rulesForm="rulesForm"
  187. :organId="organId"
  188. :showAutoActivationFlag="showAutoActivationFlag"
  189. :form="form"
  190. v-if="member"
  191. />
  192. <payLeBao :form="form" v-if="leBao" :leBaoInfo="leBaoInfo" />
  193. <payTeamActive
  194. :form="form"
  195. v-if="teamActive"
  196. :activeList="activeList"
  197. @create="addActive"
  198. @remove="removeActive"
  199. />
  200. <paySchoolInfo
  201. :form="form"
  202. :courseUnitPriceSettingsByType="
  203. organizationCourseUnitPriceSettingsByType
  204. "
  205. :teamCourse="teamCourse"
  206. :member="member"
  207. :teamActive="teamActive"
  208. :leBao="leBao"
  209. @setAllTotal="setAllTotal"
  210. v-if="$route.query.payUserType == 'SCHOOL'"
  211. />
  212. <backMoney
  213. v-if="
  214. $route.query.payUserType == 'SCHOOL' &&
  215. form.currentTotalAmount > 0
  216. "
  217. :form="form"
  218. />
  219. </div>
  220. <div
  221. class="teamCourseList coreList"
  222. v-if="$route.query.payUserType == 'STUDENT'"
  223. >
  224. <div class="coreTitle">
  225. <p>基础信息设置</p>
  226. </div>
  227. <el-row :gutter="20">
  228. <el-col style="width: 430px">
  229. <el-form-item
  230. prop="paymentDate"
  231. :rules="[
  232. {
  233. required: true,
  234. message: '请选择缴费时间',
  235. trigger: 'blur',
  236. },
  237. ]"
  238. ref="paymentDate"
  239. >
  240. <template slot="label">
  241. <p style="position: relative">
  242. <span style="color: #f56c6c; margin-right: 4px">*</span>
  243. 缴费时间
  244. <el-tooltip placement="top" popper-class="mTooltip">
  245. <div slot="content">在该时间段内学员才可缴费</div>
  246. <i
  247. class="el-icon-question"
  248. style="
  249. font-size: 18px;
  250. color: #f56c6c;
  251. position: relative;
  252. top: 2px;
  253. "
  254. ></i>
  255. </el-tooltip>
  256. </p>
  257. </template>
  258. <el-date-picker
  259. v-model="form.paymentDate"
  260. type="daterange"
  261. style="width: 280px"
  262. :picker-options="{ firstDayOfWeek: 1 }"
  263. value-format="yyyy-MM-dd"
  264. range-separator="-"
  265. start-placeholder="开始日期"
  266. end-placeholder="结束日期"
  267. >
  268. </el-date-picker>
  269. </el-form-item>
  270. </el-col>
  271. <el-col style="width: 430px">
  272. <!-- :rules="[
  273. {
  274. required: true,
  275. message: '请选择缴费时间',
  276. trigger: 'blur',
  277. },
  278. ]" -->
  279. <el-form-item prop="isShowSalePrice" ref="isShowSalePrice">
  280. <template slot="label">
  281. <p style="position: relative">
  282. <!-- <span style="color: #f56c6c; margin-right: 4px">*</span> -->
  283. 是否展示售价
  284. <!-- <el-tooltip placement="top" popper-class="mTooltip">
  285. <div slot="content">在该时间段内学员才可缴费</div>
  286. <i
  287. class="el-icon-question"
  288. style="
  289. font-size: 18px;
  290. color: #f56c6c;
  291. position: relative;
  292. top: 2px;
  293. "
  294. ></i>
  295. </el-tooltip> -->
  296. </p>
  297. </template>
  298. <el-select v-model="form.isShowSalePrice">
  299. <el-option label="是" :value="true"> </el-option>
  300. <el-option label="否" :value="false"> </el-option>
  301. </el-select>
  302. </el-form-item>
  303. </el-col>
  304. </el-row>
  305. <el-row>
  306. <el-col class="memoWrap">
  307. <el-form-item
  308. class="memoWrapItem"
  309. prop="memo"
  310. :rules="[
  311. {
  312. required: true,
  313. message: '请输入备注',
  314. trigger: 'blur',
  315. },
  316. ]"
  317. ref="memo"
  318. >
  319. <template slot="label">
  320. <p style="position: relative">
  321. <span style="color: #f56c6c; margin-right: 4px">*</span>
  322. 备注
  323. <el-tooltip placement="top" popper-class="mTooltip">
  324. <div slot="content">本次缴费的内容描述</div>
  325. <i
  326. class="el-icon-question"
  327. style="
  328. font-size: 18px;
  329. color: #f56c6c;
  330. position: relative;
  331. top: 2px;
  332. "
  333. ></i>
  334. </el-tooltip>
  335. </p>
  336. </template>
  337. <el-input
  338. style="width: 100%"
  339. :rows="3"
  340. v-model="form.memo"
  341. type="textarea"
  342. maxlength="50"
  343. show-word-limit
  344. ></el-input>
  345. </el-form-item>
  346. </el-col>
  347. </el-row>
  348. </div>
  349. </el-form>
  350. <div
  351. v-if="
  352. !teamCourse &&
  353. !member &&
  354. !leBao &&
  355. !teamActive &&
  356. $route.query.team_status == 'PROGRESS'
  357. "
  358. >
  359. <empty desc="暂无缴费项目配置" />
  360. </div>
  361. <div v-else style="text-align: center">
  362. <el-button class="submitBtn" @click="submitForm">确认</el-button>
  363. </div>
  364. <!-- <div style="text-align: center">
  365. <el-button class="submitBtn" @click="submitForm">确认</el-button>
  366. </div> -->
  367. </div>
  368. </div>
  369. </div>
  370. <el-dialog
  371. title="报名声部预览"
  372. :visible.sync="dialogSubjectVisible"
  373. width="400px"
  374. class="subjectPreview"
  375. v-if="dialogSubjectVisible"
  376. >
  377. <el-tabs v-model="activeName" type="card">
  378. <el-tab-pane
  379. :label="subject.subName"
  380. lazy
  381. v-for="(subject, index) in dialogSubjectList"
  382. :key="index"
  383. :name="subject.subjectId.toString()"
  384. style="max-height: 500px; overflow-y: auto"
  385. >
  386. <subject-preview
  387. :subjectId="subject.subjectId"
  388. :preViewData="preViewData"
  389. ></subject-preview>
  390. </el-tab-pane>
  391. </el-tabs>
  392. <div>
  393. <el-button
  394. style="width: 100%; border-radius: 0; line-height: 30px"
  395. size="medium"
  396. type="primary"
  397. @click="onSubmit"
  398. >确认提交</el-button
  399. >
  400. </div>
  401. </el-dialog>
  402. </div>
  403. </template>
  404. <script>
  405. import payTeamCourse from "../modals/payTeamCourse";
  406. import payMember from "../modals/payMember";
  407. import payLeBao from "../modals/payLeBao";
  408. import payTeamActive from "../modals/payTeamActive";
  409. import paySchoolInfo from "../modals/paySchoolInfo";
  410. import backMoney from "../modals/backMoney";
  411. import numeral from "numeral";
  412. import dayjs from "dayjs";
  413. import subjectPreview from "@/views/resetTeaming/modals/subject-preview";
  414. import {
  415. chargeTypeList,
  416. musicGroupOrganizationCourseSettingsQueryPage,
  417. } from "@/api/specialSetting";
  418. import { getSysTenantConfig } from "@/views/courseRulersManager/api";
  419. import { sysConfigList } from "@/api/generalSettings";
  420. import {
  421. queryByMusicGroupOrganizationCourseSettingsId,
  422. getAllmemberRank,
  423. musicGroupcreateCalender,
  424. musicGroupresetCalender,
  425. getAutoActivationFlag,
  426. } from "../api";
  427. import {
  428. getMusicGroupPaymentCalenderDetail,
  429. findMusicGroupSubjectInfo,
  430. getAgreement,
  431. } from "@/api/buildTeam";
  432. import { vipGroupActivity } from "@/api/vipSeting";
  433. export default {
  434. components: {
  435. payTeamCourse,
  436. payMember,
  437. payLeBao,
  438. payTeamActive,
  439. subjectPreview,
  440. paySchoolInfo,
  441. backMoney,
  442. },
  443. data() {
  444. return {
  445. form: {
  446. paymentType: "",
  447. memo: "",
  448. eclass: [],
  449. memberList: [
  450. {
  451. period: "",
  452. num: "",
  453. name: "",
  454. actualAmount: "",
  455. memberRankSettingId: "",
  456. optionalFlag: null,
  457. autoActivationFlag: false,
  458. },
  459. ],
  460. leBaoList: [],
  461. activeList: [],
  462. teacherFeeList: [],
  463. isShowMemberForPay: true,
  464. isShowMusicInsuranceForPay: true,
  465. isShowVipCourseForPay: true,
  466. isShowMusicCourseForPay: true,
  467. leixing: "1",
  468. isShowSalePrice: true,
  469. calenderFeeJson: {
  470. discountTotal: "",
  471. allTotal: "",
  472. sutdentNumber: "",
  473. },
  474. calenderFeeType: "STUDENT",
  475. musicGroupCalenderRefundPeriods: [{ refundDate: "", refundAmount: "" }],
  476. currentTotalAmount: 0,
  477. contractUrl: "",
  478. },
  479. teamCourse: false,
  480. member: false,
  481. teamActive: false,
  482. leBao: false,
  483. memberDisabled: false,
  484. teamCourseDisabled: false,
  485. teamActiveDisabled: false,
  486. leBaoDisabled: false,
  487. organizationCourseUnitPriceSettings: null,
  488. baseInfo: null,
  489. courseViewType: null,
  490. charges: null, // 乐团收费类型对应的收费方式
  491. memberRankList: [],
  492. organId: null,
  493. leBaoInfo: null,
  494. isShowLeBao: false,
  495. isSetCourseSettingsId: false,
  496. activeList: [{}],
  497. submitList: [],
  498. organizationCourseUnitPriceSettingsByType: null,
  499. rulesForm: {
  500. minMonthFee: null,
  501. maxMonthFee: null,
  502. minQuarterlyFee: null,
  503. maxQuarterlyFee: null,
  504. minHalfYearFee: null,
  505. maxHalfYearFee: null,
  506. minYearFee: null,
  507. maxYearFee: null,
  508. },
  509. dialogSubjectVisible: false, // 预览
  510. dialogSubjectList: [],
  511. activeName: null,
  512. preViewData: {},
  513. tenantId: null,
  514. isField: false,
  515. showAutoActivationFlag: false,
  516. initDetail: false,
  517. };
  518. },
  519. mounted() {
  520. let tenantConfig = sessionStorage.getItem("tenantConfig");
  521. tenantConfig = tenantConfig ? JSON.parse(tenantConfig) : {};
  522. if (tenantConfig.tenantId && tenantConfig.tenantId != "undefined") {
  523. this.tenantId = tenantConfig.tenantId;
  524. }
  525. this.organizationCourseUnitPriceSettings = JSON.parse(
  526. localStorage.getItem("organizationCourseUnitPriceSettings")
  527. );
  528. this.baseInfo = JSON.parse(localStorage.getItem("payMusicBase"));
  529. // 判断乐团状态 缴费类型
  530. window.addEventListener("scroll", this.getScroll);
  531. this.init();
  532. },
  533. beforeDestroy() {
  534. window.removeEventListener("scroll", this.getScroll);
  535. },
  536. methods: {
  537. async init() {
  538. this.organId = this.musicGroup?.organId;
  539. this.courseViewType = this.baseInfo?.musicGroup?.courseViewType;
  540. if (
  541. this.courseViewType != 2 &&
  542. this.$route.query.team_status == "DRAFT"
  543. ) {
  544. // 课程团的创建缴费
  545. this.teamCourse = true;
  546. // 现在课程团不在
  547. // this.teamCourseDisabled = true;
  548. this.form.paymentType = "MUSIC_APPLY";
  549. } else if (
  550. this.courseViewType == 2 &&
  551. this.$route.query.team_status == "DRAFT"
  552. ) {
  553. // 会员团的创建缴费
  554. this.member = true;
  555. this.memberDisabled = true;
  556. } else if (this.$route.query.team_status == "PROGRESS") {
  557. this.leBao = false;
  558. this.leBaoDisabled = true;
  559. }
  560. if (this.$route.query.payUserType == "SCHOOL") {
  561. // this.member = false;
  562. // this.memberDisabled = true;
  563. this.leBao = false;
  564. this.leBaoDisabled = true;
  565. // this.teamActive = false;
  566. // this.teamActiveDisabled = true;
  567. } else {
  568. }
  569. await this.getCharges(); // 续费的选择缴费类型
  570. await this.formatCourse(); // 临时加课的类型选择以及价格
  571. await this.getMemberList(); // 获取会员(团练保信息)
  572. await this.getLeBao(); // 获取乐保
  573. await this.getActive(); // 获取活动
  574. await this.getMemberRules();
  575. await this.getAgreement(); // 获取是否有正在启用得协议
  576. if (this.$route.query.calenderId) {
  577. // 说明是修改 查缴项目详情
  578. this.initDetail = true;
  579. await getMusicGroupPaymentCalenderDetail({
  580. id: this.$route.query.calenderId,
  581. }).then((res) => {
  582. if (res.code == 200) {
  583. if (res.data?.calender?.musicGroupOrganizationCourseSettingId) {
  584. this.form.leixing = "1";
  585. this.form.musicGroupOrganizationCourseSettingId =
  586. res.data?.calender?.musicGroupOrganizationCourseSettingId;
  587. } else {
  588. this.form.leixing = "2";
  589. }
  590. if (
  591. res.data?.calender?.startPaymentDate &&
  592. res.data?.calender?.deadlinePaymentDate
  593. ) {
  594. this.$set(this.form, "paymentDate", [
  595. res.data?.calender?.startPaymentDate,
  596. res.data?.calender?.deadlinePaymentDate,
  597. ]);
  598. }
  599. this.$set(
  600. this.form,
  601. "contractUrl",
  602. res.data?.calender?.contractUrl
  603. );
  604. this.$set(this.form, "memo", res.data?.calender?.memo);
  605. this.$set(
  606. this.form,
  607. "isShowMemberForPay",
  608. res.data?.calender?.paymentItemShowState?.isShowMemberForPay
  609. );
  610. this.$set(
  611. this.form,
  612. "isShowMusicInsuranceForPay",
  613. res.data?.calender?.paymentItemShowState
  614. ?.isShowMusicInsuranceForPay
  615. );
  616. this.$set(
  617. this.form,
  618. "isShowVipCourseForPay",
  619. res.data?.calender?.paymentItemShowState?.isShowVipCourseForPay
  620. );
  621. this.$set(
  622. this.form,
  623. "isShowSalePrice",
  624. res.data?.calender?.isShowSalePrice
  625. );
  626. this.$set(
  627. this.form,
  628. "isShowMusicCourseForPay",
  629. res.data?.calender?.paymentItemShowState?.isShowMusicCourseForPay
  630. );
  631. if (res.data.member) {
  632. // 团练保
  633. this.member = true;
  634. this.$set(this.form, "memberList", [{ ...res.data.member }]);
  635. }
  636. if (res.data.repair) {
  637. this.leBao = true;
  638. this.$set(this.form, "leBaoList", [{ ...res.data.repair }]);
  639. }
  640. if (res.data?.course?.length > 0) {
  641. this.$nextTick(() => {
  642. this.teamCourse = true;
  643. this.isSetCourseSettingsId = true;
  644. this.$set(this.form, "eclass", res.data?.course);
  645. this.initDetail = true;
  646. this.$set(
  647. this.form,
  648. "payUserType",
  649. res.data?.calender?.payUserType
  650. );
  651. this.$set(
  652. this.form,
  653. "calenderFeeType",
  654. res.data?.calender?.calenderFeeType
  655. );
  656. this.$set(
  657. this.form,
  658. "musicGroupCalenderRefundPeriods",
  659. res.data?.calenderRefundPeriods
  660. );
  661. let calenderFeeJson = res.data?.calender?.calenderFeeJson;
  662. if (calenderFeeJson) {
  663. calenderFeeJson = JSON.parse(calenderFeeJson);
  664. this.$set(this.form, "calenderFeeJson", calenderFeeJson);
  665. if (this.form.calenderFeeType == "TEACHER") {
  666. this.$set(
  667. this.form,
  668. "teacherFeeList",
  669. calenderFeeJson.teacherFeeList
  670. );
  671. }
  672. }
  673. });
  674. }
  675. if (res.data?.activity?.length > 0) {
  676. this.teamActive = true;
  677. this.$set(this.form, "activeList", res.data.activity);
  678. this.form.activeList.forEach((active) => {
  679. active.vipGroupCategoryNames = active.categoryName;
  680. });
  681. }
  682. }
  683. });
  684. }
  685. if (this.submitList.length > 0) {
  686. this.$bus.$emit("showguide", this.submitList);
  687. }
  688. },
  689. getActive() {
  690. return vipGroupActivity({
  691. organId: this.organId,
  692. rows: 10,
  693. page: 1,
  694. status: "PROGRESS",
  695. activityChannel: 1,
  696. enable: true,
  697. }).then((res) => {
  698. if (res.code == 200) {
  699. this.activeList = res.data.rows;
  700. if (this.activeList.length <= 0) {
  701. this.submitList.push("teamActive");
  702. // this.$bus.$emit("showguide", ["teamCourseFee"]);
  703. }
  704. }
  705. });
  706. },
  707. async getAgreement() {
  708. try {
  709. const res = await getAgreement();
  710. if (!res.data) {
  711. this.submitList.push("agreement");
  712. }
  713. } catch (e) {}
  714. },
  715. async getMemberRules() {
  716. try {
  717. const res = await sysConfigList({ group: "DEFAULT" });
  718. const paramName = "cloud_price_range";
  719. res.data.forEach((item) => {
  720. if (item.paramName == paramName) {
  721. const itemValue = item.paranValue
  722. ? JSON.parse(item.paranValue)
  723. : null;
  724. if (itemValue) {
  725. this.rulesForm = itemValue;
  726. }
  727. }
  728. });
  729. } catch (e) {
  730. console.log(e);
  731. }
  732. },
  733. async getLeBao() {
  734. try {
  735. const res = await getSysTenantConfig({ group: "MUSIC_REPAIR" });
  736. this.leBaoInfo = res.data;
  737. res.data.forEach((element) => {
  738. if (element.id == 188) {
  739. this.isShowLeBao = !!element.paranValue;
  740. }
  741. });
  742. // this.$forceUpdate()
  743. } catch (e) {
  744. console.log(e);
  745. }
  746. },
  747. async getMemberList() {
  748. try {
  749. const res = await getAllmemberRank({ isDefault: 0 });
  750. this.memberRankList = res.data;
  751. // 获取是否展示会员是否自动生效
  752. const memberRes = await getAutoActivationFlag();
  753. this.showAutoActivationFlag = memberRes.data;
  754. } catch (e) {
  755. console.log(e);
  756. }
  757. },
  758. async getCharges() {
  759. const organId = this.musicGroup?.organId;
  760. const chargeTypeId = this.musicGroup?.chargeTypeId;
  761. this.chargeTypeName = this.musicGroup?.chargeTypeName;
  762. try {
  763. const res = await musicGroupOrganizationCourseSettingsQueryPage({
  764. row: 9999,
  765. chargeTypeId,
  766. organId,
  767. });
  768. const ids = res.data.rows.map((item) => item.id);
  769. if (!ids.includes(this.form.musicGroupOrganizationCourseSettingId)) {
  770. this.$set(this.form, "musicGroupOrganizationCourseSettingId", null);
  771. }
  772. this.charges = res.data.rows;
  773. // this.charges =[];
  774. if (this.charges.length <= 0) {
  775. this.submitList.push("teamCourseType");
  776. } else {
  777. if (this.form.leixing == 1 && this.teamCourse) {
  778. this.$set(
  779. this.form,
  780. "musicGroupOrganizationCourseSettingId",
  781. this.charges[0].id
  782. );
  783. }
  784. }
  785. } catch (error) {}
  786. },
  787. goback() {
  788. let query = { ...this.$route.query };
  789. query.calenderId = null;
  790. if (query.type == "resetTeam") {
  791. this.$store.dispatch("delVisitedViews", this.$route);
  792. this.$router.push({
  793. path: "/business/resetTeaming",
  794. query,
  795. });
  796. } else if (query.type == "look") {
  797. this.$store.dispatch("delVisitedViews", this.$route);
  798. this.$router.push({
  799. path: "/business/resetTeaming",
  800. query,
  801. });
  802. } else if (
  803. query.type == "teamDraft" ||
  804. query.type == "feeAudit" ||
  805. query.type == "FEE_AUDIT_FAILED"
  806. ) {
  807. this.$store.dispatch("delVisitedViews", this.$route);
  808. this.$router.push({
  809. path: "/business/resetTeaming",
  810. query,
  811. });
  812. }
  813. },
  814. formatCourse() {
  815. // 格式化课程类型
  816. const organId = this.musicGroup?.organId;
  817. const chargeTypeId = this.musicGroup?.chargeTypeId;
  818. const _ = {};
  819. const list = (this.organizationCourseUnitPriceSettings || []).filter(
  820. (item) =>
  821. organId &&
  822. organId == item.organId &&
  823. chargeTypeId &&
  824. chargeTypeId == item.chargeTypeId
  825. );
  826. for (const item of list) {
  827. _[item.courseType] = item;
  828. }
  829. this.organizationCourseUnitPriceSettingsByType = _;
  830. return _;
  831. },
  832. priceChange(item, index) {
  833. const _ = [...this.form.eclass];
  834. const active =
  835. this.organizationCourseUnitPriceSettingsByType[item.courseType] || {};
  836. const price = Math.round(
  837. numeral(active.unitPrice || 1)
  838. .multiply(item.courseTotalMinuties || 1)
  839. .value()
  840. );
  841. item.courseCurrentPrice = price;
  842. item.courseOriginalPrice = price;
  843. _[index] = item;
  844. this.$set(this.form, "eclass", [..._]);
  845. this.syncAllMoney();
  846. },
  847. syncAllMoney() {
  848. let money = 0;
  849. let first = 0;
  850. let other = 0;
  851. let classs = this.form.eclass;
  852. for (const item of classs) {
  853. money += item.courseCurrentPrice;
  854. if (this.cycles && this.cycles.length) {
  855. if (item.isStudentOptional) {
  856. first += item.courseCurrentPrice;
  857. } else {
  858. const floorMoney = Math.floor(
  859. item.courseCurrentPrice / this.cycles.length
  860. );
  861. const remainder = item.courseCurrentPrice % this.cycles.length;
  862. first += floorMoney + remainder;
  863. other += floorMoney;
  864. }
  865. }
  866. }
  867. // if (!money) {
  868. // this.$set(this.cycle, "paymentAmount", undefined);
  869. // } else {
  870. // this.$set(this.cycle, "paymentAmount", money);
  871. // }
  872. // money += parseFloat(this.memberForm.memberPaymentAmount || 0);
  873. // this.money = money;
  874. return money;
  875. },
  876. addExtraClass() {
  877. this.form.eclass.push({});
  878. },
  879. addActive() {
  880. this.form.activeList.push({});
  881. },
  882. removeActive(index) {
  883. this.form.activeList[index] = null;
  884. this.$set(
  885. this.form,
  886. "activeList",
  887. this.form.activeList.filter((item) => !!item)
  888. );
  889. },
  890. removeExtraClass(index) {
  891. this.form.eclass[index] = null;
  892. this.$set(
  893. this.form,
  894. "eclass",
  895. this.form.eclass.filter((item) => !!item)
  896. );
  897. // this.form.eclass = this.form.eclass.filter((item) => !!item);
  898. },
  899. async onPreview() {
  900. // 开始预览
  901. const musicGroupId = this.$route.query.id;
  902. await findMusicGroupSubjectInfo({ musicGroupId: musicGroupId }).then(
  903. (res) => {
  904. if (res.code == 200) {
  905. this.dialogSubjectList = res.data.musicGroupSubjectPlans;
  906. // 默认预览第一个
  907. if (this.dialogSubjectList.length <= 0) {
  908. this.$message.error("请先设置声部信息");
  909. return;
  910. }
  911. this.activeName = this.dialogSubjectList[0].subjectId.toString();
  912. this.dialogSubjectVisible = true;
  913. } else {
  914. this.$message.warning("没有可预览的声部");
  915. }
  916. }
  917. );
  918. },
  919. submitForm() {
  920. this.$refs.form.validate(async (isok, obj) => {
  921. if (isok) {
  922. // 学校缴费没有预览
  923. if (this.$route.query.payUserType == "SCHOOL") {
  924. this.$confirm("是否创建缴费?", "提示", {
  925. confirmButtonText: "确定",
  926. cancelButtonText: "取消",
  927. type: "warning",
  928. })
  929. .then(() => {
  930. this.onSubmit();
  931. })
  932. .catch(() => {});
  933. } else {
  934. const preViewData = this.formatPreviewData();
  935. this.preViewData = preViewData;
  936. await this.onPreview();
  937. }
  938. } else {
  939. this.$nextTick(() => {
  940. this.scrollView(obj);
  941. });
  942. }
  943. });
  944. },
  945. onSubmit() {
  946. this.$refs.form.validate(async (isok) => {
  947. if (isok) {
  948. let obj = this.fommatDate();
  949. if (obj.payUserType == "SCHOOL") {
  950. let total = 0;
  951. this.form.musicGroupCalenderRefundPeriods.forEach((item) => {
  952. total += item.refundAmount * 1;
  953. });
  954. if (total != this.form.currentTotalAmount) {
  955. this.$message.error("付款金额与回款金额不一致,请重新设置");
  956. return;
  957. }
  958. }
  959. if (this.$route.query.calenderId) {
  960. obj.calenderId = this.$route.query.calenderId;
  961. try {
  962. const res = await musicGroupresetCalender(obj);
  963. if (res.code == 200) {
  964. this.$message.success("修改缴费成功");
  965. this.goback();
  966. }
  967. if (res.code == 207) {
  968. await this.$confirm(
  969. res.msg || `当前乐团存在未排课的缴费项目,请再次确认操作`,
  970. "提示",
  971. {
  972. type: "warning",
  973. }
  974. );
  975. obj.confirmCreate = true;
  976. await musicGroupresetCalender(obj);
  977. this.$message.success("修改缴费成功");
  978. this.goback();
  979. }
  980. } catch (e) {
  981. console.log(e);
  982. }
  983. } else {
  984. try {
  985. const res = await musicGroupcreateCalender(obj);
  986. if (res.code == 200) {
  987. this.$message.success("创建缴费成功");
  988. this.goback();
  989. }
  990. if (res.code == 207) {
  991. await this.$confirm(
  992. res.msg || `当前乐团存在未排课的缴费项目,请再次确认操作`,
  993. "提示",
  994. {
  995. type: "warning",
  996. }
  997. );
  998. obj.confirmCreate = true;
  999. await musicGroupcreateCalender(obj);
  1000. this.$message.success("创建缴费成功");
  1001. this.goback();
  1002. }
  1003. } catch (e) {
  1004. console.log(e);
  1005. }
  1006. }
  1007. }
  1008. });
  1009. },
  1010. scrollView(object) {
  1011. console.log(object);
  1012. for (const i in object) {
  1013. let dom = this.$refs[i];
  1014. // 这里是针对遍历的情况(多个输入框),取值为数组
  1015. if (Object.prototype.toString.call(dom) !== "[object Object]") {
  1016. dom = dom[0];
  1017. }
  1018. // 第一种方法(包含动画效果)
  1019. dom.$el.scrollIntoView({
  1020. // 滚动到指定节点
  1021. // 值有start,center,end,nearest,当前显示在视图区域中间
  1022. block: "center",
  1023. // 值有auto、instant,smooth,缓动动画(当前是慢速的)
  1024. behavior: "smooth",
  1025. });
  1026. break; // 跳出循环了
  1027. }
  1028. },
  1029. formatPreviewData() {
  1030. // 格式化预览数据
  1031. const form = this.form;
  1032. // 重置小班课数据
  1033. let tmpActiveList = form.activeList?.length > 0 ? form.activeList : [];
  1034. let activeList = [];
  1035. if (tmpActiveList.length > 0) {
  1036. tmpActiveList.forEach((active) => {
  1037. if (active.activityId) {
  1038. active.categoryName = active.vipGroupCategoryNames;
  1039. activeList.push(active);
  1040. }
  1041. });
  1042. }
  1043. let memberObj =
  1044. form.memberList?.length > 0 ? { ...form.memberList[0] } : null;
  1045. // 获取会员名称
  1046. if (memberObj) {
  1047. this.memberRankList.forEach((item) => {
  1048. if (item.id == memberObj.memberRankSettingId) {
  1049. memberObj.name = item.name;
  1050. }
  1051. });
  1052. }
  1053. // console.log(memberObj, 'memberObj', activeList)
  1054. let tempCourseList = form.eclass?.length > 0 ? form.eclass : [];
  1055. let courseList = [];
  1056. if (tempCourseList.length > 0) {
  1057. tempCourseList.forEach((course) => {
  1058. if (course.courseType) {
  1059. course.isStudentOptional = true;
  1060. courseList.push(course);
  1061. }
  1062. });
  1063. }
  1064. return {
  1065. payUserType: this.$route.query.payUserType,
  1066. musicGroup: this.musicGroup,
  1067. paymentCalender: {
  1068. calender: {
  1069. isShowSalePrice: form.isShowSalePrice,
  1070. },
  1071. activity: [...activeList], // 小班课
  1072. course: courseList, // 课程
  1073. member: memberObj, // 云教练
  1074. memberPrivilegesItemList: [], // 会员基本内容
  1075. repair:
  1076. form.leBaoList?.length > 0 &&
  1077. this.isShowLeBao &&
  1078. this.$route.query.team_status != "PROGRESS"
  1079. ? { ...form.leBaoList[0], optionalFlag: false }
  1080. : null, // 乐保
  1081. },
  1082. isShowMemberForPay: form.isShowMemberForPay,
  1083. isShowMusicInsuranceForPay: form.isShowMusicInsuranceForPay,
  1084. isShowVipCourseForPay: form.isShowVipCourseForPay,
  1085. isShowMusicCourseForPay: form.isShowMusicCourseForPay,
  1086. };
  1087. },
  1088. fommatDate() {
  1089. if (this.$route.query.payUserType == "STUDENT") {
  1090. return {
  1091. payUserType: this.$route.query.payUserType,
  1092. musicGroupOrganizationCourseSettingId:
  1093. this.form.musicGroupOrganizationCourseSettingId || null,
  1094. memo: this.form.memo,
  1095. startPaymentDate: this.form.paymentDate[0],
  1096. deadlinePaymentDate: this.form.paymentDate[1],
  1097. calenderActivityList:
  1098. this.form.activeList?.length > 0 ? this.form.activeList : null,
  1099. musicRepair:
  1100. this.form.leBaoList?.length > 0
  1101. ? { ...this.form.leBaoList[0] }
  1102. : null,
  1103. calenderMember:
  1104. this.form.memberList?.length > 0 &&
  1105. this.form.memberList[0]?.memberRankSettingId
  1106. ? { ...this.form.memberList[0] }
  1107. : null,
  1108. musicGroupPaymentCalenderCourseSettingsList:
  1109. this.form.eclass?.length > 0 ? this.form.eclass : null,
  1110. musicGroupId: this.$route.query.id,
  1111. paymentItemShowState: JSON.stringify({
  1112. isShowMemberForPay: this.form.isShowMemberForPay,
  1113. isShowMusicInsuranceForPay: this.form.isShowMusicInsuranceForPay,
  1114. isShowVipCourseForPay: this.form.isShowVipCourseForPay,
  1115. isShowMusicCourseForPay: this.form.isShowMusicCourseForPay,
  1116. }),
  1117. isShowSalePrice: this.form.isShowSalePrice,
  1118. };
  1119. } else {
  1120. let calenderFeeJson = this.form.calenderFeeJson;
  1121. if (this.form.calenderFeeType == "TEACHER") {
  1122. calenderFeeJson.teacherFeeList = this.form.teacherFeeList;
  1123. }
  1124. return {
  1125. payUserType: this.$route.query.payUserType,
  1126. musicGroupOrganizationCourseSettingId:
  1127. this.form.musicGroupOrganizationCourseSettingId || null,
  1128. memo: this.form.memo,
  1129. startPaymentDate: this.form.paymentDate[0],
  1130. deadlinePaymentDate: this.form.paymentDate[1],
  1131. calenderActivityList:
  1132. this.form.activeList?.length > 0 ? this.form.activeList : null,
  1133. musicRepair:
  1134. this.form.leBaoList?.length > 0
  1135. ? { ...this.form.leBaoList[0] }
  1136. : null,
  1137. calenderMember:
  1138. this.form.memberList?.length > 0 &&
  1139. this.form.memberList[0]?.memberRankSettingId
  1140. ? { ...this.form.memberList[0] }
  1141. : null,
  1142. musicGroupPaymentCalenderCourseSettingsList:
  1143. this.form.eclass?.length > 0 ? this.form.eclass : null,
  1144. musicGroupId: this.$route.query.id,
  1145. paymentItemShowState: JSON.stringify({
  1146. isShowMemberForPay: this.form.isShowMemberForPay,
  1147. isShowMusicInsuranceForPay: this.form.isShowMusicInsuranceForPay,
  1148. isShowVipCourseForPay: this.form.isShowVipCourseForPay,
  1149. isShowMusicCourseForPay: this.form.isShowMusicCourseForPay,
  1150. }),
  1151. calenderFeeType: this.form.calenderFeeType,
  1152. calenderFeeJson: JSON.stringify(calenderFeeJson),
  1153. musicGroupCalenderRefundPeriods:
  1154. this.form.musicGroupCalenderRefundPeriods,
  1155. currentTotalAmount: this.form.currentTotalAmount,
  1156. contractUrl: this.form.contractUrl,
  1157. };
  1158. }
  1159. },
  1160. getScroll() {
  1161. this.scrollTop =
  1162. window.pageYOffset ||
  1163. document.documentElement.scrollTop ||
  1164. document.body.scrollTop;
  1165. if (!!this.scrollTop && this.scrollTop >= 70) {
  1166. this.isField = true;
  1167. } else {
  1168. this.isField = false;
  1169. }
  1170. },
  1171. setAllTotal(val) {
  1172. this.form.calenderFeeJson.allTotal = val;
  1173. if(this.form.calenderFeeJson.discountTotal){
  1174. this.form.currentTotalAmount =
  1175. this.form.calenderFeeJson.allTotal -
  1176. this.form.calenderFeeJson.discountTotal;
  1177. }else{
  1178. this.form.currentTotalAmount =
  1179. this.form.calenderFeeJson.allTotal
  1180. }
  1181. this.$set(this.form, "currentTotalAmount", this.form.currentTotalAmount);
  1182. },
  1183. currentTotalAmount(val) {
  1184. this.$set(this.form, "currentTotalAmount", val);
  1185. },
  1186. },
  1187. watch: {
  1188. teamCourse(val) {
  1189. if (!val) {
  1190. this.$set(this.form, "eclass", [{}]);
  1191. this.$set(this.form, "leixing", "1");
  1192. this.$set(this.form, "musicGroupOrganizationCourseSettingId", null);
  1193. }
  1194. },
  1195. member(val) {
  1196. if (!val) {
  1197. this.$set(this.form, "memberList", [{}]);
  1198. }
  1199. },
  1200. teamActive(val) {
  1201. if (!val) {
  1202. this.$set(this.form, "activeList", [{}]);
  1203. }
  1204. },
  1205. leBao(val) {
  1206. if (!val) {
  1207. this.$set(this.form, "leBaoList", [{}]);
  1208. }
  1209. },
  1210. "form.eclass": {
  1211. handler(newValue,oldValue) {
  1212. let oldString = JSON.stringify(oldValue)
  1213. let newString = JSON.stringify(newValue)
  1214. if (this.initDetail || oldString == newString) {
  1215. this.initDetail = false;
  1216. return;
  1217. } else {
  1218. let arr = [];
  1219. newValue.forEach((item) => {
  1220. arr.push({
  1221. courseType: item.courseType,
  1222. teacherNumber: 0,
  1223. courseNumber: 0,
  1224. courseCurrentPrice: 0,
  1225. });
  1226. });
  1227. this.$set(this.form, "teacherFeeList", arr);
  1228. }
  1229. },
  1230. deep: true,
  1231. },
  1232. "form.currentTotalAmount"(val) {
  1233. // console.log(val,'form.currentTotalAmount');
  1234. // this.$forceUpdate()
  1235. },
  1236. async "form.musicGroupOrganizationCourseSettingId"(val) {
  1237. // && !this.rowDetail !this.$route.query.calenderId
  1238. if (val && !this.isSetCourseSettingsId) {
  1239. try {
  1240. const res = await queryByMusicGroupOrganizationCourseSettingsId({
  1241. id: val,
  1242. });
  1243. let CourseSettingDetail = res.data.map((course) => {
  1244. return {
  1245. ...course,
  1246. };
  1247. });
  1248. this.$set(this.form, "eclass", res.data);
  1249. // this.syncAllMoney();
  1250. } catch (error) {}
  1251. }
  1252. this.isSetCourseSettingsId = false;
  1253. },
  1254. "form.leixing"(val) {
  1255. this.cycles = [{}];
  1256. this.collapse = [0];
  1257. this.cycle = {};
  1258. if (val != "1") {
  1259. this.$set(
  1260. this.form,
  1261. "musicGroupOrganizationCourseSettingId",
  1262. undefined
  1263. );
  1264. }
  1265. // this.$set(this.cycle, "paymentAmount", undefined);
  1266. // this.$set(this.other, "memo", null);
  1267. if (val === "1" && !this.isSetCourseSettingsId) {
  1268. this.$set(this.form, "eclass", []);
  1269. } else if (val === "2") {
  1270. this.$set(this.form, "eclass", [{}]);
  1271. }
  1272. this.isSetCourseSettingsId = false;
  1273. },
  1274. },
  1275. computed: {
  1276. musicGroup() {
  1277. return this.baseInfo?.musicGroup;
  1278. },
  1279. },
  1280. };
  1281. </script>
  1282. <style lang="scss" scoped>
  1283. @import "~@/views/resetTeaming/modals/pay.scss";
  1284. .memoWrap {
  1285. // width: calc(100% - 860px);
  1286. width: 860px;
  1287. .memoWrapItem {
  1288. display: block;
  1289. ::v-deep .el-form-item__content {
  1290. display: inline-block;
  1291. width: calc(100% - 140px);
  1292. }
  1293. }
  1294. }
  1295. .Wall {
  1296. height: 15px;
  1297. background-color: #f2f2f2;
  1298. }
  1299. ::v-deep .el-form-item__label:before {
  1300. content: "" !important;
  1301. position: absolute;
  1302. color: transparent;
  1303. margin-right: 4px;
  1304. }
  1305. .payInfoWrap {
  1306. .submitBtn {
  1307. // width: 121px;
  1308. // height: 41px;
  1309. background: var(--color-primary);
  1310. border-radius: 7px;
  1311. // margin: 20px auto;
  1312. // line-height: 40px;
  1313. color: #fff;
  1314. text-align: center;
  1315. cursor: pointer;
  1316. }
  1317. .baseWrap {
  1318. padding: 20px;
  1319. background-color: #fff;
  1320. }
  1321. .baseWrapFixed {
  1322. top: 105px;
  1323. left: 210px; // 205
  1324. position: fixed;
  1325. background-color: #fff;
  1326. width: calc(100% - 220px);
  1327. z-index: 100;
  1328. padding: 20px;
  1329. box-shadow: rgba(0, 0, 0, 0.05) 0px 2px 3px 3px;
  1330. }
  1331. .left {
  1332. ::v-deep .el-checkbox {
  1333. padding: 8px 10px 7px 10px;
  1334. border-radius: 4px;
  1335. }
  1336. ::v-deep .el-checkbox .el-checkbox__inner {
  1337. border-radius: 50%;
  1338. border: 1px solid var(--color-primary);
  1339. width: 16px;
  1340. height: 16px;
  1341. &:after {
  1342. height: 8px;
  1343. left: 5px;
  1344. }
  1345. }
  1346. ::v-deep .el-checkbox__inner:hover {
  1347. background-color: var(--color-primary);
  1348. }
  1349. ::v-deep .el-checkbox.is-checked {
  1350. border-color: #fff;
  1351. color: #fff;
  1352. }
  1353. .payTitle {
  1354. display: flex;
  1355. flex-direction: row;
  1356. align-items: center;
  1357. font-size: 18px;
  1358. font-weight: 600;
  1359. color: #1a1a1a;
  1360. height: 25px;
  1361. margin-bottom: 15px;
  1362. p {
  1363. line-height: 25px;
  1364. }
  1365. .squrt {
  1366. width: 3px;
  1367. height: 16px;
  1368. background: var(--color-primary);
  1369. margin-right: 8px;
  1370. position: relative;
  1371. top: -1px;
  1372. border-radius: 2px;
  1373. }
  1374. .payContext {
  1375. color: var(--color-primary);
  1376. border: 1px solid var(--color-primary);
  1377. font-size: 14px;
  1378. line-height: 22px;
  1379. border-radius: 3px;
  1380. padding: 0 5px;
  1381. margin-left: 12px;
  1382. }
  1383. }
  1384. .checkWrap {
  1385. display: flex;
  1386. flex-direction: row;
  1387. justify-content: flex-start;
  1388. align-items: center;
  1389. .checkBtn.active {
  1390. border: 1px solid var(--color-primary);
  1391. }
  1392. .checkBtn {
  1393. position: relative;
  1394. background-color: #fefefe;
  1395. margin-right: 12px;
  1396. padding: 0 22px;
  1397. display: flex;
  1398. flex-direction: row;
  1399. align-items: center;
  1400. border-radius: 6px;
  1401. border: 1px solid #dfe8ec;
  1402. cursor: pointer;
  1403. height: 84px;
  1404. width: 251px;
  1405. overflow: hidden;
  1406. &:hover {
  1407. border: 1px solid var(--color-primary);
  1408. }
  1409. p {
  1410. height: 41px;
  1411. line-height: 41px;
  1412. }
  1413. .checkLeft {
  1414. width: 60px;
  1415. height: 60px;
  1416. margin-right: 16px;
  1417. img {
  1418. width: 100%;
  1419. }
  1420. }
  1421. .checkRight {
  1422. p {
  1423. height: 26px;
  1424. font-size: 19px;
  1425. font-weight: 600;
  1426. color: #1a1a1a;
  1427. line-height: 26px;
  1428. }
  1429. .checkSubTitle {
  1430. font-size: 14px;
  1431. font-weight: 400;
  1432. color: var(--color-primary);
  1433. line-height: 20px;
  1434. }
  1435. }
  1436. .checTriangle {
  1437. border-bottom: 44px solid var(--color-primary);
  1438. border-left: 44px solid transparent;
  1439. position: absolute;
  1440. right: 0;
  1441. bottom: 0;
  1442. width: 0;
  1443. height: 0;
  1444. img {
  1445. width: 19px;
  1446. height: 16px;
  1447. position: absolute;
  1448. top: 22px;
  1449. right: 5px;
  1450. }
  1451. }
  1452. }
  1453. // .checkBtn.disabled {
  1454. // cursor: not-allowed;
  1455. // color: #d9d9d9;
  1456. // background-color: #f2f2f2 !important;
  1457. // ::v-deep .el-checkbox__inner {
  1458. // background-color: #fff !important;
  1459. // border-color: #d9d9d9;
  1460. // color: #fff;
  1461. // &::after {
  1462. // border-color: #d9d9d9;
  1463. // }
  1464. // }
  1465. // &:hover {
  1466. // background-color: #f2f2f2 !important;
  1467. // color: #d9d9d9;
  1468. // ::v-deep .el-checkbox__inner {
  1469. // background-color: #fff !important;
  1470. // }
  1471. // }
  1472. // }
  1473. }
  1474. }
  1475. }
  1476. .coreList {
  1477. // margin: 14px;
  1478. }
  1479. </style>
  1480. <style lang="less" scoped>
  1481. ::v-deep .el-dialog__body {
  1482. padding: 15px 0 0;
  1483. }
  1484. .empty {
  1485. background-color: #fff;
  1486. padding-bottom: 20px;
  1487. }
  1488. </style>