feature_0521
liuyang 5 years ago
parent 35b024b94f
commit 059640d3a3

@ -41,6 +41,8 @@ import {
Tag,
Collapse,
Panel,
Tabs,
TabPane,
} from "view-design";
import "view-design/dist/styles/iview.css";
@ -87,3 +89,5 @@ Vue.component("Upload", Upload);
Vue.component("Tooltip", Tooltip);
Vue.component("Step", Step);
Vue.component("Steps", Steps);
Vue.component("Tabs", Tabs);
Vue.component("Tab-pane", TabPane);

@ -8,7 +8,7 @@
</i-col>
<i-col span="8">
<span class="">使用范围26家零售公司785家店铺</span>
<span class="" style="border: 0px; color: rgb(52, 150, 235); margin-left: 15px; cursor: pointer;"></span>
<span class="" style="border: 0px; color: rgb(52, 150, 235); margin-left: 15px; cursor: pointer;" @click="showStores"></span>
</i-col>
<i-col span="8">
<i-switch size="large">
@ -17,25 +17,102 @@
</i-switch>
</i-col>
</Row>
<div>
<p style="margin:10px 0 10px -480px;text-align:center">招募海报</p>
<div style="text-align: center;">
<img style="width:500px;height:500px" src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1590841039901&di=75940d3446fa7110a7482257d2934a5f&imgtype=0&src=http%3A%2F%2Fi1.ygimg.cn%2Fpics%2Fbosideng%2F2015%2F100266320%2F100266320_01_l.jpg%3F6" alt="">
</div>
<!-- <div style="margin-top:20px;text-align: center;"><Button ghost type="primary">上传</Button></div> -->
<Upload v-show="showUpload" ref="upload"
:show-upload-list="false"
:on-success="uploadImgSuccess"
:format="['jpg', 'jpeg', 'png']"
:max-size="2048"
:before-upload="handleBeforeUpload"
multiple
action=""
style="padding-top:10px;text-align: center;">
<Button ghost type="primary">上传</Button>
</Upload>
<div style="margin-top:20px;text-align: center;">
<Button type="primary" size="large" @click="onEdit" style="margin-right:10px">{{btnStr}}</Button>
<Button v-show="showUpload" type="text" size="large" @click="onCancel"></Button>
</div>
</div>
</template>
<selectStoreStep @doShow="doShow"
:schedule="welcome"
:show="showStoreCheck"></selectStoreStep>
</div>
</template>
<script>
import selectStoreStep from '../activity/selectStoreStep'
import store from '../../store'
export default {
components: {
selectStoreStep,
},
data() {
return {
showStoreCheck: false,
welcome: {
content: '',
params: [],
company: [],
stores: [],
},
showUpload:false,
btnStr:'编辑'
};
},
mounted: function() {
},
methods: {
doShow () {
this.showStoreCheck = false
this.welcome = store.getters.useData
console.log(this.welcome)
},
change (status) {
this.$Message.info('开关状态:' + status);
}
},
showStores () {
console.log({ ...store.getters.useData, ...this.welcome })
store.commit('SET_useData', { ...store.getters.useData, ...this.welcome })
this.showStoreCheck = true
},
onEdit(){
this.showUpload = true;
this.btnStr = '保存'
},
onCancel(){
this.showUpload = false;
this.btnStr = '编辑'
},
uploadImgSuccess (res, file) {
this.imageName = file.name;
},
handleBeforeUpload (res) {
const me = this;
let data = new FormData();
data.append("file", res);
axios({
method: "post",
url: "/upload",
data: data,
headers: {
"Content-Type": "multipart/form-data",
},
}).then(function (res) {
if (res.data.success) {
}
});
return false;
},
},
};
</script>

