index.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960
  1. <template>
  2. <app-layout>
  3. <view v-if="captain.status == 1 && captain.is_delete != 1">
  4. <view class="user-info">
  5. <view class="main-between user-name">
  6. <view class="cross-center">
  7. <image class="avatar" :src='captain.avatar'></image>
  8. <view class="t-omit">{{captain.user.nickname}}</view>
  9. </view>
  10. <view class="cross-center rate">
  11. <text>{{setting.form.rate?setting.form.rate:'分红比例'}}{{captain.level ? captain.level.rate: setting.bonus_rate}}%</text>
  12. <view class="rate-icon" @click="toAbout">
  13. <image src="/static/image/icon/question.png"></image>
  14. </view>
  15. </view>
  16. </view>
  17. <view class="dir-left-nowrap user-bonus">
  18. <view @click="toStatics" class="user-bonus-item">
  19. <view>
  20. <text>{{captain.all_bonus}}</text>元
  21. </view>
  22. <view>{{setting.form.total_bonus?setting.form.total_bonus:'累计分红金额'}}
  23. <image class="right-arrow" src="/static/image/icon/arrow-right-white.png"></image>
  24. </view>
  25. </view>
  26. <view class="user-bonus-item">
  27. <view>
  28. <text>{{captain.expect_bonus}}</text>元
  29. </view>
  30. <view>{{setting.form.expect_bonus?setting.form.expect_bonus:'预计分红金额'}}</view>
  31. </view>
  32. </view>
  33. </view>
  34. <view @click="toDetail">
  35. <view class="main-between bonus-item cash-bonus">
  36. <view>{{setting.form.cashd_bonus?setting.form.cashd_bonus:'已提现分红'}}</view>
  37. <view class="bonus-price">
  38. <text>{{captain.cash_bonus}}</text>元
  39. <image src="/static/image/icon/arrow-right.png"></image>
  40. </view>
  41. </view>
  42. </view>
  43. <view class="main-between bonus-item total-bonus">
  44. <view>
  45. <view class="bonus-price">
  46. <text>{{captain.total_bonus}}</text>元
  47. </view>
  48. <view>{{setting.form.can_cash_bonus?setting.form.can_cash_bonus:'可提现分红'}}</view>
  49. </view>
  50. <view>
  51. <view @click="toCash" class="cash-btn">
  52. <button>提现</button>
  53. </view>
  54. </view>
  55. </view>
  56. <view @click="toOrder">
  57. <view class="dir-left-nowrap cross-center bonus-item cash-bonus order-item">
  58. <image class="order-icon" :src="bonusImg.order"></image>
  59. <view class="main-between">
  60. <view>{{setting.form.orders?setting.form.orders:'分红订单'}}</view>
  61. <image src="/static/image/icon/arrow-right.png"></image>
  62. </view>
  63. </view>
  64. </view>
  65. <view @click="toMember">
  66. <view class="dir-left-nowrap cross-center bonus-item cash-bonus member-item">
  67. <image :src="bonusImg.member"></image>
  68. <view class="main-between">
  69. <view>{{setting.form.members?setting.form.members:'队员'}}</view>
  70. <image src="/static/image/icon/arrow-right.png"></image>
  71. </view>
  72. </view>
  73. </view>
  74. </view>
  75. <view v-else style="position: absolute;width: 100%;height: 100%;background-color: #fff;">
  76. <image load-lazy="true" class="banner" v-if="(captain.status != 1 && captain.status > -2) || captain.is_delete == 1" :src="setting.bg_url"></image>
  77. <view class="apply-area" v-if="toApply && captain.status != 0 && captain.is_delete != 1">
  78. <view class="apply">
  79. <view class="apply-input" style="border-top:0">欢迎申请{{setting.form.title ? setting.form.title : '团队分红'}},请填写申请信息</view>
  80. <view class="apply-input dir-left-nowrap">
  81. <view class="label">姓名</view>
  82. <input v-model="name" placeholder="请填写真实姓名" placeholder-style="color:#cdcdcd"></input>
  83. </view>
  84. <view class="apply-input dir-left-nowrap">
  85. <view class="label">手机号</view>
  86. <input v-model="mobile" type="number" placeholder="请填写手机号" placeholder-style="color:#cdcdcd"></input>
  87. </view>
  88. <view class="apply-input" v-if="setting.is_agreement == 1">
  89. <view class="read" @click="read=!read">
  90. <image src="/static/image/icon/icon-uncheck.png" v-if="read == false"></image>
  91. <image class="check-red" src="/static/image/icon/icon-checkbox-checked.png" v-else></image>
  92. </view>
  93. 我已经阅读并了解
  94. <text style="color:#014c8c" @click="protocol=setting.agreement_content">《{{setting.agreement_title}}》</text>
  95. </view>
  96. </view>
  97. <view @click="subscribe" class="apply-sumbit be-apply">
  98. <button>申请成为队长</button>
  99. </view>
  100. </view>
  101. <image v-if="toApply && captain.status != 0 && captain.is_delete != 1" :style="{'height':`${height}px`}" @load="imageLoad" class="rights" :src="setting.form.bottom_bg_url"></image>
  102. <view v-if="wait" class="wait">
  103. <image :src="bonusImg.wait"></image>
  104. <view>谢谢您的支持,请等待审核...</view>
  105. <view @click="toIndex" class="apply-sumbit to-mall">
  106. <button>去商城逛逛</button>
  107. </view>
  108. </view>
  109. <view v-if="pass && !toApply && captain.status != 1" class="wait is-pass">
  110. <image :src="bonusImg.success"></image>
  111. <view>
  112. <view class="is-pass-text">您已达到成为队长条件</view>
  113. <view v-if="check.all_members > -1">{{setting.form.become_name ? setting.form.become_name : '下线'}}:{{check.condition}}人</view>
  114. <view v-if="check.all_shares > -1">{{setting.form.become_name ? setting.form.become_name : '下线分销商'}}:{{check.condition}}人</view>
  115. <view v-if="check.total_money > -1">{{setting.form.become_name ? setting.form.become_name : '累计佣金'}}:¥{{check.condition}}元</view>
  116. <view v-if="check.cash_money > -1">{{setting.form.become_name ? setting.form.become_name : '已提现佣金'}}:¥{{check.condition}}元</view>
  117. </view>
  118. <view @click="toApply=!toApply" class="apply-sumbit to-apply">
  119. <button>立即申请成为队长</button>
  120. </view>
  121. </view>
  122. <view v-if="pass == false">
  123. <image class="check-img" src="./../image/check.png"></image>
  124. <view class="check-tip">您未达到成为队长条件</view>
  125. <view class="check-status" v-if="check.cash_money > -1">还差
  126. <text>¥{{other}}</text>{{setting.form.become_name ? setting.form.become_name : "已提现佣金"}}成为队长</view>
  127. <view class="check-status" v-if="check.total_money > -1">还差
  128. <text>¥{{other}}</text>{{setting.form.become_name ? setting.form.become_name : "累计佣金"}}成为队长</view>
  129. <view class="check-status" v-if="check.all_shares > -1">还差
  130. <text>{{other}}</text>个{{setting.form.become_name ? setting.form.become_name : "下线分销商"}}成为队长</view>
  131. <view class="check-status" v-if="check.all_members > -1">还差
  132. <text>{{other}}</text>个{{setting.form.become_name ? setting.form.become_name : "下线"}}成为队长</view>
  133. <view class="progress">
  134. <view :style="{'width': `${rate}%`,'backgroundImage':`url(${bonusImg.progress})`}"></view>
  135. </view>
  136. <view class="main-between progress-text">
  137. <view v-if="check.cash_money > -1">已有{{setting.form.become_name ? setting.form.become_name : "已提现佣金"}}¥{{check.cash_money}}</view>
  138. <view v-if="check.total_money > -1">已有{{setting.form.become_name ? setting.form.become_name : "累计佣金"}}¥{{check.total_money}}</view>
  139. <view v-if="check.all_shares > -1">已有{{setting.form.become_name ? setting.form.become_name : "下线分销商"}}{{check.all_shares}}人</view>
  140. <view v-if="check.all_members > -1">已有{{setting.form.become_name ? setting.form.become_name : "下线"}}{{check.all_members}}人</view>
  141. <view v-if="check.cash_money > -1 || check.total_money > -1">¥{{check.condition}}</view>
  142. <view v-if="check.all_shares > -1|| check.all_members > -1">{{check.condition}}人</view>
  143. </view>
  144. </view>
  145. <view v-if="captain.status == 2 || captain.is_delete == 1" class="refuse">
  146. <image src="./../image/refuse.png"></image>
  147. <view v-if="captain.status == 2 && captain.is_delete == 0">您的申请被拒</view>
  148. <view v-if="captain.is_delete == 1 && captain.status == 1">您被解除队长身份</view>
  149. <view class="refuse-info">
  150. <view>审核时间:
  151. <text>{{captain.apply_at}}</text>
  152. </view>
  153. <view class="refuse-reason" v-if="captain.status == 2">拒绝理由:
  154. <text style="word-wrap:break-word;">{{captain.reason ? captain.reason :"无"}}</text>
  155. </view>
  156. <view class="refuse-reason" v-if="captain.is_delete == 1 && captain.status == 1">解除理由:
  157. <text style="word-wrap:break-word;">{{captain.reason ? captain.reason :"无"}}</text>
  158. </view>
  159. <view @click="reApply" class="apply-sumbit to-mall">
  160. <button>再次申请</button>
  161. </view>
  162. </view>
  163. </view>
  164. </view>
  165. <!-- 分红协议(modal模式) -->
  166. <view class="modal" v-if="protocol">
  167. <view class="protocol">
  168. <view class="protocol-name">{{setting.agreement_title}}</view>
  169. <view class="protocol-content">
  170. <app-rich-text :content="protocol"></app-rich-text>
  171. </view>
  172. <view @click="protocol=null;read=true">
  173. <view class="read-over">我已阅读</view>
  174. </view>
  175. </view>
  176. </view>
  177. </app-layout>
  178. </template>
  179. <script>
  180. import appRichText from "../../../components/basic-component/app-rich/parse.vue";
  181. import { mapState } from "vuex";
  182. export default {
  183. data() {
  184. return {
  185. read: false,
  186. toApply: false,
  187. name: '',
  188. mobile: '',
  189. height: 0,
  190. pass: null,
  191. check: {},
  192. rate: 0,
  193. other: 0,
  194. protocol: null,
  195. setting: '',
  196. template_message: [],
  197. wait: false,
  198. first: false,
  199. captain: {
  200. status: 5
  201. }
  202. }
  203. },
  204. components: {
  205. "app-rich-text": appRichText
  206. },
  207. computed: {
  208. ...mapState({
  209. userInfo: state => state.user.info,
  210. bonusImg: state => state.mallConfig.__wxapp_img.bonus
  211. })
  212. },
  213. methods: {
  214. toDetail() {
  215. uni.navigateTo({
  216. url: '/plugins/bonus/cash-detail/cash-detail'
  217. });
  218. },
  219. toIndex() {
  220. uni.navigateTo({
  221. url: '/pages/index/index'
  222. });
  223. },
  224. toCash() {
  225. uni.navigateTo({
  226. url: '/plugins/bonus/cash/cash'
  227. });
  228. },
  229. toStatics() {
  230. uni.navigateTo({
  231. url: '/plugins/bonus/statics/statics'
  232. });
  233. },
  234. toAbout() {
  235. uni.navigateTo({
  236. url: '/plugins/bonus/about/about'
  237. });
  238. },
  239. toOrder() {
  240. uni.navigateTo({
  241. url: '/plugins/bonus/order/order'
  242. });
  243. },
  244. toMember() {
  245. uni.navigateTo({
  246. url: '/plugins/bonus/memeber/memeber'
  247. });
  248. },
  249. imageLoad: function (e) {
  250. var $width = e.detail.width; //获取图片真实宽度
  251. var $height = e.detail.height; //获取图片真实高度
  252. this.height = $height * (750 / $width) / 2
  253. },
  254. subscribe() {
  255. let that = this;
  256. let is_agree = 0;
  257. if(that.read) {
  258. is_agree = 1;
  259. }else {
  260. uni.showToast({
  261. title: '请先查看' + that.setting.agreement_title +'并同意',
  262. icon: 'none',
  263. duration: 1000
  264. });
  265. return false;
  266. }
  267. if(that.name && that.mobile) {
  268. if(that.mobile.length == 11 && (/0?(1)[0-9]{10}/.test(that.mobile))) {
  269. this.$subscribe(this.template_message).then(res => {
  270. this.submit(is_agree);
  271. }).catch(res => {
  272. this.submit(is_agree);
  273. });
  274. }else {
  275. uni.showToast({
  276. title: '请输入正确的手机号码',
  277. icon: 'none',
  278. duration: 1000
  279. });
  280. }
  281. }else {
  282. uni.showToast({
  283. title: '请完善申请信息',
  284. icon: 'none',
  285. duration: 1000
  286. });
  287. }
  288. // this.$subscribe(this.template_message).then(res => {
  289. // this.submit();
  290. // }).catch(res => {
  291. // this.submit();
  292. // });
  293. },
  294. submit(is_agree) {
  295. let that = this;
  296. that.$request({
  297. url: that.$api.bonus.apply,
  298. data: {
  299. name: that.name,
  300. mobile: that.mobile,
  301. is_agree: is_agree
  302. },
  303. method: 'post'
  304. }).then(response=>{
  305. that.$hideLoading();
  306. if(response.code == 0) {
  307. uni.showToast({
  308. title: response.msg,
  309. duration: 1000
  310. });
  311. setTimeout(function() {
  312. that.getStatus();
  313. that.wait = true;
  314. }, 500)
  315. }else {
  316. if (response.msg == '请先查看团队分红申请协议并同意') {
  317. response.msg = '请先查看' + that.setting.agreement_title +'并同意'
  318. }
  319. uni.showToast({
  320. title: response.msg,
  321. icon: 'none',
  322. duration: 1000
  323. });
  324. }
  325. }).catch(response => {
  326. that.$hideLoading();
  327. });
  328. },
  329. getSetting() {
  330. let that = this;
  331. that.$request({
  332. url: that.$api.bonus.setting,
  333. }).then(response=>{
  334. that.$hideLoading();
  335. if(response.code == 0) {
  336. that.setting = response.data.list;
  337. that.template_message = response.data.list.template_message_captain;
  338. if (that.setting.form && that.setting.form.title) {
  339. uni.setNavigationBarTitle({
  340. title: that.setting.form.title,
  341. })
  342. }else {
  343. uni.setNavigationBarTitle({
  344. title: '团队分红',
  345. })
  346. }
  347. if (that.setting.is_agreement == 0) {
  348. that.read = true;
  349. }
  350. if (that.setting.bg_url == 'statics/img/app/bonus/banner.png') {
  351. that.setting.bg_url = that.bonusImg.banner
  352. }
  353. if (that.setting.form.bottom_bg_url == 'statics/img/app/bonus/right.png') {
  354. that.setting.form.bottom_bg_url = that.bonusImg.right
  355. }
  356. }else {
  357. uni.showToast({
  358. title: response.msg,
  359. icon: 'none',
  360. duration: 1000
  361. });
  362. }
  363. }).catch(response => {
  364. that.$hideLoading();
  365. });
  366. },
  367. getCheck() {
  368. let that = this;
  369. that.$request({
  370. url: that.$api.bonus.index,
  371. }).then(response=>{
  372. that.$hideLoading();
  373. if(response.code == 0) {
  374. that.check = response.data;
  375. that.pass = response.data.pass;
  376. if(response.data.to_apply) {
  377. toApply = response.data.to_apply
  378. }
  379. let other;
  380. let rate;
  381. if (that.check.total_money > -1) {
  382. other = (that.check.condition - (+that.check.total_money)).toFixed(2)
  383. rate = (+that.check.total_money) / that.check.condition * 100
  384. }
  385. if (that.check.cash_money > -1) {
  386. other = (that.check.condition - (+that.check.cash_money)).toFixed(2)
  387. rate = (+that.check.cash_money) / that.check.condition * 100
  388. }
  389. if (that.check.all_shares > -1) {
  390. other = that.check.condition - (+that.check.all_shares)
  391. rate = (+that.check.all_shares) / that.check.condition * 100
  392. }
  393. if (that.check.all_members > -1) {
  394. other = that.check.condition - (+that.check.all_members)
  395. rate = (+that.check.all_members) / that.check.condition * 100
  396. }
  397. that.other = other;
  398. that.rate = rate;
  399. that.captain.status = 5;
  400. }else {
  401. uni.showToast({
  402. title: response.msg,
  403. icon: 'none',
  404. duration: 1000
  405. });
  406. if (e.data.msg == '你不是分销商') {
  407. setTimeout(function(){
  408. uni.redirectTo({
  409. url: '/pages/index/index'
  410. })
  411. },1000)
  412. } else {
  413. that.getSetting();
  414. that.pass = true;
  415. that.captain.status = 5;
  416. captain.status = 5;
  417. }
  418. }
  419. }).catch(response => {
  420. that.$hideLoading();
  421. that.$event.on(that.$const.EVENT_USER_LOGIN).then(()=>{
  422. that.$store.dispatch('user/info');
  423. that.getStatus();
  424. });
  425. });
  426. },
  427. reApply() {
  428. let that = this;
  429. that.$request({
  430. url: that.$api.bonus.clear,
  431. }).then(response=>{
  432. that.$hideLoading();
  433. if(response.code == 0) {
  434. that.name = '';
  435. that.mobile = '';
  436. that.getCheck();
  437. if (that.setting.become_type != 0) {
  438. that.captain = {}
  439. }else {
  440. that.captain = {}
  441. that.captain.status = 5
  442. }
  443. }else {
  444. uni.showToast({
  445. title: response.msg,
  446. icon: 'none',
  447. duration: 1000
  448. });
  449. }
  450. }).catch(response => {
  451. that.$hideLoading();
  452. });
  453. },
  454. getStatus() {
  455. let that = this;
  456. that.$request({
  457. url: that.$api.bonus.status,
  458. }).then(response=>{
  459. that.$hideLoading();
  460. that.getSetting();
  461. if(response.code == 0) {
  462. that.wait = false;
  463. that.captain = response.data.captain;
  464. if (that.captain.status == 0) {
  465. that.wait = true;
  466. } else if (that.captain.status == -1) {
  467. that.getCheck();
  468. }
  469. if (that.captain.status == 1) {
  470. that.toApply = false
  471. }
  472. }else {
  473. if (response.msg == '用户未申请队长') {
  474. that.getCheck();
  475. }else {
  476. uni.showToast({
  477. title: response.msg,
  478. icon: 'none',
  479. duration: 1000
  480. });
  481. }
  482. }
  483. }).catch(response => {
  484. that.$hideLoading();
  485. that.$event.on(that.$const.EVENT_USER_LOGIN).then(()=>{
  486. that.$store.dispatch('user/info');
  487. that.getStatus();
  488. });
  489. });
  490. },
  491. },
  492. onLoad() {
  493. this.$store.dispatch('user/info');
  494. },
  495. onReady() {
  496. this.getStatus();
  497. this.first = true;
  498. },
  499. onShow() {
  500. if(this.first) {
  501. this.pass = null;
  502. this.toApply = false;
  503. this.read = false;
  504. if(this.captain.status != 1) {
  505. this.captain = {};
  506. }
  507. this.getStatus();
  508. }
  509. }
  510. }
  511. </script>
  512. <style scoped lang="scss">
  513. .banner {
  514. height: #{360rpx};
  515. width: 100%;
  516. display: block;
  517. }
  518. .apply {
  519. background-color: #fff;
  520. padding: 0 #{24rpx};
  521. margin-bottom: #{24rpx};
  522. }
  523. .apply-input {
  524. height: #{80rpx};
  525. line-height: #{80rpx};
  526. border-top: #{1rpx} solid #e2e2e2;
  527. font-size: #{28rpx};
  528. color: #353535;
  529. }
  530. .apply-input .label {
  531. width: #{126rpx};
  532. }
  533. .apply-area {
  534. background-color: #f7f7f7;
  535. padding: #{20rpx} 0 #{24rpx};
  536. }
  537. input {
  538. border: 0;
  539. width: #{560rpx};
  540. height: #{60rpx};
  541. line-height: #{60rpx};
  542. margin-top: #{10rpx};
  543. }
  544. .read {
  545. width: #{42rpx};
  546. height: #{80rpx};
  547. float: left;
  548. padding-top: #{24rpx};
  549. padding-right: #{10rpx};
  550. }
  551. .read image {
  552. height: #{32rpx};
  553. width: #{32rpx};
  554. display: block;
  555. }
  556. .apply-sumbit {
  557. margin: 0 auto;
  558. }
  559. .apply-sumbit button {
  560. height: #{80rpx};
  561. line-height: #{80rpx};
  562. width: #{702rpx};
  563. margin: 0 auto;
  564. border-radius: #{40rpx};
  565. background-color: #F84469;
  566. color: #fff;
  567. font-size: #{32rpx};
  568. text-align: center;
  569. }
  570. .apply-sumbit.be-apply {
  571. width: #{702rpx};
  572. }
  573. .apply-sumbit.to-mall,.apply-sumbit.to-mall button {
  574. width: #{320rpx};
  575. }
  576. .apply-sumbit.to-apply,.apply-sumbit.to-apply button {
  577. width: #{440rpx};
  578. }
  579. .rights {
  580. width: 100%;
  581. }
  582. .wait {
  583. color: #666;
  584. font-size: #{32rpx};
  585. text-align: center;
  586. }
  587. .wait view {
  588. margin-bottom: #{68rpx};
  589. }
  590. .wait.is-pass view{
  591. margin-bottom: 0;
  592. }
  593. .wait.is-pass image{
  594. height:#{320rpx};
  595. width:#{420rpx};
  596. margin:#{40rpx} auto;
  597. }
  598. .wait.is-pass>view {
  599. padding-bottom: #{33rpx};
  600. font-size:#{28rpx};
  601. }
  602. .wait.is-pass .is-pass-text {
  603. font-size: #{36rpx};
  604. color:#353535;
  605. }
  606. .wait image {
  607. height: #{270rpx};
  608. width: #{380rpx};
  609. margin: #{120rpx} auto #{60rpx};
  610. }
  611. .check-img {
  612. height: #{160rpx};
  613. width: #{160rpx};
  614. margin: #{80rpx} auto #{40rpx};
  615. display: block;
  616. }
  617. .check-tip {
  618. font-size: #{36rpx};
  619. color: #353535;
  620. text-align: center;
  621. margin-bottom: #{14rpx};
  622. }
  623. .check-status {
  624. font-size: #{28rpx};
  625. color: #666;
  626. text-align: center;
  627. }
  628. .check-status text {
  629. font-size: #{40rpx};
  630. font-family: DIN;
  631. color: #ff8f17;
  632. margin-right: #{8rpx};
  633. }
  634. .progress {
  635. width: #{600rpx};
  636. background-color: #f0f0f0;
  637. border-radius: #{20rpx};
  638. height: #{40rpx};
  639. margin: #{40rpx} auto 0;
  640. position: relative;
  641. }
  642. .progress view {
  643. border-radius: #{20rpx};
  644. height: #{40rpx};
  645. position: absolute;
  646. top: 0;
  647. left: 0;
  648. z-index: 2;
  649. }
  650. .progress-text {
  651. margin: #{16rpx} auto 0;
  652. color: #999;
  653. font-size: #{26rpx};
  654. width: #{600rpx};
  655. }
  656. .refuse image {
  657. height: #{160rpx};
  658. width: #{160rpx};
  659. margin: #{80rpx} auto #{40rpx};
  660. }
  661. .refuse {
  662. font-size: #{36rpx};
  663. color: #353535;
  664. text-align: center;
  665. }
  666. .refuse view {
  667. margin-bottom:#{25rpx};
  668. }
  669. .refuse-reason {
  670. margin:#{10rpx} 0 #{76rpx};
  671. }
  672. .refuse-info {
  673. font-size: #{28rpx};
  674. color: #999;
  675. border-top: #{1rpx} solid #e2e2e2;
  676. width: #{520rpx};
  677. margin: 0 auto;
  678. margin-bottom: 0;
  679. padding-top: #{30rpx};
  680. padding-left: #{20rpx};
  681. text-align: left;
  682. }
  683. .refuse-info text {
  684. color: #666;
  685. }
  686. .user-info {
  687. margin: #{24rpx};
  688. width: #{702rpx};
  689. padding: #{40rpx};
  690. background: linear-gradient(to top, #F84469, #ff6699);
  691. border-radius: #{16rpx};
  692. font-size: #{36rpx};
  693. color: #fff;
  694. }
  695. .user-info .avatar {
  696. height: #{80rpx};
  697. width: #{80rpx};
  698. margin-right: #{28rpx};
  699. border-radius: 50%;
  700. border: #{2rpx} solid #fff;
  701. }
  702. .user-info .user-name {
  703. height: #{80rpx};
  704. line-height:#{80rpx};
  705. margin-bottom: #{35rpx};
  706. }
  707. .user-info .avatar+view {
  708. width: #{300rpx};
  709. }
  710. .rate {
  711. font-size:#{26rpx};
  712. }
  713. .rate image {
  714. height:#{28rpx};width:#{28rpx};display:block;
  715. }
  716. .rate-icon {
  717. height:#{28rpx};
  718. width:#{28rpx};
  719. margin-left:#{12rpx};
  720. display:block;
  721. }
  722. .user-bonus {
  723. font-size: #{24rpx};
  724. }
  725. .user-bonus .user-bonus-item {
  726. width: #{320rpx};
  727. }
  728. .user-bonus .user-bonus-item view:first-of-type {
  729. font-size: #{28rpx};
  730. }
  731. .user-bonus .user-bonus-item text {
  732. font-size: #{48rpx};
  733. font-family: DIN;
  734. }
  735. .right-arrow {
  736. height:#{14rpx};
  737. width:#{8rpx};
  738. margin-left:#{8rpx};
  739. }
  740. .bonus-item {
  741. background-color: #fff;
  742. font-size: #{28rpx};
  743. color: #999;
  744. border-radius: #{16rpx};
  745. width: #{702rpx};
  746. margin: 0 #{24rpx} #{16rpx};
  747. }
  748. .bonus-item.cash-bonus {
  749. height: #{100rpx};
  750. line-height: #{100rpx};
  751. padding: 0 #{40rpx};
  752. }
  753. .bonus-item.total-bonus {
  754. padding: #{32rpx} #{40rpx};
  755. height: #{144rpx};
  756. }
  757. .bonus-item.cash-bonus .bonus-price image {
  758. height:#{20rpx};
  759. width:#{12rpx};
  760. margin-left:#{16rpx};
  761. }
  762. .total-bonus .bonus-price {
  763. margin-bottom:#{8rpx};
  764. margin-top: #{-8rpx};
  765. }
  766. .bonus-price {
  767. color: #353535;
  768. }
  769. .bonus-price text {
  770. font-size: #{36rpx};
  771. font-family: DIN;
  772. }
  773. .cash-btn button {
  774. height: #{48rpx};
  775. width: #{96rpx};
  776. line-height: #{46rpx};
  777. border-radius: #{24rpx};
  778. border: #{1rpx} solid #ff6699;
  779. color: #ff6699;
  780. font-size: #{24rpx};
  781. text-align: center;
  782. margin-top: #{14rpx};
  783. padding: 0;
  784. background-color: #fff;
  785. }
  786. .cash-btn button::after {
  787. border: 0
  788. }
  789. .order-item {
  790. margin-bottom: 0;
  791. border-bottom-left-radius: 0;
  792. border-bottom-right-radius: 0;
  793. }
  794. .order-icon {
  795. height:#{40rpx};
  796. width:#{40rpx};
  797. margin-right:#{32rpx};
  798. }
  799. .order-icon+view {
  800. width:#{590rpx};
  801. }
  802. .order-icon+view image{
  803. height:#{20rpx};
  804. width:#{12rpx};
  805. margin-top:#{40rpx};
  806. }
  807. .member-item {
  808. border-top-left-radius: 0;
  809. border-top-right-radius: 0;
  810. }
  811. .member-item>image {
  812. height:#{40rpx};
  813. width:#{40rpx};
  814. margin-right:#{32rpx};
  815. }
  816. .member-item .main-between {
  817. width:#{590rpx};
  818. border-top: #{1rpx} solid #e2e2e2;
  819. }
  820. .member-item .main-between image {
  821. height:#{20rpx};
  822. width:#{12rpx};
  823. margin-top:#{40rpx};
  824. }
  825. .modal {
  826. position: fixed;
  827. top: 0;
  828. left: 0;
  829. right: 0;
  830. height: 100%;
  831. width: 100%;
  832. z-index: 99;
  833. background-color: rgba(0, 0, 0, 0.3);
  834. }
  835. .protocol {
  836. position: relative;
  837. z-index: 99;
  838. background-color: #fff;
  839. width: 80%;
  840. border-radius: #{20rpx};
  841. margin: #{100rpx} auto;
  842. }
  843. .protocol-name {
  844. text-align: center;
  845. height: #{100rpx};
  846. line-height: #{100rpx};
  847. color: #666;
  848. }
  849. .protocol-content {
  850. padding: #{10rpx} #{20rpx};
  851. height: #{720rpx};
  852. overflow: auto;
  853. color: #353535;
  854. }
  855. .read-over {
  856. height: #{100rpx};
  857. text-align: center;
  858. line-height: #{100rpx};
  859. background-color: #ff6699;
  860. color: #fff;
  861. font-size: #{30rpx};
  862. border-bottom-right-radius: #{20rpx};
  863. border-bottom-left-radius: #{20rpx};
  864. }
  865. .protocol image {
  866. height: #{200rpx};
  867. width: #{200rpx};
  868. }.check-red {
  869. background: #ff6699;
  870. }
  871. </style>