添加活动预约

This commit is contained in:
闵宪瑞 2024-11-16 20:22:11 +08:00
parent 88bc74be41
commit 2c84b6bc43
7 changed files with 581 additions and 18 deletions

62
src/api/activity.js Normal file
View File

@ -0,0 +1,62 @@
import request from '@/utils/request'
/**
* 新增EbActivity
* @param pram
*/
export function activityCreateApi(data) {
return request({
url: 'admin/activity/save',
method: 'POST',
data
})
}
/**
* ebactivity更新
* @param pram
*/
export function ebactivityUpdateApi(data) {
return request({
url: `admin/activity/update?id=${data.id}`,
method: 'POST',
data
})
}
/**
* ebactivity详情
* @param pram
*/
export function ebactivityDetailInfoApi(data) {
return request({
url: `admin/activity/info`,
method: 'GET',
params:data
})
}
/**
* ebactivity删除
* @param data
*/
export function activityDeleteApi(data) {
return request({
url: `/admin/activity/delete`,
method: 'get',
params:data
})
}
/**
* ebactivity列表
* @param pram
*/
export function activityListApi(params) {
return request({
url: 'admin/activity/list',
method: 'GET',
params
})
}

View File

@ -172,6 +172,20 @@ const marketingRouter = {
]
},
{
path: 'activity',
component: () => import('@/views/marketing/activity/activityList/index'),
name: 'activity',
meta: { title: '活动', icon: '' },
children: [
{
path: 'activityList',
component: () => import('@/views/marketing/activity/activityList/index'),
name: 'activityList',
meta: { title: '活动管理', icon: '' }
},
]
},
]
}

View File

@ -33,14 +33,14 @@
</router-link>
</el-card>
</el-col>
<el-col v-bind="grid" class="ivu-mb" v-if="checkPermi(['admin:pass:login'])">
<el-card :bordered="false">
<router-link :to="{path:'/operation/systemSms/config'}">
<i class="el-icon-message" style="color:#ffd666" />
<p>短信配置</p>
</router-link>
</el-card>
</el-col>
<!-- <el-col v-bind="grid" class="ivu-mb" v-if="checkPermi(['admin:pass:login'])">-->
<!-- <el-card :bordered="false">-->
<!-- <router-link :to="{path:'/operation/systemSms/config'}">-->
<!-- <i class="el-icon-message" style="color:#ffd666" />-->
<!-- <p>短信配置</p>-->
<!-- </router-link>-->
<!-- </el-card>-->
<!-- </el-col>-->
<el-col v-bind="grid" class="ivu-mb" v-if="checkPermi(['admin:article:list'])">
<el-card :bordered="false">
<router-link :to="{path:'/content/articleManager'}">

View File

