Commit 130f1a41 by huaying

fix: 活码列表

parent d885cff3
import { postRequest, getRequest } from '@/api/api'; import { postRequest, getRequest, postJsonRequest } from '@/api/api';
// 活码分组查询
export const findActCodeGroupListApi = params => postRequest('/hm/group/list', params);
// 新增活码分组 // 新增活码分组
export const addActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm/group/save', params); export const addActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm/group/save', params);
...@@ -13,7 +10,7 @@ export const editActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm ...@@ -13,7 +10,7 @@ export const editActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm
export const delActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm/group/delete', params); export const delActCodeGroupApi = params => postRequest('/haoban-manage3-web/hm/group/delete', params);
// 活码列表 // 活码列表
export const actCodeListApi = params => postRequest('/haoban-manage3-web/hm/qrcode/list', params); export const actCodeListApi = params => postJsonRequest('/haoban-manage3-web/hm/qrcode/list', params);
// 落地页模板列表 // 落地页模板列表
export const guidePageList = params => getRequest('/haoban-manage3-web/hm/guide/page/list', params); export const guidePageList = params => getRequest('/haoban-manage3-web/hm/guide/page/list', params);
......
...@@ -7,17 +7,17 @@ ...@@ -7,17 +7,17 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-select v-model="searchForm.storeSearch" placeholder="请选择" style="width: 128px" @change="searchList"> <el-select v-model="storeSearch" placeholder="请选择" style="width: 128px" @change="searchList">
<el-option label="成员所属门店" :value="1"></el-option> <el-option label="成员所属门店" :value="1"></el-option>
<el-option label="使用成员" :value="2"></el-option> <el-option label="使用成员" :value="2"></el-option>
</el-select> </el-select>
<el-select v-model="searchForm.searchInfo" filterable remote :placeholder="`请输入${searchForm.storeSearch == 1 ? '门店名称' : '成员姓名'} / code`" :remote-method="remoteMethods" :loading="selectLoading" @change="searchList" style="margin-left: -4px; width:196px;"> <el-select v-model="searchForm.storeSearch" filterable remote :placeholder="`请输入${storeSearch == 1 ? '门店名称' : '成员姓名'} / code`" :remote-method="remoteMethods" :loading="selectLoading" @change="searchList" style="margin-left: -4px; width:196px;">
<el-option v-for="item in memberOrShopList" :key="item.value" :label="item.label" :value="item.value"> </el-option> <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-form-item> <el-form-item>
<el-select v-model="searchForm.statusFlag" placeholder="全部状态" clearable class="w160" @change="searchList"> <el-select v-model="searchForm.statusFlag" placeholder="全部状态" clearable class="w160" @change="searchList">
<el-option :key="0" label="删除" :value="0"> </el-option> <!-- <el-option :key="0" label="删除" :value="0"> </el-option> -->
<el-option :key="1" label="正常" :value="1"> </el-option> <el-option :key="1" label="正常" :value="1"> </el-option>
<el-option :key="2" label="作废" :value="2"> </el-option> <el-option :key="2" label="作废" :value="2"> </el-option>
<el-option :key="3" label="待生效" :value="3"> </el-option> <el-option :key="3" label="待生效" :value="3"> </el-option>
...@@ -38,7 +38,8 @@ ...@@ -38,7 +38,8 @@
<el-button type="primary" @click="$router.push('/actCodeAdd')">新增活码</el-button> <el-button type="primary" @click="$router.push('/actCodeAdd')">新增活码</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table ref="actCodeTableRef" v-loading="loadingStatus" :data="actCodeList" tooltip-effect="dark" class="act-code-table" @sort-change="sortChange" :max-height="tableMaxHeight" @select="selectTable"> <el-table ref="actCodeTableRef" v-loading="loadingStatus" :data="actCodeList" tooltip-effect="dark" class="act-code-table" @sort-change="sortChange" :max-height="tableMaxHeight">
<!-- @select="selectTable" -->
<el-table-column type="selection" width="60" fixed> </el-table-column> <el-table-column type="selection" width="60" fixed> </el-table-column>
<el-table-column width="60" class-name="table-select-cell" fixed> <el-table-column width="60" class-name="table-select-cell" fixed>
<template #header> <template #header>
...@@ -52,7 +53,7 @@ ...@@ -52,7 +53,7 @@
</el-table-column> </el-table-column>
<el-table-column label="活码信息" width="100"> <el-table-column label="活码信息" width="100">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<p class="overflow-ellipsis" :title="row.hmId">{{ row.hmId }}</p> <p class="overflow-ellipsis" :title="row.name">{{ row.name ? row.name : '--' }}</p>
<p><span class="oneActCode" v-if="row.hmType == 1">单人活码</span><span class="moreActCOde" v-else>多人活码</span></p> <p><span class="oneActCode" v-if="row.hmType == 1">单人活码</span><span class="moreActCOde" v-else>多人活码</span></p>
</template> </template>
</el-table-column> </el-table-column>
...@@ -64,61 +65,39 @@ ...@@ -64,61 +65,39 @@
</el-table-column> </el-table-column>
<el-table-column label="添加好友人数" sortable="custom" width="150"> <el-table-column label="添加好友人数" sortable="custom" width="150">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<p>{{ row.hmId }}</p> <p>{{ row.addNum ? row.addNum : '--' }}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="今日新增人数" sortable="custom" width="150"> <el-table-column label="今日新增人数" sortable="custom" width="150">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<p>{{ row.hmId }}</p> <p>{{ row.addNum ? row.addNum : '--' }}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="使用成员" width="120"> <el-table-column label="使用成员" width="120">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<p>{{ row.useMember[0].name }}</p> <p>{{ row.clerkName ? row.clerkName : '--' }}</p>
<p class="ft-12 phone">15784243524</p> <p class="ft-12 phone">{{ row.clerCode ? row.clerCode : '--' }}</p>
<p>
<el-popover width="200" trigger="click">
<ul class="useMember-ul">
<li v-for="(item, index) in row.useMember.slice(1)" :key="index">
<p>{{ item.name }}</p>
<p class="ft-12 phone">15784243524</p>
</li>
</ul>
<el-button slot="reference" type="text" class="ft-12">查看更多</el-button>
</el-popover>
</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="成员所属门店" width="120"> <el-table-column label="成员所属门店" width="120">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<p>{{ row.useMember[0].name }}</p> <p>{{ row.storeName ? row.storeName : '--' }}</p>
<p class="ft-12 phone">15784243524</p> <p class="ft-12 phone">{{ row.storeCode ? row.storeCode : '--' }}</p>
<p>
<el-popover width="200" trigger="click">
<ul class="useMember-ul">
<li v-for="(item, index) in row.useMember.slice(1)" :key="index">
<p>{{ item.name }}</p>
<p class="ft-12 phone">15784243524</p>
</li>
</ul>
<el-button slot="reference" type="text" class="ft-12">查看更多</el-button>
</el-popover>
</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="所属分组" width="100"> <el-table-column label="所属分组" width="100" show-overflow-tooltip>
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<p>{{ row.hmId }}</p> <p>{{ row.hmGroupId ? row.hmGroupId : '--' }}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建人" width="100"> <el-table-column label="创建人" width="100">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<p>{{ row.creatorName }}</p> <p>{{ row.creatorName ? row.creatorName : '--' }}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" sortable="custom" width="120"> <el-table-column label="创建时间" sortable="custom" width="120">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<p>{{ row.createTime }}</p> <p>{{ row.createTime ? row.createTime : '--' }}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="300" fixed="right"> <el-table-column label="操作" width="300" fixed="right">
...@@ -133,7 +112,7 @@ ...@@ -133,7 +112,7 @@
<el-dialog title="选择分组" :visible.sync="dialogGroupFormVisible" width="25%"> <el-dialog title="选择分组" :visible.sync="dialogGroupFormVisible" width="25%">
<el-form :model="formGroup"> <el-form :model="formGroup">
<el-form-item label="活动区域" :rules="[{ required: true, message: '请选择分组', trigger: 'blur' }]"> <el-form-item label="活动区域" :rules="[{ required: true, message: '请选择分组', trigger: 'blur' }]">
<el-select v-model="formGroup.groupList" placeholder="选择分组" v-loadmore="onLoadmore" remote multiple filterable :remote-method="remoteMethod" @visible-change="visibleChange"> <el-select v-model="formGroup.groupList" placeholder="选择分组" v-loadmore="onLoadmore" remote filterable :remote-method="remoteMethod" @visible-change="visibleChange">
<el-option v-for="item in groupList" :key="item.groupId" :label="item.groupName" :value="item.groupId"></el-option> <el-option v-for="item in groupList" :key="item.groupId" :label="item.groupName" :value="item.groupId"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -149,7 +128,7 @@ ...@@ -149,7 +128,7 @@
<script> <script>
import { actCodeListApi } from '@/api/actCode.js'; import { actCodeListApi } from '@/api/actCode.js';
// import errMsg from '@/common/js/error'; // import errMsg from '@/common/js/error';
import { deleteRequest, getRequest } from '@/api/api'; import { deleteRequest, getRequest, postRequest, postJsonRequest } from '@/api/api';
export default { export default {
name: 'actCodeTable', name: 'actCodeTable',
directives: { directives: {
...@@ -177,14 +156,14 @@ export default { ...@@ -177,14 +156,14 @@ export default {
tableMaxHeight: tableMaxHeight, tableMaxHeight: tableMaxHeight,
searchForm: { searchForm: {
keyword: '', keyword: '',
// searchInfo: '', searchInfo: '',
statusFlag: '', statusFlag: '',
storeSearch: 1, storeSearch: '',
hmType: '', hmType: '',
createTimeStart: '', createTimeStart: '',
createTimeEnd: '' createTimeEnd: ''
}, },
storeSearch: 1,
dateTime: [], dateTime: [],
tableData: [], tableData: [],
total: 1, total: 1,
...@@ -381,14 +360,31 @@ export default { ...@@ -381,14 +360,31 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 20,
total: 1 total: 1
} },
name: ''
}; };
}, },
created() { created() {
this.getTableList(); this.getTableList();
this.searchGroup(); this.searchGroup();
// this.getStraff();
// this.getStore();
}, },
methods: { methods: {
// 获取导购列表数据
async getStraff() {
await postRequest(`/api-plug/search-clerk?type=2`, { name: this.name });
},
async getStore() {
const obj = {
searchParam: '',
pageSize: 20,
currentPage: 1,
scenes: 'integral',
creatorId: ''
};
await postRequest(`/api-plug/query-store-by-code-name-new?requestProject=haoban-manage-web`, obj);
},
onLoadmore() { onLoadmore() {
if (this.pageParamGroup.pageNum >= this.pageParamGroup.total) return; if (this.pageParamGroup.pageNum >= this.pageParamGroup.total) return;
this.pageParamGroup.pageNum++; this.pageParamGroup.pageNum++;
...@@ -426,23 +422,29 @@ export default { ...@@ -426,23 +422,29 @@ export default {
} }
}, },
// 表格选中事件 // 表格选中事件
selectTable(selection, row) { // selectTable(selection, row) {
console.log(selection); // console.log(selection);
this.selectHmIds = selection.map(item => { // this.selectHmIds = selection.map(item => {
return item.hmId; // return item.hmId;
}); // });
console.log(this.selectHmIds, 'iss'); // console.log(this.selectHmIds, 'iss');
}, // },
// 批量分组 // 批量分组
batchGoupEvent() { batchGoupEvent() {
console.log('批量分组'); if (this.selectHmIds.length == 0) {
this.dialogGroupFormVisible = true; return this.$message({ message: '请先选择活码!', type: 'warning' });
} else {
this.dialogGroupFormVisible = true;
}
}, },
onCommand() { onCommand() {
console.log('hello'); console.log('hello');
}, },
handleSelectionChange(val) { handleSelectionChange(val) {
this.multipleSelection = val; this.multipleSelection = val;
this.selectHmIds = val.map(item => {
return item.hmId;
});
}, },
// 当前页变化 // 当前页变化
handleCurrentChange(val) { handleCurrentChange(val) {
...@@ -460,13 +462,6 @@ export default { ...@@ -460,13 +462,6 @@ export default {
}, },
// 排序 // 排序
sortChange(column) { sortChange(column) {
// this.pageParam.sortColName = column.prop;
// if (column.order === 'descending') {
// this.pageParam.sortType = 'desc';
// }
// if (column.order === 'ascending') {
// this.pageParam.sortType = 'asc';
// }
const that = this; const that = this;
that.sortColumn = column.prop; that.sortColumn = column.prop;
that.sortType = column.order == 'ascending' ? 'asc' : 'desc'; that.sortType = column.order == 'ascending' ? 'asc' : 'desc';
......
<template> <template>
<div> <div>
<setActCode> <setActCode @submit="onSubmit">
<template #typeCode> <template #typeCode>
<el-form-item label="活码类型" prop="hmType"> <el-form-item label="活码类型" :rules="[{ required: true, message: '请选择活码类型', trigger: 'blur' }]">
<el-radio-group v-model="form.hmType"> <el-radio-group v-model="form.hmType">
<el-radio :label="1">单人活码</el-radio> <el-radio :label="1">单人活码</el-radio>
</el-radio-group> </el-radio-group>
...@@ -15,8 +15,7 @@ ...@@ -15,8 +15,7 @@
<el-radio :label="2">部分成员</el-radio> <el-radio :label="2">部分成员</el-radio>
</el-radio-group> </el-radio-group>
<br /> <br />
<!-- <el-button plain class="ylbtn" v-if="form.memberType == 2"><i class="iconfont-components3 icon-cp-PlusOutlined addPic"></i>添加成员</el-button> --> <select-clerk v-if="form.memberType == 2" :multiple="false" :data="data" @change="onChange"></select-clerk>
<select-clerk v-if="form.memberType == 2" @change="onChange"></select-clerk>
</el-form-item> </el-form-item>
</template> </template>
</setActCode> </setActCode>
...@@ -32,14 +31,23 @@ export default { ...@@ -32,14 +31,23 @@ export default {
return { return {
form: { form: {
hmType: 1, hmType: 1,
clerkIdList: 1, clerkIdList: [],
memberType: 1 memberType: 1
} },
data: []
}; };
}, },
methods: { methods: {
onChange(data) { onChange(data) {
console.log(data); this.data = data;
this.form.clerkIdList = data;
},
onSubmit(event) {
let obj = {
...event,
...this.form
};
console.log(obj, '父组件,整体表单数据');
} }
} }
}; };
......
<template> <template>
<section> <section>
<div class="mb-10 mt-20 pl-16 pr-15"> <div class="mb-10 mt-20 pl-16 pr-15">
<!-- @keyup.native="value => searchGroup(value)" --> <el-input placeholder="请输入分组名称" maxlength="50" v-model="pageP.groupName" clearable @change="onSearch">
<el-input placeholder="请输入分组名称" maxlength="50" v-model="searchGroupInput" @change="searchGroup">
<i slot="prefix" class="el-input__icon el-icon-search"></i> <i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-input> </el-input>
</div> </div>
...@@ -25,9 +24,9 @@ ...@@ -25,9 +24,9 @@
</div> </div>
</li> </li>
</ul> </ul>
<p v-if="searchTip" class="searchTip">没有找到和“{{ searchGroupInput }}”相关的内容</p> <p v-if="searchTip" class="searchTip">没有找到和“{{ pageP.groupName }}”相关的内容</p>
</div> </div>
<div class="add-category" v-if="searchGroupInput == ''"> <div class="add-category" v-if="groupList.length > 1">
<el-button type="primary" class="ghost-btn add-group" @click="addGroup">新增分组</el-button> <el-button type="primary" class="ghost-btn add-group" @click="addGroup">新增分组</el-button>
</div> </div>
<!-- 新增/编辑分组 --> <!-- 新增/编辑分组 -->
...@@ -56,14 +55,7 @@ export default { ...@@ -56,14 +55,7 @@ export default {
searchTip: false, searchTip: false,
groupLoading: false, groupLoading: false,
currentListItemUuid: 1, currentListItemUuid: 1,
searchGroupInput: '', groupList: [],
groupList: [
{
groupName: '全部分组',
referNum: '',
groupId: null
}
],
scrollLoad: false, scrollLoad: false,
title: '新增分组', title: '新增分组',
addOrEditGroupDialog: false, addOrEditGroupDialog: false,
...@@ -76,9 +68,7 @@ export default { ...@@ -76,9 +68,7 @@ export default {
}, },
isEditGroup: false, isEditGroup: false,
// 分页相关 // 分页相关
pageNum: 1,
allPageNum: 1, allPageNum: 1,
pageSize: 20,
pageP: { pageP: {
groupName: '', groupName: '',
pageNum: 1, pageNum: 1,
...@@ -90,12 +80,16 @@ export default { ...@@ -90,12 +80,16 @@ export default {
this.searchGroup(); this.searchGroup();
}, },
methods: { methods: {
onSearch() {
this.pageP.pageNum = 1;
this.searchGroup();
},
load() { load() {
if (this.allPageNum > this.pageP.pageNum) { if (this.pageP.pageNum < this.allPageNum) {
this.pageP.pageNum++; this.pageP.pageNum++;
this.searchGroup(); this.searchGroup();
} else { } else {
this.scrollLoad = true; // this.scrollLoad = true;
} }
}, },
clickGroupListItem(listItem) { clickGroupListItem(listItem) {
...@@ -146,6 +140,7 @@ export default { ...@@ -146,6 +140,7 @@ export default {
message: '删除成功!' message: '删除成功!'
}); });
// this.groupList.splice(listItemIndex, 1); // this.groupList.splice(listItemIndex, 1);
this.pageP.pageNum = 1;
this.searchGroup(); this.searchGroup();
} }
}); });
...@@ -181,9 +176,11 @@ export default { ...@@ -181,9 +176,11 @@ export default {
const groupListItem = this.groupList.find(({ groupId }) => groupId == this.groupListForm.groupId); const groupListItem = this.groupList.find(({ groupId }) => groupId == this.groupListForm.groupId);
groupListItem.groupName = this.groupListForm.groupName; groupListItem.groupName = this.groupListForm.groupName;
} else { } else {
this.pageP.pageNum = 1; // this.pageP.pageNum = 1;
this.searchGroup(); // this.searchGroup();
} }
this.pageP.pageNum = 1;
this.searchGroup();
this.addOrEditGroupDialog = false; this.addOrEditGroupDialog = false;
} else { } else {
this.$message({ this.$message({
...@@ -198,22 +195,28 @@ export default { ...@@ -198,22 +195,28 @@ export default {
this.groupLoading = true; this.groupLoading = true;
const countNum = await getRequest('/haoban-manage3-web/hm/group/refer/count', {}); const countNum = await getRequest('/haoban-manage3-web/hm/group/refer/count', {});
if (this.pageP.pageNum == 1) { if (this.pageP.pageNum == 1) {
this.groupList = [
{
groupName: '全部分组',
referNum: '',
groupId: null
}
];
this.groupList[0].referNum = countNum.data.result; this.groupList[0].referNum = countNum.data.result;
} }
// this.pageP.pageNum < this.allPageNum && this.pageP.pageNum++; // this.pageP.pageNum < this.allPageNum && this.pageP.pageNum++;
if (String(this.searchGroupInput)) { if (String(this.pageP.groupName)) {
this.pageP.pageNum = 1; this.pageP.pageNum = 1;
this.pageP.groupName = this.searchGroupInput;
this.groupList = []; this.groupList = [];
} }
await getRequest('/haoban-manage3-web/hm/group/list', this.pageP).then(res => { await getRequest('/haoban-manage3-web/hm/group/list', this.pageP).then(res => {
if (res.data.code == 0) { if (res.data.code == 0) {
const { result, pages } = res.data.result || {}; const { result, pages } = res.data.result || {};
this.groupList = this.groupList.concat(result); this.groupList = this.groupList.concat(result);
if (this.searchGroupInput == '') { if (this.pageP.groupName == '') {
this.searchTip = false; this.searchTip = false;
} else if (this.searchGroupInput != '') { } else if (this.pageP.groupName != '') {
this.groupList.splice(0, 1); // this.groupList.splice(0, 1);
if (this.groupList.length <= 0) { if (this.groupList.length <= 0) {
this.searchTip = true; this.searchTip = true;
} }
......
<template> <template>
<div> <div>
<setActCode @submit="submit"> <setActCode @submit="onSubmit" :actCodeData="detailCode">
<template #typeCode> <template #typeCode>
<el-form-item label="活码类型" prop="hmType"> <el-form-item label="活码类型" :rules="[{ required: true, message: '请选择活码类型', trigger: 'blur' }]">
<el-radio-group v-model="form.hmType" @change="changeEvent"> <el-radio-group v-model="form.hmType" @change="changeEvent">
<el-radio :label="1">单人活码</el-radio> <el-radio :label="1">单人活码</el-radio>
<el-radio :label="2">多人活码</el-radio> <el-radio :label="2">多人活码</el-radio>
...@@ -10,12 +10,12 @@ ...@@ -10,12 +10,12 @@
</el-form-item> </el-form-item>
</template> </template>
<template #codeName> <template #codeName>
<el-form-item label="活码名称" prop="name"> <el-form-item label="活码名称" :rules="[{ required: true, message: '请输入活码名称', trigger: 'blur' }]">
<el-input class="w340" v-model="form.name" placeholder="请输入活码名称,默认使用成员名称" maxlength="20" show-word-limit></el-input> <el-input class="w340" v-model="form.name" placeholder="请输入活码名称,默认使用成员名称" maxlength="20" show-word-limit></el-input>
</el-form-item> </el-form-item>
</template> </template>
<template #member> <template #member>
<el-form-item label="使用成员" prop="clerkIdList"> <el-form-item label="使用成员" :rules="[{ required: true, message: '请选择使用成员', trigger: 'blur' }]">
<p class="tabs" v-if="form.hmType == 1">单人活码仅可选择一名成员</p> <p class="tabs" v-if="form.hmType == 1">单人活码仅可选择一名成员</p>
<p class="tabs" v-if="form.hmType == 2">若选择多名成员,则随机分配企微员工</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-button plain class="ylbtn"><i class="iconfont-components3 icon-cp-PlusOutlined addPic"></i>添加成员</el-button> -->
...@@ -29,8 +29,7 @@ ...@@ -29,8 +29,7 @@
<script> <script>
import setActCode from '@/views/salesleads/components/actCodeSet.vue'; import setActCode from '@/views/salesleads/components/actCodeSet.vue';
import SelectClerk from '../../components/select-clerk/index.vue'; import SelectClerk from '../../components/select-clerk/index.vue';
import { getRequest } from '@/api/api'; import { getRequest, postRequest } from '@/api/api';
import errMsg from '@/common/js/error';
export default { export default {
components: { setActCode, SelectClerk }, components: { setActCode, SelectClerk },
data() { data() {
...@@ -39,9 +38,13 @@ export default { ...@@ -39,9 +38,13 @@ export default {
form: { form: {
hmType: 1, hmType: 1,
name: '', name: '',
clerkIdList: [] clerkIdList: [],
hmUserNum: null //多人活码人数
}, },
multiple: false multiple: false,
data: [],
dataArr: [],
detailCode: []
}; };
}, },
created() { created() {
...@@ -50,64 +53,61 @@ export default { ...@@ -50,64 +53,61 @@ export default {
} }
}, },
methods: { methods: {
changeEvent(e) {
this.data = [];
this.dataArr = [];
if (e == 2) {
this.multiple = true;
} else if (e == 1) {
this.multiple = false;
}
},
onChange(data) { onChange(data) {
console.log(data); this.data = data;
this.data = data.map(item => { this.form.clerkIdList = data.map(item => {
return item.clerkId;
});
this.dataArr = data.map(item => {
return item.clerkName; return item.clerkName;
}); });
if (this.form.name == '') { if (this.form.name == '') {
this.form.name = this.data.toString(); this.form.name = this.dataArr.toString();
} }
console.log(this.data, 909);
}, },
async getActCodeInfo() { async getActCodeInfo() {
const that = this; const that = this;
if (this.$route.query.hmId) return; if (this.$route.query.hmId) return;
that.loading = true; that.loading = true;
await getRequest('/hm/qrcode/detail', { hmId: this.$route.query.hmId }).then(res => { await getRequest('/hm/qrcode/detail', { hmId: this.$route.query.hmId }).then(res => {
console.log(res, 'detail'); this.detailCode = res.data;
// let res = { console.log(this.detailCode, 'detailcode');
// 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; 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
// });
}); });
}, },
submit(a) { onSubmit(event) {
console.log(a); let obj = {
}, ...event,
changeEvent(e) { ...this.form
if (e == 2) { };
this.multiple = true; console.log(obj, '父组件,整体表单数据');
} else if (e == 1) { if (this.$route.query.id) {
this.multiple = false; obj = {
...obj,
hm_id: this.detailCode.hmId
};
// 编辑
postRequest('/hm/qrcode/update', obj);
} else {
// 新增
postRequest('/hm/qrcode/add', obj);
} }
this.$refs.form.clearValidate();
this.form = {
hmType: 1,
name: '',
clerkIdList: [],
hmUserNum: null //多人活码人数
};
} }
} }
}; };
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<slot name="typeCode"></slot> <slot name="typeCode"></slot>
<slot name="codeName"></slot> <slot name="codeName"></slot>
<el-form-item label="活码分组" prop="hmGroupId"> <el-form-item label="活码分组" prop="hmGroupId">
<el-select class="w340" v-model="form.hmGroupId" v-loadmore="onLoadmore" clearable remote multiple filterable :remote-method="remoteMethod"> <el-select class="w340" v-model="form.hmGroupId" v-loadmore="onLoadmore" clearable remote filterable :remote-method="remoteMethod">
<el-option v-for="item in groupList" :key="item.groupId" :label="item.groupName" :value="item.groupId"></el-option> <el-option v-for="item in groupList" :key="item.groupId" :label="item.groupName" :value="item.groupId"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -20,7 +20,8 @@ ...@@ -20,7 +20,8 @@
<!-- <dm-memberTag-group :visiable.sync="tagsDialogVisible" @save="saveTagPop"></dm-memberTag-group> --> <!-- <dm-memberTag-group :visiable.sync="tagsDialogVisible" @save="saveTagPop"></dm-memberTag-group> -->
</el-form-item> </el-form-item>
<dm-sub-title text="欢迎语设置" type="line" class="mt40b20" /> <dm-sub-title text="欢迎语设置" type="line" class="mt40b20" />
<el-row> <welcomeItem></welcomeItem>
<!-- <el-row>
<el-col :span="17"> <el-col :span="17">
<el-form-item label="活码类型"> <el-form-item label="活码类型">
<el-radio-group v-model="welcomesType"> <el-radio-group v-model="welcomesType">
...@@ -40,7 +41,7 @@ ...@@ -40,7 +41,7 @@
<el-form-item label="选择欢迎语" v-if="welcomesType == 1"> <el-form-item label="选择欢迎语" v-if="welcomesType == 1">
<div class="welcomeTable"> <div class="welcomeTable">
<div class="wtabTop"> <div class="wtabTop">
<el-input class="w260" placeholder="请输入标题" v-model="pageParam.search"></el-input> <el-input class="w260" placeholder="请输入标题" v-model="welcomePage.search"></el-input>
<el-button plain class="ylbtn" @click="changeRoute">新建欢迎语</el-button> <el-button plain class="ylbtn" @click="changeRoute">新建欢迎语</el-button>
</div> </div>
<el-table :data="welcomeTableData"> <el-table :data="welcomeTableData">
...@@ -72,18 +73,17 @@ ...@@ -72,18 +73,17 @@
<p class="welcomeTitle">欢迎语预览</p> <p class="welcomeTitle">欢迎语预览</p>
<previewWelcome :welcomeContent="welcomeContent"></previewWelcome> <previewWelcome :welcomeContent="welcomeContent"></previewWelcome>
</el-col> </el-col>
</el-row> </el-row> -->
</el-form> </el-form>
</div> </div>
<div class="saveBtn"> <div class="saveBtn">
<el-button type="primary" @click="sumbit">保存</el-button> <el-button type="primary" @click="save">保存</el-button>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import previewWelcome from '../../../components/preview-welcome.vue'; import welcomeItem from '@/views/salesleads/components/welcomesItem.vue';
// import { findActCodeGroupListApi } from '@/api/actCode.js';
import { getRequest } from '@/api/api'; import { getRequest } from '@/api/api';
export default { export default {
name: 'setActCode', name: 'setActCode',
...@@ -100,7 +100,7 @@ export default { ...@@ -100,7 +100,7 @@ export default {
} }
} }
}, },
components: { previewWelcome }, components: { welcomeItem },
props: { props: {
actCodeData: { actCodeData: {
type: Object, type: Object,
...@@ -110,34 +110,35 @@ export default { ...@@ -110,34 +110,35 @@ export default {
data() { data() {
return { return {
form: { form: {
hmType: 1, //1单人 2多人 // hmType: 1, //1单人 2多人
name: '', // 名称 // name: '', // 名称
hmGroupId: null, //活码分组id hmGroupId: null, //活码分组id
passFlag: 1, // 1自动通过 0否 passFlag: 1, // 1自动通过 0否
memberLabelId: '', //会员活动标签id memberLabelId: '', //会员活动标签id
welcomeId: null, // 欢迎语id welcomeId: null, // 欢迎语id
clerkIdList: '', // 选择导购id // clerkIdList: '', // 选择导购id
storeId: '', //门店id storeId: '' //门店id
hmUserNum: null //多人活码人数 // hmUserNum: null //多人活码人数
}, },
welcomesType: 1, // welcomesType: 1,
rules: { rules: {
hmType: [{ required: true, message: '请选择活码类型', trigger: 'blur' }], // hmType: [{ required: true, message: '请选择活码类型', trigger: 'blur' }],
name: [{ required: true, message: '请输入活码名称', trigger: 'blur' }], hmGroupId: [{ required: true, message: '请选择活码分组', trigger: 'blur' }]
hmGroupId: [{ required: true, message: '请选择活码分组', trigger: 'blur' }], // clerkIdList: [{ required: true, message: '请选择使用成员', trigger: 'blur' }]
clerkIdList: [{ required: true, message: '请选择使用成员', trigger: 'blur' }]
}, },
welcomeTableData: [], // welcomeTableData: [],
tagsDialogVisible: false, tagsDialogVisible: false,
welcome: '', // welcome: '',
templateSelection: {}, // templateSelection: {},
welcomeContent: '', // welcomeContent: '',
welcomePage: { // // 欢迎语参数
search: '', // welcomePage: {
currentPage: 1 // search: '',
}, // currentPage: 1
// },
// 分组参数
pageParam: { pageParam: {
search: '', groupName: '',
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 20,
total: 1 total: 1
...@@ -147,7 +148,7 @@ export default { ...@@ -147,7 +148,7 @@ export default {
}; };
}, },
created() { created() {
this.getWelcomeTable(); // this.getWelcomeTable();
this.searchGroup(); this.searchGroup();
}, },
methods: { methods: {
...@@ -169,7 +170,7 @@ export default { ...@@ -169,7 +170,7 @@ export default {
const { result, pages } = res.data.result || {}; const { result, pages } = res.data.result || {};
this.pageParam.total = pages || 1; this.pageParam.total = pages || 1;
// console.log(this.groupList, 'list'); // console.log(this.groupList, 'list');
if (this.pageParam.search != '') { if (this.pageParam.groupName != '') {
this.groupList = result; this.groupList = result;
} else if (Array.isArray(result)) { } else if (Array.isArray(result)) {
this.groupList = this.groupList.concat(result); this.groupList = this.groupList.concat(result);
...@@ -181,7 +182,7 @@ export default { ...@@ -181,7 +182,7 @@ export default {
// 远程搜索 // 远程搜索
remoteMethod(query) { remoteMethod(query) {
if (query !== '') { if (query !== '') {
this.pageParam.search = query; this.pageParam.groupName = query;
this.pageParam.pageNum = 1; this.pageParam.pageNum = 1;
this.groupList = []; this.groupList = [];
this.searchGroup(); this.searchGroup();
...@@ -194,66 +195,70 @@ export default { ...@@ -194,66 +195,70 @@ export default {
this.remoteMethod(); this.remoteMethod();
} }
}, },
// 当前页变化 // // 当前页变化
handleCurrentChange(val) { // handleCurrentChange(val) {
this.welcomePage.currentPage = val; // this.welcomePage.currentPage = val;
this.getWelcomeTable(); // this.getWelcomeTable();
}, // },
// 选择欢迎语列表数据 // // 选择欢迎语列表数据
getWelcomeTable() { // getWelcomeTable() {
this.welcomeTableData = [ // this.welcomeTableData = [
{ // {
welcomeId: 1, // welcomeId: 1,
welcomeTitle: '标题标题标题', // welcomeTitle: '标题标题标题',
welcomeContent: '欢迎语内容欢迎语内容欢迎语内容 欢迎语内容欢迎语内容欢迎语内容欢迎语内容欢迎语内容 欢迎语内容欢迎语内容', // welcomeContent: '欢迎语内容欢迎语内容欢迎语内容 欢迎语内容欢迎语内容欢迎语内容欢迎语内容欢迎语内容 欢迎语内容欢迎语内容',
welcomeEnclosure: { // welcomeEnclosure: {
img: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg', // img: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
imgName: '图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称' // imgName: '图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称'
} // }
}, // },
{ // {
welcomeId: 2, // welcomeId: 2,
welcomeTitle: '标题标题标题', // welcomeTitle: '标题标题标题',
welcomeContent: '内容房价还是大家开始的房价款', // welcomeContent: '内容房价还是大家开始的房价款',
welcomeEnclosure: { // welcomeEnclosure: {
img: '', // img: '',
imgName: '图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称' // imgName: '图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称'
} // }
}, // },
{ // {
welcomeId: 3, // welcomeId: 3,
welcomeTitle: '标题标题标题', // welcomeTitle: '标题标题标题',
welcomeContent: '内容房价还是大家开始的房价款', // welcomeContent: '内容房价还是大家开始的房价款',
welcomeEnclosure: { // welcomeEnclosure: {
img: '', // img: '',
imgName: '图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称' // imgName: '图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称'
} // }
}, // },
{ // {
welcomeId: 4, // welcomeId: 4,
welcomeTitle: '标题标题标题', // welcomeTitle: '标题标题标题',
welcomeContent: '内容房价还是大家开始的房价款', // welcomeContent: '内容房价还是大家开始的房价款',
welcomeEnclosure: { // welcomeEnclosure: {
img: '', // img: '',
imgName: '图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称' // imgName: '图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称图片名称'
} // }
} // }
]; // ];
}, // },
// 新建欢迎语 // // 新建欢迎语
changeRoute() { // changeRoute() {
this.$router.push({ path: '/salutatorySet' }); // this.$router.push({ path: '/salutatorySet' });
}, // },
getCurrentRow(row) { // getCurrentRow(row) {
// 获取选中数据 row表示选中这一行的数据,可以从里面提取所需要的值 // // 获取选中数据 row表示选中这一行的数据,可以从里面提取所需要的值
this.templateSelection = row; // this.templateSelection = row;
this.welcomeContent = row.welcomeContent; // this.welcomeContent = row.welcomeContent;
this.form.welcomeId = row.welcomeId; // this.form.welcomeId = row.welcomeId;
}, // },
// 保存按钮 // 保存按钮
sumbit() { save() {
console.log(this.form, 'form保存'); this.$refs.form.validate(async valid => {
this.$emit('sumbit', this.form); if (valid) {
console.log(this.form, '子组件');
this.$emit('sumbit', this.form);
}
});
} }
} }
}; };
......
...@@ -83,7 +83,8 @@ export default { ...@@ -83,7 +83,8 @@ export default {
storeSearch: '', storeSearch: '',
clerkSearch: '', clerkSearch: '',
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20,
orderByField: ''
}, },
dateDefault: [], dateDefault: [],
totalCount: 0, totalCount: 0,
...@@ -197,8 +198,9 @@ export default { ...@@ -197,8 +198,9 @@ export default {
// 排序 // 排序
sortChange(column, prop, order) { sortChange(column, prop, order) {
const that = this; const that = this;
that.sortColumn = column.prop; that.sortColumn = column.property;
that.sortType = column.order == 'ascending' ? 'asc' : 'desc'; that.sortType = column.order == 'ascending' ? 'asc' : 'desc';
that.pageParam.orderByField = [that.sortColumn, that.sortType];
that.getTableList(); that.getTableList();
}, },
// 列表数据 // 列表数据
......
<template>
<div>
<el-row>
<el-col :span="17">
<el-form-item label="活码类型">
<el-radio-group v-model="welcomesType">
<el-radio :label="1">活码欢迎语</el-radio>
<el-radio :label="2">不发送欢迎语</el-radio>
</el-radio-group>
<ul class="tabs" v-if="welcomesType == 1">
<li>1.下方的欢迎语取自【设置-欢迎语设置】中的“特殊欢迎语”;</li>
<li>2.配置“活码欢迎语”后,通过此活码添加好友后,系统自动推送此处所配置的欢迎语</li>
<li>(根据企业微信规则,若所添加的该成员在企业微信后台已经配置了欢迎语,那么会推送企微后台所配置的欢迎语,不会推送此处的欢迎语)</li>
</ul>
<ul class="tabs" v-if="welcomesType == 2">
<li>通过此活码添加好友后,系统不推送欢迎语,及时在【设置-欢迎语设置】中为该成员配置了欢迎语。</li>
<li>(根据企业微信规则,若所添加的该成员在企业微信后台已经配置了欢迎语,那么企微后台的欢迎语会照常推送)</li>
</ul>
</el-form-item>
<el-form-item label="选择欢迎语" v-if="welcomesType == 1">
<div class="welcomeTable">
<div class="wtabTop">
<el-input class="w260" placeholder="请输入标题" v-model="welcomePage.search"></el-input>
<el-button plain class="ylbtn" @click="changeRoute">新建欢迎语</el-button>
</div>
<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="title" label="标题" width="158px"></el-table-column>
<el-table-column prop="welcomeContent" label="内容" show-overflow-tooltip></el-table-column>
<el-table-column label="附件" width="212px" show-overflow-tooltip>
<template slot-scope="{ row }">
<div class="enclosureBox">
<el-image class="img" :src="row.welcomeMediaList.mediaUrl">
<div slot="error" class="image-slot img">
<i class="el-icon-picture-outline" style="font-size:40px;"></i>
</div>
</el-image>
<p>{{ row.welcomeMediaList.mediaTitle ? row.welcomeMediaList.mediaTitle : '--' }}</p>
</div>
</template>
</el-table-column>
</el-table>
<dm-pagination class="paginationBox" background @current-change="handleCurrentChange" :current-page="welcomePage.pageNum" layout=" prev, pager, next " :page-size="welcomePage.pageSize" :total="totalNum"> </dm-pagination>
</div>
</el-form-item>
</el-col>
<el-col :span="7" v-if="welcomesType == 1 && welcomeContent != ''">
<p class="welcomeTitle">欢迎语预览</p>
<previewWelcome :welcomeContent="welcomeContent"></previewWelcome>
</el-col>
</el-row>
</div>
</template>
<script>
import previewWelcome from '@/components/preview-welcome.vue';
import { postJsonRequest } from '@/api/api';
export default {
name: 'welcomeItem',
components: { previewWelcome },
data() {
return {
welcomesType: 1,
welcomeTableData: [],
welcome: '',
welcomeContent: '',
// 欢迎语参数
welcomePage: {
wxEnterpriseId: sessionStorage.getItem('userInfos') ? JSON.parse(sessionStorage.getItem('userInfos')).wxEnterpriseId : '',
title: '',
type: 2,
pageNum: 1,
pageSize: 4
},
totalNum: 1,
welcomeId: '',
templateSelection: {}
};
},
created() {
this.getWelcomeTable();
},
methods: {
// 当前页变化
handleCurrentChange(val) {
this.welcomePage.pageNum = val;
this.getWelcomeTable();
},
// 选择欢迎语列表数据
async getWelcomeTable() {
await postJsonRequest('/haoban-manage3-web/welcome/list', this.welcomePage).then(res => {
this.welcomeTableData = res.data.result.result;
this.totalNum = res.data.result.totalCount;
});
},
// 新建欢迎语
changeRoute() {
this.$router.push({ path: '/salutatorySet' });
},
getCurrentRow(row) {
// 获取选中数据 row表示选中这一行的数据,可以从里面提取所需要的值
this.templateSelection = row;
this.welcomeContent = row.welcomeContent;
this.welcomeId = row.welcomeId;
}
}
};
</script>
<style lang="less" scoped>
.m20 {
margin: 20px;
}
.w340 {
width: 340px;
}
.mt20 {
margin-top: 20px;
}
.mt40b20 {
margin-top: 40px;
margin-bottom: 20px;
}
.mr15 {
margin-right: 15px;
}
.w260 {
width: 260px;
}
.tabs {
font-size: 12px;
color: #909399;
li {
line-height: 19px;
}
}
.ylbtn {
border: 1px solid #2f54eb;
color: #2f54eb;
}
.addPic {
font-size: 14px;
padding-right: 4px;
}
.welcomeTitle {
text-align: center;
margin-bottom: 26px;
margin-top: 6px;
font-weight: 500;
color: #303133;
font-size: 14px;
}
.welcomeTable {
width: 720px;
height: 429px;
border: 1px solid #dcdfe6;
padding: 12px;
position: relative;
.wtabTop {
display: flex;
justify-content: space-between;
margin-bottom: 12px;
}
.paginationBox {
position: absolute;
right: 7px;
bottom: 0;
margin-top: 46px;
margin-right: -4px;
}
.enclosureBox {
display: flex;
align-items: center;
.img {
width: 40px;
height: 40px;
margin-right: 10px;
}
p {
width: 143px;
max-width: 143px;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
</style>
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