多租户商城-平台端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

333 lines
8.8 KiB

<template>
<div class="edit_add_page">
<div class="content">
<el-form ref="form" :model="form" label-width="100px">
<div class="detail_title">基础信息</div>
<el-form-item label="活动名称:">
<el-input v-model="form.seckillName" maxlength="20" placeholder="请输入活动名称" :disabled="unStart" />
</el-form-item>
<el-form-item label="备注:">
<el-input v-model="form.remark" maxlength="200" type="textarea" placeholder="请输入活动介绍" :disabled="unStart"
style="width: 400px;" />
</el-form-item>
<!-- :picker-options="pickerOptions" -->
<el-form-item label="报名时间:">
<el-date-picker v-model="date2" type="datetimerange" range-separator="至" start-placeholder="开始时间"
end-placeholder="结束时间" value-format="yyyy-MM-dd HH:mm:ss" :disabled="applyEnd" />
<p class="timeInfo">报名时间不能交叉且报名时间不能大于活动时间</p>
</el-form-item>
<el-form-item label="活动时间:">
<el-date-picker v-model="date1" type="datetimerange" range-separator="至" start-placeholder="开始时间"
end-placeholder="结束时间" value-format="yyyy-MM-dd HH:mm:ss" :disabled="applyEnd" />
<p class="timeInfo">平台活动时间不能交叉并且活动时间不能小于报名时间</p>
</el-form-item>
<el-form-item label="活动保证金:">
<el-radio-group v-model="form.ifBond">
<el-radio :label="1" :disabled="unStart">需要</el-radio>
<el-radio :label="0" :disabled="unStart">不需要</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.ifBond === 1" label="保证金金额:">
<el-input v-model="form.bondMoney" maxlength="9" placeholder="请输入活动保证金金额" :disabled="unStart" />
</el-form-item>
<div class="detail_title">优惠规则</div>
<el-form-item label="直降金额:">
<el-input v-model="form.seckillMoney" maxlength="9" placeholder="请输入活动名称" :disabled="unStart" />
</el-form-item>
<el-form-item label="是否限购:">
<el-radio-group v-model="form.ifLimit">
<el-radio :label="2" :disabled="unStart">限购</el-radio>
<el-radio :label="1" :disabled="unStart">不限购</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.ifLimit === 2" label="限购(件/人):">
<el-input v-model="form.limitNumber" maxlength="9" placeholder="请输入限购数量" :disabled="unStart" />
</el-form-item>
<el-form-item label="优惠券叠加:">
<el-radio-group v-model="form.ifAdd">
<el-radio :label="1" :disabled="unStart">叠加</el-radio>
<el-radio :label="0" :disabled="unStart">不叠加</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
</div>
<div class="footer">
<div class="btn_list">
<span @click="cancel">取消</span>
<span @click="save">保存</span>
<span @click="reset">重置</span>
</div>
</div>
</div>
</template>
<script>
// import { activeAdd, activeUpdate, activeGetById } from '@/api/active'
import {
getSeckillDetail,
editSeckillData,
addSeckillData
} from '@/api/active/active_seckill.js'
import Form from './module'
export default {
props: {
activityForm: {
type: Object,
default: () => { }
},
isEdit: {
type: Number,
default: 0
}
},
data() {
return {
form: new Form(),
date1: [], // 活动时间
date2: [], // 报名时间
type: false,
title: ''
}
},
computed: {
// 其他修改
unStart() {
const t = this.isEdit ? this.activityForm : null
return t && !(t.state === 0)
},
// 时间修改
applyEnd() {
const t = this.isEdit ? this.activityForm : null
return t && (t.state === 3 || t.state === 4)
}
},
watch: {
isEdit: {
handler(nVal, oVal) {
if (nVal) {
this.getDetails()
} else {
this.reset()
}
},
deep: true
},
activityForm: {
handler(nVal, oVal) {
if (nVal) {
this.getDetails()
}
}
}
},
created() {
if (this.isEdit) { // 初始化watch无法监听isEdit,手动获取数据
this.getDetails()
}
},
methods: {
// 查询详情请
async getDetails() {
const res = await getSeckillDetail({ seckillId: this.activityForm.seckillId })
if (JSON.stringify(res.data) !== '{}') {
this.form = res.data
this.date1 = [res.data.startTime, res.data.endTime]
this.date2 = [res.data.signStartTime, res.data.signEndTime]
}
},
cancel() { this.$emit('cancel') },
refersh() { this.$emit('refersh') },
save() {
const params = Object.assign({}, this.form, {
startTime: this.date1[0] || '',
endTime: this.date1[1] || '',
signStartTime: this.date2[0] || '',
signEndTime: this.date2[1] || '',
bondMoney: this.form.bondMoney * 1
})
let errMsg = ''
if (params.seckillName === '') {
errMsg += ' 活动名称 '
}
if (params.signStartTime === '' || params.signEndTime === '') {
errMsg += ' 报名时间 '
}
if (params.startTime === '' || params.endTime === '') {
errMsg += ' 活动时间 '
}
if (errMsg.length !== 0) {
this.$message.error(`请输入${errMsg}`)
return
}
if (this.isEdit) {
// 修改
return editSeckillData(
Object.assign(params, { seckillId: this.activityForm.seckillId })
).then(res => {
if (res.code === '') {
this.$message({
message: '修改成功',
type: 'success'
})
this.reset()
this.refersh()
}
})
}
// 添加
return addSeckillData(params).then(res => {
if (res.code === '') {
this.$message({
message: '新增成功',
type: 'success'
})
this.reset()
this.refersh()
}
})
},
reset() {
this.form = new Form()
this.date1 = []
this.date2 = []
},
}
}
</script>
<style lang='scss' scoped>
.edit_add_page {
padding: 0px;
.content {
overflow: hidden;
.detail_title {
font-size: 16px;
font-weight: 500;
padding-left: 10px;
line-height: 16px;
margin-bottom: 15px;
margin-top: 10px;
position: relative;
&::before {
content: "";
height: 16px;
width: 4px;
background-color: #183ECD;
position: absolute;
left: 0px;
display: block;
font-weight: 500;
}
}
::v-deep .el-form-item__label {
vertical-align: middle;
float: left;
padding: 0 12px 0 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
font-size: 14px;
font-family: PingFang SC;
font-weight: 400;
color: #404F64;
line-height: 36px;
text-align: left;
}
.el-form {
.el-form-item {
label.el-form-item__label {
font-size: 16px !important;
color: red !important;
}
}
}
.photo {
padding: 70px 100px;
.avatar-uploader {
width: 180px;
.el-icon-plus,
img {
width: 180px;
height: 180px;
line-height: 180px;
border: 1px #bbb solid;
border-radius: 4px 4px 0px 4px;
margin-bottom: 10px;
text-align: center;
}
img {
border: none;
}
}
}
}
.footer {
height: 80px;
line-height: 80px;
font-size: 24px;
position: relative;
border-top: 1px solid #e0e5eb;
.btn_list {
position: absolute;
right: 0;
top: 0;
height: 36px;
span {
padding: 0;
margin: 0;
width: 68px;
height: 36px;
line-height: 36px;
text-align: center;
display: inline-block;
/* font-size: 16px; */
border-radius: 4px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
font-size: 14px;
font-family: PingFang SC;
font-weight: 400;
&:hover {
cursor: pointer;
}
&:nth-child(1) {
background: rgba(255, 255, 255, 1);
order: 1px solid rgba(224, 229, 235, 1);
margin-right: 10px;
border: 1px solid rgba(224, 229, 235, 1);
}
&:nth-child(2) {
background: #183ECD;
color: #fff;
}
}
}
}
.timeInfo {
font-size: 12px;
color: #999999;
}
.el-input {
width: 400px;
}
}
</style>