@ -0,0 +1,233 @@
<template>
<!-- 基于 Element UI 新增和修改弹窗 -->
<el-dialog
:title="!dataForm.id ? '添加' : '修改'"
:close-on-click-modal="false"
:visible.sync="visible">
<!-- 新增和创建表单表单 -->
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="120px">
<el-form-item label="活动类型" prop="cid">
<el-select v-model="dataForm.cid" placeholder="请选择活动类型">
<el-option label="活动预约" value="0"></el-option>
<el-option label="采茶预约" value="1"></el-option>
<el-option label="其他预约" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="活动标题" prop="title">
<el-input v-model="dataForm.title" placeholder="活动标题"></el-input>
</el-form-item>
<el-form-item label="活动图片" prop="imageInput">
<div class="upLoadPicBox" @click="modalPicTap('1')" :disabled="isDisabled">
<div v-if="dataForm.imageInput" class="pictrue"><img :src="dataForm.imageInput"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
<el-form-item label="活动人数" prop="activityNum">
<el-input-number v-model="dataForm.activityNum" :min="1" :max="2000" label="活动人数"></el-input-number>
</el-form-item>
<el-form-item label="费用" prop="activityPrice">
<el-input-number v-model="dataForm.activityPrice" :min="1" :max="2000" :precision="2" label="费用"></el-input-number>
</el-form-item>
<el-form-item label="活动地址" prop="activityAddr">
<el-input v-model="dataForm.activityAddr" placeholder="活动地址"></el-input>
</el-form-item>
<el-form-item label="活动标签" prop="tag">
<el-input v-model="dataForm.tag" placeholder="活动标签,英文逗号分隔"></el-input>
</el-form-item>
<el-form-item label="活动内容" prop="title">
<el-input v-model="dataForm.content" type="textarea" maxlength="2000" :rows="3"
placeholder="活动内容"></el-input>
</el-form-item>
<el-form-item label="开始时间" prop="beginTime">
<el-date-picker
v-model="dataForm.beginTime"
type="datetime"
placeholder="开始时间">
</el-date-picker>
</el-form-item>
<el-form-item label="截至时间" prop="endTime">
<el-date-picker
v-model="dataForm.endTime"
type="datetime"
placeholder="截至时间">
</el-date-picker>
</el-form-item>
<el-form-item label="是否热门" prop="isHot">
<el-switch v-model="dataForm.isHot" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
<el-form-item label="是否轮播" prop="isBanner">
<el-switch v-model="dataForm.isBanner" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input-number v-model="dataForm.sort" :min="1" :max="99999" label="排序"></el-input-number>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="dataSubmit()">确定</el-button>
</span>
</el-dialog>
</template>
<script>
import * as api from "@/api/activity";
import {activityCreateApi, ebactivityDetailInfoApi, ebactivityUpdateApi} from "@/api/activity";
export default {
data() {
return {
isDisabled: this.$route.params.isDisabled === '1' ? true : false,
visible: false,
dataForm: {
title: '',
author: '',
imageInput: '',
synopsis: '',
shareTitle: '',
shareSynopsis: '',
visit: '',
sort: '',
status: '',
activityAddr: '',
activityTime: '',
activityNum: '',
activityPrice: '',
tags: '',
hide: 0,
isHot: 0,
isBanner: 0,
content: '',
createTime: '',
updateTime: '',
beginTime: '',
endTime: ''
},
dataRule: {
title: [
{required: true, message: '活动标题 为必填项', trigger: 'blur'}
], cid: [
{required: true, message: '活动类型请选择', trigger: 'blur'}
],
author: [
{required: true, message: '活动作者 为必填项', trigger: 'blur'}
],
imageInput: [
{required: true, message: '活动图片 为必填项', trigger: 'blur'}
],
synopsis: [
{required: true, message: '活动简介 为必填项', trigger: 'blur'}
],
shareTitle: [
{required: true, message: '活动分享标题 为必填项', trigger: 'blur'}
],
shareSynopsis: [
{required: true, message: '活动分享简介 为必填项', trigger: 'blur'}
],
visit: [
{required: true, message: '浏览次数 为必填项', trigger: 'blur'}
],
sort: [
{required: true, message: '排序 为必填项', trigger: 'blur'}
],
status: [
{required: true, message: '状态 0有效1无效 为必填项', trigger: 'blur'}
],
activityAddr: [
{required: true, message: '活动地址 为必填项', trigger: 'blur'}
],
activityTime: [
{required: true, message: '活动时间 为必填项', trigger: 'blur'}
],
activityNum: [
{required: true, message: '活动人数 为必填项', trigger: 'blur'}
],
activityPrice: [
{required: true, message: '费用 为必填项', trigger: 'blur'}
],
tags: [
{required: true, message: '标签 为必填项', trigger: 'blur'}
],
hide: [
{required: true, message: '是否隐藏 0不隐藏1隐藏 为必填项', trigger: 'blur'}
],
isHot: [
{required: true, message: '是否热门(小程序) 0非1是 为必填项', trigger: 'blur'}
],
isBanner: [
{required: true, message: '是否轮播(小程序) 为必填项', trigger: 'blur'}
],
content: [
{required: true, message: '活动内容 为必填项', trigger: 'blur'}
],
createTime: [
{required: true, message: '创建时间 为必填项', trigger: 'blur'}
],
updateTime: [
{required: true, message: '更新时间 为必填项', trigger: 'blur'}
],
beginTime: [
{required: true, message: '开始时间 为必填项', trigger: 'blur'}
],
endTime: [
{required: true, message: '结束时间 为必填项', trigger: 'blur'}
]
}
}
},
methods: {
modalPicTap(tit, num, i, status) {
const _this = this;
this.$modalUpload(function (img) {
if (tit === '1' && !num) {
_this.dataForm.imageInput = img[0].sattDir
}
}, tit, 'content')
},
init(id) { //
this.dataForm.id = id || 0
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
ebactivityDetailInfoApi({id: id}).then(res => {
this.dataForm = res;
})
}
})
},
//
dataSubmit() {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
if (this.dataForm.id){
console.log(this.dataForm)
ebactivityUpdateApi(this.dataForm).then(res => {
this.visible = false
this.$message.success("修改成功!");
this.$emit('refreshDataList');
})
}else {
delete this.dataForm.id
activityCreateApi(this.dataForm).then(res => {
this.visible = false
this.$message.success("添加成功!");
this.$emit('refreshDataList');
})
}
}
})
}
}
}
</script>

