index.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861
  1. <template>
  2. <div class="order">
  3. <div class="warp">
  4. <el-tabs type="border-card" @tab-click="changeTab" v-model="activeName">
  5. <el-tab-pane label="项目订单" name="first">
  6. <div class="user-list">
  7. <el-table
  8. ref="multipleTable"
  9. :data="projectData"
  10. tooltip-effect="dark"
  11. height="354"
  12. style="width: 100%; border-radius: 8px"
  13. @row-click="handleSelectionChange"
  14. >
  15. <el-table-column prop="goods" label="项目名称" width="200">
  16. <template slot-scope="scope">
  17. <div v-for="(val, index) in scope.row.goods" :key="index">
  18. <div>{{ val.name }}</div>
  19. </div>
  20. </template>
  21. </el-table-column>
  22. <el-table-column prop="goods" label="数量" show-overflow-tooltip>
  23. <template slot-scope="scope">
  24. <div>{{ scope.row.goods.length }}</div>
  25. </template>
  26. </el-table-column>
  27. <el-table-column
  28. prop="price"
  29. label="总价格"
  30. show-overflow-tooltip
  31. ></el-table-column>
  32. <el-table-column
  33. prop="order_time"
  34. label="预约时间"
  35. width="180"
  36. show-overflow-tooltip
  37. ></el-table-column>
  38. <el-table-column
  39. prop="store_name"
  40. label="预约店铺"
  41. show-overflow-tooltip
  42. ></el-table-column>
  43. <el-table-column prop="status" label="状态" show-overflow-tooltip>
  44. <template slot-scope="scope">
  45. <div :class="'color' + scope.row.status">
  46. {{
  47. scope.row.status != 5
  48. ? statusStr[scope.row.status]
  49. : statusStr[statusStr.length - 1]
  50. }}
  51. </div>
  52. </template>
  53. </el-table-column>
  54. </el-table>
  55. <div class="pagin">
  56. <el-pagination
  57. background
  58. layout="prev, pager, next"
  59. @current-change="handleCurrentChange"
  60. :current-page.sync="currentPage1"
  61. :total="total"
  62. ></el-pagination>
  63. </div>
  64. </div>
  65. </el-tab-pane>
  66. <el-tab-pane label="次卡订单" name="second">
  67. <div class="user-list">
  68. <el-table
  69. ref="multipleTable"
  70. :data="cardListData"
  71. tooltip-effect="dark"
  72. height="354"
  73. @row-click="openDetail"
  74. style="width: 100%; border-radius: 8px"
  75. >
  76. <el-table-column prop="card_name" label="卡券名称" width="200">
  77. <template slot-scope="scope">
  78. <div>{{ scope.row.card_name | ellipsis(8) }}</div>
  79. </template>
  80. </el-table-column>
  81. <el-table-column
  82. prop="total_num"
  83. label="总次数"
  84. show-overflow-tooltip
  85. align="center"
  86. >
  87. </el-table-column>
  88. <el-table-column
  89. prop="num"
  90. label="剩余次数"
  91. show-overflow-tooltip
  92. align="center"
  93. ></el-table-column>
  94. <el-table-column
  95. prop="used_num"
  96. label="已用次数"
  97. width="180"
  98. show-overflow-tooltip
  99. align="center"
  100. ></el-table-column>
  101. <el-table-column
  102. prop="expir_time"
  103. label="过期时间"
  104. width="180"
  105. show-overflow-tooltip
  106. ></el-table-column>
  107. <el-table-column
  108. prop="create_time"
  109. label="创建时间"
  110. width="180"
  111. show-overflow-tooltip
  112. ></el-table-column>
  113. <el-table-column prop="status" label="状态" show-overflow-tooltip>
  114. <template slot-scope="scope">
  115. <div :class="'color' + scope.row.status">
  116. {{
  117. scope.row.status == -1
  118. ? "已过期"
  119. : scope.row.status == -0
  120. ? "已使用"
  121. : "待使用"
  122. }}
  123. </div>
  124. </template>
  125. </el-table-column>
  126. </el-table>
  127. <div class="pagin">
  128. <el-pagination
  129. background
  130. layout="prev, pager, next"
  131. @current-change="handleCurrentChange"
  132. :current-page.sync="currentPage1"
  133. :total="total"
  134. ></el-pagination>
  135. </div>
  136. </div>
  137. </el-tab-pane>
  138. <el-tab-pane label="商品订单" name="third">
  139. <div class="user-list">
  140. <el-table
  141. ref="multipleTable"
  142. :data="goodData"
  143. tooltip-effect="dark"
  144. height="354"
  145. style="width: 100%; border-radius: 8px"
  146. >
  147. <!-- create_time: "2022-03-19 22:53:40"
  148. goods: [{order_id: 47, name: "润百颜玻尿酸屏障调理面膜", num: 1}]
  149. id: 47
  150. price: "0.01"
  151. status: 5 -->
  152. <el-table-column prop="goods" label="商品名称" width="200">
  153. <template slot-scope="scope">
  154. <div v-for="(val, index) in scope.row.goods" :key="index">
  155. <div>{{ val.name }}</div>
  156. </div>
  157. </template>
  158. </el-table-column>
  159. <el-table-column prop="goods" label="数量" show-overflow-tooltip>
  160. <template slot-scope="scope">
  161. <div>{{ scope.row.goods.length }}</div>
  162. </template>
  163. </el-table-column>
  164. <el-table-column
  165. prop="price"
  166. label="实付款"
  167. show-overflow-tooltip
  168. ></el-table-column>
  169. <el-table-column
  170. prop="create_time"
  171. label="下单时间"
  172. width="180"
  173. show-overflow-tooltip
  174. ></el-table-column>
  175. <el-table-column prop="status" label="状态" show-overflow-tooltip>
  176. <template slot-scope="scope">
  177. <div :class="'classShow' + scope.$index">
  178. <!-- {{
  179. scope.row.status == 1 || scope.row.status == 2
  180. ? goodStatus[scope.row.status]
  181. : goodStatus[goodStatus.length - 1]
  182. }} -->
  183. {{scope.row.status==2||scope.row.status==3?'已取货':scope.row.status==0?'未支付':scope.row.status==1?'待取货':'已取消'}}
  184. </div>
  185. </template>
  186. </el-table-column>
  187. </el-table>
  188. <div class="pagin">
  189. <el-pagination
  190. background
  191. layout="prev, pager, next"
  192. @current-change="handleCurrentChange"
  193. :current-page.sync="currentPage1"
  194. :total="total"
  195. ></el-pagination>
  196. </div>
  197. </div>
  198. </el-tab-pane>
  199. <el-tab-pane label="优惠券" name="fourth">
  200. <div class="user-list">
  201. <el-table
  202. ref="multipleTable"
  203. :data="couponData"
  204. tooltip-effect="dark"
  205. height="354"
  206. style="width: 100%; border-radius: 8px"
  207. >
  208. <!-- create_time: "2022-03-10 10:39:19"
  209. ex_time: "2022.03.17 23:59"
  210. id: 2517
  211. name: "新人体验券"
  212. status: 2
  213. type: "全额券" -->
  214. <el-table-column
  215. prop="name"
  216. label="卡卷名称"
  217. width="200"
  218. ></el-table-column>
  219. <el-table-column
  220. prop="type"
  221. label="卡卷类型"
  222. show-overflow-tooltip
  223. ></el-table-column>
  224. <el-table-column
  225. prop="price"
  226. label="总价格"
  227. show-overflow-tooltip
  228. ></el-table-column>
  229. <el-table-column
  230. prop="create_time"
  231. label="到期时间"
  232. width="180"
  233. show-overflow-tooltip
  234. ></el-table-column>
  235. <el-table-column
  236. prop="create_time"
  237. label="创建时间"
  238. width="180"
  239. show-overflow-tooltip
  240. ></el-table-column>
  241. <el-table-column prop="status" label="状态" show-overflow-tooltip>
  242. <template slot-scope="scope">
  243. <div :class="'color' + scope.row.status">
  244. {{ couponStatus[scope.row.status] }}
  245. </div>
  246. </template>
  247. </el-table-column>
  248. </el-table>
  249. <div class="pagin">
  250. <el-pagination
  251. background
  252. layout="prev, pager, next"
  253. @current-change="handleCurrentChange"
  254. :current-page.sync="currentPage1"
  255. :total="total"
  256. ></el-pagination>
  257. </div>
  258. </div>
  259. </el-tab-pane>
  260. <el-tab-pane label="余额记录" name="five">
  261. <div class="user-list">
  262. <el-table
  263. ref="multipleTable"
  264. :data="balanceListData"
  265. tooltip-effect="dark"
  266. height="354"
  267. style="width: 100%; border-radius: 8px"
  268. >
  269. <el-table-column prop="goods" label="变更时间" width="200">
  270. <template slot-scope="scope">
  271. <div>{{ scope.row.create_time }}</div>
  272. </template>
  273. </el-table-column>
  274. <el-table-column prop="goods" label="变更前金额">
  275. <template slot-scope="scope">
  276. <div>{{ scope.row.before_amount }}</div>
  277. </template>
  278. </el-table-column>
  279. <el-table-column
  280. prop="goods"
  281. label="变更后金额"
  282. show-overflow-tooltip
  283. >
  284. <template slot-scope="scope">
  285. <div>{{ scope.row.after_amount }}</div>
  286. </template>
  287. </el-table-column>
  288. <el-table-column
  289. prop="price"
  290. label="变更金额"
  291. show-overflow-tooltip
  292. >
  293. <template slot-scope="scope">
  294. <div>
  295. {{ scope.row.is_add == 1 ? "+" : "-" }}{{ scope.row.amount }}
  296. </div>
  297. </template>
  298. </el-table-column>
  299. <!-- <el-table-column prop="status" label="状态" show-overflow-tooltip>
  300. <template slot-scope="scope">
  301. <div>{{ scope.row.msg }}</div>
  302. </template>
  303. </el-table-column> -->
  304. <!-- 余额类型(记录类型,1充值,2充值赠送,3订单退款,5提现驳回,-1消费,-2提现冻结,10客服添加,-10客服扣除) -->
  305. <el-table-column prop="status" label="类型" show-overflow-tooltip>
  306. <template slot-scope="scope">
  307. <div>
  308. {{
  309. scope.row.type == 1
  310. ? "充值"
  311. : scope.row.type == 2
  312. ? "充值赠送"
  313. : scope.row.type == 3
  314. ? "订单退款"
  315. : scope.row.type == 5
  316. ? "提现驳回"
  317. : scope.row.type == -1
  318. ? "消费"
  319. : scope.row.type == -2
  320. ? "提现冻结"
  321. : scope.row.type == 10
  322. ? "客服添加"
  323. : scope.row.type == -10
  324. ? "客服扣除"
  325. : ""
  326. }}
  327. </div>
  328. </template>
  329. </el-table-column>
  330. </el-table>
  331. <div class="pagin">
  332. <el-pagination
  333. background
  334. layout="prev, pager, next"
  335. @current-change="handleCurrentChange"
  336. :current-page.sync="currentPage1"
  337. :total="total"
  338. ></el-pagination>
  339. </div>
  340. </div>
  341. </el-tab-pane>
  342. </el-tabs>
  343. </div>
  344. <!-- 次卡详情 -->
  345. <mine-pupop :show="isPore">
  346. <div class="pore-block">
  347. <div class="delete-pupop" @click="isPore = false">
  348. <img
  349. src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/delete.png"
  350. alt
  351. />
  352. </div>
  353. <div class="pore-content">
  354. <div class="card-title">订单详情</div>
  355. <div class="project">
  356. <div class="project-title">项目名称:</div>
  357. <div class="project-list">
  358. <div
  359. class="project-info"
  360. v-for="(item, index) in cardInfo.project_list"
  361. :key="index"
  362. >
  363. <div class="name-text">{{ item.project_name }}</div>
  364. <div class="change-num">
  365. <div class="num-content">
  366. <div class="content-left" @click="reduce(index)">-</div>
  367. <div class="content-num">{{ item.num || 0 }}</div>
  368. <div class="content-right" @click="item.num++">+</div>
  369. </div>
  370. </div>
  371. </div>
  372. </div>
  373. </div>
  374. <div class="common">
  375. <span class="common-title">支付方式:</span
  376. ><span>{{ cardInfo.pay_way }}</span>
  377. </div>
  378. <div class="common">
  379. <span class="common-title">有效期限:</span
  380. ><span>{{ cardInfo.ex_time }}</span>
  381. </div>
  382. <div class="common">
  383. <span class="common-title">实付金额:</span
  384. ><span>¥{{ cardInfo.price }}</span>
  385. </div>
  386. <div class="consume-list">
  387. <div class="consume-title">消耗信息:</div>
  388. <div
  389. class="consume-info min-size"
  390. v-for="(item, index) in cardLogList"
  391. :key="index"
  392. >
  393. <div class="shop">{{ item.store_name }}</div>
  394. <div class="project-tips">{{ item.remark }}</div>
  395. <div class="project-ts">{{ item.create_time }}</div>
  396. </div>
  397. </div>
  398. </div>
  399. <div class="confirm" @click="confirm">确定</div>
  400. </div>
  401. </mine-pupop>
  402. </div>
  403. </template>
  404. <script>
  405. import api from "../../../server/home";
  406. import minePupop from "../../../components/minePupop/index.vue";
  407. export default {
  408. components: {
  409. minePupop,
  410. },
  411. data() {
  412. return {
  413. couponList: [
  414. {
  415. value: "选项1",
  416. label: "黄金糕",
  417. },
  418. {
  419. value: "选项2",
  420. label: "双皮奶",
  421. },
  422. ],
  423. tableData: [
  424. {
  425. date: "2022.04.25 14:30",
  426. name: "滴滴滴",
  427. headImg:
  428. "https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/home/unpaid.png",
  429. phone: "13346783645",
  430. numberList: 2,
  431. price: 100,
  432. shop: "运用店",
  433. status: 2,
  434. },
  435. {
  436. date: "2022.04.25 14:30",
  437. name: "滴滴滴",
  438. headImg:
  439. "https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/home/unpaid.png",
  440. phone: "13346783645",
  441. numberList: 5,
  442. price: 800,
  443. shop: "武昌店",
  444. status: 1,
  445. },
  446. ],
  447. statusStr: ["未支付", "待使用", "正在使用", "已结算", "已取消"],
  448. couponStatus: ["待使用", "已使用", "已过期"],
  449. goodStatus: ["未支付", "已支付", "已取货"],
  450. activeName: "first",
  451. currentPage1: 1,
  452. couponData: [],
  453. goodData: [],
  454. projectData: [],
  455. cardOrderData: [],
  456. total: 100,
  457. limit: 10,
  458. isPore: false,
  459. cardInfo: {}, //订单详情
  460. cardLogList: [], //次卡消耗记录
  461. cardListData: [], //用户次卡列表
  462. balanceListData: [], //用户余额变更记录
  463. };
  464. },
  465. computed: {},
  466. watch: {},
  467. methods: {
  468. // 获取优惠券订单
  469. getUserCoupon() {
  470. let params = {
  471. page: this.currentPage1,
  472. limit: this.limit,
  473. id: this.id,
  474. };
  475. api.getUserCoupon(params).then((res) => {
  476. this.couponData = res.data.list;
  477. this.total = res.data.total;
  478. });
  479. },
  480. reduce(index) {
  481. this.cardInfo.project_list[index].num--;
  482. if (this.cardInfo.project_list[index].num < 0) {
  483. this.cardInfo.project_list[index].num = 0;
  484. }
  485. },
  486. //次卡订单详情
  487. openDetail(row, column, event) {
  488. this.isPore = true;
  489. api.cardInfo({ id: row.id }).then((res) => {
  490. if (res.code == 200) {
  491. this.cardInfo = res.data;
  492. }
  493. });
  494. api.cardLog({ id: row.id }).then((res) => {
  495. if (res.code == 200) {
  496. this.cardLogList = res.data.list;
  497. }
  498. });
  499. },
  500. confirm() {
  501. // 项目ID,json字符,格式如:[{"project_id":"10","num":5}],project_id:适用项目ID,num:剩余次数
  502. let project_data = [],
  503. project_info = {};
  504. this.cardInfo.project_list.forEach((res) => {
  505. project_info = {
  506. project_id: res.id,
  507. num: res.num,
  508. };
  509. project_data.push(project_info);
  510. });
  511. api
  512. .cardUpdate({
  513. id: this.cardInfo.id,
  514. project_data: JSON.stringify(project_data),
  515. })
  516. .then((res) => {
  517. if (res.code == 200) {
  518. this.$message.success("更改成功!");
  519. this.isPore = false;
  520. }
  521. });
  522. },
  523. // 获取商品订单
  524. getUserGoods() {
  525. let params = {
  526. page: this.currentPage1,
  527. limit: this.limit,
  528. id: this.id,
  529. };
  530. api.getUserGoods(params).then((res) => {
  531. this.goodData = res.data.list;
  532. this.total = res.data.total;
  533. });
  534. },
  535. // 获取获取项目订单
  536. getUserProject() {
  537. let params = {
  538. page: this.currentPage1,
  539. limit: this.limit,
  540. id: this.id,
  541. };
  542. api.getUserProject(params).then((res) => {
  543. this.projectData = res.data.list;
  544. this.total = res.data.total;
  545. });
  546. },
  547. // 获取卡券订单
  548. // async getCardOrders() {
  549. // let params = {
  550. // page: this.currentPage1,
  551. // limit: this.limit,
  552. // id: this.id,
  553. // };
  554. // let resp = await api.getCardOrders(params);
  555. // if (resp.code === 200) {
  556. // console.log(resp, "adadasdasdadsadsadasd");
  557. // this.cardOrderData = resp.data.list;
  558. // this.total = resp.data.total;
  559. // }
  560. // },
  561. //获取用户次卡列表
  562. async getCardList() {
  563. let params = {
  564. page: this.currentPage1,
  565. limit: this.limit,
  566. id: this.id,
  567. };
  568. let resp = await api.getCardList(params);
  569. if (resp.code === 200) {
  570. console.log(resp, "asdasdasd");
  571. this.cardListData = resp.data.list;
  572. this.total = resp.data.total;
  573. }
  574. },
  575. // 获取余额变更记录
  576. async getBalanceRecord() {
  577. let params = {
  578. page: this.currentPage1,
  579. limit: this.limit,
  580. id: this.id,
  581. };
  582. let resp = await api.getBalanceRecord(params);
  583. if (resp.code === 200) {
  584. console.log(resp, "asdasdasd");
  585. this.balanceListData = resp.data.list;
  586. this.total = resp.data.count;
  587. }
  588. },
  589. handleCurrentChange(val) {
  590. this.currentPage1 = val;
  591. if (this.activeName == "first") {
  592. this.getUserProject();
  593. } else if (this.activeName == "second") {
  594. // this.getCardOrders();
  595. this.getCardList();
  596. } else if (this.activeName == "third") {
  597. this.getUserGoods();
  598. } else if (this.activeName == "fourth") {
  599. this.getUserCoupon();
  600. } else if (this.activeName == "five") {
  601. this.getBalanceRecord();
  602. }
  603. },
  604. handleSelectionChange(row, column, event) {
  605. this.$router.push({
  606. path: "/historicalOrder/details",
  607. query: {
  608. id: row.id,
  609. },
  610. });
  611. },
  612. onSubmit() {},
  613. submitFrequency() {},
  614. changeTab(e) {
  615. this.currentPage1 = 1;
  616. console.log(this.currentPage1);
  617. if (e.index == 0) {
  618. this.getUserProject();
  619. } else if (e.index == 1) {
  620. // this.getCardOrders();
  621. this.getCardList();
  622. } else if (e.index == 2) {
  623. this.getUserGoods();
  624. } else if (e.index == 3) {
  625. this.getUserCoupon();
  626. } else if (e.index == 4) {
  627. this.getBalanceRecord();
  628. }
  629. },
  630. },
  631. created() {
  632. let id = this.$route.query.id;
  633. let activeName = this.$route.query.activeName;
  634. this.activeName = activeName;
  635. this.id = id;
  636. if (this.activeName == "first") {
  637. this.getUserProject();
  638. } else if (this.activeName == "second") {
  639. // this.getCardOrders();
  640. this.getCardList();
  641. } else if (this.activeName == "third") {
  642. this.getUserGoods();
  643. } else if (this.activeName == "fourth") {
  644. this.getUserCoupon();
  645. } else if (this.activeName == "five") {
  646. this.getBalanceRecord();
  647. }
  648. },
  649. activated(){
  650. let id = this.$route.query.id;
  651. let activeName = this.$route.query.activeName;
  652. this.activeName = activeName;
  653. this.id = id;
  654. if (this.activeName == "first") {
  655. this.getUserProject();
  656. } else if (this.activeName == "second") {
  657. // this.getCardOrders();
  658. this.getCardList();
  659. } else if (this.activeName == "third") {
  660. this.getUserGoods();
  661. } else if (this.activeName == "fourth") {
  662. this.getUserCoupon();
  663. } else if (this.activeName == "five") {
  664. this.getBalanceRecord();
  665. }
  666. },
  667. mounted() {},
  668. };
  669. </script>
  670. <style lang='less' scoped>
  671. .order {
  672. height: 100%;
  673. width: 100%;
  674. .pagin {
  675. padding: 20px 0;
  676. .el-pagination {
  677. text-align: center;
  678. }
  679. }
  680. .colorList {
  681. color: green;
  682. }
  683. }
  684. .color0 {
  685. color: #fc3019;
  686. }
  687. .color1 {
  688. color: #3ef3ed;
  689. }
  690. .color2 {
  691. color: #00eeee;
  692. }
  693. .color3 {
  694. color: #61d09d;
  695. }
  696. .color4 {
  697. color: #3115cc;
  698. }
  699. .color5 {
  700. color: #fc3019;
  701. }
  702. .color6 {
  703. color: #a999ea;
  704. }
  705. .priceColor {
  706. color: #ff3007;
  707. }
  708. .pore-block {
  709. width: 540px;
  710. height: 400px;
  711. background: #ffffff;
  712. border-radius: 8px;
  713. position: relative;
  714. padding: 26px 72px 80px 30px;
  715. .delete-pupop {
  716. width: 32px;
  717. position: absolute;
  718. right: 5px;
  719. top: 5px;
  720. img {
  721. width: 100%;
  722. }
  723. }
  724. .pore-content {
  725. overflow: scroll;
  726. height: 310px;
  727. .card-title {
  728. font-size: 14px;
  729. font-family: PingFangSC-Medium, PingFang SC;
  730. font-weight: 500;
  731. color: #333333;
  732. line-height: 20px;
  733. text-align: center;
  734. }
  735. .project {
  736. display: flex;
  737. font-size: 13px;
  738. font-family: PingFangSC-Regular, PingFang SC;
  739. font-weight: 400;
  740. color: #333333;
  741. line-height: 18px;
  742. .project-title {
  743. color: #999999;
  744. }
  745. .project-list {
  746. flex: 1;
  747. .project-info {
  748. flex: 1;
  749. .change-num {
  750. margin-top: 6px;
  751. width: 100%;
  752. display: flex;
  753. justify-content: end;
  754. .num-content {
  755. width: 104px;
  756. height: 28px;
  757. background: #ffffff;
  758. border-radius: 2px;
  759. border: 1px solid #fa7d22;
  760. display: flex;
  761. align-items: center;
  762. .content-left,
  763. .content-right {
  764. width: 28px;
  765. height: 100%;
  766. background: #fa7d22;
  767. font-size: 20px;
  768. line-height: 24px;
  769. color: #ffffff;
  770. text-align: center;
  771. }
  772. .content-num {
  773. flex: 1;
  774. font-size: 12px;
  775. font-family: PingFangSC-Regular, PingFang SC;
  776. font-weight: 400;
  777. color: rgba(0, 0, 0, 0.65);
  778. text-align: center;
  779. }
  780. }
  781. }
  782. }
  783. }
  784. }
  785. .common {
  786. margin-top: 6px;
  787. font-size: 13px;
  788. font-family: PingFangSC-Regular, PingFang SC;
  789. font-weight: 400;
  790. color: #333333;
  791. line-height: 18px;
  792. .common-title {
  793. color: #999999;
  794. }
  795. }
  796. .consume-list {
  797. margin-top: 6px;
  798. .consume-title {
  799. font-size: 13px;
  800. font-family: PingFangSC-Regular, PingFang SC;
  801. font-weight: 400;
  802. color: #999999;
  803. line-height: 18px;
  804. }
  805. .consume-info {
  806. margin-top: 6px;
  807. font-size: 10px;
  808. font-family: PingFangSC-Regular, PingFang SC;
  809. font-weight: 400;
  810. color: #333333;
  811. line-height: 14px;
  812. display: flex;
  813. justify-content: space-between;
  814. .shop {
  815. }
  816. .project-tips {
  817. flex: 1;
  818. margin: 0 10px;
  819. }
  820. .project-ts {
  821. }
  822. }
  823. }
  824. }
  825. .confirm {
  826. background: #fa7d22;
  827. border-radius: 14px;
  828. position: absolute;
  829. bottom: 42px;
  830. left: 50%;
  831. transform: translateX(-50%);
  832. width: 176px;
  833. height: 28px;
  834. font-size: 14px;
  835. font-family: PingFangSC-Medium, PingFang SC;
  836. font-weight: 500;
  837. color: #ffffff;
  838. line-height: 28px;
  839. text-align: center;
  840. }
  841. }
  842. </style>