|
@@ -1,142 +1,154 @@
|
|
|
<template>
|
|
|
- <div class="app-container app-container-me">
|
|
|
- <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
|
|
|
- <el-form-item label="订单号" label-width="80px">
|
|
|
- <el-input
|
|
|
- v-model="queryParams.orderId"
|
|
|
- placeholder="请输入订单号"
|
|
|
- clearable
|
|
|
- style="width: 240px;"
|
|
|
- @keyup.enter.native="handleQuery"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="取票码" label-width="80px">
|
|
|
- <el-input
|
|
|
- v-model="queryParams.qrcodeNo"
|
|
|
- placeholder="请输入取票码"
|
|
|
- clearable
|
|
|
- style="width: 240px;"
|
|
|
- @keyup.enter.native="handleQuery"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="购票人手机号:" label-width="110px" prop="saleMobile">
|
|
|
- <el-input
|
|
|
- v-model="queryParams.saleMobile"
|
|
|
- placeholder="请输入购票人手机号"
|
|
|
- clearable
|
|
|
- style="width: 240px;"
|
|
|
- @keyup.enter.native="handleQuery"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="身份证号:" label-width="120px" prop="idcard">
|
|
|
- <el-input
|
|
|
- v-model="queryParams.idcard"
|
|
|
- placeholder="请输入身份证号"
|
|
|
- clearable
|
|
|
- style="width: 240px;"
|
|
|
- @keyup.enter.native="handleQuery"
|
|
|
- >
|
|
|
- <el-button slot="append" :loading="idcardLoading" size="mini" type="primary" @click="readCert">{{ idcardLoading ? '识别中':'识别' }}</el-button>
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="座位号" label-width="80px">
|
|
|
- <el-input
|
|
|
- v-model="queryParams.seatName"
|
|
|
- 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"
|
|
|
+ <div class="app-container app-container-me" :style="{'--q-height':qHeight}">
|
|
|
+ <div class="app-container-query" ref="queryFormBox">
|
|
|
+ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
|
|
|
+ <el-form-item label="订单号" label-width="80px">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.orderId"
|
|
|
+ placeholder="请输入订单号"
|
|
|
+ clearable
|
|
|
+ style="width: 240px;"
|
|
|
+ @keyup.enter.native="handleQuery"
|
|
|
/>
|
|
|
- </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-col :span="1.5">
|
|
|
- <el-button
|
|
|
- :disabled="multipleSelection.length == 0"
|
|
|
- type="primary"
|
|
|
- plain
|
|
|
- icon="el-icon-plus"
|
|
|
- size="mini"
|
|
|
- @click="openMultipleSelectionVisible"
|
|
|
- v-hasPermi="['windowTicketSales:ticketingCollection:print']"
|
|
|
- >批量打印门票</el-button>
|
|
|
- </el-col>
|
|
|
- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <el-table
|
|
|
- ref="tables"
|
|
|
- v-loading="loading"
|
|
|
- :data="dataList"
|
|
|
- @selection-change="handleSelectionChange"
|
|
|
- border>
|
|
|
- <el-table-column type="selection" width="55"></el-table-column>
|
|
|
- <el-table-column label="序号" align="center" type="index" width="50"></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" prop="saleMobile" />
|
|
|
- <el-table-column label="取票码" align="center" prop="qrcodeNo" />
|
|
|
- <el-table-column label="订单号" align="center" prop="orderId" />
|
|
|
- <el-table-column label="剧目名称" align="center" prop="performName" />
|
|
|
- <el-table-column label="票务名称" align="center" prop="goodsName" />
|
|
|
- <el-table-column label="座位信息" align="center" prop="seatName" />
|
|
|
- <el-table-column label="座位类型" align="center" prop="seatTypeName" />
|
|
|
- <el-table-column label="节目播出日期" align="center" prop="performDate" />
|
|
|
- <el-table-column label="下单时间" align="center" prop="createTime" />
|
|
|
- <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="status">
|
|
|
- <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="printNum" />
|
|
|
- <el-table-column label="操作" align="center" fixed="right" width="80" class-name="small-padding fixed-width">
|
|
|
- <template slot-scope="scope">
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="取票码" label-width="80px">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.qrcodeNo"
|
|
|
+ placeholder="请输入取票码"
|
|
|
+ clearable
|
|
|
+ style="width: 240px;"
|
|
|
+ @keyup.enter.native="handleQuery"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="购票人手机号:" label-width="110px" prop="saleMobile">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.saleMobile"
|
|
|
+ placeholder="请输入购票人手机号"
|
|
|
+ clearable
|
|
|
+ style="width: 240px;"
|
|
|
+ @keyup.enter.native="handleQuery"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="身份证号:" label-width="120px" prop="idcard">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.idcard"
|
|
|
+ placeholder="请输入身份证号"
|
|
|
+ clearable
|
|
|
+ style="width: 240px;"
|
|
|
+ @keyup.enter.native="handleQuery"
|
|
|
+ >
|
|
|
+ <el-button slot="append" :loading="idcardLoading" size="mini" type="primary" @click="readCert">{{ idcardLoading ? '识别中':'识别' }}</el-button>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="座位号" label-width="80px">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.seatName"
|
|
|
+ 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>
|
|
|
+ <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>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="app-container-table-box">
|
|
|
+ <el-row :gutter="10" class="mb8">
|
|
|
+ <el-col :span="1.5">
|
|
|
<el-button
|
|
|
- size="mini"
|
|
|
- type="text"
|
|
|
- @click="handleOpen([scope.row])"
|
|
|
- v-hasPermi="['windowTicketSales:ticketingCollection:print']"
|
|
|
- >打印门票</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <template slot="empty">
|
|
|
- <div>
|
|
|
- <span>未查询到相关订单,请重新输入!</span>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table>
|
|
|
- <pagination
|
|
|
- v-show="total>0"
|
|
|
- :total="total"
|
|
|
- :page.sync="queryParams.pageNum"
|
|
|
- :limit.sync="queryParams.pageSize"
|
|
|
- @pagination="getList"
|
|
|
- />
|
|
|
+ :disabled="multipleSelection.length == 0"
|
|
|
+ type="primary"
|
|
|
+ plain
|
|
|
+ icon="el-icon-plus"
|
|
|
+ size="mini"
|
|
|
+ @click="openMultipleSelectionVisible"
|
|
|
+ v-hasPermi="['windowTicketSales:ticketingCollection:print']"
|
|
|
+ >批量打印门票</el-button>
|
|
|
+ </el-col>
|
|
|
+ <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
+ </el-row>
|
|
|
+ <div class="app-container-table-info">
|
|
|
+ <el-table
|
|
|
+ ref="tables"
|
|
|
+ height="100%"
|
|
|
+ v-loading="loading"
|
|
|
+ :data="dataList"
|
|
|
+ @selection-change="handleSelectionChange"
|
|
|
+ @sort-change="sortChangeFun"
|
|
|
+ border>
|
|
|
+ <el-table-column type="selection" width="55"></el-table-column>
|
|
|
+ <el-table-column label="序号" align="center" type="index" width="50"></el-table-column>
|
|
|
+ <el-table-column label="姓名" align="center" prop="name" />
|
|
|
+ <el-table-column label="身份证号" align="center" width="150" prop="idcard" />
|
|
|
+ <el-table-column label="购票人手机号" align="center" width="100" prop="saleMobile" />
|
|
|
+ <el-table-column label="取票码" align="center" width="100" prop="qrcodeNo" />
|
|
|
+ <el-table-column label="订单号" align="center" width="150" prop="orderId" />
|
|
|
+ <el-table-column label="剧目名称" align="center" width="100" prop="performName" />
|
|
|
+ <el-table-column label="票务名称" align="center" width="220" prop="goodsName" />
|
|
|
+ <el-table-column label="座位信息" align="center" width="100" prop="seatName" />
|
|
|
+ <el-table-column label="座位类型" align="center" width="150" prop="seatTypeName" />
|
|
|
+ <el-table-column label="节目播出日期" align="center" width="100" prop="performDate" />
|
|
|
+ <el-table-column label="下单时间" align="center" width="200" prop="createTime" />
|
|
|
+ <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="status">
|
|
|
+ <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="printNum" />
|
|
|
+ <el-table-column label="操作" align="center" fixed="right" width="80" class-name="small-padding fixed-width">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ @click="handleOpen([scope.row])"
|
|
|
+ v-hasPermi="['windowTicketSales:ticketingCollection:print']"
|
|
|
+ >打印门票</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="打印顺序" sortable="custom" align="center" width="100px" prop="printSortId" />
|
|
|
+ <el-table-column label="优先级" sortable="custom" align="center" width="100px" prop="sortIndex" />
|
|
|
+ <template slot="empty">
|
|
|
+ <div>
|
|
|
+ <span>未查询到相关订单,请重新输入!</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table>
|
|
|
+ <pagination
|
|
|
+ v-show="total>0"
|
|
|
+ :total="total"
|
|
|
+ :page-sizes="[100, 200, 300, 400]"
|
|
|
+ :page-size="queryParams.pageSize"
|
|
|
+ :page.sync="queryParams.pageNum"
|
|
|
+ :limit.sync="queryParams.pageSize"
|
|
|
+ @pagination="getList"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
<!-- 批量打印顺序 -->
|
|
|
<el-dialog
|
|
|
title="批量打印顺序"
|
|
@@ -224,7 +236,7 @@
|
|
|
// 查询参数
|
|
|
queryParams: {
|
|
|
pageNum: 1,
|
|
|
- pageSize: 10,
|
|
|
+ pageSize: 100,
|
|
|
// type: undefined
|
|
|
//orderStatus: "3"
|
|
|
},
|
|
@@ -250,6 +262,7 @@
|
|
|
dialogVisibleLoading: false,
|
|
|
|
|
|
idcardLoading: false,
|
|
|
+ qHeight: '0px',
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
@@ -261,6 +274,15 @@
|
|
|
//this.getList();
|
|
|
//this.getPrintListApi()
|
|
|
},
|
|
|
+ mounted() {
|
|
|
+ this.resizeObserver = new ResizeObserver(entries => {
|
|
|
+ for (let entry of entries) {
|
|
|
+ const { width, height } = entry.contentRect;
|
|
|
+ this.qHeight = height + 'px'
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.resizeObserver.observe(this.$refs.queryFormBox);
|
|
|
+ },
|
|
|
activated() {
|
|
|
if(this.$route.query&&this.$route.query.orderId) {
|
|
|
this.$set(this.queryParams,'orderId',this.$route.query.orderId)
|
|
@@ -273,7 +295,13 @@
|
|
|
this.loading = true;
|
|
|
pageList(this.queryParams)
|
|
|
.then(response => {
|
|
|
- this.dataList = response.data.rows;
|
|
|
+ let list = response.data.rows;
|
|
|
+ list.forEach((item,index)=>{
|
|
|
+ let num = item.printSortId == '按优先级出票' ? index : item.printSortId
|
|
|
+ item.printSortId = index
|
|
|
+ item.sortIndex = index
|
|
|
+ })
|
|
|
+ this.dataList = list
|
|
|
this.total = response.data.total;
|
|
|
this.loading = false;
|
|
|
console.log("this.multipleSelection=====",this.multipleSelection)
|
|
@@ -506,8 +534,87 @@
|
|
|
this.idcardLoading = false
|
|
|
//return result;
|
|
|
console.log(result,obj)
|
|
|
+ },
|
|
|
+ sortChangeFun (row) {
|
|
|
+ console.log("row=====",row)
|
|
|
+ if(this.dataList.length == 0) return
|
|
|
+ let list = JSON.parse(JSON.stringify(this.dataList))
|
|
|
+ if(row.order == 'descending') {
|
|
|
+ list.sort((a,b)=>{
|
|
|
+ return a[row.prop] - b[row.prop]
|
|
|
+ })
|
|
|
+ }else {
|
|
|
+ list.sort((a,b)=>{
|
|
|
+ return b[row.prop] - a[row.prop]
|
|
|
+ })
|
|
|
}
|
|
|
+ this.dataList = list
|
|
|
}
|
|
|
+ },
|
|
|
+
|
|
|
|
|
|
};
|
|
|
- </script>
|
|
|
+ </script>
|
|
|
+ <style lang="scss" scoped>
|
|
|
+
|
|
|
+ .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;
|
|
|
+ }
|
|
|
+.app-container {
|
|
|
+ height: calc( 100vh - 110px );
|
|
|
+ box-sizing: border-box;
|
|
|
+}
|
|
|
+.app-container-query {
|
|
|
+
|
|
|
+}
|
|
|
+.app-container-table-box {
|
|
|
+ height: calc( 100% - var(--q-height) );
|
|
|
+ .app-container-table-info {
|
|
|
+ height: calc( 100% - 100px );
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.upload-box {
|
|
|
+ ::v-deep .el-upload--picture-card {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+::v-deep .avatar-uploader .el-upload {
|
|
|
+ border: 1px dashed #d9d9d9;
|
|
|
+ border-radius: 6px;
|
|
|
+ cursor: pointer;
|
|
|
+ position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+ }
|
|
|
+ ::v-deep .avatar-uploader .el-upload:hover {
|
|
|
+ border-color: #409EFF;
|
|
|
+ }
|
|
|
+ ::v-deep .avatar-uploader-icon {
|
|
|
+ font-size: 28px;
|
|
|
+ color: #8c939d;
|
|
|
+ width: 100px;
|
|
|
+ height: 100px;
|
|
|
+ line-height: 100px;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ ::v-deep .avatar {
|
|
|
+ width: 100px;
|
|
|
+ height: 100px;
|
|
|
+ display: block;
|
|
|
+ }
|
|
|
+</style>
|