Commit 69b7c49a by huaying

fix: 活码分组列表

parent 3a3670cc
......@@ -4,16 +4,16 @@ import { postRequest, getRequest } from '@/api/api';
export const findActCodeGroupListApi = params => postRequest('/hm/group/list', params);
// 新增活码分组
export const addActCodeGroupApi = params => postRequest('/hm/group/save', params);
export const addActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm/group/save', params);
// 编辑活码分组
export const editActCodeGroupApi = params => postRequest('/hm/group/edit', params);
export const editActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm/group/edit', params);
// 删除分组
export const delActCodeGroupApi = params => postRequest('/hm/group/delete', params);
export const delActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm/group/delete', params);
// 活码列表
export const actCodeListApi = params => postRequest('', params);
export const actCodeListApi = params => postRequest('/haoban-manage3-web/hm/qrcode/list', params);
// 落地页模板列表
export const guidePageList = params => getRequest('/hm/guide/page/list', params);
......@@ -35,3 +35,6 @@ export const guidePageEdit = params => postRequest('/hm/guide/page/edit', params
// 落地页模板新增详情
export const guidePageSave = params => postRequest('/hm/guide/page/save', params);
//【活码】详情-查看明细列表
export const detailClerkList = params => postRequest('/haoban-manage3-web/hm/qrcode/detail-clerk-list', params);
......@@ -15,6 +15,21 @@ const staffActCodeRouter = [
path: '/actCodeDetail',
name: '活码详情',
component: _import('salesleads/actCodeManage/staffActCode', 'actCodeDetail')
},
{
path: '/actCodeAdd',
name: '新增活码',
component: _import('salesleads/actCodeManage/staffActCode/views', 'setActCode')
},
{
path: '/actCodeEdit',
name: '编辑活码',
component: _import('salesleads/actCodeManage/staffActCode/views', 'setActCode')
},
{
path: '/actCodeBatch',
name: '批量创建活码',
component: _import('salesleads/actCodeManage/staffActCode/views', 'batchAddCode')
}
];
export default staffActCodeRouter;
......@@ -2,39 +2,40 @@
<section>
<el-form inline>
<el-form-item>
<el-input placeholder="请输入活码ID/名称、创建人" style="width: 300px" @change="searchList" v-model="searchForm.search">
<el-input placeholder="请输入活码ID/名称、创建人" style="width: 300px" @change="searchList" v-model="searchForm.keyword">
<i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-input>
</el-form-item>
<el-form-item>
<el-select v-model="searchForm.selectMemberType" style="width: 130px">
<el-select v-model="searchForm.storeSearch" style="width: 130px">
<el-option label="成员所属门店" :value="1"></el-option>
<el-option label="使用成员" :value="2"></el-option>
</el-select>
<el-select v-model="searchForm.searchInfo" filterable remote :placeholder="`${selectMemberType == 1 ? '门店名称' : '成员姓名'} / code`" :remote-method="remoteMethod" :loading="selectLoading" style="margin-left: -4px" @change="searchList">
<!-- <el-select v-model="searchForm.searchInfo" filterable remote :placeholder="`${storeSearch == 1 ? '门店名称' : '成员姓名'} / code`" :remote-method="remoteMethod" :loading="selectLoading" style="margin-left: -4px" @change="searchList">
<el-option v-for="item in memberOrShopList" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</el-select> -->
</el-form-item>
<el-form-item>
<el-select v-model="searchForm.searchStatus" placeholder="全部状态" clearable class="w160" @change="searchList">
<el-option :key="0" label="正常" :value="0"> </el-option>
<el-option :key="1" label="待生效" :value="1"> </el-option>
<el-option :key="1" label="已废弃" :value="2"> </el-option>
<el-select v-model="searchForm.statusFlag" placeholder="全部状态" clearable class="w160" @change="searchList">
<el-option :key="0" label="删除" :value="0"> </el-option>
<el-option :key="1" label="正常" :value="1"> </el-option>
<el-option :key="2" label="作废" :value="2"> </el-option>
<el-option :key="3" label="待生效" :value="3"> </el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select v-model="searchForm.codeType" placeholder="全部类型" clearable class="w160" @change="searchList">
<el-select v-model="searchForm.hmType" placeholder="全部类型" clearable class="w160" @change="searchList">
<el-option :key="0" label="单人活码" :value="0"> </el-option>
<el-option :key="1" label="多人活码" :value="1"> </el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-date-picker v-model="searchForm.dateTime" @change="searchList" :picker-options="pickerOptions" :editable="false" :value-format="'yyyy-MM-dd'" type="datetimerange" align="right" unlink-panels range-separator="至" start-placeholder="创建开始日期" end-placeholder="创建结束日期"> </el-date-picker>
<el-date-picker v-model="searchForm.dateTime" @change="searchList" :picker-options="pickerOptions" :editable="false" :value-format="'yyyy-MM-dd HH:mm:ss'" type="datetimerange" align="right" unlink-panels range-separator="至" start-placeholder="创建开始日期" end-placeholder="创建结束日期"> </el-date-picker>
</el-form-item>
<el-form-item class="fr">
<el-button>批量分组</el-button>
<el-button class="ghost-btn ">批量创建活码</el-button>
<el-button type="primary">新增活码</el-button>
<el-button class="ghost-btn " @click="$router.push('/actCodeBatch')">批量创建活码</el-button>
<el-button type="primary" @click="$router.push('/actCodeAdd')">新增活码</el-button>
</el-form-item>
</el-form>
<el-table ref="actCodeTableRef" v-loading="loadingStatus" :data="actCodeList" tooltip-effect="dark" class="act-code-table" @sort-change="sortChange" :max-height="tableMaxHeight">
......@@ -46,29 +47,29 @@
</el-table-column>
<el-table-column label="活码ID" fixed width="110">
<template slot-scope="{ row }">
<p>{{ row.actCodeId }}</p>
<p>{{ row.hmId }}</p>
</template>
</el-table-column>
<el-table-column label="活码信息" width="100">
<template slot-scope="{ row }">
<p class="overflow-ellipsis" :title="row.actCodeId">{{ row.actCodeId }}</p>
<p><span class="oneActCode" v-if="row.actCodeType == 1">单人活码</span><span class="moreActCOde" v-else>多人活码</span></p>
<p class="overflow-ellipsis" :title="row.hmId">{{ row.hmId }}</p>
<p><span class="oneActCode" v-if="row.hmType == 1">单人活码</span><span class="moreActCOde" v-else>多人活码</span></p>
</template>
</el-table-column>
<el-table-column label="活码状态" width="130">
<template slot-scope="{ row }">
<p><span class="dot normal" v-if="row.actCodeStatus == 1">正常</span><span class="dot needSure" v-if="row.actCodeStatus == 2">待生效</span><span class="dot voided" v-if="row.actCodeStatus == 3">已作废</span></p>
<p class="toTopTip" v-if="row.actCodeStatus == 1">(今日已达上限)</p>
<p><span class="dot normal" v-if="row.statusFlag == 1">正常</span><span class="dot voided" v-if="row.statusFlag == 2">作废</span><span class="dot needSure" v-if="row.statusFlag == 3">待生效</span></p>
<p class="toTopTip" v-if="row.statusFlag == 1">(今日已达上限)</p>
</template>
</el-table-column>
<el-table-column label="添加好友人数" sortable="custom" width="150">
<template slot-scope="{ row }">
<p>{{ row.actCodeId }}</p>
<p>{{ row.hmId }}</p>
</template>
</el-table-column>
<el-table-column label="今日新增人数" sortable="custom" width="150">
<template slot-scope="{ row }">
<p>{{ row.actCodeId }}</p>
<p>{{ row.hmId }}</p>
</template>
</el-table-column>
<el-table-column label="使用成员" width="120">
......@@ -107,27 +108,27 @@
</el-table-column>
<el-table-column label="所属分组" width="100">
<template slot-scope="{ row }">
<p>{{ row.actCodeId }}</p>
<p>{{ row.hmId }}</p>
</template>
</el-table-column>
<el-table-column label="创建人" width="100">
<template slot-scope="{ row }">
<p>{{ row.actCodeId }}</p>
<p>{{ row.hmId }}</p>
</template>
</el-table-column>
<el-table-column label="创建时间" sortable="custom" width="120">
<template slot-scope="{ row }">
<p>{{ row.actCodeId }}</p>
<p>{{ row.hmId }}</p>
</template>
</el-table-column>
<el-table-column label="操作" width="300" fixed="right">
<template slot-scope="{ row }">
<dm-dropdown :scope-data="row" :configs="operateBtnArr" @command="onCommand" />
<dm-dropdown :scope-data="row" :configs="operateBtnArr" :max="5" @command="onCommand" />
</template>
</el-table-column>
</el-table>
<div class="block common-wrap__page text-right m-t-24" v-if="actCodeList.length != 0">
<dm-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageParam.currentPage" :page-sizes="[20, 40, 60, 80]" :page-size="pageParam.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalCount"> </dm-pagination>
<dm-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageParam.pageNum" :page-sizes="[20, 40, 60, 80]" :page-size="pageParam.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalCount"> </dm-pagination>
</div>
</section>
</template>
......@@ -135,6 +136,7 @@
<script>
import { actCodeListApi } from '@/api/actCode.js';
// import errMsg from '@/common/js/error';
import { deleteRequest } from '@/api/api';
export default {
name: 'actCodeTable',
data() {
......@@ -142,12 +144,14 @@ export default {
return {
tableMaxHeight: tableMaxHeight,
searchForm: {
search: '',
searchInfo: '',
searchStatus: '',
selectMemberType: 1,
codeType: '',
dateTime: ''
keyword: '',
// searchInfo: '',
statusFlag: '',
storeSearch: 1,
hmType: '',
dateTime: '',
createTimeStart: '',
createTimeEnd: ''
},
tableData: [],
total: 1,
......@@ -158,9 +162,9 @@ export default {
},
actCodeList: [
{
actCodeId: 12313213111111111,
actCodeType: 1,
actCodeStatus: 1,
hmId: 1,
hmType: 1,
statusFlag: 1,
useMember: [
{
name: 'text'
......@@ -171,9 +175,9 @@ export default {
]
},
{
actCodeId: 123132132222222222222,
actCodeType: 1,
actCodeStatus: 2,
hmId: 123132132222222222222,
hmType: 1,
statusFlag: 2,
useMember: [
{
name: 'text'
......@@ -184,8 +188,8 @@ export default {
]
},
{
actCodeId: 12313213,
actCodeStatus: 3,
hmId: 12313213,
statusFlag: 3,
useMember: [
{
name: 'text'
......@@ -196,9 +200,9 @@ export default {
]
},
{
actCodeId: 12313213,
actCodeType: 1,
actCodeStatus: 1,
hmId: 12313213,
hmType: 1,
statusFlag: 1,
useMember: [
{
name: 'text'
......@@ -209,8 +213,8 @@ export default {
]
},
{
actCodeId: 12313213,
actCodeStatus: 2,
hmId: 12313213,
statusFlag: 2,
useMember: [
{
name: 'text'
......@@ -227,8 +231,8 @@ export default {
]
},
{
actCodeId: 12313213,
actCodeStatus: 2,
hmId: 12313213,
statusFlag: 2,
useMember: [
{
name: 'text'
......@@ -245,8 +249,8 @@ export default {
]
},
{
actCodeId: 12313213,
actCodeStatus: 2,
hmId: 12313213,
statusFlag: 2,
useMember: [
{
name: 'text'
......@@ -282,28 +286,30 @@ export default {
text: '详情',
visible: true,
handler: row => {
console.log(row);
this.$router.push(`/actCodeDetail?hmId=${row.hmId}`);
}
},
{
text: '下载活码',
text: '编辑',
visible: true,
handler: row => {
console.log(row);
console.log(row, 77);
this.$router.push(`/actCodeEdit?hmId=${row.hmId}`);
}
},
{
text: '作废',
text: '下载活码',
visible: true,
handler: row => {
console.log(row);
}
},
{
text: '编辑',
text: '作废',
visible: true,
handler: row => {
console.log(row);
const aa = deleteRequest('/hm/qrcode/del', { hmId: row.hmId });
return console.log(aa, 'aa');
}
}
],
......@@ -321,21 +327,27 @@ export default {
// 分页参数
pageParam: {
pageSize: 20,
currentPage: 1,
sortColName: '',
sortType: ''
pageNum: 1
},
sortColumn: '',
sortType: '',
multipleSelection: []
};
},
created() {
this.getTableList();
},
methods: {
onCommand() {
console.log('hello');
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
// 当前页变化
handleCurrentChange(val) {
this.pageParam.currentPage = val;
sessionStorage.setItem('currentPage', val);
this.pageParam.pageNum = val;
sessionStorage.setItem('pageNum', val);
// this.getAjaxMembers();
},
// 页码
......@@ -349,34 +361,66 @@ export default {
},
// 排序
sortChange(column) {
this.pageParam.sortColName = column.prop;
if (column.order === 'descending') {
this.pageParam.sortType = 'desc';
}
if (column.order === 'ascending') {
this.pageParam.sortType = 'asc';
}
// this.pageParam.sortColName = column.prop;
// if (column.order === 'descending') {
// this.pageParam.sortType = 'desc';
// }
// if (column.order === 'ascending') {
// this.pageParam.sortType = 'asc';
// }
const that = this;
that.sortColumn = column.prop;
that.sortType = column.order == 'ascending' ? 'asc' : 'desc';
this.getTableList();
},
searchList() {
this.currentPage = 1;
this.pageNum = 1;
this.getTableList();
},
getTableList() {
this.loadingStatus = true;
this.searchForm = {
...this.searchForm,
createTimeStart: this.dateTime ? Date.parse(new Date(this.searchForm.dateTime[0]).toString()) : '',
createTimeEnd: this.dateTime ? Date.parse(new Date(this.searchForm.dateTime[1]).toString()) : ''
};
delete this.searchForm.dateTime;
actCodeListApi(Object.assign({}, this.searchForm, this.pageParam))
.then(res => {
this.totalCount = res.data.result.totalCount;
if (Array.isArray(res.data.result.result) && res.data.result.result.length) {
this.tableData = [].concat(res.data.result.result);
} else {
this.tableData = [];
}
console.log(res, 'res11');
// this.totalCount = res.data.result.totalCount || 0;
// if (res.data.result.result.length && Array.isArray(res.data.result.result)) {
// this.tableData = [].concat(res.data.result.result);
// } else {
// this.tableData = [];
// }
})
.finally(_ => {
this.loadingStatus = false;
});
}
// discardCode(id) {
// const that = this;
// that.loading = true;
// const aa = deleteRequest('/hm/qrcode/del', { hmId: id });
// return console.log(aa, 'aa');
// .then(res => {
// let resData = res.data;
// that.loading = false;
// if (resData.errorCode == 1) {
// that.getActCodeInfo();
// return;
// }
// errMsg.errorMsg(resData);
// })
// .cash(function(error) {
// that.$message.error({
// duration: 1000,
// message: error.message
// });
// });
// }
}
};
</script>
......
<template>
<div>
<setActCode>
<template #typeCode>
<el-form-item label="活码类型" prop="hmType">
<el-radio-group v-model="form.hmType">
<el-radio :label="1">单人活码</el-radio>
</el-radio-group>
</el-form-item>
</template>
<template #member>
<el-form-item label="使用成员" prop="memberType">
<el-radio-group v-model="form.memberType">
<el-radio :label="1">全部成员</el-radio>
<el-radio :label="2">部分成员</el-radio>
</el-radio-group>
<br />
<el-button plain class="ylbtn" v-if="form.memberType == 2"><i class="iconfont-components3 icon-cp-PlusOutlined addPic"></i>添加成员</el-button>
</el-form-item>
</template>
</setActCode>
</div>
</template>
<script>
import setActCode from '../../../components/actCodeSet.vue';
export default {
components: { setActCode },
data() {
return {
form: {
hmType: 1,
memberType: 1
}
};
},
methods: {}
};
</script>
<style lang="less" scoped>
.ylbtn {
margin-top: 10px;
border: 1px solid #2f54eb;
color: #2f54eb;
}
</style>
......@@ -10,11 +10,11 @@
<li v-for="listItem in groupList" :key="listItem.groupId" :class="['list-item', 'member-list', { 'active-li': listItem.groupId == currentListItemUuid }]" @click="clickGroupListItem(listItem)">
<div class="wrap">
<span :title="listItem.groupName" class="listItemName overflow-ellipsis">{{ listItem.groupName }}</span>
<span>{{ `(${listItem.releationNum})` }}</span>
<span>{{ `(${listItem.referNum})` }}</span>
</div>
<el-popover placement="bottom" trigger="hover" v-if="isShowGroupListItemMore(listItem)">
<p class="more" @click="editGroupListItem(listItem)">编辑</p>
<p class="more" @click="delGroupListItem(listItem)" v-if="!listItem.releationNum">删除</p>
<p class="more" @click="delGroupListItem(listItem)" v-if="!listItem.referNum">删除</p>
<i slot="reference" class="iconfont-hb3 icongengduo icon"></i>
</el-popover>
</li>
......@@ -40,32 +40,23 @@
</template>
<script>
import { findActCodeGroupListApi, addActCodeGroupApi, editActCodeGroupApi, delActCodeGroupApi } from '@/api/actCode.js';
import { addActCodeGroupApi, editActCodeGroupApi, delActCodeGroupApi } from '@/api/actCode.js';
import { getRequest } from '@/api/api';
export default {
name: 'staffActCodeGroupList',
data() {
const groupList = [
{
groupName: '全部分组',
releationNum: 11,
referNum: 11,
groupId: 1
},
{
groupName: '默认分组',
releationNum: 10,
groupId: 2
}
// {
// groupName: '默认分组',
// referNum: 10,
// groupId: 2
// }
];
let i = 3;
while (i <= 15) {
groupList.push({
groupName: '单人分组',
releationNum: i,
groupId: i
});
i++;
}
return {
currentListItemUuid: 1,
searchGroupInput: '',
......@@ -88,7 +79,7 @@ export default {
};
},
created() {
// this.searchGroup();
this.searchGroup();
},
methods: {
load() {
......@@ -145,18 +136,19 @@ export default {
})
.then(() => {
// 删除操作
const listItemIndex = this.groupList.findIndex(item => item.groupId === listItem.groupId);
if (listItemIndex < 0) return;
// const listItemIndex = this.groupList.findIndex(item => item.groupId === listItem.groupId);
// if (listItemIndex < 0) return;
let params = {
groupId: listItem.groupId
};
delActCodeGroupApi(params).then(res => {
if (res.errorCode == 0) {
if (res.data.code == 0) {
this.$message({
type: 'success',
message: '删除成功!'
});
this.groupList.splice(listItemIndex, 1);
// this.groupList.splice(listItemIndex, 1);
this.searchGroup();
}
});
})
......@@ -170,14 +162,19 @@ export default {
let resSucTip = `${this.isEditGroup ? '修改' : '新增'}成功`;
let resErTip = `${this.isEditGroup ? '修改' : '新增'}失败`;
if (this.isEditGroup) {
res = await editActCodeGroupApi(this.groupListForm);
let obj = {
groupId: this.groupListForm.groupId,
groupName: this.groupListForm.groupName
};
res = await editActCodeGroupApi(obj);
} else {
let params = {
groupName: this.groupListForm.groupName
};
res = await addActCodeGroupApi(params);
}
if (res.errorCode == 0) {
// return console.log(res, 'res');
if (res.data.code == 0) {
this.$message({
type: 'success',
message: resSucTip,
......@@ -200,7 +197,9 @@ export default {
}
});
},
searchGroup(val) {
async searchGroup(val) {
const countNum = await getRequest('/haoban-manage3-web/hm/group/refer/count', {});
// this.groupList[0].referNum = countNum.data.result;
if (this.pageNum == 1) {
this.groupList = [];
}
......@@ -212,12 +211,20 @@ export default {
if (String(this.searchGroupInput)) {
params.groupName = this.searchGroupInput;
}
findActCodeGroupListApi(params).then(res => {
if (res.errorCode == 0) {
const { list, pageInfo } = res.result || {};
if (Array.isArray(list)) {
list.reduce((pre, cur) => pre.push(cur), this.groupList);
}
await getRequest('/haoban-manage3-web/hm/group/list', params).then(res => {
if (res.data.code == 0) {
const { list, pageInfo } = res.data.result || {};
// if (Array.isArray(list)) {
// list.reduce((pre, cur) => pre.push(cur), this.groupList);
// }
this.groupList = list;
this.groupList.unshift({
groupName: '全部分组',
referNum: 11,
groupId: null
});
this.groupList[0].referNum = countNum.data.result;
console.log(this.groupList, '444');
this.allPageNum = pageInfo.pages || 1;
}
});
......
<template>
<div>
<setActCode>
<template #typeCode>
<el-form-item label="活码类型" prop="hmType">
<el-radio-group v-model="form.hmType">
<el-radio :label="1">单人活码</el-radio>
<el-radio :label="2">多人活码</el-radio>
</el-radio-group>
</el-form-item>
</template>
<template #codeName>
<el-form-item label="活码名称" prop="name">
<el-input class="w340" v-model="form.name" placeholder="请输入活码名称,默认使用成员名称" maxlength="20" show-word-limit></el-input>
</el-form-item>
</template>
<template #member>
<el-form-item label="使用成员" prop="memberList">
<p class="tabs" v-if="form.hmType == 1">单人活码仅可选择一名成员</p>
<p class="tabs" v-if="form.hmType == 2">若选择多名成员,则随机分配企微员工</p>
<el-button plain class="ylbtn"><i class="iconfont-components3 icon-cp-PlusOutlined addPic"></i>添加成员</el-button>
</el-form-item>
</template>
</setActCode>
</div>
</template>
<script>
import setActCode from '../../../components/actCodeSet.vue';
// import { getRequest } from '@/api/api';
import errMsg from '@/common/js/error';
export default {
components: { setActCode },
created() {
console.log(this.$route.query, 7878);
},
data() {
return {
loading: false,
form: {
hmType: 1,
name: '',
memberList: []
}
};
},
methods: {
async getActCodeInfo() {
const that = this;
that.actCode = '999';
if (that.actCode.length <= 0) return;
that.loading = true;
// getRequest('/hm/qrcode/detail', { hmId: that.actCode })
// .then(res => {
let res = {
data: {
errorCode: 1,
result: {
name: '测试活码好的可以',
hmId: '727363646474849483332',
statusFlag: 1,
overFlag: 1,
hmType: 2,
creatorName: '少见多怪',
createTime: 182736347383,
passFlag: 0,
welcomeId: 'b680a2cf18b742cc9f4560f6195c9ec6',
enterpriseId: '5bd929fd3b2c49deaa1184bcb0d669b3'
}
}
};
let resData = res.data;
that.loading = false;
if (resData.errorCode == 1) {
that.statusIndex = resData.result.statusFlag == 1 && resData.result.overFlag == 1 ? 4 : resData.result.statusFlag;
that.codeInfo = resData.result;
return;
}
errMsg.errorMsg(resData);
// })
// .catch(function(error) {
// that.$message.error({
// duration: 1000,
// message: error.message
// });
// });
}
}
};
</script>
<style lang="less" scoped>
.ylbtn {
border: 1px solid #2f54eb;
color: #2f54eb;
}
.w340 {
width: 340px;
}
</style>
......@@ -3,30 +3,21 @@
<div class="m20 formBox">
<dm-sub-title text="基础信息" type="line" />
<el-form class="mt20" ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="活码类型" prop="hmType">
<el-radio-group v-model="form.hmType">
<el-radio :label="1">单人活码</el-radio>
<el-radio :label="2">多人活码</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="活码名称" prop="name">
<el-input class="w340" v-model="form.name" placeholder="请输入活码名称,默认使用成员名称" maxlength="20" show-word-limit></el-input>
</el-form-item>
<el-form-item label="活动分组" prop="actGroup">
<el-select class="w340" filterable v-model="form.actGroup"></el-select>
</el-form-item>
<el-form-item label="使用成员" prop="memberList">
<p class="tabs" v-if="form.hmType == 1">单人活码仅可选择一名成员</p>
<p class="tabs" v-if="form.hmType == 2">若选择多名成员,则随机分配企微员工</p>
<el-button plain class="ylbtn"><i class="iconfont-components3 icon-cp-PlusOutlined addPic"></i>添加成员</el-button>
<slot name="typeCode"></slot>
<slot name="codeName"></slot>
<el-form-item label="活码分组" prop="actGroup">
<el-select class="w340" filterable v-model="form.actGroup">
<el-options v-for="(item, index) in groupList" :key="index"></el-options>
</el-select>
</el-form-item>
<slot name="member"></slot>
<el-form-item label="自动通过好友">
<el-switch v-model="form.passFlag" class="mr15"></el-switch>
<span class="tabs">开启后,客户添加该企业微信时,无需好友验证,将会自动添加成功</span>
</el-form-item>
<el-form-item label="活码标签">
<el-button plain class="ylbtn" @click="tagsDialogVisible = true"><i class="iconfont-components3 icon-cp-PlusOutlined addPic"></i>添加标签</el-button>
<dm-memberTag-group :visiable.sync="tagsDialogVisible" @save="saveTagPop" :projectName="haobao - 3"></dm-memberTag-group>
<dm-memberTag-group :visiable.sync="tagsDialogVisible" :projectName="haobao - 3"></dm-memberTag-group>
</el-form-item>
<dm-sub-title text="欢迎语设置" type="line" class="mt40b20" />
<el-row>
......@@ -49,11 +40,15 @@
<el-form-item label="选择欢迎语" v-if="form.welcomes == 1">
<div class="welcomeTable">
<div class="wtabTop">
<el-input class="w260" placeholder="请输入标题"></el-input>
<el-input class="w260" placeholder="请输入标题" v-model="pageParam.search"></el-input>
<el-button plain class="ylbtn" @click="changeRoute">新建欢迎语</el-button>
</div>
<el-table :data="welcomeTableData" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"> </el-table-column>
<el-table :data="welcomeTableData">
<el-table-column width="55">
<template slot-scope="scope">
<el-radio :label="scope.$index" @change.native="getCurrentRow(scope.row)" v-model="welcome">&nbsp;</el-radio>
</template>
</el-table-column>
<el-table-column prop="welcomeTitle" label="标题" width="158px"></el-table-column>
<el-table-column prop="welcomeContent" label="内容" show-overflow-tooltip></el-table-column>
<el-table-column prop="welcomeEnclosure" label="附件" width="212px" show-overflow-tooltip>
......@@ -69,14 +64,13 @@
</template>
</el-table-column>
</el-table>
<!-- <dm-pagination background @current-change="handleCurrentChange" :current-page="pageParam.currentPage" layout=" prev, pager, next " :total="totalCount"> </dm-pagination> -->
<dm-pagination class="paginationBox" background layout=" prev, pager, next " :total="100"> </dm-pagination>
<dm-pagination class="paginationBox" background @current-change="handleCurrentChange" :current-page="pageParam.currentPage" layout=" prev, pager, next " :page-size="4" :total="100"> </dm-pagination>
</div>
</el-form-item>
</el-col>
<el-col :span="7" v-if="form.welcomes == 1">
<el-col :span="7" v-if="form.welcomes == 1 && welcomeContent != ''">
<p class="welcomeTitle">欢迎语预览</p>
<previewWelcome :welcomeContent="welcomeTableData.welcomeContent"></previewWelcome>
<previewWelcome :welcomeContent="welcomeContent"></previewWelcome>
</el-col>
</el-row>
</el-form>
......@@ -89,8 +83,9 @@
<script>
import previewWelcome from '../../../components/preview-welcome.vue';
// import { findActCodeGroupListApi } from '@/api/actCode.js';
export default {
name: 'addActCode',
name: 'setActCode',
components: { previewWelcome },
props: {
actCodeData: {
......@@ -119,21 +114,44 @@ export default {
welcomeTableData: [],
tagsDialogVisible: false,
data: '',
multipleSelection: []
welcome: '',
templateSelection: {},
welcomeContent: '',
pageParam: {
search: '',
currentPage: 1
},
groupList: []
};
},
created() {
this.getWelcomeTable();
// this.searchGroup();
},
methods: {
handleSelectionChange(val) {
console.log(val, 'val');
this.multipleSelection = val;
searchGroup(val) {
// const params = {
// pageNum: 1,
// pageSize: 4
// };
// if (String(this.searchGroupInput)) {
// params.groupName = this.searchGroupInput;
// }
// findActCodeGroupListApi(params).then(res => {
// console.log(res);
// });
},
// 当前页变化
handleCurrentChange(val) {
console.log(val);
this.pageParam.currentPage = val;
// this.getAjaxMembers();
},
// 选择欢迎语列表数据
getWelcomeTable() {
this.welcomeTableData = [
{
welcomeId: 1,
welcomeTitle: '标题标题标题',
welcomeContent: '欢迎语内容欢迎语内容欢迎语内容 欢迎语内容欢迎语内容欢迎语内容欢迎语内容欢迎语内容 欢迎语内容欢迎语内容',
welcomeEnclosure: {
......@@ -142,6 +160,7 @@ export default {
}
},
{
welcomeId: 2,
welcomeTitle: '标题标题标题',
welcomeContent: '内容房价还是大家开始的房价款',
welcomeEnclosure: {
......@@ -150,6 +169,7 @@ export default {
}
},
{
welcomeId: 3,
welcomeTitle: '标题标题标题',
welcomeContent: '内容房价还是大家开始的房价款',
welcomeEnclosure: {
......@@ -158,6 +178,7 @@ export default {
}
},
{
welcomeId: 4,
welcomeTitle: '标题标题标题',
welcomeContent: '内容房价还是大家开始的房价款',
welcomeEnclosure: {
......@@ -171,6 +192,11 @@ export default {
changeRoute() {
this.$router.push({ path: '/salutatorySet' });
},
getCurrentRow(row) {
// 获取选中数据 row表示选中这一行的数据,可以从里面提取所需要的值
this.templateSelection = row;
this.welcomeContent = this.templateSelection.welcomeContent;
},
saveTagPop(data) {
console.log(data);
this.data = data;
......@@ -183,16 +209,10 @@ export default {
};
</script>
<style lang="less" scoped>
// /deep/ .el-table__body-wrapper .el-checkbox .el-checkbox__input .el-checkbox__inner {
// border-radius: 100%;
// }
/deep/ .el-table__body-wrapper .el-table__row .cell {
padding-left: 10px !important;
line-height: 14px;
}
/deep/ .el-table__header-wrapper .el-checkbox {
display: none;
}
.m20 {
margin: 20px;
}
......
......@@ -2,28 +2,28 @@
<div>
<el-row>
<div class="leftBox">
<el-input class="w260 mr10" placeholder="请输入门店名称/code" v-model="pageParam.search1" prefix-icon="el-icon-search"></el-input>
<el-input class="w260 mr10" placeholder="请输入导购名称/code" v-model="pageParam.search2" prefix-icon="el-icon-search"></el-input>
<el-input class="w260 mr10" placeholder="请输入门店名称/code" v-model="pageParam.storeSearch" prefix-icon="el-icon-search"></el-input>
<el-input class="w260 mr10" placeholder="请输入导购名称/code" v-model="pageParam.clerkSearch" prefix-icon="el-icon-search"></el-input>
</div>
<div class="rightBox">
<ul class="datebox" v-for="(lis, index) in dateLis" :key="lis.key">
<li :class="active == index ? 'activeClass' : 'noActive'" class="dateLisBox" @click="btnChange(index)">{{ lis.value }}</li>
</ul>
<el-date-picker class="w256" v-model="pageParam.dateDefault" type="daterange" range-separator="~" start-placeholder="创建开始日期" end-placeholder="创建结束日期" :default-time="['00:00:00', '23:59:59']" :picker-options="pickerOptions()" @change="onDateChange"> </el-date-picker>
<el-date-picker class="w256" v-model="dateDefault" type="daterange" range-separator="~" start-placeholder="创建开始日期" end-placeholder="创建结束日期" :default-time="['00:00:00', '23:59:59']" :picker-options="pickerOptions()" @change="onDateChange"> </el-date-picker>
</div>
</el-row>
<el-table class="mt18" :data="tableData" @sort-change="sortChange">
<el-table-column label="导购信息">
<template slot-scope="{ row }">
<p class="overflow-ellipsis" :title="row.guideMsg">{{ row.guideMsg }}</p>
<p>{{ row.guideMsgs }}</p>
<p class="overflow-ellipsis" :title="row.clerkName">{{ row.clerkName }}</p>
<p>{{ row.clerkCode }}</p>
</template>
</el-table-column>
<el-table-column label="导购所属门店">
<template slot-scope="{ row }">
<p class="overflow-ellipsis" :title="row.guideStore">{{ row.guideStore }}</p>
<p>{{ row.guideStoreCode }}</p>
<p class="overflow-ellipsis" :title="row.storeName">{{ row.storeName }}</p>
<p>{{ row.storeCode }}</p>
</template>
</el-table-column>
<el-table-column label="企微号">
......@@ -32,26 +32,27 @@
<p>{{ row.qwCode }}</p>
</template>
</el-table-column>
<el-table-column label="新增总人数" prop="addTotal" sortable></el-table-column>
<el-table-column label="今日新增总人数" prop="todayAddTotal" sortable></el-table-column>
<el-table-column label="新增总人数" prop="addFriendNumTd" sortable></el-table-column>
<el-table-column label="今日新增总人数" prop="addFriendNumD" sortable></el-table-column>
<el-table-column label="今日流失人数" prop="toadyLess" sortable></el-table-column>
<el-table-column label="流失总人数" prop="lessTotal" sortable></el-table-column>
<el-table-column label="今日已达上限" prop="status">
<el-table-column label="今日已达上限" prop="overFlag">
<template slot-scope="{ row }">
<p>{{ row.status == 1 ? '是' : '否' }}</p>
<p>{{ row.overFlag == 1 ? '是' : '否' }}</p>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="{ row }">
<el-button type="text" @click="lookRecords(row.actId)">查看记录</el-button>
<el-button type="text" @click="lookRecords(row.hmId)">查看记录</el-button>
</template>
</el-table-column>
</el-table>
<dm-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageParam.currentPage" :page-sizes="[20, 40, 60, 80]" :page-size="pageParam.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalCount"> </dm-pagination>
<dm-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageParam.pageNum" :page-sizes="[20, 40, 60, 80]" :page-size="pageParam.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalCount"> </dm-pagination>
</div>
</template>
<script>
import { detailClerkList } from '@/api/actCode.js';
export default {
name: 'DateDetail',
props: {
......@@ -71,12 +72,12 @@ export default {
],
tableData: [],
pageParam: {
search1: '',
search2: '',
dateDefault: [],
currentPage: 1,
storeSearch: '',
clerkSearch: '',
pageNum: 1,
pageSize: 20
},
dateDefault: [],
totalCount: 0,
sortColumn: '',
sortType: '',
......@@ -142,7 +143,7 @@ export default {
btnChange(index) {
//把index值赋给active,点击改变样式
this.active = index;
this.pageParam.dateDefault = [];
this.dateDefault = [];
let setDate;
if (index == 0) {
// 近7天
......@@ -170,20 +171,20 @@ export default {
};
}
const [start, end] = this.getDateRange(setDate);
this.pageParam.dateDefault.push(end);
this.pageParam.dateDefault.push(start);
this.dateDefault.push(end);
this.dateDefault.push(start);
},
onDateChange() {
this.active = -1;
},
// 当前页变化
handleCurrentChange(val) {
this.pageParam.currentPage = val;
sessionStorage.setItem('currentPage', val);
this.pageParam.pageNum = val;
sessionStorage.setItem('pageNum', val);
},
// 页码
handleSizeChange(val) {
this.pageParam.currentPage = 1;
this.pageParam.pageNum = 1;
this.pageParam.pageSize = val;
this.getTableList();
},
......@@ -195,39 +196,46 @@ export default {
that.getTableList();
},
// 列表数据
getTableList() {
this.tableData = [
{
guideMsg: '导购信息1索尼大法根据历史的快乐风格问题',
guideMsgs: '2364756qre',
guideStore: '门店名称1哈金斯的看法和大家说法可接受的垡健康是的发送到',
guideStoreCode: '4564564',
qw: '趣味',
qwCode: '23674726',
addTotal: 1,
todayAddTotal: 2,
toadyLess: 89,
lessTotal: 23,
staus: 1
},
{
guideMsg: '导购信息1索尼大法根据历史的快乐风格问题',
guideMsgs: '2364756qre',
guideStore: '门店名称1哈金斯的看法和大家说法可接受的垡健康是的发送到',
guideStoreCode: '4564564',
qw: '趣味',
qwCode: '23674726',
addTotal: 9,
todayAddTotal: 5,
toadyLess: 77,
lessTotal: 66,
staus: 0
}
];
async getTableList() {
// this.tableData = [
// {
// clerkName: '导购信息1索尼大法根据历史的快乐风格问题',
// clerkCode: '2364756qre',
// storeName: '门店名称1哈金斯的看法和大家说法可接受的垡健康是的发送到',
// storeCode: '4564564',
// qw: '趣味',
// qwCode: '23674726',
// addFriendNumTd: 1,
// addFriendNumD: 2,
// toadyLess: 89,
// lessTotal: 23,
// staus: 1
// },
// {
// clerkName: '导购信息1索尼大法根据历史的快乐风格问题',
// clerkCode: '2364756qre',
// storeName: '门店名称1哈金斯的看法和大家说法可接受的垡健康是的发送到',
// storeCode: '4564564',
// qw: '趣味',
// qwCode: '23674726',
// addFriendNumTd: 9,
// addFriendNumD: 5,
// toadyLess: 77,
// lessTotal: 66,
// staus: 0
// }
// ];
const obj = {
...this.pageParam,
startTime: this.dateDefault ? Date.parse(new Date(this.dateDefault[0]).toString()) : '',
endTime: this.dateDefault ? Date.parse(new Date(this.dateDefault[1]).toString()) : ''
};
const a = await detailClerkList(obj);
console.log(a, 'a');
},
lookRecords(actId) {
lookRecords(hmId) {
const that = this;
that.$router.push(`/actCodeRecord?actId=${actId}`);
that.$router.push(`/actCodeRecord?hmId=${hmId}`);
}
}
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment