Commit cc87c251858d1b9a8310c10f8b0517a31768ec5f

Authored by 后端研发-倪永富
1 parent 6b377744

每日签到

packageA/pages/checkin/checkin.js 0 → 100644
  1 +// packageA//pages/checkin/checkin.js
  2 +const app = getApp();
  3 +
  4 +Page({
  5 +
  6 + /**
  7 + * 页面的初始数据
  8 + */
  9 + data: {
  10 + year: '',
  11 + month: '',
  12 + day: '',
  13 + weekArr: ['日', '一', '二', '三', '四', '五', '六'],
  14 + dateArr: [],
  15 + firstDay: '',
  16 + lastDay: '',
  17 + param: null,
  18 + clockNum: 3,
  19 +
  20 + res: null,
  21 + isShowRules: false,
  22 + isCheckIn: false,
  23 + checkInDays: 0, //连续签到天数
  24 + integral: 0, //积分
  25 + checkInNums: 0, //补签次数
  26 + isCheckInDay: '',
  27 +
  28 +
  29 + flag: true,
  30 + },
  31 +
  32 + loadQd(callback) {
  33 + let self = this;
  34 + app.request.get('/api/weshop/qdrecord/getUser/'+ app.globalData.setting.stoid + '/' + app.globalData.user_id, {
  35 + success: function (res) {
  36 + if(callback) callback();
  37 + self.setData({
  38 + res: res.data.data
  39 + });
  40 + self.loadCheckedRecord();
  41 + },
  42 + });
  43 + },
  44 +
  45 + /**
  46 + * 生命周期函数--监听页面加载
  47 + */
  48 + onLoad: function(options) {
  49 + let self = this;
  50 + this.getDate();
  51 + this.setDate();
  52 + var res = wx.getSystemInfoSync();
  53 + this.setData({
  54 + param: res.windowHeight / 12,
  55 + })
  56 +
  57 + this.loadQd();
  58 +
  59 + },
  60 +
  61 +
  62 + // 点击"我的积分"和"去购物"进行跳转
  63 + goto(e) {
  64 + let url = e.target.dataset.url;
  65 + app.goto(url);
  66 + },
  67 +
  68 +
  69 + // 点击显示签到规则
  70 + showRules() {
  71 + if(this.data.isShowRules) {
  72 + this.setData({
  73 + isShowRules: false
  74 + });
  75 + } else {
  76 + this.setData({
  77 + isShowRules: true
  78 + });
  79 + }
  80 + },
  81 +
  82 +
  83 + // 加载签到记录
  84 + loadCheckedRecord() {
  85 + let newDateArr = this.data.dateArr;
  86 + let list;
  87 + let bqlist;
  88 + if(this.data.res.qddaylist) {
  89 + list = this.data.res.qddaylist.split(',');
  90 + for(let item of list) {
  91 + newDateArr[item-1].isCheckIn = true;
  92 + };
  93 + }
  94 + if(this.data.res.curbqdaynum) {
  95 + bqlist = this.data.res.curbqdaynum.split(',');
  96 + for(let item of bqlist) {
  97 + var date = new Date(item);
  98 + newDateArr[date.getDate()-1].isBq = true;
  99 + }
  100 + }
  101 + this.setData({
  102 + dateArr: newDateArr
  103 + });
  104 + },
  105 +
  106 + // 点击签到
  107 + checkInToday() {
  108 + const self = this;
  109 + // 获取今天的签到状态
  110 + let isCheckInToday = this.data.dateArr[this.data.day-1].isCheckIn;
  111 + // 如果还没签到, 可以点击签到
  112 + if(!isCheckInToday) {
  113 + app.request.promisePost('/api/weshop/qdrecord/saveQd', {
  114 + data: {
  115 + store_id: app.globalData.setting.stoid,
  116 + user_id: app.globalData.user_id,
  117 + }
  118 + }).then(res => {
  119 + // 改变签到状态,由false置为true
  120 + // let newDateArr = self.data.dateArr;
  121 + // newDateArr[self.data.day-1].isCheckIn = true;
  122 +
  123 + self.loadQd(function() {
  124 + wx.showToast({
  125 + title: self.data.res.qdintro,
  126 + icon: 'none',
  127 + duration: 1500,
  128 + success: function() {
  129 +
  130 + }
  131 + });
  132 + });
  133 +
  134 + })
  135 + }
  136 + },
  137 +
  138 +
  139 + // 补签
  140 + reCheckIn() {
  141 + var self = this;
  142 + // var i = 0;
  143 + console.log('补签~');
  144 + if(this.data.flag) {
  145 + this.data.flag = false;
  146 + app.request.promisePost('/api/weshop/qdrecord/saveBQd', {
  147 + data: {
  148 + store_id: app.globalData.setting.stoid,
  149 + user_id: app.globalData.user_id,
  150 + daynum: self.data.res.getBQIntegral,
  151 + bqnum: self.data.res.getbqnum2,
  152 + bqintegral: self.data.res.getBQIntegral1,
  153 + }
  154 + }).then(res => {
  155 + // 改变签到状态,由false置为true
  156 + // let newDateArr = self.data.dateArr;
  157 + // newDateArr[self.data.day-1].isCheckIn = true;
  158 + var bqlist = self.data.res.curbqdaynum.split(',').sort();
  159 + var list = [];
  160 + for(let item of bqlist) {
  161 + var date = new Date(item);
  162 + list.push(date.getDate());
  163 + }
  164 +
  165 + self.data.dateArr[list[0]-1].isBq = false;
  166 + self.setData({
  167 + dateArr: self.data.dateArr
  168 + });
  169 +
  170 + self.loadQd(function() {
  171 + self.data.flag = true;
  172 + wx.showToast({
  173 + title: '补签成功',
  174 + icon: 'success',
  175 + duration: 1500,
  176 + success: function() {
  177 +
  178 + }
  179 + });
  180 + });
  181 + })
  182 + }
  183 + },
  184 +
  185 +
  186 +
  187 +
  188 +
  189 + getDate: function() { //获取当月日期
  190 + var mydate = new Date();
  191 + var year = mydate.getFullYear();
  192 + var month = mydate.getMonth(); //0~11: 一月至十二月
  193 + var months = month + 1; //1~12:一月至十二月
  194 + this.data.year = year;
  195 + this.data.month = months;
  196 + this.data.day = mydate.getDate(); //获取当月日期: 1~31
  197 + var fist = new Date(year, month, 1);
  198 + this.data.firstDay = fist.getDay(); //获取当月第一天
  199 + var last = new Date(year, months, 0); //0表示当月最后一天
  200 + this.data.lastDay = last.getDate(); //获取当月最后一天
  201 +
  202 + this.setData({
  203 + year: this.data.year,
  204 + month: this.data.month,
  205 + day: this.data.day,
  206 + firstDay: this.data.firstDay,
  207 + lastDay: this.data.lastDay
  208 + })
  209 + console.log("今天:" + this.data.day);
  210 + },
  211 +
  212 + setDate: function() {
  213 + var day;
  214 + for (var i = 1; i < this.data.lastDay + 1; i++) {
  215 + day = {
  216 + num: i,
  217 + };
  218 + this.data.dateArr.push(day);
  219 + }
  220 + this.setData({
  221 + dateArr: this.data.dateArr,
  222 + // firstDay: this.data.firstDay
  223 + });
  224 + },
  225 +
  226 + // prevMonth: function() { //上一月
  227 + // var months = "";
  228 + // var years = "";
  229 + // if (this.data.month == 1) {
  230 + // years = this.data.year - 1
  231 + // this.data.month = 12;
  232 + // months = this.data.month;
  233 + // } else {
  234 + // years = this.data.year;
  235 + // months = this.data.month - 1;
  236 + // }
  237 +
  238 + // var first = new Date(years, months - 1, 1);
  239 + // this.data.firstDay = first.getDay();
  240 + // var last = new Date(years, months, 0);
  241 + // this.data.lastDay = last.getDate();
  242 +
  243 + // this.setData({
  244 + // month: months,
  245 + // year: years,
  246 + // firstDay: this.data.firstDay,
  247 + // lastDay: this.data.lastDay
  248 + // })
  249 +
  250 + // this.data.dateArr = [];
  251 + // for (var i = 1; i < this.data.lastDay + 1; i++) {
  252 + // this.data.dateArr.push(i);
  253 + // }
  254 + // this.setData({
  255 + // dateArr: this.data.dateArr
  256 + // })
  257 + // },
  258 +
  259 + // nextMonth: function() { //下一月
  260 + // var months = "";
  261 + // var years = "";
  262 + // if (this.data.month == 12) {
  263 + // this.data.month = 0;
  264 + // months = this.data.month;
  265 + // years = this.data.year + 1;
  266 + // } else {
  267 + // months = this.data.month + 1;
  268 + // years = this.data.year;
  269 + // }
  270 + // var months = this.data.month + 1;
  271 + // var first = new Date(years, months - 1, 1);
  272 + // this.data.firstDay = first.getDay();
  273 + // var last = new Date(years, months, 0);
  274 + // this.data.lastDay = last.getDate();
  275 + // this.setData({
  276 + // month: months,
  277 + // year: years,
  278 + // firstDay: this.data.firstDay,
  279 + // lastDay: this.data.lastDay
  280 + // })
  281 +
  282 + // this.data.dateArr = [];
  283 + // for (var i = 1; i < this.data.lastDay + 1; i++) {
  284 + // this.data.dateArr.push(i);
  285 + // }
  286 + // this.setData({
  287 + // dateArr: this.data.dateArr
  288 + // })
  289 + // },
  290 +
  291 +})
