Browse Source

feat: 数据包订单详情页面

cuiyalong 4 years ago
parent
commit
c11d51f4f8

+ 105 - 4
src/jfw/modules/app/src/web/templates/commonPay/dataPack/orderDetail.html

@@ -1,10 +1,111 @@
 <!DOCTYPE html>
-<html lang="en">
+<html lang="zh-CN">
+
 <head>
-    <meta charset="UTF-8">
-    <title>Title</title>
+    <!--引入公共资源头部-->
+    {{include "/big-member/meta.html"}}
+    <title>订单详情</title>
+    <!--S-当前页面的css资源-->
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/order-list/css/order-detail.css?v={{Msg "seo" "version"}}' />
 </head>
-<body>
 
+<body>
+    <div class="j-container transparent-header">
+        <div class="j-header jy-app-header border-line-b transparent-header">
+            <span class="header-left">
+                <span class="van-icon van-icon-arrow-left"></span>
+            </span>
+            <span class="header-title title-left">订单详情</span>
+            <span class="header-right"></span>
+        </div>
+        <div class="j-main order-detail" id="app" v-cloak>
+            <div class="j-container">
+                <div class="j-main no-scrollbar">
+                    <div class="wrapper">
+                        <div class="header-pic arc-container" :class="orderStateMap[orderInfo.state].bgcClassName">
+                            <div class="order-state">${ orderStateMap[orderInfo.state].text }</div>
+                            <div class="surplus-time" v-if="orderStateMap[orderInfo.state].surplusTimeShow && orderInfo.surplusTime > 0">
+                                <span>剩余支付时间:</span>
+                                <van-count-down @finish="onCountdownFinish" :time="orderInfo.surplusTime"></van-count-down>
+                            </div>
+                        </div>
+                        <div class="card-list">
+                            <div class="j-card report-p">
+                                <span class="rp-left">
+                                    <img class="card-l-pic" :src="orderInfo.headerImg">
+                                </span>
+                                <span class="rp-right">
+                                    <span class="product-type">${ orderInfo.productType }</span>
+                                    <span class="pay-money">&yen; ${ orderInfo.payMoney }</span>
+                                </span>
+                            </div>
+                            <div class="j-card product-info">
+                                <div class="j-card-title">购买信息</div>
+                                <div class="j-card-items">
+                                    <div
+                                        class="j-card-item"
+                                        v-for="(item, index) in orderInfo.productInfoList"
+                                        :key="index"
+                                        v-show="item.text"
+                                    >
+                                        <span class="card-item-l">${ item.label + item.split }</span>
+                                        <span class="card-item-r" v-html="item.text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="j-card report-info">
+                                <div class="j-card-title">订单信息</div>
+                                <div class="j-card-items">
+                                    <div
+                                        class="j-card-item"
+                                        v-for="(item, index) in orderInfo.orderInfoList"
+                                        :key="index"
+                                        v-show="item.text"
+                                    >
+                                        <span class="card-item-l">${ item.label + item.split }</span>
+                                        <span class="card-item-r" v-html="item.text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="j-button-group j-footer" v-show="buttonGroupShow">
+                    <button
+                        class="j-button-confirm pay"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.pay"
+                        @click="onConfirmPay">立即支付</button>
+                    <button
+                        class="j-button-cancel invoke"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.invoke"
+                        @click="lookInvoke">${ invokeButtonText }</button>
+                    <button
+                        class="j-button-confirm buy-again"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.buyAgain"
+                        @click="buyAgain">再次购买</button>
+                </div>
+            </div>
+        </div>
+    </div>
+    <!--S-当前页面的资源-->
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/zepto/1.2.0/zepto.min.js></script>
+    {{include "/big-member/commonjs.html"}}
+    <script>
+        var pageInfo = {
+            platform: 'app',
+            version: {{Msg "seo" "version"}},
+        }
+    </script>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/order-list/js/order-list-config.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/order-list/js/order-detail.js?v={{Msg "seo" "version"}}'></script>
+    <!--E-当前页面的资源-->
+    {{include "/common/baiducc.html"}}
 </body>
+
 </html>

+ 171 - 0
src/web/staticres/common-module/order-list/css/order-detail.css

