david 2 лет назад
Родитель
Сommit
aefa43a8c6
4 измененных файлов с 252 добавлено и 0 удалено
  1. 22 0
      src/api/shop.js
  2. 10 0
      src/router/index.js
  3. 107 0
      src/views/shop/flow-remain-pv.vue
  4. 113 0
      src/views/shop/remain-pv.vue

+ 22 - 0
src/api/shop.js

@@ -106,6 +106,28 @@ export function orderShopList(query) {
   })
 }
 
+// 剩余bv流水列表
+export function flowRemainPvList(query) {
+  return request({
+    url: '/v1/shop/flow-remain-pv',
+    method: 'get',
+    data: query,
+    params: query
+  })
+}
+
+//shop/remain-pv
+export function remainPv(query) {
+  return request({
+    url: '/v1/shop/remain-pv',
+    method: 'get',
+    data: query,
+    params: query
+  })
+}
+
+
+
 
 
 

+ 10 - 0
src/router/index.js

@@ -172,6 +172,16 @@ export const constantRoutes = [
         component: () => import('@/views/shop/order-shop-list'),
         name: 'shop_order_shop-list',
       },
+      {
+        path: '/shop/flow-remain-pv', // 剩余BV流水
+        component: () => import('@/views/shop/flow-remain-pv'),
+        name: 'shop_flow-remain-pv',
+      },
+      {
+        path: '/shop/remain-pv',
+        component: () => import('@/views/shop/remain-pv'),
+        name: 'shop_remain-pv',
+      },
     ]
   },
   {

+ 107 - 0
src/views/shop/flow-remain-pv.vue

@@ -0,0 +1,107 @@
+<template>
+    <div v-loading="loading">
+      <div class="white-box">
+        <div class="filter-box">
+          <filter-user :filter-types="filterTypes" @select-value="handleFilterUser"></filter-user>
+        </div>
+        <el-table class="table-box" ref="multipleTable" :data="tableData" stripe style="width: 100%;" :height="tool.getTableHeight()">
+          <el-table-column v-for="(tableHeader, key) in tableHeaders" :key="key" :label="tableHeader.header"  :prop="tableHeader.other.prop ? tableHeader.other.prop : null">
+            <template slot-scope="scope">
+              <template v-if="scope.row[tableHeader.index].other.tag" >
+                <el-tag :type="scope.row[tableHeader.index].other.tag.type ? scope.row[tableHeader.index].other.tag.type : null" :size="scope.row[tableHeader.index].other.tag.size ? scope.row[tableHeader.index].other.tag.size : null" :class="scope.row[tableHeader.index].other.tag.class ? scope.row[tableHeader.index].other.tag.class : null" >{{scope.row[tableHeader.index].value}}</el-tag>
+              </template>
+              <template v-else>
+                <div v-html="scope.row[tableHeader.index].value"></div>
+              </template>
+            </template>
+          </el-table-column>
+        </el-table>
+        <div class="white-box-footer">
+          <pagination :total="totalCount" :page_size="pageSize" @size-change="handleSizeChange" @current-change="handleCurrentChange"></pagination>
+        </div>
+      </div>
+    </div>
+  </template>
+  <script>
+  import tool from '@/utils/tool'
+  import baseInfo from '@/utils/baseInfo'
+  import FilterUser from '@/components/FilterUser'
+  import permission from '@/utils/permission'
+  import Pagination from '@/components/Pagination'
+  import filterHelper from '@/utils/filterHelper'
+  import { flowRemainPvList } from '@/api/shop'
+
+  export default {
+    name: 'shop_flow-remain-pv',
+    components: {FilterUser, Pagination},
+    mounted () {
+      this.getData()
+    },
+    data () {
+      return {
+        tableHeaders: null,
+        tableData: null,
+        loading: true,
+        multipleSelection: [],
+        currentPage: 1,
+        totalPages: 1,
+        totalCount: 1,
+        pageSize: 20,
+        tool: tool,
+        permission: permission,
+        baseDecLevels: baseInfo.decLevels(),
+        baseEmpLevels: baseInfo.empLevels(),
+        filterTypes: null,
+        filterModel: {}
+      }
+    },
+    methods: {
+      handleCurrentChange (page) {
+        this.getData(page, this.pageSize)
+      },
+      handleSizeChange (pageSize) {
+        this.getData(this.currentPage, pageSize)
+      },
+      handleFilterUser (filterData) {
+        filterHelper.handleFilterUser(this, filterData)
+      },
+      getData (page, pageSize) {
+        let filterData = this.filterModel
+        let vueObj=this
+        const paramsData = Object.assign({
+        page: (page === null || page == undefined) ? 1 : page,
+        pageSize: (pageSize === null || pageSize == undefined) ? vueObj.pageSize : pageSize
+        }, filterData)
+        flowRemainPvList(paramsData).then(response => {
+            vueObj.tableHeaders = response.data.columnsShow ? response.data.columnsShow : []
+            vueObj.tableData = response.data.list
+            vueObj.filterTypes = response.data.filterTypes
+            vueObj.currentPage = page
+            vueObj.totalPages = parseInt(response.data.totalPages)
+            vueObj.totalCount = parseInt(response.data.totalCount)
+            vueObj.pageSize = pageSize
+            this.loading = false
+        }).catch(err => {
+            this.loading = false
+            this.$message({
+                message: err,
+                type: 'error'
+            })
+        })
+      }
+    }
+  }
+  
+  </script>
+  <style scoped>
+    .table-box .el-form-item__label {
+      width: 100px;
+      color: #99a9bf;
+    }
+    .table-box .el-form-item {
+      width: 30%;
+      margin-right: 0;
+      margin-bottom: 0;
+    }
+  </style>
+  

+ 113 - 0
src/views/shop/remain-pv.vue

@@ -0,0 +1,113 @@
+<template>
+    <div v-loading="loading">
+      <div class="white-box">
+        <div class="filter-box">
+          <filter-user :filter-types="filterTypes" @select-value="handleFilterUser"></filter-user>
+        </div>
+        <el-table class="table-box" ref="multipleTable" :data="tableData" stripe style="width: 100%;" :height="tool.getTableHeight()">
+          <el-table-column v-for="(tableHeader, key) in tableHeaders" :key="key" :label="tableHeader.header" :prop="tableHeader.other.prop ? tableHeader.other.prop : null">
+            <template slot-scope="scope">
+              <template v-if="scope.row[tableHeader.index].other.tag" >
+                <el-tag :type="scope.row[tableHeader.index].other.tag.type ? scope.row[tableHeader.index].other.tag.type : null" :size="scope.row[tableHeader.index].other.tag.size ? scope.row[tableHeader.index].other.tag.size : null" :class="scope.row[tableHeader.index].other.tag.class ? scope.row[tableHeader.index].other.tag.class : null" >{{scope.row[tableHeader.index].value}}</el-tag>
+              </template>
+              <template v-else>
+                <div v-html="scope.row[tableHeader.index].value"></div>
+              </template>
+            </template>
+          </el-table-column>
+        </el-table>
+        <div class="white-box-footer">
+          <pagination :total="totalCount" :page_size="pageSize" @size-change="handleSizeChange" @current-change="handleCurrentChange"></pagination>
+        </div>
+      </div>
+    </div>
+  </template>
+  
+  <script>
+  import tool from '@/utils/tool'
+  import baseInfo from '@/utils/baseInfo'
+  import FilterUser from '@/components/FilterUser'
+  import permission from '@/utils/permission'
+  import Pagination from '@/components/Pagination'
+  import filterHelper from '@/utils/filterHelper'
+  import { remainPv } from '@/api/shop'
+  
+  export default {
+    name: 'shop_remain-pv',
+    components: {FilterUser, Pagination},
+    mounted () {
+      this.getData()
+    },
+    data () {
+      return {
+        tableHeaders: null,
+        tableData: null,
+        loading: true,
+        multipleSelection: [],
+        currentPage: 1,
+        totalPages: 1,
+        totalCount: 1,
+        pageSize: 20,
+        tool: tool,
+        permission: permission,
+        baseDecLevels: baseInfo.decLevels(),
+        baseEmpLevels: baseInfo.empLevels(),
+        filterTypes: null,
+        filterModel: {}
+      }
+    },
+    methods: {
+      handleCurrentChange (page) {
+        this.getData(page, this.pageSize)
+      },
+      handleSizeChange (pageSize) {
+        this.getData(this.currentPage, pageSize)
+      },
+      handleFilterUser (filterData) {
+        filterHelper.handleFilterUser(this, filterData)
+      },
+      getData (page, pageSize) {
+        let filterData = this.filterModel
+        let vueObj=this
+        const paramsData = Object.assign({
+        page: (page === null || page == undefined) ? 1 : page,
+        pageSize: (pageSize === null || pageSize == undefined) ? vueObj.pageSize : pageSize
+        }, filterData)
+        remainPv(paramsData).then(response => {
+            vueObj.tableHeaders = response.data.columnsShow ? response.data.columnsShow : []
+            vueObj.tableData = response.data.list
+            vueObj.filterTypes = response.data.filterTypes
+            vueObj.currentPage = page
+            vueObj.totalPages = parseInt(response.data.totalPages)
+            vueObj.totalCount = parseInt(response.data.totalCount)
+            vueObj.pageSize = pageSize
+            this.loading = false
+        }).catch(err => {
+            this.loading = false
+            this.$message({
+                message: err,
+                type: 'error'
+            })
+        })
+        
+        // network.getPageData(this, 'shop/remain-pv', page, pageSize, this.filterModel, response => {
+        //   this.filterTypes = response.filterTypes
+        // })
+      }
+    }
+  }
+  
+  </script>
+  
+  <style scoped>
+    .table-box .el-form-item__label {
+      width: 100px;
+      color: #99a9bf;
+    }
+    .table-box .el-form-item {
+      width: 30%;
+      margin-right: 0;
+      margin-bottom: 0;
+    }
+  </style>
+