... ...
packageA/pages/checkin/checkin.json 0 → 100644
  1 +{
  2 + "usingComponents": {},
  3 + "navigationBarTitleText": "签到领积分",
  4 + "enablePullDownRefresh": false
  5 +}
0 6 \ No newline at end of file
... ...
packageA/pages/checkin/checkin.wxml 0 → 100644
  1 +<!--packageA//pages/checkin/checkin.wxml-->
  2 +<wxs src="checkin.wxs" module="myUtil"></wxs>
  3 +<view class="checkin-container">
  4 + <view class="rule-container flex">
  5 + <view class="points" bindtap="goto" data-url="/pages/user/integral/integral"><image class="coin" src="https://mshop-lib.yolipai.net/template/mobile/new/static/images/integral/coins.png"></image>我的积分</view>
  6 + <view class="rule" bindtap="showRules">规则</view>
  7 + </view>
  8 +
  9 + <view class="list flex">
  10 + <view class="list-item {{dateArr[myUtil.setDate(year, res.sday2, 0)-1].isCheckIn ? 'active':''}}">
  11 + <view class="circle">+{{res.cday1}}</view>
  12 + <view class="fs26">{{myUtil.setDate(year, res.sday2, 0)}}日</view>
  13 + </view>
  14 + <view class="list-item {{dateArr[myUtil.setDate(year, res.sday2, 1)-1].isCheckIn ? 'active':''}}">
  15 + <view class="circle">+{{res.daynum}}</view>
  16 + <view class="fs26">{{myUtil.setDate(year, res.sday2, 1)}}日</view>
  17 + </view>
  18 + <view class="list-item {{dateArr[myUtil.setDate(year, res.sday2, 2)-1].isCheckIn ? 'active':''}}">
  19 + <view class="circle">+{{res.tdayc1}}</view>
  20 + <view class="fs26">{{myUtil.setDate(year, res.sday2, 2)}}日</view>
  21 + </view>
  22 + <view class="list-item {{dateArr[myUtil.setDate(year, res.sday2, 3)-1].isCheckIn ? 'active':''}}">
  23 + <view class="circle">+{{res.tdayc2}}</view>
  24 + <view class="fs26">{{myUtil.setDate(year, res.sday2, 3)}}日</view>
  25 + </view>
  26 + <view class="list-item {{dateArr[myUtil.setDate(year, res.sday2, 4)-1].isCheckIn ? 'active':''}}">
  27 + <view class="circle">+{{res.tdayc3}}</view>
  28 + <view class="fs26">{{myUtil.setDate(year, res.sday2, 4)}}日</view>
  29 + </view>
  30 + <view class="list-item {{dateArr[myUtil.setDate(year, res.sday2, 5)-1].isCheckIn ? 'active':''}}">
  31 + <view class="circle">+{{res.tdayc4}}</view>
  32 + <view class="fs26">{{myUtil.setDate(year, res.sday2, 5)}}日</view>
  33 + </view>
  34 + <view class="list-item {{dateArr[myUtil.setDate(year, res.sday2, 6)-1].isCheckIn ? 'active':''}}">
  35 + <view class="circle">+{{res.tdayc5}}</view>
  36 + <view class="fs26">{{myUtil.setDate(year, res.sday2, 6)}}日</view>
  37 + </view>
  38 + </view>
  39 +
  40 + <view class="btn-container">
  41 + <view class="btn" bindtap="checkInToday">
  42 + <text class="iconfont icon-rili"></text>{{!dateArr[day-1].isCheckIn ? '立即签到':'今日已签到'}}
  43 + </view>
  44 + <view class="btn" wx:if="{{res.curbqdaynum}}" bindtap="reCheckIn"><text class="iconfont icon-buqian"></text>补签(-10分)</view>
  45 + </view>
  46 +
  47 +
  48 + <!-- <view class="current">
  49 + <view class="f-vc">当前连续签到:<text class="days fs34">{{res.getlxnum}}</text> 天</view>
  50 + <view class="f-vc">当前积分:<text class="fs34">{{integral}}</text></view>
  51 + </view> -->
  52 +
  53 + <!-- <view class="goleft iconfont icon-jianzuo" bindtap="prevMonth">a</view> -->
  54 +
  55 + <view class="calendar-container">
  56 + <view class="calendar-wrapper">
  57 + <view class="calendar-title">
  58 + <view>{{year}}年{{month}}月</view>
  59 + <view class="fs24" style="color:#999;">补签卡:{{res.getkbqnum}}</view>
  60 + </view>
  61 + <view class="calendar">
  62 + <!-- <view class="selectDate"> -->
  63 + <!-- <view class="goleft iconfont icon-jianzuo" bindtap="prevMonth">a</view> -->
  64 + <!-- <view class="date-wrap">
  65 + {{year}}年{{month}}月
  66 + </view> -->
  67 + <!-- <view class="goright iconfont icon-jianzuo" bindtap="nextMonth">b</view> -->
  68 + <!-- </view> -->
  69 + <view class="week">
  70 + <view wx:for="{{weekArr}}" wx:for-index="index" wx:for-item="item" wx:key="key" style="height:{{param-17}}px;line-height:{{param-17}}px;flex:1;">{{item}}</view>
  71 + </view>
  72 +
  73 + <view class="date">
  74 + <block wx:for="{{dateArr}}" wx:for-index="index" wx:for-item="item" wx:key="key">
  75 + <!-- <view style="{{index ==0?'margin-left:calc(100%/7 * ' + firstDay + ');':''}}width:calc(100%/7);line-height:80rpx;" class="{{index+1==day?'today':''}} {{index+1==day&&isClock?'clockOn':''}}" ><view class="day">{{item}}</view></view> -->
  76 + <view style="{{index ==0?'margin-left:calc(100%/7 * ' + firstDay + ');':''}}width:calc(100%/7);line-height:80rpx;" class="{{item.isCheckIn ? 'active':''}} {{res.curbqdaynum&&item.isBq ? 'bq':''}}" bindtap="clickDay" data-day="{{item.num}}">
  77 + <view class="day">{{item.num}}</view>
  78 + </view>
  79 + </block>
  80 + </view>
  81 +
  82 + </view>
  83 + </view>
  84 +
  85 + </view>
  86 +
  87 + <view class="jfbuy-container">
  88 + <view class="jfbuy flex">
  89 + <image class="jfbuy-img" src="https://mshop-lib.yolipai.net/template/mobile/new/static/images/integral/liwu.png"></image>
  90 + <view class="right">
  91 + <view>
  92 + <view class="t1">小积分大作为</view>
  93 + <view class="t2">积分抵用现金,积少成多</view>
  94 + </view>
  95 + <view class="t-c">
  96 + <view class="btn-buy" bindtap="goto" data-url="/packageA/pages/jfbuy/jfbuy">去购物 Go!</view>
  97 + </view>
  98 + </view>
  99 + </view>
  100 + </view>
  101 +
  102 + <view class="popup-container" wx:if="{{isShowRules}}">
  103 + <view class="popup-wrapper">
  104 + <view class="popup">
  105 + <view class="popup-title">签到规则</view>
  106 + <view class="popup-content">1.每日签到领积分</view>
  107 + </view>
  108 + <view class="popup-close">
  109 + <text class="btn-close" bindtap="showRules">X</text>
  110 + </view>
  111 + </view>
  112 + </view>
  113 +
  114 +</view>