@@ -0,0 +1,171 @@
+/* 头部透明 */
+.j-container.transparent-header {
+  position: relative;
+}
+.j-container.transparent-header > .j-header {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  background-color: transparent;
+}
+.j-container.transparent-header > .j-main {
+  position: relative;
+}
+
+.j-header.transparent-header .van-icon-arrow-left {
+  font-size: .42rem;
+}
+.j-header.transparent-header .title-left {
+  color: #fff;
+  font-size: .36rem;
+  left: 22%;
+}
+
+/* 头部图片背景 */
+/* 头部使用header-mask实现 */
+/* 参考: https://www.sunzhongwei.com/css-div-arc-at-botto */
+.arc-container {
+  position: relative;
+}
+.arc-container::after {
+  position: relative;
+  content: '';
+  width: 150%;
+  height: 260px;
+  position: absolute;
+  left: 50%;
+  top: -40px;
+  background: url(/common-module/order-list/image/order-detail-header-mask3x.png) no-repeat top center;
+  background-size: contain;
+  border-radius: 0 0 50% 50%;
+  transform: translateX(-50%);
+}
+.arc-container.blue::after {
+  background-color: #2ABED1;
+}
+.arc-container.orange::after {
+  background-color: #FF9F40;
+}
+.arc-container.grey::after {
+  background-color: #C0C4CC;
+}
+.arc-container > div {
+  position: relative;
+  z-index: 2;
+}
+
+
+.header-pic {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  width: 100%;
+  height: 4.4rem;
+  color: #F7F9FA;
+  box-sizing: border-box;
+}
+.header-pic  .order-state {
+  margin-top: .6rem;
+  margin-bottom: .16rem;
+  font-size: .44rem;
+  line-height: .64rem;
+}
+.surplus-time {
+  display: flex;
+  font-size: .28rem;
+  line-height: .4rem;
+}
+.surplus-time .van-count-down {
+  color: #F7F9FA;
+}
+
+
+.card-list {
+  margin-top: -1rem;
+}
+.card-list .report-p {
+  position: relative;
+  flex-direction: row;
+  align-items: center;
+}
+.card-list .report-p .rp-right {
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  margin-left: .24rem;
+  flex: 1;
+}
+.card-list .report-p .product-type {
+  margin-bottom: .16rem;
+  font-size: .28rem;
+  line-height: .4rem;
+  color: #5F5E64;
+  word-break: break-all;
+}
+.card-list .report-p .pay-money {
+  font-weight: bold;
+  font-size: .36rem;
+  line-height: .52rem;
+  color: #171826;
+}
+.card-list .report-p .card-l-pic {
+  width: 1.08rem;
+  height: 1.08rem;
+}
+
+
+.j-card {
+  display: flex;
+  flex-direction: column;
+  margin: 0 .24rem .32rem;
+  padding: .32rem;
+  box-shadow: 0px 2px 8px rgba(54, 147, 179, 0.051);
+  border-radius: 8px;
+  background-color: #fff;
+}
+.j-card:not(:last-of-type) {
+  margin-bottom: .32rem;
+}
+.j-card .j-card-title {
+  margin-bottom: .12rem;
+  font-weight: bold;
+  font-size: .36rem;
+  line-height: .52rem;
+  color: #171826;
+}
+.j-card .j-card-item {
+  position: relative;
+  display: flex;
+  padding: .12rem 0;
+}
+.j-card .j-card-item:not(:last-of-type)::after {
+  content: '';
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  width: 100%;
+  height: 1px;
+  background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.1) 65%, transparent 35%);
+}
+.j-card .j-card-item .card-item-l {
+  margin-right: .08rem;
+  font-size: .26rem;
+  line-height: .4rem;
+  color: #5F5E64;
+  min-width: 1.32rem;
+}
+.j-card .j-card-item .card-item-r {
+  flex: 1;
+  font-size: .26rem;
+  line-height: .4rem;
+  color: #171826;
+  word-break: break-all;
+}
+.j-button-cancel {
+  margin-right: 0;
+}
+.j-button-group button:not(:first-of-type) {
+  margin-left: .26rem;
+}

BIN
src/web/staticres/common-module/order-list/image/order-detail-header-mask3x.png


+ 440 - 0
src/web/staticres/common-module/order-list/js/order-detail.js

