This commit is contained in:
wangjinlei
2024-11-01 17:02:49 +08:00

View File

@@ -18,7 +18,11 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="优惠卷类型" prop="couponType"> <el-form-item label="优惠卷类型" prop="couponType">
<!-- <el-input v-model="dataForm.type" placeholder="优惠卷类型"></el-input> --> <!-- <el-input v-model="dataForm.type" placeholder="优惠卷类型"></el-input> -->
<el-select v-model="dataForm.couponType" placeholder="请选择" :disabled="!isEdit"> <el-select
v-model="dataForm.couponType"
placeholder="请选择"
:disabled="!isEdit"
>
<el-option <el-option
v-for="item in options" v-for="item in options"
:key="item.value" :key="item.value"
@@ -31,7 +35,8 @@
</el-col> </el-col>
<el-col :span="8" <el-col :span="8"
><el-form-item label="使用门槛" prop="useLevel"> ><el-form-item label="使用门槛" prop="useLevel">
<el-input :disabled="!isEdit" <el-input
:disabled="!isEdit"
v-model="dataForm.useLevel" v-model="dataForm.useLevel"
placeholder="" placeholder=""
oninput="value=value.replace(/[^\d.]/g,'')" oninput="value=value.replace(/[^\d.]/g,'')"
@@ -42,7 +47,8 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="面额:" prop="couponAmount"> <el-form-item label="面额:" prop="couponAmount">
<el-input :disabled="!isEdit" <el-input
:disabled="!isEdit"
v-model="dataForm.couponAmount" v-model="dataForm.couponAmount"
placeholder="面额" placeholder="面额"
oninput="value=value.replace(/[^\d.]/g,'')" oninput="value=value.replace(/[^\d.]/g,'')"
@@ -55,7 +61,8 @@
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="8"> <el-col :span="8">
<el-form-item label="优惠券名称" prop="couponName"> <el-form-item label="优惠券名称" prop="couponName">
<el-input :disabled="!isEdit" <el-input
:disabled="!isEdit"
v-model="dataForm.couponName" v-model="dataForm.couponName"
placeholder="名称" placeholder="名称"
></el-input> ></el-input>
@@ -89,7 +96,8 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="优惠卷范围" prop="couponRange"> <el-form-item label="优惠卷范围" prop="couponRange">
<!-- <el-input v-model="dataForm.type" placeholder="优惠卷类型"></el-input> --> <!-- <el-input v-model="dataForm.type" placeholder="优惠卷类型"></el-input> -->
<el-select :disabled="!isEdit" <el-select
:disabled="!isEdit"
v-model="dataForm.couponRange" v-model="dataForm.couponRange"
placeholder="请选择" placeholder="请选择"
@change="changeRange" @change="changeRange"
@@ -122,13 +130,18 @@
> >
</el-option> </el-option>
</el-select> </el-select>
<span v-if="showCateError" style="color:red; font-size:12px">请选择绑定类目</span> <span v-if="showCateError" style="color:red; font-size:12px"
>请选择绑定类目</span
>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="dataForm.couponRange == 1"> <el-col :span="24" v-if="dataForm.couponRange == 1">
<el-form-item label="" prop="rangeInfo" width="100%"> <el-form-item label="" prop="rangeInfo" width="100%">
<div class="flexBox"> <div class="flexBox">
<el-table v-if="proSelectLinkList.length > 0" :data="proSelectLinkList"> <el-table
v-if="proSelectLinkList.length > 0"
:data="proSelectLinkList"
>
<el-table-column label="课程名称"> <el-table-column label="课程名称">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.title }} {{ scope.row.title }}
@@ -141,23 +154,30 @@
style="width:100%;display: flex; style="width:100%;display: flex;
align-items: center;justify-content: center;" align-items: center;justify-content: center;"
> >
<img :src="scope.row.image" alt="" width="40px" height="40px" /> <img
:src="scope.row.image"
alt=""
width="40px"
height="40px"
/>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="100px"> <el-table-column label="操作" width="100px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="danger" @click="delCourse(scope.row.id)" size="mini" <el-button
type="danger"
@click="delCourse(scope.row.id)"
size="mini"
>删除</el-button >删除</el-button
> >
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div <div style="text-align:center; margin-top: 20px">
style="text-align:center; margin-top: 20px" <el-button type="primary" @click="addLinkPro"
>添加绑定</el-button
> >
<el-button type="primary" @click="addLinkPro">添加绑定</el-button>
</div> </div>
</div> </div>
</el-form-item> </el-form-item>
@@ -181,7 +201,8 @@
prop="effectTime" prop="effectTime"
v-if="dataForm.effectType == '2'" v-if="dataForm.effectType == '2'"
> >
<el-date-picker :disabled="!isEdit" <el-date-picker
:disabled="!isEdit"
v-model="dataForm.effectTime" v-model="dataForm.effectTime"
@change="datePicked" @change="datePicked"
type="datetime" type="datetime"
@@ -194,7 +215,8 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
label="结束时间" :disabled="!isEdit" label="结束时间"
:disabled="!isEdit"
prop="expireTime" prop="expireTime"
v-if="dataForm.effectType == '2'" v-if="dataForm.effectType == '2'"
> >
@@ -211,7 +233,8 @@
</el-col> </el-col>
<el-col :span="8" v-show="dataForm.effectType == '1'"> <el-col :span="8" v-show="dataForm.effectType == '1'">
<el-form-item label="时效" prop="validity"> <el-form-item label="时效" prop="validity">
<el-input :disabled="!isEdit" <el-input
:disabled="!isEdit"
placeholder="" placeholder=""
v-model="dataForm.validity" v-model="dataForm.validity"
oninput="value=value.replace(/[^\d.]/g,'')" oninput="value=value.replace(/[^\d.]/g,'')"
@@ -246,7 +269,8 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input <el-input
v-model="dataForm.remark":disabled="!isEdit" v-model="dataForm.remark"
:disabled="!isEdit"
placeholder="备注" placeholder="备注"
type="textarea" type="textarea"
:rows="3" :rows="3"
@@ -262,12 +286,18 @@
<el-button type="primary" @click="dataFormSubmit()">确定</el-button> <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
<selectPro ref="selectPro" v-if="showSelectPro" @close="selectProClose" :requesturl = "requesturl" :oldData="proSelectLinkList"></selectPro> <selectPro
ref="selectPro"
v-if="showSelectPro"
@close="selectProClose"
:requesturl="requesturl"
:oldData="proSelectLinkList"
></selectPro>
</div> </div>
</template> </template>
<script> <script>
import selectPro from '../../../components/selectPro.vue' import selectPro from "../../../components/selectPro.vue";
import global from "../../common/common.vue"; //引入共用组间 import global from "../../common/common.vue"; //引入共用组间
export default { export default {
baseUrl: global.baseUrl, baseUrl: global.baseUrl,
@@ -275,7 +305,7 @@ export default {
return { return {
isEdit: true, isEdit: true,
showCateError: false, showCateError: false,
requesturl:'', // 课程的请求地址 requesturl: "", // 课程的请求地址
showSelectPro: false, showSelectPro: false,
baseUrl: global.baseUrl, baseUrl: global.baseUrl,
visible: true, visible: true,
@@ -390,25 +420,27 @@ export default {
}, },
methods: { methods: {
selectProClose(data) { selectProClose(data) {
console.log('data', data) console.log("data", data);
this.showSelectPro = false this.showSelectPro = false;
this.requesturl = '' this.requesturl = "";
if (data.length > 0) { if (data.length > 0) {
this.proSelectLinkList = this.proSelectLinkList.concat(data) this.proSelectLinkList = this.proSelectLinkList.concat(data);
var list = [...this.proSelectLinkList] var list = [...this.proSelectLinkList];
this.proSelectLinkList = [...new Map(list.map(item => [item.id, item])).values()]; this.proSelectLinkList = [
...new Map(list.map(item => [item.id, item])).values()
];
// this.dataForm.rangeInfo = this.proSelectLinkList.map( item => item.id).join(',') // this.dataForm.rangeInfo = this.proSelectLinkList.map( item => item.id).join(',')
console.log('去重后', this.proSelectLinkList) console.log("去重后", this.proSelectLinkList);
} }
}, },
addLinkPro() { addLinkPro() {
this.showSelectPro = true this.showSelectPro = true;
this.requesturl = '/common/coupon/getCourseList' this.requesturl = "/common/coupon/getCourseList";
}, },
changeCate(e) { changeCate(e) {
console.log("e", e); console.log("e", e);
this.cateSelectLinkList = e; this.cateSelectLinkList = e;
this.showCateError = false this.showCateError = false;
// this.dataForm.rangeInfo = e.join(","); // this.dataForm.rangeInfo = e.join(",");
}, },
async changeRange(e) { async changeRange(e) {
@@ -440,10 +472,10 @@ export default {
}, },
init(id) { init(id) {
if (!id) { if (!id) {
console.log('没有传值') console.log("没有传值");
this.visible = true; this.visible = true;
this.isEdit=true this.isEdit = true;
return return;
} }
this.dataForm.id = id || 0; this.dataForm.id = id || 0;
this.getCouponInfoLoad = true; this.getCouponInfoLoad = true;
@@ -454,7 +486,8 @@ export default {
url: this.$http.adornUrl(`/common/coupon/getCouponInfo`), url: this.$http.adornUrl(`/common/coupon/getCouponInfo`),
method: "post", method: "post",
data: this.$http.adornData({ id: this.dataForm.id }) data: this.$http.adornData({ id: this.dataForm.id })
}).then(({ data }) => { })
.then(({ data }) => {
if (data.code !== 0) return this.$message.error(data.msg); if (data.code !== 0) return this.$message.error(data.msg);
this.visible = true; this.visible = true;
@@ -463,7 +496,7 @@ export default {
this.dataForm = data.couponEntity; this.dataForm = data.couponEntity;
if (this.dataForm.grantCount > 0) { if (this.dataForm.grantCount > 0) {
this.isEdit=false this.isEdit = false;
} }
if ( if (
this.dataForm.effectTime && this.dataForm.effectTime &&
@@ -472,7 +505,10 @@ export default {
this.dataForm.effectTime = new Date( this.dataForm.effectTime = new Date(
data.couponEntity.effectTime data.couponEntity.effectTime
).getTime(); ).getTime();
console.log("this.dataForm.effectTime", this.dataForm.effectTime ); console.log(
"this.dataForm.effectTime",
this.dataForm.effectTime
);
} else { } else {
this.dataForm.effectTime = null; this.dataForm.effectTime = null;
} }
@@ -490,27 +526,33 @@ export default {
} else { } else {
this.dataForm.expireTime = null; this.dataForm.expireTime = null;
} }
if(data.couponEntity.rangeList && data.couponEntity.rangeList.length > 0){ if (
this.selectLinkList = data.couponEntity.rangeList data.couponEntity.rangeList &&
data.couponEntity.rangeList.length > 0
) {
this.selectLinkList = data.couponEntity.rangeList;
} else { } else {
this.selectLinkList = [] this.selectLinkList = [];
} }
if(this.dataForm.couponRange == 2 && this.dataForm.rangeInfo.length > 0 ){ if (
this.dataForm.couponRange == 2 &&
this.dataForm.rangeInfo.length > 0
) {
// var list1 = [...this.selectLinkList] // var list1 = [...this.selectLinkList]
// list1.forEach( item => { // list1.forEach( item => {
// item.label = item.name // item.label = item.name
// }) // })
// this.cateSelectLinkList = this.selectLinkList // this.cateSelectLinkList = this.selectLinkList
var ss = this.dataForm.rangeInfo.split(',') var ss = this.dataForm.rangeInfo.split(",");
this.cateSelectLinkList = ss.map(element => parseInt(element) );
this.cateSelectLinkList = ss.map(element =>
parseInt(element)
);
} else if (this.dataForm.couponRange == 1) { } else if (this.dataForm.couponRange == 1) {
this.proSelectLinkList = this.selectLinkList this.proSelectLinkList = this.selectLinkList;
} else { } else {
this.cateSelectLinkList = [] this.cateSelectLinkList = [];
this.proSelectLinkList = [] this.proSelectLinkList = [];
} }
// this.dataForm.couponUrl = {name:'', url:} // this.dataForm.couponUrl = {name:'', url:}
if (this.dataForm.couponUrl && this.dataForm.couponUrl != "") { if (this.dataForm.couponUrl && this.dataForm.couponUrl != "") {
@@ -519,13 +561,14 @@ export default {
attr.push(img); attr.push(img);
this.fileList = attr; this.fileList = attr;
} else { } else {
this.fileList = [] this.fileList = [];
} }
} }
}).catch(err => { })
.catch(err => {
this.$message.error(err.msg); this.$message.error(err.msg);
this.getCouponInfoLoad = false; this.getCouponInfoLoad = false;
}) });
} }
}); });
}, },
@@ -548,9 +591,9 @@ export default {
console.log(this.dataForm.startTime); console.log(this.dataForm.startTime);
}, },
delCourse(id) { delCourse(id) {
console.log('id',id) console.log("id", id);
let index = this.proSelectLinkList.findIndex(item => item.id === id); let index = this.proSelectLinkList.findIndex(item => item.id === id);
this.proSelectLinkList.splice(index,1) this.proSelectLinkList.splice(index, 1);
}, },
closeDia() { closeDia() {
this.visible = false; this.visible = false;
@@ -573,17 +616,22 @@ export default {
couponRange: "", //优惠卷范围 0无限制 1课程卷 2课程品类卷 couponRange: "", //优惠卷范围 0无限制 1课程卷 2课程品类卷
rangeInfo: "" //范围详情(课程卷是课程id,分割 课程品类卷是课程分类根id,分割) rangeInfo: "" //范围详情(课程卷是课程id,分割 课程品类卷是课程分类根id,分割)
}; };
this.proSelectLinkList = [] this.proSelectLinkList = [];
this.cateSelectLinkList = [] this.cateSelectLinkList = [];
this.selectLinkList = [] this.selectLinkList = [];
this.fileList = [] this.fileList = [];
}, },
// 表单提交 // 表单提交
dataFormSubmit() { dataFormSubmit() {
this.$refs["dataForm"].validate(valid => { this.$refs["dataForm"].validate(valid => {
if (valid) { if (valid) {
if(!this.dataForm.id && this.dataForm.effectType == 2 && this.dataForm.effectTime < new Date().getTime()) return this.$message.error("生效时间不能小于当前时间") if (
!this.dataForm.id &&
this.dataForm.effectType == 2 &&
this.dataForm.effectTime < new Date().getTime()
)
return this.$message.error("生效时间不能小于当前时间");
if (this.dataForm.effectType == 2) { if (this.dataForm.effectType == 2) {
if ( if (
this.dataForm.effectTime == null || this.dataForm.effectTime == null ||
@@ -603,7 +651,6 @@ export default {
this.$message.error("生效时间不能大于截止时间"); this.$message.error("生效时间不能大于截止时间");
return false; return false;
} }
} }
if (this.dataForm.effectType == 1) { if (this.dataForm.effectType == 1) {
if ( if (
@@ -617,8 +664,11 @@ export default {
} }
if (this.dataForm.couponRange == 2) { if (this.dataForm.couponRange == 2) {
if(this.cateSelectLinkList.length == 0) {this.showCateError = true; return this.$message.error("请选择课程品类");} if (this.cateSelectLinkList.length == 0) {
this.dataForm.rangeInfo = this.cateSelectLinkList.join(',') this.showCateError = true;
return this.$message.error("请选择课程品类");
}
this.dataForm.rangeInfo = this.cateSelectLinkList.join(",");
// if ( // if (
// this.dataForm.rangeInfo == null || // this.dataForm.rangeInfo == null ||
// this.dataForm.rangeInfo == "" // this.dataForm.rangeInfo == ""
@@ -626,11 +676,13 @@ export default {
// this.$message.error("请选择课程品类"); // this.$message.error("请选择课程品类");
// return false; // return false;
// } // }
} }
if (this.dataForm.couponRange == 1) { if (this.dataForm.couponRange == 1) {
if(this.proSelectLinkList.length == 0) return this.$message.error("请选择课程"); if (this.proSelectLinkList.length == 0)
this.dataForm.rangeInfo = this.proSelectLinkList.map( item => item.id).join(',') return this.$message.error("请选择课程");
this.dataForm.rangeInfo = this.proSelectLinkList
.map(item => item.id)
.join(",");
// if ( // if (
// this.dataForm.rangeInfo == null || // this.dataForm.rangeInfo == null ||
// this.dataForm.rangeInfo == "" // this.dataForm.rangeInfo == ""
@@ -639,8 +691,11 @@ export default {
// return false; // return false;
// } // }
} }
if(this.dataForm.useLevel < this.dataForm.couponAmount) return this.$message.error("优惠券面额不能大于使用门槛"); if (Number(this.dataForm.useLevel) <= Number(this.dataForm.couponAmount)) {
console.log('this.dataForm', this.dataForm) this.$message.error("优惠券面额不能大于使用门槛");
return false;
}
console.log("this.dataForm", this.dataForm);
this.$http({ this.$http({
url: this.$http.adornUrl( url: this.$http.adornUrl(