Commit 773fc481 by chenxin

fix: 卡券包

parent 8163c5c7
...@@ -20,7 +20,7 @@ let packages = { ...@@ -20,7 +20,7 @@ let packages = {
updatePackageStock: '/coupon-package/update-package-stock', // 调整卡券包库存 updatePackageStock: '/coupon-package/update-package-stock', // 调整卡券包库存
addPackageItem: '/coupon-package/add-package-item', // 往卡券包里添加卡券 addPackageItem: '/coupon-package/add-package-item', // 往卡券包里添加卡券
delPackageItem: '/coupon-package/del-package-item', // 往卡券包里删除卡券 delPackageItem: '/coupon-package/del-package-item', // 往卡券包里删除卡券
listCouponByPackageId: '/coupon-package/list-coupon', // 根据卡券包id获取卡券列表 listCouponByPackageId: '/coupon-package/list-coupon-log', // 卡券领取记录-详情
}; };
packages = getFetch(packages, welfarePrefix); packages = getFetch(packages, welfarePrefix);
......
...@@ -33,28 +33,32 @@ let card = { ...@@ -33,28 +33,32 @@ let card = {
url: '/coupon/check-demo-code', url: '/coupon/check-demo-code',
alertError: false alertError: false
}, },
cardDestoryList: '/destroy-plugin/destroy-plan-page', // 卡券销毁分页列表 couponlogList: '/coupon/coupon-log-page', // 会员领取记录
getDestroyDetail: '/destroy-plugin/get-destroy-detail', // 卡券销毁详情 };
let destory = {
saveCoupDestoryPlan: { saveCoupDestoryPlan: {
// 保存卡券销毁 TODO: // 保存卡券销毁
url: '/destroy-plugin/save-destroy-plan', url: '/destroy-plugin/save-destroy-plan',
method: 'post', method: 'post',
useFormData: true, useFormData: true,
}, },
couponlogList: '/coupon/coupon-log-page', // 会员领取记录 TODO: cardDestoryList: '/destroy-plugin/destroy-plan-page', // 卡券销毁分页列表
couponConsumeOrder: '/coupon/coupon-consume-order', // 核销 - 订单信息 TODO: getDestroyDetail: '/destroy-plugin/get-destroy-detail', // 卡券销毁详情
couponConsume: '/coupon/coupon-consume', // 核销 - 核销 TODO: couponConsumeOrder: '/coupon-log/coupon-consume-order', // 核销 - 订单信息
couponDestroy: '/coupon/coupon-destroy', // 销毁 TODO: couponConsume: '/coupon-log/coupon-consume', // 核销 - 核销
couponDestroy: '/coupon-log/coupon-destroy', // 销毁
}; };
card = getFetch(card, welfarePrefix); card = getFetch(card, welfarePrefix);
destory = getFetch(destory, welfarePrefix);
export default { ...card }; export default { ...card, ...destory };
export const downloadCouponCSV = config.api + welfarePrefix + '/download-code-csv-template'; // 下载导入GIC券号csv示例文件 TODO: export const downloadCouponCSV = config.api + welfarePrefix + '/destroy-plugin/download-destroy-code-template'; // 下载导入GIC券号csv示例文件 TODO:
export const importCode = config.api + welfarePrefix + '/import-gic-custom-code'; // 导入券码 TODO: export const importCode = config.api + welfarePrefix + '/destroy-plugin/import-destroy-code'; // 导入券码
export const importDestoryCode = welfarePrefix + '/destroy-plugin/import-destroy-code'; // 上传销毁code列表 TODO: export const importDestoryCode = welfarePrefix + '/destroy-plugin/import-destroy-code'; // 上传销毁code列表
export const downloadDestroyCodeTemplate = config.api + welfarePrefix + '/destroy-plugin/download-destroy-code-template'; // 下载销毁模板示例 TODO: export const downloadDestroyCodeTemplate = config.api + welfarePrefix + '/destroy-plugin/download-destroy-code-template'; // 下载销毁模板示例
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="p20" v-loading="loading"> <div class="p20" v-loading="loading">
<div class="pb20 clearfix flex-center"> <div class="pb20 clearfix flex-center">
<el-select v-model="listParams.appCode" class="w250 mr10" placeholder="全部来源" clearable @change="refresh"> <el-select v-model="listParams.appCode" class="w250 mr10" placeholder="全部来源" clearable @change="refresh">
<el-option v-for="item in appList" :key="item.appCode" :label="item.appCode" :value="item.appName"></el-option> <el-option v-for="item in appList" :key="item.appCode" :label="item.appName" :value="item.appCode"></el-option>
</el-select> </el-select>
<el-input placeholder="请输入关键字搜索" class="w400 mr10" v-model="listParams.search" clearable @change="refresh"> <el-input placeholder="请输入关键字搜索" class="w400 mr10" v-model="listParams.search" clearable @change="refresh">
<el-select v-model="listParams.searchType" slot="prepend" style="width:120px;" placeholder="请选择" @change="refresh"> <el-select v-model="listParams.searchType" slot="prepend" style="width:120px;" placeholder="请选择" @change="refresh">
...@@ -14,32 +14,26 @@ ...@@ -14,32 +14,26 @@
<el-option label="会员卡号" :value="6"></el-option> <el-option label="会员卡号" :value="6"></el-option>
</el-select> </el-select>
</el-input> </el-input>
<el-select v-model="listParams.appCode" class="w250 mr10" placeholder="全部来源" clearable @change="refresh">
<el-option label="成功" :value="1"></el-option>
<el-option label="失败" :value="0"></el-option>
</el-select>
<el-input class="vertical-middle w300" v-model="listParams.activityName" clearable placeholder="请输入活动名称搜索" @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
</div> </div>
<div class="table-search-head"> <div class="table-search-head">
发放时间:<el-date-picker class="w350 mr10" v-model="dateTime" type="daterange" range-separator="~" start-placeholder="领取开始日期" end-placeholder="领取结束日期" @change="refresh"></el-date-picker> <el-tooltip content="数据量较大,最多支持筛选7日,请耐心等待" placement="bottom" open-delay="200">
<span class="tooltip-icon">发放时间</span>
</el-tooltip>
<el-date-picker class="w350 mr10" v-model="dateTime" type="daterange" range-separator="~" start-placeholder="领取开始日期" end-placeholder="领取结束日期" @change="changeTime" :clearable="false"></el-date-picker>
</div> </div>
<el-table tooltip-effect="dark" :data="tableList" style="width:100%"> <el-table tooltip-effect="dark" :data="tableList" style="width:100%" :default-sort="{prop: 'createTime', order: ''}" @sort-change="sortChange">
<el-table-column label="会员信息" fixed="left" min-width="120px"> <el-table-column label="会员信息" fixed="left" min-width="120px">
<template slot-scope="scope"> <template slot-scope="scope">
<member-info :member-name="scope.row.memberName" :member-image="scope.row.memberImage" :member-phone="scope.row.memberPhone || scope.row.memberCardNo"></member-info> <member-info :member-name="scope.row.memberName" :member-image="scope.row.memberImage" :member-phone="scope.row.memberPhone || scope.row.memberCardNo"></member-info>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="发放时间" min-width="120px"> <el-table-column sortable prop="createTime" label="发放时间" min-width="120px">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-html="listTime(scope.row.createTime)"></div> <div v-html="listTime(scope.row.createTime)"></div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="appName" label="履约单号" min-width="120px"></el-table-column> <el-table-column prop="packageLogId" label="外部单号" min-width="120px"></el-table-column>
<el-table-column prop="couponPackageName" label="卡券包名称" min-width="130px"> <el-table-column prop="couponPackageName" label="卡券包名称" min-width="140px"></el-table-column>
<template slot-scope="scope">
<span :title="scope.row.couponPackageId" p-key="couponPackageId">{{ scope.row.couponPackageName }}</span>
</template>
</el-table-column>
<el-table-column prop="couponPackageName" label="卡券数量" min-width="130px"> <el-table-column prop="couponPackageName" label="卡券数量" min-width="130px">
<template slot="header"> <template slot="header">
<el-tooltip placement="top" content="卡券包中会员真实领取的卡券数量" open-delay="200"> <el-tooltip placement="top" content="卡券包中会员真实领取的卡券数量" open-delay="200">
...@@ -47,28 +41,44 @@ ...@@ -47,28 +41,44 @@
</el-tooltip> </el-tooltip>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" @click="showDetail(scope.row)">{{ scope.row.couponSize }}</el-button> <el-button type="text" @click="showDetail(scope.row)">{{ scope.row.couponSize || 0 }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="来源" min-width="150px"> <el-table-column label="来源" min-width="150px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text">{{ scope.row.appName || '--' }}</el-button> <div>{{ scope.row.appName || '--' }}</div>
<el-button type="text">{{ scope.row.activityName || '--' }}</el-button> <div class="fz12 gray02">{{ scope.row.activityName || '--' }}</div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="clearfix"> <div class="clearfix">
<dm-pagination class="fr mb0" v-if="tableList.length" background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[20, 40, 60, 80]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></dm-pagination> <dm-pagination class="fr mb0" v-if="tableList.length" background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[20, 40, 60, 80]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></dm-pagination>
</div> </div>
<el-dialog title="卡券包" :visible.sync="dialogVisible" width="1000px" @closed="packageLogList = [];">
<el-table tooltip-effect="dark" :data="packageLogList" style="width:100%" max-height="400px">
<el-table-column prop="couponName" label="卡券名称"></el-table-column>
<el-table-column prop="cardType" label="卡券类型">
<span slot-scope="scope">{{ cardType[scope.row.cardType].label }}</span>
</el-table-column>
<el-table-column prop="statusFlag" label="卡券类型">
<span slot-scope="scope">{{ scope.row.statusFlag == 4 ? '已领取' : '--' }}</span>
</el-table-column>
<el-table-column prop="couponLogId" label="卡券代码"></el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">关闭</el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { cardType } from '@/config/mapping/gic-card';
import { page, formate } from '@/mixins/table.js'; import { page, formate } from '@/mixins/table.js';
import { listTime } from '@/utils/index.js'; import { listTime } from '@/utils/index.js';
import api from '@/api/card-package.js'; import api from '@/api/card-package.js';
import commonApi from '@/api/common.js'; import commonApi from '@/api/common.js';
const { pagePackageLog } = api; const { pagePackageLog, listCouponByPackageId } = api;
const { getAppList } = commonApi; const { getAppList } = commonApi;
export default { export default {
...@@ -77,26 +87,26 @@ export default { ...@@ -77,26 +87,26 @@ export default {
data() { data() {
return { return {
loading: false, loading: false,
cardType,
appList: [], // 应用列表 appList: [], // 应用列表
dateTime: [], dateTime: [ Date.now(), Date.now() ], // 默认当天
dateTimeCopy: [ Date.now(), Date.now() ],
listParams: { listParams: {
appCode: '', appCode: '',
activityName: '',
beginTime: '', beginTime: '',
endTime: '', endTime: '',
packageName: '',
search: '', search: '',
searchType: 1, // 1、福利id 2、卡券包名称、3、备注名、、4会员称呼、5会员手机号、6会员卡号 searchType: 2, // 1、福利id 2、卡券包名称、3、备注名、、4会员称呼、5会员手机号、6会员卡号
currentPage: 1, currentPage: 1,
pageSize: 20, pageSize: 20,
sortOrder: '', // 默认可以不传; asc:升序; desc:倒序
couponPackageId: this.$route.query.id // 卡券包id couponPackageId: this.$route.query.id // 卡券包id
}, },
tableList: [], tableList: [],
total: 0, total: 0,
detail: '', dialogVisible: false,
mask: { packageLogLoading: false,
show: false packageLogList: [],
}
}; };
}, },
created() { created() {
...@@ -108,13 +118,33 @@ export default { ...@@ -108,13 +118,33 @@ export default {
}, },
methods: { methods: {
listTime, listTime,
sortChange(sort) {
this.listParams.sortOrder = sort.order ? sort.order == 'ascending' ? 'asc' : 'desc' : '';
this.refresh();
},
changeTime(date) {
if (new Date(this.dateTime[1]).getTime() - new Date(this.dateTime[0]).getTime() > 7 * 24 * 60 * 60 * 1000) {
this.$tips({ message: '领取时间段范围不能超过7天', type: 'warning' });
this.dateTime = [ ...this.dateTimeCopy ];
return;
}
this.dateTimeCopy = [ ...this.dateTime ];
this.refresh();
},
getAppList() { getAppList() {
getAppList().then(res => { getAppList().then(res => {
this.appList = res.result || []; this.appList = res.result || [];
}); });
}, },
showDetail({ packageLogId }) { showDetail({ packageLogId }) {
return; this.dialogVisible = true;
this.packageLogLoading = true;
listCouponByPackageId({ packageLogId }).then(res => {
this.packageLogLoading = false;
this.packageLogList = res.result || [];
}).catch(() => {
this.packageLogLoading = false;
});
}, },
getTableList() { getTableList() {
if(this.loading) { if(this.loading) {
......
<template> <template>
<div class="p20" v-loading="loading"> <div class="p20" v-loading="loading">
<div class="clearfix flex-center pb20"> <div class="clearfix flex-center pb20">
<i class="icon-shiwulipin iconfont-welfare4"></i>
<span class="gray01 fz16 mr20">卡券筛选</span> <span class="gray01 fz16 mr20">卡券筛选</span>
<el-select class="dm-select mr10 w160" clearable v-model="listParams.cardType" placeholder="所有卡券类型" @change="refresh"> <el-select class="dm-select mr10 w160" clearable v-model="listParams.cardType" placeholder="所有卡券类型" @change="refresh">
<el-option v-for="(v, i) in cardType" :key="i" :label="v.label" :value="v.value"></el-option> <el-option v-for="(v, i) in cardType" :key="i" :label="v.label" :value="v.value"></el-option>
...@@ -31,7 +30,7 @@ ...@@ -31,7 +30,7 @@
<sort-btn class="mr10" :sort-type="sortType1" /> <sort-btn class="mr10" :sort-type="sortType1" />
<el-date-picker class="mr10" v-model="dateTime" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期" @change="refresh" /> <el-date-picker class="mr10" v-model="dateTime" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期" @change="refresh" />
<label class="ml5 mr8">成本</label> <label class="ml5 mr8">成本</label>
<el-input-number class="prefix-amount hide-right w100" @change="refresh" v-model="listParams.costPriceBegin" controls-position="right" :precision="2" :min="listParams.costPriceBegin" :max="10000" placeholder="请输入" /> <el-input-number class="prefix-amount hide-right w100" @change="refresh" v-model="listParams.costPriceBegin" controls-position="right" :precision="2" :max="listParams.costPriceBegin" :min="0" placeholder="请输入" />
<label class="ml5 mr5">-</label> <label class="ml5 mr5">-</label>
<el-input-number class="prefix-amount hide-right w100" @change="refresh" v-model="listParams.costPriceEnd" controls-position="right" :precision="2" :min="1" :max="100000" placeholder="请输入" /> <el-input-number class="prefix-amount hide-right w100" @change="refresh" v-model="listParams.costPriceEnd" controls-position="right" :precision="2" :min="1" :max="100000" placeholder="请输入" />
<label class="ml15 mr8">可占用库存</label> <label class="ml15 mr8">可占用库存</label>
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<el-tooltip content="数据量较大,最多支持筛选7日,请耐心等待" placement="bottom" open-delay="200"> <el-tooltip content="数据量较大,最多支持筛选7日,请耐心等待" placement="bottom" open-delay="200">
<span class="tooltip-icon">领取时间</span> <span class="tooltip-icon">领取时间</span>
</el-tooltip> </el-tooltip>
<el-date-picker class="w250 mr10" :clearable="false" v-model="dateTime" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期" @change="changeTime"></el-date-picker> <el-date-picker class="w250 mr10" v-model="dateTime" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期" @change="changeTime" :clearable="false"></el-date-picker>
核销时间:<el-date-picker class="w250" v-model="dateTime2" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期" @change="refresh"></el-date-picker> 核销时间:<el-date-picker class="w250" v-model="dateTime2" type="daterange" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期" @change="refresh"></el-date-picker>
</div> </div>
<el-table tooltip-effect="dark" :data="tableList" style="width:100%" :max-height="mainHeight(54 + 50)"> <el-table tooltip-effect="dark" :data="tableList" style="width:100%" :max-height="mainHeight(54 + 50)">
......
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