|
@@ -1,68 +1,68 @@
|
|
|
<template>
|
|
|
- <div>
|
|
|
- <ex-table
|
|
|
- v-loading="loading"
|
|
|
- :table="table"
|
|
|
- :data="tableData"
|
|
|
- :columns="table7"
|
|
|
- :page="pageInfo"
|
|
|
- :size="size"
|
|
|
- @page-curr-change="handlePageChange"
|
|
|
- @page-size-change="handleSizeChange"
|
|
|
- @screen-reset="
|
|
|
- pageInfo.curr = 1;
|
|
|
- parmValue.page = 1;
|
|
|
- searchList();
|
|
|
- "
|
|
|
- @screen-submit="
|
|
|
- pageInfo.curr = 1;
|
|
|
- parmValue.page = 1;
|
|
|
- searchList();
|
|
|
- "
|
|
|
- @selection="selection_change"
|
|
|
- >
|
|
|
- <template #table-header="{}">
|
|
|
- <div style="width: 100%">
|
|
|
- <el-row style="padding: 0 0 0 80px">
|
|
|
-
|
|
|
- <el-col :span="6" style="width: 363px;">
|
|
|
- <periodDatePickerActive
|
|
|
- :start="parmValue.start_date"
|
|
|
- :end="parmValue.end_date"
|
|
|
- :placeholder="'下单'"
|
|
|
- :width="'165px'"
|
|
|
- :size="searchSize"
|
|
|
- @timeReturned="time"
|
|
|
- />
|
|
|
- </el-col>
|
|
|
- <el-col :span="4" style="width: 66px; float: right">
|
|
|
- <el-button type="primary" style="margin-left:30px;" @click="download" :size="searchSize" class="fr">
|
|
|
- 导出
|
|
|
- </el-button>
|
|
|
- </el-col>
|
|
|
- <el-col :span="3" style="width: 66px; float: right">
|
|
|
- <el-button
|
|
|
- :size="searchSize"
|
|
|
- type="primary"
|
|
|
- style="float: right; margin-left: 5px"
|
|
|
- @click="searchList"
|
|
|
- >
|
|
|
- 刷新
|
|
|
- </el-button>
|
|
|
- </el-col>
|
|
|
- <el-col :span="4" style="width: 66px; float: right">
|
|
|
- <el-button
|
|
|
- type="warning"
|
|
|
- class="fr"
|
|
|
- :size="searchSize"
|
|
|
- @click="restSearch"
|
|
|
- >
|
|
|
- 重置
|
|
|
- </el-button>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <!-- <el-row style="padding: 10px 0 0 0">
|
|
|
-
|
|
|
+ <div>
|
|
|
+ <ex-table
|
|
|
+ v-loading="loading"
|
|
|
+ :table="table"
|
|
|
+ :data="tableData"
|
|
|
+ :columns="table7"
|
|
|
+ :page="pageInfo"
|
|
|
+ :size="size"
|
|
|
+ @page-curr-change="handlePageChange"
|
|
|
+ @page-size-change="handleSizeChange"
|
|
|
+ @screen-reset="
|
|
|
+ pageInfo.curr = 1;
|
|
|
+ parmValue.page = 1;
|
|
|
+ searchList();
|
|
|
+ "
|
|
|
+ @screen-submit="
|
|
|
+ pageInfo.curr = 1;
|
|
|
+ parmValue.page = 1;
|
|
|
+ searchList();
|
|
|
+ "
|
|
|
+ @selection="selection_change"
|
|
|
+ >
|
|
|
+ <template #table-header="{}">
|
|
|
+ <div style="width: 100%">
|
|
|
+ <el-row style="padding: 0 0 0 80px">
|
|
|
+
|
|
|
+ <el-col :span="6" style="width: 363px;">
|
|
|
+ <periodDatePickerActive
|
|
|
+ :start="parmValue.start_date"
|
|
|
+ :end="parmValue.end_date"
|
|
|
+ :placeholder="'下单'"
|
|
|
+ :width="'165px'"
|
|
|
+ :size="searchSize"
|
|
|
+ @timeReturned="time"
|
|
|
+ />
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="4" style="width: 66px; float: right">
|
|
|
+ <el-button type="primary" style="margin-left:30px;" :size="searchSize" class="fr" @click="download">
|
|
|
+ 导出
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="3" style="width: 66px; float: right">
|
|
|
+ <el-button
|
|
|
+ :size="searchSize"
|
|
|
+ type="primary"
|
|
|
+ style="float: right; margin-left: 5px"
|
|
|
+ @click="searchList"
|
|
|
+ >
|
|
|
+ 刷新
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="4" style="width: 66px; float: right">
|
|
|
+ <el-button
|
|
|
+ type="warning"
|
|
|
+ class="fr"
|
|
|
+ :size="searchSize"
|
|
|
+ @click="restSearch"
|
|
|
+ >
|
|
|
+ 重置
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <!-- <el-row style="padding: 10px 0 0 0">
|
|
|
+
|
|
|
<el-col :span="6" style="width: 363px;">
|
|
|
<periodDatePickerActive
|
|
|
:start="parmValue.start_date"
|
|
@@ -72,8 +72,8 @@
|
|
|
:size="searchSize"
|
|
|
@timeReturned="time"
|
|
|
/>
|
|
|
- </el-col>
|
|
|
- <el-col :span="4" style="width: 66px; float: right">
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="4" style="width: 66px; float: right">
|
|
|
<el-button type="primary" style="margin-left:30px;" @click="download" :size="searchSize" class="fr">
|
|
|
导出
|
|
|
</el-button>
|
|
@@ -97,54 +97,52 @@
|
|
|
>
|
|
|
重置
|
|
|
</el-button>
|
|
|
- </el-col>
|
|
|
+ </el-col>
|
|
|
</el-row> -->
|
|
|
- </div>
|
|
|
- </template>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
|
|
|
-
|
|
|
- </ex-table>
|
|
|
- </div>
|
|
|
+ </ex-table>
|
|
|
+ </div>
|
|
|
|
|
|
-
|
|
|
</template>
|
|
|
- <script>
|
|
|
-import mixinPage from "@/mixins/elPaginationHandle";
|
|
|
-import resToken from "@/mixins/resToken";
|
|
|
-import urlConfig from "@/apis/url-config";
|
|
|
-import asyncRequest from "@/apis/service/reportQuery/saleReport";
|
|
|
-import periodDatePickerActive from "../period-date-picker/main.vue";
|
|
|
-import { table7} from "./columns";
|
|
|
-import { mapGetters } from "vuex";
|
|
|
+<script>
|
|
|
+import mixinPage from '@/mixins/elPaginationHandle'
|
|
|
+import resToken from '@/mixins/resToken'
|
|
|
+import urlConfig from '@/apis/url-config'
|
|
|
+import asyncRequest from '@/apis/service/reportQuery/saleReport'
|
|
|
+import periodDatePickerActive from '../period-date-picker/main.vue'
|
|
|
+import { table7 } from './columns'
|
|
|
+import { mapGetters } from 'vuex'
|
|
|
|
|
|
export default {
|
|
|
- name: "saleReport",
|
|
|
- mixins: [mixinPage, resToken],
|
|
|
+ name: 'SaleReport',
|
|
|
components: {
|
|
|
periodDatePickerActive
|
|
|
},
|
|
|
+ mixins: [mixinPage, resToken],
|
|
|
computed: {
|
|
|
- ...mapGetters(["tablebtnSize", "searchSize", "size"]),
|
|
|
-
|
|
|
+ ...mapGetters(['tablebtnSize', 'searchSize', 'size'])
|
|
|
+
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- //选中数组
|
|
|
+ // 选中数组
|
|
|
changeList: [],
|
|
|
- //全局url
|
|
|
+ // 全局url
|
|
|
fileUrl: urlConfig.baseURL,
|
|
|
- //loading
|
|
|
+ // loading
|
|
|
loading: false,
|
|
|
- //请求参数集合
|
|
|
+ // 请求参数集合
|
|
|
parmValue: {
|
|
|
-
|
|
|
- start_date: "", //起始时间
|
|
|
- end_date: "", // 结束时间
|
|
|
+
|
|
|
+ start_date: '', // 起始时间
|
|
|
+ end_date: '', // 结束时间
|
|
|
// is_export:0,//是否导出0/1
|
|
|
|
|
|
page: 1, // 页码
|
|
|
- size: 15, // 每页显示条数
|
|
|
-
|
|
|
+ size: 15 // 每页显示条数
|
|
|
+
|
|
|
},
|
|
|
// 表格 - 数据集合
|
|
|
tableData: [],
|
|
@@ -152,166 +150,167 @@ export default {
|
|
|
table: {
|
|
|
stripe: true,
|
|
|
border: true,
|
|
|
- _defaultHeader_: ["setcol"],
|
|
|
+ _defaultHeader_: ['setcol']
|
|
|
},
|
|
|
// 表格 - 分页
|
|
|
pageInfo: {
|
|
|
size: 15,
|
|
|
curr: 1,
|
|
|
- total: 0,
|
|
|
+ total: 0
|
|
|
},
|
|
|
// 表格表头 - 列参数
|
|
|
- table7: table7,
|
|
|
- };
|
|
|
+ table7: table7
|
|
|
+ }
|
|
|
},
|
|
|
mounted() {
|
|
|
-
|
|
|
- this.searchList();
|
|
|
+ this.searchList()
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
- //初始化http请求
|
|
|
+ // 初始化http请求
|
|
|
async searchList() {
|
|
|
if (
|
|
|
- (this.parmValue.start_date !== "" && this.parmValue.end_date === "") ||
|
|
|
- (this.parmValue.start_date === "" && this.parmValue.end_date !== "")
|
|
|
+ (this.parmValue.start_date !== '' && this.parmValue.end_date === '') ||
|
|
|
+ (this.parmValue.start_date === '' && this.parmValue.end_date !== '')
|
|
|
) {
|
|
|
- this.$message.warning("时间区间不完整!");
|
|
|
- return;
|
|
|
+ this.$message.warning('时间区间不完整!')
|
|
|
+ return
|
|
|
}
|
|
|
- this.loading = true;
|
|
|
-
|
|
|
- const res = await asyncRequest.saleexportgoodrankinglist(this.parmValue);
|
|
|
+ this.loading = true
|
|
|
+
|
|
|
+ const res = await asyncRequest.saleexportgoodrankinglist(this.parmValue)
|
|
|
if (res && res.code === 0 && res.data) {
|
|
|
- this.tableData = res.data.list;
|
|
|
- this.pageInfo.total = Number(res.data.count);
|
|
|
+ this.tableData = res.data.list
|
|
|
+ this.pageInfo.total = Number(res.data.count)
|
|
|
} else if (res && res.code >= 100 && res.code <= 104) {
|
|
|
- await this.logout();
|
|
|
+ await this.logout()
|
|
|
} else {
|
|
|
this.$message.warning(res.message)
|
|
|
- this.tableData = [];
|
|
|
- this.pageInfo.total = 0;
|
|
|
+ this.tableData = []
|
|
|
+ this.pageInfo.total = 0
|
|
|
}
|
|
|
- this.loading = false;
|
|
|
+ this.loading = false
|
|
|
},
|
|
|
-
|
|
|
- //重置
|
|
|
+
|
|
|
+ // 重置
|
|
|
restSearch() {
|
|
|
this.parmValue = {
|
|
|
- start_date: "", //新建起始时间
|
|
|
- end_date: "", // 新建结束时间
|
|
|
+ start_date: '', // 新建起始时间
|
|
|
+ end_date: '', // 新建结束时间
|
|
|
// is_export:0,//是否导出0/1
|
|
|
page: 1, // 页码
|
|
|
- size: 15, // 每页显示条数
|
|
|
- };
|
|
|
+ size: 15 // 每页显示条数
|
|
|
+ }
|
|
|
// 表格 - 分页
|
|
|
this.pageInfo = {
|
|
|
size: 15,
|
|
|
curr: 1,
|
|
|
- total: 0,
|
|
|
- };
|
|
|
- this.searchList();
|
|
|
+ total: 0
|
|
|
+ }
|
|
|
+ this.searchList()
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
// 时间函数
|
|
|
async time(e) {
|
|
|
- this.parmValue.start_date = e.startTime || "";
|
|
|
- this.parmValue.end_date = e.endTime || "";
|
|
|
+ this.parmValue.start_date = e.startTime || ''
|
|
|
+ this.parmValue.end_date = e.endTime || ''
|
|
|
if (
|
|
|
- (this.parmValue.start_date !== "" && this.parmValue.end_date === "") ||
|
|
|
- (this.parmValue.start_date === "" && this.parmValue.end_date !== "")
|
|
|
+ (this.parmValue.start_date !== '' && this.parmValue.end_date === '') ||
|
|
|
+ (this.parmValue.start_date === '' && this.parmValue.end_date !== '')
|
|
|
) {
|
|
|
- this.$message.warning("时间区间不完整!");
|
|
|
- return;
|
|
|
+ this.$message.warning('时间区间不完整!')
|
|
|
+ return
|
|
|
}
|
|
|
- this.pageInfo.curr = 1;
|
|
|
- this.parmValue.page = 1;
|
|
|
- await this.searchList();
|
|
|
+ this.pageInfo.curr = 1
|
|
|
+ this.parmValue.page = 1
|
|
|
+ await this.searchList()
|
|
|
},
|
|
|
|
|
|
- //选中触发函数
|
|
|
+ // 选中触发函数
|
|
|
selection_change(e) {
|
|
|
- const { list } = e;
|
|
|
- //选中的数组集合
|
|
|
- this.changeList = list.length > 0 ? JSON.parse(JSON.stringify(list)) : [];
|
|
|
+ const { list } = e
|
|
|
+ // 选中的数组集合
|
|
|
+ this.changeList = list.length > 0 ? JSON.parse(JSON.stringify(list)) : []
|
|
|
},
|
|
|
- //导出文件
|
|
|
+ // 导出文件
|
|
|
async download() {
|
|
|
// if(this.changeList.length<=0){
|
|
|
// this.$message.warning("请选择有效数据")
|
|
|
// return;
|
|
|
// }
|
|
|
- let model = JSON.parse(JSON.stringify(this.parmValue))
|
|
|
+ const model = JSON.parse(JSON.stringify(this.parmValue))
|
|
|
// model.is_export = 1;
|
|
|
- let start_date = new Date(this.parmValue.start_date).valueOf();
|
|
|
- let end_date = new Date(this.parmValue.end_date).valueOf();
|
|
|
- let flag = end_date - start_date > 30 * 24 * 60 * 60 * 1000;
|
|
|
- if(this.parmValue.start_date != "" && this.parmValue.end_date != ""){
|
|
|
- if(flag){
|
|
|
- this.$message.warning("导出文件的时间区间不能超过30天")
|
|
|
- return;
|
|
|
+ const start_date = new Date(this.parmValue.start_date).valueOf()
|
|
|
+ const end_date = new Date(this.parmValue.end_date).valueOf()
|
|
|
+ const flag = end_date - start_date > 30 * 24 * 60 * 60 * 1000
|
|
|
+ if (this.parmValue.start_date != '' && this.parmValue.end_date != '') {
|
|
|
+ if (flag) {
|
|
|
+ this.$message.warning('导出文件的时间区间不能超过30天')
|
|
|
+ return
|
|
|
}
|
|
|
- }else{
|
|
|
- this.$message.warning("请选择导出文件的时间区间")
|
|
|
- return;
|
|
|
+ } else {
|
|
|
+ this.$message.warning('请选择导出文件的时间区间')
|
|
|
+ return
|
|
|
}
|
|
|
if (!this.loading) {
|
|
|
- this.loading = true;
|
|
|
- let httpType = `aplication/zip`;
|
|
|
+ this.loading = true
|
|
|
+ const httpType = `aplication/zip`
|
|
|
axios({
|
|
|
- method: "post",
|
|
|
- url: this.fileUrl + "admin/saleexportgoodrankinglistexport",
|
|
|
- responseType: "blob",
|
|
|
- data: model,
|
|
|
+ method: 'post',
|
|
|
+ url: this.fileUrl + 'admin/saleexportgoodrankinglistexport',
|
|
|
+ responseType: 'blob',
|
|
|
+ data: {
|
|
|
+ ...model
|
|
|
+ },
|
|
|
headers: {
|
|
|
// 'Content-Type': 'multipart/form-data',
|
|
|
// Accept: "application/vnd.ms-excel"
|
|
|
- Accept: httpType,
|
|
|
- },
|
|
|
+ Accept: httpType
|
|
|
+ }
|
|
|
})
|
|
|
.then((res) => {
|
|
|
// console.log(res)
|
|
|
// console.log(this.fileUrl)
|
|
|
// return;
|
|
|
if (res && res.status == 200 && res.data) {
|
|
|
- let url = window.URL.createObjectURL(
|
|
|
+ const url = window.URL.createObjectURL(
|
|
|
new Blob([res.data], {
|
|
|
// type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8",
|
|
|
type: httpType
|
|
|
})
|
|
|
- );
|
|
|
- let link = document.createElement("a");
|
|
|
- link.style.display = "none";
|
|
|
- link.href = url;
|
|
|
- let excelName = "产品热销排行.zip";
|
|
|
- link.setAttribute("download", excelName);
|
|
|
- document.body.appendChild(link);
|
|
|
- link.click();
|
|
|
- link.remove();
|
|
|
- window.URL.revokeObjectURL(url); //释放掉blob对象
|
|
|
- this.$message.success(`导出成功!`);
|
|
|
+ )
|
|
|
+ const link = document.createElement('a')
|
|
|
+ link.style.display = 'none'
|
|
|
+ link.href = url
|
|
|
+ const excelName = '产品热销排行.zip'
|
|
|
+ link.setAttribute('download', excelName)
|
|
|
+ document.body.appendChild(link)
|
|
|
+ link.click()
|
|
|
+ link.remove()
|
|
|
+ window.URL.revokeObjectURL(url) // 释放掉blob对象
|
|
|
+ this.$message.success(`导出成功!`)
|
|
|
setTimeout(() => {
|
|
|
- this.loading = false;
|
|
|
- }, 500);
|
|
|
+ this.loading = false
|
|
|
+ }, 500)
|
|
|
} else {
|
|
|
- this.$message.error(res.data.message);
|
|
|
+ this.$message.error(res.data.message)
|
|
|
setTimeout(() => {
|
|
|
- this.loading = false;
|
|
|
- }, 500);
|
|
|
+ this.loading = false
|
|
|
+ }, 500)
|
|
|
}
|
|
|
})
|
|
|
.catch((error) => {
|
|
|
- console.log(error);
|
|
|
- this.loading = false;
|
|
|
- });
|
|
|
+ console.log(error)
|
|
|
+ this.loading = false
|
|
|
+ })
|
|
|
}
|
|
|
- },
|
|
|
- },
|
|
|
-};
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
|
.purchaseOrder {
|
|
|
// text-align: right;
|
|
|
}
|
|
|
</style>
|
|
|
-
|
|
|
+
|