Browse Source

1. 完善

MONSTER-ygh 1 year ago
parent
commit
fa1af65f2f

+ 40 - 9
src/views/statisticalReport/seatInventory.vue

@@ -67,7 +67,6 @@
         <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
         <el-table-column label="剧目名称" align="center" prop="performName" />
         <el-table-column label="票务名称" align="center" prop="goodsName" />
-        <el-table-column label="座位类型" align="center" prop="seatTypeName" />
         <el-table-column label="场次日期" align="center">
           <template slot-scope="scope">
             <span>{{ scope.row.performDate }}</span>
@@ -78,22 +77,54 @@
             <span>{{ scope.row.performTimeStart }} -- {{ scope.row.performTimeEnd }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="总库存" align="center">
+        <el-table-column label="座位类型" align="center" prop="seatTypeName" />
+        <el-table-column label="座位总数" align="center">
           <template slot-scope="scope">
             <span>{{ scope.row.total }}张</span>
           </template>
         </el-table-column>
-        <el-table-column label="已售数量" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.saleTotal }}张</span>
-          </template>
+        <el-table-column label="自营" align="center">
+          <el-table-column
+            prop="province"
+            label="小程序">
+          </el-table-column>
+          <el-table-column
+            prop="province1"
+            label="团购">
+          </el-table-column>
+          <el-table-column
+            prop="province2"
+            label="窗口">
+          </el-table-column>
+        </el-table-column>
+        <el-table-column label="OTA" align="center">
+          <el-table-column
+            prop="province3"
+            label="美团">
+          </el-table-column>
+          <el-table-column
+            prop="province4"
+            label="携程">
+          </el-table-column>
+          <el-table-column
+            prop="province5"
+            label="猫眼">
+          </el-table-column>
+          <el-table-column
+            prop="province6"
+            label="抖音">
+          </el-table-column>
+          <el-table-column
+            prop="province7"
+            label="去哪儿">
+          </el-table-column>
         </el-table-column>
-        <el-table-column label="已核销数量" align="center">
+        <el-table-column label="已售小计" align="center">
           <template slot-scope="scope">
-            <span>{{ scope.row.usedTotal }}张</span>
+            <span>{{ (scope.row.total - scope.row.saleTotal) >= 0 ? (scope.row.total - scope.row.saleTotal) : '' }}张</span>
           </template>
         </el-table-column>
-        <el-table-column label="库存数量" align="center">
+        <el-table-column label="剩余" align="center">
           <template slot-scope="scope">
             <span>{{ (scope.row.total - scope.row.saleTotal) >= 0 ? (scope.row.total - scope.row.saleTotal) : '' }}张</span>
           </template>

+ 287 - 257
src/views/statisticalReport/sessionInventory.vue

@@ -1,270 +1,300 @@
 <template>