@ -1,44 +1,468 @@
<template>
<div>
<Tabs active-key="key1">
<Tab-pane label="标签一" key="key1">
标签yi的内容
<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 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="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="() => {stop(row)}">审核通过</Button>
</i-col>
<i-col span="12">
<Button type="error" class="router-btn"
@click="() => {show(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>
<Tab-pane label="标签二" key="key2">标签二的内容</Tab-pane>
<Tab-pane label="标签三" key="key3">标签三的内容</Tab-pane>
</Tabs>
<!-- 拒绝 -->
<Modal
v-model="isShow"
:title="showStoreName"
:footer-hide="true"
width="600"
class-name="vertical-center-modal"
@on-ok="ok">
<div slot="header">
<p>审核不通过原因</p>
</div>
<div>
<i-input type="textarea" :rows="4" placeholder="请填写审核不通过原因"></i-input>
</div>
<div style="margin-top:20px;text-align: center;">
<Button ghost type="primary" @click="refuse(rowData)"></Button>
</div>
</Modal>
<Page :total="total" :current="pageNum" :page-size="pageSize" show-elevator show-total
placement="top" @on-change="handlePage" class-name="ks-page"></Page>
</div>
</template>
<script>
export default {
name: "",
data() {
return {
tabIndex:0,
searchShop:null,
date:"",
companyId:0,
isShow: false,
showStoreName: '',
rowData:{},
//list
companyList: [],
selectedStore: 0,
shopList: [],
loading:false,
total: 0,
pageSize: 10,
pageNum: 1,
columns1: [
{
title: '序号',
key: 'number',
width:60
},
{
title: '推广员姓名',
key: 'shopName',
width:120
},
{
title: '推广员手机号',
key: 'shopPhone',
width:120
},
{
title: '身份证号码',
key: 'shopCode',
width:160
},
{
title: '银行卡号',
key: 'bankCard',
width:150
},
{
title: '零售公司',
key: 'companyName',
width:150
},
{
title: '零售公司编号',
key: 'companyCode',
width:80
},
{
title: '店铺',
key: 'storeName',
width:160
},
{
title: '店铺编号',
key: 'storeNO',
width:80
},
{
title: '发展人',
key: 'fissionNum',
width:80
},
{
title: '提交时间',
key: 'submitDate',
width:120
},
{
title: '操作',
slot: 'action',
width:250
}
],
data1:[
{
shopName:'张继军',
shopPhone:'13819890111',
shopCode:'110001199010018171',
bankCard:'62210199918822121',
companyName:'上海零售公司',
companyCode:'601',
storeName:'上海波司登',
storeNO:'1001',
fissionNum:'王超看',
submitDate:'2020/05/21'
}
],
columns2: [
{
title: '序号',
key: 'number',
width:60
},
{
title: '推广员姓名',
key: 'shopName',
width:120
},
{
title: '推广员手机号',
key: 'shopPhone',
width:120
},
{
title: '身份证号码',
key: 'shopCode',
width:160
},
{
title: '银行卡号',
key: 'bankCard',
width:150
},
{
title: '零售公司',
key: 'companyName',
width:150
},
{
title: '零售公司编号',
key: 'companyCode',
width:80
},
{
title: '店铺',
key: 'storeName',
width:160
},
{
title: '店铺编号',
key: 'storeNO',
width:80
},
{
title: '导购',
key: 'salesName',
width:80
},
{
title: '提交时间',
key: 'submitDate',
width:120
},
{
title: '审核时间',
key: 'checkDate',
width:120
},
],
data2:[
{
shopName:'张继军',
shopPhone:'13819890111',
shopCode:'110001199010018171',
bankCard:'62210199918822121',
companyName:'上海零售公司',
companyCode:'601',
storeName:'上海波司登',
storeNO:'1001',
salesName:'王超看',
submitDate:'2020/05/21',
checkDate:'2020/05/21',
}
],
columns3: [
{
title: '序号',
key: 'number',
width:60
},
{
title: '推广员姓名',
key: 'shopName',
width:120
},
{
title: '推广员手机号',
key: 'shopPhone',
width:120
},
{
title: '身份证号码',
key: 'shopCode',
width:160
},
{
title: '银行卡号',
key: 'bankCard',
width:150
},
{
title: '零售公司',
key: 'companyName',
width:150
},
{
title: '零售公司编号',
key: 'companyCode',
width:80
},
{
title: '店铺',
key: 'storeName',
width:160
},
{
title: '店铺编号',
key: 'storeNO',
width:80
},
{
title: '导购',
key: 'salesName',
width:80
},
{
title: '提交时间',
key: 'submitDate',
width:120
},
{
title: '审核时间',
key: 'checkDate',
width:120
},
{
title: '审核不通过原因',
key: 'refuseInfo',
width:120
},
],
data3:[
{
shopName:'张继军',
shopPhone:'13819890111',
shopCode:'110001199010018171',
bankCard:'62210199918822121',
companyName:'上海零售公司',
companyCode:'601',
storeName:'上海波司登',
storeNO:'1001',
salesName:'王超看',
submitDate:'2020/05/21',
checkDate:'2020/05/21',
refuseInfo:'信息不完善'
}
],
}
},
mounted: function () {
},
methods: {
//
companySelect: function () {
//
this.downShopData(this.companyId);
this.selectedStore = 0;
},
downCompanyChange: function (formValidate) {
this.downShopData(formValidate.departIds);
},
searchCustomerDataBtnClick: function () {
this.pageNum = 1;
this.getCheckList();
},
// row
onDblClickRowLister: function (row) {
this.$router.push({path:'/shop/increase/manager/staff',query:{storeId:row.id}});
},
//
handlePage: function (value) {
this.pageNum = value;
this.getCheckList();
},
getCheckList() {
let that = this;
this.loading = true;
let request = {
userId: that.userId,
regionId: that.changeData(that.regionId),
companyId: that.changeData(that.companyId),
storeId: that.changeData(that.selectedStore),
pageNum: that.pageNum,
pageSize: that.pageSize,
code: that.searchShop
};
http.checkList(request, function (data) {
data = data.data;
that.loading = false;
if (data.code == "0000") {
that.data1 = [];
let datas = data.results;
//
if (datas.total == null) {
that.total = 0;
} else {
that.total = datas.total;
}
if (datas.list == null) {
datas.list = [];
}
that.data1 = datas.list;
}
}, function (error) {
that.loading = false;
});
},
onTabClick(e){
this.tabIndex = e;
console.log('tabIndex',this.tabIndex);
},
ok() {
this.isShow = false;
},
//
refuse(index) {
console.log(123);
this.isShow = false;
},
show(index) {
this.isShow = true;
this.rowData = index;
},
}
}
</script>
<style scoped>
.table-store {
margin-top: 20px;
}
.search-btn{
margin-left: 40px;
}
</style>
<script>
export default {};
</script>
<style>
</style>

