dct hace 9 meses
padre
commit
ad9e019658

+ 2 - 0
src/components/Dialog/index.vue

@@ -52,6 +52,7 @@ export default {
             // 通知slot 弹出关闭了
             this.$nextTick(() => {
               this.childComponent.visible = false
+              this.$emit('close')
             })
           }
         }).catch(e => {
@@ -63,6 +64,7 @@ export default {
         // 通知slot 弹出关闭了
         this.$nextTick(() => {
           this.childComponent.visible = false
+          this.$emit('close')
         })
       }
     },

+ 30 - 10
src/views/queryReport/cancelReport.vue

@@ -66,7 +66,7 @@
           @click="getCancelOrderList($event,true)">搜索</el-button>
         <el-button
           type="primary"
-          @click="handleExport">导出</el-button>
+          @click="reportExport">导出</el-button>
       </div>
     </div>
 
@@ -93,11 +93,11 @@
         </el-table-column>
         <el-table-column
           prop="cancelCount"
-          label="检票数量">
+          label="退票张数">
         </el-table-column>
         <el-table-column
           prop="cancelNum"
-          label="退票数">
+          label="退票数">
         </el-table-column>
         <el-table-column
           prop="cancelPrice"
@@ -280,14 +280,34 @@ export default {
       this.currentItem = item
       this.guestDialogVisible = true
     },
-    handleExport () {
-      this.form.export = true
-      getOrderCancelStatistics(this.form).then(res => {
-        this.$notify({
-          title: '提示',
-          message: '导出成功',
-          type: 'success'
+    reportExport () {
+      this.$confirm(`是否要导出明细数据`, '确认提示', {
+        confirmButtonText: '是',
+        cancelButtonText: '否',
+        type: 'warning'
+      }).then(() => {
+        this.handelExport({
+          ...this.form,
+          export: true,
+          exportDetail: true
         })
+      }).catch(() => {
+        this.handelExport({
+          ...this.form,
+          export: true,
+          exportDetail: false
+        })
+      })
+    },
+    handelExport (params) {
+      getOrderCancelStatistics(params).then(res => {
+        this.$confirm('导出成功,是否去下载页', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.$router.push('/queryReport/reportExport')
+        }).catch(() => {})
       }, () => {
         this.$notify.error({
           title: '提示',

+ 22 - 4
src/views/queryReport/checkAndPrintReport.vue

@@ -71,7 +71,7 @@
       <div class="btn-wrap">
         <el-button @click="reset">重置</el-button>
         <el-button
-          @click="exportReport"
+          @click="reportExport"
           type="primary">导出</el-button>
         <el-button
           type="primary"
@@ -183,9 +183,27 @@ export default {
         this.otaList = res.data.records || []
       })
     },
-    exportReport () {
-      this.form.export = true
-      getCheckAndPrintStatistics(this.form).then(() => {
+    reportExport () {
+      this.$confirm(`是否要导出明细数据`, '确认提示', {
+        confirmButtonText: '是',
+        cancelButtonText: '否',
+        type: 'warning'
+      }).then(() => {
+        this.handelExport({
+          ...this.form,
+          export: true,
+          exportDetail: true
+        })
+      }).catch(() => {
+        this.handelExport({
+          ...this.form,
+          export: true,
+          exportDetail: false
+        })
+      })
+    },
+    exportReport (params) {
+      getCheckAndPrintStatistics(params).then(() => {
         this.$confirm('导出成功,是否去下载页', '提示', {
           confirmButtonText: '确定',
           cancelButtonText: '取消',

+ 121 - 21
src/views/queryReport/orderList.vue

@@ -233,6 +233,7 @@
                   <div class=""><span>退款金额:</span>{{ scope.row.cancelPrice || '' }}</div>
                   <div class=""><span>退款申请时间:</span>{{ scope.row.cancelSubmitTime || '' }}</div>
                   <div class=""><span>退款完成时间:</span>{{ scope.row.cancelCompleteTime || '' }}</div>
+                  <div class=""><span>是否强制取消:</span>{{ scope.row.isForceCancel ? '是' : '否' }}</div>
                 </template>
               </el-table-column>
             </el-table>
@@ -342,8 +343,8 @@
               @click="showGuestInfo(scope.row)">游客信息</el-button> -->
             <el-button
               type="text"
-              v-if="checkRefundVisible(scope.row)&&canCancel"
-              @click="showOrderInfo(scope.row,'cancel')">退单</el-button>
+              v-if="scope.row.isSelfOrder === 0"
+              @click="showRefundOrder(scope.row)">退单</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -363,7 +364,6 @@
     >
       <OrderDialog
         :current-item="currentItem"
-        :can-cancel="canCancel"
         @updateList="getOrderList"
         :type="type"></OrderDialog>
     </ElDialog>
@@ -374,6 +374,100 @@
       <GuestDialog
         :current-item="currentItem"></GuestDialog>
     </ElDialog>
+    <ElDialog
+      title="退单"
+      v-model="refundOrderDialogVisible"
+      width="80%"
+      @close="refundOrderDialogVisible=false;ticketNoSearch=''">
+      <div
+        class="search-area"
+        style="margin: 20px;display: flex;align-items: center;justify-content: space-between;">
+        <div class="name">
+          <span style="margin-right: 10px;">票号搜索</span>
+          <el-input v-model="ticketNoSearch"></el-input>
+        </div>
+      </div>
+      <div
+        class="table-wrap"
+        style="padding: 20px;">
+        <el-table
+          border
+          :data="(currentItem.ticketList || []).filter(v => v.ticketNo.includes(ticketNoSearch))"
+          @selection-change="handleSelectionChange">
+          <el-table-column
+            type="selection"
+            fixed
+            :selectable="isRowSelectable"
+            width="55">
+          </el-table-column>
+          <el-table-column
+            min-width="260"
+            prop="ticketInfo"
+            label="票信息">
+            <template slot-scope="scope">
+              <div class=""><span>票号:</span>{{ scope.row.ticketNo }}</div>
+              <div class=""><span>票种:</span>{{ scope.row.ticketTypeName }}</div>
+              <div class=""><span>金额:</span>{{ scope.row.price }}</div>
+              <div class=""><span>状态:</span>
+                <el-tag :type="ticketStatus[scope.row.status]&&ticketStatus[scope.row.status].color">
+                  {{ ticketStatus[scope.row.status]&&ticketStatus[scope.row.status].label }}
+                </el-tag>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="playDateBegin"
+            width="180"
+            label="游玩时间">
+            <template slot-scope="scope">
+              {{ scope.row.playDateBegin || scope.row.playDateEnd ? `${scope.row.playDateBegin || ''} - ${scope.row.playDateEnd || ''}` : "无限制" }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            min-width="210"
+            prop="guestInfo"
+            label="游客信息">
+            <template slot-scope="scope">
+              <div class=""><span>姓名:</span>{{ scope.row.guestName }}</div>
+              <div class=""><span>手机号:</span>{{ scope.row.guestPhone }}</div>
+              <div class=""><span>证件类型:</span>{{ papersType[scope.row.guestIdentifyType] }}</div>
+              <div class=""><span>证件号码:</span>{{ scope.row.guestIdentify }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            min-width="260"
+            prop="ticketCheckInfo"
+            label="检票信息">
+            <template slot-scope="scope">
+              <div class=""><span>检票人数:</span>{{ scope.row.checkNum }}</div>
+              <div class=""><span>首次检票时间:</span>{{ scope.row.firstCheckTime }}</div>
+              <div class=""><span>核销通知:</span>{{ scope.row.isCheckSend ? '已通知' : '未通知' }}</div>
+              <div class=""><span>通知成功时间:</span>{{ scope.row.checkSendTime }}</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            min-width="260"
+            prop="ticketRefundInfo"
+            label="退票信息">
+            <template slot-scope="scope">
+              <div class=""><span>退款操作人:</span>{{ scope.row.cancelAdminName || '' }}</div>
+              <div class=""><span>退款金额:</span>{{ scope.row.cancelPrice || '' }}</div>
+              <div class=""><span>退款申请时间:</span>{{ scope.row.cancelSubmitTime || '' }}</div>
+              <div class=""><span>退款完成时间:</span>{{ scope.row.cancelCompleteTime || '' }}</div>
+              <div class=""><span>是否强制取消:</span>{{ scope.row.isForceCancel ? '是' : '否' }}</div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <div
+        class="dialog-footer"
+        style="padding: 20px; text-align: right;">
+        <el-button @click="refundOrderDialogVisible = false">取消</el-button>
+        <el-button
+          type="primary"
+          @click="submitRefundOrder">确定</el-button>
+      </div>
+    </ElDialog>
 
     <TicketInfo ref="ticketInfo"></TicketInfo>
   </div>
@@ -399,6 +493,12 @@ export default {
   },
   data () {
     return {
+      refundOrderDialogVisible: false,
+      refundOrderInfo: {
+        ticketCancelRequestList: []
+      },
+      ticketNoSearch: '',
+      multipleSelection: [],
       papersType: IDENTIFY_TYPES,
       ticketTypeList: [],
       otaSourceList: [],
@@ -438,9 +538,6 @@ export default {
     this.getOrderList()
   },
   computed: {
-    canCancel () {
-      return this.$store.state.user.permissionList.includes('orders:cancel')
-    },
     queryClear () {
       return this.$store.state.user.permissionList.includes('stats:clearwx_query')
     },
@@ -451,20 +548,12 @@ export default {
   },
   methods: {
     getPayStatus,
-    checkRefundVisible (item) {
-      if (item.status !== 'CANCELED') return true
-      if (item.status === 'CANCELED') {
-        if (item.tickets && item.tickets.some(i => i.status !== 'CANCELED')) {
-          return true
-        } else {
-          return false
-        }
-      }
-      return false
-    },
     reset () {
       this.$refs.form.resetFields()
     },
+    handleSelectionChange (val) {
+      this.multipleSelection = val
+    },
     getTicketTypeList () {
       getTicketTypeList({
         pageNum: 1,
@@ -526,16 +615,25 @@ export default {
       this.type = type
       this.orderDialogVisible = true
     },
-    cancelTicket (item) {
+    isRowSelectable (row, index) {
+      return true
+    },
+    showRefundOrder (item) {
+      this.currentItem = item
+      this.refundOrderDialogVisible = true
+      this.ticketNoSearch = ''
+      this.multipleSelection = []
+    },
+    submitRefundOrder (item) {
       this.$confirm('确定退票?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
         this.loading = true
-        let ticketList = item.ticketList.map(i => {
+        let ticketList = this.multipleSelection.map(v => {
           return {
-            ticketId: i.id
+            ticketId: v.id
           }
         })
 
@@ -544,6 +642,8 @@ export default {
         }).then(res => {
           this.loading = false
           this.$message.success('退票成功')
+          this.refundOrderDialogVisible = false
+          this.ticketNoSearch = ''
           this.getOrderList('', true)
         })
       })
@@ -552,7 +652,7 @@ export default {
       this.currentItem = item
       this.guestDialogVisible = true
     },
-    handleExport () {
+    handelExport () {
       this.form.export = true
       getOrderList(this.form).then(res => {
         this.$notify({

+ 1 - 1
src/views/queryReport/refundAudit.vue

@@ -342,7 +342,7 @@ export default {
       })
       return auditTickets.length
     },
-    handleExport () {
+    handelExport () {
       exportOrderList(this.form).then(res => {
         this.$notify({
           title: '提示',

+ 28 - 8
src/views/queryReport/salesReport.vue

@@ -66,7 +66,7 @@
           @click="getOrderStatistics($event,true)">搜索</el-button>
         <el-button
           type="primary"
-          @click="handleExport">导出</el-button>
+          @click="reportExport">导出</el-button>
       </div>
     </div>
 
@@ -292,14 +292,34 @@ export default {
       this.currentItem = item
       this.guestDialogVisible = true
     },
-    handleExport () {
-      this.form.export = true
-      getOrderStatistics(this.form).then(res => {
-        this.$notify({
-          title: '提示',
-          message: '导出成功',
-          type: 'success'
+    reportExport () {
+      this.$confirm(`是否要导出明细数据`, '确认提示', {
+        confirmButtonText: '是',
+        cancelButtonText: '否',
+        type: 'warning'
+      }).then(() => {
+        this.handelExport({
+          ...this.form,
+          export: true,
+          exportDetail: true
+        })
+      }).catch(() => {
+        this.handelExport({
+          ...this.form,
+          export: true,
+          exportDetail: false
         })
+      })
+    },
+    handelExport (params) {
+      getOrderStatistics(params).then(res => {
+        this.$confirm('导出成功,是否去下载页', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          this.$router.push('/queryReport/reportExport')
+        }).catch(() => {})
       }, () => {
         this.$notify.error({
           title: '提示',

+ 2 - 2
src/views/queryReport/salesReport_bak.vue

@@ -73,7 +73,7 @@
         <el-button
           :loading="exportLoading"
           type="primary"
-          @click="handleExport">导出</el-button>
+          @click="handelExport">导出</el-button>
         <el-button
           type="primary"
           @click="getData">搜索</el-button>
@@ -227,7 +227,7 @@ export default {
         this.loading = false
       })
     },
-    handleExport () {
+    handelExport () {
       this.exportLoading = true
       this.form.export = true
       getSaleStatistics(this.form).then(res => {