修改抽奖

This commit is contained in:
闵宪瑞 2024-12-10 13:07:35 +08:00
parent cde6c087b2
commit 05848781a3
16 changed files with 1913 additions and 196 deletions

View File

@ -2,7 +2,8 @@
ENV = 'development'
# base api
VUE_APP_BASE_API = 'http://127.0.0.1:20010'
VUE_APP_BASE_API = 'https://syy.xunyingcloud.cn'
#VUE_APP_BASE_API = 'http://localhost:20010/'
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.

View File

@ -95,3 +95,12 @@ export function activityPlaceUpdateApi(data) {
data
})
}
//用户预约修改
export function userActivityPlaceListApi(data) {
return request({
url: `admin/activity/updateRegister?id=${data.id}`,
method: 'POST',
data
})
}

63
src/api/plant.js Normal file
View File

@ -0,0 +1,63 @@
import request from '@/utils/request'
/**
* 新增plant
* @param pram
*/
export function plantCreateApi(data) {
return request({
url: 'admin/teaPlant/save',
method: 'POST',
data
})
}
/**
* plant更新
* @param pram
*/
export function plantUpdateApi(data) {
return request({
url: `admin/teaPlant/update?id=${data.id}`,
method: 'POST',
data
})
}
/**
* plant详情
* @param pram
*/
export function plantDetailApi(params) {
return request({
url: `admin/teaPlant/info`,
method: 'GET',
params
})
}
/**
* plant删除
* @param pram
*/
export function plantDeleteApi(params) {
return request({
url: `admin/teaPlant/delete`,
method: 'get',
params
})
}
/**
* plant列表
* @param pram
*/
export function plantListApi(params) {
return request({
url: 'admin/teaPlant/list',
method: 'GET',
params
})
}

63
src/api/plantorder.js Normal file
View File

@ -0,0 +1,63 @@
import request from '@/utils/request'
/**
* 新增EbTeaPlantOrder
* @param pram
*/
export function EbTeaPlantOrderCreateApi(data) {
return request({
url: 'autogencode/ebteaplantorder/save',
method: 'POST',
data
})
}
/**
* ebteaplantorder更新
* @param pram
*/
export function ebteaplantorderUpdateApi(data) {
return request({
url: 'autogencode/ebteaplantorder/update',
method: 'POST',
data
})
}
/**
* ebteaplantorder详情
* @param pram
*/
export function ebteaplantorderDetailApi(id) {
return request({
url: `autogencode/ebteaplantorder/info/${id}`,
method: 'GET'
})
}
/**
* ebteaplantorder删除
* @param pram
*/
export function ebteaplantorderDeleteApi(id) {
return request({
url: `autogencode/ebteaplantorder/delete/${id}`,
method: 'get'
})
}
/**
* ebteaplantorder列表
* @param pram
*/
export function plantOrderListApi(params) {
return request({
url: 'admin/teaPlant/order',
method: 'GET',
params
})
}

View File

