{"id":3557,"date":"2022-03-16T17:23:25","date_gmt":"2022-03-16T09:23:25","guid":{"rendered":"https:\/\/egonlin.com\/?p=3557"},"modified":"2022-03-16T17:23:25","modified_gmt":"2022-03-16T09:23:25","slug":"%e7%ac%ac%e5%85%ad%e8%8a%82%ef%bc%9a%e9%a6%96%e9%a1%b5%e7%94%9f%e6%88%90%e7%a4%bc%e5%8c%85","status":"publish","type":"post","link":"https:\/\/egonlin.com\/?p=3557","title":{"rendered":"\u7b2c\u516d\u8282\uff1a\u9996\u9875\u751f\u6210\u793c\u5305"},"content":{"rendered":"<h3>\u9996\u9875\u751f\u6210\u793c\u5305<\/h3>\n<p><strong>\u9700\u6c42\uff1a<\/strong>\u7528\u6237\u9009\u62e9\u597d\u8981\u9001\u7684\u793c\u54c1\u8fc7\u540e\uff0c\u53ef\u4ee5\u9009\u62e9\u5f00\u5956\u65b9\u5f0f\uff0c\u6709\u76f4\u63a5\u5f00\u5956\uff0c\u6ee1\u4eba\u5f00\u5956\uff0c\u4ee5\u53ca\u5b9a\u65f6\u5f00\u5956\u4e09\u79cd\u5f00\u5956\u65b9\u5f0f\uff0c\u5f53\u8ba2\u5355\u521b\u5efa\u5b8c\u6210\u540e\uff0c\u8bf7\u6c42\u652f\u4ed8\uff0c\u652f\u4ed8\u6210\u529f\u540e\uff0c\u8df3\u8f6c\u5230\u652f\u4ed8\u7ed3\u679c\u9875\uff0cps\uff1a\u8fd9\u91cc\u652f\u4ed8\u9700\u8981\u5546\u6237\u53f7\uff0c\u6240\u4ee5\u521b\u5efa\u8ba2\u5355\u540e\uff0c\u76f4\u63a5\u652f\u4ed8\u6210\u529f\u3002<\/p>\n<h4>\u5c0f\u7a0b\u5e8f\u7aef<\/h4>\n<p>1 \u5f53\u7528\u6237\u70b9\u51fb\u751f\u6210\u793c\u5305\u7684\u65f6\u5019\uff0c\u5fc5\u987b\u4fdd\u8bc1\u7528\u6237\u662f\u767b\u5165\u72b6\u6001\uff0c\u5c06\u8ba2\u5355\u4fe1\u606f\u53d1\u9001\u7ed9\u540e\u7aef\uff0c\u521b\u5efa\u8ba2\u5355\u540e\uff0c\u8df3\u8f6c\u5230\u652f\u4ed8\u7ed3\u679c\u9875\u3002<\/p>\n<p>app.json<\/p>\n<pre><code class=\"language-json\">{\n  &quot;pages&quot;: [\n      &quot;pages\/index\/index&quot;,\n    &quot;pages\/list\/list&quot;,\n    &quot;pages\/item\/item&quot;,\n    &quot;pages\/login\/login&quot;\n  ],\n  &quot;window&quot;: {\n    &quot;backgroundTextStyle&quot;: &quot;light&quot;,\n    &quot;navigationBarBackgroundColor&quot;: &quot;#e50e38&quot;,\n    &quot;navigationBarTitleText&quot;: &quot;\u767e\u6b65\u751f\u6d3b&quot;,\n    &quot;navigationBarTextStyle&quot;: &quot;#fff&quot;,\n    &quot;enablePullDownRefresh&quot;: false,\n    &quot;backgroundColor&quot;: &quot;#e50e38&quot;\n  },\n}\n<\/code><\/pre>\n<p>index.json<\/p>\n<pre><code class=\"language-json\">{\n\n    &quot;backgroundTextStyle&quot;: &quot;light&quot;,\n    &quot;navigationBarBackgroundColor&quot;: &quot;#e50e38&quot;,\n    &quot;navigationBarTitleText&quot;: &quot;\u767e\u6b65Gift&quot;,\n    &quot;navigationBarTextStyle&quot;: &quot;white&quot;,\n    &quot;enablePullDownRefresh&quot;: false\n\n}<\/code><\/pre>\n<p>index.wxml<\/p>\n<pre><code class=\"language-php+HTML\">&lt;!--index.wxml--&gt;\n&lt;view class=&quot;container&quot;&gt;\n    &lt;view class=&quot;top&quot;&gt;\n        &lt;text class=&quot;text1&quot;&gt;\u5fae\u4fe1\u9001\u793c\u65b0\u65b9\u5f0f&lt;\/text&gt;\n        &lt;text class=&quot;text2&quot;&gt;\u5fae\u4fe1\u4e0a\u9001\u793c\u00b7\u5bf9\u65b9\u586b\u5730\u5740\u00b7\u514d\u90ae\u9001\u4e0a\u95e8&lt;\/text&gt;\n        &lt;navigator url=&quot;\/pages\/guide\/guide&quot; class=&quot;guide&quot;&gt;\u64cd\u4f5c\u6307\u5357&lt;\/navigator&gt;\n    &lt;\/view&gt; \n    &lt;block wx:if=&quot;{{gifts.length&gt;0}}&quot;&gt;\n      &lt;view class=&quot;gift-lists&quot;&gt;\n        &lt;block wx:for=&quot;{{gifts}}&quot; wx:for-index=&quot;index&quot; wx:key=&quot;key&quot;&gt;\n            &lt;view class=&quot;item&quot;&gt;\n              &lt;image class=&quot;item-img&quot; src=&quot;{{item.img}}&quot;&gt;&lt;\/image&gt;\n              &lt;view class=&quot;caption&quot;&gt;\n                  &lt;view class=&quot;name&quot;&gt;{{item.name}}&lt;\/view&gt;\n                  &lt;view class=&quot;brief&quot;&gt;{{item.brief}}&lt;\/view&gt;\n                  &lt;view class=&quot;price&quot;&gt;\u00a5{{item.price}}&lt;\/view&gt;\n              &lt;\/view&gt;\n              &lt;view class=&quot;btn-group&quot;&gt;\n                  &lt;view class=&quot;minus&quot; bindtap=&#039;minusAction&#039; data-id=&quot;{{item.product_id}}&quot;&gt;-&lt;\/view&gt;\n                  &lt;input type=&quot;number&quot; disabled class=&quot;ipt&quot; value=&quot;{{item.num}}&quot;&gt;&lt;\/input&gt;\n                  &lt;view class=&quot;plus&quot; bindtap=&#039;plusAction&#039; data-id=&quot;{{item.product_id}}&quot;&gt;+&lt;\/view&gt;\n              &lt;\/view&gt;\n            &lt;\/view&gt;          \n        &lt;\/block&gt;\n        &lt;view class=&quot;gift-total&quot;&gt;\n            &lt;text class=&quot;num&quot;&gt;\u5171{{totalgiftsNum}}\u4ef6\u793c\u7269&lt;\/text&gt;\n            &lt;text bindtap=&#039;bindViewTap&#039; class=&quot;add&quot;&gt;\u7ee7\u7eed\u6dfb\u52a0&gt;&lt;\/text&gt;\n        &lt;\/view&gt;\n      &lt;\/view&gt;\n    &lt;\/block&gt;\n    &lt;block wx:else&gt;\n      &lt;view class=&quot;no-product&quot; bindtap=&#039;bindViewTap&#039;&gt;\n        &lt;image class=&quot;gift-icon1&quot; src=&#039;..\/..\/images\/purplebox.png&#039;&gt;&lt;\/image&gt;\n        &lt;view class=&quot;none-tip&quot;&gt;\n          &lt;text class=&quot;tip1&quot;&gt;\u5f00\u59cb\u6311\u9009\u793c\u7269&lt;\/text&gt;\n          &lt;text class=&quot;tip2&quot;&gt;\u70b9\u51fb\u8fd9\u91cc\uff0c\u6311\u9009\u559c\u6b22\u7684\u793c\u7269&lt;\/text&gt;\n        &lt;\/view&gt;\n      &lt;\/view&gt;\n    &lt;\/block&gt;\n    &lt;view class=&quot;selectType&quot;&gt;\n        &lt;view class=&quot;typeName&quot;&gt;{{gifttype}}&lt;\/view&gt;\n        &lt;view class=&quot;selectBtn&quot; bindtap=&#039;selectType&#039;&gt;\u66f4\u6539\u73a9\u6cd5&gt;&lt;\/view&gt;\n    &lt;\/view&gt;\n    &lt;block wx:if=&quot;{{gifttype==&#039;\u5b9a\u65f6\u5f00\u5956&#039;}}&quot;&gt;\n      &lt;picker mode=&quot;multiSelector&quot; bindchange=&quot;bindMultiPickerChange&quot; bindcolumnchange=&quot;bindMultiPickerColumnChange&quot; value=&quot;{{multiIndex}}&quot; range=&quot;{{multiArray}}&quot; class=&quot;typeIpt&quot;&gt;\n          &lt;image src=&quot;..\/..\/images\/ipt-icon1.png&quot; class=&quot;icon&quot;&gt;&lt;\/image&gt;\n          &lt;view class=&quot;tip&quot;&gt;\u5b9a\u65f6\u5f00\u5956&lt;\/view&gt;\n          &lt;view class=&quot;timer&quot;&gt;\n          {{multiArray[0][multiIndex[0]]}} {{multiArray[1][multiIndex[1]]}}:{{multiArray[2][multiIndex[2]]}}&lt;\/view&gt;\n      &lt;\/picker&gt;\n    &lt;\/block&gt;\n    &lt;block wx:elif=&quot;{{gifttype==&#039;\u6ee1\u4eba\u5f00\u5956&#039;}}&quot;&gt;\n      &lt;view class=&quot;typeIpt&quot;&gt;\n          &lt;image src=&quot;..\/..\/images\/ipt-icon1.png&quot; class=&quot;icon&quot;&gt;&lt;\/image&gt;\n          &lt;view class=&quot;tip&quot;&gt;\u5f00\u5956\u4eba\u6570&lt;\/view&gt;\n          &lt;view class=&quot;ipt-wrap&quot;&gt;&lt;input bindinput=&quot;personChange&quot; class=&quot;num&quot; value=&quot;{{personNum}}&quot; maxlength=&quot;3&quot; placeholder=&#039;\u4eba\u6570&#039; type=&quot;number&quot;&gt;&lt;\/input&gt;\u4eba&lt;\/view&gt;\n      &lt;\/view&gt;\n    &lt;\/block&gt;\n    &lt;block wx:else&gt;\n      &lt;view bindtap=&#039;selectType&#039; class=&quot;typeIpt&quot;&gt;\n          &lt;image src=&quot;..\/..\/images\/ipt-icon1.png&quot; class=&quot;icon&quot;&gt;&lt;\/image&gt;\n          &lt;view class=&quot;tip&quot;&gt;\u6bcf\u4eba\u6700\u591a\u53ef\u9886\u4e00\u4efd\u793c\u7269&lt;\/view&gt;\n      &lt;\/view&gt;\n    &lt;\/block&gt;\n    &lt;view class=&quot;selectType&quot;&gt;\n        &lt;view class=&quot;typeName&quot;&gt;\u4f20\u8fbe\u5fc3\u610f\uff0c\u5199\u795d\u798f\u8bed&lt;\/view&gt;\n    &lt;\/view&gt; \n    &lt;textarea show-confirm-bar=&quot;false&quot; class=&quot;wish&quot; auto-height placeholder=&quot;\u5927\u5409\u5927\u5229\uff0c\u9001\u4f60\u597d\u793c&quot; placeholder-style=&quot;color:#ccc;&quot; value=&quot;{{wish}}&quot; bindinput=&quot;bindwish&quot;\/&gt;\n    &lt;view class=&quot;total-price&quot;&gt;\u00a5&lt;text class=&quot;price&quot;&gt;{{totalPrice}}&lt;\/text&gt;&lt;\/view&gt;\n    &lt;button class=&quot;btn-finish&quot; bindtap=&#039;getRedPackage&#039;&gt;\u751f\u6210\u793c\u7269\u7ea2\u5305&lt;\/button&gt;\n    &lt;view class=&quot;bottom&quot;&gt;\n        &lt;navigator class=&quot;guide&quot; url=&quot;\/pages\/guide\/guide&quot; hover-class=&quot;navigator-hover&quot;&gt;\u4f7f\u7528\u8bf4\u660e&lt;\/navigator&gt;\n    &lt;\/view&gt;\n&lt;\/view&gt;<\/code><\/pre>\n<p>index.wxss<\/p>\n<pre><code class=\"language-css\">\/**index.wxss**\/\npage{\n  background: #f2f2f2;\n}\n.container{\n  padding: 0;\n  background: #f2f2f2;\n}\n.top{\n  height: 360rpx;\n  width: 100%;\n  background: linear-gradient(#e50e38, #f0743e);\n}\n.top .text1{\n  font-size: 40rpx;\n  color: #fff;\n  padding-left:80rpx;\n  position: relative;\n  top: 80rpx;\n  display: block;\n}\n.top .text2{\n  font-size: 30rpx;\n  color: #fff;\n  padding-left:80rpx;\n  position: relative;\n  top: 90rpx;\n  display: block;\n}\n.top .guide{\n  display: inline-block;\n  width: 60rpx;\n  height: 60rpx;\n  border-radius: 50%;\n  background: #f34043;\n  position: absolute;\n  right: 40rpx;\n  top: 40rpx;\n  text-align: center;\n  color: #fff;\n  padding: 20rpx;\n  line-height: 30rpx;\n  font-size: 24rpx;\n}\n.userinfo {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n}\n\n.userinfo-avatar {\n  width: 128rpx;\n  height: 128rpx;\n  margin: 20rpx;\n  border-radius: 50%;\n}\n\n.userinfo-nickname {\n  color: #aaa;\n}\n\n.usermotto {\n  margin-top: 200px;\n}\n.swiper {\n  height: 312.5rpx;\n  width: 100%;\n}\n.swiper image {\n  height: 100%;\n  width: 100%;\n}\n.no-product{\n  background: #faf1ea;\n  width: 680rpx;\n  height: 160rpx;\n  border-radius:16rpx;\n  position: relative;\n  top:-80rpx;\n  vertical-align: middle;\n}\n.no-product .gift-icon1{\n  width:80rpx;\n  height:80rpx;\n  display:inline-block;\n  vertical-align:middle;\n  padding-top:40rpx;\n  padding-left:40rpx;\n  padding-right:40rpx;\n}\n.no-product .none-tip{\n  display: inline-block;\n  width: 450rpx;\n  position:relative;\n  top:40rpx;\n}\n.no-product .none-tip .tip1{\n  color: #bea272;\n  font-size: 34rpx;\n  display: block;\n}\n.no-product .none-tip .tip2{\n  color: #000;\n  font-size: 30rpx;\n  display: block;\n  position: relative;\n  top: 10rpx;\n}\n.gift-lists{\n  background: #fff;\n  width: 620rpx;\n  border-radius:16rpx;\n  position: relative;\n  top:-80rpx;\n  padding:30rpx;\n}\n.gift-lists .item{\n  margin-bottom: 20rpx;\n  border-bottom: 1px solid #eee;\n  position: relative;\n  padding-bottom:10rpx;\n}\n.gift-lists .item .item-img{\n  width: 140rpx;\n  height: 140rpx;\n  padding-right: 20rpx;\n}\n.gift-lists .item .caption{\n  width: 400rpx;\n  display: inline-block;\n}\n.gift-lists .item .name{\n  width: 400rpx;\n  overflow: hidden;\n  font-size: 28rpx;\n  height: 40rpx;\n  line-height: 40rpx;\n}\n.gift-lists .item .brief{\n  width: 400rpx;\n  overflow: hidden;\n  font-size: 28rpx;\n  height: 40rpx;\n  line-height: 40rpx;\n  color: #ccc;\n}\n.gift-lists .item .price{\n  width: 400rpx;\n  overflow: hidden;\n  font-size: 28rpx;\n  height: 40rpx;\n  line-height: 40rpx;\n  color: #e50e38;\n}\n.gift-lists .item .btn-group{\n  position: absolute;\n  right:0;\n  bottom:10rpx;\n  width:180rpx;\n}\n.gift-lists .item .btn-group .minus{\n  width: 36rpx;\n  height: 36rpx;\n  border-radius: 50%;\n  border: 2rpx solid #ccc;\n  display: inline-block;\n  text-align: center;\n  vertical-align: middle;\n  line-height: 36rpx;\n  color: #ccc;\n  font-size: 28rpx;\n}\n.gift-lists .item .btn-group .plus{\n  width: 36rpx;\n  height: 36rpx;\n  border-radius: 50%;\n  border: 2rpx solid #ccc;\n  display: inline-block;\n  text-align: center;\n  vertical-align: middle;\n  line-height: 36rpx;\n  color: #ccc;\n  font-size: 28rpx;\n}\n.gift-lists .item .btn-group .ipt{\n  width:80rpx;\n  display:inline-block;\n  text-align: center;\n  height: 36rpx;\n  font-size: 28rpx;\n  vertical-align:middle;\n  background: #f9f9f9;\n  margin: 0 6rpx;\n}\n.gift-lists .gift-total{\n  height: 48rpx;\n}\n.gift-lists .gift-total .num{\n  color: #ccc;\n  font-size:28rpx; \n  line-height: 48rpx;\n  vertical-align: middle;\n}\n.gift-lists .gift-total .add{\n  color: #9786ed;\n  font-size:28rpx; \n  float: right;\n  line-height: 48rpx;\n  vertical-align: middle;\n}\n.selectType{\n  width: 620rpx;\n  height: 60rpx;\n  position: relative;\n  top: -80rpx;\n  padding: 10rpx 65rpx;\n}\n.selectType .typeName{\n  font-size: 28rpx;\n  display: inline;\n  vertical-align: middle;\n  line-height:60rpx;\n}\n.selectType .selectBtn{\n  font-size: 28rpx;\n  float: right;\n  vertical-align: middle;\n  line-height: 60rpx;\n  color: #9786ed;\n}\n.typeIpt{\n    background: #fff;\n    width: 620rpx;\n    border-radius:16rpx;\n    position: relative;\n    top:-80rpx;\n    padding:0rpx 30rpx;\n    height: 80rpx;\n    vertical-align: middle;\n}\n.typeIpt .ipt-wrap{\n  font-size: 28rpx;\n  display: inline-block;\n  top: 0;\n  right: 0;\n  z-index: 99;\n  position: absolute;\n  height: 80rpx;\n  vertical-align: middle;\n  line-height: 80rpx;\n  width: 120rpx;\n  color: #000;\n  padding-right:10rpx;\n}\n.timer{\n  font-size: 28rpx;\n  position: absolute;\n  height: 80rpx;\n  vertical-align: middle;\n  line-height: 80rpx;\n  width: 420rpx;\n  color: #000;\n  top: 0;\n  right: 30rpx;\n  text-align: right;\n}\n.typeIpt .ipt-wrap .num{\n  width: 60rpx;\n  display: inline-block;\n  height:80rpx;\n  vertical-align:middle;\n  padding-right: 8rpx;\n  text-align: right;\n}\n.typeIpt .icon{\n  width: 40rpx;\n  height: 40rpx;\n  display: inline-block;\n  padding-right: 10rpx;\n  padding-top: 20rpx;\n  line-height: 80rpx;\n}\n.typeIpt .tip{\n  font-size: 28rpx;\n  color: #ccc;\n  display: inline-block;\n  top: 0;\n  position: absolute;\n  height: 80rpx;\n  vertical-align: middle;\n  line-height: 80rpx;\n}\n.wish{\n  background: #fff;\n  width: 620rpx;\n  border-radius:16rpx;\n  position: relative;\n  padding:10rpx 30rpx;\n  vertical-align: middle;\n  top:-80rpx;\n  color: #ccc;\n  font-size: 32rpx;\n  padding-bottom: 60rpx;\n}\n.total-price{\n  position: relative;\n  top: -66rpx;\n}\n.total-price .price{\n  font-size: 64rpx;\n  padding-left: 10rpx;\n}  \n.btn-finish{\n  background: #e50e38;\n  border:none;\n  color: #fff;\n  width: 580rpx;\n  font-size: 32rpx;\n  padding: 8rpx 0;\n  position: relative;\n  top: -60rpx;\n}\n.bottom{\n  padding-bottom: 10rpx;\n  position: relative;\n  top: -40rpx\n}\n.bottom .guide{\n  display: inline-block;\n  font-size: 28rpx;\n  color: #ccc;\n  vertical-align: middle;\n  padding: 0 10rpx;\n  height: 32rpx;\n}\n.bottom .agree{\n  display: inline-block;\n  font-size: 28rpx;\n  color: #ccc;\n  vertical-align: middle;\n  padding: 0 10rpx;\n  height: 32rpx;\n}<\/code><\/pre>\n<p>index.js<\/p>\n<pre><code class=\"language-js\">\/\/index.js\n\/\/\u83b7\u53d6\u5e94\u7528\u5b9e\u4f8b\nconst app = getApp()\n\nPage({\n  data: {\n    motto: &#039;Hello World&#039;,\n    userInfo: {},\n    gifttype:&#039;\u76f4\u63a5\u9001\u793c&#039;,\n    hasUserInfo: false,\n    canIUse: wx.canIUse(&#039;button.open-type.getUserInfo&#039;),\n    totalPrice:&quot;0.00&quot;,\n    multiArray: [&#039;&#039;, &#039;&#039;, &#039;&#039;],\n    gifts:[],\n    personNum:3,\n    objectMultiArray: [\n        [], \n        [], \n        []\n    ],\n    multiIndex: [0, 0, 0],\n    weekArr:[&#039;\u5468\u65e5&#039;,&#039;\u5468\u4e00&#039;,&#039;\u5468\u4e8c&#039;,&#039;\u5468\u4e09&#039;,&#039;\u5468\u56db&#039;,&#039;\u5468\u4e94&#039;,&#039;\u5468\u516d&#039;],\n    wish:&#039;&#039;\n  },\n  bindwish:function(e){\/\/\u795d\u798f\u8bed\u4fdd\u5b58\u5230\u672c\u5730\n      var _this = this;\n      _this.data.wish = e.detail.value;\n      wx.setStorageSync(&#039;wish&#039;, e.detail.value);\n  },\n  personChange:function(e){\/\/\u5f00\u5956\u4eba\u6570\u4fee\u6539\n      var _this = this;\n      var p_num = e.detail.value;\n      _this.data.personNum = p_num;\n      wx.setStorageSync(&#039;p_num&#039;, e.detail.value);\n  },\n  getDate:function(){\n    var _this = this;\n    var _now = new Date();\/\/\u5f53\u524d\u65f6\u95f4\n    var multi0 =&#039;multiArray[&#039;+0+&#039;]&#039;;\n    var multi1 = &#039;multiArray[&#039; + 1 + &#039;]&#039;;\n    var multi2 = &#039;multiArray[&#039; + 2 + &#039;]&#039;;\n    var nowDayArr = [_this.getMd(0), _this.getMd(1), _this.getMd(2), _this.getMd(3), _this.getMd(4), _this.getMd(5), _this.getMd(6)];\n    var nowhoursArr = _this.getHour(0);\n    var nowminutesArr = _this.getMin(0);\n    _this.setData({\n      [multi0]: nowDayArr,\n      [multi1]: nowhoursArr,\n      [multi2]: nowminutesArr\n    });\n  },\n  getMd:function(dayNum){\/\/\u53c2\u65701\u5f53\u524d\u65f6\u95f4\u540e\u7b2c\u51e0\u5929int\u7c7b\u578b \u83b7\u53d6\u6708\u4efd\u65e5\u671f\u548c\u661f\u671f \u591a\u5217\u9009\u62e9\u7b2c\u4e00\u5217\n      var _this = this;\n      var _now = new Date();\n      var targetday_milliseconds = _now.getTime() + 1000 * 60 * 60 * 24 * dayNum;\/\/\u76ee\u6807\u65e5\u671f\u7684\u65f6\u95f4\u6233\n      _now.setTime(targetday_milliseconds);\/\/\u65f6\u95f4\u8bbe\u7f6e\n      var _str = (_now.getFullYear()) + &#039;\u5e74&#039; +((_now.getMonth() + 1) &lt; 10 ? &#039;0&#039; + (_now.getMonth() + 1) : (_now.getMonth() + 1)) + &#039;\u6708&#039; + (_now.getDate() &lt; 10 ? &#039;0&#039; + _now.getDate() : _now.getDate()) + &#039;\u65e5 &#039; + _this.data.weekArr[_now.getDay()];\n      return _str;\n  },\n  getHour: function (dayNum) {\/\/\u65f6\u95f4\u9009\u62e9\u591a\u5217\u7b2c\u4e8c\u5217\u5c0f\u65f6\n      var _this = this;\n      var _now = new Date();\n      var _hour = _now.getHours();\n      var _minute = _now.getMinutes();\n      if(dayNum&lt;=0){\n        var hoursArr = [];\n        var idx = parseInt(_hour);\n        if(_minute&gt;55){\/\/\u5982\u679c\u5df2\u7ecf\u8fc7\u4e8655\u5206\u949f\u5219\u4ece\u4e0b\u4e00\u4e2a\u6574\u70b9\u5f00\u59cb\n          for (var i = idx+1; i &lt;= 23; i++) {\n            var _stri = i &lt; 10 ? (&#039;0&#039; + i) : i;\n            hoursArr.push(_stri);\n          }\n        }else{\n          for (var i = idx; i &lt;= 23; i++) {\n            var _stri = i &lt; 10 ? (&#039;0&#039; + i) : i;\n            hoursArr.push(_stri);\n          }\n        }\n        return hoursArr;\n      }else{\n        var hoursArr = [];\n        var idx = parseInt(_hour);\n        for (var i = 0; i &lt;= 23; i++) {\n          var _stri = i &lt; 10 ? (&#039;0&#039; + i) : i;\n          hoursArr.push(_stri);\n        }\n        return hoursArr;\n      }\n  },\n  getMin:function(key){\n    var _this = this;\n    var _now = new Date();\n    var _minute = _now.getMinutes();\n    if(key==0){\n        var MinutsArr=[];\n        var idx = Math.ceil(parseInt(_minute)\/5);\n        if(idx==12){\n          for (var i = 0; i &lt; 12; i++) {\n            var _strM = 5 * i &lt; 10 ? (&#039;0&#039; + 5 * i) : 5 * i;\n            MinutsArr.push(_strM);\n          }\n          return MinutsArr;\n        }else{\n          for (var i = idx; i &lt; 12; i++) {\n            var _strM = 5 * i &lt; 10 ? (&#039;0&#039; + 5 * i) : 5 * i;\n            MinutsArr.push(_strM);\n          };\n        }\n        return MinutsArr;\n    }else{\n      var MinutsArr = [];\n      var idx = Math.ceil(parseInt(_minute) \/ 5);\n      for (var i = 0; i &lt; 12; i++) {\n        var _strM = 5 * i &lt; 10 ? (&#039;0&#039; + 5 * i) : 5 * i;\n        MinutsArr.push(_strM);\n      }\n      return MinutsArr;\n    }\n  },\n  bindMultiPickerChange: function (e) {\n    \/\/console.log(&#039;picker\u53d1\u9001\u9009\u62e9\u6539\u53d8\uff0c\u643a\u5e26\u503c\u4e3a&#039;, e.detail.value)\n    this.setData({\n      multiIndex: e.detail.value\n    })\n  },\n  bindMultiPickerColumnChange: function (e) {\n    \/\/console.log(&#039;\u4fee\u6539\u7684\u5217\u4e3a&#039;, e.detail.column, &#039;\uff0c\u503c\u4e3a&#039;, e.detail.value);\n    var _this = this;\n    var data = {\n      multiArray: this.data.multiArray,\n      multiIndex: this.data.multiIndex\n    };\n    data.multiIndex[e.detail.column] = e.detail.value;\n    switch (e.detail.column) {\/\/\u4fee\u6539\u7684\u5217\n      case 0:\/\/\u5982\u679c\u4fee\u6539\u7684\u662f\u7b2c\u4e00\u5217\n        switch (data.multiIndex[0]) {\n          case 0:\/\/\u5982\u679c\u7b2c\u4e00\u5217\u7684\u503c\u662f\u7b2c\u4e00\u4e2a\n            data.multiArray[1] = _this.getHour(0);\n            data.multiArray[2] = _this.getMin(0);\n            break;\n          default:\/\/\u7b2c\u4e00\u5217\u9009\u62e9\u7684\u503c\u4e0d\u662f\u7b2c\u4e00\u4e2a\u7684\u8bdd\u540e\u7eed\u503c\u90fd\u662f\u76f8\u540c\u7684\n            data.multiArray[1] = _this.getHour(1);\n            data.multiArray[2] = _this.getMin(1);\n            break;\n        }\n        data.multiIndex[1] = 0;\n        data.multiIndex[2] = 0;\n        break;\n      case 1:\/\/\u5982\u679c\u4fee\u6539\u7684\u662f\u7b2c\u4e8c\u5217\n        switch (data.multiIndex[0]) {\n          case 0:\/\/\u5982\u679c\u7b2c\u4e00\u5217\u7684\u503c\u662f\u7b2c\u4e00\u4e2a\n            switch (data.multiIndex[1]) {\n              case 0:\n                data.multiArray[2] = _this.getMin(0);\n                break;\n              default:\n                data.multiArray[2] = _this.getMin(1);\n                break;\n            }\n            break;\n          case 1:\/\/\u5982\u679c\u7b2c\u4e00\u5217\u7684\u503c\u662f\u7b2c\u4e8c\u4e2a\n            data.multiArray[2] = _this.getMin(1);\n            break;\n        }\n        data.multiIndex[2] = 0;\n        break;\n    }\n    this.setData(data);\n  },\n  \/\/\u4e8b\u4ef6\u5904\u7406\u51fd\u6570\n  bindViewTap: function () {\/\/\u9009\u62e9\u5546\u54c1\u8df3\u8f6c\u5217\u8868\u9875\n    wx.navigateTo({\n      url: &#039;..\/list\/list&#039;\n    })\n  },\n  selectType:function(){\/\/\u9009\u62e9\u5f00\u5956\u65b9\u5f0f\n    var _this = this;\n    wx.showActionSheet({\n      itemList: [&#039;\u76f4\u63a5\u9001\u793c&#039;, &#039;\u5b9a\u65f6\u5f00\u5956&#039;, &#039;\u6ee1\u4eba\u5f00\u5956&#039;],\n      success: function (res) {\n        if(res.tapIndex==&quot;0&quot;){\n          _this.setData({\n            gifttype:&quot;\u76f4\u63a5\u9001\u793c&quot;\n          });\n          wx.setStorageSync(&#039;gifttype&#039;, &quot;\u76f4\u63a5\u9001\u793c&quot;);\n        }else if (res.tapIndex == &quot;1&quot;) {\n          _this.setData({\n            gifttype: &quot;\u5b9a\u65f6\u5f00\u5956&quot;\n          });\n          wx.setStorageSync(&#039;gifttype&#039;, &quot;\u5b9a\u65f6\u5f00\u5956&quot;);\n        }else if (res.tapIndex == &quot;2&quot;) {\n          _this.setData({\n            gifttype: &quot;\u6ee1\u4eba\u5f00\u5956&quot;\n          });\n          wx.setStorageSync(&#039;gifttype&#039;, &quot;\u6ee1\u4eba\u5f00\u5956&quot;);\n        }\n      },\n      fail: function (res) {\n        console.log(res.errMsg)\n      }\n    })\n  },\n  onLoad: function () {\n    var _this = this;\n    _this.getDate();\n    if (app.globalData.userInfo) {\n      this.setData({\n        userInfo: app.globalData.userInfo,\n        hasUserInfo: true\n      })\n    } else if (this.data.canIUse) {\n      \/\/ \u7531\u4e8e getUserInfo \u662f\u7f51\u7edc\u8bf7\u6c42\uff0c\u53ef\u80fd\u4f1a\u5728 Page.onLoad \u4e4b\u540e\u624d\u8fd4\u56de\n      \/\/ \u6240\u4ee5\u6b64\u5904\u52a0\u5165 callback \u4ee5\u9632\u6b62\u8fd9\u79cd\u60c5\u51b5\n      app.userInfoReadyCallback = res =&gt; {\n        this.setData({\n          userInfo: res.userInfo,\n          hasUserInfo: true\n        })\n      }\n    } else {\n      \/\/ \u5728\u6ca1\u6709 open-type=getUserInfo \u7248\u672c\u7684\u517c\u5bb9\u5904\u7406\n      wx.getUserInfo({\n        success: res =&gt; {\n          app.globalData.userInfo = res.userInfo\n          this.setData({\n            userInfo: res.userInfo,\n            hasUserInfo: true\n          })\n        }\n      })\n    };\n    this.setData({\n      gifts: wx.getStorageSync(&#039;gifts&#039;) || [],\n      wish: wx.getStorageSync(&#039;wish&#039;) || &#039;&#039;,\n      gifttype: wx.getStorageSync(&#039;gifttype&#039;) || &#039;\u76f4\u63a5\u9001\u793c&#039;,\n      personNum: wx.getStorageSync(&#039;p_num&#039;) || this.data.personNum,\n    },() =&gt; {\/\/\u83b7\u53d6\u5546\u54c1\u603b\u6570\u5e76\u4e14\u8d4b\u503c\n        var _total = 0;\n        var _price = 0;\n        for (var i = 0; i &lt; _this.data.gifts.length;i++){\n          _total += parseInt(_this.data.gifts[i].num);\n          _price += parseFloat(_this.data.gifts[i].price) * _this.data.gifts[i].num;\n        };\n        _this.setData({\n          totalgiftsNum:_total,\n          totalPrice: _price.toFixed(2)\n        })\n    });\n  },\n  minusAction:function(e){\/\/\u5546\u54c1\u51cf\u64cd\u4f5c\n    var _this = this;\n    var pid = e.currentTarget.dataset.id;\n    for (var i = 0; i &lt; _this.data.gifts.length; i++) {\n      if (_this.data.gifts[i].product_id == pid) {\n        var num = &#039;gifts[&#039; + i + &#039;].num&#039;;\n        var numData = parseInt(_this.data.gifts[i].num);\n        numData--;\n        if(numData&lt;=0){\n          \/\/\u4ece\u6570\u7ec4\u4e2d\u5220\u9664\n          var arr = _this.data.gifts;\n          arr.splice(i,1);\n          this.setData({\n            gifts: arr\n          }, () =&gt; {\/\/\u83b7\u53d6\u5546\u54c1\u603b\u6570\u5e76\u4e14\u8d4b\u503c\n            var _total = 0;\n            var _price = 0;\n            for (var i = 0; i &lt; _this.data.gifts.length; i++) {\n              _total += parseInt(_this.data.gifts[i].num);\n              _price += parseFloat(_this.data.gifts[i].price) * _this.data.gifts[i].num;\n            };\n            _this.setData({\n              totalgiftsNum: _total,\n              totalPrice: _price.toFixed(2)\n            })\n          })\n        }else{\n          _this.setData({\n            [num]: numData\n          }, () =&gt; {\/\/\u83b7\u53d6\u5546\u54c1\u603b\u6570\u5e76\u4e14\u8d4b\u503c\n            var _total = 0;\n            var _price = 0;\n            for (var i = 0; i &lt; _this.data.gifts.length; i++) {\n              _total += parseInt(_this.data.gifts[i].num);\n              _price += parseFloat(_this.data.gifts[i].price) * _this.data.gifts[i].num;\n            };\n            _this.setData({\n              totalgiftsNum: _total,\n              totalPrice: _price.toFixed(2)\n            })\n          })\n        };\n        wx.setStorageSync(&#039;gifts&#039;, _this.data.gifts);\n        return;\n      }\n    }\n  },\n  plusAction: function (e) {\/\/\u5546\u54c1\u52a0\u64cd\u4f5c\n    var _this = this;\n    var pid = e.currentTarget.dataset.id;\n    for (var i = 0; i &lt; _this.data.gifts.length; i++) {\n      if (_this.data.gifts[i].product_id == pid) {\n        var num = &#039;gifts[&#039; + i + &#039;].num&#039;;\n        var numData = parseInt(_this.data.gifts[i].num);\n        numData++;\n        _this.setData({\n          [num]: numData\n        }, () =&gt; {\/\/\u83b7\u53d6\u5546\u54c1\u603b\u6570\u5e76\u4e14\u8d4b\u503c\n          var _total = 0;\n          var _price = 0;\n          for (var i = 0; i &lt; _this.data.gifts.length; i++) {\n            _total += parseInt(_this.data.gifts[i].num);\n            _price += parseFloat(_this.data.gifts[i].price) * _this.data.gifts[i].num;\n          };\n          _this.setData({\n            totalgiftsNum: _total,\n            totalPrice: _price.toFixed(2)\n          })\n        });\n        wx.setStorageSync(&#039;gifts&#039;, _this.data.gifts);\n      }\n    }\n  },\n  onShareAppMessage: function () {\n    return {\n      title: &#039;\u6765\u4e00\u573a\u610f\u5916\u7684\u9082\u9005&#039;,\n      path: &#039;\/page\/user?id=123&#039;\n    }\n  },\n  \/\/ opencamera: function () {\n  \/\/   wx.scanCode({\n  \/\/     success: (res) =&gt; {\n  \/\/       if (res.result) {\n  \/\/         wx.navigateTo({ url: res.result });\n  \/\/       }\n  \/\/     }\n  \/\/   })\n  \/\/ },\n  checkForm: function () {\/\/\u63d0\u4ea4\u8868\u5355\u6570\u636e\u9a8c\u8bc1\n    var _this = this;\n    var _error_tip = &#039;&#039;;\n    if (_this.data.gifts.length &lt; 1) {\/\/\u793c\u7269\u5217\u8868\u662f\u5426\u4e3a\u7a7a\n      _error_tip = &#039;\u8bf7\u5148\u9009\u62e9\u793c\u7269&#039;;\n      wx.showToast({\n        title: _error_tip,\n        icon: &#039;none&#039;,\n        duration: 2000\n      });\n      return false;\n    };\n    switch (_this.data.gifttype) {\n      case &quot;\u76f4\u63a5\u9001\u793c&quot;:\n        break;\n      case &quot;\u5b9a\u65f6\u5f00\u5956&quot;:\n        var tp = _this.getGiftsTimestamp();\n        var now = Date.parse(new Date()) \/ 1000;\n        if (now &gt;= tp) {\n          _error_tip = &#039;\u5f00\u5956\u65f6\u95f4\u5df2\u8fc7\uff0c\u8bf7\u91cd\u9009&#039;;\n          wx.showToast({\n            title: _error_tip,\n            icon: &#039;none&#039;,\n            duration: 2000\n          });\n          return false;\n        }\n        break;\n      case &quot;\u6ee1\u4eba\u5f00\u5956&quot;:\n        if (parseInt(_this.data.personNum) &lt; _this.data.gifts.length) {\n          _error_tip = &#039;\u5f00\u5956\u4eba\u6570\u5c11\u4e8e\u793c\u7269\u6570&#039;;\n          wx.showToast({\n            title: _error_tip,\n            icon: &#039;none&#039;,\n            duration: 2000\n          });\n          return false;\n        }\n        break;\n    }\n    return true;\n  },\n  errorBox:function(tip){\/\/\u9519\u8bef\u63d0\u793a\n      wx.hideLoading();\n      wx.showToast({\n        title: tip,\n        icon: &#039;none&#039;,\n        duration: 2000\n      });\n  },\n  relogin:function(auth){\/\/\u91cd\u65b0\u767b\u5f55\uff0cauth\u4e3a\u5e03\u5c14\u503c\uff0ctrue\u4e3a\u9700\u8981\u9a8c\u8bc1\u6388\u6743\uff0cfalse\u65f6\u53ea\u66f4\u65b0login_key\n      var _this = this;\n      wx.login({\n          success: res =&gt; {\n            wx.request({\n              url: app.globalData.apiDomain+&#039;\/api\/member\/code\/login&#039;,\n              data: {\n                code: res.code\n              },\n              method: &quot;POST&quot;,\n              header: {\n                &#039;content-type&#039;: &#039;application\/json&#039; \/\/ \u9ed8\u8ba4\u503c\n              },\n              success: function (res) {\n                wx.setStorageSync(&#039;login_key&#039;, res.data.data.login_key);\n                if(auth){\n                    wx.getSetting({\n                    success: res =&gt; {\n                      if (res.authSetting[&#039;scope.userInfo&#039;]) {\n                        \/\/ \u5df2\u7ecf\u6388\u6743\uff0c\u53ef\u4ee5\u76f4\u63a5\u8c03\u7528 getUserInfo \u83b7\u53d6\u5934\u50cf\u6635\u79f0\uff0c\u4e0d\u4f1a\u5f39\u6846\n                        wx.getUserInfo({\n                          success: res =&gt; {\n                            \/\/ \u53ef\u4ee5\u5c06 res \u53d1\u9001\u7ed9\u540e\u53f0\u89e3\u7801\u51fa unionId\n                            _this.globalData.userInfo = res.userInfo;\n                            wx.request({\n                              url: app.globalData.apiDomain+&#039;\/api\/member\/code\/getUserInfo&#039;,\n                              data: {\n                                &#039;iv&#039;: res.iv,\n                                &#039;encryptedData&#039;: res.encryptedData,\n                                &#039;login_key&#039;: wx.getStorageSync(&#039;login_key&#039;)\n                              },\n                              method: &quot;POST&quot;,\n                              header: {\n                                &#039;content-type&#039;: &#039;application\/json&#039; \/\/ \u9ed8\u8ba4\u503c\n                              },\n                              success: function (res) {\n\n                              }\n                            });\n\n                            \/\/ \u7531\u4e8e getUserInfo \u662f\u7f51\u7edc\u8bf7\u6c42\uff0c\u53ef\u80fd\u4f1a\u5728 Page.onLoad \u4e4b\u540e\u624d\u8fd4\u56de\n                            \/\/ \u6240\u4ee5\u6b64\u5904\u52a0\u5165 callback \u4ee5\u9632\u6b62\u8fd9\u79cd\u60c5\u51b5\n                            if (_this.userInfoReadyCallback) {\n                              _this.userInfoReadyCallback(res)\n                            }\n                          }\n                        })\n                      } else {\n                        \/\/\u672a\u6388\u6743\u8df3\u5230\u6388\u6743\u767b\u5f55\u9875\n                        wx.hideLoading();\n                        wx.navigateTo({\n                          url: &#039;..\/login\/login?redirect=index&#039;,\n                        })\n                      }\n                    }\n                  })\n                }\n                _this.getRedPackage();\n              }\n            });\n          }\n        })\n  },\n  getGiftsTimestamp: function () {\/\/\u5b9a\u65f6\u5f00\u5956\u83b7\u53d6\u65f6\u95f4\u6233\u5224\u65ad\n    var _this = this;\n    var ymd = _this.data.multiArray[0][_this.data.multiIndex[0]];\n    var result = ymd.match(\/\\d+\/g);\n    var hour = _this.data.multiArray[1][_this.data.multiIndex[1]];\n    var minutes = _this.data.multiArray[2][_this.data.multiIndex[2]];\n    var _tspStr = result[0] + &#039;\/&#039; + result[1] + &#039;\/&#039; + result[2] + &#039; &#039; + hour + &#039;:&#039; + minutes;\n    var date = new Date(_tspStr);\n    var tsp = Date.parse(date);\n    var utimeStamp = tsp \/ 1000;\n    return String(utimeStamp);\n  },\n  getRedPackage:function(){\/\/\u751f\u6210\u793c\u7269\u7ea2\u5305\u64cd\u4f5c\n    \/\/\u8868\u5355\u6570\u636e\u9a8c\u8bc1\n    var _this = this;\n    var result = _this.checkForm();\n    if(!result){\n        return;\n    }\n    \/\/\u8868\u5355\u901a\u8fc7\u4e4b\u540e\u68c0\u6d4b\u767b\u5f55\u72b6\u6001\u548c\u6388\u6743\u72b6\u6001\n    wx.showLoading({\n      title: &#039;\u9a8c\u8bc1\u767b\u5f55&#039;,\n    });\n    wx.checkSession({\n        success:function(){\/\/sessionKey\u672a\u8fc7\u671f\n            \/\/\u5224\u65ad\u6388\u6743\u72b6\u6001\n          wx.getSetting({\n            success: res =&gt; {\n              if (res.authSetting[&#039;scope.userInfo&#039;]) {\n                \/\/ \u5df2\u7ecf\u6388\u6743\uff0c\u53ef\u4ee5\u76f4\u63a5\u8c03\u7528 getUserInfo \u83b7\u53d6\u5934\u50cf\u6635\u79f0\uff0c\u4e0d\u4f1a\u5f39\u6846\n                wx.getUserInfo({\n                  success: res =&gt; {\n                    \/\/ \u53ef\u4ee5\u5c06 res \u53d1\u9001\u7ed9\u540e\u53f0\u89e3\u7801\u51fa unionId\n                    app.globalData.userInfo = res.userInfo;\n                    wx.request({\n                      url: app.globalData.apiDomain+&#039;\/api\/member\/code\/getUserInfo&#039;,\n                      data: {\n                        &#039;iv&#039;: res.iv,\n                        &#039;encryptedData&#039;: res.encryptedData,\n                        &#039;login_key&#039;: wx.getStorageSync(&#039;login_key&#039;)\n                      },\n                      method: &quot;POST&quot;,\n                      header: {\n                        &#039;content-type&#039;: &#039;application\/json&#039; \/\/ \u9ed8\u8ba4\u503c\n                      },\n                      success: function (res) {\n                        wx.hideLoading();\n                        wx.showLoading({\n                          title: &#039;\u521b\u5efa\u8ba2\u5355&#039;,\n                        });\n                        wx.request({\n                          url: app.globalData.apiDomain+&#039;\/api\/order\/creatOrder&#039;,\/\/\u751f\u6210\u793c\u7269\u7ea2\u5305\u63a5\u53e3\n                          data:{\n                            &#039;productList&#039;: _this.data.gifts,\n                            &#039;login_key&#039;:wx.getStorageSync(&#039;login_key&#039;),\n                            &#039;play&#039;: { &#039;method&#039;: _this.data.gifttype, &#039;openTime&#039;: _this.getGiftsTimestamp(), &#039;openPeople&#039;: _this.data.personNum},\n                            &#039;wish&#039;: _this.data.wish ? _this.data.wish:&#039;\u5927\u5409\u5927\u5229\uff0c\u9001\u4f60\u597d\u793c&#039;\n                          },\n                          method: &quot;POST&quot;,\n                          header: {\n                            &#039;content-type&#039;: &#039;application\/json&#039; \/\/ \u9ed8\u8ba4\u503c\n                          },\n                          success:function(res){\n                            if (res.data.code == &#039;error&#039; &amp;&amp; res.data.message) {\n                              wx.showToast({\n                                title: res.data.message,\n                                icon:&#039;none&#039;\n                              })\n                            }else{\n                              var _orderId = res.data.data.order_id;\n                              \/\/\u76f4\u63a5\u5230\u7ed3\u679c\u9875\n\n                                  wx.removeStorageSync(&#039;gifts&#039;);\n                                  wx.removeStorageSync(&#039;wish&#039;);\n                                  wx.removeStorageSync(&#039;gifttype&#039;);\n                                  wx.removeStorageSync(&#039;p_num&#039;);\n                                  _this.setData({\n                                      gifts: [],\n                                      wish: &#039;&#039;,\n                                      gifttype: &#039;\u76f4\u63a5\u9001\u793c&#039;,\n                                      personNum: _this.data.personNum,\n                                    })\n                                  wx.hideLoading();\n                                  wx.navigateTo({\n                                    url: &#039;..\/payment\/payresult\/payresult?orderId=&#039; + _orderId,\n                                  })\n\n                              \/\/\u53bb\u9664\u652f\u4ed8\n                             \/\/ wx.request({\n                                \/\/ url: app.globalData.apiDomain + &#039;\/api\/payment?act=requestPayment&#039;,\/\/\u8ba2\u5355\u521b\u5efa\u6210\u529f\u540e\u8bf7\u6c42\u5fae\u4fe1\u652f\u4ed8\u7684\u53c2\u6570\n                                \/\/ data: {\n                                \/\/   &#039;login_key&#039;: wx.getStorageSync(&#039;login_key&#039;),\n                                \/\/   &#039;order_id&#039;: _orderId\n                                \/\/ },\n                                \/\/ method: &quot;POST&quot;,\n                                \/\/ header: {\n                                \/\/   &#039;content-type&#039;: &#039;application\/json&#039; \/\/ \u9ed8\u8ba4\u503c\n                                \/\/ },\n                                \/\/ success: function (res) {\n                                \/\/   wx.hideLoading();\n                                \/\/   wx.showLoading({\n                                \/\/     title: &#039;\u7b49\u5f85\u652f\u4ed8&#039;,\n                                \/\/   });\n                                \/\/   \/\/\u540a\u8d77\u5fae\u4fe1\u652f\u4ed8\n                                \/\/   if (res.data.data.nonceStr &amp;&amp; res.data.data.package &amp;&amp; res.data.data.timeStamp &amp;&amp; res.data.data.paySign) {\n                                \/\/     wx.requestPayment({\n                                \/\/       &#039;timeStamp&#039;: String(res.data.data.timeStamp),\n                                \/\/       &#039;nonceStr&#039;: res.data.data.nonceStr,\n                                \/\/       &#039;package&#039;: res.data.data.package,\n                                \/\/       &#039;signType&#039;: &#039;MD5&#039;,\n                                \/\/       &#039;paySign&#039;: res.data.data.paySign,\n                                \/\/       &#039;success&#039;: function (res) {\/\/\u5fae\u4fe1\u652f\u4ed8\u6210\u529f\u4e4b\u540e\n                                \/\/         \/\/TODO\u6e05\u9664\u6570\u636e\n                                \/\/         try {\n                                \/\/           wx.removeStorageSync(&#039;gifts&#039;);\n                                \/\/           wx.removeStorageSync(&#039;wish&#039;);\n                                \/\/           wx.removeStorageSync(&#039;gifttype&#039;);\n                                \/\/           wx.removeStorageSync(&#039;p_num&#039;);\n                                \/\/         } catch (e) {\n                                \/\/           \/\/ Do something when catch error\n                                \/\/         }\n                                \/\/         _this.setData({\n                                \/\/           gifts: [],\n                                \/\/           wish: &#039;&#039;,\n                                \/\/           gifttype: &#039;\u76f4\u63a5\u9001\u793c&#039;,\n                                \/\/           personNum: _this.data.personNum,\n                                \/\/         })\n                                \/\/         wx.hideLoading();\n                                \/\/         wx.navigateTo({\n                                \/\/           url: &#039;..\/payment\/payresult\/payresult?orderId=&#039; + _orderId,\n                                \/\/         })\n                                \/\/       },\n                                \/\/       &#039;fail&#039;: function (res) {\n                                \/\/         wx.hideLoading();\n                                \/\/         _this.errorBox(&#039;\u652f\u4ed8\u5931\u8d25&#039;);\n                                \/\/       }\n                                \/\/     })\n                                \/\/   }\n                                \/\/ },\n                                \/\/ fail: function (res) {\n                                \/\/   wx.hideLoading();\n                                \/\/   if (res.data.message) {\n                                \/\/     wx.showToast({\n                                \/\/       title: res.data.message\n                                \/\/     })\n                                \/\/   }\n                                \/\/ }\n                              \/\/})\n                            }\n\n                          },\n                          fail:function(){\n                            \/\/\u8ba2\u5355\u521b\u5efa\u5931\u8d25\n                            _this.errorBox(&#039;\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5&#039;);\n                          }\n                        })\n                      },\n                      fail:function(){\n                        \/\/\u540e\u53f0\u89e3\u5bc6\u7528\u6237\u4fe1\u606f\u5931\u8d25\n                        _this.errorBox(&#039;\u7f51\u7edc\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5&#039;);\n                      }\n                    });\n\n                    \/\/\u7531\u4e8e getUserInfo \u662f\u7f51\u7edc\u8bf7\u6c42\uff0c\u53ef\u80fd\u4f1a\u5728 Page.onLoad \u4e4b\u540e\u624d\u8fd4\u56de\u6240\u4ee5\u6b64\u5904\u52a0\u5165 callback \u4ee5\u9632\u6b62\u8fd9\u79cd\u60c5\u51b5\n                    if (_this.userInfoReadyCallback) {\n                      _this.userInfoReadyCallback(res)\n                    }\n                  }\n                })\n              }else{\n                \/\/\u672a\u6388\u6743\u8df3\u5230\u6388\u6743\u767b\u5f55\u9875\n                wx.hideLoading();\n                wx.navigateTo({\n                  url: &#039;..\/login\/login?redirect=index&#039;,\n                })\n              }\n            }\n          })\n        },\n        fail:function(){\/\/\u767b\u5f55\u8fc7\u671f\n          _this.relogin(true);\n        }\n    })\n  }\n})\n<\/code><\/pre>\n<h4>\u670d\u52a1\u7aef<\/h4>\n<p>1 \u6dfb\u52a0\u521b\u5efa\u8ba2\u5355\u63a5\u53e3\uff0c\u63a5\u6536\u6570\u636e\u540e\uff0c\u9700\u8981\u521b\u5efa\u8ba2\u5355\u6570\u636e\uff0c\u5bf9\u6bcf\u4e00\u4e2a\u793c\u7269\u90fd\u8981\u751f\u6210\u4e00\u4e2aorder_item\uff0c\u548c\u4e00\u4e2a\u8ba2\u5355\u7684\u65b9\u6cd5\u8bb0\u5f55\uff0c\u8fd9\u91cc\u76f4\u63a5\u5c06\u521b\u5efa\u597d\u7684\uff0c\u8ba2\u5355\u7f6e\u4e3a\u652f\u4ed8\u72b6\u6001\u3002\u5e76\u8fd4\u56de\u8ba2\u5355\u53f7\u3002<\/p>\n<p>url.py<\/p>\n<pre><code class=\"language-python\">from django.contrib import admin\nfrom django.urls import path\nfrom django.conf.urls import url\nfrom api.views import product,user\n\nurlpatterns = [\n    path(&#039;admin\/&#039;, admin.site.urls),\n    url(r&#039;^api\/indexlist\/categoryList$&#039;, product.caetgoryList.as_view()),\n    url(r&#039;^api\/indexlist\/IndexProductList$&#039;, product.ProductList.as_view()),\n    url(r&#039;^api\/indexlist\/categoryProductsList$&#039;, product.categoryProductsList.as_view()),\n    url(r&#039;^api\/indexlist\/detailProduct$&#039;, product.detailProduct.as_view()),\n    url(r&#039;^api\/member\/code\/login$&#039;, user.login.as_view()),\n    url(r&#039;^api\/member\/code\/getUserInfo$&#039;, user.getUserInfo.as_view()),\n    url(r&#039;^api\/order\/creatOrder$&#039;, order.creatOrder.as_view()),\n]<\/code><\/pre>\n<p>order.py<\/p>\n<pre><code class=\"language-python\">from django.shortcuts import render,HttpResponse\nfrom rest_framework.views import APIView\nfrom api.wx import wxlogin,UserInfo,setting\nfrom api import baseResponse\nimport time\nimport datetime\nimport random\nfrom django.core.cache import cache #\u5f15\u5165\u7f13\u5b58\u6a21\u5757\nfrom api import models\nfrom django.http import JsonResponse\nimport hashlib\n\n#\u521b\u5efa\u8ba2\u5355\u63a5\u53e3\nclass creatOrder(APIView):\n    def post(self,request):\n        params = request.data\n        #\u5224\u65ad\u53c2\u6570\u662f\u5426\u4f20\u5bf9\uff0cproductList\u9700\u8981\u751f\u6210\u8ba2\u5355\u7684\u5546\u54c1\u5217\u8868\uff0cplay\u8ba2\u5355\u5f00\u5956\u65b9\u5f0f\n        if params.get(&quot;login_key&quot;) and params.get(&quot;productList&quot;) and params.get(&quot;play&quot;):\n            #\u5728redis\u4e2d\u83b7\u53d6\u7528\u6237\u6570\u636e\n            login_key = params[&#039;login_key&#039;]\n            data = cache.get(login_key)\n            if not data:\n                re_data = baseResponse.resdic(&quot;error&quot;, &quot;login_key\u5df2\u8fc7\u671f&quot;)\n                return JsonResponse(re_data)\n            data_list = data.split(&#039;&amp;&#039;)\n            #\u901a\u8fc7\u7528\u6237\u7684openid\u67e5\u627e\u7528\u6237\n            member_info=models.Wxuser.objects.filter(openid=data_list[1]).values().first()\n            #\u8c03\u7528\u521b\u5efa\u8ba2\u5355\u65b9\u6cd5\n            order_data=self.createOrder_def(params,member_info)\n            re_data = baseResponse.resdic(&quot;success&quot;, &quot;\u83b7\u53d6\u6210\u529f&quot;,order_data)\n            return JsonResponse(re_data)\n        else:\n            re_data = baseResponse.resdic(&quot;error&quot;, &quot;\u521b\u5efa\u8ba2\u5355\u5931\u8d25&quot;)\n            return JsonResponse(re_data)\n\n    def createOrder_def(self,params,member_info):\n        #\u521b\u5efa\u8ba2\u5355item\n        order_data=self.creatOrderItem(params[&#039;productList&#039;],member_info)\n        #\u521b\u5efa\u8ba2\u5355\u65b9\u6cd5\u6570\u636eordermethon\n        self.creatOrderMethon(params[&#039;play&#039;], order_data)\n        order_data[&#039;createtime&#039;] = datetime.datetime.now()\n        order_data[&#039;pay_app&#039;] = &#039;wxpay&#039;\n        order_data[&#039;member_id&#039;] =member_info[&#039;id&#039;]\n        order_data[&#039;get_method&#039;] =params[&#039;play&#039;][&#039;method&#039;]\n        order_data[&#039;memo&#039;] =params[&#039;wish&#039;]\n        order_data[&#039;pay_status&#039;]=1\n        order_data[&#039;payed&#039;] =order_data[&#039;order_total&#039;]\n        #\u5c06\u6570\u636e\u4fdd\u5b58\u5230order\u8868\u4e2d\n        models.Order.objects.create(**order_data)\n        return  order_data\n\n    def creatOrderItem(self,data,member_infor):\n        order_data={}\n        #\u751f\u6210\u8ba2\u5355\u53f7\n        order_data[&#039;order_id&#039;] = str(int(time.time() * 1000)) + str(int(time.clock() * 1000000))\n        order_data[&#039;order_total&#039;]=0\n        order_data[&#039;quantity&#039;]=0\n        for key,vale in enumerate(data):\n            #\u67e5\u51fa\u4f20\u8fc7\u6765\u7684\u5546\u54c1\u5217\u8868\u4e2d\u5355\u4e2a\u5546\u54c1\u7684\u6570\u636e\n            product=models.Products.objects.filter(product_id=vale[&#039;product_id&#039;]).values().first()\n            params={}\n            params[&#039;order_id_id&#039;] =order_data[&#039;order_id&#039;]\n            params[&#039;product_id&#039;] =vale[&#039;product_id&#039;]\n            params[&#039;name&#039;] =vale[&#039;name&#039;]\n            params[&#039;buy_member_id_id&#039;] =member_infor[&#039;id&#039;]\n            params[&#039;image_id&#039;] =vale[&#039;image_id&#039;]\n            params[&#039;price&#039;] = round(float(vale[&#039;price&#039;]), 3)\n            params[&#039;brief&#039;] =product[&#039;brief&#039;]\n            for i in range(0,vale[&#039;num&#039;]):\n                params[&#039;nums&#039;]=1\n                params[&#039;amount&#039;]=product[&#039;price&#039;]\n                #\u6bcf\u4e2a\u5546\u54c1\u6bcf\u4e2a\u6570\u91cf\u90fd\u751f\u6210\u4e00\u4e2a\u8ba2\u5355item\n                models.Order_items.objects.create(**params)\n                #models.Order_items.create(order_id_id=params[&#039;order_id_id&#039;],product_id=params[&#039;product_id&#039;],name=params[&#039;name&#039;],buy_member_id_id=params[&#039;buy_member_id_id&#039;],image_id= params[&#039;image_id&#039;],price=params[&#039;price&#039;],brief=params[&#039;brief&#039;],nums=params[&#039;nums&#039;],amount=params[&#039;amount&#039;])\n            order_data[&#039;quantity&#039;] +=vale[&#039;num&#039;];\n            order_data[&#039;order_total&#039;] = order_data[&#039;order_total&#039;] + (round(float(vale[&#039;price&#039;]), 3) * int(vale[&#039;num&#039;]))\n        return order_data\n\n    def creatOrderMethon(self,data,order_data):\n        methon_data={}\n        methon_data[&#039;get_method&#039;]=data[&#039;method&#039;]\n        methon_data[&#039;order_id&#039;] =order_data[&#039;order_id&#039;]\n        #\u5c06\u6570\u636e\u5b58\u5165\u5230ordermethon\u4e2d\n        if data[&#039;method&#039;] == &quot;\u5b9a\u65f6\u5f00\u5956&quot;:\n            timeArray = time.localtime(int(data[&#039;openTime&#039;]))\n            datatime = time.strftime(&quot;%Y-%m-%d %H:%M:%S&quot;, timeArray)\n            methon_data[&#039;opentime&#039;]=datatime\n        elif data[&#039;method&#039;] == &quot;\u6ee1\u4eba\u5f00\u5956&quot;:\n            methon_data[&#039;open_number&#039;]=data[&#039;openPeople&#039;]\n        models.Order_methons.objects.create(**methon_data)\n        return True\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u9875\u751f\u6210\u793c\u5305 \u9700\u6c42\uff1a\u7528\u6237\u9009\u62e9\u597d\u8981\u9001\u7684\u793c\u54c1\u8fc7\u540e\uff0c\u53ef\u4ee5\u9009\u62e9\u5f00\u5956\u65b9\u5f0f\uff0c\u6709\u76f4\u63a5\u5f00\u5956\uff0c\u6ee1\u4eba\u5f00\u5956\uff0c\u4ee5\u53ca\u5b9a\u65f6\u5f00\u5956\u4e09\u79cd\u5f00\u5956\u65b9\u5f0f [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[307,309],"tags":[],"_links":{"self":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/3557"}],"collection":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3557"}],"version-history":[{"count":0,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/3557\/revisions"}],"wp:attachment":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3557"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}