@@ -0,0 +1,440 @@
+$(function () {
+  $('.header-title.title-left').on('click', function () {
+    history.back()
+  })
+})
+var vm = new Vue({
+  delimiters: ['${', '}'],
+  el: '#app',
+  data: function () {
+    return {
+      platform: assetsConf.platform,
+      orderCode: '',
+      // 订单接口返回的原始数据
+      reqOrder: {},
+      reqTime: {},
+      orderStateMap: {
+        0: {
+          text: '待付款',
+          bgcColor: '',
+          bgcClassName: 'orange',
+          surplusTimeShow: true,
+          bottomButtonShow: {
+            pay: true,
+            invoke: false,
+            buyAgain: false
+          }
+        },
+        1: {
+          text: '已完成',
+          bgcColor: '',
+          bgcClassName: 'blue',
+          surplusTimeShow: false,
+          bottomButtonShow: {
+            pay: false,
+            invoke: true,
+            buyAgain: false
+          }
+        },
+        '-2': {
+          text: '已取消',
+          bgcColor: '',
+          bgcClassName: 'grey',
+          surplusTimeShow: false,
+          bottomButtonShow: {
+            pay: false,
+            invoke: false,
+            buyAgain: false
+          }
+        },
+        '-3': {
+          text: '已取消',
+          bgcColor: '',
+          bgcClassName: 'grey',
+          surplusTimeShow: false,
+          bottomButtonShow: {
+            pay: false,
+            invoke: false,
+            buyAgain: false
+          }
+        }
+      },
+      productTypeList: assetsConf.productionTypeList,
+      prodConf: {
+        // 支持再次购买的产品product_type
+        canBuyAgain: assetsConf.cabBuyAgainProductions,
+        // 支持开发票的产品product_type
+        canInvoke: assetsConf.canInvokeProductions
+      },
+      payWayMap: {
+        wx_js: '微信支付',
+        wx_app: '微信支付',
+        ali_app: '支付宝支付',
+        wx_pc: '微信支付',
+        ali_pc: '支付宝支付'
+      },
+      // 页面内容展示数组
+      orderInfo: {
+        state: 0, // 订单状态: 0:待支付 1:已完成 -2:已取消 -3:已退款
+        surplusTime: 0, // 取消订单倒计时
+        headerImg: '', // 头图地址
+        payWay: '',
+        productType: '',
+        orderMoney: '', // 订单金额
+        payMoney: '', // 实付金额
+
+        applybillStatus: 1,
+        ordercode: '',
+        createTime: '',
+        payTime: 0,
+        paymentId: '',
+        // 单位: 秒(s)
+        surplusTime: 0,
+        productInfoList: [],
+        orderInfoList: []
+      }
+    }
+  },
+  computed: {
+    invokeButtonText: function () {
+      return this.orderInfo.applybillStatus === 0 ? '开发票' : '查看发票'
+    },
+    buttonGroupShow: function () {
+      var state = this.orderInfo.state
+      var payShow = this.orderStateMap[state].bottomButtonShow.pay
+      var invokeShow = this.orderStateMap[state].bottomButtonShow.invoke
+      var buyAgainShow = this.orderStateMap[state].bottomButtonShow.buyAgain
+      return payShow || invokeShow || buyAgainShow
+    }
+  },
+  created: function () {
+    this.orderCode = utils.getParam('order_code')
+    this.getOrderDetail()
+  },
+  mounted: function () {
+    utils.iosBackRefresh()
+  },
+  methods: {
+    showLoading: function () {
+      return this.$toast.loading({
+        duration: 0,
+        forbidClick: true,
+        message: 'loading...',
+      })
+    },
+    showToast: function (message) {
+      return this.$toast({
+        duration: 1500,
+        forbidClick: true,
+        message: message,
+      })
+    },
+    showDialog: function (conf) {
+      var defaultConf = {
+        title: '提示',
+        message: 'message',
+        className: 'j-confirm-dialog',
+        showConfirmButton: true,
+        showCancelButton: true,
+        confirmButtonColor: '#2abed1'
+      }
+      if (conf) {
+        Object.assign(defaultConf, conf)
+      }
+      return this.$dialog.confirm(defaultConf)
+    },
+    getOrderDetail: function () {
+      var _this = this
+      var loading = this.showLoading()
+      var data = {
+        orderCode: this.orderCode
+      }
+      $.ajax({
+        type: 'POST',
+        url: '/subscribepay/orderListDetails/getOrderPayAllMsg',
+        data, data,
+        success: function (res) {
+          loading && loading.clear()
+          if (res.success) {
+            if (res.data) {
+              if (res.data.order) {
+                if (res.data.order.order_status === -3) {
+                  res.data.order.order_status = -2
+                }
+                Object.assign(_this.reqOrder, res.data.order)
+              }
+              if (res.data.time) {
+                Object.assign(_this.reqTime, res.data.time)
+              }
+              _this.calcOrderInfo(res.data)
+            }
+          } else {
+            _this.showToast(res.errMsg)
+          }
+        },
+        error: function (err) {
+          loading && loading.clear()
+        }
+      })
+    },
+    onCountdownFinish: function () {
+      console.log('onCountdownFinish')
+      this.orderInfo.state = -2
+    },
+    calcOrderInfo: function (info) {
+      var order = info.order
+      this.orderInfo.state = order.order_status
+      try {
+        this.orderInfo.headerImg = this.getHeaderImg(order)
+      } catch (error) {
+        console.log(error)        
+      }
+
+      if (this.orderInfo.state === 0) {
+        // 取消订单倒计时
+        this.orderInfo.surplusTime = this.getSurplusTimeTime(order)
+      }
+
+      this.orderInfo.applybillStatus = order.applybill_status
+      this.orderInfo.ordercode = order.order_code
+      this.orderInfo.createTime = this.time2Stamp(order.create_time)
+      this.orderInfo.payTime = order.pay_time ? this.time2Stamp(order.pay_time) : ''
+      this.orderInfo.payWay = order.pay_way
+      this.orderInfo.productType = order.product_type
+
+      // 订单金额
+      this.orderInfo.orderMoney = this.moneyFormat(order.order_money)
+      // 实付金额
+      this.orderInfo.payMoney = this.moneyFormat(order.order_money)
+
+      if (info.transaction_id) {
+        this.orderInfo.paymentId = info.transaction_id // 支付单号
+      }
+
+      // 如果是可再次购买的产品,则显示再次购买
+      if (this.prodConf.canBuyAgain.indexOf(this.orderInfo.productType)) {
+        this.orderStateMap[1].bottomButtonShow.buyAgain = true
+      }
+
+      this.orderInfo.productInfoList = this.getProductInfoList(info)
+      this.orderInfo.orderInfoList = this.getOrderInfoListList(info)
+    },
+    getHeaderImg: function (order) {
+      var productType = order.product_type
+      var platform = this.platform
+      var headerImgUrl = ''
+      if (productType === '数据流量包') {
+        headerImgUrl = assetsConf.dataPackLink.imgMap.headerImg[platform]
+      }
+
+      return headerImgUrl
+    },
+    getSurplusTimeTime: function (order) {
+      var lastTime = order.order_countdown.split('h')[0]
+      var lastTimeStamp = lastTime * 60 * 60 * 1000
+      var createTime = order.create_time.replace(/-/g, '/')
+      var createTimeStamp = +new Date(createTime)
+      var nowStamp = Date.now()
+      // surplusTime = createTime + lastTime - +new Date()
+      var surplusTime = createTimeStamp + lastTimeStamp - nowStamp
+
+      if (surplusTime > 0) {
+        return surplusTime
+      } else {
+        return 0
+      }
+    },
+    moneyFormat: function (m) {
+      return utils.formatMoney(m / 100)
+    },
+    time2Stamp: function (time) {
+      if (!time) return ''
+      var t = time.replace(/(-|\.)/g, '/')
+      return +new Date(t)
+    },
+    getOrderInfoListList: function (info) {
+      var order = info.order
+      var createTime = this.time2Stamp(order.create_time)
+      var payTime = order.pay_time ? this.time2Stamp(order.pay_time) : ''
+      var payWay = order.pay_way ? order.pay_way : ''
+
+      var infoList = [
+        {
+          label: '订单编号',
+          split: ':',
+          text: this.orderCode
+        },
+        {
+          label: '下单时间',
+          split: ':',
+          text: new Date(createTime).pattern('yyyy.MM.dd HH:mm')
+        },
+        {
+          label: '支付时间',
+          split: ':',
+          text: payTime ? new Date(payTime).pattern('yyyy.MM.dd HH:mm') : ''
+        },
+        {
+          label: '支付方式',
+          split: ':',
+          text: this.payWayMap[payWay]
+        },
+        {
+          label: '支付单号',
+          split: ':',
+          text: this.orderInfo.paymentId
+        },
+        {
+          label: '产品类型',
+          split: ':',
+          text: order.product_type
+        },
+        {
+          label: '实付金额',
+          split: ':',
+          text: order.pay_money ? '¥' + this.moneyFormat(order.pay_money) : ''
+        }
+      ]
+
+      return infoList
+    },
+    // 开发票逻辑,和订单详情相同
+    lookInvoke: function () {
+      var _this = this
+      var platform = this.platform
+      var order = this.reqOrder
+      var orderCode = order.order_code
+       // 发票状态  1:已开线上发票 2:已开线下发票
+      var applybill_status = order.applybill_status
+
+      // 已开发票情况(查看发票)
+      if (applybill_status === 1) {
+        var href = assetsConf.invokeLink.lookInvoice[platform]
+        if (href) {
+          _this.goToLink(`${href}?order_code=${orderCode}`)
+        }
+        return
+      } else if (applybill_status === 2) {
+        return this.showDialog({
+          title: '',
+          message: '您已开具发票<br>如有问题请联系客服<br>400-108-6670',
+          className: 'j-confirm-dialog text-center',
+          showCancelButton: false,
+          confirmButtonText: '我知道了'
+        })
+      }
+
+      var loading = this.showLoading()
+      $.ajax({
+        type: 'POST',
+        url: '/subscribepay/orderListDetails/isOver',
+        data: {
+          order_code: orderCode
+        },
+        success: function (res) {
+          loading && loading.clear()
+          if (res.status === 1) {
+            // 开发票跳转
+            var href = assetsConf.invokeLink.invoke[platform]
+            if (href) {
+              _this.goToLink(`${href}?order_code=${orderCode}`)
+            }
+          } else {
+            // 不能开发票跳转
+            var href = assetsConf.invokeLink.cantInvoke[platform]
+            if (href) {
+              _this.goToLink(`${href}?order_code=${orderCode}`)
+            }
+          }
+        },
+        error: function (err) {
+          loading && loading.clear()
+        }
+      })
+    },
+    onConfirmPay: function () {
+      var order = this.reqOrder
+      var productType = order.product_type
+      var orderCode = order.order_code
+      var platform = this.platform
+      switch (productType) {
+        case '数据流量包': {
+          var href = assetsConf.dataPackLink.pay[platform]
+          if (href) {
+            this.goToLink(`${href}?orderCode=${orderCode}`)
+          }
+          break
+        }
+        default: {
+          break
+        }
+      }
+    },
+    buyAgain: function () {
+      var _this = this
+      var order = this.reqOrder
+      var productType = order.product_type
+      var orderCode = order.order_code
+      var platform = this.platform
+
+      switch (productType) {
+        case '数据流量包': {
+          var href = assetsConf.dataPackLink.buyAgain[platform]
+          if (href) {
+            this.goToLink(`${href}?orderCode=${orderCode}`)
+          }
+          break
+        }
+        default: {
+          break
+        }
+      }
+    },
+    getProductInfoList: function (info) {
+      var order = info.order
+      var productType = order.product_type
+      var platform = this.platform
+      var infoList = []
+
+      switch (productType) {
+        case '数据流量包': {
+          infoList = this.getDataPackInfo(order)
+          break
+        }
+        default: {
+          break
+        }
+      }
+
+      return infoList
+    },
+    getDataPackInfo: function (order) {
+      var filterInfo = JSON.parse(order.filter)
+      var specMap = {
+        1: '标准字段包',
+        2: '高级字段包'
+      }
+
+      return [
+        {
+          label: '充值条数',
+          split: ':',
+          text: filterInfo.pNum + '条'
+        },
+        {
+          label: '有效期',
+          split: ':',
+          text: filterInfo.validYear + '年'
+        },
+        {
+          label: '数据规格',
+          split: ':',
+          text: specMap[filterInfo.pType]
+        }
+      ]
+    },
+    goToLink: function (href) {
+      location.href = href
+    }
+  }
+})

