index.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795
  1. <template>
  2. <div id="OrderManageList">
  3. <search-box-new
  4. ref="searchBox"
  5. :formData="formData"
  6. :formList="formList"
  7. @search="search"
  8. @init="init"
  9. />
  10. <div style="margin-bottom: 12px">
  11. <el-button type="primary" size="small" @click="editCost"
  12. >成本设置</el-button
  13. >
  14. <el-button
  15. v-if="false"
  16. type="primary"
  17. size="small"
  18. @click="completeOrder(false)"
  19. >完单确认</el-button
  20. >
  21. <el-button type="primary" size="small" @click="editRemarks(1)"
  22. >修改备注</el-button
  23. >
  24. <el-button size="small" @click="exportExcel()">导出excel</el-button>
  25. </div>
  26. <div class="dis_flex_order_li">
  27. <div class="list" v-for="(item, index) in ShowTabList" :key="index">
  28. <img :src="item.img" alt="" />
  29. <div class="right">
  30. <h4>
  31. {{ item.label }}:
  32. <span
  33. v-if="item.label === '盈亏' && statisticsData[item.prop] !== 0"
  34. ><span
  35. :style="
  36. statisticsData[item.prop] > 0
  37. ? 'color:rgb(99,93,247)'
  38. : 'color:red'
  39. "
  40. >【{{ statisticsData[item.prop] > 0 ? "盈" : "亏" }}】</span
  41. ></span
  42. >
  43. </h4>
  44. <p>
  45. {{
  46. item.ch === "元"
  47. ? formatPrice(statisticsData[item.prop])
  48. : statisticsData[item.prop]
  49. }}{{ item.ch }}
  50. </p>
  51. </div>
  52. </div>
  53. </div>
  54. <table-list
  55. rowKey="orderId"
  56. ref="tableList"
  57. :tableSets="tableSet"
  58. :tableData="tableData"
  59. :navText="navText"
  60. :loading="loading"
  61. >
  62. <template slot="orderInfo" slot-scope="props">
  63. <div>机构名称:{{ props.scope.row["tenantName"] }}</div>
  64. <div>业务员:{{ props.scope.row["createUsername"] }}</div>
  65. <div>业务号:{{ props.scope.row["createNo"] }}</div>
  66. <div>订单来源:{{ props.scope.row["orderOrg"] }}</div>
  67. <div>
  68. 订单日期:{{ $methodsTools.onlyForma(props.scope.row["buyTime"]) }}
  69. </div>
  70. <div>订单号:{{ props.scope.row["orderSn"] }}</div>
  71. </template>
  72. <template slot="orderPrice" slot-scope="props">
  73. <div>合同金额:{{ props.scope.row["orderPrice"] }}</div>
  74. <div>已收账款:{{ props.scope.row["orderReceived"] }}</div>
  75. <div>申请退款:{{ props.scope.row["orderRefund"] }}</div>
  76. <div>已退账款:{{ props.scope.row["orderRefunded"] }}</div>
  77. <div>未收账款:{{ props.scope.row["orderUncollected"] }}</div>
  78. <div style="color: red">
  79. (预计收款时间){{
  80. $methodsTools.onlyForma(props.scope.row["predictReceiveTime"])
  81. }}
  82. </div>
  83. <div>实际账款:{{ props.scope.row["orderPractical"] }}</div>
  84. </template>
  85. <template slot="inon" slot-scope="props">
  86. <div>成本(元):{{ props.scope.row["orderCost"] }}</div>
  87. <div>盈亏(元):{{ props.scope.row["orderProfit"] }}</div>
  88. <div v-if="props.scope.row['orderProfit']">
  89. <span
  90. :style="
  91. props.scope.row['orderProfit'] > 0
  92. ? 'color:rgb(99,93,247)'
  93. : 'color:red'
  94. "
  95. >
  96. 【{{ props.scope.row["orderProfit"] > 0 ? "盈" : "亏" }}】</span
  97. >
  98. </div>
  99. </template>
  100. <template slot="statusRoles" slot-scope="props">
  101. <div>
  102. {{ refundStatus(props.scope.row["refundStatus"])
  103. }}<span style="color: red" v-if="props.scope.row['refundName']"
  104. >({{ props.scope.row["refundName"] }})</span
  105. >
  106. </div>
  107. </template>
  108. <template slot="type" slot-scope="props">
  109. <div v-for="(item, index) in props.scope.row['businessNames']">
  110. {{ item }}
  111. </div>
  112. </template>
  113. <template slot="btn" slot-scope="props">
  114. <el-button type="text" @click="openDialog(props.scope.row)"
  115. >查看详情</el-button
  116. >
  117. <el-button type="text" @click="handelClickCost(props.scope.row)"
  118. >成本设置</el-button
  119. >
  120. <el-button
  121. type="text"
  122. @click="openDialog(props.scope.row, 1)"
  123. :disabled="
  124. props.scope.row.orderFrom !== 3 || props.scope.row.checkStatus === 3
  125. "
  126. >订单审核</el-button
  127. >
  128. <el-button
  129. type="text"
  130. @click="handelClick(props.scope.row)"
  131. :disabled="
  132. props.scope.row.refundStatus !== 0 &&
  133. props.scope.row.refundStatus !== 2
  134. "
  135. >退款审核</el-button
  136. >
  137. <el-button type="text" @click="editRemarks(props.scope.row)"
  138. >修改备注</el-button
  139. >
  140. <el-button type="text" @click="seePZ(props.scope.row.attachmentList)"
  141. >转账凭证</el-button
  142. >
  143. <el-button
  144. v-if="false"
  145. type="text"
  146. @click="completeOrder(props.scope.row.orderSn)"
  147. >完单确认</el-button
  148. >
  149. </template>
  150. </table-list>
  151. <pagination
  152. :total="total"
  153. :pageSize.sync="formData.pageSize"
  154. :currentPage.sync="formData.pageNum"
  155. @search="search"
  156. />
  157. <el-image-viewer
  158. v-if="showViewer"
  159. :on-close="
  160. () => {
  161. showViewer = false;
  162. }
  163. "
  164. :url-list="imgList"
  165. >
  166. </el-image-viewer>
  167. <dislog-set
  168. :dialogVisible.sync="dialogVisible"
  169. @search="search"
  170. :type="2"
  171. :orderSn="orderSn"
  172. :checkRoleName="orderInfo.refundName"
  173. ></dislog-set>
  174. <remarks
  175. :dialogVisible.sync="remarksVisible"
  176. @search="search"
  177. :options="remarksOptions"
  178. ></remarks>
  179. <dislogOrderDetails
  180. :dialogVisible.sync="orderDialogVisible"
  181. :orderSn="orderSn"
  182. :orderFrom="orderFrom"
  183. :ShowStatus="ShowStatus"
  184. @search="search"
  185. ></dislogOrderDetails>
  186. <dislog-set-cost
  187. :dialogVisible.sync="dialogVisiblecost"
  188. :tpId="tpId"
  189. :type="type"
  190. @search="search"
  191. ></dislog-set-cost>
  192. </div>
  193. </template>
  194. <script>
  195. import { exportFn } from "@/utils/index.js";
  196. import dislogSetCost from "../cost/dislogSet.vue";
  197. import dislogSet from "../components/refund/dislogSet.vue";
  198. import remarks from "../components/remarks.vue";
  199. import searchBoxNew from "@/components/searchBoxNew";
  200. import tableList from "@/components/tableList";
  201. import pagination from "@/components/pagination";
  202. import dislogOrderDetails from "../components/dislogOrderDetails.vue";
  203. export default {
  204. name: "OrderManageList",
  205. components: {
  206. searchBoxNew,
  207. tableList,
  208. pagination,
  209. dislogSet,
  210. remarks,
  211. dislogOrderDetails,
  212. dislogSetCost,
  213. "el-image-viewer": () =>
  214. import("element-ui/packages/image/src/image-viewer"),
  215. },
  216. data() {
  217. return {
  218. showViewer: false,
  219. imgList: [],
  220. ShowTabList: [
  221. {
  222. label: "盈亏",
  223. prop: "orderProfitTotal",
  224. img: require("@/assets/images/盈亏@2x.png"),
  225. price: "1200000000",
  226. ch: "元",
  227. },
  228. {
  229. label: "合同金额",
  230. prop: "orderPriceTotal",
  231. img: require("@/assets/images/合同金额@2x.png"),
  232. price: "1200000000",
  233. ch: "元",
  234. },
  235. {
  236. label: "已收账款",
  237. prop: "orderReceivedTotal",
  238. img: require("@/assets/images/已收款@2x.png"),
  239. price: "1200000000",
  240. ch: "元",
  241. },
  242. {
  243. label: "已退账款",
  244. prop: "orderRefundedTotal",
  245. img: require("@/assets/images/已退款@2x.png"),
  246. price: "1200000000",
  247. ch: "元",
  248. },
  249. {
  250. label: "未收账款",
  251. prop: "orderUncollectedTotal",
  252. img: require("@/assets/images/未收款@2x.png"),
  253. price: "1200000000",
  254. ch: "元",
  255. },
  256. {
  257. label: "实际账款",
  258. prop: "practicalPriceTotal",
  259. img: require("@/assets/images/实际款@2x.png"),
  260. price: "1200000000",
  261. ch: "元",
  262. },
  263. {
  264. label: "成本金额",
  265. prop: "orderCostTotal",
  266. img: require("@/assets/images/成本金额@2x.png"),
  267. price: "1200000000",
  268. ch: "元",
  269. },
  270. {
  271. label: "订单人数",
  272. prop: "orderUserNum",
  273. img: require("@/assets/images/订单人数@2x.png"),
  274. price: "16102",
  275. ch: "个",
  276. },
  277. {
  278. label: "订单数",
  279. prop: "orderNum",
  280. img: require("@/assets/images/订单数@2x.png"),
  281. price: "16201",
  282. ch: "个",
  283. },
  284. ],
  285. loading: false, //当前表单加载是否加载动画
  286. navText: {
  287. title: "订单管理",
  288. index: 0,
  289. ch: "条",
  290. num: true,
  291. choice: true,
  292. addHide: true,
  293. openCheckMore: true,
  294. changeWidth: "100px",
  295. custom: false,
  296. backFatherBtn: {
  297. status: false,
  298. title: "配置下单填选模板",
  299. },
  300. },
  301. //搜索
  302. formList: [
  303. {
  304. prop: "roleId",
  305. placeholder: "角色分类",
  306. scope: "select",
  307. options: [
  308. { label: "会计", value: 0 },
  309. { label: "财务", value: 1 },
  310. { label: "出纳", value: 2 },
  311. ],
  312. },
  313. // {
  314. // prop: "businessFullName",
  315. // placeholder: "业务分类",
  316. // scope: "select",
  317. // options: [
  318. // { label: "学校业务", value: 1 },
  319. // { label: "办证质询", value: 2 },
  320. // ],
  321. // },
  322. {
  323. prop: "educationTypeId",
  324. placeholder: "教育类型",
  325. scope: "educationType",
  326. schemeName: true,
  327. },
  328. {
  329. prop: "businessId",
  330. placeholder: "业务层次",
  331. scope: "businessLevel",
  332. edu: "educationTypeId",
  333. },
  334. {
  335. prop: "checkStatus",
  336. placeholder: "审核状态",
  337. scope: "select",
  338. options: [
  339. { label: "待审核", value: 0 },
  340. { label: "已通过", value: 1 },
  341. { label: "未通过", value: 2 },
  342. { label: "已撤销", value: 3 },
  343. ],
  344. },
  345. {
  346. prop: "refundStatus",
  347. placeholder: "退款状态",
  348. scope: "select",
  349. options: [
  350. { label: "待审核", value: 0 },
  351. { label: "正常", value: 1 },
  352. { label: "未退款", value: 2 },
  353. { label: "已完成", value: 3 },
  354. { label: "未通过", value: 4 },
  355. { label: "支付中", value: 5 },
  356. { label: "支付失败", value: 6 },
  357. ],
  358. },
  359. {
  360. prop: "creditStatus",
  361. placeholder: "账款状态",
  362. scope: "select",
  363. options: [
  364. { label: "已结清", value: 1 },
  365. { label: "未结清", value: 0 },
  366. ],
  367. },
  368. {
  369. prop: "invoiceStatus",
  370. placeholder: "开票状态",
  371. scope: "select",
  372. options: [
  373. { label: "已开票", value: 1 },
  374. { label: "未开票", value: 0 },
  375. ],
  376. },
  377. {
  378. placeholder: "时间",
  379. prop1: "startTime",
  380. prop2: "endTime",
  381. placeholder1: "开始日期",
  382. placeholder2: "结束日期",
  383. scope: "moreDataPicker",
  384. Diszing: true,
  385. },
  386. {
  387. prop: "orderSn",
  388. placeholder: "订单号",
  389. },
  390. {
  391. prop: "userCard",
  392. placeholder: "身份号",
  393. },
  394. ],
  395. formData: {
  396. pageSize: 10,
  397. pageNum: 1,
  398. },
  399. // 表单
  400. tableSet: [
  401. {
  402. label: "订单信息",
  403. prop: "name",
  404. hidden: true,
  405. scope: "solt",
  406. soltName: "orderInfo",
  407. width: "300px",
  408. },
  409. {
  410. label: "订单金额(元)",
  411. prop: "posterTempName",
  412. hidden: true,
  413. scope: "solt",
  414. soltName: "orderPrice",
  415. },
  416. {
  417. label: "投入产出",
  418. prop: "posterTempName1",
  419. hidden: true,
  420. scope: "solt",
  421. soltName: "inon",
  422. },
  423. {
  424. label: "审核状态",
  425. prop: "checkStatus",
  426. scope: "isOptions",
  427. hidden: true,
  428. options: [
  429. {
  430. label: "待审核",
  431. value: 0,
  432. },
  433. {
  434. label: "已通过",
  435. value: 1,
  436. },
  437. {
  438. label: "未通过",
  439. value: 2,
  440. },
  441. {
  442. label: "已撤销",
  443. value: 3,
  444. },
  445. ],
  446. },
  447. {
  448. label: "学员审核状态",
  449. prop: "studentCheckStatus",
  450. scope: "isOptions",
  451. hidden: true,
  452. options: [
  453. {
  454. label: "待审核",
  455. value: 0,
  456. },
  457. {
  458. label: "已审核",
  459. value: 1,
  460. },
  461. ],
  462. },
  463. {
  464. label: "退款状态",
  465. prop: "startTime",
  466. hidden: true,
  467. scope: "solt",
  468. soltName: "statusRoles",
  469. },
  470. {
  471. label: "下单企业",
  472. prop: "orderOrg",
  473. hidden: true,
  474. },
  475. {
  476. label: "业务类型",
  477. prop: "businessNames",
  478. hidden: true,
  479. scope: "solt",
  480. soltName: "type",
  481. },
  482. {
  483. label: "发票状态",
  484. prop: "invoiceStatus",
  485. hidden: true,
  486. scope: "isOptions",
  487. options: [
  488. {
  489. label: "未开票",
  490. value: 0,
  491. },
  492. {
  493. label: "已开票",
  494. value: 1,
  495. },
  496. ],
  497. },
  498. {
  499. label: "备注",
  500. prop: "remark",
  501. hidden: true,
  502. },
  503. ],
  504. tableData: [], //表单数据
  505. total: 0, //一共多少条
  506. dialogVisible: false,
  507. remarksVisible: false,
  508. orderDialogVisible: false,
  509. id: "",
  510. statisticsData: {},
  511. remarksOptions: [],
  512. orderSn: null,
  513. orderFrom: null,
  514. ShowStatus: false,
  515. dialogVisiblecost: false,
  516. tpId: "",
  517. type: null,
  518. orderInfo: {},
  519. };
  520. },
  521. created() {
  522. this.search();
  523. this.getStatistics();
  524. },
  525. methods: {
  526. formatPrice(price) {
  527. return price?.toLocaleString(
  528. "zh-CN",
  529. (undefined, { minimumFractionDigits: 2, maximumFractionDigits: 4 })
  530. );
  531. },
  532. //退款状态
  533. refundStatus(i) {
  534. var str = "";
  535. switch (i) {
  536. case 0:
  537. str = "待审核";
  538. break;
  539. case 1:
  540. str = "正常";
  541. break;
  542. case 2:
  543. str = "未退款";
  544. break;
  545. case 3:
  546. str = "已完成";
  547. break;
  548. case 4:
  549. str = "未通过";
  550. break;
  551. case 5:
  552. str = "支付中";
  553. break;
  554. case 6:
  555. str = "支付失败";
  556. break;
  557. default:
  558. break;
  559. }
  560. return str;
  561. },
  562. exportExcel() {
  563. var b = 1;
  564. var a = "0,1";
  565. if (this.$refs.tableList.allCheckData.length === 0) {
  566. this.$message.error("请勾选数据");
  567. return;
  568. }
  569. this.$api
  570. .systemtoporderexport({
  571. orderSnList: this.$refs.tableList.allCheckData.map((i) => i.orderSn),
  572. })
  573. .then((res) => {
  574. exportFn(res.msg, `导出数据`);
  575. });
  576. },
  577. editCost() {
  578. if (this.$refs.tableList.allCheckData.length === 0) {
  579. this.$message.error("请勾选数据");
  580. return;
  581. }
  582. this.dialogVisiblecost = true;
  583. this.type = 4;
  584. this.tpId = this.$refs.tableList.allCheckData
  585. .map((i) => i.orderSn)
  586. .toString();
  587. },
  588. completeOrder(orderSn) {
  589. let A = (status) => {
  590. this.$api
  591. .systemtoporderfinish({
  592. finishStatus: status,
  593. orderSnList: orderSn
  594. ? [orderSn]
  595. : this.$refs.tableList.allCheckData.map((i) => i.orderSn),
  596. })
  597. .then((res) => {
  598. this.$message({
  599. type: "success",
  600. message: "操作成功!",
  601. });
  602. });
  603. };
  604. if (!orderSn && this.$refs.tableList.allCheckData.length === 0) {
  605. this.$message.error("请勾选数据");
  606. return;
  607. }
  608. this.$confirm("确定已完单吗?", "提示", {
  609. confirmButtonText: "确定完单",
  610. cancelButtonText: "取消完单",
  611. type: "warning",
  612. distinguishCancelAndClose: true,
  613. })
  614. .then(() => {
  615. A(1);
  616. })
  617. .catch((err) => {
  618. if (err === "cancel") {
  619. A(0);
  620. }
  621. });
  622. },
  623. handelClickCost(item) {
  624. this.dialogVisiblecost = true;
  625. this.type = 3;
  626. this.tpId = item.orderSn;
  627. },
  628. openDialog(data, e) {
  629. if (e === 1) {
  630. this.ShowStatus = true;
  631. } else {
  632. this.ShowStatus = false;
  633. }
  634. this.orderInfo = data;
  635. this.orderSn = data.orderSn;
  636. this.orderFrom = data.orderFrom;
  637. this.orderDialogVisible = true;
  638. },
  639. seePZ(ary) {
  640. if (ary?.length > 0) {
  641. this.imgList = ary.map((item) => item.attachmentUrl);
  642. this.showViewer = true;
  643. } else {
  644. this.$message.warning("暂无转账凭证");
  645. this.imgList = [];
  646. return;
  647. }
  648. },
  649. getStatistics() {
  650. this.$api.systemtoporderstatistics().then((res) => {
  651. this.statisticsData = res.data || {};
  652. });
  653. },
  654. editRemarks(item) {
  655. if (item === 1) {
  656. if (this.$refs.tableList.allCheckData.length === 0) {
  657. this.$message.error("请勾选数据");
  658. return;
  659. }
  660. this.remarksOptions = this.$refs.tableList.allCheckData;
  661. this.remarksVisible = true;
  662. } else {
  663. this.remarksOptions = [item];
  664. this.remarksVisible = true;
  665. }
  666. },
  667. handelClick(data) {
  668. this.orderSn = data.orderSn;
  669. this.dialogVisible = true;
  670. },
  671. changeStatus(val) {
  672. console.log(val);
  673. },
  674. batchDel() {
  675. let len = this.$refs.tableList.allCheckData.length;
  676. if (!len) {
  677. return this.$message.warning("请先勾选模板");
  678. }
  679. const ids = this.$refs.tableList.allCheckData.map((item) => item.id);
  680. },
  681. handelDel(id) {
  682. this.$confirm("此操作将删除该模板, 是否继续?", "提示", {
  683. confirmButtonText: "确定",
  684. cancelButtonText: "取消",
  685. type: "warning",
  686. })
  687. .then(() => {
  688. this.$api.editUser(id).then((res) => {
  689. if (res.code === 200) {
  690. this.$message.success("删除成功");
  691. this.search();
  692. }
  693. });
  694. })
  695. .catch(() => {
  696. this.$message({
  697. type: "info",
  698. message: "已取消删除",
  699. });
  700. });
  701. },
  702. search(v) {
  703. this.loading = true;
  704. if (this.type === 4) {
  705. this.$refs.tableList.clearMoreActive();
  706. this.type = null;
  707. }
  708. if (v === 2) {
  709. this.formData = {
  710. pageSize: 10,
  711. pageNum: 1,
  712. };
  713. this.$nextTick(() => {
  714. this.$refs.tableList.clearMoreActive();
  715. });
  716. }
  717. var data = JSON.parse(JSON.stringify(this.formData));
  718. if (data.roleId === 0 || data.roleId === 1) {
  719. data.refundStatusList = "0,3,4";
  720. }
  721. if (data.roleId === 2) {
  722. data.refundStatusList = "2,3";
  723. }
  724. if (this.formData.startTime) {
  725. data.startTime = parseInt(data.startTime / 1000);
  726. }
  727. if (this.formData.endTime) {
  728. data.endTime = parseInt(data.endTime / 1000);
  729. }
  730. this.$api
  731. .systemtoporderlist(data)
  732. .then((res) => {
  733. this.tableData = res.rows;
  734. this.total = res.total;
  735. this.navText.index = res.total;
  736. })
  737. .finally(() => {
  738. this.loading = false;
  739. });
  740. },
  741. init() {
  742. this.search(2);
  743. },
  744. },
  745. };
  746. </script>
  747. <style lang="scss" scoped>
  748. .cell > .el-button + .el-button {
  749. margin-left: 0px;
  750. }
  751. .dis_flex_order_li {
  752. display: flex;
  753. align-items: center;
  754. flex-wrap: wrap;
  755. & > .list {
  756. user-select: none;
  757. cursor: pointer;
  758. transition: all 0.3s;
  759. box-shadow: 0px 0px 4px 1px rgba(0, 0, 0, 0.2);
  760. &:hover {
  761. transform: scale(1.04);
  762. }
  763. width: 136px;
  764. height: 44px;
  765. border-radius: 6px;
  766. display: flex;
  767. align-items: center;
  768. flex-shrink: 0;
  769. margin-right: 10px;
  770. margin-bottom: 10px;
  771. & > img {
  772. margin-left: 2px;
  773. width: 40px;
  774. height: 40px;
  775. }
  776. & > .right {
  777. flex: 1;
  778. padding-left: 4px;
  779. & > h4 {
  780. color: #000;
  781. margin: 0;
  782. font-size: 12px;
  783. }
  784. & > p {
  785. font-size: 12px;
  786. color: red;
  787. margin: 0;
  788. }
  789. }
  790. }
  791. }
  792. </style>