@ -1,10 +1,266 @@
<template>
<div>asd</div>
<div>
<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="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="() => {show(row)}">升级</Button>
</i-col>
<i-col span="12">
<Button type="text" class="router-btn" style="color:2DBCF0!important"
@click="() => {doShow(row,true)}">查看上下级</Button>
</i-col>
</template>
</Table>
<!-- 升级 -->
<Modal
v-model="isShow"
: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>
<i-input type="textarea" :rows="4" placeholder="请填写审核不通过原因"></i-input>
</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>
<recruitTable ref="recruitTable"
@doShow="doShow"
:show="showrecruit"
:schedule="recruitSchedule">
</recruitTable>
<Page :total="total" :current="pageNum" :page-size="pageSize" show-elevator show-total
placement="top" @on-change="handlePage" class-name="ks-page"></Page>
</div>
</template>
<script>
export default {};
import recruitTable from "./recruitTable";
export default {
name: "",
components: {
recruitTable,
},
data() {
return {
tabIndex:0,
searchShop:null,
date:"",
companyId:0,
isShow: false,
showStoreName: '',
showrecruit:false,
recruitSchedule:{},
rowData:{},
//list
companyList: [],
selectedStore: 0,
shopList: [],
loading:false,
total: 0,
pageSize: 10,
pageNum: 1,
columns1: [
{
title: '序号',
key: 'number',
width:60
},
{
title: '推广员姓名',
key: 'shopName',
width:120
},
{
title: '推广员手机号',
key: 'shopPhone',
width:120
},
{
title: '身份证号码',
key: 'shopCode',
width:160
},
{
title: '银行卡号',
key: 'bankCard',
width:150
},
{
title: '零售公司',
key: 'companyName',
width:150
},
{
title: '零售公司编号',
key: 'companyCode',
width:80
},
{
title: '店铺',
key: 'storeName',
width:160
},
{
title: '店铺编号',
key: 'storeNO',
width:80
},
{
title: '发展人',
key: 'fissionNum',
width:80
},
{
title: '提交时间',
key: 'submitDate',
width:120
},
{
title: '操作',
slot: 'action',
width:250
}
],
data1:[
{
shopName:'张继军',
shopPhone:'13819890111',
shopCode:'110001199010018171',
bankCard:'62210199918822121',
companyName:'上海零售公司',
companyCode:'601',
storeName:'上海波司登',
storeNO:'1001',
fissionNum:'王超看',
submitDate:'2020/05/21'
}
],
}
},
mounted: function () {
},
methods: {
//
companySelect: function () {
//
this.downShopData(this.companyId);
this.selectedStore = 0;
},
downCompanyChange: function (formValidate) {
this.downShopData(formValidate.departIds);
},
searchCustomerDataBtnClick: function () {
this.pageNum = 1;
this.getCheckList();
},
// row
onDblClickRowLister: function (row) {
this.$router.push({path:'/shop/increase/manager/staff',query:{storeId:row.id}});
},
//
handlePage: function (value) {
this.pageNum = value;
this.getCheckList();
},
getCheckList() {
let that = this;
this.loading = true;
let request = {
userId: that.userId,
regionId: that.changeData(that.regionId),
companyId: that.changeData(that.companyId),
storeId: that.changeData(that.selectedStore),
pageNum: that.pageNum,
pageSize: that.pageSize,
code: that.searchShop
};
http.checkList(request, function (data) {
data = data.data;
that.loading = false;
if (data.code == "0000") {
that.data1 = [];
let datas = data.results;
//
if (datas.total == null) {
that.total = 0;
} else {
that.total = datas.total;
}
if (datas.list == null) {
datas.list = [];
}
that.data1 = datas.list;
}
}, function (error) {
that.loading = false;
});
},
onTabClick(e){
this.tabIndex = e;
console.log('tabIndex',this.tabIndex);
},
ok() {
this.isShow = false;
},
cancel(){
this.isShow = false;
},
//
confirm(index) {
console.log(123);
this.isShow = false;
},
show(index) {
this.isShow = true;
this.rowData = index;
},
doShow (currData,ishow) {
this.showrecruit = ishow;
this.recruitSchedule = currData;
},
}
}
</script>
<style>
</style>
<style scoped>
.table-store {
margin-top: 20px;
}
.search-btn{
margin-left: 40px;
}
</style>

