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

717 lines
20 KiB
Vue

5 years ago
<template>
5 years ago
<div>
<Tabs active-key="key1" @on-click="onTabClick">
<Tab-pane label="待审核" key="key1">
<Row class="search-row">
<i-col span="24" class="search-col">
<Row class="row-style">
<i-input placeholder="请输入推广员姓名或手机号" class="search-select" v-model="searchShop" />
<span class="search-span">选择日期</span>
<DatePicker
:value="selectDate"
type="daterange"
split-panels
placeholder="请选择日期"
@on-change="onChangeDateLister"
class="date-picker"
></DatePicker>
<span class="search-span">零售公司</span>
<Select
v-model="companyId"
filterable
class="search-select"
@on-change="companySelect"
>
<Option
v-for="(item,index) in companyList"
:value="item.id"
:key="index + item.id"
>{{ item.name }}</Option>
</Select>
<span class="search-span">店铺</span>
<Select v-model="selectedStore" filterable class="search-select">
<Option
v-for="(item,index) in shopList"
:value="item.id"
:key="index + item.id"
>{{ item.name }}</Option>
</Select>
<Button type="primary" @click="searchCustomerDataBtnClick" class="search-btn">查询</Button>
</Row>
</i-col>
</Row>
<Table
ref="table"
:loading="loading"
:columns="columns1"
:data="data1"
class="table-store"
size="small"
@on-row-dblclick="onDblClickRowLister"
>
<template slot="action" slot-scope="{row}">
<i-col span="12">
<Button type="success" class="router-btn" @click="() => {passShow(row)}">审核通过</Button>
</i-col>
<i-col span="12">
<Button type="error" class="router-btn" @click="() => {refuseShow(row)}">审核不通过</Button>
</i-col>
</template>
</Table>
</Tab-pane>
<Tab-pane label="通过审核" key="key2">
<Row class="search-row">
<i-col span="24" class="search-col">
<Row class="row-style">
<i-input placeholder="请输入推广员姓名或手机号" class="search-select" v-model="searchShop" />
<span class="search-span">选择日期</span>
<DatePicker
v-model="date"
class="left-15 date-picker"
type="date"
placement="bottom-start"
split-panels
placeholder="请选择日期"
></DatePicker>
<span class="search-span">零售公司</span>
<Select
v-model="companyId"
filterable
class="search-select"
@on-change="companySelect"
>
<Option
v-for="(item,index) in companyList"
:value="item.id"
:key="index + item.id"
>{{ item.name }}</Option>
</Select>
<span class="search-span">店铺</span>
<Select v-model="selectedStore" filterable class="search-select">
<Option
v-for="(item,index) in shopList"
:value="item.id"
:key="index + item.id"
>{{ item.name }}</Option>
</Select>
<Button type="primary" @click="searchCustomerDataBtnClick" class="search-btn">查询</Button>
</Row>
</i-col>
</Row>
<Table
ref="table"
:loading="loading"
:columns="columns2"
:data="data2"
class="table-store"
size="small"
@on-row-dblclick="onDblClickRowLister"
></Table>
</Tab-pane>
<Tab-pane label="审核未通过" key="key3">
<Row class="search-row">
<i-col span="24" class="search-col">
<Row class="row-style">
<i-input placeholder="请输入推广员姓名或手机号" class="search-select" v-model="searchShop" />
<span class="search-span">选择日期</span>
<DatePicker
v-model="date"
class="left-15 date-picker"
type="date"
placement="bottom-start"
split-panels
placeholder="请选择日期"
></DatePicker>
<span class="search-span">零售公司</span>
<Select
v-model="companyId"
filterable
class="search-select"
@on-change="companySelect"
>
<Option
v-for="(item,index) in companyList"
:value="item.id"
:key="index + item.id"
>{{ item.name }}</Option>
</Select>
<span class="search-span">店铺</span>
<Select v-model="selectedStore" filterable class="search-select">
<Option
v-for="(item,index) in shopList"
:value="item.id"
:key="index + item.id"
>{{ item.name }}</Option>
</Select>
<Button type="primary" @click="searchCustomerDataBtnClick" class="search-btn">查询</Button>
</Row>
</i-col>
</Row>
<Table
ref="table"
:loading="loading"
:columns="columns3"
:data="data3"
class="table-store"
size="small"
@on-row-dblclick="onDblClickRowLister"
></Table>
</Tab-pane>
</Tabs>
5 years ago
5 years ago
<!-- 拒绝 -->
<Modal
v-model="refuseIsShow"
:title="showStoreName"
:footer-hide="true"
width="600"
class-name="vertical-center-modal"
@on-ok="ok"
>
<div slot="header">
<p>审核不通过原因</p>
</div>
<div>
5 years ago
<i-input v-model="remark" type="textarea" :rows="4" placeholder="请填写审核不通过原因"></i-input>
5 years ago
</div>
<div style="margin-top:20px;text-align: center;">
<Button ghost type="primary" @click="refuse(rowData)"></Button>
</div>
</Modal>
5 years ago
5 years ago
<!-- 升级 -->
<Modal
v-model="passIsShow"
:title="showStoreName"
:footer-hide="true"
width="600"
class-name="vertical-center-modal"
@on-ok="ok"
>
<div slot="header">
<p style="text-align: center;">确认审核</p>
</div>
<div style="text-align:center;min-height:100px">
<span style="line-height:100px">确认通过审核吗?</span>
</div>
<div style="margin-top:20px;text-align: center;">
<Button @click="cancel(rowData)"></Button>
<Button style="margin-left:20px" type="primary" @click="confirm(rowData)"></Button>
</div>
</Modal>
5 years ago
5 years ago
<Page
:total="total"
:current="pageNum"
:page-size="pageSize"
show-elevator
show-total
placement="top"
@on-change="handlePage"
class-name="ks-page"
></Page>
</div>
5 years ago
</template>
<script>
5 years ago
import zeroExtend from "../../services/customer/zeroExtend";
import staff from "../../services/staff/staff";
import { formatDate } from "../../utils/Common";
import bulletinService from "../../services/recruit/Bulletin";
5 years ago
5 years ago
export default {
name: "",
data() {
return {
tabIndex: 0,
userId: JSON.parse(sessionStorage.getItem("loginInfo")).userId,
searchShop: null,
date: "",
companyId: null,
refuseIsShow: false,
passIsShow: false,
showStoreName: "",
rowData: {},
//零售公司list
companyList: [],
//所有组织list
organizationalList: [],
selectedStore: null,
shopList: [],
loading: false,
total: 0,
pageSize: 10,
pageNum: 1,
columns1: [
{
title: "序号",
key: "number",
width: 60,
render: (h, params) => {
return h(
"span",
params.index + (this.pageNum - 1) * this.pageSize + 1
);
}
},
{
title: "推广员姓名",
width: 120,
render: (h, params) => {
return h("span", params.row.promoterInfo.name);
}
},
{
title: "推广员手机号",
width: 120,
render: (h, params) => {
return h("span", params.row.promoterInfo.phone);
}
},
{
title: "零售公司",
width: 150,
render: (h, params) => {
return h("span", params.row.organizational.name);
}
},
{
title: "零售公司编号",
width: 80,
render: (h, params) => {
return h("span", params.row.organizational.code);
}
},
{
title: "店铺",
width: 160,
render: (h, params) => {
return h("span", params.row.store.name);
}
},
{
title: "店铺编号",
width: 80,
render: (h, params) => {
return h("span", params.row.store.code);
}
},
{
title: "发展人",
width: 80,
render: (h, params) => {
return h("span", params.row.fissionUser.name);
}
},
{
title: "加入时间",
width: 120,
render: (h, params) => {
return h("span", formatDate(params.row.joinTime));
}
},
{
title: "操作",
slot: "action",
width: 250
}
],
data1: [],
columns2: [
{
title: "序号",
key: "number",
width: 60,
render: (h, params) => {
return h(
"span",
params.index + (this.pageNum - 1) * this.pageSize + 1
);
}
},
{
title: "推广员姓名",
5 years ago
width: 120,
render: (h, params) => {
return h("span", params.row.promoterInfo.name);
}
5 years ago
},
{
title: "推广员手机号",
5 years ago
width: 120,
render: (h, params) => {
return h("span", params.row.promoterInfo.phone);
}
5 years ago
},
{
title: "零售公司",
5 years ago
width: 150,
render: (h, params) => {
return h("span", params.row.organizational.name);
}
5 years ago
},
{
title: "零售公司编号",
5 years ago
width: 80,
render: (h, params) => {
return h("span", params.row.organizational.code);
}
5 years ago
},
{
title: "店铺",
5 years ago
width: 160,
render: (h, params) => {
return h("span", params.row.store.name);
}
5 years ago
},
{
title: "店铺编号",
5 years ago
width: 80,
render: (h, params) => {
return h("span", params.row.store.code);
}
5 years ago
},
{
title: "导购",
5 years ago
width: 80,
render: (h, params) => {
return h("span", params.row.fissionUser.name);
}
5 years ago
},
5 years ago
{
title: "加入时间",
width: 120,
render: (h, params) => {
return h("span", formatDate(params.row.joinTime));
}
5 years ago
},
{
title: "审核时间",
5 years ago
width: 120,
render: (h, params) => {
return h("span", formatDate(params.row.updateTime));
}
5 years ago
}
],
data2: [
],
columns3: [
{
title: "序号",
key: "number",
width: 60,
render: (h, params) => {
return h(
"span",
params.index + (this.pageNum - 1) * this.pageSize + 1
);
}
},
{
title: "推广员姓名",
5 years ago
width: 120,
render: (h, params) => {
return h("span", params.row.promoterInfo.name);
}
5 years ago
},
{
title: "推广员手机号",
5 years ago
width: 120,
render: (h, params) => {
return h("span", params.row.promoterInfo.phone);
}
5 years ago
},
{
title: "零售公司",
5 years ago
width: 150,
render: (h, params) => {
return h("span", params.row.organizational.name);
}
5 years ago
},
{
title: "零售公司编号",
5 years ago
width: 80,
render: (h, params) => {
return h("span", params.row.organizational.code);
}
5 years ago
},
{
title: "店铺",
5 years ago
width: 160,
render: (h, params) => {
return h("span", params.row.store.name);
}
5 years ago
},
{
title: "店铺编号",
5 years ago
width: 80,
render: (h, params) => {
return h("span", params.row.store.code);
}
5 years ago
},
5 years ago
{
title: "导购",
5 years ago
width: 80,
render: (h, params) => {
return h("span", params.row.fissionUser.name);
}
5 years ago
},
5 years ago
{
title: "加入时间",
width: 120,
render: (h, params) => {
return h("span", formatDate(params.row.joinTime));
}
5 years ago
},
{
title: "审核时间",
5 years ago
width: 120,
render: (h, params) => {
return h("span", formatDate(params.row.updateTime));
}
5 years ago
},
{
title: "审核不通过原因",
5 years ago
width: 120,
render: (h, params) => {
return h("span", formatDate(params.row.remark));
}
5 years ago
}
],
data3: [
],
selectDate: [],
store: null,
remark: null
};
},
mounted: function() {
// let startDate = this.$moment().format("YYYY-MM-DD");
// let endDate = this.$moment().format("YYYY-MM-DD");
// this.selectDate.push(startDate);
// this.selectDate.push(endDate);
this.getSelectList();
this.downShopData();
this.getRecruitList();
},
methods: {
onChangeDateLister(date) {
console.log(date);
this.selectDate = date;
},
/**基础数据区域list、零售公司list、客户list*/
getSelectList: function() {
let that = this;
let request = {
userId: this.userId
};
zeroExtend.getSelectListRequest(request, function(data) {
if (data.data.code !== "0000") {
that.$Message.error("系统异常");
}
data = data.data.results;
if (data) {
that.organizationalList = data;
that.companyList = that.organizationalList.filter(
item => item.level === 2
);
}
//插入全部选项
that.insertAllOption();
});
},
//插入全部选项
insertAllOption: function() {
if (this.companyList.length === 0 || this.companyList[0].id !== 0) {
this.companyList.splice(0, 0, { id: 0, name: "全部" });
}
if (this.shopList.length === 0 || this.shopList[0].id !== 0) {
this.shopList.splice(0, 0, { id: 0, name: "全部" });
}
},
//店铺
downShopData: function(selected) {
let that = this;
let companyId = selected;
if (!selected) {
companyId = that.companyId;
}
let customerIds = [];
this.customerList = [];
if (companyId === 0) {
//
} else {
this.customerList = this.organizationalList.filter(
item => item.parentId === companyId && item.level === 3
);
this.insertAllOption();
}
customerIds = this.customerList.map(item => item.id);
5 years ago
5 years ago
let request = {
userId: that.userId,
customerIds: JSON.stringify(customerIds)
};
staff.downShopData(request, function(data) {
data = data.data.results;
if (data) {
that.shopList = [{ id: 0, name: "全部" }];
for (let i = 0; i < data.length; i++) {
let entity = data[i];
if (entity) {
that.shopList.push(entity);
5 years ago
}
5 years ago
}
}
});
},
//零售公司选择
companySelect: function() {
//加载店铺
this.downShopData(this.companyId);
this.selectedStore = 0;
},
downCompanyChange: function(formValidate) {
this.downShopData(formValidate.departIds);
},
searchCustomerDataBtnClick: function() {
this.pageNum = 1;
this.getRecruitList();
},
// 双击row跳转详情页面
onDblClickRowLister: function(row) {
this.$router.push({
path: "/shop/increase/manager/staff",
query: { storeId: row.id }
});
},
//切页处理
handlePage: function(value) {
this.pageNum = value;
this.getRecruitList();
},
getRecruitList() {
let that = this;
this.loading = true;
let request = {
status: that.tabIndex + 2,
pageNum: that.pageNum,
storeId: that.selectedStore,
companyId: that.companyId,
store: that.searchShop,
start:
that.selectDate[0] === "" || that.selectDate.length == 0
? null
: that.selectDate[0],
end:
that.selectDate[1] === "" || that.selectDate.length == 0
? null
: that.selectDate[1]
};
bulletinService.getRecruitList(
request,
function(data) {
that.loading = false;
if (data.data.code == "0000") {
that.data1 = [];
let datas = data.data.results;
//总页数
if (datas.total == null) {
that.total = 0;
} else {
that.total = datas.total;
}
if (datas.list == null) {
datas.list = [];
}
5 years ago
if(that.tabIndex == 0){
that.data1 = datas.records;
}else if(that.tabIndex == 1){
that.data2 = datas.records;
}else{
that.data3 = datas.records;
}
5 years ago
}
},
function(error) {
that.loading = false;
5 years ago
}
5 years ago
);
},
onTabClick(e) {
this.tabIndex = e;
5 years ago
this.pageNum = 1;
this.storeId = null;
this.companyId = null;
this.searchShop = null;
this.selectDate = [];
5 years ago
this.getRecruitList();
5 years ago
},
ok() {
this.refuseIsShow = false;
},
// 拒绝审核
5 years ago
refuse(rData) {
let param = {
fissionPromoterId: rData.id,
status: 4,
remark: this.remark
};
this.doRecruitSave(param);
5 years ago
this.refuseIsShow = false;
},
refuseShow(index) {
this.refuseIsShow = true;
this.rowData = index;
},
passShow(index) {
this.passIsShow = true;
this.rowData = index;
},
cancel() {
this.passIsShow = false;
},
//确认通过审核
5 years ago
confirm(rData) {
let param = {
fissionPromoterId: rData.id,
status: 3
};
this.doRecruitSave(param);
5 years ago
this.passIsShow = false;
5 years ago
},
// 审核
doRecruitSave(request) {
let that = this;
bulletinService.recruitSave(
request,
function(data) {
that.loading = false;
if (data.data.code == "0000") {
5 years ago
that.$Message.info(data.data.results);
5 years ago
that.getRecruitList();
5 years ago
} else {
that.$Message.error("系统异常");
}
},
function(error) {
that.loading = false;
}
);
5 years ago
}
5 years ago
}
};
5 years ago
</script>
<style scoped>
5 years ago
.table-store {
margin-top: 20px;
}
.search-btn {
margin-left: 40px;
}
.ivu-tabs {
overflow: inherit;
}
5 years ago
</style>