Browse Source

Merge branch 'branch-swl' of HHPW/client-mazu into master

dct 2 weeks ago
parent
commit
b5a1ccf48d

+ 86 - 2
src/components/GlobalComponents/OrderDetail.vue

@@ -37,7 +37,14 @@
           :type="getPayStatus(orderData.payStatus, 'type')"
           size="normal"
         >
-          {{ getPayStatus(orderData.payStatus) }}
+          <!-- {{ getPayStatus(orderData.payStatus) }} -->
+             <!-- 由于支付状态较多,且接口返回的状态码不固定,所以这里直接列出所有状态,避免遗漏 -->
+          <div v-if="getPayStatus(orderData.payStatus) == 'CREATE'">已创建</div>
+          <div v-if="getPayStatus(orderData.payStatus) == 'SUBMIT'">已提交</div>
+          <div v-if="getPayStatus(orderData.payStatus) == 'PAYED'">已支付</div>
+          <div v-if="getPayStatus(orderData.payStatus) == 'REFUNDED'">已退款</div>
+          <div v-if="getPayStatus(orderData.payStatus) == 'CLOSED'">订单关闭</div>
+          <div v-if="getPayStatus(orderData.payStatus) == 'FAILED'">支付失败</div>
         </el-tag>
       </el-form-item>
       <el-form-item label="支付时间">
@@ -155,7 +162,8 @@
                 prop="status"
                 label="状态">
               <template slot-scope="scope">
-                <TicketStatusTag :value="scope.row.status"></TicketStatusTag>
+                <!-- 组件新增功能是否向左浮动展示,默认为false不浮动 -->
+                <TicketStatusTag :float-left="true"  :value="scope.row.status"></TicketStatusTag>
               </template>
             </el-table-column>
               <el-table-column
@@ -229,6 +237,19 @@
                 {{ scope.row.ticketCheckScenicList.map(item => item.scenicName).join(',') }}
               </template>
             </el-table-column>
+
+            <!-- 新增功能 -->
+            <el-table-column width="240" prop="billingInformation" label="开票信息">
+             <template slot-scope="scope">
+                <div class=""><span>开票状态:</span>
+                  <el-tag :type="scope.row.isInvoice ? 'success' : 'info'">
+                    {{ scope.row.isInvoice ? "已开票" : "未开票" }}
+                  </el-tag>
+                </div>
+                <div class=""><span>发票信息:</span><button @click="downloadInvoice(scope.row.invoiceDownloadUrl)">点击下载</button></div>
+              </template>
+            </el-table-column>
+
               <el-table-column
                 v-if="isColumnVisible('ticketCardInfo')"
                 width="240"
@@ -304,6 +325,38 @@
             <el-table-column prop="checkerName" label="检票设备名称"> </el-table-column>
             <el-table-column prop="checkTime" label="检票时间"> </el-table-column>
           </el-table>
+
+          <!-- 新增功能:工行分账信息,但if判断需要后续改动 -->
+        <div class="title" v-if="orderData.payContext != null" style="display: flex;justify-content: space-between;margin: 10px 0;">
+            工行分账明细
+          </div>
+          <el-table v-if="orderData.payContext != null" border :data="checkLogList" :max-height="200">
+            <el-table-column prop="id" label="ID"> </el-table-column>
+            <el-table-column prop="createTime" label="创建时间"> </el-table-column>
+            <el-table-column prop="recNum" label="拆分顺序号"> </el-table-column>
+            <el-table-column prop="originalGhMerId" label="原交易商户编号"> </el-table-column>
+            <el-table-column prop="ghOrderId" label="原工行订单编号"> </el-table-column>
+            <el-table-column prop="ghAppId" label="应用APPID"> </el-table-column>
+            <el-table-column prop="subMerId" label="分账二级商户编号"> </el-table-column>
+            <el-table-column prop="subMerPrtclNo" label="分账二级商户协议编号"> </el-table-column>
+            <el-table-column prop="subOrderId" label="商户子订单编号"> </el-table-column>
+            <el-table-column prop="ghSubOrderId" label="工行子订单编号"> </el-table-column>
+            <el-table-column prop="ghSubOrderTransactionId" label="工行交易流水号"> </el-table-column>
+            <el-table-column prop="splitFee" label="分账金额"> </el-table-column>
+            <el-table-column prop="termId" label="交易终端号"> </el-table-column>
+            <el-table-column prop="status" label="分账状态"> </el-table-column>
+            <el-table-column prop="splitSubmitTime" label="分账开始时间"> </el-table-column>
+            <el-table-column prop="splitCompleteTime" label="分账完成时间"> </el-table-column>
+            <el-table-column prop="splitCode" label="错误代码"> </el-table-column>
+            <el-table-column prop="splitMsg" label="错误信息"> </el-table-column>
+            <el-table-column prop="refundSubOrderId" label="子订单退货编号"> </el-table-column>
+            <el-table-column prop="refundSubmitTime" label="退款提交时间"> </el-table-column>
+            <el-table-column prop="refundCompleteTime" label="退款开始时间"> </el-table-column>
+            <el-table-column prop="refundFee" label="退款金额"> </el-table-column>
+            <el-table-column prop="refundCode" label="退款错误代码"> </el-table-column>
+            <el-table-column prop="refundMsg" label="退款错误信息"> </el-table-column>
+          </el-table>
+
         </el-tab-pane>
         <el-dialog
           title="选择显示列"
