nc-member-buycard.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783
  1. <template>
  2. <view>
  3. <view class="search-wrap" v-if="!info && type == 'member'">
  4. <view class="header">会员信息</view>
  5. <view class="search-box">
  6. <view class="search-title">询问客户信息查询会员</view>
  7. <view class="search-content">
  8. <input placeholder="请输入会员信息" v-model="searchText" placeholder-style="font-size:0.16rem;color:#ACACAC;" @confirm="searchMember()" />
  9. <button class="primary-btn" @click="searchMember">查询</button>
  10. <button class="default-btn" plain="true" @click="addSwitch">录入</button>
  11. </view>
  12. <view class="search-desc">可查询会员账号、手机号、昵称、会员码(可使用扫码枪)、会员动态码</view>
  13. <view class="search-tips">使用扫码枪时,光标必须在输入框内,方可进行使用</view>
  14. </view>
  15. </view>
  16. <view class="info-wrap" v-if="info && type == 'member'">
  17. <view class="header">会员信息</view>
  18. <view class="headimg-content">
  19. <view class="headimg"><image :src="info.headimg ? $util.img(info.headimg) : $util.img(defaultImg.head)" @error="info.headimg = defaultImg.head"></image></view>
  20. <view class="header-info">
  21. <view class="name">
  22. {{ info.nickname }}
  23. <text v-if="info.member_level">{{ info.member_level_name }}</text>
  24. </view>
  25. <view class="header-info-item">
  26. <view>电话:{{ info.mobile }}</view>
  27. <view>性别:{{ info.sex == 0 ? '未知' : info.sex == 1 ? '男' : '女' }}</view>
  28. <view>生日:{{ info.birthday ? $util.timeFormat(info.birthday, 'y-m-d') : '--' }}</view>
  29. <view>注册时间:{{ info.reg_time | timeFormat }}</view>
  30. </view>
  31. </view>
  32. </view>
  33. <view class="content-data">
  34. <view class="content-data-item">
  35. <view class="item-title">余额</view>
  36. <view class="item-value">{{ (parseFloat(info.balance_money) + parseFloat(info.balance)) | moneyFormat }}</view>
  37. <view class="item-btn" @click="recharge()">充值</view>
  38. </view>
  39. <view class="content-data-item">
  40. <view class="item-title">积分</view>
  41. <view class="item-value">{{ info.point }}</view>
  42. <view class="item-btn"></view>
  43. </view>
  44. <view class="content-data-item">
  45. <view class="item-title">优惠券(张)</view>
  46. <view class="item-value">{{ info.coupon_num }}</view>
  47. <view class="item-btn" @click="coupon()">查看</view>
  48. </view>
  49. </view>
  50. <view class="content-data">
  51. <view class="content-data-item">
  52. <view class="item-title">总消费金额(元)</view>
  53. <view class="item-value">{{ info.order_money | moneyFormat }}</view>
  54. </view>
  55. <view class="content-data-item">
  56. <view class="item-title">消费订单数</view>
  57. <view class="item-value">{{ info.order_num }}</view>
  58. </view>
  59. <view class="content-data-item">
  60. <view class="item-title">平均客单价(元)</view>
  61. <view class="item-value" v-if="info.order_money > 0 && info.order_num > 0">{{ (info.order_money / info.order_num) | moneyFormat }}</view>
  62. <view class="item-value" v-else>0.00</view>
  63. </view>
  64. <view class="content-data-item">
  65. <view class="item-title">上次到店时间</view>
  66. <view class="item-value">{{ info.last_login_time ? $util.timeFormat(info.last_login_time) : '--' }}</view>
  67. </view>
  68. </view>
  69. </view>
  70. <view class="coupon-box" v-if="info && type == 'coupon'">
  71. <i class="iconguanbi1 iconfont " @click="type = 'member'"></i>
  72. <view class="content-list">
  73. <view class="content-item" v-for="(item, index) in memberCoupon" v-if="memberCoupon.length > 0">
  74. <view class="item-title">{{ item.coupon_name }}</view>
  75. <view class="item-content" v-if="item.type == 'reward' || item.type == 'random'">
  76. <text>¥</text>
  77. {{ item.money }}
  78. </view>
  79. <view class="item-content" v-if="item.type == 'discount'">
  80. {{ item.discount }}
  81. <text>折</text>
  82. </view>
  83. <view class="item-line"></view>
  84. <view class="item-bottom">
  85. <view class="item-desc" v-if="item.type == 'reward' || item.type == 'random'">满{{ item.at_least }}可用</view>
  86. <view class="item-desc" v-if="item.type == 'discount'">满{{ item.at_least }}可用,最多优惠{{ item.discount_limit }}元</view>
  87. <view class="item-time">{{ $util.timeFormat(item.start_time) }}至{{ $util.timeFormat(item.end_time) }}</view>
  88. </view>
  89. </view>
  90. <view class="empty" v-if="memberCoupon.length == 0">
  91. <image :src="$util.img('public/uniapp/cashier/goods_empty.png')" mode="widthFix"></image>
  92. <view class="tips">暂无优惠券</view>
  93. </view>
  94. </view>
  95. </view>
  96. <view class="form-box" v-if="!info && type == 'addmember'">
  97. <view class="header">录入会员</view>
  98. <view class="form-content">
  99. <view>
  100. <view class="form-item">
  101. <view class="form-label">
  102. <text class="required">*</text>
  103. 手机号:
  104. </view>
  105. <view class="form-inline search-wrap"><input type="number" class="form-input" v-model="memberData.mobile" placeholder="请输入会员手机号" /></view>
  106. </view>
  107. <view class="form-item">
  108. <view class="form-label">
  109. <text class="required"></text>
  110. 会员名称:
  111. </view>
  112. <view class="form-inline search-wrap"><input type="text" class="form-input" v-model="memberData.nickname" placeholder="请输入会员昵称" /></view>
  113. </view>
  114. <view class="form-item">
  115. <view class="form-label">
  116. <text class="required"></text>
  117. 性别:
  118. </view>
  119. <view class="form-inline search-wrap"><uni-data-checkbox v-model="memberData.sex" selectedColor="#8558FA" :localdata="sex"></uni-data-checkbox></view>
  120. </view>
  121. <view class="form-item">
  122. <view class="form-label">
  123. <text class="required"></text>
  124. 生日:
  125. </view>
  126. <view class="form-inline">
  127. <uni-datetime-picker :start="startDate" v-model="memberData.birthday" type="date" :clearIcon="false" @change="changeTime" />
  128. </view>
  129. </view>
  130. <view class="form-item">
  131. <view class="form-label">
  132. <text class="required"></text>
  133. 会员等级:
  134. </view>
  135. <view class="form-inline">
  136. <select-lay
  137. :zindex="10"
  138. :value="memberData.member_level"
  139. name="names"
  140. placeholder="请选择会员等级"
  141. :options="memberLevelList"
  142. @selectitem="selectMemberLevel"
  143. ></select-lay>
  144. </view>
  145. </view>
  146. </view>
  147. <view class="form-item">
  148. <view class="form-label"></view>
  149. <view class="form-inline">
  150. <button type="primary" class="primary-btn" @click="addMember">确定录入</button>
  151. <button type="primary" class="default-btn" @click="type = 'member'">返回搜索</button>
  152. </view>
  153. </view>
  154. </view>
  155. </view>
  156. </view>
  157. </template>
  158. <script>
  159. import uniDataCheckbox from '@/components/uni-data-checkbox/uni-data-checkbox.vue';
  160. export default {
  161. components: {
  162. uniDataCheckbox
  163. },
  164. name: 'ncMember',
  165. props: {},
  166. data() {
  167. return {
  168. memberId: 0,
  169. searchText: '',
  170. type: 'addmember',
  171. memberCoupon: [],
  172. startDate: '1900-1-1',
  173. sex: [
  174. {
  175. text: '未知',
  176. value: 0
  177. },
  178. {
  179. text: '男',
  180. value: 1
  181. },
  182. {
  183. text: '女',
  184. value: 2
  185. }
  186. ],
  187. memberData: {
  188. sex: 0,
  189. mobile: '',
  190. nickname: '',
  191. birthday: '',
  192. headimg: '',
  193. email: '',
  194. memberlabel: [],
  195. remark: '',
  196. member_level: 0,
  197. member_level_name: '',
  198. member_code: ''
  199. },
  200. flag: false,
  201. memberLevelList: []
  202. };
  203. },
  204. created() {
  205. this.getMemberLevel();
  206. },
  207. methods: {
  208. selectMemberLevel(index, item) {
  209. if (index >= 0) {
  210. this.memberData.member_level = item.value;
  211. this.memberData.member_level_name = item.label;
  212. } else {
  213. this.memberData.member_level = '';
  214. this.memberData.member_level_name = '';
  215. }
  216. this.$forceUpdate();
  217. },
  218. // 添加图片
  219. addImg(i) {
  220. this.$util.upload(
  221. 1,
  222. {
  223. path: 'headimg'
  224. },
  225. res => {
  226. if (res.length > 0) {
  227. this.memberData.headimg = res[0];
  228. this.$forceUpdate();
  229. }
  230. }
  231. );
  232. },
  233. getMemberLabel() {
  234. this.memberLabelList = [];
  235. this.$api.sendRequest({
  236. url: '/cashier/storeapi/MemberLabel/labellist',
  237. data: { page: 1, page_size: 0 },
  238. success: res => {
  239. if (res.code == 0 && res.data) {
  240. this.memberLabelList = res.data.list;
  241. }
  242. }
  243. });
  244. },
  245. getMemberLevel() {
  246. this.memberLevelList = [];
  247. this.$api.sendRequest({
  248. url: '/cashier/storeapi/memberlevel/lists',
  249. success: res => {
  250. if (res.code == 0 && res.data) {
  251. for (let i in res.data) {
  252. this.memberLevelList.push({
  253. label: res.data[i]['level_name'],
  254. value: res.data[i]['level_id'].toString(),
  255. disabled: false
  256. });
  257. }
  258. }
  259. }
  260. });
  261. },
  262. addSwitch() {
  263. this.type = 'addmember';
  264. this.memberData.mobile = this.searchText;
  265. },
  266. addMember() {
  267. if (this.verify()) {
  268. if (this.flag) return;
  269. this.flag = true;
  270. this.$api.sendRequest({
  271. url: '/cashier/storeapi/member/addMember',
  272. data: this.memberData,
  273. success: res => {
  274. if (res.code == 0 && res.data) {
  275. this.memberId = res.data;
  276. this.type = 'member';
  277. this.getMemberInfo();
  278. } else {
  279. this.$util.showToast({
  280. title: res.message
  281. });
  282. }
  283. this.flag = false;
  284. }
  285. });
  286. }
  287. },
  288. verify() {
  289. if (!this.memberData.mobile) {
  290. this.$util.showToast({
  291. title: '请输入会员手机号'
  292. });
  293. return false;
  294. }
  295. if (!this.$util.verifyMobile(this.memberData.mobile)) {
  296. this.$util.showToast({
  297. title: '请输入正确的手机号码'
  298. });
  299. return false;
  300. }
  301. return true;
  302. },
  303. changeTime(e) {
  304. this.memberData.birthday = e;
  305. },
  306. recharge() {
  307. this.$util.redirectTo('/pages/recharge/index');
  308. },
  309. coupon() {
  310. this.type = 'coupon';
  311. this.memberCoupon = [];
  312. this.$api.sendRequest({
  313. url: '/cashier/storeapi/member/coupon',
  314. data: {
  315. member_id: this.info.member_id,
  316. page: 1,
  317. page_size: 0
  318. },
  319. success: res => {
  320. if (res.code == 0 && res.data) {
  321. this.memberCoupon = res.data.list;
  322. }
  323. }
  324. });
  325. },
  326. searchMember() {
  327. if (!/[\S]+/.test(this.searchText)) {
  328. this.$util.showToast({ title: '请输入搜索内容' });
  329. return;
  330. }
  331. this.$api.sendRequest({
  332. url: '/cashier/storeapi/member/searchmember',
  333. data: {
  334. search_text: this.searchText
  335. },
  336. success: res => {
  337. if (res.code == 0 && res.data) {
  338. this.memberId = res.data.member_id;
  339. this.searchText = '';
  340. this.getMemberInfo();
  341. } else {
  342. this.$util.showToast({ title: '没有查询到对应会员' });
  343. }
  344. }
  345. });
  346. },
  347. searchMemberByType(searchText, searchType) {
  348. this.$api.sendRequest({
  349. url: '/cashier/storeapi/member/searchmember',
  350. data: {
  351. search_text: searchText,
  352. search_type: searchType
  353. },
  354. success: res => {
  355. if (res.code == 0 && res.data) {
  356. this.memberId = res.data.member_id;
  357. this.searchText = '';
  358. this.getMemberInfo();
  359. this.type = 'member';
  360. } else {
  361. this.$util.showToast({ title: '没有查询到对应会员' });
  362. }
  363. }
  364. });
  365. },
  366. getMemberInfo() {
  367. this.$api.sendRequest({
  368. url: '/cashier/storeapi/member/info',
  369. data: {
  370. member_id: this.memberId
  371. },
  372. success: res => {
  373. if (res.code == 0 && res.data) {
  374. this.$store.commit('setMemberInfo', res.data);
  375. } else {
  376. this.$util.showToast({ title: '未获取到会员信息' });
  377. }
  378. }
  379. });
  380. }
  381. },
  382. computed: {
  383. info() {
  384. if (!this.memberInfo) this.type = 'member';
  385. return this.memberInfo;
  386. }
  387. }
  388. };
  389. </script>
  390. <style lang="scss">
  391. .header {
  392. height: 0.66rem;
  393. line-height: 0.66rem;
  394. text-align: left;
  395. border-bottom: 0.01rem solid #e6e6e6;
  396. color: #303133;
  397. font-size: 0.14rem;
  398. }
  399. .search-wrap {
  400. .search-box {
  401. padding-top: 2rem;
  402. display: flex;
  403. align-items: center;
  404. height: calc(100% - 0.86rem);
  405. flex-direction: column;
  406. justify-content: center;
  407. .search-title {
  408. font-size: 0.18rem;
  409. color: #303133;
  410. }
  411. .search-content {
  412. width: 100%;
  413. display: flex;
  414. align-items: center;
  415. justify-content: center;
  416. margin-top: 0.3rem;
  417. input {
  418. height: 0.5rem;
  419. width: 60%;
  420. max-width: 5rem;
  421. background: #ffffff;
  422. padding-left: 0.2rem;
  423. border: 0.01rem solid #cccccc;
  424. box-sizing: border-box;
  425. font-size: 0.18rem;
  426. }
  427. button {
  428. margin: 0;
  429. width: 1.2rem;
  430. height: 0.5rem;
  431. font-size: 0.18rem;
  432. text-align: center;
  433. line-height: 0.5rem;
  434. margin-right: 0.15rem;
  435. }
  436. }
  437. .search-desc {
  438. color: #909399;
  439. font-size: 0.14rem;
  440. margin-top: 0.3rem;
  441. }
  442. .search-tips {
  443. color: $primary-color;
  444. font-size: 0.14rem;
  445. margin-top: 0.15rem;
  446. }
  447. }
  448. }
  449. .info-wrap {
  450. .headimg-content {
  451. display: flex;
  452. align-items: center;
  453. margin-top: 0.2rem;
  454. .headimg {
  455. width: 0.7rem;
  456. height: 0.7rem;
  457. border-radius: 50%;
  458. overflow: hidden;
  459. image {
  460. width: 100%;
  461. height: 100%;
  462. }
  463. }
  464. .header-info {
  465. margin-left: 0.15rem;
  466. width: calc(100% - 0.85rem);
  467. .name {
  468. font-size: 0.16rem;
  469. color: #303133;
  470. text {
  471. background: #ffffff;
  472. border: 0.01rem solid $primary-color;
  473. border-radius: 0.02rem;
  474. font-size: 0.12rem;
  475. color: $primary-color;
  476. margin-left: 0.15rem;
  477. padding: 0.01rem 0.04rem;
  478. }
  479. }
  480. .header-info-item {
  481. display: flex;
  482. align-items: center;
  483. margin-top: 0.1rem;
  484. justify-content: space-between;
  485. view {
  486. text-align: left;
  487. font-size: 0.14rem;
  488. color: #303133;
  489. opacity: 0.9;
  490. }
  491. }
  492. }
  493. }
  494. .content-data {
  495. display: flex;
  496. align-items: flex-start;
  497. justify-content: space-around;
  498. margin-top: 0.2rem;
  499. border: 0.01rem solid #e6e6e6;
  500. padding: 0.25rem 0.3rem;
  501. .content-data-item {
  502. width: 25%;
  503. .item-title {
  504. font-size: 0.14rem;
  505. font-weight: 400;
  506. color: #303133;
  507. opacity: 0.9;
  508. }
  509. .item-value {
  510. font-size: 0.2rem;
  511. color: #303133;
  512. margin-top: 0.1rem;
  513. }
  514. .item-btn {
  515. font-size: 0.14rem;
  516. color: $primary-color;
  517. margin-top: 0.05rem;
  518. cursor: pointer;
  519. }
  520. }
  521. }
  522. .table-data-list {
  523. padding: 0 0.15rem;
  524. margin-top: 0.2rem;
  525. }
  526. }
  527. // 优惠券
  528. .coupon-box {
  529. position: relative;
  530. padding-top: 0.3rem;
  531. .iconfont {
  532. position: absolute;
  533. right: 0.2rem;
  534. top: 0.2rem;
  535. font-size: 0.24rem;
  536. cursor: pointer;
  537. }
  538. .content-list {
  539. padding: 0.2rem 0rem;
  540. box-sizing: border-box;
  541. display: flex;
  542. flex-wrap: wrap;
  543. .content-item {
  544. width: calc((100% - 0.2rem) / 3);
  545. position: relative;
  546. background-color: #fff;
  547. box-shadow: 0 0 0.15rem rgba(0, 0, 0, 0.1);
  548. display: flex;
  549. flex-direction: column;
  550. align-items: baseline;
  551. border-radius: 0.05rem;
  552. border: 0.01rem solid #eee !important;
  553. margin-right: 0.1rem;
  554. box-sizing: border-box;
  555. margin-bottom: 0.1rem;
  556. .item-title {
  557. color: #000;
  558. font-size: 0.15rem;
  559. padding: 0.15rem 0 0 0.15rem;
  560. }
  561. .item-content {
  562. color: #fe2278;
  563. font-size: 0.24rem;
  564. padding: 0.15rem 0.1rem;
  565. width: 100%;
  566. text-align: center;
  567. box-sizing: border-box;
  568. font-weight: 600;
  569. }
  570. .item-line {
  571. height: 0.01rem;
  572. width: 100%;
  573. border-top: 0.01rem dashed rgba(0, 0, 0, 0.2);
  574. position: relative;
  575. }
  576. .item-line:before {
  577. content: ' ';
  578. position: absolute;
  579. top: -0.13rem;
  580. left: -0.01rem;
  581. box-sizing: border-box;
  582. height: 0;
  583. width: 0;
  584. border-bottom: solid 0.12rem transparent;
  585. border-top: solid 0.12rem transparent;
  586. border-left: solid 0.08rem #f2f2f2;
  587. }
  588. .item-line:after {
  589. content: ' ';
  590. position: absolute;
  591. top: -0.13rem;
  592. right: -0.01rem;
  593. box-sizing: border-box;
  594. height: 0;
  595. width: 0;
  596. border-bottom: solid 0.12rem transparent;
  597. border-top: solid 0.12rem transparent;
  598. border-right: solid 0.08rem #f2f2f2;
  599. }
  600. .item-bottom {
  601. width: 100%;
  602. padding: 0.05rem 0.15rem;
  603. color: #999;
  604. font-size: 0.12rem;
  605. box-sizing: border-box;
  606. }
  607. }
  608. .content-item:nth-child(3n) {
  609. margin-right: 0;
  610. }
  611. }
  612. }
  613. .empty {
  614. text-align: center;
  615. padding-top: 1.2rem;
  616. margin: 0 auto;
  617. image {
  618. width: 2rem;
  619. }
  620. .tips {
  621. color: #999;
  622. margin-top: 0.15rem;
  623. }
  624. }
  625. // 录入会员
  626. .form-box {
  627. .form-content {
  628. margin-top: 0.2rem;
  629. .form-item {
  630. margin-bottom: 0.1rem;
  631. display: flex;
  632. .form-label {
  633. width: 1.3rem;
  634. text-align: right;
  635. padding-right: 0.1rem;
  636. box-sizing: border-box;
  637. height: 0.32rem;
  638. line-height: 0.32rem;
  639. .required {
  640. color: red;
  641. margin-right: 0.03rem;
  642. }
  643. }
  644. .form-inline {
  645. width: 2.4rem;
  646. line-height: 0.32rem;
  647. margin-right: 0.1rem;
  648. box-sizing: border-box;
  649. .form-input {
  650. border-width: 0.01rem;
  651. border-style: solid;
  652. background-color: #fff;
  653. color: rgba(0, 0, 0, 0.85);
  654. border-radius: 0.02rem;
  655. padding-left: 0.1rem;
  656. height: 0.32rem;
  657. line-height: 0.32rem;
  658. font-size: 0.14rem;
  659. border-color: #e6e6e6;
  660. border-radius: 0.02rem;
  661. }
  662. .form-textarea {
  663. border-width: 0.01rem;
  664. border-style: solid;
  665. background-color: #fff;
  666. color: rgba(0, 0, 0, 0.85);
  667. border-radius: 0.02rem;
  668. padding-left: 0.1rem;
  669. line-height: 0.32rem;
  670. font-size: 0.14rem;
  671. border-color: #e6e6e6;
  672. height: 1rem;
  673. }
  674. button {
  675. width: calc(50% - 0.05rem);
  676. display: inline-block;
  677. margin-right: 0.1rem;
  678. &:nth-child(2) {
  679. margin-right: 0;
  680. }
  681. }
  682. .upload-box {
  683. width: 0.7rem;
  684. height: 0.7rem;
  685. cursor: pointer;
  686. .upload-img {
  687. width: 100%;
  688. height: 100%;
  689. border: 0.01rem solid #e6e6e6;
  690. image {
  691. width: 100%;
  692. height: 100%;
  693. }
  694. }
  695. .upload-icon {
  696. width: 100%;
  697. height: 100%;
  698. border: 0.01rem solid #e6e6e6;
  699. align-items: center;
  700. text-align: center;
  701. line-height: 1.2;
  702. display: flex;
  703. flex-direction: column;
  704. justify-content: center;
  705. color: #999;
  706. .iconfont {
  707. font-size: 0.3rem;
  708. }
  709. view {
  710. font-size: 0.12rem;
  711. }
  712. }
  713. }
  714. }
  715. .search-wrap {
  716. position: relative;
  717. i {
  718. position: absolute;
  719. top: 50%;
  720. right: 0.1rem;
  721. transform: translateY(-50%);
  722. border-left: 0.01rem solid #e6e6e6;
  723. line-height: 0.3rem;
  724. padding-left: 0.1rem;
  725. cursor: pointer;
  726. }
  727. }
  728. .label-list {
  729. width: calc(100% - 1.35rem);
  730. display: flex;
  731. align-items: center;
  732. flex-wrap: wrap;
  733. .label-item {
  734. border: 0.01rem solid #e6e6e6;
  735. padding: 0.07rem 0.1rem;
  736. line-height: 1;
  737. margin-right: 0.1rem;
  738. border-radius: 0.03rem;
  739. cursor: pointer;
  740. position: relative;
  741. margin-bottom: 0.1rem;
  742. i {
  743. position: absolute;
  744. right: -0.01rem;
  745. bottom: -0.01rem;
  746. color: $primary-color;
  747. display: none;
  748. }
  749. &.active {
  750. border-color: $primary-color;
  751. i {
  752. display: block;
  753. }
  754. }
  755. }
  756. }
  757. }
  758. }
  759. }
  760. </style>