浏览代码

1. 新增观影人订单

MONSTER-ygh 1 年之前
父节点
当前提交
fe611b7b44
共有 3 个文件被更改,包括 990 次插入0 次删除
  1. 48 0
      src/api/order/viewers.js
  2. 206 0
      src/views/order/viewers/dialog/details.vue
  3. 736 0
      src/views/order/viewers/index.vue

+ 48 - 0
src/api/order/viewers.js

@@ -0,0 +1,48 @@
+import request from '@/utils/request'
+
+// 分页查询
+export const pageList = (query) => {
+  return request({
+    url: '/order/orderViewers/list',
+    method: 'get',
+    params: query
+  })
+}
+
+
+// id获取详情
+export function getSelectById(id) {
+  return request({
+    url: '/order/orderInfo/detail?id=' + id,
+    method: 'get'
+  })
+}
+
+//  导出
+export function downOrderListXls(params) {
+  return request({
+    url: '/order/orderViewers/listExport',
+    method: 'get',
+    responseType: 'blob',
+    params
+  });
+}
+
+
+// 打印
+export const printApi = (data) => {
+  return request({
+    url: '/order/orderInfo/ticketout',
+    method: 'post',
+    data: data
+  })
+}
+
+// 退款
+export const refundSubmitApi = (data) => {
+  return request({
+    url: '/order/orderInfo/refundSubmit',
+    method: 'post',
+    data: data
+  })
+}

+ 206 - 0
src/views/order/viewers/dialog/details.vue