@@ -346,6 +399,16 @@
             <div class="title">退款信息</div>
             <el-table border :data="orderData.payContext.payRefundList">
               <el-table-column prop="status" label="退款状态">
+                <!-- 转义 -->
+                <el-tag
+                 :type="getPayStatus(orderData.payContext.payRefundList.status, 'type')"
+                  size="normal">
+          <!-- {{ getPayStatus(orderData.payStatus) }} -->
+          <div v-if="getPayStatus(orderData.payContext.payRefundList.status) == 'SUBMIT'">已提交</div>
+          <div v-if="getPayStatus(orderData.payContext.payRefundList.status) == 'UNKNOWN'">未知</div>
+          <div v-if="getPayStatus(orderData.payContext.payRefundList.status) == 'SUCCESS'">成功</div>
+          <div v-if="getPayStatus(orderData.payContext.payRefundList.status) == 'FAILURE'">失败</div>
+        </el-tag>
               </el-table-column>
               <el-table-column prop="refundFee" label="退款金额">
               </el-table-column>
@@ -363,6 +426,18 @@
             <div class="title">退款明细</div>
             <el-table border :data="orderData.payContext.payRefundTaskList">
               <el-table-column prop="status" label="退款明细状态">
+                <!-- 转义 -->
+                  <el-tag
+                 :type="getPayStatus(orderData.payRefundTaskList.status, 'type')"
+                  size="normal">
+          <!-- {{ getPayStatus(orderData.payStatus) }} -->
+          <div v-if="getPayStatus(orderData.payContext.payRefundTaskList.status) == 'CREATE'">已创建</div>
+          <div v-if="getPayStatus(orderData.payContext.payRefundTaskList.status) == 'NEED_RETRY'">待重试</div>
+          <div v-if="getPayStatus(orderData.payContext.payRefundTaskList.status) == 'UNKNOWN'">未知</div>
+          <div v-if="getPayStatus(orderData.payContext.payRefundTaskList.status) == 'REFUND_SUCCESS'">退款成功</div>
+          <div v-if="getPayStatus(orderData.payContext.payRefundTaskList.status) == 'SUCCESS'">退款完成</div>
+          <div v-if="getPayStatus(orderData.payContext.payRefundTaskList.status) == 'FAILURE'">失败</div>
+        </el-tag>
               </el-table-column>
               <el-table-column prop="refundFee" label="退款金额">
               </el-table-column>
@@ -791,6 +866,15 @@ export default {
     showDetail (record) {
       this.record = record
       this.detailVisible = true
+    },
+    // 下载方法
+    downloadInvoice (url) {
+      console.log(' downloadInvoice', url)
+      if (!url) {
+        this.$message.warning('暂无发票可下载')
+        return
+      }
+      window.open(url)
     }
   }
 }

+ 8 - 2
src/components/GlobalComponents/TicketStatusTag.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-tag :type="TicketStatus[value]&&TicketStatus[value].type">
+  <el-tag class="ticket-status-tag" :class="{ 'float-left': floatLeft }" :type="TicketStatus[value]&&TicketStatus[value].type">
     {{ TicketStatus[value]&&TicketStatus[value].label || value }}
   </el-tag>
 </template>