+ 42 - 4
src/web/staticres/common-module/order-list/js/order-list-config.js

@@ -1,6 +1,44 @@
-// 和另一个唯一不同的就是platform
+// 订单列表和订单详情共用的文件
+
 var assetsConf = {
   platform: pageInfo.platform,
+  // 产品集合
+  productionTypeList: [
+    '历史数据',
+    'VIP订阅',
+    '中标必听课',
+    '数据报告',
+    '企业商机管理',
+    '大会员',
+    '大会员-补充包',
+    '大会员-AI中标预测包',
+    '大会员-招标文件解读',
+    '大会员-子账号',
+    '招标文件解读',
+    '剑鱼币',
+    '数据流量包',
+  ],
+  // 支持再次购买的产品集合
+  cabBuyAgainProductions: [
+    '历史数据',
+    '数据流量包',
+  ],
+  // 支持开发票的产品product_type
+  canInvokeProductions: [
+    '历史数据',
+    '超级订阅',
+    '中标必听课',
+    '数据报告',
+    '企业商机管理',
+    '大会员',
+    '大会员-补充包',
+    '大会员-AI中标预测包',
+    '大会员-招标文件解读',
+    '大会员-子账号',
+    '招标文件解读',
+    '剑鱼币',
+    '数据流量包',
+  ],
   // 静态资源链接Key的集合
   assetsKeys: [
     'invokeLink',
@@ -83,7 +121,7 @@ var assetsConf = {
       wx: '/front/wx_dataExport/wxToOrderDetail',
       app: '/jyapp/front/dataExport/toOrderDetail'
     },
-    imgMap: {
+    imgMap: { // 静态资源map
       headerImg: {
         wx: '/dataExport/image/dataOutput.png',
         app: '/jyapp/images/myorder/dataOutput.png'
@@ -301,8 +339,8 @@ var assetsConf = {
       app: '/jyapp/pay/checkout_dataPack'
     },
     orderDetail: {
-      wx: '',
-      app: ''
+      wx: '/weixin/common/dataPack/orderDetail',
+      app: '/jyapp/common/dataPack/orderDetail'
     },
     buyAgain: {
       wx: '/swordfish/dataPack/createOrder',

+ 4 - 35
src/web/staticres/common-module/order-list/js/order-list.js

@@ -5,43 +5,12 @@ var vm = new Vue({
     platform: assetsConf.platform,
     sessStorageKey: '$data-order_list',
     tabActiveName: 'payOrderAll',
-    productTypeList: [
-      '历史数据',
-      'VIP订阅',
-      '中标必听课',
-      '数据报告',
-      '企业商机管理',
-      '大会员',
-      '大会员-补充包',
-      '大会员-AI中标预测包',
-      '大会员-招标文件解读',
-      '大会员-子账号',
-      '招标文件解读',
-      '剑鱼币',
-      '数据流量包',
-    ],
+    productTypeList: assetsConf.productionTypeList,
     prodConf: {
       // 支持再次购买的产品product_type
-      canBuyAgain: [
-        '历史数据',
-        '数据流量包',
-      ],
+      canBuyAgain: assetsConf.cabBuyAgainProductions,
       // 支持开发票的产品product_type
-      canInvoke: [
-        '历史数据',
-        '超级订阅',
-        '中标必听课',
-        '数据报告',
-        '企业商机管理',
-        '大会员',
-        '大会员-补充包',
-        '大会员-AI中标预测包',
-        '大会员-招标文件解读',
-        '大会员-子账号',
-        '招标文件解读',
-        '剑鱼币',
-        '数据流量包',
-      ],
+      canInvoke: assetsConf.canInvokeProductions,
       // 销售渠道产品product_type
       transformProductions: [
         '大会员',
@@ -940,7 +909,7 @@ var vm = new Vue({
             }
           } else {
             // 不能开发票跳转
-            var href = assetsConf.cantInvoke.canPage[platform]
+            var href = assetsConf.invokeLink.cantInvoke[platform]
             if (href) {
               _this.goToLink(`${href}?order_code=${orderCode}`)
             }

+ 110 - 5
src/web/templates/weixin/commonPay/dataPack/orderDetail.html

@@ -1,10 +1,115 @@
 <!DOCTYPE html>
-<html lang="en">
+<html lang="zh-CN">
 <head>
-    <meta charset="UTF-8">
-    <title>Title</title>
+    <meta charset="utf-8">
+    <meta name="keywords" content="剑鱼标讯">
+    <meta name="description" content="剑鱼标讯">
+    <meta name="author" content="剑鱼标讯">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
+    <meta name="browsermode" content="application">
+    <meta name="x5-orientation" content="portrait">
+    <meta name="screen-orientation" content="portrait">
+    <meta name="x5-page-mode" content="app">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta name="format-detection" content="telephone=no">
+    <title>订单详情</title>
+    <!--S-当前页面的css资源-->
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/index.css />
+    <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/j-icons.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/big-member/css/public.css?v={{Msg "seo" "version"}}'>
+    <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/common-module/order-list/css/order-detail.css?v={{Msg "seo" "version"}}' />
 </head>
 <body>
-
+    <div class="j-container">
+        <div class="j-main order-detail" id="app" v-cloak>
+            <div class="j-container">
+                <div class="j-main no-scrollbar">
+                    <div class="wrapper">
+                        <div class="header-pic arc-container" :class="orderStateMap[orderInfo.state].bgcClassName">
+                            <div class="order-state">${ orderStateMap[orderInfo.state].text }</div>
+                            <div class="surplus-time" v-if="orderStateMap[orderInfo.state].surplusTimeShow && orderInfo.surplusTime > 0">
+                                <span>剩余支付时间:</span>
+                                <van-count-down @finish="onCountdownFinish" :time="orderInfo.surplusTime"></van-count-down>
+                            </div>
+                        </div>
+                        <div class="card-list">
+                            <div class="j-card report-p">
+                                <span class="rp-left">
+                                    <img class="card-l-pic" :src="orderInfo.headerImg">
+                                </span>
+                                <span class="rp-right">
+                                    <span class="product-type">${ orderInfo.productType }</span>
+                                    <span class="pay-money">&yen; ${ orderInfo.payMoney }</span>
+                                </span>
+                            </div>
+                            <div class="j-card product-info">
+                                <div class="j-card-title">购买信息</div>
+                                <div class="j-card-items">
+                                    <div
+                                        class="j-card-item"
+                                        v-for="(item, index) in orderInfo.productInfoList"
+                                        :key="index"
+                                        v-show="item.text"
+                                    >
+                                        <span class="card-item-l">${ item.label + item.split }</span>
+                                        <span class="card-item-r" v-html="item.text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="j-card report-info">
+                                <div class="j-card-title">订单信息</div>
+                                <div class="j-card-items">
+                                    <div
+                                        class="j-card-item"
+                                        v-for="(item, index) in orderInfo.orderInfoList"
+                                        :key="index"
+                                        v-show="item.text"
+                                    >
+                                        <span class="card-item-l">${ item.label + item.split }</span>
+                                        <span class="card-item-r" v-html="item.text"></span>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="j-button-group j-footer" v-show="buttonGroupShow">
+                    <button
+                        class="j-button-confirm pay"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.pay"
+                        @click="onConfirmPay">立即支付</button>
+                    <button
+                        class="j-button-cancel invoke"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.invoke"
+                        @click="lookInvoke">${ invokeButtonText }</button>
+                    <button
+                        class="j-button-confirm buy-again"
+                        v-if="orderStateMap[orderInfo.state].bottomButtonShow.buyAgain"
+                        @click="buyAgain">再次购买</button>
+                </div>
+            </div>
+        </div>
+    </div>
+    <!--S-当前页面的资源-->
+    <script src="/big-member/js/rem.js"></script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vue/2.6.11/vue.min.js></script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/vant.min.js></script>
+    <script src=//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js></script>
+    <!--E-当前页面的资源-->
+    <script>
+        var pageInfo = {
+            platform: 'wx',
+            version: {{Msg "seo" "version"}},
+        }
+    </script>
+    <script src='{{Msg "seo" "cdn"}}/big-member/js/utils.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/common-module/order-list/js/order-list-config.js?v={{Msg "seo" "version"}}'></script>
+    <script src='{{Msg "seo" "cdn"}}/common-module/order-list/js/order-detail.js?v={{Msg "seo" "version"}}'></script>
+    {{include "/common/baiducc.html"}}
 </body>
-</html>
+
+</html>

+ 0 - 1
src/web/templates/weixin/dataPack/recharge.html

@@ -26,7 +26,6 @@
 </head>
 <body>
   <div class="j-container">
-    {{include "/big-member/header.html"}}
     <div class="j-main recharge" id="app" v-cloak>
       <div class="j-container">
         <div class="j-main">