十七 4 years ago
commit 2ab4982b9a

@ -0,0 +1,12 @@
import {
service
} from "../../utils/service";
// 发布
export function doAdd(data) {
return service({
url: "/platformCoupon/add",
method: "post",
data
});
}

@ -0,0 +1,12 @@
import {
service
} from "../../utils/service";
// 主页查询
export function getList(params) {
return service({
url: "/platformCoupon",
method: "get",
params
});
}

@ -616,6 +616,36 @@ export default {
},
],
},
//
{
name: "优惠券",
index: "100",
icon: "el-icon-s-ticket",
number: "400",
menuLists: [
{
name: "发布",
icon: "el-icon-s-promotion",
route: "/couponIssue",
index: "couponIssue",
number: "400100",
},
{
name: "管理",
icon: "el-icon-s-operation",
route: "/couponMane",
index: "couponMane",
number: "400100",
},
{
name: "领取消费",
icon: "el-icon-time",
route: "/couponRecord",
index: "couponRecord",
number: "400100",
},
],
},
],
};
},

@ -4,7 +4,9 @@ import "babel-polyfill";
import "es6-promise/auto";
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
import { Message } from "element-ui";
import {
Message
} from "element-ui";
Vue.use(ElementUI);
import App from "./App.vue";
import store from "./store";
@ -22,18 +24,26 @@ import "./utils/dialog";
import "./plugins";
// import "./utils/directive/focus";
import echarts from "echarts";
import { getCookie } from "./utils/utils.js";
import {
getCookie
} from "./utils/utils.js";
import apiConfig from "../config/api.config.js";
import vueEsign from "vue-esign";
import animated from "animate.css"; // npm install animate.css --save安装在引入
import formatTime from "./utils/filters.js";
import arrDiff from "./utils/array.js";
import { Loading } from "element-ui";
import {
Loading
} from "element-ui";
import countdown from "./utils/countdown.js";
import "./utils/rem.js";
Vue.use(animated);
Vue.use(vueEsign);
import {
thousands
} from '@/utils/index.js'
import Vue from "vue";
import Router from "vue-router";
import router from "./router";
@ -44,10 +54,13 @@ Vue.use(VueAxios, axios);
axios.defaults.baseURL = apiConfig.baseUrl;
Vue.use(Print); //注册
import { message } from "./utils/resetMessage.js"; //现在提示弹窗每次只弹一条
import {
message
} from "./utils/resetMessage.js"; //现在提示弹窗每次只弹一条
// import VueParticles from 'vue-particles'
// Vue.use(VueParticles)
Vue.prototype.$thousands = thousands
Vue.prototype.$message = message;
Vue.prototype.$countdown = countdown;
Vue.prototype.bus = new Vue();
@ -66,7 +79,7 @@ export function getNextDate(date, day) {
}
axios.defaults.withCredentials = true; //让ajax携带cookie
// 全局过滤器--时间戳格式化时间//.padStart(2 , "0") 不足两位的用0填充
Vue.filter("dateFormat", function(originVal) {
Vue.filter("dateFormat", function (originVal) {
const dt = new Date(originVal);
const y = dt.getFullYear();
const m = (dt.getMonth() + 1 + "").padStart(2, "0");
@ -76,7 +89,7 @@ Vue.filter("dateFormat", function(originVal) {
const ss = (dt.getSeconds() + "").padStart(2, "0");
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
});
Vue.filter("dateMonth", function(originVal) {
Vue.filter("dateMonth", function (originVal) {
const dt = new Date(originVal);
const y = dt.getFullYear();
const m = (dt.getMonth() + 1 + "").padStart(2, "0");
@ -86,10 +99,10 @@ Vue.filter("dateMonth", function(originVal) {
const ss = (dt.getSeconds() + "").padStart(2, "0");
return `${y}-${m}-${d}`;
});
Vue.filter("phone", function(phone) {
Vue.filter("phone", function (phone) {
return phone.substring(0, 3) + "****" + phone.substring(phone.length - 4);
});
Vue.filter("identityNum", function(identityNum) {
Vue.filter("identityNum", function (identityNum) {
return (
identityNum.substring(0, 4) +
"**************" +
@ -97,11 +110,11 @@ Vue.filter("identityNum", function(identityNum) {
);
});
Vue.filter("money", function(money) {
Vue.filter("money", function (money) {
return (money * 1).toFixed(2);
});
Vue.prototype.openLoading = function() {
Vue.prototype.openLoading = function () {
const loading = this.$loading({
// 声明一个loading对象
lock: true, // 是否锁屏
@ -112,7 +125,7 @@ Vue.prototype.openLoading = function() {
body: true,
customClass: "mask" // 遮罩层新增类名
});
setTimeout(function() {
setTimeout(function () {
// 设定定时器超时5S后自动关闭遮罩层避免请求失败时遮罩层一直存在的问题
loading.close(); // 关闭遮罩层
}, 5000);
@ -151,7 +164,9 @@ router.beforeEach((to, from, next) => {
message: "请先登录",
duration: 2000
});
next({ path: "/login" });
next({
path: "/login"
});
}
});
Vue.directive("role", {
@ -178,7 +193,9 @@ new Vue({
el: "#app",
router,
store,
components: { App },
components: {
App
},
template: "<App/>"
});

@ -1,12 +0,0 @@
<template>
领取消费
</template>
<script>
export default {
}
</script>
<style>
</style>

@ -0,0 +1,53 @@
<template>
<el-upload class="avatar-uploader" :limit="10" ref="upload" action="#" :show-file-list="false" :auto-upload="false" :on-change="handleChange">
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</template>
<script>
export default {
data() {
return {
imageUrl: ''
};
},
methods: {
handleChange(file, fileList) {
this.imageUrl = URL.createObjectURL(file.raw);
this.$emit('active-img', file.raw);
// console.log('file', file);
console.log('fileList', fileList);
},
//
handleClear() {
this.$refs.upload.clearFiles();
}
}
}
</script>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
background-color: #fff;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 150px;
height: 150px;
line-height: 150px;
text-align: center;
}
.avatar {
width: 150px;
height: 150px;
display: block;
}
</style>

@ -8,46 +8,61 @@
<el-input v-model.trim="form.couponName" placeholder="优惠券名称"></el-input>
</el-form-item>
<el-form-item label="优惠券数量" prop="couponNumber">
<el-input v-model.trim="form.couponNumber" placeholder="优惠券数量"></el-input>
</el-form-item>
<el-form-item label="优惠限制" prop="serviceConditions">
<el-radio v-model="form.serviceConditions" :label="0"></el-radio>
<el-radio v-model="form.serviceConditions" :label="1"></el-radio>
<el-input-number v-model="form.couponNumber" :min="1" :precision="0" label="优惠券数量" style="width:100%"></el-input-number>
</el-form-item>
<el-form-item label="优惠方式" prop="couponType">
<el-radio v-model="form.couponType" :label="0"></el-radio>
<el-radio v-model="form.couponType" :label="1"></el-radio>
<el-radio v-model="form.couponType" :label="2"></el-radio>
</el-form-item>
<el-form-item label="满减金额" prop="fullReductionMoney">
<el-form-item label="优惠限制" prop="serviceConditions">
<el-radio v-model="form.serviceConditions" :label="0"></el-radio>
<el-radio v-model="form.serviceConditions" :label="1"></el-radio>
</el-form-item>
<el-form-item v-if="form.serviceConditions===0" prop="fullReductionMoney">
<amount-input ref="fullReductionMoney" @amount="handleAmount" name="fullReductionMoney" placeholder="满减金额(满多少可以减)"></amount-input>
</el-form-item>
<el-form-item label="适用门店" prop="suitableStore">
<el-input v-model.trim="form.suitableStore" placeholder="优惠券适用的门店"></el-input>
<el-radio v-model="form.suitableStore" :label="0"></el-radio>
<el-radio v-model="form.suitableStore" :label="1"></el-radio>
</el-form-item>
<el-form-item v-if="form.suitableStore===1" prop="useStoreList">
<el-button type="primary" size="mini">选择门店</el-button>
</el-form-item>
<el-form-item label="适用项目" prop="suitableProject">
<el-input v-model.trim="form.suitableProject" placeholder="优惠券适用的项目"></el-input>
<el-radio v-model="form.suitableProject" :label="0"></el-radio>
<el-radio v-model="form.suitableProject" :label="1"></el-radio>
</el-form-item>
<el-form-item v-if="form.suitableProject===1" prop="projectList">
<el-button type="primary" size="mini">选择项目</el-button>
</el-form-item>
<el-form-item label="有效方式" prop="indateType">
<el-radio v-model="form.indateType" :label="0"></el-radio>
<el-radio v-model="form.indateType" :label="1"></el-radio>
</el-form-item>
<el-form-item v-show="form.indateType===0" :prop="form.indateType===0?'startDay':''">
<el-form-item v-if="form.indateType===0" prop="startDay">
<el-input v-model.trim="form.startDay" placeholder="领取后多少天生效"></el-input>
</el-form-item>
<el-form-item v-show="form.indateType===1" :prop="form.indateType===1?'endDay':''">
<el-input v-model.trim="form.endDay" placeholder="多少天内有效生效"></el-input>
<el-form-item v-if="form.indateType===0" prop="endDay">
<el-input v-model.trim="form.endDay" placeholder="生效后多少天内有效"></el-input>
</el-form-item>
<el-form-item v-if="form.indateType===1" prop="startDate">
<el-date-picker v-model="form.fixDate" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="截止日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="分享提成规则" prop="shareCommissionRules">
<el-radio v-model="form.shareCommissionRules" :label="0"></el-radio>
<el-radio v-model="form.shareCommissionRules" :label="1">(%)</el-radio>
</el-form-item>
<el-form-item v-show="form.shareCommissionRules===0" :prop="form.shareCommissionRules===0?'fixedAmount':''">
<el-form-item v-if="form.shareCommissionRules===0" prop="fixedAmount">
<amount-input ref="fixedAmount" @amount="handleAmount" name="fixedAmount" placeholder="固定提成(元)"></amount-input>
</el-form-item>
<el-form-item v-show="form.shareCommissionRules===1" :prop="form.shareCommissionRules===1?'orderCommission':''">
<el-form-item v-if="form.shareCommissionRules===1" prop="orderCommission">
<amount-input ref="orderCommission" @amount="handleAmount" name="orderCommission" placeholder="单据金额抽成(%)"></amount-input>
</el-form-item>
<el-form-item label="活动图片" prop="imageUrl">
<active-img ref="activeImg" @active-img="handleImage"></active-img>
</el-form-item>
</el-form>
</el-col>
</el-row>
@ -65,13 +80,14 @@
<script>
import AmountInput from '@/components/AmountInput/index'
import ActiveImg from './activeImg'
export default {
name: 'Form',
components: { AmountInput },
components: { AmountInput, ActiveImg },
data() {
return {
form: {
couponNum: 1,
couponNumber: 1,
},
rules: {
couponName: [
@ -86,15 +102,8 @@ export default {
couponType: [
{ required: true, message: '请选择优惠方式', trigger: ['blur', 'change'] },
],
fullReductionMoney: [
{ required: true, message: '请输入满减金额', trigger: 'blur' },
{
pattern: /^\d*(?:\.\d{0,2})?$/,
//pattern: /^1[3456789]\d{9}$/,
message: '最多能输入两位小数',
trigger: 'blur',
},
],
suitableStore: [
{ required: true, message: '请选择适用门店', trigger: ['blur', 'change'] },
@ -105,58 +114,63 @@ export default {
indateType: [
{ required: true, message: '请选择有效方式', trigger: ['blur', 'change'] },
],
shareCommissionRules: [
{ required: true, message: '请选择分享提成规则', trigger: ['blur', 'change'] },
startDay: [
{ required: true, message: '请输入多少天', trigger: 'blur' },
],
couponNum: [{ required: true, message: '优惠券数量', trigger: 'blur' }],
shareAmount: [
{ required: true, message: '请输入分润', trigger: 'blur' },
{
pattern: /^\d*(?:\.\d{0,2})?$/,
//pattern: /^1[3456789]\d{9}$/,
message: '最多能输入两位小数',
trigger: 'blur',
},
endDay: [
{ required: true, message: '请输入多少天', trigger: 'blur' },
],
phone: [
{ required: true, message: '请输入联系方式', trigger: 'blur' },
{ min: 11, max: 11, message: '请输入11位手机号码', trigger: 'blur' },
{
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/,
//pattern: /^1[3456789]\d{9}$/,
message: '请输入正确的手机号码',
trigger: 'blur',
},
shareCommissionRules: [
{ required: true, message: '请选择分享提成规则', trigger: ['blur', 'change'] },
],
imgUrl: [{ required: true, message: '请上传活动图片', trigger: 'change' }],
region: [{ required: true, message: '请选择活动区域', trigger: 'change' }],
imageUrl: [{ required: true, message: '请上传活动图片', trigger: ['blur', 'change'] }],
},
}
},
methods: {
// ============================== ============================== //
//
handleNext() {
console.log(123);
this.$refs.form.validate((valid) => {
if (valid) {
this.$emit('next', 2)
this.$emit('next', 2, this.form)
} else {
return false
}
})
},
//
resetForm() {
this.$refs.fullReductionMoney.reset()
this.$refs.fixedAmount.reset()
this.$refs.orderCommission.reset()
let form = Object.assign({}, this.form);
if (form.serviceConditions === 0) {
this.$refs.fullReductionMoney.reset()
}
if (shareCommissionRules === 0) {
this.$refs.fixedAmount.reset()
}
if (shareCommissionRules === 1) {
this.$refs.orderCommission.reset()
}
this.$refs.form.resetFields()
this.$baseMessage('重置成功', 'success')
},
// ============================== ============================== //
//
handleImage(file) {
let form = Object.assign({}, this.form);
form.multipartFile = file
this.form = Object.assign({}, form);
},
//
handleAmount(name, amount) {
let form = Object.assign({}, this.form)
form[name] = amount
this.form = Object.assign({}, form)
},
//
handleClear() {
this.$refs.activeImg.handleClear()
}
},
}
</script>
@ -171,4 +185,7 @@ export default {
justify-content: center;
padding: 50px 0;
}
.form .el-form-item {
margin-bottom: 15px;
}
</style>

@ -23,20 +23,27 @@
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
<div class="box">
<el-button type="warning" @click="handleLast" size="medium">上一步</el-button>
<el-button type="primary" @click="handleNext" size="medium">提交</el-button>
<el-button type="primary" @click="handleSubmit" size="medium">提交</el-button>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import { doAdd } from "@/api/discount-coupon/issue.js";
export default {
data() {
return {
choose: 0,
form: {}
}
},
methods: {
//
handleData(form) {
this.form = Object.assign({}, form);
console.log('form', form);
},
handleChoose(num) {
this.choose = num
},
@ -45,8 +52,19 @@ export default {
this.$emit('next', 1)
},
//
handleNext() {
this.$emit('next', 3)
async handleSubmit() {
let format = new FormData()
Object.keys(this.form).map(key => {
format.append(key, this.form[key])
})
let { code } = await doAdd(format)
if (code == '000000') {
this.$message({
message: '发布成功',
type: 'success'
});
this.$emit('next', 3)
}
},
},
}

@ -26,82 +26,34 @@ export default {
data() {
return {
active: 1,
form: {
couponNum: 1,
},
rules: {
name: [
{ required: true, message: '请输入活动名称', trigger: 'blur' },
{
min: 3,
max: 5,
message: '长度在 3 到 5 个字符',
trigger: 'blur',
},
],
deductionAmount: [
{ required: true, message: '请输入抵扣金额', trigger: 'blur' },
{
pattern: /^\d*(?:\.\d{0,2})?$/,
//pattern: /^1[3456789]\d{9}$/,
message: '最多能输入两位小数',
trigger: 'blur',
},
],
couponNum: [{ required: true, message: '优惠券数量', trigger: 'blur' }],
shareAmount: [
{ required: true, message: '请输入分润', trigger: 'blur' },
{
pattern: /^\d*(?:\.\d{0,2})?$/,
//pattern: /^1[3456789]\d{9}$/,
message: '最多能输入两位小数',
trigger: 'blur',
},
],
phone: [
{ required: true, message: '请输入联系方式', trigger: 'blur' },
{ min: 11, max: 11, message: '请输入11位手机号码', trigger: 'blur' },
{
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/,
//pattern: /^1[3456789]\d{9}$/,
message: '请输入正确的手机号码',
trigger: 'blur',
},
],
imgUrl: [{ required: true, message: '请上传活动图片', trigger: 'change' }],
region: [{ required: true, message: '请选择活动区域', trigger: 'change' }],
},
form: {},
}
},
methods: {
submitForm() {
this.$refs.form.validate((valid) => {
if (valid) {
alert('submit!')
} else {
return false
}
})
},
resetForm() {
this.$refs.deductionAmount.reset()
this.$refs.shareAmount.reset()
this.$refs.form.resetFields()
},
handleAmount(name, amount) {
let form = Object.assign({}, this.form)
form[name] = amount
this.form = Object.assign({}, form)
},
//
handleNext(active) {
// /
handleNext(active, form) {
this.active = active
let activeName = active == 1 ? 'edit' : active == 2 ? 'templates' : 'complete'
if (activeName == 'templates') {
this.$nextTick(function () {
this.$refs[activeName].handleData(form)
});
}
if (active === 1) {
//
this.$nextTick(function () {
this.$refs.edit.handleClear()
});
}
},
},
}
</script>
<style scoped>
.container /deep/ .el-step__icon {
background-color: #f1f1f1;
}
.marginTop {
margin-top: 30px;
}

@ -0,0 +1,98 @@
<template>
<el-dialog title="增加优惠券" :visible.sync="dialogFormVisible" ref="dialog" width="450px" @close="close">
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="增量" prop="num">
<el-input v-model.trim="form.num" clearable autocomplete="off" onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="close"> </el-button>
<el-button type="primary" @click="save"> </el-button>
</div>
</el-dialog>
</template>
<script>
export default {
name: 'add',
data() {
return {
form: {
code: undefined,
},
rules: {
code: [{ required: true, trigger: 'blur', message: '请输入优惠券编码' }],
},
dialogFormVisible: false,
}
},
created() { },
methods: {
//
open() {
this.form = Object.assign({}, {})
this.dialogFormVisible = true
},
//
close() {
this.$refs['form'].resetFields()
this.form = this.$options.data().form
this.dialogFormVisible = false
},
//
save() {
this.$refs['form'].validate(async (valid) => {
if (valid) {
if (this.form.hotelAssetId) {
const form = Object.assign({}, this.form)
form.depreciationRate = parseFloat(form.depreciationRate)
form.netSalvage = parseFloat(form.netSalvage)
doEdit(form).then((res) => this.callbackFun(res))
} else {
const form = Object.assign({}, this.form)
form.depreciationRate = parseFloat(form.depreciationRate)
form.netSalvage = parseFloat(form.netSalvage)
doAdd(form).then((res) => this.callbackFun(res))
}
} else {
return false
}
})
},
callbackFun(res) {
if (res.success) {
this.$baseMessage(res.msg, 'success')
this.$emit('fetch-data')
this.close()
}
},
},
}
</script>
<style lang="scss" scoped>
.el-form {
padding: 0px 20px !important;
}
.el-form .item {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.el-form .item .el-form-item {
width: 49%;
}
.el-form .item .el-form-item:first-child {
margin-right: 1%;
}
.el-form .el-select {
width: 100%;
}
.remind {
display: flex;
}
.remind .msg {
width: 60px;
text-align: right;
}
</style>

@ -0,0 +1,93 @@
<template>
<div class="container">
<!-- <vab-query-form>
<vab-query-form-left-panel :span="10">
<el-button icon="el-icon-back" type="warning" @click="handleGoBack"></el-button>
</vab-query-form-left-panel>
<vab-query-form-right-panel :span="14">
<el-form :inline="true" class="docTime" :model="queryForm" @submit.native.prevent>
<el-form-item>
<el-input v-model="queryForm.name" placeholder="优惠券编码" clearable style="width: 150px"></el-input>
</el-form-item>
<el-form-item>
<el-input v-model="queryForm.name" placeholder="微信昵称" clearable style="width: 150px"></el-input>
</el-form-item>
<el-form-item>
<el-input v-model="queryForm.name" placeholder="手机号码" clearable style="width: 150px"></el-input>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-search" type="primary" @click="queryData"></el-button>
</el-form-item>
</el-form>
</vab-query-form-right-panel>
</vab-query-form> -->
<el-table class="custom-table" highlight-current-row border v-loading="listLoading" :data="list" max-height="508px" :element-loading-text="elementLoadingText">
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="name" label="优惠券编码"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="name" label="头像"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="couponNum" label="微信昵称"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="couponNum" label="手机号码"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="couponNum" label="分享人"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="deductionAmount" label="是否已核销"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="shareAmount" label="领取时间"></el-table-column>
<!-- <el-table-column show-overflow-tooltip align="center" min-width="130" prop="phone" label="手机号码"></el-table-column> -->
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="imgUrl" label="核销时间"></el-table-column>
<el-table-column align="center" min-width="80" label="操作">
<template #default="{ row, $index }">
<el-button type="warning" size="mini">核销</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination background :current-page="queryForm.pageNum" :page-size="queryForm.pageSize" :layout="layout" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange"></el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
list: [
{
name: 123,
},
],
listLoading: false,
elementLoadingText: '正在加载...',
queryForm: {
pageNu: 1,
pageSize: 10,
},
total: 0,
layout: 'total, sizes, prev, pager, next, jumper',
}
},
created() {
console.log(this.$route.params)
},
methods: {
// -
handleSizeChange(val) {
this.queryForm.pageSize = val
// this.fetchData()
},
// -
handleCurrentChange(val) {
this.queryForm.pageNum = val
// this.fetchData()
},
//
queryData() {
this.queryForm.pageNum = 1
this.fetchData()
},
//
fetchData() { },
//
handleGoBack() {
this.$router.push('/active/management')
this.$store.dispatch('tabsBar/delRoute', { path: '/active/allGot' })
},
},
}
</script>
<style></style>

@ -0,0 +1,73 @@
<template>
<el-dialog title="核销优惠券" :visible.sync="dialogFormVisible" ref="dialog" width="450px" @close="close">
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="优惠券编码" prop="code">
<el-input v-model.trim="form.code" clearable autocomplete="off" onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="close"> </el-button>
<el-button type="primary" @click="save"> </el-button>
</div>
</el-dialog>
</template>
<script>
export default {
name: 'Verification',
data() {
return {
form: {
code: undefined,
},
rules: {
code: [{ required: true, trigger: 'blur', message: '请输入优惠券编码' }],
},
dialogFormVisible: false,
}
},
created() { },
methods: {
//
open() {
this.form = Object.assign({}, {})
this.dialogFormVisible = true
},
//
close() {
this.$refs['form'].resetFields()
this.form = this.$options.data().form
this.dialogFormVisible = false
},
//
save() {
this.$refs['form'].validate(async (valid) => {
if (valid) {
if (this.form.hotelAssetId) {
const form = Object.assign({}, this.form)
form.depreciationRate = parseFloat(form.depreciationRate)
form.netSalvage = parseFloat(form.netSalvage)
doEdit(form).then((res) => this.callbackFun(res))
} else {
const form = Object.assign({}, this.form)
form.depreciationRate = parseFloat(form.depreciationRate)
form.netSalvage = parseFloat(form.netSalvage)
doAdd(form).then((res) => this.callbackFun(res))
}
} else {
return false
}
})
},
callbackFun(res) {
if (res.success) {
this.$baseMessage(res.msg, 'success')
this.$emit('fetch-data')
this.close()
}
},
},
}
</script>
<style scoped>
</style>

@ -1,12 +1,121 @@
<template>
管理
<div class="container">
<div class="query-form">
<div class="query-form-left-panel">
<el-button icon="el-icon-s-promotion" type="primary" size="mini" @click="handleIssue"></el-button>
<el-button icon="el-icon-full-screen" type="warning" size="mini" @click="handleVerification"></el-button>
</div>
<div class="query-form-right-panel">
<el-form :inline="true" class="docTime" :model="queryForm" @submit.native.prevent>
<el-form-item>
<el-input v-model="queryForm.name" placeholder="优惠券名称" clearable size="small" style="width: 150px"></el-input>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-search" type="primary" size="mini" @click="queryData"></el-button>
</el-form-item>
</el-form>
</div>
</div>
<el-table style="width: 100%;margin-top:5px" max-height="650" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)' ,color:'#eeeeee'}" ref="list" class="custom-table" highlight-current-row border v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText" @row-dblclick="handleGoter">
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="name" label="优惠券名称"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="name" label="优惠券类型"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="couponNumber" label="优惠券数量"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="deductionAmount" label="优惠"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="shareAmount" label="分润"></el-table-column>
<!-- <el-table-column show-overflow-tooltip align="center" min-width="130" prop="phone" label="手机号码"></el-table-column> -->
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="imgUrl" label="图片"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="desc1" label="已领取数量"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="desc1" label="已使用数量"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="desc1" label="使用日期" sortable></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="desc1" label="优惠券状态">
<template #default="{ row, $index }">
<el-tag type="success" v-if="row.status == 1"></el-tag>
<el-tag type="primary" v-if="row.status == 2"></el-tag>
<el-tag type="warning" v-if="row.status == 3"></el-tag>
<el-tag type="danger" v-if="row.status == 4"></el-tag>
</template>
</el-table-column>
<el-table-column align="center" min-width="250" label="操作">
<template #default="{ row, $index }">
<el-button type="primary" size="mini" :disabled="row.status != 2">增量</el-button>
<el-button type="warning" size="mini" :disabled="row.status != 2">作废</el-button>
<el-button type="danger" size="mini" :disabled="row.status != 2">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination background :current-page="queryForm.pageNum" :page-size="queryForm.pageSize" :layout="layout" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange"></el-pagination>
<verification ref="verification" @fetch-data="fetchData"></verification>
</div>
</template>
<script>
import Verification from './components/verification';
import { getList } from "@/api/discount-coupon/management.js";
export default {
name: 'management',
components: { Verification },
data() {
return {
//
list: [],
listLoading: false,
elementLoadingText: '正在加载...',
//
queryForm: {
pageNu: 1,
pageSize: 10,
},
total: 0,
layout: 'total, sizes, prev, pager, next, jumper',
}
},
created() {
this.fetchData()
},
methods: {
// ========================== ========================== //
queryData() {
this.queryForm.pageNum = 1
this.fetchData()
},
//
async fetchData() {
this.listLoading = true
let { code, pageInfo } = await getList(this.queryForm)
this.listLoading = false
if (code == "000000") {
this.list = Array.from(pageInfo.list);
this.queryForm.pageNum = pageInfo.pageNum
this.queryForm.pageSize = pageInfo.pageSize
}
},
// -
handleSizeChange(val) {
this.queryForm.pageSize = val
this.fetchData()
},
// -
handleCurrentChange(val) {
this.queryForm.pageNum = val
this.fetchData()
},
// ========================== ========================== //
//
handleGoter(row) {
this.$router.push({ name: 'AllGot', params: row })
},
//
handleIssue() {
this.$router.push('/couponIssue')
},
//
handleVerification() {
this.$refs.verification.open()
},
},
}
</script>
<style>
<style scoped>
@import "./styles/index.css";
</style>

@ -0,0 +1,8 @@
.query-form{
display: flex;
align-items: center;
justify-content: space-between;
}
.query-form .el-form-item{
margin-bottom: 0px;
}

@ -0,0 +1,93 @@
<template>
<div class="container">
<!-- <vab-query-form>
<vab-query-form-left-panel :span="10">
<el-button icon="el-icon-back" type="warning" @click="handleGoBack"></el-button>
</vab-query-form-left-panel>
<vab-query-form-right-panel :span="14">
<el-form :inline="true" class="docTime" :model="queryForm" @submit.native.prevent>
<el-form-item>
<el-input v-model="queryForm.name" placeholder="优惠券编码" clearable style="width: 150px"></el-input>
</el-form-item>
<el-form-item>
<el-input v-model="queryForm.name" placeholder="微信昵称" clearable style="width: 150px"></el-input>
</el-form-item>
<el-form-item>
<el-input v-model="queryForm.name" placeholder="手机号码" clearable style="width: 150px"></el-input>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-search" type="primary" @click="queryData"></el-button>
</el-form-item>
</el-form>
</vab-query-form-right-panel>
</vab-query-form> -->
<el-table class="custom-table" highlight-current-row border v-loading="listLoading" :data="list" max-height="508px" :element-loading-text="elementLoadingText">
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="name" label="优惠券编码"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="name" label="头像"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="couponNum" label="微信昵称"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="couponNum" label="手机号码"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="couponNum" label="分享人"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="deductionAmount" label="是否已核销"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="shareAmount" label="领取时间"></el-table-column>
<!-- <el-table-column show-overflow-tooltip align="center" min-width="130" prop="phone" label="手机号码"></el-table-column> -->
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="imgUrl" label="核销时间"></el-table-column>
<el-table-column align="center" min-width="80" label="操作">
<template #default="{ row, $index }">
<el-button type="warning" size="mini">核销</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination background :current-page="queryForm.pageNum" :page-size="queryForm.pageSize" :layout="layout" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange"></el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
list: [
{
name: 123,
},
],
listLoading: false,
elementLoadingText: '正在加载...',
queryForm: {
pageNu: 1,
pageSize: 10,
},
total: 0,
layout: 'total, sizes, prev, pager, next, jumper',
}
},
created() {
console.log(this.$route.params)
},
methods: {
// -
handleSizeChange(val) {
this.queryForm.pageSize = val
// this.fetchData()
},
// -
handleCurrentChange(val) {
this.queryForm.pageNum = val
// this.fetchData()
},
//
queryData() {
this.queryForm.pageNum = 1
this.fetchData()
},
//
fetchData() { },
//
handleGoBack() {
this.$router.push('/active/record')
this.$store.dispatch('tabsBar/delRoute', { path: '/active/got' })
},
},
}
</script>
<style></style>

@ -0,0 +1,85 @@
<template>
<div class="container">
<!-- <vab-query-form>
<vab-query-form-right-panel :span="24">
<el-form :inline="true" class="docTime" :model="queryForm" @submit.native.prevent>
<el-form-item>
<el-select v-model.trim="queryForm.status" placeholder="状态" clearable>
<el-option label="已领取" value="1"></el-option>
<el-option label="已核销" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-select v-model.trim="queryForm.name" placeholder="优惠券名称" clearable>
<el-option label="优惠券一" value="1"></el-option>
<el-option label="优惠券二" value="2"></el-option>
<el-option label="优惠券三" value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-search" type="primary" @click="queryData"></el-button>
</el-form-item>
</el-form>
</vab-query-form-right-panel>
</vab-query-form> -->
<el-table class="custom-table" highlight-current-row border v-loading="listLoading" :data="list" max-height="508px" :element-loading-text="elementLoadingText" @row-dblclick="handleGot">
<template slot="empty"></template>
<el-table-column show-overflow-tooltip align="center" min-width="100" prop="share" label="分享人"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="100" prop="got" label="领取人"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="100" prop="status" label="状态">
<template #default="{ row, $index }">
<el-tag type="primary" v-if="row.status == 1"></el-tag>
<el-tag type="danger" v-if="row.status == 2"></el-tag>
</template>
</el-table-column>
</el-table>
<el-pagination background :current-page="queryForm.pageNum" :page-size="queryForm.pageSize" :layout="layout" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange"></el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
list: [
{ share: '张三', got: '李四', status: '1' },
{ share: '王五', got: '赵六', status: '2' },
],
listLoading: false,
elementLoadingText: '正在加载...',
queryForm: {
pageNu: 1,
pageSize: 10,
},
total: 2,
layout: 'total, sizes, prev, pager, next, jumper',
}
},
methods: {
// -
handleSizeChange(val) {
this.queryForm.pageSize = val
// this.fetchData()
},
// -
handleCurrentChange(val) {
this.queryForm.pageNum = val
// this.fetchData()
},
//
queryData() {
this.queryForm.pageNum = 1
this.fetchData()
},
//
fetchData() { },
//
handleGot() {
console.log(123)
this.$router.push('/active/got')
},
},
}
</script>
<style></style>

@ -0,0 +1,80 @@
<template>
<div class="container">
<vab-query-form>
<vab-query-form-right-panel :span="24">
<el-form :inline="true" class="docTime" :model="queryForm" @submit.native.prevent>
<el-form-item>
<el-input v-model="queryForm.name" placeholder="状态" clearable style="width: 150px"></el-input>
</el-form-item>
<el-form-item>
<el-input v-model="queryForm.name" placeholder="活动名称" clearable style="width: 150px"></el-input>
</el-form-item>
<el-form-item>
<el-button icon="el-icon-search" type="primary" @click="queryData"></el-button>
</el-form-item>
</el-form>
</vab-query-form-right-panel>
</vab-query-form>
<el-table
class="custom-table"
highlight-current-row
border
v-loading="listLoading"
:data="list"
max-height="508px"
:element-loading-text="elementLoadingText"
>
<template slot="empty"></template>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="parentLevel" label="父级"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="sublevel" label="子级"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="130" prop="status" label="状态"></el-table-column>
</el-table>
<el-pagination
background
:current-page="queryForm.pageNum"
:page-size="queryForm.pageSize"
:layout="layout"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
list: [],
listLoading: false,
elementLoadingText: '正在加载...',
queryForm: {
pageNu: 1,
pageSize: 10,
},
total: 0,
layout: 'total, sizes, prev, pager, next, jumper',
}
},
methods: {
// -
handleSizeChange(val) {
this.queryForm.pageSize = val
// this.fetchData()
},
// -
handleCurrentChange(val) {
this.queryForm.pageNum = val
// this.fetchData()
},
//
queryData() {
this.queryForm.pageNum = 1
this.fetchData()
},
fetchData() {},
},
}
</script>
<style></style>

@ -790,6 +790,22 @@ const router = new VueRouter({
index: "couponIssue"
}
},
{
path: "/couponMane",
component: () => import("../pages/discount-coupon/management/index.vue"),
meta: {
title: "管理",
index: "couponMane"
}
},
{
path: "/couponRecord",
component: () => import("../pages/discount-coupon/record/index.vue"),
meta: {
title: "领取消费",
index: "couponRecord"
}
},
]
}
]

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save