brand.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131
  1. <template>
  2. <div class="page shop-cart-page" :class="{ page_red: theme === 1 }">
  3. <div class="page__top">
  4. <div class="search">
  5. <i class="iconfont icontubiao- search__icon"></i>
  6. <input
  7. class="search__text"
  8. v-model="searchVal"
  9. @confirm="search()"
  10. type="text"
  11. placeholder="搜索你想要的商品"
  12. />
  13. <i
  14. class="iconfont iconclose_icon search__icon remove-icon"
  15. @click="closeSearchVal"
  16. ></i>
  17. </div>
  18. </div>
  19. <div class="page__content">
  20. <div class="page__box">
  21. <scroll-view class="category" :scroll-y="true">
  22. <ul class="category__list">
  23. <li
  24. class="category__item"
  25. :class="{
  26. 'category__item--active':
  27. cateId === item.categoryId,
  28. }"
  29. v-for="(item, index) in classifyList"
  30. :key="index"
  31. @click="setCategory(item)"
  32. >
  33. {{ item.name }}
  34. </li>
  35. </ul>
  36. </scroll-view>
  37. <div class="page__right">
  38. <div class="status-tab">
  39. <span
  40. :class="{ on: display === 1 }"
  41. @click="steDisplay(1)"
  42. >展示中</span
  43. >
  44. <span
  45. :class="{ on: display === 0 }"
  46. @click="steDisplay(0)"
  47. >已隐藏</span
  48. >
  49. </div>
  50. <div class="goods">
  51. <scroll-view
  52. class="goods__scroll"
  53. :scroll-y="true"
  54. @scrolltolower="getMoreActivityList"
  55. >
  56. <ul class="goods__list">
  57. <li
  58. class="goods__item"
  59. v-for="(item, index) in activityList"
  60. :key="index"
  61. >
  62. <div class="main" @click="goDetail(item)">
  63. <my-image
  64. class="goods__img"
  65. :src="item.brandLogo"
  66. @click="edit(item)"
  67. ></my-image>
  68. <div class="goods__info">
  69. <div class="goods__box">
  70. <div
  71. class="goods__title"
  72. @click="edit(item)"
  73. >
  74. {{ item.brandName }}
  75. </div>
  76. <div class="goods__sale black">
  77. {{
  78. item.endTime | viewDate
  79. }}
  80. </div>
  81. <div class="goods__sale flex">
  82. <span>
  83. {{
  84. item.onlineProductCount
  85. }}款
  86. </span>
  87. <span>
  88. 最多赚:{{
  89. item.maxCommission /
  90. 100
  91. }}
  92. </span>
  93. </div>
  94. </div>
  95. <!-- <div
  96. class="goods__price"
  97. @click="edit(item)"
  98. >
  99. <div class="goods__present">
  100. 价格:{{ "¥" + item.price / 100 }}
  101. </div>
  102. <div
  103. class="goods__original"
  104. v-if="item.stock !== 0"
  105. >
  106. 库存:{{ "¥" + item.stock }}
  107. </div>
  108. </div> -->
  109. <!-- 登录 -->
  110. </div>
  111. </div>
  112. <div class="btns">
  113. <div
  114. class="btn"
  115. @click="setActivityTop(item)"
  116. >
  117. {{
  118. item.top === 0
  119. ? "置顶"
  120. : "取消置顶"
  121. }}
  122. </div>
  123. <div
  124. class="btn"
  125. @click="setActivityDisplay(item)"
  126. >
  127. {{
  128. item.display === 1
  129. ? "隐藏"
  130. : "显示"
  131. }}
  132. </div>
  133. <div
  134. class="btn"
  135. @click="pushGive(item)"
  136. >
  137. 推送
  138. </div>
  139. <div
  140. class="btn"
  141. @click="shareApp(item)"
  142. >
  143. 分享
  144. </div>
  145. </div>
  146. </li>
  147. </ul>
  148. <div
  149. class="more-text"
  150. v-if="activityList.length && !isMoreEnd"
  151. >
  152. - 没有更多品牌了 -
  153. </div>
  154. <div
  155. class="null"
  156. v-if="loading && !activityList.length"
  157. >
  158. <img
  159. class="null__img"
  160. src="/static/common/goods_null.jpg"
  161. alt
  162. />
  163. <div class="null__title">
  164. 抱歉!没有找到相关品牌~
  165. </div>
  166. </div>
  167. </scroll-view>
  168. </div>
  169. </div>
  170. </div>
  171. </div>
  172. </div>
  173. </template>
  174. <script>
  175. import MyImage from "../../components/image/index";
  176. import plugin from "../../common/js/plugin";
  177. export default {
  178. name: "",
  179. components: { MyImage },
  180. // 数据
  181. data() {
  182. return {
  183. cateId: "",
  184. shopId: "",
  185. display: 1,
  186. searchVal: "",
  187. classifyList: [],
  188. activityPageIndex: 1,
  189. activityList: [],
  190. isMoreEnd: false,
  191. otherUrl: "https://bot.ixiaokejia.com/",
  192. };
  193. },
  194. filters: {
  195. viewDate(dateStr) {
  196. if (!dateStr) {
  197. return "";
  198. }
  199. if (isNaN(Date.parse(dateStr))) {
  200. return dateStr;
  201. }
  202. dateStr = dateStr.replace(/-/g, "/");
  203. let dateNow = Date.parse(dateStr);
  204. let mius = dateNow - Date.now();
  205. let minute = 1000 * 60;
  206. let hour = minute * 60;
  207. let day = hour * 24;
  208. let month = day * 30;
  209. let quarter = month * 3;
  210. let year = quarter * 12;
  211. if (mius < 0) {
  212. return `结束时间:${plugin.dateFormat(dateStr, "MM-dd hh:mm")}`;
  213. } else if (mius < minute) {
  214. return `距结束还有${Math.floor(mius / 1000)}秒`;
  215. } else if (mius < hour) {
  216. return `距结束还有${Math.floor(mius / minute)}分钟`;
  217. } else if (mius < day) {
  218. return `距结束还有${Math.floor(mius / hour)}小时`;
  219. } else if (mius < month) {
  220. return `距结束还有${Math.floor(mius / day)}天`;
  221. } else if (mius < quarter) {
  222. return `结束时间:${plugin.dateFormat(dateStr, "MM-dd hh:mm")}`;
  223. }
  224. },
  225. },
  226. onLoad(opts) {
  227. this.cateId = opts.cateId;
  228. },
  229. async onShow() {
  230. this.getClassify();
  231. this.getActivityList();
  232. },
  233. onPullDownRefresh() {
  234. this.getClassify();
  235. this.getActivityList();
  236. },
  237. // 函数
  238. methods: {
  239. // 获取店铺信息
  240. getShopInfo() {
  241. this.api
  242. .get("/Shop/GetInfo", {}, { pass: true })
  243. .then((infoRes) => {
  244. this.shopId = infoRes.data.id;
  245. });
  246. },
  247. // 改变活动显示隐藏tab
  248. steDisplay(val) {
  249. this.display = val;
  250. this.getActivityList();
  251. },
  252. // 获取商品分类
  253. getClassify() {
  254. this.api.get("/Yx/GetCategoryList", {}).then((res) => {
  255. this.classifyList = res.data;
  256. });
  257. },
  258. // 设置商品分类
  259. setCategory(val) {
  260. this.cateId = val.categoryId;
  261. this.activityPageIndex = 1;
  262. this.getActivityList();
  263. },
  264. // 获取活动列表
  265. getActivityList() {
  266. this.isMoreEnd = false;
  267. this.activityPageIndex = 1;
  268. let sendData = {
  269. cateId: this.cateId,
  270. pageIndex: this.activityPageIndex++,
  271. display: this.display,
  272. };
  273. if (this.searchVal) {
  274. sendData.keyword = this.searchVal;
  275. }
  276. uni.showLoading({
  277. title: "加载中...",
  278. });
  279. this.api.get("/Yx/GetActivityList", sendData).then((res) => {
  280. uni.stopPullDownRefresh();
  281. uni.hideLoading();
  282. this.activityList = res.data;
  283. if (res.data.length) {
  284. } else {
  285. self.isMoreEnd = true;
  286. }
  287. });
  288. },
  289. // 获取活动列表
  290. getMoreActivityList() {
  291. if (this.isMoreEnd) {
  292. return;
  293. }
  294. let sendData = {
  295. cateId: this.cateId,
  296. pageIndex: this.activityPageIndex++,
  297. display: this.display,
  298. };
  299. if (this.searchVal) {
  300. sendData.keyword = this.searchVal;
  301. }
  302. this.api.get("/Yx/GetActivityList", sendData).then((res) => {
  303. if (res.data.length) {
  304. this.activityList = this.activityList.concat(res.data);
  305. } else {
  306. self.isMoreEnd = true;
  307. }
  308. });
  309. },
  310. // 设置活动置顶
  311. setActivityTop(val) {
  312. if (val.top > 0) {
  313. // 取消置顶
  314. this.api
  315. .get("/Yx/CancelActivityTop", {
  316. aid: val.aid,
  317. })
  318. .then((res) => {
  319. if (res.success) {
  320. val.top = 0;
  321. this.$forceUpdate();
  322. this.fn.showToast("取消成功");
  323. } else {
  324. this.fn.showModal({
  325. title: "设置失败",
  326. content: res.message,
  327. showCancel: false,
  328. });
  329. }
  330. });
  331. } else {
  332. // 置顶
  333. this.api
  334. .get("/Yx/SetActivityTop", {
  335. aid: val.aid,
  336. })
  337. .then((res) => {
  338. if (res.success) {
  339. val.top = 1;
  340. this.$forceUpdate();
  341. this.fn.showToast("置顶成功");
  342. } else {
  343. this.fn.showModal({
  344. title: "设置失败",
  345. content: res.message,
  346. showCancel: false,
  347. });
  348. }
  349. });
  350. }
  351. },
  352. // 设置活动显示或隐藏
  353. setActivityDisplay(val) {
  354. let display = 0;
  355. if (val.display === 1) {
  356. // 隐藏
  357. display = 0;
  358. } else {
  359. // 置顶
  360. display = 1;
  361. }
  362. this.api
  363. .get("/Yx/SetActivityDisplay", {
  364. aid: val.aid,
  365. display,
  366. })
  367. .then((res) => {
  368. if (res.success) {
  369. val.display = display;
  370. this.$forceUpdate();
  371. this.fn.showToast("设置成功");
  372. } else {
  373. this.fn.showModal({
  374. title: "设置失败",
  375. content: res.message,
  376. showCancel: false,
  377. });
  378. }
  379. });
  380. },
  381. // 推送
  382. pushGive(item,type) {
  383. let sendData = {
  384. pid: item.aid,
  385. aid: item.aid,
  386. // storeId: item.storeId,
  387. platform:1000
  388. };
  389. if (type === "text") {
  390. sendData.sendTxt = false;
  391. sendData.sendVideo = false;
  392. sendData.sendImg = 0;
  393. } else {
  394. // sendData.sendTxt = true;
  395. // sendData.sendVideo = true;
  396. // sendData.sendImg = 3;
  397. }
  398. this.api
  399. .get(this.otherUrl + "Home/sendproduct", sendData, {
  400. pass: true,
  401. })
  402. .then((res) => {
  403. this.fn.showToast(res.message);
  404. });
  405. },
  406. // 分享
  407. shareApp(val) {
  408. uni.navigateToMiniProgram({
  409. appId: "wx7d16ba51271496b8",
  410. path: `/pages/recommend/list?shopId=${this.shopId}&aid=${val.aid}`,
  411. extraData: {
  412. shopId: this.shopId,
  413. aid: val.aid,
  414. },
  415. });
  416. },
  417. // 搜索
  418. search() {
  419. if (this.searchVal) {
  420. this.getActivityList();
  421. }
  422. },
  423. // 取消搜索
  424. closeSearchVal() {
  425. this.searchVal = "";
  426. this.getActivityList();
  427. },
  428. // 去详情
  429. goDetail(val) {
  430. this.$store.commit("common/update", {
  431. activityData: val,
  432. });
  433. this.router.push({
  434. path: "/pages/youxuan/good",
  435. query: {
  436. aid: val.aid,
  437. },
  438. });
  439. },
  440. },
  441. // 数据计算
  442. computed: {
  443. // 判断主题 1:红色 2:绿色
  444. theme() {
  445. return this.$store.state.common.theme;
  446. },
  447. user() {
  448. return this.$store.state.user.user;
  449. },
  450. },
  451. // 数据监听
  452. watch: {},
  453. };
  454. </script>
  455. <style>
  456. page {
  457. height: 100%;
  458. background-color: #fff;
  459. }
  460. </style>
  461. <style lang="scss" scoped>
  462. .page {
  463. display: flex;
  464. flex-direction: column;
  465. height: 100%;
  466. &__top {
  467. display: flex;
  468. justify-content: space-between;
  469. align-items: center;
  470. height: px(145);
  471. padding: 0 px(50);
  472. background-color: #fff;
  473. // box-shadow: 0 px(-5) px(10) #333;
  474. }
  475. &__content {
  476. position: relative;
  477. flex: 1;
  478. margin-top: px(5);
  479. }
  480. &__box {
  481. position: absolute;
  482. top: 0;
  483. left: 0;
  484. right: 0;
  485. bottom: 0;
  486. z-index: 1;
  487. display: flex;
  488. justify-content: space-between;
  489. }
  490. &__right {
  491. display: flex;
  492. flex-direction: column;
  493. flex: 1;
  494. position: relative;
  495. }
  496. }
  497. .search {
  498. display: flex;
  499. align-items: center;
  500. width: 100%;
  501. height: px(86);
  502. padding: 0 px(35);
  503. background-color: #f8f8f8;
  504. border-radius: px(43);
  505. &__icon {
  506. margin-top: px(10);
  507. font-size: px(60);
  508. color: #999;
  509. }
  510. &__text {
  511. margin-left: px(15);
  512. font-size: px(36);
  513. color: #999;
  514. width: 100%;
  515. }
  516. }
  517. .service {
  518. display: flex;
  519. flex-direction: column;
  520. justify-content: center;
  521. align-items: center;
  522. &__icon {
  523. font-size: px(50);
  524. color: #666;
  525. }
  526. &__text {
  527. font-size: px(30);
  528. color: #666;
  529. }
  530. }
  531. .category {
  532. width: px(225);
  533. height: 100%;
  534. background-color: #f8f6f7;
  535. &__item {
  536. position: relative;
  537. display: flex;
  538. justify-content: center;
  539. font-size: px(40);
  540. color: #888;
  541. background-color: #f8f6f7;
  542. padding: px(60) 0;
  543. &--active {
  544. // font-weight: 700;
  545. color: #333;
  546. background-color: #fff;
  547. &:before {
  548. content: "";
  549. position: absolute;
  550. top: 50%;
  551. left: 0;
  552. z-index: 1;
  553. display: block;
  554. width: px(8);
  555. height: 100%;
  556. transform: translateY(-50%);
  557. border-radius: px(4);
  558. background-color: #27a34f;
  559. }
  560. }
  561. }
  562. }
  563. .category-sub {
  564. position: relative;
  565. height: px(130);
  566. background-color: #fff;
  567. margin-right: px(140);
  568. margin-left: px(20);
  569. &__scroll {
  570. position: absolute;
  571. top: 0;
  572. bottom: 0;
  573. left: 0;
  574. right: 0;
  575. z-index: 1;
  576. }
  577. &__list {
  578. display: flex;
  579. align-items: center;
  580. height: 100%;
  581. }
  582. &__toggle {
  583. position: absolute;
  584. top: 0;
  585. right: px(-140);
  586. z-index: 2;
  587. width: px(140);
  588. height: 100%;
  589. display: flex;
  590. justify-content: center;
  591. align-items: center;
  592. font-size: px(30);
  593. transform: rotate(90deg);
  594. &.active {
  595. transform: rotate(-90deg);
  596. }
  597. }
  598. &__item {
  599. position: relative;
  600. display: flex;
  601. align-items: center;
  602. justify-content: center;
  603. flex: none;
  604. height: 100%;
  605. font-size: px(34);
  606. width: px(220);
  607. color: #333;
  608. height: px(70);
  609. border-radius: px(35);
  610. background-color: #f6f6f6;
  611. border: 1px solid #f6f6f6;
  612. color: #888;
  613. margin: 0 px(10);
  614. &--active {
  615. color: #262626;
  616. background-color: rgba(39, 163, 79, 0.2);
  617. border: 1px solid #27a34f;
  618. color: #27a34f;
  619. }
  620. }
  621. }
  622. .category-sub-all {
  623. position: absolute;
  624. top: 0;
  625. left: 0;
  626. bottom: 0;
  627. width: 100%;
  628. z-index: 10;
  629. margin-top: px(130);
  630. &__bg {
  631. width: 100%;
  632. height: 100%;
  633. background-color: rgba(0, 0, 0, 0.3);
  634. }
  635. &__scroll {
  636. position: absolute;
  637. top: 0;
  638. left: 0;
  639. right: 0;
  640. bottom: 0;
  641. z-index: 10;
  642. }
  643. &__list {
  644. display: flex;
  645. flex-wrap: wrap;
  646. background-color: #fff;
  647. padding: px(60) px(40);
  648. }
  649. &__item {
  650. display: flex;
  651. align-items: center;
  652. justify-content: center;
  653. flex: none;
  654. height: 100%;
  655. font-size: px(34);
  656. width: px(220);
  657. color: #333;
  658. height: px(70);
  659. border-radius: px(35);
  660. background-color: #f6f6f6;
  661. border: 1px solid #f6f6f6;
  662. color: #888;
  663. margin: 0 px(20) px(30);
  664. flex-shrink: 0;
  665. &--active {
  666. color: #262626;
  667. background-color: rgba(39, 163, 79, 0.2);
  668. border: 1px solid #27a34f;
  669. color: #27a34f;
  670. }
  671. }
  672. }
  673. .goods {
  674. position: relative;
  675. flex: 1;
  676. border-top: 1px solid #f6f6f6;
  677. &__scroll {
  678. position: absolute;
  679. top: 0;
  680. bottom: 0;
  681. left: 0;
  682. right: 0;
  683. z-index: 1;
  684. background-color: #fff;
  685. }
  686. &__list {
  687. display: flex;
  688. flex-wrap: wrap;
  689. justify-content: space-between;
  690. padding: px(35) 0 0 0;
  691. background-color: #fff;
  692. border-top: 1px solid #f6f6f6;
  693. }
  694. &__item {
  695. width: 100%;
  696. margin-bottom: px(60);
  697. border-bottom: 1px solid #f1f1f1;
  698. }
  699. .main {
  700. width: 100%;
  701. overflow: hidden;
  702. // border-radius: px(20) px(20) 0 0;
  703. display: flex;
  704. justify-content: space-between;
  705. padding: 0 px(35);
  706. }
  707. &__img {
  708. flex-shrink: 0;
  709. margin-right: px(30);
  710. /deep/ img {
  711. width: px(230);
  712. height: px(230);
  713. }
  714. }
  715. &__info {
  716. display: flex;
  717. justify-content: space-between;
  718. flex-direction: column;
  719. align-items: flex-start;
  720. position: relative;
  721. width: 100%;
  722. }
  723. &__box {
  724. width: 100%;
  725. }
  726. &__title {
  727. width: 100%;
  728. @include omits(2);
  729. max-height: px(88);
  730. line-height: px(44);
  731. margin-top: px(30);
  732. font-size: px(38);
  733. color: #333;
  734. }
  735. &__price {
  736. // margin-top: px(30);
  737. }
  738. &__sale {
  739. font-size: px(34);
  740. line-height: px(40);
  741. color: #999;
  742. margin-top: px(20);
  743. span ~ span {
  744. margin-left: px(20);
  745. }
  746. &.flex {
  747. display: flex;
  748. align-items: center;
  749. justify-content: space-between;
  750. }
  751. &.black {
  752. color: #666;
  753. }
  754. }
  755. &__present {
  756. font-size: px(36);
  757. color: #000;
  758. font-weight: 600;
  759. }
  760. &__original {
  761. position: relative;
  762. font-size: px(30);
  763. color: #999;
  764. margin-top: px(20);
  765. text-decoration: line-through;
  766. &:after {
  767. content: "";
  768. position: absolute;
  769. top: 50%;
  770. left: 0;
  771. z-index: 1;
  772. width: 100%;
  773. height: px(1);
  774. transform: translateY(-100%);
  775. background-color: #999;
  776. }
  777. }
  778. .btns {
  779. overflow: visible;
  780. // position: absolute;
  781. // bottom: 0;
  782. // right: 0;
  783. // z-index: 1;
  784. width: 100%;
  785. display: flex;
  786. align-items: center;
  787. max-width: 100%;
  788. border-top: 1px solid #f1f1f1;
  789. margin-top: px(20);
  790. }
  791. .btn {
  792. width: 25%;
  793. height: px(100);
  794. line-height: px(100);
  795. // background-color: #27a34f;
  796. color: #333;
  797. font-size: px(40);
  798. padding: 0 px(20);
  799. text-align: center;
  800. & ~ .btn {
  801. border-left: 1px solid #f1f1f1;
  802. }
  803. }
  804. .cart-num {
  805. // padding: px(30) px(10) px(10) px(30);
  806. padding: 0 px(30);
  807. box-sizing: border-box;
  808. min-width: px(60);
  809. }
  810. .num-input {
  811. overflow: visible;
  812. position: absolute;
  813. bottom: 0;
  814. right: 0;
  815. z-index: 1;
  816. }
  817. &__remove {
  818. background-color: #fff;
  819. width: px(60);
  820. height: px(60);
  821. border-radius: 50%;
  822. border: 1px solid #999;
  823. position: relative;
  824. &::after {
  825. content: "";
  826. position: absolute;
  827. top: 50%;
  828. left: 50%;
  829. z-index: 1;
  830. width: 60%;
  831. height: px(6);
  832. border-radius: px(6);
  833. background: #999;
  834. transform: translate(-50%, -50%);
  835. }
  836. }
  837. }
  838. .menu {
  839. display: flex;
  840. justify-content: space-between;
  841. align-items: center;
  842. height: px(110);
  843. margin-bottom: px(5);
  844. padding: 0 px(85);
  845. background-color: #fff;
  846. // box-shadow: 0 px(-5) px(10) #333;
  847. &__item {
  848. display: flex;
  849. align-items: center;
  850. }
  851. &__text {
  852. font-size: px(36);
  853. color: #888;
  854. }
  855. &__item--active &__text {
  856. color: #27a34f;
  857. }
  858. &__sort {
  859. margin-left: px(15);
  860. &:before {
  861. display: block;
  862. content: "";
  863. width: 0;
  864. height: 0;
  865. margin-bottom: px(10);
  866. border-width: px(12);
  867. border-style: solid;
  868. border-color: transparent transparent #ccc transparent;
  869. }
  870. &:after {
  871. display: block;
  872. content: "";
  873. width: 0;
  874. height: 0;
  875. border-width: px(12);
  876. border-style: solid;
  877. border-color: #ccc transparent transparent transparent;
  878. }
  879. &--up:before {
  880. border-color: transparent transparent #27a34f transparent;
  881. }
  882. &--down:after {
  883. border-color: #27a34f transparent transparent transparent;
  884. }
  885. }
  886. }
  887. .more-text {
  888. display: flex;
  889. justify-content: center;
  890. padding-bottom: px(60);
  891. font-size: px(34);
  892. color: #999;
  893. }
  894. .null {
  895. display: flex;
  896. flex-direction: column;
  897. justify-content: center;
  898. align-items: center;
  899. padding-top: px(115);
  900. &__img {
  901. width: px(576);
  902. height: px(281);
  903. }
  904. &__title {
  905. margin-top: px(60);
  906. font-size: px(40);
  907. color: #666;
  908. }
  909. }
  910. .page_red {
  911. /deep/ {
  912. .category {
  913. &__item {
  914. &--active {
  915. &:before {
  916. background-color: #fe6661;
  917. }
  918. }
  919. }
  920. }
  921. .category-sub {
  922. &__item {
  923. &--active {
  924. background-color: rgba(254, 102, 97, 0.2);
  925. border: 1px solid #fe6661;
  926. color: #fe6661;
  927. }
  928. }
  929. }
  930. .category-sub-all {
  931. &__item {
  932. &--active {
  933. color: #262626;
  934. background-color: rgba(254, 102, 97, 0.2);
  935. border: 1px solid #fe6661;
  936. color: #fe6661;
  937. }
  938. }
  939. }
  940. .goods {
  941. &__add-text {
  942. background-color: #fe6661;
  943. }
  944. &__add {
  945. background-color: #fe6661;
  946. box-shadow: px(1) px(2) px(6) #fe6661;
  947. }
  948. }
  949. .menu {
  950. .menu__item--active .menu__text {
  951. color: #fe6661;
  952. }
  953. &__sort {
  954. &--up:before {
  955. border-color: transparent transparent #fe6661 transparent;
  956. }
  957. &--down:after {
  958. border-color: #fe6661 transparent transparent transparent;
  959. }
  960. }
  961. }
  962. }
  963. }
  964. .item_one {
  965. border-bottom: 3px solid #c9c9c9;
  966. background-color: #efefef;
  967. padding: px(20) 0;
  968. display: flex;
  969. flex-direction: column;
  970. justify-content: center;
  971. align-items: center;
  972. }
  973. .switch {
  974. transform: scale(0.7);
  975. }
  976. .canvas {
  977. position: fixed;
  978. top: -100%;
  979. left: -100%;
  980. z-index: -11;
  981. width: 100%;
  982. height: 100%;
  983. background-color: rgba(0, 0, 0, 0.4);
  984. visibility: hidden;
  985. &__content {
  986. position: relative;
  987. width: 100%;
  988. height: 100%;
  989. padding: px(200) px(80) 0;
  990. z-index: 10;
  991. }
  992. &__close {
  993. position: absolute;
  994. top: px(50);
  995. right: px(120);
  996. z-index: 1;
  997. display: flex;
  998. justify-content: center;
  999. align-items: center;
  1000. width: px(100);
  1001. height: px(100);
  1002. border-radius: 50%;
  1003. border: solid px(3) #fff;
  1004. &:after {
  1005. content: "";
  1006. position: absolute;
  1007. top: px(100);
  1008. left: 50%;
  1009. z-index: 1;
  1010. display: block;
  1011. width: px(3);
  1012. height: px(50);
  1013. transform: translateX(-50%);
  1014. background-color: #fff;
  1015. }
  1016. }
  1017. &__img {
  1018. width: px(60);
  1019. height: px(60);
  1020. }
  1021. &__box {
  1022. width: px(920);
  1023. height: px(1483);
  1024. background-color: #fff;
  1025. }
  1026. }
  1027. .remove-icon {
  1028. padding-left: px(20);
  1029. }
  1030. .quick-add {
  1031. font-size: px(44);
  1032. color: rgb(0, 188, 38);
  1033. flex-shrink: 0;
  1034. margin-right: px(30);
  1035. }
  1036. .status-tab {
  1037. display: flex;
  1038. justify-content: center;
  1039. font-size: px(44);
  1040. text-align: center;
  1041. margin: px(40) 0;
  1042. span {
  1043. border: 1px solid #f1f1f1;
  1044. padding: px(20) 0;
  1045. width: 40%;
  1046. flex-shrink: 0;
  1047. &.on {
  1048. border-color: rgb(0, 188, 38);
  1049. color: rgb(0, 188, 38);
  1050. }
  1051. }
  1052. }
  1053. </style>