dailyIncome.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <!--
  2. * @Description:
  3. * @Author: shipeng
  4. * @Date: 2025-06-10 日收入报表开发
  5. -->
  6. <template>
  7. <div class="app-container">
  8. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="60px">
  9. <el-form-item label="日期" required>
  10. <el-date-picker
  11. v-model="queryParams.performDate"
  12. type="date"
  13. value-format="yyyy-MM-dd"
  14. placeholder="日期">
  15. </el-date-picker>
  16. </el-form-item>
  17. <el-form-item>
  18. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  19. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  20. </el-form-item>
  21. </el-form>
  22. <el-row :gutter="10" class="mb8" style="margin-left: 0; margin-top: 10px">
  23. <el-button
  24. type="primary"
  25. size="mini"
  26. icon="el-icon-download"
  27. :disabled="dataList.length === 0"
  28. v-hasPermi="['daily:income:export']"
  29. @click="handleExport"
  30. v-loading.fullscreen.lock="handleExportLoading"
  31. element-loading-text="正在拼命生成数据中..."
  32. element-loading-spinner="el-icon-loading"
  33. element-loading-background="rgba(0, 0, 0, 0.5)"
  34. >导出excel</el-button>
  35. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  36. </el-row>
  37. <el-table ref="tables" v-loading="loading" :data="dataList" max-height="650px" border>
  38. <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
  39. <!-- <el-table-column label="剧目名称" align="center" prop="performName" />
  40. <el-table-column label="票务名称" align="center" prop="goodsName" /> -->
  41. <el-table-column label="场次日期" align="center" width="100">
  42. <template slot-scope="scope">
  43. <span>{{ scope.row.performDate }}</span>
  44. </template>
  45. </el-table-column>
  46. <el-table-column label="场次" align="center" width="110">
  47. <template slot-scope="scope">
  48. <span>{{ scope.row.performTimeStart }} -- {{ scope.row.performTimeEnd }}</span>
  49. </template>
  50. </el-table-column>
  51. <el-table-column label="座位类型" align="center" prop="seatTypeName" width="120" />
  52. <el-table-column label="窗口" align="center" prop="winTotal" />
  53. <el-table-column label="小程序" align="center" prop="microAppTotal" />
  54. <el-table-column label="分销" align="center" prop="retailTotal" />
  55. <el-table-column label="自助机" align="center" prop="selfTotal" />
  56. <el-table-column label="直客小计" align="center" prop="directSaleTotal" />
  57. <el-table-column label="美团" align="center" prop="meituanTotal" />
  58. <el-table-column label="抖音" align="center" prop="duoyinTotal" />
  59. <el-table-column label="携程" align="center" prop="xiechenTotal" />
  60. <el-table-column label="猫眼" align="center" prop="maoyanTotal" />
  61. <el-table-column label="OTA小计" align="center" prop="otaSaleTotal" />
  62. <el-table-column label="大客户" align="center" prop="maxCustomerSaleTotal" />
  63. <el-table-column label="旅行社&红培" align="center" prop="travelAgencySaleTotal" />
  64. <el-table-column label="研学" align="center" prop="studySaleTotal" />
  65. <el-table-column label="党校" align="center" prop="partySchoolSaleTotal" />
  66. <el-table-column label="团购小计" align="center" prop="groupBuyTotal" />
  67. <el-table-column label="合计" align="center" prop="buySaleTotal" />
  68. <el-table-column label="推广票" align="center" prop="promotionTicketSaleTotal" />
  69. <el-table-column label="总计" align="center" prop="saleTotal" />
  70. </el-table>
  71. </div>
  72. </template>
  73. <script>
  74. import { dayIncomeCount, dayReportExport } from '@/api/statisticalReport/statistics'
  75. import { exportExcel } from '@/utils/exportexcel'
  76. // import { seatPricePageList } from '@/api/distribution/ticketMr'
  77. // import { pagePerformTimeList } from "@/api/schedulingMr/schedulingMr"
  78. import moment from "moment"
  79. export default {
  80. name: "Daily",
  81. dicts: [],
  82. data() {
  83. return {
  84. // 遮罩层
  85. loading: true,
  86. // 选中数组
  87. ids: [],
  88. // 非单个禁用
  89. single: true,
  90. // 非多个禁用
  91. multiple: true,
  92. // 显示搜索条件
  93. showSearch: true,
  94. // 总条数
  95. total: 0,
  96. // 用户表格数据
  97. dataList: [],
  98. // 弹出层标题
  99. title: "",
  100. responseData: {},
  101. // 是否显示弹出层
  102. open: false,
  103. // 日期范围
  104. dateRange: [],
  105. // 查询参数
  106. queryParams: {
  107. performDate: "",
  108. },
  109. visibleStatus: false,
  110. newObj: {},
  111. visibleType: '',
  112. handleExportLoading: false,
  113. };
  114. },
  115. created() {
  116. this.$set(this.queryParams,'performDate',moment().format("yyyy-MM-DD"));
  117. this.getList();
  118. },
  119. methods: {
  120. /** 查询列表 */
  121. getList() {
  122. this.loading = true;
  123. dayIncomeCount(this.queryParams).then(response => {
  124. this.dataList = response.data.rows||[];
  125. this.total = response.data.total||0;
  126. this.loading = false;
  127. }
  128. ).catch(()=>{
  129. this.loading = false;
  130. });
  131. },
  132. // 取消按钮
  133. cancel() {
  134. this.open = false;
  135. },
  136. /** 搜索按钮操作 */
  137. handleQuery() {
  138. this.getList();
  139. },
  140. /** 重置按钮操作 */
  141. resetQuery() {
  142. this.$set(this.queryParams,'performDate',moment().format("yyyy-MM-DD"));
  143. this.handleQuery();
  144. },
  145. /**
  146. * 导出报表
  147. * @date 2022-10-24
  148. * @returns {any}
  149. */
  150. handleExport() {
  151. this.$confirm('您确定要导出当前查询的数据吗?', '提示', {
  152. confirmButtonText: '确定 ',
  153. cancelButtonText: '取消 ',
  154. type: 'warning'
  155. }).then(() => {
  156. this.handleExportLoading = true;
  157. dayReportExport(this.queryParams).then((res) => {
  158. exportExcel(res, '日收入报表', '.xlsx');
  159. this.handleExportLoading = false;
  160. })
  161. .catch(() => {
  162. this.handleExportLoading = false;
  163. });
  164. }).catch(() => {
  165. this.$message.info('您已取消导出!');
  166. });
  167. },
  168. }
  169. };
  170. </script>
  171. <style lang="scss" scoped>
  172. </style>