Commit cca1636d by chenxin

fix: 卡券包

parent 9fca119e
......@@ -7,21 +7,20 @@ import { welfarePrefix } from '@/config';
// 卡券包
let packages = {
savePackages: {
// 新增、编辑卡券包 /coupon-package/save-package /coupon-package/edit-package
url: '/coupon-package/{type}-package', // edit add
addPackages: { // 新建卡券包
url: '/coupon-package/save-package',
method: 'post',
useFormData: true,
rest: true
},
editPackages: '/coupon-package/edit-package', // 编辑卡券包
pageCouponPackage: '/coupon-package/page-package', // 获取卡券包列表
pagePackageLog: '/coupon-package/page-package-log', // 卡券包发放记录
packageCouponReceiveLog: '/coupon-package/package-coupon-receive-log', // 卡券领取记录详情 TODO:
getPackageDetail: '/coupon-package/package-detail', // 获取卡券包详情
deletePackage: '/coupon-package/batch-del-package', // 删除某个卡券包
optPackageStock: '/coupon-package/opt-package-stock', // 调整卡券包库存 TODO:
updatePackageStock: '/coupon-package/update-package-stock', // 调整卡券包库存
addPackageItem: '/coupon-package/add-package-item', // 往卡券包里添加卡券
EditPackageItem: '/coupon-package/del-package-item', // 往卡券包里删除卡券
delPackageItem: '/coupon-package/del-package-item', // 往卡券包里删除卡券
listCouponByPackageId: '/coupon-package/list-coupon', // 根据卡券包id获取卡券列表
};
......
......@@ -98,7 +98,7 @@ export default {
.prepend-select /deep/ {
.el-input__inner {
box-shadow: none !important;
border-color: #c4c6cf !important;
border-color: $gray-border !important;
border-right: none !important;
border-radius: 2px 0 0 2px;
}
......
......@@ -8,26 +8,27 @@
{{ $store.state.currentAreaName || '--' }}
</el-form-item>
<el-form-item prop="name" label="卡券包名称">
<dm-input v-model="ruleForm.name" class="w400" placeholder="请输入卡券包名称" :byte-type="1" :maxlength="9"></dm-input>
<dm-input :disabled="canEdit" v-model="ruleForm.name" class="w400" placeholder="请输入卡券包名称" :byte-type="1" :maxlength="9"></dm-input>
</el-form-item>
<el-form-item prop="remarkName" label="备注名">
<dm-input v-model="ruleForm.remarkName" class="w400" placeholder="请输入备注名" :byte-type="1" :maxlength="10"></dm-input>
<dm-input :disabled="canEdit" v-model="ruleForm.remarkName" class="w400" placeholder="请输入备注名" :byte-type="1" :maxlength="10"></dm-input>
</el-form-item>
<el-form-item prop="effectiveMode" label="有效期限">
<el-date-picker class="w400" v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions"></el-date-picker>
<el-date-picker :disabled="canEdit" class="w400" v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions"></el-date-picker>
</el-form-item>
<el-form-item label="卡券包库存" prop="packageStock">
<el-input-number class="w400" v-model="ruleForm.packageStock" controls-position="right" :min="1" :max="1000000"></el-input-number>
</el-form-item>
<el-form-item label="库存消耗方式" prop="stockType">
<el-checkbox-group v-model="stockType">
<el-form-item label="库存消耗方式" class="is-required" prop="stockType">
<el-checkbox-group :disabled="canEdit" v-model="stockType">
<!-- (0:占用,1:动态 , 2占用+动态) -->
<el-checkbox :label="0">固定库存</el-checkbox>
<el-checkbox :label="1">实时库存</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">{{ isAdd ? '确认新建' : '保存' }}</el-button>
<el-button type="primary" v-if="isAdd" @click="addForm">确认新建</el-button>
<el-button type="primary" :disabled="ruleForm.packageStock == info.packageStock" v-else @click="editForm">保存</el-button>
<el-button @click="$router.go(-1)">返回</el-button>
</el-form-item>
<el-form-item v-if="!isAdd" class="is-required">
......@@ -35,14 +36,33 @@
<span class="tooltip-icon">添加卡券</span>
</el-tooltip>
<div v-loading="cardLoading">
<div v-for="(item, idx) in couponList" :key="idx" class="mb10">
卡券id:<el-input v-model="item.couponId" style="width:200px" class="mr10" />
库存值:<el-input v-model="item.stock" style="width:100px" />
<el-button type="text" @click="addCard(item)">保存</el-button>
<el-button type="text" @click="delCard(item)">删除</el-button>
<div class="mb10">
卡券id:<el-input v-model="couponForm.couponId" style="width:200px" class="mr10" />
库存值:<el-input v-model="couponForm.stock" style="width:100px" />
<el-button type="text" @click="addCard" class="ml5">保存</el-button>
</div>
<el-button type="primary" @click="couponList.push({ couponId:'', stock: 0 })">添加卡券</el-button>
</div>
<el-table v-if=" couponList.length" :data="couponList" v-loading="cardLoading">
<el-table-column prop="date" label="卡券信息" min-width="200">
<!-- 卡券类型(0:抵金券,1:折扣券,2:兑换券, 3: 其他券) -->
<template slot-scope="scope">
<el-tag class="mr5">{{ cardType[scope.row.cardType].label }}</el-tag>{{ scope.row.cardName }}
</template>
</el-table-column>
<el-table-column prop="date" label="有效期" min-width="200">
<span slot-scope="scope" v-html="effectiveDateFormate(scope.row)"></span>
</el-table-column>
<el-table-column prop="occupyStock" label="卡券包内剩余库存" min-width="200"> </el-table-column>
<el-table-column prop="remainedStock" label="福利可占库存" min-width="180"> </el-table-column>
<el-table-column prop="date" label="福利状态" min-width="180"> </el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<dm-delete @confirm="delCard(scope.row)" tips="删除后已占用库存将被释放,确认删除?">
<el-button type="text">删除</el-button>
</dm-delete>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-form>
<div class="hidden">
......@@ -53,9 +73,10 @@
<script>
import { getTimesByReq } from '@/utils/common.js';
import { cardType } from '@/config/mapping/gic-card';
import { formatDateTimeByType } from '@/utils/index.js';
import fetch from '@/api/card-package.js';
const { savePackages, getPackageDetail, addPackageItem, deletePackage } = fetch;
const { addPackages, editPackages, getPackageDetail, addPackageItem, delPackageItem } = fetch;
export default {
......@@ -84,6 +105,7 @@ export default {
loading: false,
cardLoading: false,
stockType: [],
cardType,
couponPackageId: '',
cardIds: '', // 卡券ids,多个id用逗号隔开
ruleForm: {
......@@ -94,6 +116,10 @@ export default {
packageStock: undefined,
stockUseType: '', // 库存使用类型(0:占用,1:动态 , 2占用+动态)
},
couponForm: {
couponId: '',
stock: 0
},
info: {}, // 备份详情
couponList: [],
dateTime: [],
......@@ -127,11 +153,11 @@ export default {
},
methods: {
// 添加卡券
addCard({ couponId, stock }) {
addCard() {
const params = {
couponPackageId: this.couponPackageId,
couponId,
stock
couponId: this.couponForm.couponId,
stock: this.couponForm.stock
};
this.cardLoading = true;
addPackageItem(params).then(res=> {
......@@ -141,15 +167,14 @@ export default {
this.cardLoading = false;
});
},
delCard({ couponId, stock, packageItemId }) {
// 删除卡券
delCard({ couponId }) {
const params = {
couponPackageId: this.couponPackageId,
couponId,
stock,
packageItemId
couponId
};
this.cardLoading = false;
deletePackage(params).then(res => {
delPackageItem(params).then(res => {
this.cardLoading = false;
this.refreshCouponList();
}).catch(() => {
......@@ -174,13 +199,15 @@ export default {
Object.keys(this.ruleForm).map(v => {
this.ruleForm[v] = info[v];
});
// this.stockType = info.stockUseType == 2 ? :
// params.stockUseType = this.stockType.length == 2 ? 2 : this.stockType[0];
this.dateTime = [ info.beginDate, info.endDate ];
this.couponList = res.result.couponList || [];
}).finally(() => {
this.loading = false;
});
},
submitForm() {
addForm() {
if(this.loading) {
return;
}
......@@ -194,9 +221,8 @@ export default {
params.stockUseType = this.stockType.length == 2 ? 2 : this.stockType[0];
params.beginDate = formatDateTimeByType(this.dateTime[0], 'yyyy-MM-dd');
params.endDate = formatDateTimeByType(this.dateTime[1], 'yyyy-MM-dd');
const type = this.isAdd ? 'save' : 'edit';
this.loading = true;
savePackages(params, { type }).then(res => {
addPackages(params).then(res => {
this.loading = false;
this.$tips({ message: `${ this.isAdd ? '新建' : '编辑' }成功`, type: 'success' });
if(!this.isAdd) {
......@@ -210,6 +236,45 @@ export default {
}
});
},
// 编辑卡券包
editForm() {
const params = {
couponPackageId: this.couponPackageId,
count: Math.abs(this.info.packageStock - this.ruleForm.packageStock),
optType: this.ruleForm.packageStock > this.info.packageStock ? 1 : 2, // 1增加,2减少
};
this.loading = true;
editPackages(params).then(res => {
this.getInfo();
this.loading = false;
}).catch(() => {
this.loading = false;
});
},
effectiveDateFormate(item = {}) {
const { cardEffectiveMode, startDate, expireDate, effectTimeMode, expireTimeCount, effectTimeCount } = item;
if (cardEffectiveMode === 0) {
return `<p>${formatDateTimeByType(startDate, 'yyyy-MM-dd')} ~ </p><p>${ formatDateTimeByType(expireDate, 'yyyy-MM-dd') }</p>`;
}
if (cardEffectiveMode === 1) {
// 领取后第{{ info.effectTimeCount }}{{ info.effectTimeMode ? '月' : '天' }} - 第{{ info.expireTimeCount + info.effectTimeCount - 1 }}{{ info.effectTimeMode ? '月' : '天' }}
const unit = effectTimeMode ? '月' : '天';
let pre = '';
switch (effectTimeCount) {
case 1:
pre = '当';
break;
case 2:
pre = '次';
break;
default:
pre = effectTimeCount;
break;
}
return `<p>领取后${pre}${unit}生效,</p><p>有效天数${expireTimeCount}${unit}</p>`;
}
return '--';
},
},
computed: {
/**
......@@ -228,8 +293,11 @@ export default {
return 1;
}
return new Date(endDate) < d ? 3 : 2;
},
canEdit() {
return !this.isAdd;
}
}
},
};
</script>
......
......@@ -116,7 +116,7 @@ import { page, formate } from '@/mixins/table.js';
import { showConfirm } from '@/utils/common';
import api from '@/api/card-package.js';
import { formatDateTimeByType } from '@/utils/index.js';
const { pageCouponPackage, deletePackage, optPackageStock } = api;
const { pageCouponPackage, deletePackage, updatePackageStock } = api;
export default {
name: 'CardPackageList',
components: {
......@@ -225,7 +225,7 @@ export default {
}
this.$refs.adjust.loading = true;
params.couponPackageId = this.adjust.couponPackageId;
optPackageStock(params).then(res => {
updatePackageStock(params).then(res => {
this.$tips({ message: '调整库存成功', type: 'success' });
this.$refs.adjust.close();
this.getTableList();
......
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