-    <div class="app-container">
-      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
-        <el-form-item label="票务管理:">
-          <el-select
-            v-model="queryParams.goodsId"
-            placeholder="票务管理"
-            clearable
-            @change="goodsChangeEven"
-            style="width: 100%;"
-          >
-            <el-option
-              v-for="dict in ticketList"
-              :key="dict.id"
-              :label="dict.goodsName"
-              :value="dict.goodsId"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="座位类型:">
-          <el-select
-            v-model="queryParams.seatTypeId"
-            placeholder="座位类型"
-            clearable
-            style="width: 100%;"
-          >
-            <el-option
-              v-for="dict in seatList"
-              :key="dict.seatTypeId"
-              :label="dict.seatTypeName"
-              :value="dict.seatTypeId"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="场次日期">
-          <el-date-picker
-            v-model="queryParams.time"
-            type="daterange"
-            value-format="yyyy-MM-dd"
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期">
-          </el-date-picker>
-        </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"  style="margin-left: 0; margin-top: 10px">
-        <el-button
-          type="primary"
-          size="mini"
-          icon="el-icon-download"
-          :disabled="tableData.length === 0"
-          v-hasPermi="['statisticalReport:sessionInventory: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>
-        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-      </el-row>
-  
-      <el-table ref="tables" v-loading="loading" :data="dataList" border>
-        <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
-        <el-table-column label="剧目名称" align="center" prop="performName" />
-        <el-table-column label="票务名称" align="center" prop="goodsName" />
-        <el-table-column label="座位类型" align="center" prop="seatTypeName" />
-        <el-table-column label="场次日期" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.performDate }}</span>
-          </template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
+      <el-form-item label="票务管理:">
+        <el-select
+          v-model="queryParams.goodsId"
+          placeholder="票务管理"
+          clearable
+          @change="goodsChangeEven"
+          style="width: 100%;"
+        >
+          <el-option
+            v-for="dict in ticketList"
+            :key="dict.id"
+            :label="dict.goodsName"
+            :value="dict.goodsId"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="座位类型:">
+        <el-select
+          v-model="queryParams.seatTypeId"
+          placeholder="座位类型"
+          clearable
+          style="width: 100%;"
+        >
+          <el-option
+            v-for="dict in seatList"
+            :key="dict.seatTypeId"
+            :label="dict.seatTypeName"
+            :value="dict.seatTypeId"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="场次日期">
+        <el-date-picker
+          v-model="queryParams.time"
+          type="daterange"
+          value-format="yyyy-MM-dd"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期">
+        </el-date-picker>
+      </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"  style="margin-left: 0; margin-top: 10px">
+      <el-button
+        type="primary"
+        size="mini"
+        icon="el-icon-download"
+        :disabled="tableData.length === 0"
+        v-hasPermi="['statisticalReport:seatInventory: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>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table ref="tables" v-loading="loading" :data="dataList" border>
+      <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
+      <el-table-column label="剧目名称" align="center" prop="performName" />
+      <el-table-column label="票务名称" align="center" prop="goodsName" />
+      <el-table-column label="场次日期" align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.row.performDate }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="场次" 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="seatTypeName" />
+      <el-table-column label="座位总数" align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.row.total }}张</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="自营" align="center">
+        <el-table-column
+          prop="province"
+          label="小程序">
         </el-table-column>
-        <el-table-column label="场次" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.performTimeStart }} -- {{ scope.row.performTimeEnd }}</span>
-          </template>
+        <el-table-column
+          prop="province1"
+          label="团购">
         </el-table-column>
-        <el-table-column label="总库存" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.total }}张</span>
-          </template>
+        <el-table-column
+          prop="province2"
+          label="窗口">
         </el-table-column>
-        <el-table-column label="已售数量" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.saleTotal }}张</span>
-          </template>
+      </el-table-column>
+      <el-table-column label="OTA" align="center">
+        <el-table-column
+          prop="province3"
+          label="美团">
         </el-table-column>
-        <el-table-column label="已核销数量" align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.usedTotal }}张</span>
-          </template>
+        <el-table-column
+          prop="province4"
+          label="携程">
         </el-table-column>
-        <el-table-column label="库存数量" align="center">
-          <template slot-scope="scope">
-            <span>{{ (scope.row.total - scope.row.saleTotal) >= 0 ? (scope.row.total - scope.row.saleTotal) : '' }}张</span>
-          </template>
+        <el-table-column
+          prop="province5"
+          label="猫眼">
         </el-table-column>