@@ -16,11 +16,17 @@ export default {
     value: {
       type: String,
       default: ''
+    },
+     floatLeft: {  // 新增prop控制是否浮动
+      type: Boolean,
+      default: false
     }
   }
 }
 </script>
 
 <style lang="scss" scoped>
-
+.ticket-status-tag.float-left {
+  float: left !important;
+}
 </style>

+ 3 - 3
src/pages/queryReport/checkQuery.vue

@@ -227,20 +227,20 @@
         v-loading="loading"
         :data="tableData">
         <el-table-column
-          width="180"
+          width="150"
           prop="otaSourceName"
           label="销售渠道"
         >
         </el-table-column>
         <el-table-column
-          width="180"
+          width="240"
           prop="orderNo"
           label="订单号"
         >
         </el-table-column>
         <el-table-column
           prop="ticketNo"
-          width="180"
+          width="150"
           label="票号"
         >
         </el-table-column>

+ 57 - 29
src/pages/queryReport/checkStatistic.vue

@@ -59,6 +59,28 @@
           </el-option>
         </el-select>
       </el-form-item>
+      <!-- 新增分组筛选项 -->
+
+       <el-form-item
+        label="分组筛选"
+        style="width:100%">
+        <el-checkbox-group
+          v-model="selectKeys"
+          :min="0"
+          :max="4">
+          <draggable :list="groupKeys">
+            <el-checkbox
+              :key="item.value"
+              :label="item.value"
+              v-for="(item) in groupKeys"
+              :disabled="disabled(item)"
+            >
+              {{ item.label }}
+            </el-checkbox>
+          </draggable>
+        </el-checkbox-group>
+        (可拖拽排序)
+      </el-form-item>
 
       <div
         class="btn-wrap"
@@ -92,28 +114,10 @@
         :row-class-name="totalRowClassName"
         :span-method="objectSpanMethod">
         <el-table-column
-          prop="otaSourceName"
-          label="订单渠道">
-        </el-table-column>
-        <el-table-column
-          prop="ticketTypeName"
-          label="票种名称">
-        </el-table-column>
-        <el-table-column
-          prop="unitPrice"
-          label="单价">
-        </el-table-column>
-        <el-table-column
-          prop="checkCount"
-          label="检票数量">
-        </el-table-column>
-        <el-table-column
-          prop="checkNum"
-          label="检票人数">
-        </el-table-column>
-        <el-table-column
-          prop="checkPrice"
-          label="检票金额">
+          v-for="(item) in finalGroup"
+          :key="item.key"
+          :prom="item.prom"
+          :label="item.label">
         </el-table-column>
       </el-table>
     </div>