View File

@ -0,0 +1,246 @@
<template>
<div class="divBox">
<el-form :inline="true" :model="tableFrom" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="tableFrom.keywords" placeholder="查询参数" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">查询</el-button>
<el-button v-hasPermi="['admin:activity:save']" type="primary" @click="addOrUpdateHandle()">新增活动</el-button>
<!-- <el-button v-hasPermi="['autogencode:ebactivity:delete']" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>-->
</el-form-item>
</el-form>
<el-table
:data="dataList"
v-loading="dataListLoading"
style="width: 100%;">
<!-- <el-table-column-->
<!-- prop="id"-->
<!-- header-align="center"-->
<!-- align="center"-->
<!-- label="活动编号">-->
<!-- </el-table-column>-->
<el-table-column
prop="cid"
header-align="center"
align="center"
label="活动类型">
<template slot-scope="scope">
<div class="demo-image__preview">
<span v-if="scope.row.cid == 0">活动预约</span>
<span v-else-if="scope.row.cid == 1">采茶预约</span>
<span v-else-if="scope.row.cid == 2">其他预约</span>
<span v-else>类型错误</span>
</div>
</template>
</el-table-column>
<el-table-column
width="150"
prop="title"
header-align="center"
align="center"
label="标题">
</el-table-column>
<el-table-column
prop="imageInput"
header-align="center"
align="center"
label="图片">
<template slot-scope="scope">
<div class="demo-image__preview">
<el-image
style="width: 36px; height: 36px"
:src="scope.row.imageInput"
:preview-src-list="[scope.row.imageInput]"
/>
</div>
</template>
</el-table-column>
<el-table-column
prop="activityAddr"
header-align="center"
align="center"
label="地址">
</el-table-column>
<el-table-column
prop="activityNum"
header-align="center"
align="center"
label="活动人数">
</el-table-column>
<el-table-column
prop="activityPrice"
header-align="center"
align="center"
label="费用">
</el-table-column>
<el-table-column
prop="content"
header-align="center"
align="center"
label="活动内容">
</el-table-column>
<el-table-column
width="300"
prop="beginTime"
header-align="center"
align="center"
label="开始时间 - 结束时间">
<template slot-scope="scope">
{{scope.row.beginTime}} - {{scope.row.endTime}}
</template>
</el-table-column>
<el-table-column
header-align="center"
align="center"
label="是否热门">
<template slot-scope="scope">
<el-switch
@change='changeStatus($event,scope.row,"hot")'
v-model="scope.row.isHot"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-table-column>
<el-table-column
header-align="center"
align="center"
label="是否轮播">
<template slot-scope="scope">
<el-switch
@change='changeStatus($event,scope.row,"banner")'
v-model="scope.row.isBanner"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</template>
</el-table-column>
<el-table-column
prop="sort"
header-align="center"
align="center"
label="排序">
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="150"
label="操作">
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
<el-button v-hasPermi="['admin:activity:update']" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">预约记录</el-button>
<el-button v-hasPermi="['admin:activity:delete']" type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="tableFrom.page"
:page-sizes="[10, 20, 50, 100]"
:page-size="tableFrom.limit"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
<!-- 表单弹窗, 新增数据和修改数据-->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
</div>
</template>
<script>
import {activityDeleteApi, activityListApi, ebactivityUpdateApi} from "@/api/activity"
import AddOrUpdate from "@/views/marketing/activity/activityList/activity-add-and-update"
export default {
data(){
return{
dataListLoading: false,
dataList: [],
tableFrom: {
page: 1,
limit: 20,
name: '',
keywords: '',
},
totalPage: 0,
addOrUpdateVisible: false
}
},
components: {
AddOrUpdate
},
mounted () {
this.getDataList()
},
methods:{
changeStatus($event,val,type){
if (type ==='banner'){
val.isBanner = $event
}
if (type ==='hot'){
val.isHot = $event
}
ebactivityUpdateApi(val).then(res => {
this.$message.success("修改成功!");
this.getDataList()
})
},
addOrUpdateHandle (id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
})
},
deleteHandle(id){
this.$confirm('确定删除当前数据?').then(() => {
activityDeleteApi({id:id}).then(data => {
this.$message.success('删除成功')
this.getDataList()
})
})
},
sizeChangeHandle(val){
this.tableFrom.limit = val
this.getDataList ()
},
currentChangeHandle(page){
this.tableFrom.page = page
this.getDataList ()
},
//
selectionChangeHandle (val) {
// this.dataListSelections = val
},
//
getDataList () {
this.dataListLoading = true
activityListApi(this.tableFrom).then(res => {
// TODO
this.dataList = res.list
this.totalPage = res.total
this.tableFrom.limit = res.total
this.tableFrom.page = res.page
this.dataListLoading = false
})
}
}
}
</script>
<style lang="sass" scoped>
</style>