-      </el-table>
-  
-      <pagination
-        v-show="total>0"
-        :total="total"
-        :page.sync="queryParams.pageNum"
-        :limit.sync="queryParams.pageSize"
-        @pagination="getList"
-      />
-  
-    </div>
-  </template>
-  
-  <script>
-  
-  import { performTimeCount, downTimeCountListXls } from '@/api/statistics'
-  import { exportExcel } from '@/utils/exportexcel'
-  import { seatPricePageList } from '@/api/distribution/ticketMr'
-  export default {
-    name: "agreement",
-    dicts: ['agreement_type'],
-    data() {
-      return {
-        // 遮罩层
-        loading: true,
-        // 选中数组
-        ids: [],
-        // 非单个禁用
-        single: true,
-        // 非多个禁用
-        multiple: true,
-        // 显示搜索条件
-        showSearch: true,
-        // 总条数
-        total: 0,
-        // 用户表格数据
-        dataList: null,
-        // 弹出层标题
-        title: "",
-  
-        // 是否显示弹出层
-        open: false,
-        // 日期范围
-        dateRange: [],
-        // 查询参数
-        queryParams: {
-          pageNum: 1,
-          pageSize: 10,
-        },
-        visibleStatus: false,
-        newObj: {},
-        visibleType: '',
-        handleExportLoading: false,
-        tableData: {},
-        ticketList: [],
-        seatList: [],
-      };
+        <el-table-column
+          prop="province6"
+          label="抖音">
+        </el-table-column>
+        <el-table-column
+          prop="province7"
+          label="去哪儿">
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="已售小计" align="center">
+        <template slot-scope="scope">
+          <span>{{ (scope.row.total - scope.row.saleTotal) >= 0 ? (scope.row.total - scope.row.saleTotal) : '' }}张</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="剩余" align="center">
+        <template slot-scope="scope">
+          <span>{{ (scope.row.total - scope.row.saleTotal) >= 0 ? (scope.row.total - scope.row.saleTotal) : '' }}张</span>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+  </div>
+</template>
+
+<script>
+
+import { performTimeCount, downTimeCountListXls } from '@/api/statistics'
+import { exportExcel } from '@/utils/exportexcel'
+import { seatPricePageList } from '@/api/distribution/ticketMr'
+export default {
+  name: "agreement",
+  dicts: ['agreement_type'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      dataList: null,
+      // 弹出层标题
+      title: "",
+
+      // 是否显示弹出层
+      open: false,
+      // 日期范围
+      dateRange: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      visibleStatus: false,
+      newObj: {},
+      visibleType: '',
+      handleExportLoading: false,
+      tableData: {},
+      ticketList: [],
+      seatList: [],
+    };
+  },
+  created() {
+    this.getList();
+    this.ticketListApi();
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      if(this.queryParams.time){
+        this.queryParams.performStartDate = this.queryParams.time[0];
+        this.queryParams.performEndDate = this.queryParams.time[1];
+      }
+      performTimeCount(this.addDateRange(this.queryParams, this.dateRange))
+      .then(response => {
+          this.dataList = response.data.rows;
+          this.total = response.data.total;
+          this.loading = false;
+        }
+      );
     },
-    created() {
-      this.getList();
-      this.ticketListApi();
+    /** 票务列表查询 */
+    ticketListApi() {
+      this.ticketList = []
+      seatPricePageList(this.addDateRange({pageNum: 1, pageSize: 100}))
+        .then(response => {
+          let ticketItemList = []
+          response.data.rows.forEach(item => {
+            if(ticketItemList.indexOf(item.goodsId) == -1){
+              this.ticketList.push(item);
+              ticketItemList.push(item.goodsId);
+            }
+          })
+        });
     },
-    methods: {
-      /** 查询列表 */
-      getList() {
-        this.loading = true;
-        if(this.queryParams.time){
-          this.queryParams.performStartDate = this.queryParams.time[0];
-          this.queryParams.performEndDate = this.queryParams.time[1];
-        }
-        performTimeCount(this.addDateRange(this.queryParams, this.dateRange))
+    /** 座位类型列表 */
+    getSeatTypeList(obj) {
+      seatPricePageList(this.addDateRange({pageNum: 1, pageSize: 100, goodsId: obj.goodsId}))
         .then(response => {
-            this.dataList = response.data.rows;
-            this.total = response.data.total;
-            this.loading = false;
+          let ticketList = []
+          response.data.rows.forEach(item => {
+            if(ticketList.indexOf(item.seatTypeId) == -1){
+              this.seatList.push(item);
+              ticketList.push(item.seatTypeId);
+            }
+          })
+        });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+    },
+    // 票务改变事件
+    goodsChangeEven() {
+      this.seatList = [];
+      this.$set(this.queryParams, 'seatTypeId', '');
+      let selectMap = {goodsId: this.queryParams.goodsId}
+      this.getSeatTypeList(selectMap);
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.seatList = [];
+      this.$set(this.queryParams, 'time', '');
+      this.$set(this.queryParams, 'performStartDate', '');
+      this.$set(this.queryParams, 'performEndDate', '');
+      this.$set(this.queryParams, 'goodsId', '');
+      this.$set(this.queryParams, 'seatTypeId', '');
+      this.queryParams.pageNum = 1;
+      this.handleQuery();
+    },
+    /**
+     * 导出报表
+     * @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]
+            }
           }
-        );
-      },
-      /** 票务列表查询 */
-      ticketListApi() {
-        this.ticketList = []
-        seatPricePageList(this.addDateRange({pageNum: 1, pageSize: 100}))
-          .then(response => {
-            let ticketItemList = []
-            response.data.rows.forEach(item => {
-              if(ticketItemList.indexOf(item.goodsId) == -1){
-                this.ticketList.push(item);
-                ticketItemList.push(item.goodsId);
-              }
+          downTimeCountListXls(postMap)
+            .then((res) => {
+              exportExcel(res, '场次统计', '.xlsx');
+              this.handleExportLoading = false;
             })
-          });
-      },
-      /** 座位类型列表 */
-      getSeatTypeList(obj) {
-        seatPricePageList(this.addDateRange({pageNum: 1, pageSize: 100, goodsId: obj.goodsId}))
-          .then(response => {
-            let ticketList = []
-            response.data.rows.forEach(item => {
-              if(ticketList.indexOf(item.seatTypeId) == -1){
-                this.seatList.push(item);
-                ticketList.push(item.seatTypeId);
-              }
-            })
-          });
-      },
-      // 取消按钮
-      cancel() {
-        this.open = false;
-      },
-      // 票务改变事件
-      goodsChangeEven() {
-        this.seatList = [];
-        this.$set(this.queryParams, 'seatTypeId', '');
-        let selectMap = {goodsId: this.queryParams.goodsId}
-        this.getSeatTypeList(selectMap);
-      },
-      /** 搜索按钮操作 */
-      handleQuery() {
-        this.queryParams.pageNum = 1;
-        this.getList();
-      },
-      /** 重置按钮操作 */
-      resetQuery() {
-        this.dateRange = [];
-        this.seatList = [];
-        this.$set(this.queryParams, 'time', '');
-        this.$set(this.queryParams, 'performStartDate', '');
-        this.$set(this.queryParams, 'performEndDate', '');
-        this.$set(this.queryParams, 'goodsId', '');
-        this.$set(this.queryParams, 'seatTypeId', '');
-        this.queryParams.pageNum = 1;
-        this.handleQuery();
-      },
-      /**
-       * 导出报表
-       * @date 2022-10-24
-       * @returns {any}
-       */
-      handleExport() {
-        this.$confirm('您确定要导出当前查询的数据吗?', '提示', {
-          confirmButtonText: '确定 ',
-          cancelButtonText: '取消 ',
-          type: 'warning'
+            .catch(() => {
+              this.handleExportLoading = false;
+            });
         })
-          .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]
-              }
-            }
-            downTimeCountListXls(postMap)
-              .then((res) => {
-                exportExcel(res, '场次统计', '.xlsx');
-                this.handleExportLoading = false;
-              })
-              .catch(() => {
-                this.handleExportLoading = false;
-              });
-          })
-          .catch(() => {
-            this.$message.info('您已取消导出!');
-          });
-      },
-    }
-  };
-  </script>
-  
+        .catch(() => {
+          this.$message.info('您已取消导出!');
+        });
+    },
+  }
+};
+</script>