You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

249 lines
6.3 KiB

<template>
<div>
<div ref="lxHeader">
<lx-header
icon="md-apps"
style="margin-bottom: 10px; border: 0px; margin-top: 15px"
text="服务明细"
>
<div slot="content"></div>
<slot>
<div style="display: flex; align-items: center">
<el-radio-group
v-model="datePickMode"
size="small"
style="margin-right: 10px"
>
<el-radio-button :label="0">年</el-radio-button>
<el-radio-button :label="1">月</el-radio-button>
</el-radio-group>
<template v-if="datePickMode">
<el-date-picker
size="small"
placeholder="请选择时间"
style="width: 200px; margin-right: 10px"
v-model="select.month"
type="month"
value-format="yyyy-MM"
@change="datePick"
>
</el-date-picker>
</template>
<template v-else>
<el-date-picker
size="small"
placeholder="请选择时间"
style="width: 200px; margin-right: 10px"
v-model="select.year"
type="year"
value-format="yyyy"
@change="datePick"
>
</el-date-picker>
</template>
<el-select size="small" style="width: 200px;margin-right: 10px" v-model="select.product_id">
<el-option v-for="item in products" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select>
<Input
v-model="select.keyword"
placeholder="关键字搜索"
style="width: 200px; margin-right: 10px"
/>
<Button
style="margin-left: 10px"
type="primary"
@click="total = 0,(select.page = 1), getList()"
>查询</Button
>
<Button
style="margin-left: 10px"
type="primary"
@click="exportServe"
>导出服务统计</Button
>
</div>
</slot>
</lx-header>
</div>
<xy-table
:default-expand-all="false"
:total="total"
:list="list"
:table-item="table"
@pageSizeChange="(e) => (select.page_size = e)"
@pageIndexChange="
(e) => {
select.page = e;
getList();
}
"
>
<template v-slot:btns>
<el-table-column
fixed="right"
label="操作"
width="68"
header-align="center"
align="center"
>
<template v-slot:default="scope">
<Button size="small" type="primary" @click="detail(scope)"
>查看</Button
>
</template>
</el-table-column>
</template>
</xy-table>
<serveDraw :type="1" ref="serveDraw"></serveDraw>
</div>
</template>
<script>
import { getList as getProducts } from "@/api/product"
import { serveList, getList } from "@/api/serveDetail";
import { parseTime, getAgeByIdcard } from "@/utils";
import { download } from "@/utils/downloadRequest";
import { getAuthTypes } from "@/utils/auth"
import qs from 'qs';
import serveDraw from "@/views/finance/component/serveDraw";
export default {
components: {
serveDraw,
},
provide(){
return {
selectedRow:() => this.selectedRow
}
},
data() {
return {
selectedRow:{},
isShowDraw: false,
isShowDetail: false,
datePickMode: 1, //0为年1为月
products:[],
select: {
page: 1,
page_size: 10,
keyword: "",
year: `${new Date().getFullYear()}`,
month: this.$moment(new Date()).format("YYYY-MM"),
product_id:''
},
types: [],
total: 0,
list: [],
table: [
{
prop: "customer.name",
label: "客户姓名",
width: 140,
},
{
prop: "customer.idcard",
label: "年龄",
width: 80,
formatter: (cell, data, value) => {
return getAgeByIdcard(value);
},
},
{
prop: "customer.sex",
label: "性别",
width: 80,
},
{
prop: "customer.idcard",
label: "身份证号",
width: 180,
},
{
prop: "customer.phone",
label: "手机号",
width: 150,
},
{
prop: "server_total",
label: "服务次数",
width: 120,
},
{
prop: "server_time",
label: "服务时长",
width: 120,
},
{
prop: "remark",
label: "备注",
minWidth: 200,
align: "left",
},
],
};
},
methods: {
async getProducts(){
const res = await getProducts({
page:1,
page_size:999,
})
let typesId = getAuthTypes(this).map(item => item.id)
this.products = res.data.filter(item => {
return typesId.indexOf(item.product_type_id) !== -1
})
this.select.product_id = this.products[0]?.id
},
exportServe() {
download(
"/api/admin/customer/schedule_list_skus",
"get",
{
start_date: this.$moment(this.select.month)
.startOf("month")
.format("YYYY-MM-DD"),
end_date: this.$moment(this.select.month)
.endOf("month")
.format("YYYY-MM-DD"),
page: 1,
page_size: 9999,
is_export: 1,
},
`服务统计表${this.select.month}.xls`
);
},
datePick() {
if (this.datePickMode) {
this.select.year = "";
} else {
this.select.month = "";
}
},
detail(scope) {
this.selectedRow = scope.row;
this.$refs["serveDraw"].select.order_id = scope.row.id;
//this.$refs["serveDraw"].select.customer_id = scope.row.customer.id;
this.$refs["serveDraw"].isShow = true;
},
async getList() {
const res = await serveList(this.select);
this.total = res.total;
this.list = res.data;
},
},
async created() {
await this.getProducts();
await this.getList();
},
};
</script>
<style scoped lang="scss"></style>