View File

@ -20,8 +20,8 @@
<router-link :to=" { path:'/store/list/creatProduct' } ">
<el-button size="small" type="primary" class="mr10" v-hasPermi="['admin:product:save']">添加商品</el-button>
</router-link>
<el-button size="small" type="success" class="mr10" @click="onCopy" v-hasPermi="['admin:product:save']">商品采集</el-button>
<el-button size="small" icon="el-icon-upload2" @click="exports" v-hasPermi="['admin:export:excel:product']">导出</el-button>
<!-- <el-button size="small" type="success" class="mr10" @click="onCopy" v-hasPermi="['admin:product:save']">商品采集</el-button>-->
<!-- <el-button size="small" icon="el-icon-upload2" @click="exports" v-hasPermi="['admin:export:excel:product']">导出</el-button>-->
</div>
<el-table
v-loading="listLoading"

View File

@ -25,6 +25,14 @@
<el-radio :label="false">关闭</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="核销员">
<el-radio-group v-model="ruleForm.isProsecutor">
<el-radio :label="1">开启</el-radio>
<el-radio :label="0">关闭</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="状态">
<el-radio-group v-model="ruleForm.status">
<el-radio :label="true">开启</el-radio>
@ -89,7 +97,7 @@
id : res.uid,
mark: res.mark,
// phone: res.phone,
// realName: res.realName,
isProsecutor: res.isProsecutor,
status: res.status,
addres: res.addres,
groupId: Number(res.groupId) || '',