@ -0,0 +1,210 @@
<template>
<div class="use_box">
<Modal :scrollable="false"
v-model="showUse"
title="上下级详情"
@on-cancel="cancel"
:loading="true"
width="70%">
<div class="m-info">
<div class="m-info-top">
<p>所属零售公司上海零售公司</p>
<p>所属店铺上海奇硕店铺</p>
</div>
<div class="m-superior">上级</div>
<Table ref="table" style="width:100%!important" :show-header="false" :loading="loading" :columns="columns1" :data="data1" class="table-store">
</Table>
<div class="m-subordinate">下级(35)</div>
<Table ref="table" style="width:100%!important" :show-header="false" :loading="loading" :columns="columns2" :data="data2" class="table-store">
</Table>
</div>
<div slot="footer">
</div>
</Modal>
</div>
</template>
<script>
export default {
name: "recruitTable",
components: {
},
data () {
return {
currentStep: 0,
modal_loading: false,
loading:false,
showUse: false,
columns1: [
{
title: '上级姓名',
key: 'superiorName',
width:120
},
{
title: '上级手机号',
key: 'superiorPhone',
width:120
},
{
title: '职务',
key: 'superiorDuty',
width:160
}
],
data1:[
{
superiorName:'张继军',
superiorPhone:'13819890111',
superiorDuty:'项目经理',
}
],
columns2: [
{
title: '下级姓名',
key: 'subordinateName',
width:120
},
{
title: '下级手机号',
key: 'subordinatePhone',
width:120
},
{
title: '职务',
key: 'subordinateDuty',
width:160
}
],
data2:[
{
subordinateName:'张军',
subordinatePhone:'13119011110',
subordinateDuty:'职员',
},
{
subordinateName:'王凯',
subordinatePhone:'13123209313',
subordinateDuty:'职员',
},
{
subordinateName:'陈涵',
subordinatePhone:'13119024321',
subordinateDuty:'职员',
},
],
};
},
props: {
id: String,
schedule: Object,
show: Boolean,
isModify: {
type: Boolean,
default: false
},
beginStep: {
type: Number,
default: 1
}
},
watch: {
show () {
this.showUse = this.show;
},
schedule (newData) {
console.log('1',newData);
},
},
mounted () { },
methods: {
cancel () {
this.$emit("doShow", false);
this.modal_loading = false;
this.showUse = false;
this.currentStep = 0;
},
next () {
let data = store.getters.useData;
data.name = this.schedule.name;
if (this.currentStep === 0) {
if (data.params.length <= 0) {
this.$Message.error("请选择活动类型");
return;
}
if (!data.beginTime) {
this.$Message.error("请填写活动开始时间");
return;
}
if (!data.endTime) {
this.$Message.error("请填写活动结束时间");
return;
}
if (data.beginTime > data.endTime) {
this.$Message.error("开始时间不能晚于结束时间");
return;
}
}
if (this.currentStep === 1) {
if (!data.company || data.company.length === 0) {
this.$Message.error("请至少选择1家公司");
return;
}
}
if (this.currentStep === 2) {
if (!data.stores || data.stores.length === 0) {
this.$Message.error("请至少选择1家店铺");
return;
}
}
if (typeof data.beginTime == "object") {
data.beginTime = formatDate(data.beginTime);
}
if (typeof data.endTime == "object") {
data.endTime = formatDate(data.endTime);
}
console.log("data", data)
store.commit("SET_useData", data);
this.currentStep = this.currentStep + 1;
},
back () {
this.currentStep = this.currentStep - 1;
},
finish () {
let that = this;
let data = store.getters.useData;
data.isGetActivityInfo = true;
this.modal_loading = true;
ActivityManager.saveActivityData(store.getters.useData, function (data) {
store.commit("RSET_useData");
that.$emit("doShow", false);
that.$router.push("/activity/plan");
that.currentStep = 0;
that.modal_loading = false;
that.showUse = false;
});
},
},
};
</script>
<style scoped>
.m-info-top{
display: flex;
}
.m-info-top p:last-child{
margin-left: 160px;
}
.m-superior,.m-subordinate{
margin: 10px 0;
padding: 10px 0 10px 10px;
background-color: #f5f7f9;
}
</style>
Loading…
Cancel
Save