@@ -0,0 +1,206 @@
+<!--
+ * @Description: 详情弹框
+ * @Author: Sugar.
+ * @Date: 2023-11-24 13:55:00
+ * @LastEditors: Sugar.
+ * @LastEditTime: 2023-11-24 13:55:00
+ * @FilePath: \cattle_webui\src\views\order\orderMr\dialog\details.vue
+ * @Copyright: Copyright (c) 2016~2023 by Sugar., All Rights Reserved.
+-->
+<template>
+  <el-dialog
+    title="订单详情"
+    :visible.sync="open"
+    width="80%"
+    append-to-body
+    :close-on-click-modal="false"
+    @close="cancel"
+  >
+    <div class="dialog" v-if="form">
+      <!--   基础信息   -->
+      <div class="title-class" style="margin-top: 0">基础信息</div>
+      <el-row>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">票务名称: <span>{{ form.goodsName || ''}}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">订单号: <span>{{ form.id || '' }}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">购票人姓名: <span>{{ form.memberName || '' }}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">购票人手机号: <span>{{ form.memberMobile || '' }}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">购票人身份证号: <span>{{ form.memberCardId || '' }}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">剧名名称: <span>{{ form.performName || '' }}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">票务类型: <span>{{ form.seatTypeName || '' }}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">场次: <span>{{form.performDate}}   {{ form.performTimeStart }} -- {{ form.performTimeEnd }}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div style="display: flex;" class="grid-content bg-purple item-class">购票渠道: <span style="display: block;margin-left: 5px;"><dict-tag :options="dict.type.order_form_type" :value="form.source"/></span></div>
+        </el-col>
+        <el-col :span="12" v-if="form.sourceRemark">
+          <div style="display: flex;" class="grid-content bg-purple item-class">来源备注: <span style="display: block;margin-left: 5px;"> {{ form.sourceRemark }} </span></div>
+        </el-col>
+        <el-col :span="12" v-if="form.orderIdOrQrCode">
+          <div style="display: flex;" class="grid-content bg-purple item-class">核销码: <span style="display: block;margin-left: 5px;"><span>{{ form.orderIdOrQrCode }}</span></span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">购票数量: <span>{{ form.viewerNum || '' }}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">支付总额: <span>¥{{ form.orderPrice || '' }}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">下单时间: <span>{{ form.createTime || '' }}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">优惠信息: <span>暂无</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class">支付时间: <span>{{ form.payTime || '' }}</span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class" style="display: flex;">支付方式: <span style="display: block;margin-left: 5px;"><dict-tag :options="dict.type.pay_way_type" :value="form.payWay"/></span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class" style="display: flex;">订单状态: <span style="display: block;margin-left: 5px;"><dict-tag :options="dict.type.order_status_type" :value="form.status"/></span></div>
+        </el-col>
+        <el-col :span="12">
+          <div class="grid-content bg-purple item-class" style="display: flex;">订单备注: <span style="display: block;margin-left: 5px;">{{ form.remark }}</span></div>
+        </el-col>
+      </el-row>
+
+
+      <!--   观影人员信息   -->
+      <div class="title-class">观影人员信息</div>
+      <el-row>
+        <el-col :span="24">
+          <el-table ref="tables" :data="form.viewersList" border>
+            <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
+            <el-table-column label="姓名" align="center" prop="name" />
+            <el-table-column label="身份证号码" align="center" prop="idcard" />
+            <el-table-column label="核销状态" align="center">
+              <template slot-scope="scope">
+                <el-tag v-if="scope.row.qrcodeStatus == 0">未使用</el-tag>
+                <el-tag v-if="scope.row.qrcodeStatus == 1" type="success">已使用</el-tag>
+                <el-tag v-if="scope.row.qrcodeStatus == 2" type="info">过期</el-tag>
+              </template>
+            </el-table-column>
+            <el-table-column label="核销时间" align="center" prop="qrcodeUseTime" />
+            <el-table-column label="座位信息" align="center" prop="seatName" />
+            <el-table-column label="人员类别" align="center">
+              <template slot-scope="scope">
+                <dict-tag :options="dict.type.personnel_type" :value="scope.row.identity"/>
+              </template>
+            </el-table-column>
+            <el-table-column label="备注" align="center" prop="remark" />
+          </el-table>
+        </el-col>
+      </el-row>
+    </div>
+
+    <span slot="footer" class="dialog-footer">
+      <el-button type="primary" @click="cancel">确定</el-button>
+    </span>
+
+  </el-dialog>
+</template>
+
+<script>
+import { getSelectById } from '@/api/order/orderMr'
+export default {
+  name: "detailsDia",
+  dicts: ['order_form_type','order_status_type','pay_way_type','personnel_type'],
+  data() {
+    return {
+      title: "编辑",
+      model: "EDIT",
+      open: false,
+      loading: false,
+      form: {
+        id: undefined,
+      },
+      performerVisible: false,
+      performerList: [],
+      refund: false,
+      dataList: []
+    };
+  },
+  methods: {
+    /**
+     * 打开弹框
+     * @date 2023-11-22
+     * @param {any} obj
+     * @returns {any}
+     */
+    openDialog(title, obj, type) {
+      this.open = true;
+      this.form = {}
+      this.getSelectByIdApi(obj);
+    },
+    /** 获取详情 */
+    getSelectByIdApi(row) {
+      const id = row.orderId
+      getSelectById(id).then(response => {
+        this.$set(this,"form",response.data)
+        //this.form = response.data;
+      });
+    },
+    /**
+     * 关闭弹框
+     * @date 2023-11-22
+     * @returns {any}
+     */
+    cancel() {
+      this.open = false;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.dialog {
+  padding: 0 30px;
+  max-height: 65vh;
+  overflow-y: auto;
+}
+.dialog {
+  padding: 0 30px;
+  .upload-btn {
+    width: 100px;
+    height: 100px;
+    background-color: #fbfdff;
+    border: dashed 1px #c0ccda;
+    border-radius: 5px;
+    i {
+      font-size: 30px;
+      margin-top: 20px;
+    }
+    &-text {
+      margin-top: -10px;
+    }
+  }
+  .avatar {
+    cursor: pointer;
+  }
+  .title-class{
+    font-size: 16px;
+    font-weight: bold;
+    color: black;
+    margin-bottom: 20px;
+    margin-top: 20px;
+  }
+  .item-class{
+    margin-bottom: 20px;
+  }
+}
+</style>

+ 736 - 0
src/views/order/viewers/index.vue

@@ -0,0 +1,736 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="订单号">
+        <el-input v-model="queryParams.orderId" placeholder="请输入订单号" clearable style="width: 240px;"
+          @keyup.enter.native="handleQuery" />
+      </el-form-item>
+      <el-form-item label="订单状态">
+        <el-select v-model="queryParams.orderStatus" placeholder="订单状态" clearable style="width: 100%">
+          <el-option v-for="dict in dict.type.order_status_type" :key="dict.value" :label="dict.label"
+            :value="dict.value" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="座位类型">
+        <el-select v-model="queryParams.seatTypeId" placeholder="座位类型" clearable style="width: 100%">
+          <el-option v-for="(item, index) in seatTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="购票渠道">
+        <el-select v-model="queryParams.source" placeholder="购票渠道" clearable style="width: 100%">
+          <el-option v-for="dict in dict.type.order_form_type" :key="dict.value" :label="dict.label"
+            :value="dict.value" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="支付时间">
+        <el-date-picker style="width: 230px;" v-model="queryParams.payTime" type="date" value-format="yyyy-MM-dd"
+          placeholder="支付时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="演出时间">
+        <el-date-picker style="width: 230px;" v-model="queryParams.performDate" @change="pagePerformTimeListFun"
+          type="date" value-format="yyyy-MM-dd" placeholder="选择日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="场次">
+        <el-select v-model="queryParams.performTimeId" placeholder="场次" clearable style="width: 100%">
+          <el-option v-for="dict in pagePerformTimeList" :key="dict.id" :label="dict.timeSnapshot" :value="dict.id" />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-button type="primary" size="mini" icon="el-icon-download" v-hasPermi="['order:orderMr:downloadExcel']"
+        @click="handleExport" v-loading.fullscreen.lock="handleExportLoading" element-loading-text="正在拼命生成数据中..."
+        element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)">导出excel</el-button>
+      <el-button 
+      type="primary" 
+      size="mini" 
+      v-hasPermi="['order:orderMr:downloadExcel']"
+      :disabled="multipleSelection.length==0"
+        @click="openRefundSubmitModel(multipleSelection)">批量退款</el-button>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table ref="tables" @selection-change="handleSelectionChange" v-loading="loading" :data="dataList" border>
+      <el-table-column 
+      :selectable="isSelectableFun"
+      type="selection" 
+      width="55"></el-table-column>
+      <el-table-column label="订单号" align="center" prop="orderId" />
+      <el-table-column label="观影人名称" align="center" prop="name" />
+      <el-table-column label="身份证号" align="center" prop="idcard" />
+      <el-table-column label="票务名称" align="center" prop="goodsName" />
+      <el-table-column label="座位类型" align="center" prop="seatTypeName" />
+      <el-table-column label="购买渠道" align="center" prop="source">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.order_form_type" :value="scope.row.source" />
+        </template>
+      </el-table-column>
+      <el-table-column label="演出日期" align="center" prop="performDate" />
+      <el-table-column label="场次" width="120" align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.row.performTimeStart + '-' + scope.row.performTimeEnd }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="购票人" align="center" prop="memberName" />
+      <el-table-column label="购票人手机号" align="center" prop="memberMobile" />
+
+      <el-table-column label="订单总额" align="center" prop="realPriceTotal">
+        <template slot-scope="scope">
+          <span>{{ scope.row.realPriceTotal ? '¥' + scope.row.realPriceTotal : '-' }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="观影实付金额" align="center" prop="realPrice">
+        <template slot-scope="scope">
+          <span>{{ scope.row.realPrice ? '¥' + scope.row.realPrice : '-' }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="支付方式" align="center" prop="payWay">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.pay_way_type" :value="scope.row.payWay" />
+        </template>
+      </el-table-column>
+      <el-table-column label="支付时间" align="center" prop="createTime" />
+      <el-table-column label="支付时间" align="center" prop="payTime" width="160">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.payTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="订单状态" align="center">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.order_status_type" :value="scope.row.status" />
+        </template>
+      </el-table-column>
+      <el-table-column label="核销渠道" align="center" prop="deviceName" />
+      <el-table-column label="人员类别" align="center">
+        <template slot-scope="scope">
+          <dict-tag :options="dict.type.personnel_type" :value="scope.row.identity" />
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" width="100" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button size="mini" type="text" @click="openDetails(scope.row)"
+            v-hasPermi="['orderMr:orderMr:details']">详情</el-button>
+          <el-button v-if="scope.row.status == 3 || scope.row.status == 7" size="mini" type="text"
+            @click="handleOpen([scope.row])" v-hasPermi="['orderMr:orderMr:print']">打印</el-button>
+          <el-button v-if="scope.row.status == 3 || scope.row.status == 6" size="mini" type="text"
+            @click="openRefundSubmitModel([scope.row])" v-hasPermi="['orderMr:orderMr:print']">退款</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
+      @pagination="getList" />
+
+    <!-- 详情 -->
+    <details-dia ref="detailsDia" @getList="getList"></details-dia>
+    <!-- 打印  -->
+    <el-dialog title="选择小票机" :visible.sync="dialogVisible" width="30%" :before-close="handleClose">
+      <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+        <el-form-item label="小票机" prop="region">
+          <el-select v-model="ruleForm.region" placeholder="选择小票机">
+            <el-option :label="item.deviceName" :key="item.id" :value="item.id"
+              v-for="(item, index) in printList"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" :loading="dialogVisibleLoading" @click="print(viewerList)">{{
+          dialogVisibleLoading ? '打印中...' : '打印' }}</el-button>
+      </span>
+    </el-dialog>
+    <!-- 退款   -->
+    <el-dialog 
+    title="退款提示" 
+    :visible.sync="tkDialogVisible" 
+    width="80%" 
+    :before-close="handleCloseTk"
+    :modal-append-to-body="false"
+    :show-close="!tkDialogVisibleLoading"
+    >
+      <div style="display: flex;width: 100%;height: calc( 100vh - 30vh );overflow: hidden;overflow-y: auto;">
+        <div style="display: 200px;box-sizing: border-box;">
+          <el-form :disabled="tkDialogVisibleLoading" :model="tkRuleForm" :rules="tkRules" ref="tkRuleForm" label-width="100px" class="demo-ruleForm">
+            <el-form-item label="退款总金额">
+              <span>{{ tkRuleForm.refundAmountAll }}</span>
+            </el-form-item>
+            <el-form-item label="退款原因" prop="refundReason">
+              <el-input 
+              type="textarea"
+              :rows="3" 
+              v-model="tkRuleForm.refundReason"></el-input>
+            </el-form-item>
+            <el-form-item label="备注" prop="remark">
+              <el-input 
+              type="textarea"
+              :rows="3" 
+              v-model="tkRuleForm.remark"></el-input>
+            </el-form-item>
+          </el-form>
+        </div>
+        <div style=" width: calc( 100% - 200px );box-sizing: border-box;padding-left: 40px;">
+          <el-table
+          :data="tkSelectList"
+          style="width: 100%">
+          <el-table-column
+            prop="orderId"
+            label="订单号"
+            >
+          </el-table-column>
+          <el-table-column
+            label="观影人数"
+            >
+            <template slot-scope="scope">
+              <span>{{ scope.row.viewerList.length }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="refundAmount"
+            label="退款金额"
+            >
+          </el-table-column>
+          <el-table-column
+            prop="address"
+            label="状态">
+            <template slot-scope="scope">
+              <span 
+              :style="{
+                color: refundSubmitAction == scope.row.orderId?'#409eff':
+                  refundSubmitSuccess.includes(scope.row.orderId)?'#67c23a':
+                  refundSubmitError.includes(scope.row.orderId)?'#f56c6c':
+                  '#000'
+              }"
+              >
+                {{ 
+                  refundSubmitAction == scope.row.orderId?'退款中...':
+                  refundSubmitSuccess.includes(scope.row.orderId)?'退款成功':
+                  refundSubmitError.includes(scope.row.orderId)?'退款失败':
+                  '等待退款...'  }}
+              </span>
+            </template>
+          </el-table-column>
+        </el-table>
+        </div>
+      </div>
+      
+      
+      <span slot="footer" class="dialog-footer">
+        <el-button :loading="tkDialogVisibleLoading" @click="handleCloseTk('tkRuleForm')">取 消</el-button>
+        <el-button 
+        :loading="tkDialogVisibleLoading" 
+        type="primary" 
+        @click="tkSubmitForm('tkRuleForm')"
+        v-if="refundSubmitSuccess.length != tkSelectList.length"
+        >{{ 
+        tkDialogVisibleLoading ? '退款中...':
+        refundSubmitError.length > 0? '继续提交失败订单':
+        '确定退款'
+         }}</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+
+import { pageList, downOrderListXls, printApi, refundSubmitApi } from '@/api/order/viewers'
+import detailsDia from "./dialog/details";
+import { pagePerformTimeList } from "@/api/schedulingMr/schedulingMr"
+import { exportExcel } from '@/utils/exportexcel'
+import { pageList as getPrintListApi } from "@/api/device/pda";
+import { pageList as getSeatTypeList } from '@/api/seatTypeMr/seatTypeMr'
+const https = require('https');
+const axios = require('axios');
+const mathM = require('mathjs')
+export default {
+  name: "agreement",
+  dicts: ['order_form_type', 'order_status_type', 'pay_way_type', 'personnel_type'],
+  components: { detailsDia },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      dataList: null,
+      // 弹出层标题
+      title: "",
+
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      visibleStatus: false,
+      newObj: {},
+      visibleType: '',
+
+      pagePerformTimeList: [], // 场次列表
+
+      handleExportLoading: false,
+
+      viewerList: [],
+      printList: [],
+      dialogVisible: false,
+      ruleForm: {},
+      rules: {
+        region: [
+          { required: true, message: '请选择备注', trigger: ['change', 'blur'] }
+        ],
+      },
+      dialogVisibleLoading: false,
+
+      seatTypeList: [],
+      multipleSelection: [],
+      tkDialogVisible: false,
+      tkDialogVisibleLoading: false,
+      tkSelectList: [],
+      tkRuleForm: {
+        "orderId": null,
+        "refundReason": null,
+        "remark": null,
+        "refundAmount": 0.01,
+        "viewerList": [
+          {
+            "viewerId": "1111",
+            "salePrice": 0.01
+          }
+        ]
+      },
+      tkRules: {
+        refundReason: [{ required: true, message: '请输入退款原因', trigger: ['blur', 'change'] }],
+        remark: [{ required: true, message: '请输入备注', trigger: ['blur', 'change'] }],
+      },
+      refundSubmitAction: null,
+      refundSubmitSuccess:[], // 成功条数
+      refundSubmitError: [], // 失败条数
+      refundSubmitErrorList: [], //
+    };
+  },
+  created() {
+    this.getSeatTypeListFun()
+    this.getList();
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      pageList(this.addDateRange(this.queryParams))
+        .then(response => {
+          this.dataList = response.data.rows;
+          this.total = response.data.total;
+          this.loading = false;
+        });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      if (this.queryParams.time) {
+        this.queryParams.payBeginTime = this.queryParams.time[0];
+        this.queryParams.payEndTime = this.queryParams.time[1];
+      }
+      if (this.queryParams.createTime && this.queryParams.createTime.length > 0) {
+        this.queryParams.createBeginTime = this.queryParams.createTime[0];
+        this.queryParams.createEndTime = this.queryParams.createTime[1];
+      }
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.queryParams = {
+        pageNum: 1,
+        pageSize: 10,
+      }
+      // this.$set(this.queryParams, 'orderId', '');
+      // this.$set(this.queryParams, 'status', '');
+      // this.$set(this.queryParams, 'memberMobile', '');
+      // this.$set(this.queryParams, 'source', '');
+      // this.$set(this.queryParams, 'performName', '');
+      // this.$set(this.queryParams, 'payBeginTime', '');
+      // this.$set(this.queryParams, 'payEndTime', '');
+      // this.$set(this.queryParams, 'time', '');
+      // this.$set(this.queryParams, 'createTime', '');
+      // this.$set(this.queryParams, 'createBeginTime', '');
+      // this.$set(this.queryParams, 'createEndTime', '');
+      // this.$set(this.queryParams, 'goodsName', '');
+      // this.$set(this.queryParams, 'performDate', '');
+      // this.$set(this.queryParams, 'timeSnapshot', '');
+      // this.$set(this.queryParams, 'performTimeId', '');
+      // this.queryParams.pageNum = 1;
+      this.handleQuery();
+    },
+    /** 详情按钮操作 */
+    openDetails(row, type) {
+      this.$refs["detailsDia"].openDialog("详情", row, type);
+    },
+    async pagePerformTimeListFun(value) {
+      try {
+        this.pagePerformTimeList = []
+        this.$set(this.queryParams, 'timeSnapshot', null)
+        if (!value) {
+
+          return
+        }
+        let { data, code } = await pagePerformTimeList({
+          performDate: value,
+          pageNum: 1,
+          pageSize: 999
+        })
+        this.pagePerformTimeList = [].concat(data.rows)
+      } catch (error) {
+
+      }
+    },
+    /**
+     * 导出报表
+     * @date 2022-10-24
+     * @returns {any}
+     */
+    handleExport() {
+      this.$confirm('您确定要导出当前查询的数据吗?', '提示', {
+        confirmButtonText: '确定 ',
+        cancelButtonText: '取消 ',
+        type: 'warning'
+      })
+        .then(() => {
+          this.handleExportLoading = true;
+          // const { pageNum, pageSize} = this.params;
+          let postMap = {}
+          for (let key in this.queryParams) {
+            if (key != 'pageNum' && key != 'pageSize') {
+              postMap[key] = this.queryParams[key]
+            }
+          }
+          downOrderListXls(postMap)
+            .then((res) => {
+              exportExcel(res, '订单管理', '.xlsx');
+              this.handleExportLoading = false;
+            })
+            .catch((error) => {
+              console.log("error===", error)
+              this.handleExportLoading = false;
+            });
+        })
+        .catch(() => {
+          this.$message.info('您已取消导出!');
+        });
+    },
+
+
+    handleOpen(list = []) {
+      if (!list || list.length == 0) return
+      let idList = []
+      list.forEach((item, index) => {
+        idList.push(item.id)
+      })
+      this.viewerList = idList
+      this.getPrintListApi()
+      this.$set(this.ruleForm, 'region', '');
+      this.$nextTick(() => {
+        this.$refs.ruleForm.clearValidate('region')
+      })
+      this.dialogVisible = true
+    },
+    handleClose() {
+      this.dialogVisible = false
+    },
+    /** 查询打印机列表 */
+    getPrintListApi() {
+      getPrintListApi({
+        deviceType: 5, pageNum: 1,
+        pageSize: 999,
+      })
+        .then(response => {
+          this.printList = response.data.rows;
+        }
+        );
+    },
+    /**  选择打印机  */
+    selectPrint() {
+
+    },
+    // 打印 
+    async print(list = []) {
+      this.$refs.ruleForm.validate(async (valid) => {
+        if (valid) {
+          this.dialogVisibleLoading = true
+          try {
+            let res = await printApi({
+              viewerList: list,
+              source: 2,
+              deviceId: this.ruleForm.region
+            })
+            if (res.code == 200) {
+              let url = res.data.linkIp
+              let printInfo = res.data.printInfo
+              this.connectPrint(url, printInfo)
+            } else {
+              throw new Error(res)
+            }
+          } catch (error) {
+            this.dialogVisible = false
+            this.dialogVisibleLoading = false
+            console.error("error=====", error)
+          }
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+
+    },
+    /**  连接打印机  */
+    connectPrint(url, data) {
+      // 创建忽略 SSL 的 axios 实例
+      const ignoreSSL = axios.create({
+        httpsAgent: new https.Agent({
+          rejectUnauthorized: false
+        }),
+        withCredentials: true, // 跨域请求时发送Cookie
+        timeout: 60000, // 请求超时
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8;"
+        }
+      });
+      ignoreSSL.post(url,
+        { ...data }
+      ).then(() => {
+        this.dialogVisible = false
+        this.dialogVisibleLoading = false
+      }).catch(() => {
+        this.dialogVisible = false
+        this.dialogVisibleLoading = false
+      })
+
+    },
+    /** 获取座位类型  */
+    async getSeatTypeListFun() {
+      try {
+        let res = await getSeatTypeList({
+          pageNum: 1, pageSize: 999
+        })
+        this.seatTypeList = res.data.rows
+      } catch (error) {
+
+      }
+    },
+    /**  打开弹窗  */
+    openRefundSubmitModel(data, type) {
+      this.refundSubmitSuccess = []
+      this.refundSubmitError = []
+      let list = []
+      data.forEach((item,index)=>{
+        let flog = false
+        let indexNew = null
+        list.forEach((item1,index1)=>{
+          if(item.orderId == item1.orderId) {
+            flog = true
+            indexNew = index1
+          }
+        })
+        if(!flog){
+          list.push({
+            "orderId": item.orderId,
+            "refundReason": null,
+            "remark": null,
+            "refundAmount": 0,
+            "viewerList": [
+              {
+                "viewerId": item.id,
+                "salePrice": item.realPrice?item.realPrice:0
+              }
+            ]
+          })
+        }else {
+          list[indexNew].viewerList.push({
+            "viewerId": item.id,
+            "salePrice": item.realPrice?item.realPrice:0
+          })
+        }
+      })
+      let refundAmountAll = 0
+      list.forEach((item,index)=>{
+        if(item.viewerList && item.viewerList.length > 0){
+          let refundAmount = 0
+          item.viewerList.forEach((item1,index1)=>{
+            refundAmount = mathM.format(Number(refundAmount) + Number(item1.salePrice),10) 
+            refundAmountAll = mathM.format(Number(refundAmountAll) + Number(item1.salePrice),10)
+          })
+          list[index].refundAmount = refundAmount
+        }
+      })
+      this.tkRuleForm['refundAmountAll'] = refundAmountAll
+      this.tkSelectList = JSON.parse(JSON.stringify(list))
+      console.log("dfsfdsfsdfds====",this.tkSelectList)
+      this.tkDialogVisible = true
+    },
+    tkSubmitForm(formName) {
+        this.$refs[formName].validate((valid) => {
+          if (valid) {
+            let listCopy = JSON.parse(JSON.stringify(this.tkSelectList))
+            this.tkSelectList.forEach((item,index)=>{
+              listCopy[index] = {
+                ...item,
+                refundReason: this.tkRuleForm.refundReason?this.tkRuleForm.refundReason:'',
+                remark: this.tkRuleForm.remark?this.tkRuleForm.remark:''
+              }
+            })
+            this.tkSelectList = listCopy
+            this.refundSubmitFun(0)
+            if(this.refundSubmitError && this.refundSubmitError.length>0) {
+              let list = []
+              this.refundSubmitError.forEach((item,index)=>{
+                this.tkSelectList.forEach((item1,index1)=>{
+                  if(item == item1.orderId){
+                    list.push(item1)
+                  }
+                })
+              })
+              this.refundSubmitErrorList = list
+              this.moreRefundSubmitFun(0)
+            }else {
+              this.refundSubmitFun(0)
+            }
+            
+          } else {
+            console.log('error submit!!');
+            return false;
+          }
+        });
+    },
+    /** 批量退票 */
+    async refundSubmitFun(index) {
+      try {
+        this.tkDialogVisibleLoading = true
+        this.refundSubmitAction = this.tkSelectList[index].orderId
+        let res = await refundSubmitApi({
+          ...this.tkSelectList[index]
+        })
+        this.refundSubmitAction = null
+        if(res.code == 200) {
+          this.refundSubmitSuccess.push(this.tkSelectList[index].orderId)
+        }else {
+          this.refundSubmitError.push(this.tkSelectList[index].orderId)
+          this.$message.error(`订单号:${this.tkSelectList[index].orderId},退款失败`);
+        }
+        if((index+1) < this.tkSelectList.length) {
+          this.refundSubmitAction = this.tkSelectList[index+1].orderId
+          setTimeout(() => {
+            this.refundSubmitFun(index+1)
+          }, 3000);
+        }else {
+          this.tkDialogVisibleLoading = false
+          if(this.refundSubmitError.length == 0) {
+            this.$message({
+              message: '全部退款成功!!!',
+              type: 'success'
+            });
+            // this.handleCloseTk()
+          }
+        }
+      } catch (error) {
+        console.error(index+"===error====",error)
+        this.refundSubmitAction = null
+        this.refundSubmitError.push(this.tkSelectList[index].orderId)
+        this.$message.error(`订单号:${this.tkSelectList[index].orderId},退款失败`);
+        if((index+1) < this.tkSelectList.length) {
+          this.refundSubmitAction = this.tkSelectList[index+1].orderId
+          setTimeout(() => {
+            this.refundSubmitFun(index+1)
+          }, 3000);
+        }else {
+          this.tkDialogVisibleLoading = false
+        }
+      }
+    },
+    /** 再次 批量退票 */
+    async moreRefundSubmitFun(index) {
+      try {
+        this.refundSubmitError = []
+        this.tkDialogVisibleLoading = true
+        this.refundSubmitAction = this.refundSubmitErrorList[index].orderId
+        let res = await refundSubmitApi({
+          ...this.refundSubmitErrorList[index]
+        })
+        this.refundSubmitAction = null
+        if(res.code == 200) {
+          this.refundSubmitSuccess.push(this.refundSubmitErrorList[index].orderId)
+        }else {
+          this.refundSubmitError.push(this.refundSubmitErrorList[index].orderId)
+          this.$message.error(`订单号:${this.refundSubmitErrorList[index].orderId},退款失败`);
+        }
+        if((index+1) < this.refundSubmitErrorList.length) {
+          this.refundSubmitAction = this.refundSubmitErrorList[index+1].orderId
+          setTimeout(() => {
+            this.refundSubmitFun(index+1)
+          }, 3000);
+        }else {
+          this.tkDialogVisibleLoading = false
+          if(this.refundSubmitErrorList.length == 0) {
+            this.$message({
+              message: '全部退款成功!!!',
+              type: 'success'
+            });
+            // this.handleCloseTk()
+          }
+        }
+      } catch (error) {
+        console.error(index+"===error====",error)
+        this.refundSubmitAction = null
+        this.refundSubmitError.push(this.refundSubmitErrorList[index].orderId)
+        this.$message.error(`订单号:${this.refundSubmitErrorList[index].orderId},退款失败`);
+        if((index+1) < this.refundSubmitErrorList.length) {
+          this.refundSubmitAction = this.refundSubmitErrorList[index+1].orderId
+          setTimeout(() => {
+            this.refundSubmitFun(index+1)
+          }, 3000);
+        }else {
+          this.tkDialogVisibleLoading = false
+        }
+      }
+    },
+    /**  退款状态  */
+    refundSubmitStatus(row){
+      
+    },
+    /**  选择 */
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    /**  是否可用 */
+    isSelectableFun(row, index){
+      return row.status == 3 || row.status == 6
+    },
+    handleCloseTk(formName){
+      console.log('dsfsdfsdf')
+      this.tkDialogVisible = false
+      if(this.$refs.tkRuleForm) {
+        this.$refs.tkRuleForm.resetFields()
+      }
+      this.getList();
+    }
+  }
+};
+</script>