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