@ -64,7 +64,12 @@ const marketingRouter = {
name: 'lotteryConfig',
meta: { title: '茶株认领', icon: '' }
},
{
path: 'exchange',
component: () => import('@/views/marketing/lottery/exchange/index'),
name: 'exchange',
meta: { title: '果实兑换', icon: '' }
},
]
},
@ -88,6 +93,26 @@ const marketingRouter = {
},
]
},
{
path: 'tree',
component: () => import('@/views/marketing/tree/index'),
name: 'tree',
meta: { title: '茶树认领', icon: '' },
children: [
{
path: 'item',
component: () => import('@/views/marketing/tree/item/index'),
name: 'item',
meta: { title: '茶树配置', icon: '' }
},
{
path: 'order',
component: () => import('@/views/marketing/tree/order/index'),
name: 'order',
meta: { title: '认领订单', icon: '' }
},
]
},
{
path: 'bargain',
component: () => import('@/views/marketing/bargain/index'),

View File

@ -14,7 +14,6 @@
<el-option label="其他预约" value="753"></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>
@ -29,23 +28,19 @@
<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
value-format="yyyy-MM-dd hh:mm:ss" format="yyyy-MM-dd hh:mm:ss"
@ -64,12 +59,11 @@
</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="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>

View File

@ -1,22 +1,33 @@
<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 :model="tableFrom" @keyup.enter.native="getDataList()" label-width="90px">
<el-form-item label="活动名称:">
<el-input @input="getDataList()" style="width: 275px" v-model="tableFrom.keywords" placeholder="查询活动" clearable></el-input>
</el-form-item>
<el-form-item label="活动类型:">
<el-radio-group v-model="tableFrom.cid" size="medium" @input="getDataList()">
<el-radio-button label="">全部</el-radio-button>
<el-radio-button label="746">活动预约</el-radio-button>
<el-radio-button label="752">采茶预约</el-radio-button>
<el-radio-button label="753">其他预约</el-radio-button>
</el-radio-group>
</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
width="60"
prop="id"
header-align="center"
align="center"
label="活动编号">
</el-table-column>
<el-table-column
prop="cid"
header-align="center"
@ -30,7 +41,6 @@
<span v-else>类型错误</span>
</div>
</template>
</el-table-column>
<el-table-column
width="150"
@ -103,19 +113,19 @@
</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-->
<!-- 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"
@ -150,8 +160,6 @@
</el-pagination>
<!-- 表单弹窗, 新增数据和修改数据-->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<el-dialog
title="活动预约记录"
:close-on-click-modal="false"
@ -161,6 +169,13 @@
<el-table
:data="logList"
style="width: 100%;">
<el-table-column
width="100"
prop="id"
header-align="center"
align="center"
label="预约编号">
</el-table-column>
<el-table-column
width="100"
prop="userName"
@ -199,22 +214,21 @@
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 v-if="scope.row.registerStatus == 0">待确认</el-tag>
<el-tag v-else-if="scope.row.registerStatus == 1">报名成功</el-tag>
<el-tag v-else-if="scope.row.registerStatus == 2">已拒绝</el-tag>
<el-tag type="warning" v-else-if="scope.row.registerStatus ==4">已取消</el-tag>
<el-tag v-else>类型错误</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>
@ -227,7 +241,6 @@
header-align="center"
align="center"
label="取消原因">
<template slot-scope="scope">
<div class="demo-image__preview">
<span v-if="scope.row.cancelReason === null"> - </span>
@ -243,6 +256,13 @@
width="150"
label="操作">
<template slot-scope="scope">
<el-popconfirm v-hasPermi="['admin:activity:update']" @onConfirm="update(scope.row)" v-if="scope.row.registerStatus == 0"
title="请在和客户确认之后再点击哦!">
<!-- //todo -->
<template #reference>
<el-button type="text" size="small">同意预约</el-button>
</template>
</el-popconfirm>
<!-- <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)">预约记录-->
@ -259,18 +279,24 @@
@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, activityLogListApi, ebactivityUpdateApi} from "@/api/activity"
import {
activityDeleteApi,
activityListApi,
activityLogListApi,
ebactivityUpdateApi,
userActivityPlaceListApi
} from "@/api/activity"
import AddOrUpdate from "@/views/marketing/activity/activityList/activity-add-and-update"
export default {
@ -291,6 +317,7 @@ export default {
limit: 20,
name: '',
keywords: '',
cid: "",
},
totalPage: 0,
addOrUpdateVisible: false
@ -303,6 +330,14 @@ export default {
this.getDataList()
},
methods: {
update(row) {
console.log("确定了")
console.log(row)
userActivityPlaceListApi({id:row.id,status:0}).then(res =>{
this.$message.success("修改成功!");
this.activityLog(this.logParams.activityId)
})
},
//
activityLog(id) {
this.logParams.activityId = id

View File

@ -130,7 +130,9 @@
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-if="scope.row.status == 0" type="text" size="small" @click="mobile(scope.row)">审核预约</el-button>
<!-- <el-button v-if="scope.row.status == 1" type="text" size="small" @click="innerVisible = true">后台取消</el-button>-->
<!-- <el-button v-hasPermi="['admin:activity:update']" type="text" size="small"-->
<!-- @click="activityLog(scope.row.id)">预约记录-->
<!-- </el-button>-->
@ -199,6 +201,23 @@
</el-dialog>
<el-dialog
width="30%"
title="取消原因"
:visible.sync="onVisible"
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>
</template>
<script>
@ -216,6 +235,7 @@ export default {
return {
dataListLoading: false,
innerVisible: false,
onVisible: false,
mobileVisible: false,
dataList:[],
mobileFrom:{},

View File

@ -217,71 +217,71 @@
width="80%"
>
<el-form :model="teaPlants" :rules="rules" ref="formRef" label-width="120px" class="game-form">
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="茶株标题" prop="productName">
<el-input v-model="teaPlants.productName" placeholder="请输入茶株标题"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="茶株副标题" prop="title">
<el-input v-model="teaPlants.title" placeholder="请输入茶株副标题"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="茶株图" prop="productImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi5')">
<div v-if="teaPlants.productImage" class="pictrue">
<img :src="teaPlants.productImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="茶株价格" prop="productPrice">
<el-input-number v-model="teaPlants.productPrice" :min="0" :precision="2"
placeholder="请输入茶株价格"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="6">
<!-- <el-form-item label="发放数量" prop="allNum">-->
<!-- <el-input-number v-model="teaPlants.allNum" :min="0" placeholder="请输入发放数量"></el-input-number>-->
<!-- <el-row :gutter="20">-->
<!-- <el-col :span="8">-->
<!-- <el-form-item label="茶株标题" prop="productName">-->
<!-- <el-input v-model="teaPlants.productName" placeholder="请输入茶株标题"></el-input>-->
<!-- </el-form-item>-->
</el-col>
<el-col :span="6">
<el-form-item label="果实数" prop="fruitNum">
<el-input-number v-model="teaPlants.fruitNum" :min="0" placeholder="请输入果实数"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="grid-content bg-purple"></div>
</el-col>
</el-row>
<!-- </el-col>-->
<!-- <el-col :span="8">-->
<!-- <el-form-item label="茶株副标题" prop="title">-->
<!-- <el-input v-model="teaPlants.title" placeholder="请输入茶株副标题"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="8">-->
<!-- <el-form-item label="茶株图" prop="productImage">-->
<!-- <div class="upLoadPicBox" @click="modalPicTap('1','pi5')">-->
<!-- <div v-if="teaPlants.productImage" class="pictrue">-->
<!-- <img :src="teaPlants.productImage"></div>-->
<!-- <div v-else class="upLoad">-->
<!-- <i class="el-icon-camera cameraIconfont"/>-->
<!-- </div>-->
<!-- </div>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- </el-row>-->
<!-- <el-row :gutter="20">-->
<!-- <el-col :span="6">-->
<!-- <el-form-item label="茶株价格" prop="productPrice">-->
<!-- <el-input-number v-model="teaPlants.productPrice" :min="0" :precision="2"-->
<!-- placeholder="请输入茶株价格"></el-input-number>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- &lt;!&ndash; <el-form-item label="发放数量" prop="allNum">&ndash;&gt;-->
<!-- &lt;!&ndash; <el-input-number v-model="teaPlants.allNum" :min="0" placeholder="请输入发放数量"></el-input-number>&ndash;&gt;-->
<!-- &lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- <el-form-item label="果实数" prop="fruitNum">-->
<!-- <el-input-number v-model="teaPlants.fruitNum" :min="0" placeholder="请输入果实数"></el-input-number>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- <div class="grid-content bg-purple"></div>-->
<!-- </el-col>-->
<!-- </el-row>-->
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="养护人" prop="gardener">
<el-input v-model="teaPlants.gardener" placeholder="请输入养护人"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="土壤" prop="soil">
<el-input v-model="teaPlants.soil" placeholder="请输入土壤类型"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="温度" prop="humidity">
<el-input v-model="teaPlants.humidity" placeholder="请输入温度"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="grid-content bg-purple"></div>
</el-col>
</el-row>
<!-- <el-row :gutter="20">-->
<!-- <el-col :span="6">-->
<!-- <el-form-item label="养护人" prop="gardener">-->
<!-- <el-input v-model="teaPlants.gardener" placeholder="请输入养护人"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- <el-form-item label="土壤" prop="soil">-->
<!-- <el-input v-model="teaPlants.soil" placeholder="请输入土壤类型"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- <el-form-item label="温度" prop="humidity">-->
<!-- <el-input v-model="teaPlants.humidity" placeholder="请输入温度"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- <div class="grid-content bg-purple"></div>-->
<!-- </el-col>-->
<!-- </el-row>-->
<el-row :gutter="20">
<el-col :span="6">
@ -318,20 +318,25 @@
</el-col>
</el-row>
<el-form-item label="种植位置" prop="treePlace">
<el-input v-model="teaPlants.treePlace" placeholder="请输入种植位置"></el-input>
</el-form-item>
<el-form-item label="内容" prop="content">
<Tinymce v-model="teaPlants.content"></Tinymce>
</el-form-item>
<el-form-item label="用户领取最大数" prop="isHot">
<el-input-number v-model="teaPlants.limitNum" placeholder="请输入用户领取最大数" :min="0" :max="20"></el-input-number>
<!-- <el-form-item label="种植位置" prop="treePlace">-->
<!-- <el-input v-model="teaPlants.treePlace" placeholder="请输入种植位置"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="内容" prop="content">-->
<!-- <Tinymce v-model="teaPlants.content"></Tinymce>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="用户领取最大数" prop="isHot">-->
<!-- <el-input-number v-model="teaPlants.limitNum" placeholder="请输入用户领取最大数" :min="0"-->
<!-- :max="20"></el-input-number>-->
<!-- </el-form-item>-->
<el-form-item label="领取果实数量" prop="isHot">
<el-input-number v-model="teaPlants.fruitNum" placeholder="请输入领取果实数量" :min="0" :max="2000"></el-input-number>
</el-form-item>
<el-form-item label="热门显示天数" prop="hotDay">
<el-input-number v-model="teaPlants.hotDay" :min="0" :max="365"
placeholder="请输入热门显示天数"></el-input-number>
</el-form-item>
<!-- <el-form-item label="热门显示天数" prop="hotDay">-->
<!-- <el-input-number v-model="teaPlants.hotDay" :min="0" :max="365"-->
<!-- placeholder="请输入热门显示天数"></el-input-number>-->
<!-- </el-form-item>-->
<el-form-item>
<el-button v-hasPermi="['admin:game:update']" type="primary" @click="submitForm">提交</el-button>
</el-form-item>

View File

@ -0,0 +1,573 @@
<template>
<div class="divBox">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>规则121212121</span>
</div>
<div class="clearfix">
<div class="container">
<el-form :model="specsData.rule" label-width="120px" class="stage-form">
<el-form-item label="认领背景图片" prop="id">
<div class="upLoadPicBox" @click="modalPicTap('1','pi6')">
<div v-if="specsData.image" class="pictrue">
<img :src="specsData.image"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</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-input-number v-model="specsData.rule.everySunlight" :min="0"></el-input-number>-->
<el-form-item label="光照阶梯" prop="everySunlight">
<div class="input-row">
阳光值小于
<el-input @input="minInput" v-model="min.end" placeholder="请输入内容" class="input-item"/>
<span>以下每次消耗</span>
<el-input v-model="min.sunlight" placeholder="请输入内容" class="input-item"/>
</div>
<div class="input-row">
阳光值区间
<el-input disabled :value="`${min.end}-${max.begin}`" placeholder="请输入内容" class="input-item"/>
<span>以下每次消耗</span>
<el-input v-model="center.sunlight" placeholder="请输入内容" class="input-item"/>
</div>
<div class="input-row">
阳光值大于
<el-input
@input="maxInput"
v-model="max.begin"
placeholder="请输入内容"
class="input-item"
/>
<span>以上每次消耗</span>
<el-input
v-model="max.sunlight"
placeholder="请输入内容"
class="input-item"
/>
</div>
</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">-->
<!-- <el-button size="small" type="primary" @click="add()">添加茶株</el-button>-->
<!-- </div>-->
<div class="mt20">
<!-- <cards-data :cardLists="cardLists" v-if="checkPermi(['admin:order:list:data'])"></cards-data> -->
</div>
<el-table
:data="specsData.items"
style="width: 100%;">
<!-- <el-table-column-->
<!-- width="150"-->
<!-- prop="productName"-->
<!-- 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="茶株封面">-->
<!-- <template slot-scope="scope">-->
<!-- <div class="demo-image__preview">-->
<!-- <el-image-->
<!-- style="width: 36px; height: 36px"-->
<!-- :src="scope.row.productImage"-->
<!-- :preview-src-list="[scope.row.productImage]"-->
<!-- />-->
<!-- </div>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column-->
<!-- prop="productPrice"-->
<!-- 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="树苗图">
<template slot-scope="scope">
<div class="demo-image__preview">
<el-image
style="width: 36px; height: 36px"
:src="scope.row.smallImage"
:preview-src-list="[scope.row.smallImage]"
/>
</div>
</template>
</el-table-column>
<el-table-column
prop="growImage"
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.growImage"
:preview-src-list="[scope.row.growImage]"
/>
</div>
</template>
</el-table-column>
<el-table-column
prop="bigImage"
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.bigImage"
:preview-src-list="[scope.row.bigImage]"
/>
</div>
</template>
</el-table-column>
<!-- <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
fixed="right"
header-align="center"
align="center"
width="150"
label="操作">
<template slot-scope="scope">
<el-button type="text" size="small" class="mr10" @click="update(scope.$index,scope.row)">修改</el-button>
</template>
</el-table-column>
</el-table>
<div class="mt20"></div>
<el-button type="primary" @click="submit()">提交修改</el-button>
<el-dialog
title="添加茶树"
:visible.sync="visible"
width="80%"
>
<el-form :model="teaPlants" :rules="rules" ref="formRef" label-width="120px" class="game-form">
<!-- <el-row :gutter="20">-->
<!-- <el-col :span="8">-->
<!-- <el-form-item label="茶株标题" prop="productName">-->
<!-- <el-input v-model="teaPlants.productName" placeholder="请输入茶株标题"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="8">-->
<!-- <el-form-item label="茶株副标题" prop="title">-->
<!-- <el-input v-model="teaPlants.title" placeholder="请输入茶株副标题"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="8">-->
<!-- <el-form-item label="茶株图" prop="productImage">-->
<!-- <div class="upLoadPicBox" @click="modalPicTap('1','pi5')">-->
<!-- <div v-if="teaPlants.productImage" class="pictrue">-->
<!-- <img :src="teaPlants.productImage"></div>-->
<!-- <div v-else class="upLoad">-->
<!-- <i class="el-icon-camera cameraIconfont"/>-->
<!-- </div>-->
<!-- </div>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- </el-row>-->
<!-- <el-row :gutter="20">-->
<!-- <el-col :span="6">-->
<!-- <el-form-item label="茶株价格" prop="productPrice">-->
<!-- <el-input-number v-model="teaPlants.productPrice" :min="0" :precision="2"-->
<!-- placeholder="请输入茶株价格"></el-input-number>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- &lt;!&ndash; <el-form-item label="发放数量" prop="allNum">&ndash;&gt;-->
<!-- &lt;!&ndash; <el-input-number v-model="teaPlants.allNum" :min="0" placeholder="请输入发放数量"></el-input-number>&ndash;&gt;-->
<!-- &lt;!&ndash; </el-form-item>&ndash;&gt;-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- <el-form-item label="果实数" prop="fruitNum">-->
<!-- <el-input-number v-model="teaPlants.fruitNum" :min="0" placeholder="请输入果实数"></el-input-number>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- <div class="grid-content bg-purple"></div>-->
<!-- </el-col>-->
<!-- </el-row>-->
<!-- <el-row :gutter="20">-->
<!-- <el-col :span="6">-->
<!-- <el-form-item label="养护人" prop="gardener">-->
<!-- <el-input v-model="teaPlants.gardener" placeholder="请输入养护人"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- <el-form-item label="土壤" prop="soil">-->
<!-- <el-input v-model="teaPlants.soil" placeholder="请输入土壤类型"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- <el-form-item label="温度" prop="humidity">-->
<!-- <el-input v-model="teaPlants.humidity" placeholder="请输入温度"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="6">-->
<!-- <div class="grid-content bg-purple"></div>-->
<!-- </el-col>-->
<!-- </el-row>-->
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="小苗阶段图" prop="smallImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi1')">
<div v-if="teaPlants.smallImage" class="pictrue"><img :src="teaPlants.smallImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="成长阶段图" prop="growImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi2')">
<div v-if="teaPlants.growImage" class="pictrue"><img :src="teaPlants.growImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="成熟阶段图" prop="bigImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi3')">
<div v-if="teaPlants.bigImage" class="pictrue"><img :src="teaPlants.bigImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
</el-col>
</el-row>
<!-- <el-form-item label="种植位置" prop="treePlace">-->
<!-- <el-input v-model="teaPlants.treePlace" placeholder="请输入种植位置"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="内容" prop="content">-->
<!-- <Tinymce v-model="teaPlants.content"></Tinymce>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="用户领取最大数" prop="isHot">-->
<!-- <el-input-number v-model="teaPlants.limitNum" placeholder="请输入用户领取最大数" :min="0"-->
<!-- :max="20"></el-input-number>-->
<!-- </el-form-item>-->
<el-form-item label="领取果实数量" prop="isHot">
<el-input-number v-model="teaPlants.fruitNum" placeholder="请输入领取果实数量" :min="0" :max="2000"></el-input-number>
</el-form-item>
<!-- <el-form-item label="热门显示天数" prop="hotDay">-->
<!-- <el-input-number v-model="teaPlants.hotDay" :min="0" :max="365"-->
<!-- placeholder="请输入热门显示天数"></el-input-number>-->
<!-- </el-form-item>-->
<el-form-item>
<el-button v-hasPermi="['admin:game:update']" type="primary" @click="submitForm">提交</el-button>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script>
import Tinymce from '@/components/Tinymce/index'
import {bargainDeleteApi, marketingGameInfoListApi, marketingGameListApi} from "@/api/marketing";
import {gamesUpdateApi} from "@/api/games";
export default {
components: {Tinymce},
// everySunlightStair
data() {
return {
min: {begin: 0, end: 40, sunlight: 2},
center: {begin: 41, end: 69, sunlight: 4},
max: {begin: 70, end: 9999, sunlight: 5},
visible: false,
gameFrom: {},
specsData: {},
teaPlants: {},
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() {
this.getDataList()
},
methods: {
minInput(value) {
//
if (value >= this.max.begin) {
this.$message.error('阳光最小值不能大于或等于最大值!');
this.min.end = this.specsData.rule.everySunlightStair[0].end
return
}
//+1
this.center.begin = this.min.end + 1
},
maxInput(value) {
//
if (value <= this.min.end) {
this.max.begin = this.specsData.rule.everySunlightStair[3].begin
this.$message.error('阳光最大值不能小于或等于最小值!');
return
}
//+1
this.center.end = this.max.begin - 1
},
submitForm() {
this.$refs.formRef.validate((valid) => {
if (valid) {
if (this.teaPlants.id === undefined) {
this.specsData.items.push(this.teaPlants)
} else {
this.gameFrom[this.teaPlants.index] = this.teaPlants
delete this.teaPlants.index
}
this.visible = false
}
});
},
//
update(index, row) {
this.teaPlants = row
this.teaPlants.index = index
this.visible = true
},
//
add() {
this.$modal.confirm('确定添加吗?添加不能移除,请谨慎!').then(function () {
bargainDeleteApi({id: id}).then(() => {
this.teaPlants = {
title: '',
productName: '',
productImage: '',
productPrice: 0.00,
allNum: 0,
fruitNum: 0,
treePlace: '',
gardener: '',
soil: '',
humidity: '',
content: '',
smallImage: '',
growImage: '',
bigImage: '',
hotImage: '',
hotDay: 0,
limitNum: 1,
}
this.visible = true
})
}).catch(() => {
});
},
//
submit() {
//
let everySunlightStair = []
everySunlightStair.push(this.min)
everySunlightStair.push(this.center)
everySunlightStair.push(this.max)
this.specsData.rule.everySunlightStair = JSON.stringify(everySunlightStair)
//itemsrulestr
this.gameFrom.items = JSON.stringify(this.specsData.items)
this.gameFrom.rule = JSON.stringify(this.specsData.rule)
this.gameFrom.cid = this.specsData.cid
this.gameFrom.id = this.specsData.id
//todo
this.gameFrom.image = this.specsData.image
this.gameFrom.name = "茶株游戏"
gamesUpdateApi(this.gameFrom).then(() => {
this.$message.success('操作成功');
})
},
modalPicTap(tit, num) {
const _this = this;
this.$modalUpload(function (img) {
console.log(img)
if (tit === '1') {
switch (num) {
case 'pi1':
_this.teaPlants.smallImage = img[0].sattDir;
break;
case 'pi2':
_this.teaPlants.growImage = img[0].sattDir;
break;
case 'pi3':
_this.teaPlants.bigImage = img[0].sattDir;
break;
case 'pi4':
_this.teaPlants.hotImage = img[0].sattDir;
break;
case 'pi6':
_this.specsData.image = img[0].sattDir;
break;
case 'pi5':
_this.teaPlants.productImage = img[0].sattDir;
break;
}
}
}, tit, 'content');
},
//
getDataList() {
marketingGameListApi({cid: 748}).then(res => {
this.getInfo(res.list[0].id)
})
},
getInfo(id) {
marketingGameInfoListApi({id: id}).then(res => {
this.specsData = res
//
this.specsData.rule.everySunlightStair = JSON.parse(this.specsData.rule.everySunlightStair)
this.min.begin = this.specsData.rule.everySunlightStair[0].begin
this.min.end = this.specsData.rule.everySunlightStair[0].end
this.min.sunlight = this.specsData.rule.everySunlightStair[0].sunlight
this.center.begin = this.specsData.rule.everySunlightStair[1].begin
this.center.end = this.specsData.rule.everySunlightStair[1].end
this.center.sunlight = this.specsData.rule.everySunlightStair[1].sunlight
this.max.begin = this.specsData.rule.everySunlightStair[2].begin
this.max.end = this.specsData.rule.everySunlightStair[2].end
this.max.sunlight = this.specsData.rule.everySunlightStair[2].sunlight
if (this.specsData.rule.everySunlightStair === null) {
this.specsData.rule.everySunlightStair = []
}
})
},
}
}
</script>
<style scoped>
.input-row {
display: flex; /* 使用 Flex 布局 */
align-items: center; /* 垂直居中 */
gap: 5px; /* 控制子元素之间的间距 */
}
.input-item {
flex: 1; /* 控制输入框的宽度,如果需要调整大小比例可以设置 flex 属性 */
}
</style>

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,288 @@
<template>
<div class="divBox">
<el-form :inline="true" :model="tableFrom" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input @input="getDataList()" 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:teaPlant:save']" type="primary" @click="addOrUpdateHandle()">新增数据</el-button>
</el-form-item>
</el-form>
<el-table
:data="dataList"
v-loading="dataListLoading"
@selection-change="selectionChangeHandle"
style="width: 100%;">
<el-table-column
prop="id"
header-align="center"
align="center"
label="编号">
</el-table-column>
<el-table-column
prop="productName"
header-align="center"
align="center"
label="标题">
</el-table-column>
<el-table-column
prop="title"
header-align="center"
align="center"
label="副标题">
</el-table-column>
<el-table-column
prop="productImage"
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.productImage"
:preview-src-list="[scope.row.productImage]"
/>
</div>
</template>
</el-table-column>
<el-table-column
prop="productPrice"
header-align="center"
align="center"
label="领养价格">
</el-table-column>
<el-table-column
prop="allNum"
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
prop="smallImage"
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.smallImage"
:preview-src-list="[scope.row.smallImage]"
/>
</div>
</template>
</el-table-column>
<el-table-column
prop="growImage"
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.growImage"
:preview-src-list="[scope.row.growImage]"
/>
</div>
</template>
</el-table-column>
<el-table-column
prop="bigImage"
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.bigImage"
:preview-src-list="[scope.row.bigImage]"
/>
</div>
</template>
</el-table-column>
<!-- <el-table-column-->
<!-- prop="hotImage"-->
<!-- header-align="center"-->
<!-- align="center"-->
<!-- label="热门新品图">-->
<!-- </el-table-column>-->
<!-- <el-table-column-->
<!-- prop="hotDay"-->
<!-- header-align="center"-->
<!-- align="center"-->
<!-- label="热门新品图显示几天">-->
<!-- </el-table-column>-->
<!-- <el-table-column-->
<!-- prop="beginTime"-->
<!-- header-align="center"-->
<!-- align="center"-->
<!-- label="认领开始时间">-->
<!-- </el-table-column>-->
<!-- <el-table-column-->
<!-- prop="endTime"-->
<!-- 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
prop="status"
header-align="center"
align="center"
label="状态">
<template slot-scope="scope">
<span v-if="scope.row.limitNum == 0" style="color: #cb0b11"> 已下架</span>
<span v-else style="color: green">上架中</span>
</template>
</el-table-column>
<el-table-column
prop="outNum"
header-align="center"
align="center"
label="已认领">
</el-table-column>
<el-table-column
prop="limitNum"
header-align="center"
align="center"
label="用户种植次数">
<template slot-scope="scope">
<span v-if="scope.row.limitNum == -1" style="color: #913591"> 无限</span>
<span v-else>{{ scope.row.limitNum }}</span>
</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 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="pageIndex"
:page-sizes="[10, 20, 50, 100]"
:page-size="pageSize"
: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 AddOrUpdate from '@/views/marketing/tree/item/plant-add-and-update'
import * as api from '@/api/plant'
import {plantDeleteApi, plantListApi} from "@/api/plant";
export default {
data() {
return {
tableFrom: {
page: 1,
limit: 20,
name: '',
keywords: '',
cid: "",
},
dataList: [],
pageIndex: 1,
pageSize: 10,
totalPage: 0,
dataListLoading: false,
dataListSelections: [],
addOrUpdateVisible: false
}
},
components: {
AddOrUpdate
},
created() {
this.getDataList()
},
methods: {
//
getDataList() {
this.dataListLoading = true
plantListApi(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
})
},
//
sizeChangeHandle(val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle(val) {
this.pageIndex = val
this.getDataList()
},
//
selectionChangeHandle(val) {
this.dataListSelections = val
},
// /
addOrUpdateHandle(id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
})
},
// //
deleteHandle(id) {
this.$confirm(`您确定对[id=id] 删除操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
plantDeleteApi({id: id}).then(res => {
// TODO
this.getDataList()
this.$message.success('删除成功!')
})
})
}
}
}
</script>

View File

@ -0,0 +1,290 @@
<template>
<!-- 基于 Element UI 新增和修改弹窗 -->
<el-dialog
:title="!dataForm.id ? '添加' : '修改'"
:close-on-click-modal="false"
width="60%"
:visible.sync="visible">
<!-- 新增和创建表单表单 -->
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="120px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="茶株标题" prop="productName">
<el-input v-model="dataForm.productName" placeholder="茶树名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="茶株副标题" prop="title">
<el-input v-model="dataForm.title" placeholder="茶树标题"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="茶树图" prop="productImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi5')">
<div v-if="dataForm.productImage" class="pictrue">
<img :src="dataForm.productImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="小苗阶段图" prop="smallImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi1')">
<div v-if="dataForm.smallImage" class="pictrue"><img :src="dataForm.smallImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="成长阶段图" prop="growImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi2')">
<div v-if="dataForm.growImage" class="pictrue"><img :src="dataForm.growImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="成熟阶段图" prop="bigImage">
<div class="upLoadPicBox" @click="modalPicTap('1','pi3')">
<div v-if="dataForm.bigImage" class="pictrue"><img :src="dataForm.bigImage"></div>
<div v-else class="upLoad">
<i class="el-icon-camera cameraIconfont"/>
</div>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="养护人" prop="gardener">
<el-input v-model="dataForm.gardener" placeholder="请输入养护人"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="土壤" prop="soil">
<el-input v-model="dataForm.soil" placeholder="请输入土壤类型"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="温度" prop="humidity">
<el-input v-model="dataForm.humidity" placeholder="请输入温度"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="种植地点" prop="treePlace">
<el-input v-model="dataForm.treePlace" placeholder="种植地点"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="内容" prop="content">
<Tinymce v-model="dataForm.content"></Tinymce>
</el-form-item>
<el-form-item label="认领价格" prop="productPrice">
<el-input-number v-model="dataForm.productPrice" :min="0.01" :max="500000.00"
placeholder="请输入茶株价格"></el-input-number>
</el-form-item>
<el-form-item label="发放数量" prop="allNum">
<el-input-number v-model="dataForm.allNum" :min="1" :max="50000" placeholder="请输入发放数量"></el-input-number>
</el-form-item>
<el-form-item label="热门显示天数" prop="hotDay">
<el-input-number v-model="dataForm.hotDay" :min="0" :max="500" placeholder="热门显示天数"></el-input-number>
</el-form-item>
<!-- <el-form-item label="认领开始时间" prop="beginTime">-->
<!-- <el-input v-model="dataForm.beginTime" placeholder="认领开始时间"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="认领结束时间" prop="endTime">-->
<!-- <el-input v-model="dataForm.endTime" placeholder="认领结束时间"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="用户种植次数" prop="limitNum">
<el-input-number v-model="dataForm.limitNum" :min="1" :max="500"
placeholder="请输入用户种植次数"></el-input-number>
</el-form-item>
<el-form-item label="热门新品图" prop="hotImage">
<el-switch v-model="dataForm.hotImage" :active-value="1" :inactive-value="0"></el-switch>
</el-form-item>
<el-form-item label="认领状态" prop="status">
<el-switch v-model="dataForm.status" :active-value="1" :inactive-value="0"></el-switch>
</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 Tinymce from '@/components/Tinymce/index'
import * as api from '@/api/plant'
import {plantCreateApi, plantDetailApi, plantUpdateApi} from "@/api/plant";
export default {
components: {Tinymce},
data() {
return {
visible: false,
dataForm: {
id: 0,
title: '',
productImage: '',
productName: '',
productPrice: '',
allNum: '',
outNum: '',
treePlace: '',
gardener: '',
soil: '',
humidity: '',
content: '',
smallImage: '',
growImage: '',
bigImage: '',
hotImage: 0,
hotDay: '',
beginTime: '',
endTime: '',
createTime: '',
updateTime: '',
status: 1,
limitNum: ''
},
dataRule: {
title: [
{required: true, message: '茶树标题 为必填项', trigger: 'blur'}
],
productImage: [
{required: true, message: '茶树图 为必填项', trigger: 'blur'}
],
productName: [
{required: true, message: '茶树名称 为必填项', trigger: 'blur'}
],
productPrice: [
{required: true, message: '茶树价值 为必填项', trigger: 'blur'}
],
allNum: [
{required: true, message: '总共数量 为必填项', trigger: 'blur'}
],
outNum: [
{required: true, 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'}
],
}
}
},
methods: {
modalPicTap(tit, num) {
const _this = this;
this.$modalUpload(function (img) {
if (tit === '1') {
switch (num) {
case 'pi1':
_this.dataForm.smallImage = img[0].sattDir;
break;
case 'pi2':
_this.dataForm.growImage = img[0].sattDir;
break;
case 'pi3':
_this.dataForm.bigImage = img[0].sattDir;
break;
case 'pi4':
_this.dataForm.hotImage = img[0].sattDir;
break;
case 'pi6':
_this.dataForm.image = img[0].sattDir;
break;
case 'pi5':
_this.dataForm.productImage = img[0].sattDir;
break;
}
}
}, tit, 'content');
},
init(id) { //
this.dataForm.id = id || 0
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
plantDetailApi({id:id}).then(res => {
this.dataForm = res;
})
}
})
},
//
dataSubmit() {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
if (!this.dataForm.id){
plantCreateApi(this.dataForm).then(res => {
this.$message.success('添加成功')
});
}else {
plantUpdateApi(this.dataForm).then(res => {
this.$message.success('更新成功')
});
}
this.$router.go(0);
}
})
}
}
}
</script>

View File

@ -0,0 +1,225 @@
<template>
<div class="divBox">
<el-form :model="tableFrom" @keyup.enter.native="getDataList()">
<el-form-item label="茶树名称:">
<el-input @input="getDataList()" style="width: 275px" v-model="tableFrom.productName" placeholder="茶树名称" clearable></el-input>
</el-form-item>
<el-form-item label="认领状态:">
<el-radio-group v-model="tableFrom.itemStatus" size="medium" @input="getDataList()">
<el-radio-button label="">全部</el-radio-button>
<el-radio-button label=0>待确认</el-radio-button>
<el-radio-button label="1">成长中</el-radio-button>
<el-radio-button label="2">已成熟</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">查询</el-button>
<!-- <el-button v-hasPermi="['autogencode:ebteaplantorderitem:save']" type="primary" @click="addOrUpdateHandle()">新增数据</el-button>-->
<!-- <el-button v-hasPermi="['autogencode:ebteaplantorderitem:delete']" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>-->
</el-form-item>
</el-form>
<el-table
:data="dataList"
v-loading="dataListLoading"
@selection-change="selectionChangeHandle"
style="width: 100%;">
<el-table-column
prop="code"
header-align="center"
align="center"
label="认领凭证">
</el-table-column>
<el-table-column
prop="account"
header-align="center"
align="center"
label="手机号">
</el-table-column>
<el-table-column
prop="productImage"
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.productImage"
:preview-src-list="[scope.row.productImage]"
/>
</div>
</template>
</el-table-column>
<el-table-column
prop="productName"
header-align="center"
align="center"
label="商品名称">
</el-table-column>
<el-table-column
prop="account"
header-align="center"
align="center"
label="商品名称">
</el-table-column>
<el-table-column
prop="productPrice"
header-align="center"
align="center"
label="支付价格">
</el-table-column>
<el-table-column
prop="payTime"
header-align="center"
align="center"
label="支付时间">
</el-table-column>
<el-table-column
prop="beginTime"
header-align="center"
align="center"
label="开始时间">
</el-table-column>
<el-table-column
prop="endTime"
header-align="center"
align="center"
label="结束时间">
</el-table-column>
<el-table-column
prop="status"
header-align="center"
align="center"
label="认领状态">
<template slot-scope="scope">
<span v-if="scope.row.status == 0" style="color: red"> 待确认</span>
<span v-if="scope.row.status == 1" style="color: blue"> 成长中</span>
<span v-else style="color: green"> 已成熟</span>
</template>
</el-table-column>
<el-table-column
prop="createTime"
header-align="center"
align="center"
width="180"
label="创建时间">
</el-table-column>
<el-table-column
header-align="center"
align="center"
label="支付状态">
<template slot-scope="scope">
<span v-if="scope.row.payStatus == 0" style="color: red"> 待支付</span>
<span v-if="scope.row.payStatus == 1" > 已支付</span>
<span v-else style="color: #be64a1"> 未知状态</span>
</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 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="pageIndex"
:page-sizes="[10, 20, 50, 100]"
:page-size="pageSize"
: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 AddOrUpdate from '@/views/marketing/tree/order/orde-add-and-update'
import * as api from '@/api/plantorder'
import {plantOrderListApi} from "@/api/plantorder";
export default {
data () {
return {
tableFrom: {
page: 1,
limit: 20,
code: '',
itemStatus: 0,
},
dataList: [],
pageIndex: 1,
pageSize: 10,
totalPage: 0,
dataListLoading: false,
dataListSelections: [],
addOrUpdateVisible: false
}
},
components: {
AddOrUpdate
},
created () {
this.getDataList()
},
methods: {
//
getDataList () {
this.dataListLoading = true
plantOrderListApi(this.tableFrom).then(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.pageSize = val
this.pageIndex = 1
this.getDataList()
},
//
currentChangeHandle (val) {
this.pageIndex = val
this.getDataList()
},
//
selectionChangeHandle (val) {
this.dataListSelections = val
},
// /
addOrUpdateHandle (id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
})
},
//
deleteHandle (id) {
// var ids = id ? [id] : this.dataListSelections.map(item => {
// return item.id
// })
// this.$confirm(`[id=${ids.join(',')}][${id ? '' : ''}]?`, '', {
// confirmButtonText: '',
// cancelButtonText: '',
// type: 'warning'
// }).then(() => {
// api.ebteaplantorderitemDeleteApi(id).then(res => {
// // TODO
// })
// })
// })
}
}
}
</script>

View File

@ -0,0 +1,111 @@
<template>
<!-- 基于 Element UI 新增和修改弹窗 -->
<el-dialog
:title="!dataForm.id ? '添加-ADD' : '修改-EDITE'"
:close-on-click-modal="false"
:visible.sync="visible">
<!-- 新增和创建表单表单 -->
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataSubmit()" label-width="80px">
<el-form-item label="订单编号" prop="plantOrderId">
<el-input v-model="dataForm.plantOrderId" placeholder="订单编号"></el-input>
</el-form-item>
<el-form-item label="茶树唯一凭证" prop="code">
<el-input v-model="dataForm.code" placeholder="茶树唯一凭证"></el-input>
</el-form-item>
<el-form-item label="树成熟开始时间" prop="beginTime">
<el-input v-model="dataForm.beginTime" placeholder="树成熟开始时间"></el-input>
</el-form-item>
<el-form-item label="树成熟结束时间" prop="endTime">
<el-input v-model="dataForm.endTime" placeholder="树成熟结束时间"></el-input>
</el-form-item>
<el-form-item label="状态0待确认1成长中2已成熟" prop="status">
<el-input v-model="dataForm.status" placeholder="状态0待确认1成长中2已成熟"></el-input>
</el-form-item>
<el-form-item label="数量" prop="num">
<el-input v-model="dataForm.num" placeholder="数量"></el-input>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-input v-model="dataForm.createTime" placeholder="创建时间"></el-input>
</el-form-item>
<el-form-item label="更新时间" prop="updateTime">
<el-input v-model="dataForm.updateTime" placeholder="更新时间"></el-input>
</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/plantorder'
export default {
data () {
return {
visible: false,
dataForm: {
id: 0,
plantOrderId: '' ,
code: '' ,
beginTime: '' ,
endTime: '' ,
status: '' ,
num: '' ,
createTime: '' ,
updateTime: ''
},
dataRule: {
plantOrderId: [
{ required: true, message: '订单编号 为必填项', trigger: 'blur' }
],
code: [
{ required: true, message: '茶树唯一凭证 为必填项', trigger: 'blur' }
],
beginTime: [
{ required: true, message: '树成熟开始时间 为必填项', trigger: 'blur' }
],
endTime: [
{ required: true, message: '树成熟结束时间 为必填项', trigger: 'blur' }
],
status: [
{ required: true, message: '状态0待确认1成长中2已成熟 为必填项', trigger: 'blur' }
],
num: [
{ required: true, message: '数量 为必填项', trigger: 'blur' }
],
createTime: [
{ required: true, message: '创建时间 为必填项', trigger: 'blur' }
],
updateTime: [
{ required: true, message: '更新时间 为必填项', trigger: 'blur' }
]
}
}
},
methods: {
init (id) { //
this.dataForm.id = id || 0
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
if (this.dataForm.id) {
api.ebteaplantorderitemDetailApi(id).then(res => {
this.dataForm = res;
})
}
})
},
//
dataSubmit () {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
api.EbTeaPlantOrderItemCreateApi().then(res =>{
// TODO
});
}
})
}
}
}
</script>