payInfo.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737
  1. <template>
  2. <div>
  3. <el-alert
  4. title="缴费信息"
  5. type="info"
  6. :closable="false"
  7. class="baseMsg"
  8. ></el-alert>
  9. <el-form
  10. :model="payForm"
  11. label-width="130px"
  12. label-position="right"
  13. :inline="true"
  14. ref="form"
  15. >
  16. <div v-if="!activeType">
  17. <el-row>
  18. <el-form-item
  19. label="课程类型"
  20. prop="courseType"
  21. :rules="[
  22. { required: true, message: '请选择课程类型', trigger: 'change' }
  23. ]"
  24. >
  25. <el-select
  26. style="width: 400px !important"
  27. v-model.trim="payForm.courseType"
  28. placeholder="请选择课程类型"
  29. @change="changeCourseType"
  30. clearable
  31. :disabled="isDisabled"
  32. >
  33. <el-option label="VIP课" value="VIP"></el-option>
  34. <el-option label="网管课" value="PRACTICE"></el-option>
  35. </el-select>
  36. </el-form-item>
  37. </el-row>
  38. <el-row>
  39. <el-form-item
  40. :rules="[
  41. { required: true, message: '请选择课程形式', trigger: 'change' }
  42. ]"
  43. label="课程形式"
  44. prop="vipGroupCategoryIdList"
  45. v-if="payForm.courseType == 'VIP'"
  46. >
  47. <el-select
  48. v-model.trim="payForm.vipGroupCategoryIdList"
  49. style="width: 400px !important"
  50. @visible-change="$forceUpdate()"
  51. @change="changeCateFee"
  52. clearable
  53. :disabled="isDisabled"
  54. >
  55. <el-option
  56. v-for="item in selects.vipGroupCategory"
  57. :key="item.id"
  58. :value="item.id"
  59. :label="item.name"
  60. ></el-option>
  61. </el-select>
  62. </el-form-item>
  63. </el-row>
  64. <!-- <el-row v-if="activityChannel != 1">
  65. <el-form-item
  66. :rules="[
  67. { required: true, message: '请选择上课模式', trigger: 'change' },
  68. ]"
  69. label="上课模式"
  70. prop="teachMode"
  71. :validate-on-rule-change="true"
  72. v-if="payForm.courseType == 'VIP'"
  73. >
  74. <el-select
  75. style="width: 400px !important"
  76. v-model.trim="payForm.teachMode"
  77. placeholder="请选择上课模式"
  78. clearable
  79. :disabled="isDisabled || unOnlinePay"
  80. >
  81. <el-option label="线上" value="0"></el-option>
  82. <el-option label="线下" value="1"></el-option>
  83. <el-option label="不限制" value="-1"></el-option>
  84. </el-select>
  85. </el-form-item>
  86. </el-row> -->
  87. <!-- <el-row v-if="activityChannel != 1">
  88. <el-form-item
  89. label="课程调整方式"
  90. prop="allowOnlineToOffline"
  91. v-if="payForm.courseType == 'VIP'"
  92. :rules="[
  93. { required: true, message: '课程调整方式', trigger: 'change' },
  94. ]"
  95. >
  96. <el-select
  97. style="width: 400px !important"
  98. v-model.trim="payForm.allowOnlineToOffline"
  99. placeholder="请选择课程调整方式"
  100. clearable
  101. :disabled="isDisabled || unOnlinePay"
  102. >
  103. <el-option
  104. :label="item.label"
  105. :value="item.value"
  106. v-for="item in vipResetTypeList"
  107. :key="item.value"
  108. ></el-option>
  109. </el-select>
  110. </el-form-item>
  111. </el-row> -->
  112. <el-row>
  113. <el-form-item
  114. label="单课时长"
  115. prop="singleCourseTime"
  116. :rules="[
  117. { required: true, message: '请输入单课时长', trigger: 'blur' }
  118. ]"
  119. >
  120. <el-input
  121. v-model.number="payForm.singleCourseTime"
  122. type="number"
  123. style="width: 400px"
  124. placeholder="单课时长"
  125. :disabled="isDisabled"
  126. >
  127. <template slot="append"
  128. >分钟</template
  129. >
  130. </el-input>
  131. </el-form-item>
  132. </el-row>
  133. <el-row v-if="activityChannel != 1">
  134. <el-form-item
  135. label="课时范围"
  136. prop="fixedCourseNumFlag"
  137. :rules="[
  138. {
  139. required: true,
  140. message: '请选择课时范围',
  141. trigger: 'change'
  142. }
  143. ]"
  144. >
  145. <el-select
  146. style="width: 400px !important"
  147. v-model.trim="payForm.fixedCourseNumFlag"
  148. placeholder="请选择课时范围"
  149. clearable
  150. :disabled="isDisabled"
  151. @change="checkFixedCourseNumFlag"
  152. >
  153. <el-option label="固定课时" :value="true"></el-option>
  154. <el-option label="区间课时" :value="false"></el-option>
  155. </el-select>
  156. </el-form-item>
  157. </el-row>
  158. <el-row
  159. v-if="payForm.fixedCourseNumFlag === false && activityChannel != 1"
  160. >
  161. <el-form-item
  162. prop="minCourseNum"
  163. label="最小课时数"
  164. :rules="[
  165. { required: true, message: '请输入最小课时数', trigger: 'blur' },
  166. { validator: this.validateCom, trigger: 'blur' },
  167. { validator: this.validateMin, trigger: 'blur' }
  168. ]"
  169. >
  170. <el-input
  171. @change="handleMinChange"
  172. v-model.number="payForm.minCourseNum"
  173. type="number"
  174. style="width: 400px"
  175. placeholder="最小课时数"
  176. :disabled="isDisabled"
  177. >
  178. <template slot="append"
  179. >课时</template
  180. >
  181. </el-input>
  182. </el-form-item>
  183. </el-row>
  184. <el-row
  185. v-if="payForm.fixedCourseNumFlag === false && activityChannel != 1"
  186. >
  187. <el-form-item
  188. prop="maxCourseNum"
  189. label="最大课时数"
  190. :rules="[
  191. { required: true, message: '请输入最大课时数', trigger: 'blur' },
  192. { validator: this.validateCom, trigger: 'blur' },
  193. { validator: this.validateMax, trigger: 'blur' }
  194. ]"
  195. >
  196. <el-input
  197. @change="handleMaxChange"
  198. v-model.number="payForm.maxCourseNum"
  199. type="number"
  200. style="width: 400px"
  201. placeholder="最大课时数"
  202. :disabled="isDisabled"
  203. >
  204. <template slot="append"
  205. >课时</template
  206. >
  207. </el-input>
  208. </el-form-item>
  209. </el-row>
  210. <!-- 乐团小课时才显示课时数 -->
  211. <el-row v-if="activityChannel == 1 || payForm.fixedCourseNumFlag">
  212. <el-form-item
  213. prop="minCourseNum"
  214. label="课时数"
  215. :rules="[
  216. { required: true, message: '请输入课时数', trigger: 'blur' }
  217. ]"
  218. >
  219. <el-input
  220. @change="handleMinChange"
  221. v-model.number="payForm.minCourseNum"
  222. type="number"
  223. style="width: 400px"
  224. placeholder="课时数"
  225. :disabled="isDisabled"
  226. >
  227. <template slot="append"
  228. >课时</template
  229. >
  230. </el-input>
  231. </el-form-item>
  232. </el-row>
  233. </div>
  234. <div v-else>
  235. <el-row>
  236. <el-form-item
  237. label="会员名称"
  238. prop="memberRankId"
  239. :rules="[
  240. { required: true, message: '请选择会员名称', trigger: 'change' }
  241. ]"
  242. >
  243. <el-select
  244. style="width: 400px !important"
  245. v-model.trim="payForm.memberRankId"
  246. placeholder="请选择会员名称"
  247. clearable
  248. :disabled="isDisabled"
  249. >
  250. <el-option
  251. v-for="(item, index) in remberList"
  252. :key="index"
  253. :label="item.name"
  254. :value="item.id"
  255. ></el-option>
  256. </el-select>
  257. </el-form-item>
  258. </el-row>
  259. <el-row>
  260. <el-form-item
  261. label="会员周期"
  262. prop="periodEnum"
  263. :rules="[
  264. { required: true, message: '请选择会员周期', trigger: 'change' }
  265. ]"
  266. >
  267. <el-select
  268. style="width: 400px !important"
  269. v-model.trim="payForm.periodEnum"
  270. placeholder="请选择会员周期"
  271. clearable
  272. :disabled="isDisabled"
  273. >
  274. <el-option
  275. :label="item.label"
  276. :value="item.value"
  277. v-for="item in memberEnumList"
  278. :key="item.value"
  279. ></el-option>
  280. </el-select>
  281. </el-form-item>
  282. </el-row>
  283. </div>
  284. <el-row v-if="activityChannel != 1 && !payForm.fixedCourseNumFlag">
  285. <!-- {
  286. pattern: /^100$|^(\d|[1-9]\d)(\.\d{1,8})*$/,
  287. message: '请输入正确的折扣',
  288. } -->
  289. <el-form-item
  290. prop="discount"
  291. label="折扣值"
  292. :rules="[
  293. { required: true, message: '请输入折扣值', trigger: 'blur' }
  294. ]"
  295. >
  296. <el-input
  297. v-model.number="payForm.discount"
  298. type="number"
  299. style="width: 400px"
  300. placeholder="折扣值"
  301. :disabled="isDisabled"
  302. >
  303. <template slot="append"
  304. >%</template
  305. >
  306. </el-input>
  307. </el-form-item>
  308. </el-row>
  309. <!-- 活动价格 -->
  310. <el-row v-if="payForm.fixedCourseNumFlag || activeType">
  311. <el-col>
  312. <el-form-item
  313. label="活动售价"
  314. prop="marketPrice"
  315. :rules="[
  316. {
  317. required: true,
  318. message: '请选输入活动售价',
  319. trigger: 'blur'
  320. },
  321. {
  322. pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  323. message: '请输入正确的金额'
  324. }
  325. ]"
  326. >
  327. <el-input
  328. style="width: 400px"
  329. type="number"
  330. v-model.trim="payForm.marketPrice"
  331. :disabled="isDisabled"
  332. >
  333. <template slot="append"
  334. >元</template
  335. >
  336. </el-input>
  337. <el-tooltip placement="top" popper-class="mTooltip">
  338. <div slot="content">
  339. 该字段仅用于关联的营销活动中本方案的销售价格,后台、老师端为学员创建课程不受此价格影响
  340. </div>
  341. <i
  342. class="el-icon-question micon el-tooltip"
  343. style="font-size: 18px; color: #f56c6c"
  344. ></i>
  345. </el-tooltip>
  346. </el-form-item>
  347. </el-col>
  348. <el-col>
  349. <el-form-item
  350. label="活动原价"
  351. prop="originalPrice"
  352. :rules="[
  353. { required: true, message: '请选输入活动原价', trigger: 'blur' },
  354. {
  355. pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
  356. message: '请输入正确的金额'
  357. }
  358. ]"
  359. >
  360. <el-input
  361. style="width: 400px"
  362. type="number"
  363. v-model.trim="payForm.originalPrice"
  364. :disabled="isDisabled"
  365. >
  366. <template slot="append"
  367. >元</template
  368. >
  369. </el-input>
  370. </el-form-item>
  371. </el-col>
  372. </el-row>
  373. <el-row v-if="activityChannel != 1">
  374. <el-form-item prop="fullMinusCourseTimes" label="满赠达标数量">
  375. <el-input
  376. v-model.number="payForm.fullMinusCourseTimes"
  377. type="number"
  378. style="width: 400px"
  379. @input="changeFullMinus"
  380. placeholder="满赠达标数量"
  381. :disabled="isDisabled"
  382. >
  383. </el-input>
  384. </el-form-item>
  385. </el-row>
  386. <el-row v-if="activityChannel != 1">
  387. <el-col>
  388. <el-form-item
  389. label="赠送类型"
  390. prop="giveCourseType"
  391. v-if="payForm.fullMinusCourseTimes"
  392. :rules="[
  393. { required: true, message: '请选择赠送类型', trigger: 'change' }
  394. ]"
  395. >
  396. <el-select
  397. v-model.trim="payForm.giveCourseType"
  398. placeholder="请选择赠送类型"
  399. style="width: 400px !important"
  400. @change="changeGiveCourseType"
  401. clearable
  402. :disabled="isDisabled"
  403. >
  404. <el-option label="VIP课" value="VIP"></el-option>
  405. <el-option label="网管课" value="PRACTICE"></el-option>
  406. <el-option label="会员" value="MEMBER"></el-option>
  407. </el-select>
  408. </el-form-item>
  409. </el-col>
  410. <el-col>
  411. <el-form-item
  412. label="赠课形式"
  413. prop="giveCategoryId"
  414. v-if="
  415. payForm.giveCourseType == 'VIP' && payForm.fullMinusCourseTimes
  416. "
  417. :rules="[
  418. { required: true, message: '请选择赠课形式', trigger: 'change' }
  419. ]"
  420. >
  421. <el-select
  422. style="width: 400px !important"
  423. v-model.trim="payForm.giveCategoryId"
  424. @visible-change="$forceUpdate()"
  425. clearable
  426. @change="chageSalary"
  427. :disabled="isDisabled"
  428. >
  429. <el-option
  430. v-for="item in selects.vipGroupCategory"
  431. :key="item.id"
  432. :value="item.id"
  433. :label="item.name"
  434. ></el-option>
  435. </el-select>
  436. </el-form-item>
  437. </el-col>
  438. <!-- <el-form-item
  439. label="赠课模式"
  440. prop="giveTeachMode"
  441. v-if="payForm.giveCourseType == 'VIP' && payForm.fullMinusCourseTimes"
  442. :rules="[
  443. { required: true, message: '请选择赠课模式', trigger: 'change' },
  444. ]"
  445. >
  446. <el-select
  447. style="width: 400px !important"
  448. v-model.trim="payForm.giveTeachMode"
  449. placeholder="请选择赠课模式"
  450. clearable
  451. :disabled="isDisabled || unOnlinePay"
  452. >
  453. <el-option label="线上" value="0"></el-option>
  454. <el-option label="线下" value="1"></el-option>
  455. <el-option label="不限制" value="-1"></el-option>
  456. </el-select>
  457. </el-form-item>
  458. <el-col>
  459. <el-form-item
  460. label="赠课调整方式"
  461. prop="giveAllowOnlineToOffline"
  462. v-if="
  463. payForm.giveCourseType == 'VIP' && payForm.fullMinusCourseTimes
  464. "
  465. :rules="[
  466. {
  467. required: true,
  468. message: '请选择赠课调整方式',
  469. trigger: 'change',
  470. },
  471. ]"
  472. >
  473. <el-select
  474. style="width: 400px !important"
  475. v-model.trim="payForm.giveAllowOnlineToOffline"
  476. placeholder="请选择赠课调整方式"
  477. clearable
  478. :disabled="isDisabled || unOnlinePay"
  479. >
  480. <el-option
  481. :label="item.label"
  482. :value="item.value"
  483. v-for="item in vipResetTypeList"
  484. :key="item.label"
  485. ></el-option>
  486. </el-select>
  487. </el-form-item>
  488. </el-col> -->
  489. </el-row>
  490. <el-form-item
  491. label="赠课时长"
  492. prop="giveSingleCourseTime"
  493. v-if="
  494. payForm.giveCourseType != 'MEMBER' && payForm.fullMinusCourseTimes
  495. "
  496. :rules="[
  497. { required: true, message: '请选择赠课时长', trigger: 'blur' }
  498. ]"
  499. >
  500. <el-input
  501. v-model.number="payForm.giveSingleCourseTime"
  502. type="number"
  503. style="width: 400px"
  504. placeholder="赠课时长"
  505. :disabled="isDisabled"
  506. >
  507. <template slot="append"
  508. >分钟</template
  509. >
  510. </el-input>
  511. </el-form-item>
  512. <el-row
  513. v-if="
  514. payForm.giveCourseType != 'MEMBER' && payForm.fullMinusCourseTimes
  515. "
  516. >
  517. <el-form-item
  518. prop="giveCourseNum"
  519. label="赠送课时数"
  520. :rules="[
  521. { required: true, message: '请输入赠送课时数', trigger: 'blur' }
  522. ]"
  523. >
  524. <el-input
  525. v-model.number="payForm.giveCourseNum"
  526. @input="changeGiveCourseNum"
  527. type="number"
  528. style="width: 400px"
  529. placeholder="赠送课时数"
  530. :disabled="isDisabled"
  531. >
  532. <template slot="append"
  533. >课时</template
  534. >
  535. </el-input>
  536. </el-form-item>
  537. </el-row>
  538. <el-row
  539. v-if="
  540. payForm.giveCourseType == 'MEMBER' && payForm.fullMinusCourseTimes
  541. "
  542. >
  543. <el-form-item
  544. label="赠送会员名称"
  545. prop="giveMemberRankId"
  546. :rules="[
  547. {
  548. required: true,
  549. message: '请选择赠送会员名称',
  550. trigger: 'change'
  551. }
  552. ]"
  553. >
  554. <el-select
  555. style="width: 400px !important"
  556. v-model.trim="payForm.giveMemberRankId"
  557. placeholder="请选择会员名称"
  558. clearable
  559. :disabled="isDisabled"
  560. >
  561. <el-option
  562. v-for="(item, index) in remberList"
  563. :key="index"
  564. :label="item.name"
  565. :value="item.id"
  566. :disabled="item.id == 2"
  567. ></el-option>
  568. </el-select>
  569. </el-form-item>
  570. </el-row>
  571. <el-row
  572. v-if="
  573. payForm.giveCourseType == 'MEMBER' && payForm.fullMinusCourseTimes
  574. "
  575. >
  576. <el-form-item
  577. prop="giveMemberTime"
  578. label="赠送会员时长"
  579. :rules="[
  580. { required: true, message: '请输入赠送会员时长', trigger: 'blur' }
  581. ]"
  582. >
  583. <el-input
  584. v-model.number="payForm.giveMemberTime"
  585. type="number"
  586. style="width: 400px"
  587. placeholder="请输入赠送会员时长"
  588. :disabled="isDisabled"
  589. >
  590. <template slot="append"
  591. >天</template
  592. >
  593. </el-input>
  594. </el-form-item>
  595. </el-row>
  596. </el-form>
  597. </div>
  598. </template>
  599. <script>
  600. import { vipResetTypeList, memberEnumList } from "@/utils/searchArray";
  601. import { getOnlineMun } from "@/api/vipSeting";
  602. const MIN_NUMBER = 1;
  603. const MAX_NUMBER = 999;
  604. export default {
  605. props: [
  606. "payForm",
  607. "activeType",
  608. "remberList",
  609. "isDisabled",
  610. "activityChannel"
  611. ],
  612. data() {
  613. return {
  614. coureTimerList: [],
  615. vipResetTypeList,
  616. memberEnumList,
  617. studentRuleNum: null,
  618. unOnlinePay: false,
  619. unOnlineFee: false
  620. };
  621. },
  622. async mounted() {
  623. const res1 = await getOnlineMun();
  624. let tempObj = JSON.parse(res1.data.config);
  625. this.studentRuleNum = tempObj.cloud_room_rule.cloud_room_up_limit - 1;
  626. await this.$store.dispatch("setVipGroupCategory");
  627. },
  628. methods: {
  629. handleMinChange() {
  630. this.$refs.form.validateField("maxCourseNum");
  631. },
  632. handleMaxChange() {
  633. this.$refs.form.validateField("minCourseNum");
  634. },
  635. validateCom(rule, value, callback) {
  636. const one = Number(value);
  637. if (Number.isInteger(one)) {
  638. if (one < MIN_NUMBER) {
  639. return callback(new Error("输入值必须大于0"));
  640. } else if (one > MAX_NUMBER) {
  641. return callback(new Error("输入值必须小于999"));
  642. }
  643. return callback();
  644. }
  645. return callback(new Error("输入值必须为正整数"));
  646. },
  647. validateMin(rule, value, callback) {
  648. const one = Number(value);
  649. const max = Number(this.payForm.maxCourseNum);
  650. if (!max || one <= max) {
  651. return callback();
  652. }
  653. return callback(new Error("输入值不得大于最大课时数"));
  654. },
  655. validateMax(rule, value, callback) {
  656. const one = Number(value);
  657. const min = Number(this.payForm.minCourseNum);
  658. if (!min || one >= min) {
  659. return callback();
  660. }
  661. return callback(new Error("输入值不得小于最小课时数"));
  662. },
  663. changeCourseType(val) {
  664. this.$emit("chageSalary");
  665. this.$emit("changeCourseType", val);
  666. },
  667. changeGiveCourseType(val) {
  668. this.$emit("chageSalary");
  669. this.$emit("changeGiveCourseType", val);
  670. },
  671. chageSalary(val) {
  672. this.selects.vipGroupCategory.forEach(item => {
  673. if (item.id == val) {
  674. this.studentNum = item.studentNum;
  675. }
  676. });
  677. if (this.studentNum > this.studentRuleNum) {
  678. // 只能是线下课
  679. // 上课模式 teachMode
  680. // 调整方式 allowOnlineToOffline
  681. this.$set(this.payForm, "giveTeachMode", "1");
  682. this.$set(this.payForm, "giveAllowOnlineToOffline", "3");
  683. this.unOnlinePay = true;
  684. } else {
  685. this.unOnlinePay = false;
  686. this.$set(this.payForm, "giveTeachMode", null);
  687. this.$set(this.payForm, "giveAllowOnlineToOffline", null);
  688. }
  689. this.$emit("chageSalary");
  690. },
  691. changeFullMinus(val) {
  692. if (!val || val <= 0) {
  693. this.$emit("chageSalary");
  694. this.$emit("changeGiveCourseType");
  695. }
  696. },
  697. changeGiveCourseNum(val) {
  698. if (!val || val <= 0) {
  699. this.$emit("chageSalary");
  700. }
  701. },
  702. checkFixedCourseNumFlag(val) {
  703. if (!val) {
  704. this.$emit("resetFixedCourseNumFlag");
  705. }
  706. },
  707. changeCateFee(val) {
  708. this.selects.vipGroupCategory.forEach(item => {
  709. if (item.id == val) {
  710. this.studentNum = item.studentNum;
  711. }
  712. });
  713. if (this.studentNum > this.studentRuleNum) {
  714. // 只能是线下课
  715. // 上课模式 teachMode
  716. // 调整方式 allowOnlineToOffline
  717. this.$set(this.payForm, "teachMode", "1");
  718. this.$set(this.payForm, "allowOnlineToOffline", "3");
  719. this.unOnlinePay = true;
  720. } else {
  721. this.unOnlinePay = false;
  722. this.$set(this.payForm, "teachMode", null);
  723. this.$set(this.payForm, "allowOnlineToOffline", null);
  724. }
  725. }
  726. }
  727. };
  728. </script>
  729. <style lang="scss" scoped>
  730. .baseMsg {
  731. margin: 30px 0;
  732. }
  733. </style>