Commit d885cff3 by crushh

Merge branch 'feature/act-code' of http://git.gicdev.com/office/haoban-3 into feature/act-code

parents bda22443 2b4079bd
......@@ -21,6 +21,7 @@ Vue.axios.defaults.timeout = 500000;
let local = window.location.origin;
const userInfos = JSON.parse(sessionStorage.getItem('userInfos') || '{}');
let gicHost = typeof userInfos.gicHost == 'string' ? userInfos.gicHost.replace(/\/$/, '') : '';
console.log(gicHost);
if (local.indexOf('localhost') >= 0) {
gicHost = local;
}
......
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1657604571745" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4621" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48"><defs><style type="text/css">@font-face { font-family: feedback-iconfont; src: url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff2?t=1630033759944") format("woff2"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.woff?t=1630033759944") format("woff"), url("//at.alicdn.com/t/font_1031158_u69w8yhxdu.ttf?t=1630033759944") format("truetype"); }
</style></defs><path d="M0 0h1022.464v1024H0V0z" fill="#F1F4F9" p-id="4622"></path><path d="M840.192 962.048c-1.024-154.624-147.456-260.096-328.192-260.096-178.176 0-323.584 102.4-328.192 253.44v26.112c0 23.04 13.824 41.984 31.232 41.984h594.432c16.896 0 31.232-18.944 31.232-41.984l-0.512-19.456c0 0.512 0 0 0 0z" fill="#DBE1EB" p-id="4623"></path><path d="M512 701.952c-37.376 0-75.264 4.096-111.616 12.8 26.112 25.6 58.88 44.544 94.208 54.784 58.88 17.92 122.368 0 163.328-45.568-47.104-14.848-96.256-22.016-145.92-22.016z" fill="#B9C4D6" p-id="4624"></path><path d="M512 245.76h245.76v245.76c0 135.68-110.08 245.76-245.76 245.76s-245.76-110.08-245.76-245.76 110.08-245.76 245.76-245.76z" fill="#DBE1EB" p-id="4625"></path><path d="M336.384 491.52c0 96.768 78.336 175.616 175.616 175.616S687.616 588.8 687.616 491.52c0-96.768-78.336-175.616-175.616-175.616C415.232 315.904 336.384 394.24 336.384 491.52z" fill="#FFFFFF" opacity=".8" p-id="4626"></path><path d="M415.232 421.376c0 9.728 7.68 17.408 17.408 17.408s17.408-7.68 17.408-17.408-7.68-17.408-17.408-17.408c-9.216-0.512-17.408 7.68-17.408 17.408zM573.44 421.376c0 9.728 7.68 17.408 17.408 17.408s17.408-7.68 17.408-17.408-7.68-17.408-17.408-17.408c-9.728-0.512-17.408 7.68-17.408 17.408z" fill="#4A4D53" opacity=".8" p-id="4627"></path><path d="M411.136 474.112h44.032c8.704 0 13.312 4.608 13.312 13.312 0 8.704-4.608 13.312-13.312 13.312h-44.032c-8.704 0-13.312-4.608-13.312-13.312 0-9.216 4.608-13.312 13.312-13.312zM568.832 474.112h44.032c8.704 0 13.312 4.608 13.312 13.312 0 8.704-4.608 13.312-13.312 13.312h-44.032c-8.704 0-13.312-4.608-13.312-13.312 0.512-9.216 4.608-13.312 13.312-13.312z" fill="#F9BCBC" opacity=".8" p-id="4628"></path><path d="M513.536 442.368c0 7.68-5.632 13.824-13.312 13.824s-13.312-6.656-13.312-13.824c0-1.024 0-2.56 0.512-3.584 1.536 6.144 6.656 10.24 12.8 10.752 6.144 0 11.776-4.608 13.312-10.752 1.536 6.144 6.656 10.24 13.312 10.752 6.144 0 11.264-4.608 12.8-10.752 0.512 1.024 0.512 2.56 0.512 3.584 0 7.68-5.632 13.824-13.312 13.824s-13.312-6.144-13.312-13.824z" fill="#4A4D53" opacity=".94" p-id="4629"></path></svg>
\ No newline at end of file
......@@ -36,7 +36,7 @@ export default {
// 是否多选
multiple: {
type: Boolean,
default: true
default: false
},
// 多选时最多可以选几条数据,默认100条
max: {
......
......@@ -10,21 +10,23 @@
<el-input placeholder="请输入导购名称/手机号/code" prefix-icon="el-icon-search" clearable style="margin-left: 10px; width: 250px"></el-input>
</div>
<!-- 导购列表的表头 -->
<el-table :class="['clerk-list-header', { 'hide-empty': storeList.length > 0 }]">
<el-table :class="['clerk-list-header', { 'hide-empty': storeClerkList.length > 0 }]">
<el-table-column min-width="67px">
<el-checkbox v-if="multiple" :disabled="canSelectAll()" slot="header"></el-checkbox>
<template #header>
<el-checkbox v-if="multiple" v-model="selectAll" @change="onSelectAll" :indeterminate="indeterminate" :disabled="storeClerkList.every(el => el.disabled)"></el-checkbox>
</template>
</el-table-column>
<el-table-column label="导购" min-width="230px"></el-table-column>
<el-table-column label="手机号码" min-width="160px"></el-table-column>
<el-table-column label="备注" min-width="168px"></el-table-column>
</el-table>
<!-- 导购列表 -->
<div v-if="storeList.length > 0" class="clerk-list-body">
<div v-for="el in storeList" :key="el.storeId" class="clerk-list-cell">
<div v-if="storeClerkList.length > 0" class="clerk-list-body">
<div v-for="el in storeClerkList" :key="el.storeId" class="clerk-list-cell">
<!-- 门店信息 -->
<el-table :data="[{}]" class="clerk-store-info" :show-header="false">
<el-table-column min-width="67px">
<el-checkbox v-if="multiple" :disabled="canSelectStore(el)"></el-checkbox>
<el-checkbox v-if="multiple" v-model="el.selected" @change="onSelectStore(el)" :indeterminate="el.indeterminate" :disabled="el.disabled"></el-checkbox>
</el-table-column>
<el-table-column min-width="558px">
<div class="clerk-store-name">{{ el.storeName }}</div>
......@@ -35,8 +37,8 @@
<el-table :data="el.clerkList" class="clerk-list-table" :show-header="false">
<el-table-column min-width="67px">
<template slot-scope="{ row }">
<el-checkbox v-if="multiple" @change="onSelectClerk(row)" :checked="selected.some(item => item.clerkId == row.clerkId)" :disabled="row.hmStatus == 1 || row.hmStatus == 2"></el-checkbox>
<el-radio v-else :disabled="row.hmStatus == 1 || row.hmStatus == 2 || row.hmStatus == 3"></el-radio>
<el-checkbox v-if="multiple" v-model="row.selected" @change="onSelectClerk(row, el)" :disabled="row.disabled"></el-checkbox>
<el-radio v-else v-model="row.selected" @change="onSelectClerk(row, el)" :disabled="row.disabled"></el-radio>
</template>
</el-table-column>
<el-table-column label="导购" min-width="230px">
......@@ -81,6 +83,7 @@
</template>
<script>
import { getRequest } from '@/api/api.js';
export default {
name: 'SelectClerk',
props: {
......@@ -99,67 +102,56 @@ export default {
}
},
watch: {
data() {
visible(flag) {
if (flag) {
this.selected = JSON.parse(JSON.stringify(this.data));
this.getStoreClerkList();
}
}
},
data() {
return {
storeList: [
{
storeId: 'store id',
storeName: '门店名称',
storeCode: 'store code',
clerkList: [
{
clerkId: 'clerk id',
clerkName: '导购名称',
clerkCode: 'clerk code',
phoneNumber: '18912341234',
hmStatus: 3 // 1未关联企微 2关联的企微号未配置客户联系功能 3已有单人活码(单人活码不能创建 多人活码可以) 4无单人活码(可以创建)
},
{
clerkId: 'clerk id1',
clerkName: '导购名称',
clerkCode: 'clerk code1',
phoneNumber: '18912341234',
hmStatus: 1 // 1未关联企微 2关联的企微号未配置客户联系功能 3已有单人活码(单人活码不能创建 多人活码可以) 4无单人活码(可以创建)
}
]
},
{
storeId: 'store id1',
storeName: '门店名称',
storeCode: 'store code',
clerkList: [
{
clerkId: 'clerk id11',
clerkName: '导购名称',
clerkCode: 'clerk code',
phoneNumber: '18912341234',
hmStatus: 2 // 1未关联企微 2关联的企微号未配置客户联系功能 3已有单人活码(单人活码不能创建 多人活码可以) 4无单人活码(可以创建)
},
{
clerkId: 'clerk id12',
clerkName: '导购名称',
clerkCode: 'clerk code1',
phoneNumber: '18912341234',
hmStatus: 1 // 1未关联企微 2关联的企微号未配置客户联系功能 3已有单人活码(单人活码不能创建 多人活码可以) 4无单人活码(可以创建)
}
]
}
],
// 门店-导购列表
storeClerkList: [],
// 全选的选中状态
selectAll: false,
// 全选的半选状态
indeterminate: false,
// 选中的导购
selected: []
};
},
methods: {
// 能否全选所有门店下的导购
canSelectAll() {
return this.storeList.map(el => this.canSelectStore(el)).every(el => el == true);
},
// 能否全选门店下的导购
canSelectStore(store) {
return store.clerkList.filter(item => item.hmStatus != 1 && item.hmStatus != 2).length == 0;
getStoreClerkList() {
getRequest('/haoban-manage3-web/hm/store-clerk-list', { pageNum: 1, pageSize: 20 }).then(res => {
const { code, message, result } = res.data || {};
if (code != 0) {
return this.$message.error(message);
}
result.result = Array.isArray(result.result) ? result.result : [];
this.storeClerkList = result.result.map(el => {
el.clerkList = Array.isArray(el.clerkList) ? el.clerkList : [];
el.clerkList = el.clerkList.map(item => {
// this.$set(item, 'disabled', this.multiple ? item.hmStatus == 1 || item.hmStatus == 2 : item.hmStatus == 1 || item.hmStatus == 2 || item.hmStatus == 3);
item.disabled = this.multiple ? item.hmStatus == 1 || item.hmStatus == 2 : item.hmStatus == 1 || item.hmStatus == 2 || item.hmStatus == 3;
item.disabled = false;
// this.$set(
// item,
// 'selected',
// this.data.some(clerk => clerk.clerkId == item.clerkId)
// );
item.selected = this.data.some(clerk => clerk.clerkId == item.clerkId);
return item;
});
this.$set(el, 'disabled', el.clerkList == 0 || el.clerkList.every(el => el.disabled));
// el.disabled = el.clerkList == 0 || el.clerkList.every(el => el.disabled);
this.$set(el, 'selected', el.clerkList.length > 0 && el.clerkList.every(el => el.selected));
// el.selected = el.clerkList.length > 0 && el.clerkList.every(el => el.selected);
this.$set(el, 'indeterminate', !el.selected && el.clerkList.some(el => el.selected));
// el.indeterminate = !el.selected && el.clerkList.some(el => el.selected);
return el;
});
});
},
// 解析备注
formatRemark(status) {
......@@ -181,18 +173,82 @@ export default {
}
return result;
},
// 全选所有导购
onSelectAll() {
// 只能全选本页,或者取消本页的全选
this.storeClerkList.forEach(el => {
if (!el.disabled && this.selected.length < this.max) {
el.selected = this.selectAll;
this.onSelectStore(el, true);
}
});
// 计算全选的选中状态,计算半选的选中状态
this.selectAll = this.storeClerkList.filter(el => !el.disabled).every(el => el.selected);
this.indeterminate = !this.selectAll && this.storeClerkList.filter(el => !el.disabled).some(el => el.selected || el.indeterminate);
},
// 全选门店下的导购
onSelectStore(store, isAll) {
store.clerkList.forEach(el => {
if (!el.disabled && this.selected.length < this.max) {
el.selected = store.selected;
this.onSelectClerk(el, store, true);
}
});
// 计算门店的选中状态,计算门店的半选状态
store.selected = store.clerkList.filter(el => !el.disabled).every(el => el.selected);
store.indeterminate = !store.selected && store.clerkList.some(el => el.selected);
if (!isAll) {
// 计算全选的选中状态,计算半选的选中状态
this.selectAll = this.storeClerkList.filter(el => !el.disabled).every(el => el.selected);
this.indeterminate = !this.selectAll && this.storeClerkList.filter(el => !el.disabled).some(el => el.selected || el.indeterminate);
}
},
// 选择单个导购
onSelectClerk(clerk) {
onSelectClerk(clerk, store, isAll) {
// 单选时只能选一个导购,不存在全选门店和全选所有的选择框
if (!this.multiple) {
if (this.selected.length > 0) {
this.selected[0].selected = false;
this.selected = [];
}
this.selected.push(clerk);
return;
}
// 选择单个导购时
if (clerk.selected) {
// 计算有没有超过上限
if (this.selected.length < this.max) {
this.selected.push(clerk);
} else {
this.$message.warning(`最多只能选择 ${this.max} 个导购`);
}
} else {
const index = this.selected.findIndex(el => el.clerkId == clerk.clerkId);
index == -1 ? this.selected.push(clerk) : this.selected.splice(index, 1);
this.selected.splice(index, 1);
}
if (!isAll) {
// 计算门店的选中状态,计算门店的半选状态
store.selected = store.clerkList.filter(el => !el.disabled).every(el => el.selected);
store.indeterminate = !store.selected && store.clerkList.some(el => el.selected);
// 计算全选的选中状态,计算半选的选中状态
this.selectAll = this.storeClerkList.filter(el => !el.disabled).every(el => el.selected);
this.indeterminate = !this.selectAll && this.storeClerkList.some(el => el.selected || el.indeterminate);
}
},
onDelAll() {
this.selected.splice(0);
this.selectAll = false;
this.onSelectAll();
},
onDel(index) {
this.selected.splice(index, 1);
const clerk = this.selected[index];
clerk.selected = false;
this.onSelectClerk(
clerk,
this.storeClerkList.find(el => el.clerkList.some(item => item.clerkId == clerk.clerkId))
);
},
onCancel() {
this.selected = [];
this.$emit('update:visible', false);
},
onSave() {
......
......@@ -9,7 +9,7 @@
<el-table-column prop="" label="基本信息" show-overflow-tooltip min-width="210px" fixed>
<template>
<div class="flex">
<img class="image-40" src="../../../../assets/data/time.png" />
<img class="image-40" src="@/assets/user-default.svg" />
<div class="p-l-10 line-20" style="width: calc(100% - 50px);">
<div class="flex text-ellipsis">
<span class="text-ellipsis">飞扬飞扬飞扬飞扬飞扬飞扬飞扬</span>
......@@ -185,15 +185,11 @@ export default {
},
mounted() {
let that = this;
// that.$emit('showTab', '1');
that.getTableList();
}
};
</script>
<style type="text/scss" lang="scss" scoped>
.w-123 {
width: 123px;
}
.p-20 {
padding: 20px;
box-sizing: border-box;
......
......@@ -3,17 +3,16 @@
<div class="border-box">
<div class="list-body flex">
<div class="list-left border-box">
<group-list ref="groupListRef"></group-list>
<group-list ref="groupListRef" @updateList="getCurrentGroupID"></group-list>
</div>
<div class="list-right p-20 border-box">
<dm-sub-title text="配置标签" class="m-b-10">
<div class="title">
<span>员工活码</span>
<span class="info-content cur-po"><i class="el-icon-info info-icon"></i>指标说明</span>
<span class="info-content cur-po"><i class="iconfont-hb3 iconzhibiaoshuoming info-icon"></i>指标说明</span>
</div>
</dm-sub-title>
<select-clerk @change="onChange"></select-clerk>
<act-code-table></act-code-table>
<act-code-table :currentGroupId="currentGroupId"></act-code-table>
</div>
</div>
</div>
......@@ -22,20 +21,31 @@
<script>
import GroupList from './views/group-list.vue';
import ActCodeTable from './views/act-code-table.vue';
import SelectClerk from '../components/select-clerk/index.vue';
export default {
name: 'staffActCode',
components: {
GroupList,
ActCodeTable,
SelectClerk
ActCodeTable
},
data() {
return {};
return {
currentGroupId: null
};
},
methods: {
onChange(data) {
console.log(data);
getCurrentGroupID(CurGroupId) {
this.currentGroupId = CurGroupId;
}
},
watch: {
currentGroupId: {
handler: function(val) {
console.log(val, 111);
if (val != null) {
this.currentGroupId = val;
}
},
immediate: true
}
}
};
......
......@@ -7,13 +7,13 @@
</el-input>
</el-form-item>
<el-form-item>
<el-select v-model="searchForm.storeSearch" style="width: 130px">
<el-select v-model="searchForm.storeSearch" placeholder="请选择" style="width: 128px" @change="searchList">
<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="`${storeSearch == 1 ? '门店名称' : '成员姓名'} / code`" :remote-method="remoteMethod" :loading="selectLoading" style="margin-left: -4px" @change="searchList">
<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-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.statusFlag" placeholder="全部状态" clearable class="w160" @change="searchList">
......@@ -30,15 +30,15 @@
</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 HH:mm:ss'" type="datetimerange" align="right" unlink-panels range-separator="至" start-placeholder="创建开始日期" end-placeholder="创建结束日期"> </el-date-picker>
<el-date-picker v-model="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-form-item class="frmbt20">
<el-button @click="batchGoupEvent">批量分组</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">
<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 width="60" class-name="table-select-cell" fixed>
<template #header>
......@@ -113,12 +113,12 @@
</el-table-column>
<el-table-column label="创建人" width="100">
<template slot-scope="{ row }">
<p>{{ row.hmId }}</p>
<p>{{ row.creatorName }}</p>
</template>
</el-table-column>
<el-table-column label="创建时间" sortable="custom" width="120">
<template slot-scope="{ row }">
<p>{{ row.hmId }}</p>
<p>{{ row.createTime }}</p>
</template>
</el-table-column>
<el-table-column label="操作" width="300" fixed="right">
......@@ -130,15 +130,47 @@
<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.pageNum" :page-sizes="[20, 40, 60, 80]" :page-size="pageParam.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalCount"> </dm-pagination>
</div>
<el-dialog title="选择分组" :visible.sync="dialogGroupFormVisible" width="25%">
<el-form :model="formGroup">
<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-option v-for="item in groupList" :key="item.groupId" :label="item.groupName" :value="item.groupId"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogGroupFormVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogGroupFormVisible = false">确 定</el-button>
</div>
</el-dialog>
</section>
</template>
<script>
import { actCodeListApi } from '@/api/actCode.js';
// import errMsg from '@/common/js/error';
import { deleteRequest } from '@/api/api';
import { deleteRequest, getRequest } from '@/api/api';
export default {
name: 'actCodeTable',
directives: {
loadmore: {
inserted(el, binding) {
const SELECTDOWN_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap');
SELECTDOWN_DOM.addEventListener('scroll', function() {
const CONDITION = this.scrollHeight + this.scrollTop >= this.clientHeight;
if (CONDITION) {
binding.value();
}
});
}
}
},
props: {
currentGroupId: {
type: [Number, String],
default: null
}
},
data() {
let tableMaxHeight = document.body.clientHeight - 312 + 'px';
return {
......@@ -149,10 +181,11 @@ export default {
statusFlag: '',
storeSearch: 1,
hmType: '',
dateTime: '',
createTimeStart: '',
createTimeEnd: ''
},
dateTime: [],
tableData: [],
total: 1,
totalCount: 100,
......@@ -279,7 +312,7 @@ export default {
text: '数据',
visible: true,
handler: row => {
console.log(row);
this.$router.push(`/actCodeDetail?hmId=${row.hmId}`);
}
},
{
......@@ -308,8 +341,13 @@ export default {
text: '作废',
visible: true,
handler: row => {
const aa = deleteRequest('/hm/qrcode/del', { hmId: row.hmId });
return console.log(aa, 'aa');
this.$confirm('确认要作废该活码?此操作将永久废弃该活码,请确保不影响其他投放使用!', '作废提示', {
confirmButtonText: '删除',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteRequest('/hm/qrcode/del', { hmId: row.hmId }).then(res => {});
});
}
}
],
......@@ -331,13 +369,75 @@ export default {
},
sortColumn: '',
sortType: '',
multipleSelection: []
multipleSelection: [],
selectHmIds: [],
dialogGroupFormVisible: false,
formGroup: {
groupList: []
},
groupList: [],
pageParamGroup: {
search: '',
pageNum: 1,
pageSize: 20,
total: 1
}
};
},
created() {
this.getTableList();
this.searchGroup();
},
methods: {
onLoadmore() {
if (this.pageParamGroup.pageNum >= this.pageParamGroup.total) return;
this.pageParamGroup.pageNum++;
this.searchGroup();
},
async searchGroup() {
if (this.pageParamGroup.pageNum == 1) {
this.groupList = [];
}
await getRequest('/haoban-manage3-web/hm/group/list', this.pageParamGroup).then(res => {
if (res.data.code == 0) {
const { result, pages } = res.data.result || {};
this.pageParamGroup.total = pages;
// console.log(this.groupList, 'list');
if (Array.isArray(result)) {
this.groupList = this.groupList.concat(result);
}
}
});
},
// 远程搜索
remoteMethod(query) {
if (query !== '') {
this.pageParamGroup.search = query;
this.pageParamGroup.pageNum = 1;
this.groupList = [];
this.searchGroup();
} else {
this.groupList = [];
}
},
visibleChange(e) {
if (!e) {
this.remoteMethod();
}
},
// 表格选中事件
selectTable(selection, row) {
console.log(selection);
this.selectHmIds = selection.map(item => {
return item.hmId;
});
console.log(this.selectHmIds, 'iss');
},
// 批量分组
batchGoupEvent() {
console.log('批量分组');
this.dialogGroupFormVisible = true;
},
onCommand() {
console.log('hello');
},
......@@ -347,16 +447,15 @@ export default {
// 当前页变化
handleCurrentChange(val) {
this.pageParam.pageNum = val;
sessionStorage.setItem('pageNum', val);
// this.getAjaxMembers();
this.getTableList();
},
// 页码
handleSizeChange(val) {
this.pageParam.pageNum = 1;
this.pageParam.pageSize = val;
this.getTableList();
// this.getAjaxMembers();
},
remoteMethod(query) {
remoteMethods(query) {
console.log(query);
},
// 排序
......@@ -379,15 +478,22 @@ export default {
},
getTableList() {
this.loadingStatus = true;
if (this.dateTime && this.dateTime.length) {
this.searchForm.createTimeStart = this.dateTime ? Date.parse(new Date(this.dateTime[0]).toString()) : '';
this.searchForm.createTimeEnd = this.dateTime ? Date.parse(new Date(this.dateTime[1]).toString()) : '';
}
this.searchForm = {
...this.searchForm
};
if (this.currentGroupId != null) {
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()) : ''
hmGroupId: this.currentGroupId
};
delete this.searchForm.dateTime;
}
// delete this.searchForm.dateTime;
actCodeListApi(Object.assign({}, this.searchForm, this.pageParam))
.then(res => {
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);
......@@ -421,11 +527,32 @@ export default {
// });
// });
// }
},
watch: {
currentGroupId: {
handler: function(val) {
if (val != null) {
this.currentGroupId = val;
this.pageParam.pageNum = 1;
this.getTableList();
}
},
immediate: true
}
}
};
</script>
<style lang="less" scoped>
.frmbt20 {
margin-bottom: 20px !important;
margin-right: 0 !important;
float: right;
padding-right: 0 !important;
}
.ml10 {
margin-left: 10px;
}
.w160 {
width: 160px;
}
......
......@@ -9,13 +9,14 @@
</el-form-item>
</template>
<template #member>
<el-form-item label="使用成员" prop="memberType">
<el-form-item label="使用成员" :rules="[{ required: true, message: '请选择使用成员', trigger: 'blur' }]">
<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-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" @change="onChange"></select-clerk>
</el-form-item>
</template>
</setActCode>
......@@ -23,18 +24,24 @@
</template>
<script>
import setActCode from '../../../components/actCodeSet.vue';
import setActCode from '@/views/salesleads/components/actCodeSet.vue';
import SelectClerk from '../../components/select-clerk/index.vue';
export default {
components: { setActCode },
components: { setActCode, SelectClerk },
data() {
return {
form: {
hmType: 1,
clerkIdList: 1,
memberType: 1
}
};
},
methods: {}
methods: {
onChange(data) {
console.log(data);
}
}
};
</script>
<style lang="less" scoped>
......
<template>
<section>
<div class="mb-10 mt-20 pl-16 pr-15">
<el-input placeholder="请输入分组名称" maxlength="50" v-model="searchGroupInput" @keyup.native="value => searchGroup(value)">
<!-- @keyup.native="value => searchGroup(value)" -->
<el-input placeholder="请输入分组名称" maxlength="50" v-model="searchGroupInput" @change="searchGroup">
<i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-input>
</div>
......@@ -12,15 +13,21 @@
<span :title="listItem.groupName" class="listItemName overflow-ellipsis">{{ listItem.groupName }}</span>
<span>{{ `(${listItem.referNum})` }}</span>
</div>
<el-popover placement="bottom" trigger="hover" v-if="isShowGroupListItemMore(listItem)">
<el-popover placement="bottom" trigger="click" v-if="isShowGroupListItemMore(listItem)">
<p class="more" @click="editGroupListItem(listItem)">编辑</p>
<p class="more" @click="delGroupListItem(listItem)" v-if="!listItem.referNum">删除</p>
<i slot="reference" class="iconfont-hb3 icongengduo icon"></i>
<i slot="reference" class="iconfont-hb3 icongengduo icon iconhover" v-if="listItem.groupName != '全部分组' && listItem.groupName != '默认分组'"></i>
</el-popover>
</li>
<li>
<div class="el-loading-spinner" style="width: 86%;" v-if="groupLoading">
<i class="el-icon-loading"></i>
</div>
</li>
</ul>
<p v-if="searchTip" class="searchTip">没有找到和“{{ searchGroupInput }}”相关的内容</p>
</div>
<div class="add-category">
<div class="add-category" v-if="searchGroupInput == ''">
<el-button type="primary" class="ghost-btn add-group" @click="addGroup">新增分组</el-button>
</div>
<!-- 新增/编辑分组 -->
......@@ -45,22 +52,18 @@ import { getRequest } from '@/api/api';
export default {
name: 'staffActCodeGroupList',
data() {
const groupList = [
{
groupName: '全部分组',
referNum: 11,
groupId: 1
}
// {
// groupName: '默认分组',
// referNum: 10,
// groupId: 2
// }
];
return {
searchTip: false,
groupLoading: false,
currentListItemUuid: 1,
searchGroupInput: '',
groupList: groupList,
groupList: [
{
groupName: '全部分组',
referNum: '',
groupId: null
}
],
scrollLoad: false,
title: '新增分组',
addOrEditGroupDialog: false,
......@@ -75,7 +78,12 @@ export default {
// 分页相关
pageNum: 1,
allPageNum: 1,
pageSize: 20,
pageP: {
groupName: '',
pageNum: 1,
pageSize: 20
}
};
},
created() {
......@@ -83,19 +91,8 @@ export default {
},
methods: {
load() {
// const length = this.groupList.length;
// if (length > 50) {
// return (this.scrollLoad = true);
// }
// for (let index = 0; index < 6; index++) {
// this.groupList.push({
// groupName: '单人分组',
// number: length + index,
// groupId: length + index
// });
// }
if (this.allPageNum > this.pageNum) {
this.pageNum++;
if (this.allPageNum > this.pageP.pageNum) {
this.pageP.pageNum++;
this.searchGroup();
} else {
this.scrollLoad = true;
......@@ -103,6 +100,7 @@ export default {
},
clickGroupListItem(listItem) {
this.currentListItemUuid = listItem.groupId;
this.$emit('updateList', this.currentListItemUuid);
},
isShowGroupListItemMore(listItem) {
const hiddenListItemMore = [1, 2];
......@@ -173,7 +171,6 @@ export default {
};
res = await addActCodeGroupApi(params);
}
// return console.log(res, 'res');
if (res.data.code == 0) {
this.$message({
type: 'success',
......@@ -184,7 +181,7 @@ export default {
const groupListItem = this.groupList.find(({ groupId }) => groupId == this.groupListForm.groupId);
groupListItem.groupName = this.groupListForm.groupName;
} else {
this.pageNum = 1;
this.pageP.pageNum = 1;
this.searchGroup();
}
this.addOrEditGroupDialog = false;
......@@ -198,34 +195,31 @@ export default {
});
},
async searchGroup(val) {
this.groupLoading = true;
const countNum = await getRequest('/haoban-manage3-web/hm/group/refer/count', {});
// this.groupList[0].referNum = countNum.data.result;
if (this.pageNum == 1) {
this.groupList = [];
if (this.pageP.pageNum == 1) {
this.groupList[0].referNum = countNum.data.result;
}
this.pageNum < this.allPageNum && this.pageNum++;
const params = {
pageNum: this.pageNum,
pageSize: this.pageSize
};
// this.pageP.pageNum < this.allPageNum && this.pageP.pageNum++;
if (String(this.searchGroupInput)) {
params.groupName = this.searchGroupInput;
this.pageP.pageNum = 1;
this.pageP.groupName = this.searchGroupInput;
this.groupList = [];
}
await getRequest('/haoban-manage3-web/hm/group/list', params).then(res => {
await getRequest('/haoban-manage3-web/hm/group/list', this.pageP).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;
const { result, pages } = res.data.result || {};
this.groupList = this.groupList.concat(result);
if (this.searchGroupInput == '') {
this.searchTip = false;
} else if (this.searchGroupInput != '') {
this.groupList.splice(0, 1);
if (this.groupList.length <= 0) {
this.searchTip = true;
}
}
this.allPageNum = pages || 1;
this.groupLoading = false;
}
});
}
......@@ -259,10 +253,17 @@ export default {
justify-content: space-between;
align-items: center;
padding: 0 5px 0 10px;
&:hover,
&:hover {
color: #303133;
background: #f2f3f5;
}
&.active-li {
color: #2f54eb;
background: #ebeffe;
.iconhover:hover,
.iconhover:active {
background: #d8defc;
}
}
}
.more {
......@@ -294,4 +295,11 @@ export default {
font-size: 12px;
color: #909399;
}
.searchTip {
width: 100%;
text-align: center;
margin-top: 80%;
color: #909399;
font-size: 14px;
}
</style>
<template>
<div>
<setActCode>
<setActCode @submit="submit">
<template #typeCode>
<el-form-item label="活码类型" prop="hmType">
<el-radio-group v-model="form.hmType">
<el-radio-group v-model="form.hmType" @change="changeEvent">
<el-radio :label="1">单人活码</el-radio>
<el-radio :label="2">多人活码</el-radio>
</el-radio-group>
......@@ -15,10 +15,11 @@
</el-form-item>
</template>
<template #member>
<el-form-item label="使用成员" prop="memberList">
<el-form-item label="使用成员" prop="clerkIdList">
<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-button plain class="ylbtn"><i class="iconfont-components3 icon-cp-PlusOutlined addPic"></i>添加成员</el-button> -->
<select-clerk :multiple="multiple" :data="data" @change="onChange"></select-clerk>
</el-form-item>
</template>
</setActCode>
......@@ -26,56 +27,69 @@
</template>
<script>
import setActCode from '../../../components/actCodeSet.vue';
// import { getRequest } from '@/api/api';
import setActCode from '@/views/salesleads/components/actCodeSet.vue';
import SelectClerk from '../../components/select-clerk/index.vue';
import { getRequest } from '@/api/api';
import errMsg from '@/common/js/error';
export default {
components: { setActCode },
created() {
console.log(this.$route.query, 7878);
},
components: { setActCode, SelectClerk },
data() {
return {
loading: false,
form: {
hmType: 1,
name: '',
memberList: []
}
clerkIdList: []
},
multiple: false
};
},
created() {
if (this.$route.query.hmId) {
this.getActCodeInfo();
}
},
methods: {
onChange(data) {
console.log(data);
this.data = data.map(item => {
return item.clerkName;
});
if (this.form.name == '') {
this.form.name = this.data.toString();
}
console.log(this.data, 909);
},
async getActCodeInfo() {
const that = this;
that.actCode = '999';
if (that.actCode.length <= 0) return;
if (this.$route.query.hmId) 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'
}
}
};
await getRequest('/hm/qrcode/detail', { hmId: this.$route.query.hmId }).then(res => {
console.log(res, 'detail');
// 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;
}
// 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) {
......@@ -83,7 +97,17 @@ export default {
// duration: 1000,
// message: error.message
// });
// });
});
},
submit(a) {
console.log(a);
},
changeEvent(e) {
if (e == 2) {
this.multiple = true;
} else if (e == 1) {
this.multiple = false;
}
}
}
};
......
......@@ -5,9 +5,9 @@
<el-form class="mt20" ref="form" :model="form" :rules="rules" label-width="110px">
<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-form-item label="活码分组" prop="hmGroupId">
<el-select class="w340" v-model="form.hmGroupId" v-loadmore="onLoadmore" clearable remote multiple filterable :remote-method="remoteMethod">
<el-option v-for="item in groupList" :key="item.groupId" :label="item.groupName" :value="item.groupId"></el-option>
</el-select>
</el-form-item>
<slot name="member"></slot>
......@@ -17,27 +17,27 @@
</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" :projectName="haobao - 3"></dm-memberTag-group>
<!-- <dm-memberTag-group :visiable.sync="tagsDialogVisible" @save="saveTagPop"></dm-memberTag-group> -->
</el-form-item>
<dm-sub-title text="欢迎语设置" type="line" class="mt40b20" />
<el-row>
<el-col :span="17">
<el-form-item label="活码类型" prop="welcomes">
<el-radio-group v-model="form.welcomes">
<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="form.welcomes == 1">
<ul class="tabs" v-if="welcomesType == 1">
<li>1.下方的欢迎语取自【设置-欢迎语设置】中的“特殊欢迎语”;</li>
<li>2.配置“活码欢迎语”后,通过此活码添加好友后,系统自动推送此处所配置的欢迎语</li>
<li>(根据企业微信规则,若所添加的该成员在企业微信后台已经配置了欢迎语,那么会推送企微后台所配置的欢迎语,不会推送此处的欢迎语)</li>
</ul>
<ul class="tabs" v-if="form.welcomes == 2">
<ul class="tabs" v-if="welcomesType == 2">
<li>通过此活码添加好友后,系统不推送欢迎语,及时在【设置-欢迎语设置】中为该成员配置了欢迎语。</li>
<li>(根据企业微信规则,若所添加的该成员在企业微信后台已经配置了欢迎语,那么企微后台的欢迎语会照常推送)</li>
</ul>
</el-form-item>
<el-form-item label="选择欢迎语" v-if="form.welcomes == 1">
<el-form-item label="选择欢迎语" v-if="welcomesType == 1">
<div class="welcomeTable">
<div class="wtabTop">
<el-input class="w260" placeholder="请输入标题" v-model="pageParam.search"></el-input>
......@@ -64,11 +64,11 @@
</template>
</el-table-column>
</el-table>
<dm-pagination class="paginationBox" background @current-change="handleCurrentChange" :current-page="pageParam.currentPage" layout=" prev, pager, next " :page-size="4" :total="100"> </dm-pagination>
<dm-pagination class="paginationBox" background @current-change="handleCurrentChange" :current-page="welcomePage.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 && welcomeContent != ''">
<el-col :span="7" v-if="welcomesType == 1 && welcomeContent != ''">
<p class="welcomeTitle">欢迎语预览</p>
<previewWelcome :welcomeContent="welcomeContent"></previewWelcome>
</el-col>
......@@ -84,8 +84,22 @@
<script>
import previewWelcome from '../../../components/preview-welcome.vue';
// import { findActCodeGroupListApi } from '@/api/actCode.js';
import { getRequest } from '@/api/api';
export default {
name: 'setActCode',
directives: {
loadmore: {
inserted(el, binding) {
const SELECTDOWN_DOM = el.querySelector('.el-select-dropdown .el-select-dropdown__wrap');
SELECTDOWN_DOM.addEventListener('scroll', function() {
const CONDITION = this.scrollHeight + this.scrollTop >= this.clientHeight;
if (CONDITION) {
binding.value();
}
});
}
}
},
components: { previewWelcome },
props: {
actCodeData: {
......@@ -96,56 +110,94 @@ export default {
data() {
return {
form: {
hmType: 1,
name: '',
actGroup: null,
memberList: [],
passFlag: true,
actLabel: null,
welcomes: 1,
chooseWelcomes: null
hmType: 1, //1单人 2多人
name: '', // 名称
hmGroupId: null, //活码分组id
passFlag: 1, // 1自动通过 0否
memberLabelId: '', //会员活动标签id
welcomeId: null, // 欢迎语id
clerkIdList: '', // 选择导购id
storeId: '', //门店id
hmUserNum: null //多人活码人数
},
welcomesType: 1,
rules: {
hmType: [{ required: true, message: ' ', trigger: 'blur' }],
name: [{ required: true, message: ' ', trigger: 'blur' }],
actGroup: [{ required: true, message: ' ', trigger: 'blur' }],
memberList: [{ required: true, message: ' ', trigger: 'blur' }]
hmType: [{ required: true, message: '请选择活码类型', trigger: 'blur' }],
name: [{ required: true, message: '请输入活码名称', trigger: 'blur' }],
hmGroupId: [{ required: true, message: '请选择活码分组', trigger: 'blur' }],
clerkIdList: [{ required: true, message: '请选择使用成员', trigger: 'blur' }]
},
welcomeTableData: [],
tagsDialogVisible: false,
data: '',
welcome: '',
templateSelection: {},
welcomeContent: '',
pageParam: {
welcomePage: {
search: '',
currentPage: 1
},
groupList: []
pageParam: {
search: '',
pageNum: 1,
pageSize: 20,
total: 1
},
groupList: [],
data: ''
};
},
created() {
this.getWelcomeTable();
// this.searchGroup();
this.searchGroup();
},
methods: {
searchGroup(val) {
// const params = {
// pageNum: 1,
// pageSize: 4
// };
// if (String(this.searchGroupInput)) {
// params.groupName = this.searchGroupInput;
// }
// findActCodeGroupListApi(params).then(res => {
// console.log(res);
// });
saveTagPop(data) {
console.log(data);
this.data = data;
},
onLoadmore() {
if (this.pageParam.pageNum >= this.pageParam.total) return;
this.pageParam.pageNum++;
this.searchGroup();
},
async searchGroup() {
if (this.pageParam.pageNum == 1) {
this.groupList = [];
}
await getRequest('/haoban-manage3-web/hm/group/list', this.pageParam).then(res => {
if (res.data.code == 0) {
const { result, pages } = res.data.result || {};
this.pageParam.total = pages || 1;
// console.log(this.groupList, 'list');
if (this.pageParam.search != '') {
this.groupList = result;
} else if (Array.isArray(result)) {
this.groupList = this.groupList.concat(result);
}
// console.log(this.groupList, 909090);
}
});
},
// 远程搜索
remoteMethod(query) {
if (query !== '') {
this.pageParam.search = query;
this.pageParam.pageNum = 1;
this.groupList = [];
this.searchGroup();
} else {
this.groupList = [];
}
},
visibleChange(e) {
if (!e) {
this.remoteMethod();
}
},
// 当前页变化
handleCurrentChange(val) {
console.log(val);
this.pageParam.currentPage = val;
// this.getAjaxMembers();
this.welcomePage.currentPage = val;
this.getWelcomeTable();
},
// 选择欢迎语列表数据
getWelcomeTable() {
......@@ -195,15 +247,13 @@ export default {
getCurrentRow(row) {
// 获取选中数据 row表示选中这一行的数据,可以从里面提取所需要的值
this.templateSelection = row;
this.welcomeContent = this.templateSelection.welcomeContent;
},
saveTagPop(data) {
console.log(data);
this.data = data;
this.welcomeContent = row.welcomeContent;
this.form.welcomeId = row.welcomeId;
},
// 保存按钮
sumbit() {
console.log('保存');
console.log(this.form, 'form保存');
this.$emit('sumbit', this.form);
}
}
};
......
......@@ -28,14 +28,14 @@
</el-table-column>
<el-table-column label="企微号">
<template slot-scope="{ row }">
<p class="overflow-ellipsis" :title="row.qw">{{ row.qw }}</p>
<p>{{ row.qwCode }}</p>
<p class="overflow-ellipsis" :title="row.staffName">{{ row.staffName }}</p>
<!-- <p>{{ row.staffCode }}</p> -->
</template>
</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="addNumT" sortable></el-table-column>
<el-table-column label="今日新增总人数" prop="addNum" 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="overFlag">
<template slot-scope="{ row }">
<p>{{ row.overFlag == 1 ? '是' : '否' }}</p>
......@@ -43,7 +43,7 @@
</el-table-column>
<el-table-column label="操作">
<template slot-scope="{ row }">
<el-button type="text" @click="lookRecords(row.hmId)">查看记录</el-button>
<el-button type="text" @click="lookRecords(row)">查看记录</el-button>
</template>
</el-table-column>
</el-table>
......@@ -59,6 +59,10 @@ export default {
id: {
type: String,
default: ''
},
typeT: {
type: String,
default: 'code'
}
},
data() {
......@@ -72,6 +76,10 @@ export default {
],
tableData: [],
pageParam: {
hmId: '',
linkId: '',
startTime: '',
endTime: '',
storeSearch: '',
clerkSearch: '',
pageNum: 1,
......@@ -86,12 +94,8 @@ export default {
return {
onPick(obj) {
pickerMinDate = obj.minDate;
// console.log(pickerMinDate);
},
disabledDate(time) {
// const date = new Date();
// const year = date.getFullYear();
// return time.getTime() > Date.now() || time.getTime() < date.setFullYear(year - 2);
let start = new Date();
start = new Date(`${start.getFullYear()}-${start.getMonth() + 1}-${start.getDate()}`);
let start2 = new Date(pickerMinDate);
......@@ -100,9 +104,9 @@ export default {
let end2 = new Date(pickerMinDate);
if (pickerMinDate) {
start = start.setFullYear(start.getFullYear() - 2);
start2 = start2.setDate(start2.getDate() - 60);
start2 = start2.setMonth(start2.getMonth() - 6);
start = start > start2 ? start : start2;
end2 = end2.setDate(end2.getDate() + 60);
end2 = end2.setMonth(end2.getMonth() + 6);
end = end.getTime() > end2 ? end2 : end.getTime();
// console.log('end2', end2, end);
} else {
......@@ -161,12 +165,14 @@ export default {
// 近三个月
setDate = endDate => {
endDate.setMonth(endDate.getMonth() - 3);
endDate.setDate(endDate.getDate() + 1);
return new Date(endDate);
};
} else if (index == 3) {
// 近半年
setDate = endDate => {
endDate.setMonth(endDate.getMonth() - 6);
endDate.setDate(endDate.getDate() + 1);
return new Date(endDate);
};
}
......@@ -197,45 +203,28 @@ export default {
},
// 列表数据
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');
this.pageParam.startTime = this.dateDefault ? Date.parse(new Date(this.dateDefault[0]).toString()) : '';
this.pageParam.endTime = this.dateDefault ? Date.parse(new Date(this.dateDefault[1]).toString()) : '';
if (this.$route.query.id && this.typeT == 'code') {
this.pageParam.hmId = this.$route.query.id;
delete this.pageParam.linkId;
} else if (this.$route.query.id && this.typeT == 'link') {
this.pageParam.linkId = this.$route.query.id;
delete this.pageParam.hmId;
}
await detailClerkList(this.pageParam).then(res => {
if (res.code == 0) {
this.tableData = res.result.result || [];
this.totalCount = res.result.totalCount;
}
});
},
lookRecords(hmId) {
const that = this;
that.$router.push(`/actCodeRecord?hmId=${hmId}`);
lookRecords(row) {
if (row.hmId) {
this.$router.push(`/actCodeRecord?hmId=${row.hmId}`);
} else if (row.linkId) {
this.$router.push(`/actCodeRecord?linkId=${row.linkId}`);
}
}
}
};
......
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