... ...
packageA/pages/checkin/checkin.wxs 0 → 100644
  1 +var myUtil = {
  2 + setDate: function(year, startDate, num) {
  3 + var date = getDate(year + '-' + startDate);
  4 + date.setDate(date.getDate() + num);
  5 + date = getDate(date).getDate();
  6 + return date;
  7 + },
  8 +
  9 + // dateDiff: function(firstDate,secondDate) {
  10 + // var firstDate = new Date(firstDate);
  11 + // var secondDate = new Date(secondDate);
  12 + // var diff = Math.abs(firstDate.getTime() - secondDate.getTime());
  13 + // var result = parseInt(diff / (1000 * 60 * 60 * 24));
  14 + // return result;
  15 + // },
  16 +};
  17 +
  18 +module.exports = {
  19 + setDate: myUtil.setDate,
  20 +};
0 21 \ No newline at end of file
... ...
packageA/pages/checkin/checkin.wxss 0 → 100644
  1 +/* packageA//pages/checkin/checkin.wxss */
  2 +@charset "utf-8";
  3 +page,
  4 +.checkin-container {
  5 + /* height: 100%;
  6 + overflow: hidden; */
  7 +}
  8 +
  9 +.checkin-container {
  10 + background: linear-gradient(#FF7A07, #FF980F, white 95%);
  11 + background-repeat: no-repeat;
  12 +}
  13 +
  14 +.checkin-container {
  15 + /* background-color: #3F7EFF; */
  16 +}
  17 +
  18 +.rule-container {
  19 + padding-top: 40rpx;
  20 + align-items: center;
  21 + justify-content: space-between;
  22 + position: relative;
  23 +}
  24 +.points {
  25 + background-color: #FFBC47;
  26 + color: #333;
  27 + font-size: 26rpx;
  28 + border-top-right-radius: 25rpx;
  29 + border-bottom-right-radius: 25rpx;
  30 + display: flex;
  31 + align-items: center;
  32 + padding-right: 20rpx;
  33 + line-height: 50rpx;
  34 +}
  35 +.rule {
  36 + padding: 10rpx 20rpx;
  37 + color: #FFBC47;
  38 + font-size: 26rpx;
  39 +}
  40 +
  41 +.coin {
  42 + width: 30rpx;
  43 + height: 25rpx;
  44 + padding-left: 10rpx;
  45 + padding-right: 6rpx;
  46 +}
  47 +
  48 +.current {
  49 + display: flex;
  50 + justify-content: space-between;
  51 + padding: 60rpx 30rpx 30rpx;
  52 + color: white;
  53 + font-size: 28rpx;
  54 +}
  55 +
  56 +.days {
  57 + font-weight: bold;
  58 + color: #FFE749;
  59 +}
  60 +
  61 +.f-vc {
  62 + display: flex;
  63 + align-items: center;
  64 +}
  65 +
  66 +.btn-container {
  67 + display: flex;
  68 + justify-content: space-around;
  69 + margin-bottom: 80rpx;
  70 +}
  71 +
  72 +.icon-rili,
  73 +.icon-buqian {
  74 + margin-right: 10rpx;
  75 + font-size: 40rpx;
  76 + font-weight: normal;
  77 +}
  78 +
  79 +
  80 +.btn {
  81 + width: 260rpx;
  82 + line-height: 76rpx;
  83 + padding-left: 30rpx;
  84 + padding-right: 30rpx;
  85 + background-color: #FFBC47;
  86 + border-radius: 38rpx;
  87 + color: white;
  88 + text-align: center;
  89 + box-shadow: 0 7px 0 #FF9A45, 0 8px 3px rgba(0, 0, 0, 0.3);
  90 + margin: 0 auto;
  91 + display: flex;
  92 + align-items: center;
  93 + justify-content: center;
  94 + font-weight: bold;
  95 +}
  96 +
  97 +.list {
  98 + margin: 80rpx 20rpx 60rpx;
  99 + color: rgba(255,255,255,.3);
  100 + align-items: center;
  101 + position: relative;
  102 +}
  103 +.list::after {
  104 + content: '';
  105 + position: absolute;
  106 + left: 0;
  107 + right: 0;
  108 + top: 30rpx;
  109 + margin: 0 auto;
  110 + width: 94%;
  111 + height: 10rpx;
  112 + background-color: rgba(255,255,255,.3);
  113 +}
  114 +.list-item {
  115 + width: calc(100% / 7);
  116 + text-align: center;
  117 +}
  118 +.circle {
  119 + width: 68rpx;
  120 + height: 68rpx;
  121 + line-height: 68rpx;
  122 + font-size: 26rpx;
  123 + color: white;
  124 + background-color: #FF9A45;
  125 + margin: 0 auto 10rpx auto;
  126 + position: relative;
  127 + z-index: 3;
  128 +}
  129 +.list-item.active {
  130 + color: white;
  131 + /* font-weight: bold; */
  132 +}
  133 +.list-item.active .circle {
  134 + box-sizing: border-box;
  135 + background-color: #FFBC47;
  136 + /* color: white; */
  137 + border: 4rpx solid white;
  138 + line-height: 64rpx;
  139 + /* box-shadow: 2rpx 2rpx 16rpx #ddd; */
  140 +}
  141 +
  142 +.calendar-container {
  143 + position: relative;
  144 + padding: 0 60rpx;
  145 +}
  146 +.calendar-container::before {
  147 + content: '';
  148 + position: absolute;
  149 + left: 0;
  150 + right: 0;
  151 + top: 0;
  152 + margin: 0 auto;
  153 + width: 680rpx;
  154 + height: 24rpx;
  155 + border-radius: 12rpx;
  156 + /* background-color: #8AAFFC; */
  157 + background: linear-gradient(#CBDAFC, #6E9CFD);
  158 + box-shadow: 0 2rpx 10rpx #6C98F4;
  159 +}
  160 +.calendar-wrapper {
  161 + background: linear-gradient(#BAD4FD, white 6rpx);
  162 + position: relative;
  163 + z-index: 2;
  164 + width: 100%;
  165 + top: 12rpx;
  166 + left: 0;
  167 + border-bottom-left-radius: 16rpx;
  168 + border-bottom-right-radius: 16rpx;
  169 + box-shadow: 0 2rpx 16rpx #999;
  170 +}
  171 +.calendar-title {
  172 + text-align: center;
  173 + line-height: 86rpx;
  174 + border-bottom: 2rpx solid #E0E6EE;
  175 + display: flex;
  176 + align-items: center;
  177 + padding: 0 20rpx;
  178 + justify-content: space-between;
  179 +}
  180 +
  181 +.calendar {
  182 + /* height: 400rpx; */
  183 + font-size: 26rpx;
  184 + color: #838E9C;
  185 + padding-bottom: 20rpx;
  186 +}
  187 +.week {
  188 + display: flex;
  189 + flex-wrap: wrap;
  190 + text-align: center;
  191 +}
  192 +
  193 +
  194 +.jfbuy-container {
  195 + padding: 60rpx 40rpx 40rpx;
  196 +}
  197 +.jfbuy {
  198 + /* border: 2rpx solid black; */
  199 + border-radius: 16rpx;
  200 + padding: 40rpx 30rpx;
  201 + background-color: #FF980F;
  202 + box-shadow: 0 2rpx 16rpx #FF7A07;
  203 + /* position: fixed;
  204 + width: 100%;
  205 + bottom: 0; */
  206 + /* padding: 40rpx 20rpx; */
  207 +}
  208 +
  209 +.jfbuy-img {
  210 + width: 260rpx;
  211 + height: 180rpx;
  212 + padding-right: 40rpx;
  213 +}
  214 +.t1 {
  215 + font-weight: bolder;
  216 + color: white;
  217 +}
  218 +.t2 {
  219 + color: white;
  220 + font-size: 24rpx;
  221 + padding-top: 10rpx;
  222 +}
  223 +.right {
  224 + display: flex;
  225 + flex-direction: column;
  226 + justify-content: space-between;
  227 + flex: 1;
  228 +}
  229 +.btn-buy {
  230 + /* padding: 20rpx 10rpx; */
  231 + border: 2rpx solid white;
  232 + color: white;
  233 + line-height: 60rpx;
  234 + border-radius: 30rpx;
  235 +}
  236 +
  237 +.today .day {
  238 + /* background-color: skyblue;
  239 + border-radius: 50%; */
  240 + /* color: white; */
  241 + /* width: 44rpx;
  242 + height: 44rpx;
  243 + line-height: 44rpx; */
  244 + /* border-radius: 50%; */
  245 + /* background-color: rgba(255,188,71,.6); */
  246 + /* box-shadow: 0 2rpx 12rpx #FFBC47; */
  247 +}
  248 +
  249 +.active .day,
  250 +.bq .day {
  251 + position: relative;
  252 +}
  253 +
  254 +.active .day::after {
  255 + content: '';
  256 + position: absolute;
  257 + width: 10rpx;
  258 + height: 10rpx;
  259 + border-radius: 50%;
  260 + background-color: #FFBC47;
  261 + left: 0;
  262 + right: 0;
  263 + bottom: 12rpx;
  264 + margin: auto;
  265 + box-shadow: 0 2rpx 12rpx #FFBC47;
  266 +}
  267 +
  268 +.bq .day {
  269 + background-color: #eee;
  270 +}
  271 +
  272 +.bq .day::before {
  273 + position: absolute;
  274 + top: 4rpx;
  275 + right: 0;
  276 + content: '补';
  277 + color: white;
  278 + font-size: 16rpx;
  279 + line-height: 16rpx;
  280 + z-index: 5;
  281 +}
  282 +.bq .day::after {
  283 + position: absolute;
  284 + top: 0;
  285 + right: 0;
  286 + content: '';
  287 + width: 0;
  288 + border-top: 34rpx solid #ccc;
  289 + border-left: 34rpx solid transparent;
  290 +
  291 +}
  292 +
  293 +
  294 +.popup-container {
  295 + position: fixed;
  296 + top: 0;
  297 + bottom: 0;
  298 + left: 0;
  299 + right: 0;
  300 + z-index: 99;
  301 + background-color: rgba(0,0,0,.5);
  302 +}
  303 +
  304 +.popup-wrapper {
  305 + position: absolute;
  306 + width: 80%;
  307 + max-height: 880rpx;
  308 + top: 0;
  309 + bottom: 0;
  310 + left: 0;
  311 + right: 0;
  312 + margin: auto;
  313 + display: flex;
  314 + flex-direction: column;
  315 + justify-content: center;
  316 + align-items: center;
  317 +}
  318 +
  319 +.popup {
  320 + padding: 30rpx;
  321 + background-color: white;
  322 + border-radius: 20rpx;
  323 + max-height: 800rpx;
  324 + overflow: auto;
  325 +}
  326 +
  327 +.popup-title {
  328 + font-weight: 28rpx;
  329 + font-weight: bold;
  330 + padding-bottom: 20rpx;
  331 +}
  332 +
  333 +.popup-content {
  334 + text-align: justify;
  335 +}
  336 +
  337 +.popup-close {
  338 + color: white;
  339 + text-align: center;
  340 + padding-top: 20rpx;
  341 +}
  342 +.btn-close {
  343 + display: inline-block;
  344 + width: 50rpx;
  345 + height: 50rpx;
  346 + line-height: 50rpx;
  347 + border-radius: 50%;
  348 + border: 4rpx solid white;
  349 +}
  350 +
  351 +.date {
  352 + width: 100%;
  353 + display: flex;
  354 + flex-wrap: wrap;
  355 + text-align:center;
  356 +}
... ...