zx 3 years ago
parent c1fe26df1a
commit d29bf8ad13

@ -1,4 +1,6 @@
import httpService from "@/request"
import axios from 'axios'
import store from '@/store'
export const getReq = (api,params) => {
return httpService({
@ -36,3 +38,35 @@ export const posrForm = (api ,data) => {
})
}
export const download = (api, params, fileName) => {
axios({
url: 'https://api.sws010.com/manage'+api,
method: "post",
data: params,
headers: {
"admin-token": store.getters.getToken,
},
responseType: "blob"
})
.then((response) => {
let data = response.data
const blob = new Blob([data])
const a = document.createElement('a')
if (!fileName) {
let contentDisposition = response.headers['content-disposition'];
if (contentDisposition) {
fileName = window.decodeURI(response.headers['content-disposition'].split('=')[1], "UTF-8");
} else {
fileName = "default.xlsx"
}
}
a.download = fileName
a.style.display = 'none'
a.href = URL.createObjectURL(blob)
document.body.appendChild(a)
a.click()
URL.revokeObjectURL(a.href)
document.body.removeChild(a)
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@ -153,8 +153,7 @@ export default defineComponent({
width: 100%;
height: 36px;
background: #F5F7F9;
overflow: hidden;
// overflow: hidden;
.tv-left {
position: absolute;
left: 0px;

@ -12,7 +12,7 @@ req.keys().map(req)
import router from "@/permission"
import store from "@/store/index"
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import {getReq,postJson, posrForm} from "@/api/index"
import {getReq,postJson, posrForm, download} from "@/api/index"
import LyDrawer from "@/components/LyDrawer"
import uploadFile from "@/components/UploadFile"
@ -21,6 +21,7 @@ app.config.globalProperties.$event = myEvent;
app.config.globalProperties.$get = getReq;
app.config.globalProperties.$post = postJson;
app.config.globalProperties.$posrForm = posrForm;
app.config.globalProperties.$download = download;
app.component(LyDrawer)
app.component("uploadFile",uploadFile)
app.use(router)

@ -5,7 +5,7 @@ const routes = [
path: "/",
name: "Layout",
component: () => import("@/components/Layout/index.vue"),
redirect: '/questManage',
redirect: '/homePage',
meta: {
title: '首页',
},

@ -8,21 +8,45 @@
<img src="@/assets/ic_renwu_slices/ic_renwu.png" alt="" />
<span style="margin-left: 12px;width: 120px;line-height: 34px">总任务数</span>
</div>
<div class="top-number-content-tag">
<!-- <div class="top-number-content-tag">
<span class="average" style="padding: 10px">日均</span>
<span class="average-number" style="padding: 10px">15000</span>
</div>
</div> -->
</div>
<div class="top-number-total">126560</div>
<div class="top-number-total">{{totalData.taskNum}}</div>
</div>
</div>
<div class="grey-line"></div>
<div class="top-number-item">
<div class="top-number-content">
<div style="display: flex; justify-content: space-between">
<div class="top-number-content-title">
<img src="@/assets/ic_sucai_slices/ic_sucai.png" alt="" />
<span style="margin-left: 12px;width: 120px;line-height: 34px">总素材数</span>
</div>
<!-- <div class="top-number-content-tag">
<span class="average" style="padding: 10px">日均</span>
<span class="average-number" style="padding: 10px">15000</span>
</div> -->
</div>
<div class="top-number-total">{{totalData.referenceNum}}</div>
</div>
</div>
<div class="grey-line"></div>
<div class="top-number-item">
<div class="top-number-content">
<div style="display: flex; justify-content: space-between">
<div class="top-number-content-title">
<img src="@/assets/ic_xiansuo_slices/ic_xiansuo.png" alt="" />
<span style="margin-left: 12px;width: 120px;line-height: 34px">总线索数</span>
</div>
<!-- <div class="top-number-content-tag">
<span class="average" style="padding: 10px">日均</span>
<span class="average-number" style="padding: 10px">15000</span>
</div> -->
</div>
<div class="top-number-total">{{totalData.customerActionNoteNum}}</div>
</div>
</div>
</div>
<div class="grey-line-cross"></div>
@ -35,27 +59,68 @@
<span style="margin-left: 12px;width: 120px;line-height: 32px">总播放数</span>
</div>
</div>
<div class="top-number-total">126560</div>
<div class="top-number-total">{{totalData.playNumSum}}</div>
</div>
</div>
<div class="grey-line"></div>
<div class="top-number-item-small">
<div class="top-number-content">
<div style="display: flex; justify-content: space-between">
<div class="top-number-content-title">
<img src="@/assets/ic_dianzan_slices/ic_dianzan.png" alt="" />
<span style="margin-left: 12px;width: 120px;line-height: 32px">总点赞数</span>
</div>
</div>
<div class="top-number-total">{{totalData.commendNumSum}}</div>
</div>
</div>
<div class="grey-line"></div>
<div class="top-number-item-small">
<div class="top-number-content">
<div style="display: flex; justify-content: space-between">
<div class="top-number-content-title">
<img src="@/assets/ic_shoucang_slices/ic_shoucang.png" alt="" />
<span style="margin-left: 12px;width: 120px;line-height: 32px">总收藏数</span>
</div>
</div>
<div class="top-number-total">{{totalData.collectionNumSum}}</div>
</div>
</div>
<div class="grey-line"></div>
<div class="top-number-item-small">
<div class="top-number-content">
<div style="display: flex; justify-content: space-between">
<div class="top-number-content-title">
<img src="@/assets/ic_pinglun_slices/ic_pinglun.png" alt="" />
<span style="margin-left: 12px;width: 120px;line-height: 32px">总评论数</span>
</div>
</div>
<div class="top-number-total">{{totalData.commentNumSum}}</div>
</div>
</div>
<div class="grey-line"></div>
<div class="top-number-item-small">
<div class="top-number-content">
<div style="display: flex; justify-content: space-between">
<div class="top-number-content-title">
<img src="@/assets/ic_zhuanfa_slices/ic_zhuanfa.png" alt="" />
<span style="margin-left: 12px;width: 120px;line-height: 32px">总转发数</span>
</div>
</div>
<div class="top-number-total">{{totalData.reSendNumSum}}</div>
</div>
</div>
<div class="grey-line"></div>
<div class="top-number-item-small">
<div class="top-number-content">
<div style="display: flex; justify-content: space-between">
<div class="top-number-content-title">
<img src="@/assets/ic_tuijian_slices/ic_tuijian.png" alt="" />
<span style="margin-left: 12px;width: 120px;line-height: 32px">总推荐数</span>
</div>
</div>
<div class="top-number-total">{{totalData.commendNumSum}}</div>
</div>
</div>
</div>
<div class="middle-charts" style="margin-top: 24px">
@ -79,7 +144,7 @@
<div class="chart-item" id="chartItem"></div>
</div>
<div class="bottom-table" style="margin-top: 24px">
<el-tabs v-model="form.status" @tab-change="statusChange">
<el-tabs v-model="form.type" @tab-change="rankStatusChange">
<el-tab-pane label="经销商统计" :name="1"></el-tab-pane>
<el-tab-pane label="员工统计" :name="2"></el-tab-pane>
</el-tabs>
@ -92,10 +157,21 @@
<div class="table-content">
<el-table :data="tableData" size="large" stripe
:header-cell-style="{background: '#FAFAFA'}">
<el-table-column prop="sort" label="排序" width="180"></el-table-column>
<el-table-column prop="name" label="经销商名称" width="360"></el-table-column>
<el-table-column prop="address" label="地址" ></el-table-column>
<el-table-column prop="transValue" label="传播值"></el-table-column>
<el-table-column prop="sort" label="排序" width="180">
<template #default="scope">
<img v-if="scope.$index == 0" src="@/assets/ic_diyi_slices/ic_diyi.png" alt="" />
<img v-else-if="scope.$index == 1" src="@/assets/ic_dier_slices/ic_dier.png" alt="" />
<img v-else-if="scope.$index == 2" src="@/assets/ic_disan_slices/ic_disan.png" alt="" />
<span v-else>{{scope.$index+1}}</span>
</template>
</el-table-column>
<el-table-column prop="title" :label="form.type==1?'经销商名称':'员工名称'" width="480"></el-table-column>
<el-table-column prop="address" label="地址" width="480"></el-table-column>
<el-table-column prop="value" label="传播值">
<template #default="scope">
<span class="transValue-number">{{scope.row.value}}</span>
</template>
</el-table-column>
</el-table>
</div>
</div>
@ -108,25 +184,40 @@ export default defineComponent({
name: 'v-home',
setup() {
const form = reactive({
status: 1,
type: 1,
});
const playNumForm = reactive({
type: 1,
})
const totalData = ref({});
const tableData = ref([]);
const { proxy } = getCurrentInstance();
return {
form,playNumForm,proxy,
tableData
tableData,totalData
}
},
mounted() {
this.getTotal();
this.drawChart();
this.getRank();
},
methods: {
statusChange() {},
getTotal() {
this.proxy.$post("/statistics/data1", {}).then(res => {
if(res.code == 200) {
this.totalData = res.data
} else {
this.$message.error(res.msg)
}
}).catch(() => {});
},
drawChart() {
let myChart = echarts.init(document.getElementById('chartItem'));
this.proxy.$post("/statistics/data2", {}).then(res => {
}).catch(() => {});
let option = {
title: {
show: true,
@ -146,6 +237,16 @@ export default defineComponent({
]
};
myChart.setOption(option);
},
getRank() {
let obj = Object.assign({pageNum: 1,pageSize: 10},this.form)
this.proxy.$post("/statistics/data3", obj).then(res => {
let data = res.data;
this.tableData = data.records;
}).catch(() => {});
},
rankStatusChange() {
this.getRank()
}
}
})

@ -1,5 +1,5 @@
.home-page-content {
padding: 24px;
padding: 12px 24px 24px 24px;
background: #F9F9F9;
.top-number {
display: flex;
@ -91,13 +91,21 @@
.chart-content {
padding: 0px 24px 24px 24px;
background: #FFF;
display: flex;
justify-content: center;
width: 100%;
height: 280px;
overflow: hidden;
.chart-item {
width: calc(100% + 100px);
height: 297px;
width: 100%;
height: calc(115%);
}
}
.transValue-number {
font-size: 19px;
font-family: MiSans-Bold, MiSans;
font-weight: bold;
color: #3AA0FF;
line-height: 29px;
}
.table-content {
padding: 0px 24px 24px 24px;
background: #FFF;

@ -45,7 +45,7 @@
<el-button>上传文件</el-button>
</uploadFile>
<el-link v-for="(item,index) in form.fileUrlList" :key="index" :href="$ImgUrl(item)" target="_blank">
{{item}}
{{item.url}}
</el-link>
</el-form-item>
<el-form-item>

@ -15,6 +15,7 @@
</el-form>
</div>
<el-button size="default" type="primary" @click="refresh"></el-button>
<el-button size="default" type="primary" @click="download"></el-button>
<div class="area-table">
<el-table :data="tableData.data" size="default" border :header-cell-style="{background: '#EEE'}">
<el-table-column prop="name" label="员工" width="360"></el-table-column>
@ -121,6 +122,12 @@ export default defineComponent({
this.$message.error(res.msg)
}
}).catch(() => {});
},
//
download() {
this.proxy.$download("/user/excel", this.form, '员工列表.xlsx').then(res => {
}).catch(() => {});
}
}
})

@ -26,6 +26,7 @@
</el-form-item>
</el-form>
</div>
<el-button size="default" type="primary" @click="download"></el-button>
<div class="area-table">
<el-table :data="tableData.data" size="default" border :header-cell-style="{background: '#EEE'}">
<el-table-column prop="customerName" label="姓名" width="140"></el-table-column>
@ -62,10 +63,10 @@ export default defineComponent({
name: 'v-questList',
setup() {
const form = reactive({
name: '',
tel: '',
brand: '',
providerName: '',
name: undefined,
tel: undefined,
brand: undefined,
providerName: undefined,
departmentId: undefined,
});
const tableData = reactive({
@ -133,6 +134,12 @@ export default defineComponent({
).then(() => {
this.$message.success('删除成功')
}).catch(() => {})
},
//
download() {
this.proxy.$download("/task/cnExcel", this.form).then(() => {
}).catch(() => {});
}
}
})

@ -1,6 +1,7 @@
<template>
<div class="main-content">
<h3>{{transformData.taskTitle}}</h3>
<h3 class="top-title" style="font-size: 24px">{{transformData.taskTitle}}</h3>
<el-button size="default" type="primary" @click="download"></el-button>
<h3 class="top-title" style="margin-top: 32px">传播数据</h3>
<div class="top-number">
<div class="top-number-item">
@ -84,6 +85,18 @@ export default defineComponent({
},
goDetail(value) {
this.$router.push({ name: "TransformResultDetail", query:{id:this.$route.query.id, userId: value}})
},
//
download() {
this.proxy.$download("/task/excel", {id: this.$route.query.id}, this.transformData.taskTitle+'传播效果.xlsx').then(res => {
// if(res.code == 200) {
// const data = res.data
// this.tableData.data = data.records;
// this.pagination.total = data.total
// } else {
// this.$message.error(res.msg)
// }
}).catch(() => {});
}
}
})

@ -22,6 +22,7 @@
</el-form-item>
</el-form>
</div>
<el-button size="default" type="primary" @click="download"></el-button>
<div class="area-table">
<el-table :data="tableData.data" size="default" border :header-cell-style="{background: '#EEE'}">
<el-table-column prop="userName" label="申请人" width="200"></el-table-column>
@ -184,6 +185,23 @@ export default defineComponent({
this.reviewForm.status = 2;
this.reviewForm.reason = ''
},
//
download() {
let obj = {
name: this.form.name,
status: this.form.status,
departmentId: this.form.departmentId,
}
let filename = '审核列表.xlsx';
if (this.form.status == 0) {
filename = '待审核账号列表.xlsx'
} else if (this.form.status == 1) {
filename = '审核通过账号列表.xlsx'
} else {
filename = '审核不通过账号列表.xlsx'
}
this.proxy.$download("/userAccount/excel", obj, filename).then(() => {}).catch(() => {});
}
}
})
</script>

@ -24,7 +24,7 @@
</el-table-column>
<el-table-column prop="cover" label="封面" >
<template #default="scope">
<img style="width: 200px;height: 100px" :src="$ImgUrl(scope.row.cover)" />
<img style="width: 200px;height: 90px" :src="$ImgUrl(scope.row.cover)" />
</template>
</el-table-column>
<el-table-column prop="action" label="操作" fixed="right" width="240">

Loading…
Cancel
Save