添加活动预约

This commit is contained in:
闵宪瑞 2024-11-18 08:48:34 +08:00
parent 2c84b6bc43
commit 0829c8bf7a
11 changed files with 1073 additions and 504 deletions

View File

@ -60,3 +60,38 @@ export function activityListApi(params) {
})
}
/**
* ebactivity预约日志记录
* @param pram
*/
export function activityLogListApi(params) {
return request({
url: 'admin/activity/records',
method: 'GET',
params
})
}
/**
* ebactivity场地预约
* @param pram
*/
export function activityPlaceListApi(params) {
return request({
url: 'admin/place/list',
method: 'GET',
params
})
}
/**
* ebactivity预约修改
* @param pram
*/
export function activityPlaceUpdateApi(data) {
return request({
url: `admin/place/update?id=${data.id}`,
method: 'POST',
data
})
}

View File

@ -38,6 +38,17 @@ const marketingRouter = {
hidden: true,
component: () => import('@/views/marketing/coupon/list/creatCoupon')
},
{
path: 'list/saveTree/:id?',
name: 'treeAdd',
meta: {
title: '茶树添加',
noCache: true,
activeMenu: `/marketing/coupon/list`
},
hidden: true,
component: () => import('@/views/marketing/coupon/list/createTree')
},
{
path: 'list',
component: () => import('@/views/marketing/coupon/list/index'),
@ -52,6 +63,21 @@ const marketingRouter = {
}
]
},
{
path: 'lottery',
component: () => import('@/views/marketing/lottery/config/index'),
name: 'lottery',
meta: { title: '游戏管理', icon: '' },
children: [
{
path: 'config',
component: () => import('@/views/marketing/lottery/config/index'),
name: 'config',
meta: { title: '茶株认领', icon: '' }
},
]
},
{
path: 'bargain',
component: () => import('@/views/marketing/bargain/index'),
@ -157,33 +183,27 @@ const marketingRouter = {
}
]
},
{
path: 'lottery',
component: () => import('@/views/marketing/lottery/config/index'),
name: 'lottery',
meta: { title: '抽奖管理', icon: '' },
children: [
{
path: 'config',
component: () => import('@/views/marketing/lottery/config/index'),
name: 'config',
meta: { title: '抽奖配置', icon: '' }
},
]
},
{
path: 'activity',
component: () => import('@/views/marketing/activity/activityList/index'),
component: () => import('@/views/marketing/activity/index'),
name: 'activity',
meta: { title: '活动', icon: '' },
meta: { title: '预约', icon: '' },
children: [
{
path: 'activityList',
component: () => import('@/views/marketing/activity/activityList/index'),
name: 'activityList',
name: 'ActivityList',
meta: { title: '活动管理', icon: '' }
},
{
path: 'venueReservation',
component: () => import('@/views/marketing/activity/venueReservation/index'),
name: 'VenueReservation',
meta: { title: '场地预约', icon: '' }
},
]
},
]

View File

