web-zk-admin/src/views/settlementCenter/regions/index.vue

718 lines
18 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="page">
<topBar v-if="topList.length > 0" :top-list="topList" :moren="moren" />
<div class="main">
<el-form
ref="select"
:model="select"
style="padding: 0px 10px 0px 0; background: #fff"
label-width="auto"
>
<el-row :gutter="20">
<el-col :span="4">
<el-form-item :label="'会员编号'">
<el-input v-model="select.memberCode" clearable />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item :label="'会员姓名'">
<el-input v-model="select.memberName" clearable />
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<el-form-item :label="'结算日期'">
<el-date-picker
v-model="creationTime"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
type="datetimerange"
:range-separator="'至'"
:start-placeholder="'开始日期'"
:end-placeholder="'结束日期'"
@change="changeTime"
/>
</el-form-item>
</el-col> -->
<el-col :span="4">
<el-button type="primary" class="my_search" @click="getDataList">
{{ '搜索' }}</el-button
>
<el-button class="my_reset" @click="reset">
{{ '重置' }}</el-button
>
</el-col>
</el-row>
</el-form>
<div class="maintop">
<div class="mainbtn">
<el-button
size="small"
class="thebtn2"
v-hasButtons="['regionExport']"
@click="handleExport"
>
{{ '导出' }}</el-button
>
</div>
</div>
<div class="maintable">
<div class="itemTrading">
<el-table
:data="tableData"
ref="table"
v-loading="loading"
:summary-method="getSummaries"
:header-cell-style="{ background: '#EEEEEE' }"
:row-class-name="tableRowClassName"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="100" />
<el-table-column
align="center"
prop="memberCode"
width="130"
:label="'会员编号'"
/>
<el-table-column
align="center"
prop="memberName"
width="130"
:label="'会员姓名'"
/>
<el-table-column
align="center"
prop="assessAddress"
:label="$t('考核区域')"
/>
<el-table-column
align="center"
prop="assessPeriod"
:label="$t('考核区间')"
/>
<el-table-column
align="center"
prop="assessStartDate"
width="130"
:label="$t('开始日期')"
/>
<el-table-column
align="center"
prop="assessEndDate"
width="130"
:label="$t('结束日期')"
/>
<el-table-column
align="center"
prop="reachNum"
:label="$t('达标次数')"
/>
<el-table-column
align="center"
prop="time"
width="150"
:label="'操作'"
>
<template slot-scope="scope">
<el-button
style="color: #e70dec"
type="text"
size="small"
@click="bonusTap(scope.row)"
>
{{ $t("明细") }}
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getDataList"
/>
<el-dialog
title="明细"
:visible.sync="dialogVisible"
:close-on-click-modal="false"
center
:before-close="handleClose"
>
<div class="cpHeight">
<!-- <el-row>
<el-col :span="11">
<el-form-item :label="'会员编号'">
<el-input v-model="selects.memberCode" clearable />
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item :label="'会员编号'">
<el-input v-model="selects.memberName" clearable />
</el-form-item>
</el-col>
<el-col :span="2">
<el-button type="primary" size="small">
{{ '搜索' }}</el-button
>
</el-col>
</el-row> -->
<!-- <div class="mainbtn">
<el-button
size="small"
class="thebtn2"
v-hasButtons="['regionExport']"
@click="handleExport"
>
{{ '导出' }}</el-button
>
</div> -->
<div style="height: 10px" />
<el-table
:data="dialogList"
style="width: 100%"
:header-cell-style="{ background: '#EEEEEE' }"
:row-class-name="tableRowClassName"
>
<el-table-column type="selection" width="55" />
<el-table-column
align="center"
prop="assessDate"
:label="$t('考核日期')"
/>
<el-table-column
align="center"
prop="teamMonthPv"
:label="$t('团队业绩')"
>
</el-table-column>
<el-table-column
align="center"
prop="smallAreaPv"
:label="$t('小区业绩')"
>
</el-table-column>
<el-table-column
align="center"
prop="assessStatusVal"
:label="$t('考核状态')"
>
</el-table-column>
</el-table>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose">{{ '取消' }}</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import topBar from "@/components/topBar";
import * as api from "@/api/settle.js";
import { classifyUpdate, classifySave } from "@/api/product";
import { isLocals, isLocalSymbol, stateFormat } from "@/utils/numberToCurrency";
import { getRoleMenu } from "@/api/notice";
export default {
name: "Bzpz",
components: {
topBar,
},
filters: {
isAgree(val) {
if (!val) {
return '允许';
} else {
return '禁止';
}
},
},
data() {
return {
creationTime: [],
creationTime1: [],
select: {},
selects: {},
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 50,
},
addOrEdit: "",
total: 0,
dialogVisible: false,
loading: false,
tableData: [],
moren: "regionsList",
topList: [
{
name: this.$t("区域考核"),
path: "regionsList",
},
],
form: {
name: "",
},
rules: {
name: [
{ required: true, message: '请输入规格类型', trigger: "blur" },
],
},
acList: [],
verList: [],
memberList: [],
dialogList: [],
pkMemberTeam: [],
pkVertex: [],
flag: false,
allTxt: {},
pkTeamId: "", // 隶属团队id
pkVertId: "", // 隶属体系id
props: {
multiple: true,
expandTrigger: "hover",
value: "pkId",
label: "vertexName",
children: "childList",
},
};
},
mounted() {
this.getDataList();
},
methods: {
bonusTap(row) {
this.dialogList = row.regionAssessDetailVoList;
this.dialogVisible = true;
},
getPkBdVertexStr(e) {
let arr = e.map((item) => item[1]);
let pkBdVertexStr = arr.join(",");
this.$set(this.select, "pkBdVertexStr", pkBdVertexStr);
},
isLocals,
getStartTime() {
const date = new Date();
date.setDate(1); // 将当前时间的日期设置成第一天
const year = date.getFullYear(); // 得到当前年份
let month = date.getMonth() + 1; // 得到当前月份0-11月份+1是当前月份
month = month >= 10 ? month : "0" + month; // 补零
let day = date.getDate(); // 得到当前天数实际是本月第一天因为前面setDate(1) 设置过了
day = day >= 10 ? day : "0" + day; // 补零
return year + "-" + month + "-" + day;
},
getEndTime() {
var date = new Date();
var year = date.getFullYear(); // 年
var month = date.getMonth() + 1; // 月
var day = date.getDate() > 1 ? date.getDate() - 1 : date.getDate(); // 日
var hour = date.getHours(); // 时
var minutes = date.getMinutes(); // 分
var seconds = date.getSeconds(); // 秒
// 给一位数的数据前面加 “0”
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (day >= 0 && day <= 9) {
day = "0" + day;
}
if (hour >= 0 && hour <= 9) {
hour = "0" + hour;
}
if (minutes >= 0 && minutes <= 9) {
minutes = "0" + minutes;
}
if (seconds >= 0 && seconds <= 9) {
seconds = "0" + seconds;
}
return year + "-" + month + "-" + day + " ";
},
isLocalSymbol,
// getUserRole() {
// getRoleMenu('BonusDetail').then((res) => {
// this.dataList.forEach((item) => {
// res.data.forEach((items) => {
// if (item.name == items) {
// item.key = items
// }
// })
// })
// this.flag = true
// })
// },
getUserRole() {
getRoleMenu("BonusDetail").then((res) => {
let obj = {};
res.data.forEach((item) => {
obj[item] = 1;
});
this.allTxt = obj;
this.$nextTick(() => {
this.$refs.table.doLayout();
});
});
},
stateFormat,
vertCheck(index, item) {
if (this.pkVertex.length > 1) {
this.pkVertex.splice(0, 1);
this.pkVertId = item.pkId;
} else if (this.pkVertex.length == 1) {
this.pkVertId = item.pkId;
} else {
this.pkVertId = "";
}
},
teamCheck(index, item) {
if (this.pkMemberTeam.length > 1) {
this.pkMemberTeam.splice(0, 1);
this.pkTeamId = item.pkId;
} else if (this.pkMemberTeam.length == 1) {
this.pkTeamId = item.pkId;
} else {
this.pkTeamId = "";
}
},
reset() {
this.getDataList();
this.select = {
// pkVertex: [],
// pkMemberTeam: [],
};
this.creationTime = "";
this.pkVertex = [];
this.pkMemberTeam = [];
},
getData() {
api.accountList().then((res) => {
this.acList = res.data;
});
api.vertexChild().then((res) => {
this.verList = res.data;
});
api.memberTeam().then((res) => {
this.memberList = res.rows;
});
},
changeTime(val) {
this.select.startDate = val[0];
this.select.endDate = val[1];
},
changeTime1(val) {
this.select.startEffectDate = val[0];
this.select.endEffectDate = val[1];
},
// 点击修改
toFixed(id) {
this.addOrEdit = false;
this.dialogVisible = true;
this.$router.push({
path: "noticeList/details",
query: {
pkId: id,
},
});
},
getSummaries(param) {
this.$nextTick(() => {
this.$refs.table.doLayout();
});
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '小计' + "(¥)";
return;
}
if (index === 1) {
sums[index] = "";
return;
}
if (index === 2) {
sums[index] = "";
return;
}
if (index === 5) {
sums[index] = "";
return;
}
const values = data.map((item) => Number(item[column.property]));
if (!values.every((value) => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
if (typeof sums[index] === "number") {
sums[index] = sums[index].toFixed(2);
}
} else {
sums[index] = "";
}
});
return sums;
},
// 删除
handleDelete(id) {
this.$confirm('确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: "warning",
}).then(() => {
api.classifyDel(id).then((res) => {
this.getDataList();
});
});
},
onSubmit(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
let url = "";
if (this.addOrEdit == true) {
url = classifySave;
} else {
url = classifyUpdate;
}
url(this.form).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: "success",
});
this.dialogVisible = false;
// 充值数据
this.$refs[formName].resetFields();
// 获取列表
this.getDataList();
}
});
} else {
return false;
}
});
},
handleClose() {
this.dialogVisible = false;
},
openDig() {
this.$router.push({
path: "noticeList/details",
});
},
getDataList() {
this.loading = true;
if (this.creationTime == "" || this.creationTime == null) {
this.select.startDate = "";
this.select.endDate = "";
}
api
.getregionQuery(
Object.assign(
{},
this.select
),
`?pageNum=${this.queryParams.pageNum}&pageSize=${this.queryParams.pageSize}`
)
.then((res) => {
this.loading = false;
this.tableData = res.rows;
this.total = res.total;
});
},
handleSelectionChange(val) {},
/** 导出按钮操作 */
handleExport() {
this.$confirm('是否确认导出所有数据项?', '警告', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: "warning",
}).then((_) => {
this.download(
"/bonus/manage/region/export",
Object.assign({}, this.queryParams, this.select),
`${this.$t("区域考核")}-${new Date().getTime()}.xlsx`
);
});
},
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 == 1) {
return "warning-row";
} else if (rowIndex % 2 == 0) {
return "success-row";
}
return "";
},
},
};
</script>
<style scoped lang="scss">
.content {
// height:450px;/* 可以根据需要设置,也可以是百分比或者在父级flex布局中通过flex:1来确定高度 */
display: flex;
flex-direction: column;
}
.custom-table {
flex: 1;
overflow: hidden;
}
::v-deep .el-table__header-wrapper {
position: sticky;
top: 0; //这个值根据实际情况而定
z-index: 10;
}
::v-deep .el-range-editor.el-input__inner {
width: 100%;
}
::v-deep .el-button {
padding: 8px 20px;
}
::v-deep .el-date-editor .el-range__close-icon {
margin-top: -10px;
}
::v-deep .el-date-editor .el-range-separator {
margin-top: -10px;
}
::v-deep .el-date-editor .el-range__icon {
margin-top: -10px;
}
::v-deep .el-input__inner {
//height:28px;
//line-height: 28px;
}
::v-deep .el-form-item {
margin-bottom: 0;
}
::v-deep .el-cascader {
width: 100%;
}
::v-deep .el-form-item__label {
color: #333;
font-weight: inherit;
}
::v-deep .el-table .warning-row {
background: #f9f9f9;
}
::v-deep .el-table .success-row {
background: #ffffff;
}
::v-deep .el-table thead {
color: #000000;
}
::v-deep .el-select {
width: 100%;
}
.uploadIcon ::v-deep .el-upload--picture-card {
display: none !important; /* 上传按钮隐藏 */
}
.page {
padding: 20px;
background: #f9f9f9;
font-size: 14px;
.main {
background: #f9f9f9;
overflow: hidden;
display: flex;
flex-direction: column;
.maintop {
display: flex;
//padding: 10px 0px;
justify-content: space-between;
align-items: center;
.mainbtn {
.thebtn1 {
background: #3181e5;
color: #ffffff;
}
.thebtn2 {
background: #ffad41;
color: #ffffff;
height: 32px;
}
}
.maintitle {
font-size: 10px;
font-family: MicrosoftYaHei;
color: #999999;
}
}
.maintable {
flex: 1;
overflow-y: auto;
}
}
.tem {
display: flex;
align-items: center;
justify-content: center;
img {
width: 28px;
height: 20px;
margin-right: 3px;
}
}
.isRed {
color: #ed1d25;
}
.isGreen {
color: #1ab62b;
}
.bgImg {
width: 48px;
height: 48px;
}
}
.openClose {
text-align: right;
margin-right: 10px;
color: #3181e5;
}
.kuang {
padding: 5px 20px;
background: rgba(255, 255, 255, 0);
border-radius: 4px;
border: 1px solid #cccccc;
}
.heji {
margin-top: 10px;
.dis {
display: flex;
justify-content: right;
padding: 5px 10px;
font-size: 14px;
color: #333333;
:nth-child(1) {
font-size: 14px;
font-weight: bold;
color: #333333;
margin-right: 20px;
}
}
}
</style>
<style>
/* .itemTrading .el-table {
overflow: auto;
}
.itemTrading .el-table__body-wrapper,
.itemTrading .el-table__header-wrapper,
.itemTrading .el-table__footer-wrapper {
overflow: visible;
}
.itemTrading .el-table::after {
position: relative !important;
}
.body-theme-grenn .el-table--scrollable-x .el-table__body-wrapper {
overflow: visible;
} */
</style>