@@ -151,7 +155,7 @@ export default {
   },
   data () {
     return {
-      groupKeys: [{ value: 'tagName', label: '票种标签' }, { value: 'otaSourceName', label: '分销商' }],
+      groupKeys: [{ value: 'orderDateDay', label: '统计日期' },],
       form: {
         checkTimeBegin: new Date(moment().startOf('day').subtract(7, 'day').format('YYYY-MM-DD HH:mm:ss')),
         checkTimeEnd: new Date(moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')),
@@ -160,8 +164,16 @@ export default {
         pageNum: 1,
         pageSize: 10
       },
-      selectKeys: [],
-      finalGroup: [],
+      finalGroup: [
+      { prop: 'otaSourceName', label: '订单渠道',values:'otaSourceName' },
+      { prop: 'ticketTypeName', label: '票种名称',values:'ticketTypeName' },
+      { prop: 'unitPrice', label: '单价' ,values:'unitPrice'},
+      { prop: 'checkCount', label: '检票数量' ,values:'checkCount'},
+      { prop: 'checkNum', label: '检票人数',values:'checkNum' },
+      { prop: 'checkPrice', label: '检票金额' ,values:'checkPrice'},
+      { prop: 'orderDateDay', label: '统计日期',values:'orderDateDay' }
+    ],
+      selectKeys: ['orderDateDay'], // 默认选中
       tableIndex: 1,
       OrderIndexArr: [],
       tableData: [],
@@ -217,10 +229,26 @@ export default {
     getCheckStatistic () {
       this.loading = true
       this.tableIndex++
-      this.finalGroup = []
-      this.finalGroup = this.groupKeys.filter(i => {
-        return this.selectKeys.includes(i.value)
-      })
+      // this.finalGroup = []
+      // this.finalGroup = this.groupKeys.filter(i => {
+      //   return this.selectKeys.includes(i.value)
+      // })
+
+      if (this.selectKeys.length == 0) {
+        this.finalGroup = [
+      { prop: 'otaSourceName', label: '订单渠道',values:'otaSourceName' },
+      { prop: 'ticketTypeName', label: '票种名称',values:'ticketTypeName' },
+      { prop: 'unitPrice', label: '单价' ,values:'unitPrice'},
+      { prop: 'checkCount', label: '检票数量' ,values:'checkCount'},
+      { prop: 'checkNum', label: '检票人数',values:'checkNum' },
+      { prop: 'checkPrice', label: '检票金额' ,values:'checkPrice'},
+      { prop: 'orderDateDay', label: '统计日期',values:'orderDateDay' }
+    ]
+      } else {
+         this.finalGroup = [...this.finalGroup].sort((a, b) => 
+        (this.selectKeys.includes(b.prop) ? 1 : 0) - (this.selectKeys.includes(a.prop) ? 1 : 0)
+);
+      }
 
       if (this.form.checkTimeBegin) {
         this.form.checkTimeBegin = moment(this.form.checkTimeBegin).format('YYYY-MM-DD HH:mm:ss')

+ 3 - 3
src/pages/queryReport/refundQuery/RefundQuery.vue

@@ -228,17 +228,17 @@
         :data="tableData">
         <el-table-column
           prop="otaSourceName"
-          width="90"
+          width="150"
           label="销售渠道"
         ></el-table-column>
         <el-table-column
           prop="orderNo"
-          width="180"
+          width="240"
           label="订单号"
         ></el-table-column>
         <el-table-column
           prop="ticketNo"
-          width="180"
+          width="150"
           label="票号"
         ></el-table-column>
         <el-table-column

+ 55 - 26
src/pages/queryReport/refundStatistic.vue

@@ -60,6 +60,28 @@
           </el-option>
         </el-select>
       </el-form-item>
+      <!-- 新增分组筛选项 -->
+
+       <el-form-item
+        label="分组筛选"
+        style="width:100%">
+        <el-checkbox-group
+          v-model="selectKeys"
+          :min="0"
+          :max="4">
+          <draggable :list="groupKeys">
+            <el-checkbox
+              :key="item.value"
+              :label="item.value"
+              v-for="(item) in groupKeys"
+            >
+              {{ item.label }}
+            </el-checkbox>
+          </draggable>
+        </el-checkbox-group>
+        (可拖拽排序)
+      </el-form-item>
+
       <div class="btn-wrap">
         <el-button
           @click="reportExport">
@@ -90,32 +112,10 @@
         :row-class-name="totalRowClassName"
         :span-method="objectSpanMethod">
         <el-table-column
-          prop="otaSourceName"
-          label="销售渠道">
-        </el-table-column>
-        <el-table-column
-          prop="ticketTypeName"
-          label="票种">
-        </el-table-column>
-        <el-table-column
-          prop="unitPrice"
-          label="单价">
-        </el-table-column>
-        <el-table-column
-          prop="cancelCount"
-          label="退票数量">
-        </el-table-column>
-        <el-table-column
-          prop="cancelNum"
-          label="退票人数">
-        </el-table-column>
-        <el-table-column
-          prop="cancelPrice"
-          label="退票金额">
-        </el-table-column>
-        <el-table-column
-          prop="cancelSettlementPrice"
-          label="退票结算金额">
+          v-for="(item) in finalGroup"
+          :key="item.key"
+          :prom="item.prom"
+          :label="item.label">
         </el-table-column>
       </el-table>
     </div>
@@ -138,6 +138,18 @@ export default {
         ticketTypeIdList: [], // 票种
         otaSourceNameList: []
       },
+      groupKeys: [{ value: 'orderDateDay', label: '统计日期' },],
+      finalGroup: [
+  { prop: 'otaSourceName', label: '销售渠道', values: 'otaSourceName' },
+  { prop: 'ticketTypeName', label: '票种', values: 'ticketTypeName' },
+  { prop: 'unitPrice', label: '单价', values: 'unitPrice' },
+  { prop: 'cancelCount', label: '退票数量', values: 'cancelCount' },
+  { prop: 'cancelNum', label: '退票人数', values: 'cancelNum' },
+  { prop: 'cancelPrice', label: '退票金额', values: 'cancelPrice' },
+  { prop: 'cancelSettlementPrice', label: '退票结算金额', values: 'cancelSettlementPrice' },
+  { prop: 'orderDateDay', label: '统计日期',values:'orderDateDay' }
+],
+ selectKeys: ['orderDateDay'], // 默认选中
       tableData: [],
       otaSourceList: [],
       loading: false
@@ -242,6 +254,23 @@ export default {
       })
     },
     getList () {
+
+            if (this.selectKeys.length == 0) {
+        this.finalGroup = [
+      { prop: 'otaSourceName', label: '订单渠道',values:'otaSourceName' },
+      { prop: 'ticketTypeName', label: '票种名称',values:'ticketTypeName' },
+      { prop: 'unitPrice', label: '单价' ,values:'unitPrice'},
+      { prop: 'checkCount', label: '检票数量' ,values:'checkCount'},
+      { prop: 'checkNum', label: '检票人数',values:'checkNum' },
+      { prop: 'checkPrice', label: '检票金额' ,values:'checkPrice'},
+      { prop: 'orderDateDay', label: '统计日期',values:'orderDateDay' }
+    ]
+      } else {
+         this.finalGroup = [...this.finalGroup].sort((a, b) => 
+        (this.selectKeys.includes(b.prop) ? 1 : 0) - (this.selectKeys.includes(a.prop) ? 1 : 0)
+);
+      }
+
       this.loading = true
       this.setTime()
       getCancelOrderStatistics(this.form).then(res => {

+ 35 - 0
src/pages/ticketSetting/ticket/Dialog.vue

@@ -61,6 +61,21 @@
             </el-switch>
           </el-form-item>
 
+          <!-- 新增开票状态 -->
+          <el-form-item
+            verify
+            label="开票状态"
+            prop="isSupportInvoice"
+          >
+            <el-switch
+              v-model="form.isSupportInvoice"
+              :active-value="1"
+              :inactive-value="0"
+              active-text="支持开票"
+              inactive-text="不支持开票">
+            </el-switch>
+          </el-form-item>
+
           <el-form-item
             verify
             label="销售价格"
@@ -95,6 +110,24 @@
             ></el-input-number>
           </el-form-item> -->
 
+
+          <el-form-item
+            verify
+            label="多日票类型"
+            prop="useDaysDelayType"
+          >
+            <el-radio
+              v-model="form.useDaysDelayType"
+              :label="1">
+              按照游玩时间延长
+            </el-radio>
+            <el-radio
+              v-model="form.useDaysDelayType"
+              :label="2">
+              按照首次核销时间延长
+            </el-radio>
+          </el-form-item>
+
           <el-form-item
             v-if="form.category !== 'member'"
             verify
@@ -1149,6 +1182,7 @@ const defaultForm = {
   category: 'ticket', // 大类
   name: '', // 名称
   isSale: 1, // 在售状态 0为禁售 1为在售 默认为1
+  isSupportInvoice:1, // 是否支持发票 0为不支持 1为支持 默认为1
   price: '', // 窗口价格
   onlinePrice: 0, // 线上价格
   highPrice: 0, // 虚拟高价(划线价格)
@@ -1186,6 +1220,7 @@ const defaultForm = {
   ticketTypeScenicList: [], // 票种绑定的景点数组
   source: ['window', 'term'], // 票种绑定的销售渠道 窗口:window ; 自助机:term,示例值([window])
   useDateType: 1, // 使用日期类型 1日历票 2期票 默认为1
+  useDaysDelayType:1, // 使用日期截止类型 1按使用日期截止 2按使用天数截止 默认为1
   payGonghangTicketTypeMerchantList: [], // 工行子商户列表
   ticketTypeInvoiceSellerList: [], // 发票销售方列表
   ticketTypeScenicSplitRequests: [] // 子分账景点