@ -9,9 +9,9 @@
<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-option label="活动预约" value="746"></el-option>
<el-option label="采茶预约" value="752"></el-option>
<el-option label="其他预约" value="753"></el-option>
</el-select>
</el-form-item>
@ -48,6 +48,7 @@
<el-form-item label="开始时间" prop="beginTime">
<el-date-picker
value-format="yyyy-MM-dd hh:mm:ss" format="yyyy-MM-dd hh:mm:ss"
v-model="dataForm.beginTime"
type="datetime"
placeholder="开始时间">
@ -56,6 +57,7 @@
<el-form-item label="截至时间" prop="endTime">
<el-date-picker
value-format="yyyy-MM-dd hh:mm:ss" format="yyyy-MM-dd hh:mm:ss"
v-model="dataForm.endTime"
type="datetime"
placeholder="截至时间">
@ -107,8 +109,6 @@ export default {
isHot: 0,
isBanner: 0,
content: '',
createTime: '',
updateTime: '',
beginTime: '',
endTime: ''
},
@ -169,12 +169,6 @@ export default {
content: [
{required: true, message: '活动内容 为必填项', trigger: 'blur'}
],
createTime: [
{required: true, message: '创建时间 为必填项', trigger: 'blur'}
],
updateTime: [
{required: true, message: '更新时间 为必填项', trigger: 'blur'}
],
beginTime: [
{required: true, message: '开始时间 为必填项', trigger: 'blur'}
],

View File

@ -9,7 +9,7 @@
<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-button v-hasPermi="['autogencode:ebactivity:delete']" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>-->
</el-form-item>
</el-form>
<el-table
@ -17,13 +17,6 @@
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"
@ -31,9 +24,9 @@
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-if="scope.row.cid == 746">活动预约</span>
<span v-else-if="scope.row.cid ==752">采茶预约</span>
<span v-else-if="scope.row.cid == 753">其他预约</span>
<span v-else>类型错误</span>
</div>
</template>
@ -93,7 +86,7 @@
align="center"
label="开始时间 - 结束时间">
<template slot-scope="scope">
{{scope.row.beginTime}} - {{scope.row.endTime}}
{{ scope.row.beginTime }} - {{ scope.row.endTime }}
</template>
</el-table-column>
<el-table-column
@ -123,8 +116,6 @@
</el-switch>
</template>
</el-table-column>
<el-table-column
prop="sort"
header-align="center"
@ -139,8 +130,12 @@
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>
<el-button v-hasPermi="['admin:activity:update']" type="text" size="small"
@click="activityLog(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>
@ -153,20 +148,143 @@
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
<!-- 表单弹窗, 新增数据和修改数据-->
<!-- 表单弹窗, 新增数据和修改数据-->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<el-dialog
title="活动预约记录"
:close-on-click-modal="false"
:visible.sync="logVisible"
width="80%"
>
<el-table
:data="logList"
style="width: 100%;">
<el-table-column
width="150"
prop="userName"
header-align="center"
align="center"
label="预约人">
</el-table-column>
<el-table-column
prop="cellPhone"
header-align="center"
align="center"
label="预约手机号">
</el-table-column>
<el-table-column
prop="createDate"
header-align="center"
align="center"
label="报名时间">
</el-table-column>
<el-table-column
prop="registerDate"
header-align="center"
align="center"
label="预约指定日期">
</el-table-column>
<el-table-column
prop="remark"
header-align="center"
align="center"
label="备注">
</el-table-column>
<el-table-column
prop="registerStatus"
header-align="center"
align="center"
label="预约状态">
<template slot-scope="scope">
<div class="demo-image__preview">
<el-tag v-if="scope.row.registerStatus == 1">报名成功</el-tag>
<el-tag type="warning" v-else-if="scope.row.registerStatus ==4">已取消</el-tag>
<el-tag v-else>类型错误</el-tag>
</div>
</template>
</el-table-column>
<el-table-column
prop="cancelData"
header-align="center"
align="center"
label="取消时间">
<template slot-scope="scope">
<div class="demo-image__preview">
<span v-if="scope.row.cancelData === null"> - </span>
<span v-else>{{ scope.row.cancelData }}</span>
</div>
</template>
</el-table-column>
<el-table-column
prop="cancelReason"
header-align="center"
align="center"
label="取消原因">
<template slot-scope="scope">
<div class="demo-image__preview">
<span v-if="scope.row.cancelReason === null"> - </span>
<span v-else>{{ scope.row.cancelReason }}</span>
</div>
</template>
</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="activityLog(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
background
layout="prev, pager, next"
@current-change="handleCurrentChange"
:total="this.logParams.total">
</el-pagination>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="logVisibles = false"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {activityDeleteApi, activityListApi, ebactivityUpdateApi} from "@/api/activity"
import {activityDeleteApi, activityListApi, activityLogListApi, ebactivityUpdateApi} from "@/api/activity"
import AddOrUpdate from "@/views/marketing/activity/activityList/activity-add-and-update"
export default {
data(){
return{
data() {
return {
dataListLoading: false,
logVisible: false,
dataList: [],
logList: [],
logParams: {
activityId:"",
limit:10,
page:1,
total:1,
},
tableFrom: {
page: 1,
limit: 20,
@ -180,15 +298,35 @@ export default {
components: {
AddOrUpdate
},
mounted () {
mounted() {
this.getDataList()
},
methods:{
changeStatus($event,val,type){
if (type ==='banner'){
methods: {
//
activityLog(id){
this.logParams.activityId = id
this.logVisible = true
activityLogListApi(this.logParams).then(res =>{
this.logParams.limit = res.limit
this.logParams.page = res.page
this.logParams.total = res.total
this.logList = res.list
})
},
handleCurrentChange(val) {
this.logParams.page = val
activityLogListApi(this.logParams).then(res =>{
this.logParams.limit = res.limit
this.logParams.page = res.page
this.logParams.total = res.total
this.logList = res.list
})
},
changeStatus($event, val, type) {
if (type === 'banner') {
val.isBanner = $event
}
if (type ==='hot'){
if (type === 'hot') {
val.isHot = $event
}
ebactivityUpdateApi(val).then(res => {
@ -196,34 +334,34 @@ export default {
this.getDataList()
})
},
addOrUpdateHandle (id) {
addOrUpdateHandle(id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
})
},
deleteHandle(id){
deleteHandle(id) {
this.$confirm('确定删除当前数据?').then(() => {
activityDeleteApi({id:id}).then(data => {
activityDeleteApi({id: id}).then(data => {
this.$message.success('删除成功')
this.getDataList()
})
})
},
sizeChangeHandle(val){
sizeChangeHandle(val) {
this.tableFrom.limit = val
this.getDataList ()
this.getDataList()
},
currentChangeHandle(page){
currentChangeHandle(page) {
this.tableFrom.page = page
this.getDataList ()
this.getDataList()
},
//
selectionChangeHandle (val) {
selectionChangeHandle(val) {
// this.dataListSelections = val
},
//
getDataList () {
getDataList() {
this.dataListLoading = true
activityListApi(this.tableFrom).then(res => {
// TODO

View File

@ -0,0 +1,15 @@
<template>
<div>
<router-view />
</div>
</template>
<script>
export default {
}
</script>
<style lang="sass" scoped>
</style>

View File

@ -0,0 +1,296 @@
<template>
<div class="divBox">
<el-card class="box-card">
<div class="clearfix">
<div class="container">
<el-form size="small" label-width="100px" >
<!-- <el-form-item label="预约状态:">-->
<!-- <el-radio-group v-model="tableFrom.status" type="button" @change="seachList">-->
<!-- <el-radio-button label="all">全部</el-radio-button>-->
<!-- <el-radio-button label="unPaid">待确认 </el-radio-button>-->
<!-- <el-radio-button label="unPaid">预约成功 </el-radio-button>-->
<!-- <el-radio-button label="unPaid">预约取消 </el-radio-button>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<el-form-item label="预约人:" class="width100">
<el-input v-model="tableFrom.keywords" placeholder="请输入预约人" class="selWidth" size="small" clearable>
<el-button slot="append" icon="el-icon-search" size="small" @click="seachList" />
</el-input>
</el-form-item>
<el-form-item label="手机号:" class="width100">
<el-input v-model="tableFrom.keywords" placeholder="请输入订单号" class="selWidth" size="small" clearable>
<el-button slot="append" icon="el-icon-search" size="small" @click="seachList" />
</el-input>
</el-form-item>
</el-form>
</div>
</div>
</el-card>
<div class="mt20">
<!-- <cards-data :cardLists="cardLists" v-if="checkPermi(['admin:order:list:data'])"></cards-data> -->
</div>
<el-table
v-loading="dataListLoading"
:data="dataList"
style="width: 100%;">
<el-table-column
width="80"
prop="id"
header-align="center"
align="center"
label="预约编号">
</el-table-column> <el-table-column
width="150"
prop="userName"
header-align="center"
align="center"
label="预约人">
</el-table-column>
<el-table-column
prop="cellPhone"
header-align="center"
align="center"
label="预约手机号">
</el-table-column>
<el-table-column
width="180"
prop="createDate"
header-align="center"
align="center"
label="报名时间">
</el-table-column>
<el-table-column
prop="attendNum"
header-align="center"
align="center"
label="参与人数">
</el-table-column>
<el-table-column
width="180"
prop="subscribeDate"
header-align="center"
align="center"
label="预约指定日期">
</el-table-column>
<el-table-column
prop="remark"
header-align="center"
align="center"
label="备注">
</el-table-column>
<el-table-column
prop="registerStatus"
header-align="center"
align="center"
label="预约状态">
<template slot-scope="scope">
<div class="demo-image__preview">
<el-tag v-if="scope.row.status == 0">待确认</el-tag>
<el-tag type="success" v-else-if="scope.row.status ==1">预约成功</el-tag>
<el-tag type="danger" v-else-if="scope.row.status ==2">预约取消</el-tag>
<el-tag v-else>类型错误</el-tag>
</div>
</template>
</el-table-column>
<el-table-column
width="180"
prop="cancelData"
header-align="center"
align="center"
label="取消时间">
<template slot-scope="scope">
<div class="demo-image__preview">
<span v-if="scope.row.cancelData === null"> - </span>
<span v-else>{{ scope.row.cancelData }}</span>
</div>
</template>
</el-table-column>
<el-table-column
prop="cancelReason"
header-align="center"
align="center"
label="取消原因">
<template slot-scope="scope">
<div class="demo-image__preview">
<span v-if="scope.row.cancelReason === null"> - </span>
<span v-else>{{ scope.row.cancelReason }}</span>
</div>
</template>
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="150"
label="操作">
<template slot-scope="scope">
<el-button v-if="scope.row.status == 0" type="text" size="small" @click="mobile(scope.row)">电话联系</el-button>
<!-- <el-button v-hasPermi="['admin:activity:update']" type="text" size="small"-->
<!-- @click="activityLog(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>
<!-- <el-dialog-->
<!-- title="电话联系"-->
<!-- :close-on-click-modal="false"-->
<!-- :visible.sync="mobileVisible"-->
<!-- width="30%"-->
<!-- center-->
<!-- >-->
<!-- <div style="width: 100%">-->
<!-- <div style="text-align: center;font-size: 26px;font-weight: 700">预约人{{this.mobileFrom.userName}}</div>-->
<!-- <div style="text-align: center;font-size: 26px;font-weight: 700">联系方式{{this.mobileFrom.cellPhone}}</div>-->
<!-- </div>-->
<!-- <span slot="footer" class="dialog-footer">-->
<!-- <el-button type="primary" @click="userok" >确认预约</el-button>-->
<!-- <el-button type="primary" @click="usererror">取消预约</el-button>-->
<!-- </span>-->
<!-- </el-dialog>-->
<el-dialog title="电话联系" :visible.sync="mobileVisible" center>
<div style="width: 100%">
<div style="text-align: center;font-size: 26px;font-weight: 700">预约人{{this.mobileFrom.userName}}</div>
<div style="text-align: center;font-size: 26px;font-weight: 700">联系方式{{this.mobileFrom.cellPhone}}</div>
</div>
<el-dialog
width="30%"
title="取消原因"
:visible.sync="innerVisible"
append-to-body>
<el-input
type="textarea"
placeholder="请输入内容"
v-model="mobileFrom.cancelReason"
maxlength="30"
show-word-limit
>
</el-input>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="usererror">确定取消</el-button>
</div>
</el-dialog>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="userok" >确认预约</el-button>
<el-button type="primary" @click="innerVisible = true">取消预约</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
activityDeleteApi,
activityListApi,
activityLogListApi,
activityPlaceListApi, activityPlaceUpdateApi,
ebactivityUpdateApi
} from "@/api/activity"
import AddOrUpdate from "@/views/marketing/activity/activityList/activity-add-and-update"
export default {
data() {
return {
dataListLoading: false,
innerVisible: false,
mobileVisible: false,
dataList:[],
mobileFrom:{},
tableFrom:{
page: 1,
limit: 20,
keywords: '',
}
}
},
components: {
},
mounted() {
this.getDataList()
},
methods: {
seachList() {
this.tableFrom.page = 1
this.getDataList()
},
userok(){
this.mobileFrom.status = 1
activityPlaceUpdateApi(this.mobileFrom).then(res =>{
this.$message.success('预约成功!')
this.mobileVisible = false
this.getDataList()
})
},
usererror(){
this.mobileFrom.status = 2
activityPlaceUpdateApi(this.mobileFrom).then(res =>{
this.$message.success('取消成功!')
this.mobileVisible = false
this.innerVisible = false
this.getDataList()
})
},
mobile(row){
this.mobileVisible = true
this.mobileFrom = row
},
getDataList(){
this.dataListLoading = true
activityPlaceListApi(this.tableFrom).then(res =>{
console.log(res)
this.dataList = res.list
this.totalPage = res.total
this.tableFrom.limit = res.total
this.tableFrom.page = res.page
this.dataListLoading = false
})
},
sizeChangeHandle(val) {
this.tableFrom.limit = val
this.getDataList()
},
currentChangeHandle(page) {
this.tableFrom.page = page
this.getDataList()
},
}
}
</script>
<style lang="sass" scoped>
</style>

View File

@ -0,0 +1,223 @@
<template>
<div class="add-game-tree-item">
<el-form :model="form" :rules="rules" ref="formRef" label-width="120px" class="game-form">
<el-form-item label="茶株标题" prop="productName">
<el-input v-model="form.productName" placeholder="请输入茶株标题"></el-input>
</el-form-item>
<el-form-item label="茶株副标题" prop="title">
<el-input v-model="form.title" placeholder="请输入茶株副标题"></el-input>
</el-form-item>
<el-form-item label="茶株图" prop="productImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi5')">
<div v-if="form.productImage" class="pictrue"><img :src="form.productImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
<el-form-item label="茶株价格" prop="productPrice">
<el-input-number v-model="form.productPrice" :min="0" :precision="2" placeholder="请输入茶株价格"></el-input-number>
</el-form-item>
<el-form-item label="发放数量" prop="allNum">
<el-input-number v-model="form.allNum" :min="0" placeholder="请输入发放数量"></el-input-number>
</el-form-item>
<el-form-item label="果实数" prop="fruitNum">
<el-input-number v-model="form.fruitNum" :min="0" placeholder="请输入果实数"></el-input-number>
</el-form-item>
<el-form-item label="种植位置" prop="treePlace">
<el-input v-model="form.treePlace" placeholder="请输入种植位置"></el-input>
</el-form-item>
<el-form-item label="养护人" prop="gardener">
<el-input v-model="form.gardener" placeholder="请输入养护人"></el-input>
</el-form-item>
<el-form-item label="土壤" prop="soil">
<el-input v-model="form.soil" placeholder="请输入土壤类型"></el-input>
</el-form-item>
<el-form-item label="湿度" prop="humidity">
<el-input v-model="form.humidity" placeholder="请输入湿度"></el-input>
</el-form-item>
<el-form-item label="内容" prop="content">
<el-input type="textarea" v-model="form.content" placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item label="小苗阶段图" prop="smallImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi1')">
<div v-if="form.smallImage" class="pictrue"><img :src="form.smallImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
<el-form-item label="成长阶段图" prop="growImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi2')">
<div v-if="form.growImage" class="pictrue"><img :src="form.growImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
<el-form-item label="成熟阶段图" prop="bigImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi3')">
<div v-if="form.bigImage" class="pictrue"><img :src="form.bigImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
<el-form-item label="热门新品图" prop="hotImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi4')">
<div v-if="form.hotImage" class="pictrue"><img :src="form.hotImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
<el-form-item label="热门显示天数" prop="hotDay">
<el-input-number v-model="form.hotDay" :min="0" :max="30" placeholder="请输入热门显示天数"></el-input-number>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
<el-button @click="resetForm">重置</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import {marketingGameInfoListApi} from "@/api/marketing";
export default {
data() {
return {
isDisabled: this.$route.params.isDisabled === '1',
form: {
title: '',
productName: '',
productImage: '',
productPrice: 0.00,
allNum: 0,
fruitNum: 0,
treePlace: '',
gardener: '',
soil: '',
humidity: '',
content: '',
smallImage: '',
growImage: '',
bigImage: '',
hotImage: '',
hotDay: 0,
},
rules: {
title: [{ required: true, message: '请输入商品副标题', trigger: 'blur' }],
productId: [
{ required: true, message: '请输入商品编号', trigger: 'blur' },
{ type: 'number', message: '商品编号必须是数字', trigger: 'blur' },
],
productName: [{ required: true, message: '请输入商品名称', trigger: 'blur' }],
productImage: [{ required: true, message: '请输入商品图链接', trigger: 'blur' }],
productPrice: [
{ required: true, message: '请输入商品价值', trigger: 'blur' },
{ type: 'number', message: '商品价值必须是数字', trigger: 'blur' },
],
allNum: [
{ required: true, message: '请输入总共数量', trigger: 'blur' },
{ type: 'number', message: '总共数量必须是数字', trigger: 'blur' },
],
outNum: [
{ required: true, message: '请输入支出数量', trigger: 'blur' },
{ type: 'number', message: '支出数量必须是数字', trigger: 'blur' },
],
fruitNum: [
{ required: true, message: '请输入果实数', trigger: 'blur' },
{ type: 'number', message: '果实数必须是数字', trigger: 'blur' },
],
treePlace: [{ required: true, message: '请输入种植地点', trigger: 'blur' }],
gardener: [{ required: true, message: '请输入养护人', trigger: 'blur' }],
soil: [{ required: true, message: '请输入土壤类型', trigger: 'blur' }],
humidity: [{ required: true, message: '请输入湿度', trigger: 'blur' }],
content: [{ required: true, message: '请输入活动内容', trigger: 'blur' }],
smallImage: [{ required: true, message: '请输入小苗阶段图链接', trigger: 'blur' }],
growImage: [{ required: true, message: '请输入成长阶段图链接', trigger: 'blur' }],
bigImage: [{ required: true, message: '请输入成熟阶段图链接', trigger: 'blur' }],
hotImage: [{ required: true, message: '请输入热门新品图链接', trigger: 'blur' }],
hotDay: [
{ required: true, message: '请输入热门新品显示天数', trigger: 'blur' },
{ type: 'number', message: '热门新品显示天数必须是数字', trigger: 'blur' },
],
status: [{ required: true, message: '请选择状态', trigger: 'change' }],
},
};
},
mounted() {
if ( this.$route.params.id ) {
console.log( this.$route.params.id)
marketingGameInfoListApi({id: this.$route.params.id}).then(res =>{
console.log(res)
})
}
},
methods: {
getDataFrom() {
},
modalPicTap(tit, num) {
const _this = this;
this.$modalUpload(function (img) {
if (tit === '1') {
switch (num) {
case 'pi1':
_this.form.smallImage = img[0].sattDir;
break;
case 'pi2':
_this.form.growImage = img[0].sattDir;
break;
case 'pi3':
_this.form.bigImage = img[0].sattDir;
break;
case 'pi4':
_this.form.hotImage = img[0].sattDir;
break;
case 'pi5':
_this.form.productImage = img[0].sattDir;
break;
}
}
}, tit, 'content');
},
submitForm() {
this.$refs.formRef.validate((valid) => {
if (valid) {
}
});
},
resetForm() {
this.$refs.formRef.resetFields();
},
},
};
</script>
<style scoped>
.game-form {
width: 80%;
margin: 20px auto;
}
</style>

View File

@ -1,55 +1,209 @@
<template>
<div class="divBox">
<el-table ref="selection" :data="specsData">
<el-table-column label="序号" type="index" min-width="80"/>
<el-table-column label="图片" min-width="80">
<template slot-scope="scope">
<div class="acea-row .row-middle .row-center-wrapper">
<div class="pictrue pictrueTab" v-if="scope.row.productImage" @click="modalPicTap('dan', scope.$index)">
<img v-lazy="scope.row.productImage" />
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>规则</span>
</div>
<div class="upLoad pictrueTab acea-row row-center-wrapper" v-else>
<i class="el-icon-picture-outline" style="font-size: 24px"></i>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="名称" min-width="80">
<template slot-scope="scope">
<div>{{ scope.row.productName }}</div>
</template>
</el-table-column>
<!-- <el-table-column label="奖品" min-width="80">-->
<!-- <template slot-scope="scope">-->
<!-- <div>{{ scope.row.type | typeName }}</div>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="提示语" min-width="80">
<template slot-scope="scope">
<div>{{ scope.row.message }}</div>
</template>
</el-table-column>
<el-table-column label="数量" min-width="80">
<template slot-scope="scope">
<div class="clearfix">
<div class="container">
<el-form :model="specsData.rule" label-width="120px" class="stage-form">
<!-- <el-form-item label="ID" prop="id">-->
<!-- <el-input v-model="specsData.rule.id" disabled></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="小苗阶段" prop="smallStage">
<el-input v-model="specsData.rule.smallStage" placeholder="请输入小苗阶段"></el-input>
</el-form-item>
<el-form-item label="成长阶段" prop="growStage">
<el-input v-model="specsData.rule.growStage" placeholder="请输入成长阶段"></el-input>
</el-form-item>
<el-form-item label="成熟阶段" prop="bigStage">
<el-input v-model="specsData.rule.bigStage" placeholder="请输入成熟阶段"></el-input>
</el-form-item>
<el-form-item label="每次浇水量" prop="everyWater">
<el-input-number v-model="specsData.rule.everyWater" :min="0"></el-input-number>
</el-form-item>
<el-form-item label="每次施肥量" prop="everyManure">
<el-input-number v-model="specsData.rule.everyManure" :min="0"></el-input-number>
</el-form-item>
<!-- <el-form-item label="每次施肥阶梯" prop="everyManureStair">-->
<!-- <el-input v-model="specsData.rule.everyManureStair" placeholder="请输入每次施肥阶梯"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="每次光照" prop="everySunlight">
<el-input-number v-model="specsData.rule.everySunlight" :min="0"></el-input-number>
</el-form-item>
<el-form-item label="每次光照阶梯" prop="everySunlightStair">
<!-- 动态光照阶梯 -->
<el-table :data="specsData.rule.everySunlightStair" style="width: 100%" border>
<el-table-column prop="begin" label="阳光最低区间">
<template #default="scope">
<el-input-number
:controls="false"
v-model="scope.row.total"
:max="9999999999"
v-model="scope.row.begin"
:min="0"
:precision="0"
class="priceBox"
></el-input-number>
placeholder="最低值"
@change="validateRules"
/>
</template>
</el-table-column>
<el-table-column prop="end" label="阳光最高区间">
<template #default="scope">
<el-input-number
v-model="scope.row.end"
:min="0"
placeholder="最高值"
@change="validateRules"
/>
</template>
</el-table-column>
<el-table-column prop="sunlight" label="阳光值">
<template #default="scope">
<el-input-number
v-model="scope.row.sunlight"
:min="0"
placeholder="阳光值"
/>
</template>
</el-table-column>
</el-table>
<el-button type="primary" @click="addRule" class="mt10">添加规则</el-button>
</el-form-item>
<el-form-item label="总浇水量" prop="waterTotal">
<el-input-number v-model="specsData.rule.waterTotal" :min="0"></el-input-number>
</el-form-item>
</el-form>
</div>
</div>
</el-card>
<div class="mt20"></div>
<div slot="header" class="clearfix">
<router-link :to=" { path: '/marketing/coupon/list/saveTree' } ">
<el-button size="small" type="primary" >添加茶株</el-button>
</router-link>
</div>
<div class="mt20">
<!-- <cards-data :cardLists="cardLists" v-if="checkPermi(['admin:order:list:data'])"></cards-data> -->
</div>
<el-table
v-loading="dataListLoading"
:data="specsData.items"
style="width: 100%;">
<el-table-column
width="80"
prop="gameId"
header-align="center"
align="center"
label="茶株编号">
</el-table-column>
<el-table-column
width="150"
prop="title"
header-align="center"
align="center"
label="领养标题">
</el-table-column>
<el-table-column
prop="productImage"
header-align="center"
align="center"
label="茶株封面">
</el-table-column>
<el-table-column
prop="gardener"
header-align="center"
align="center"
label="养护人">
</el-table-column>
<el-table-column
prop="soil"
header-align="center"
align="center"
label="土壤">
</el-table-column>
<el-table-column
prop="humidity"
header-align="center"
align="center"
label="湿度">
</el-table-column>
<el-table-column
prop="smallImage"
header-align="center"
align="center"
label="树苗图">
</el-table-column>
<el-table-column
prop="growImage"
header-align="center"
align="center"
label="成长图">
</el-table-column>
<el-table-column
prop="bigImage"
header-align="center"
align="center"
label="成熟图">
</el-table-column>
<el-table-column label="奖品概率" min-width="80">
<template slot-scope="scope">
<div>{{ scope.row.lotteryRate }}</div>
</template>
<el-table-column
prop="allNum"
header-align="center"
align="center"
label="领养总数">
</el-table-column>
<el-table-column label="操作" fixed="right" width="80">
<el-table-column
prop="allNum"
header-align="center"
align="center"
label="已领养数量">
</el-table-column>
<el-table-column
prop="fruitNum"
header-align="center"
align="center"
label="果实数量">
</el-table-column>
<el-table-column
prop="treePlace"
header-align="center"
align="center"
label="种植地点">
</el-table-column>
<el-table-column
prop="bigImage"
header-align="center"
align="center"
label="成熟图">
</el-table-column>
<el-table-column
prop="createTime"
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">
<a class="submission mr15" @click="editGoods(scope.$index)">编辑</a>
<router-link :to=" { path: '/marketing/coupon/list/saveTree/'+ scope.row.id } ">
<el-button type="text" size="small" class="mr10" >详情</el-button>
</router-link>
</template>
</el-table-column>
</el-table>
@ -60,52 +214,39 @@
import {marketingGameInfoListApi, marketingGameListApi} from "@/api/marketing";
export default {
data(){
return{
tableFrom: {
page: 1,
limit: 20,
cid:747
},
modalPic: false,
isChoice: '单选',
picTit: '',
specsData:[]
data() {
return {
dataList: {},
dataListLoading: false,
gameFrom: {},
specsData: {}
}
},
mounted() {
this.getList()
this.getDataList()
},
methods:{
methods: {
//
getList() {
marketingGameListApi(this.tableFrom).then(res => {
this.listLoading = false
// res.list[0].id
getDataList() {
marketingGameListApi({cid: 748}).then(res => {
this.dataListLoading = false
this.getInfo(res.list[0].id)
}).catch(res => {
this.listLoading = false
this.dataListLoading = false
})
},
getInfo(id){
marketingGameInfoListApi({id:id}).then(res =>{
this.specsData = res.rule.items
getInfo(id) {
marketingGameInfoListApi({id: id}).then(res => {
console.log(res)
this.specsData = res
if (this.specsData.rule.everySunlightStair === null) {
this.specsData.rule.everySunlightStair = []
}
})
},
//
modalPicTap(tit, index) {
const _this = this
this.$modalUpload(function(img) {
if(img.length >= 2) return this.$message.warning("最多选择1张图片");
_this.specsData[index].productImage = img[0].sattDir
},tit, 'store')
},
}
}
</script>
@ -120,6 +261,7 @@ export default {
display: inline-block;
position: relative;
cursor: pointer;
img {
width: 100%;
height: 100%;

View File

@ -1,320 +1,15 @@
<template>
<div>
<el-card :bordered="false" shadow="never" class="ivu-mt">
<el-form
ref="tableFrom"
:model="tableFrom"
:label-width="labelWidth"
:label-position="labelPosition"
@submit.native.prevent
>
<el-scope.row :gutter="24">
<el-col>
<el-form-item label="活动类型:" clearable>
<el-select
style="width: 200px"
v-model="tableFrom.factor"
placeholder="请选择活动类型"
clearable
@change="userSearchs"
>
<el-option value="1" label="积分抽取"></el-option>
<!-- <el-option value="2">余额</el-option> -->
<el-option value="3" label="订单支付"></el-option>
<el-option value="4" label="订单评价"></el-option>
<!-- <el-option value="5">关注公众号</el-option> -->
</el-select>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="活动状态:" clearable>
<el-select
style="width: 200px"
v-model="tableFrom.start_status"
placeholder="请选择"
clearable
@change="userSearchs"
>
<el-option value="0" label="未开始"></el-option>
<el-option value="1" label="进行中"></el-option>
<el-option value="-1" label="已结束"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="上架状态:">
<el-select
style="width: 200px"
placeholder="请选择"
v-model="tableFrom.status"
clearable
@change="userSearchs"
>
<el-option value="1" label="上架"></el-option>
<el-option value="0" label="下架"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="抽奖搜索:" label-for="store_name">
<el-input
search
enter-button
style="width: 200px"
placeholder="请输入抽奖名称ID"
v-model="tableFrom.store_name"
@on-search="userSearchs"
/>
</el-form-item>
</el-col>
</el-scope.row>
<el-scope.row class="mb20">
<el-button v-auth="['marketing-store_bargain-create']" type="primary" v-db-click @click="add" class="mr10"
>添加抽奖</el-button
>
</el-scope.row>
</el-form>
<el-table
:data="tableList"
v-loading="loading"
highlight-scope.row
no-userFrom-text="暂无数据"
no-filtered-userFrom-text="暂无筛选结果"
>
<el-table-column label="ID" width="80">
<template slot-scope="scope">
<span>{{ scope.row.id }}</span>
</template>
</el-table-column>
<el-table-column label="活动名称" min-width="130">
<template slot-scope="scope">
<span>{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column label="活动类型" min-width="130">
<template slot-scope="scope">
<span>{{ scope.row.lottery_type }}</span>
</template>
</el-table-column>
<el-table-column label="参与次数" min-width="130">
<template slot-scope="scope">
<span>{{ scope.row.lottery_all }}</span>
</template>
</el-table-column>
<el-table-column label="抽奖人数" min-width="130">
<template slot-scope="scope">
<span>{{ scope.row.lottery_people }}</span>
</template>
</el-table-column>
<el-table-column label="中奖人数" min-width="130">
<template slot-scope="scope">
<span>{{ scope.row.lottery_win }}</span>
</template>
</el-table-column>
<el-table-column label="活动状态" min-width="130">
<template slot-scope="scope">
<span>{{ scope.row.status_name }}</span>
</template>
</el-table-column>
<el-table-column label="上架状态" min-width="130">
<template slot-scope="scope">
<el-switch
class="defineSwitch"
:active-value="1"
:inactive-value="0"
v-model="scope.row.status"
:value="scope.row.status"
:disabled="scope.row.lottery_status == 2 ? true : false"
@change="onchangeIsShow(scope.row)"
size="large"
active-text="上架"
inactive-text="下架"
>
</el-switch>
</template>
</el-table-column>
<el-table-column label="活动时间" min-width="130">
<template slot-scope="scope">
<div>{{ scope.row.start_time || '--' }}</div>
<div>{{ scope.row.end_time || '--' }}</div>
</template>
</el-table-column>
<el-table-column label="活动状态" min-width="130">
<template slot-scope="scope">
<span>{{ scope.row.status_name }}</span>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="170">
<template slot-scope="scope">
<a v-db-click @click="edit(scope.row)">编辑</a>
<el-divider direction="vertical"></el-divider>
<a v-db-click @click="del(scope.row, '删除抽奖', scope.$index)">删除</a>
<el-divider direction="vertical"></el-divider>
<a v-db-click @click="copy(scope.row)">复制</a>
<el-divider direction="vertical"></el-divider>
<a v-db-click @click="getRecording(scope.row)">抽奖记录</a>
</template>
</el-table-column>
</el-table>
<div class="acea-row row-right page">
<pagination
v-if="total"
:total="total"
:page.sync="tableFrom.page"
:limit.sync="tableFrom.limit"
@pagination="getList"
/>
</div>
</el-card>
<router-view />
</div>
</template>
<script>
import { mapState } from 'vuex';
import { lotteryListApi, lotteryStatusApi } from '@/api/lottery';
import { formatDate } from '@/utils/validate';
export default {
name: 'storeBargain',
filters: {
formatDate(time) {
if (time !== 0) {
let date = new Date(time * 1000);
return formatDate(date, 'yyyy-MM-dd hh:mm');
}
},
},
data() {
return {
loading: false,
tableList: [],
tableFrom: {
start_status: '',
status: '',
store_name: '',
export: 0,
page: 1,
factor: '',
limit: 15,
},
total: 0,
};
},
computed: {
...mapState('admin/layout', ['isMobile']),
labelWidth() {
return this.isMobile ? undefined : '80px';
},
labelPosition() {
return this.isMobile ? 'top' : 'right';
},
},
created() {
this.getList();
},
methods: {
//
add() {
this.$router.push({ path: this.$routeProStr + '/marketing/lottery/create' });
},
//
edit(row) {
this.$router.push({
name: 'marketing_create',
query: {
id: row.id,
},
});
},
//
copy(row) {
this.$router.push({
name: 'marketing_create',
query: {
id: row.id,
copy: 1,
},
});
},
//
del(row, tit, num) {
let delfromData = {
title: tit,
num: num,
url: `marketing/lottery/del/${row.id}`,
method: 'DELETE',
ids: '',
};
this.$modalSure(delfromData)
.then((res) => {
this.$message.success(res.msg);
this.tableList.splice(num, 1);
})
.catch((res) => {
this.$message.error(res.msg);
});
},
//
getRecording(row) {
this.$router.push({
path: this.$routeProStr + `/marketing/lottery/recording_list`,
query: {
id: row.id,
},
});
},
//
getList() {
this.loading = true;
this.tableFrom.start_status = this.tableFrom.start_status || '';
this.tableFrom.status = this.tableFrom.status || '';
lotteryListApi(this.tableFrom)
.then(async (res) => {
let data = res.data;
this.tableList = data.list;
this.total = res.data.count;
this.loading = false;
})
.catch((res) => {
this.loading = false;
this.$message.error(res.msg);
});
},
//
userSearchs() {
this.tableFrom.page = 1;
this.getList();
},
//
onchangeIsShow(row) {
let data = {
id: row.id,
status: row.status,
};
lotteryStatusApi(data)
.then(async (res) => {
this.$message.success(res.msg);
this.getList();
})
.catch((res) => {
this.$message.error(res.msg);
this.getList();
});
},
},
};
}
</script>
<style scoped lang="stylus">
.tabBox_img {
width: 36px;
height: 36px;
border-radius: 4px;
cursor: pointer;
<style lang="sass" scoped>
img {
width: 100%;
height: 100%;
}
}
</style>

View File

@ -273,6 +273,17 @@
label="积分"
min-width="100"
/>
<el-table-column
prop="isProsecutor"
label="核销员"
min-width="100"
>
<template slot-scope="scope">
<el-tag v-if="scope.row.isProsecutor == 0 ">非核销员</el-tag>
<el-tag v-else>核销员</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" min-width="130" fixed="right" align="center">
<template slot-scope="scope">
<el-button type="text" @click="editUser(scope.row.uid)" size="small" v-hasPermi="['admin:user:infobycondition']">编辑</el-button>