Commit 69cc9de3 authored by denghr's avatar denghr

后台页面

parent 9ab92a54
import fetch from 'utils/fetch';
/**
* 获取活动列表
* @param query
*/
export function activityList(query) {
return fetch({
url: '/api/activity/management/activity/findAll',
method: 'get',
params: query
});
}
\ No newline at end of file
import fetch from 'utils/fetch';
/**
* 获取列表
* @param query
*/
export function getModalList(query) {
return fetch({
url: '/api/activity/activityPopupManage/manage/findAllByQuery',
method: 'POST',
data:query
});
}
...@@ -6,8 +6,77 @@ import fetch from 'utils/fetch'; ...@@ -6,8 +6,77 @@ import fetch from 'utils/fetch';
*/ */
export function cunponManagementList(query) { export function cunponManagementList(query) {
return fetch({ return fetch({
url: '', url: '/api/activity/admin/coupon/page',
method: 'get', method: 'Get',
params: query params: query
}); });
} }
\ No newline at end of file
/**
* 优惠券管理列表删除
* @param query
*/
export function delObj(id) {
return fetch({
url: '/api/activity/admin/coupon/' + id,
method: 'delete'
})
}
/**
* 获取优惠券管理列表某一条数据
* @param query
*/
export function getObj(id) {
return fetch({
url: '/api/activity/admin/coupon/' + id,
method: 'Get'
})
}
/**
* 获取优惠券管理列表--添加编辑
* @param query
*/
export function addObj(obj) {
return fetch({
url: '/api/activity/admin/coupon',
method: 'post',
data: obj
});
}
/**
* 获取优惠券列表--优惠券标题列表
* @param query
*/
export function getTitle() {
return fetch({
url: '/api/activity/admin/coupon/titles',
method: 'Get',
});
}
/**
* 获取优惠券列表--优惠券列表
* @param query
*/
export function getCouponList(query) {
return fetch({
url: '/api/activity/admin/user_coupon/page',
method: 'Get',
params: query
});
}
/**
* 获取优惠券列表--发券
* @param query
*/
export function giveObj(obj) {
return fetch({
url: '/api/activity/admin/user_coupon/sendcoupon',
method: 'POST',
data: obj
});
}
\ No newline at end of file
...@@ -464,6 +464,18 @@ export const asyncRouterMap = [{ ...@@ -464,6 +464,18 @@ export const asyncRouterMap = [{
component: _import('appManagement/appVersion/index'), component: _import('appManagement/appVersion/index'),
name: 'app版本管理', name: 'app版本管理',
authority: 'appVersion' authority: 'appVersion'
},
{
path: 'modalManagement',
component: _import('appManagement/modalManagement/index'),
name: '首页弹窗管理',
authority: 'modalManagement'
},
{
path: 'selectedActivities',
component: _import('appManagement/selectedActivities/index'),
name: '首页精选活动',
authority: 'selectedActivities'
} }
] ]
}, },
...@@ -487,5 +499,20 @@ export const asyncRouterMap = [{ ...@@ -487,5 +499,20 @@ export const asyncRouterMap = [{
authority: 'conponList' authority: 'conponList'
} }
] ]
},
{
path: '/activityManagement',
component: Layout,
name: '活动管理',
icon: 'setting',
authority: 'activityManagement',
children: [
{
path: 'activityList',
component: _import('activityManagement/activityList'),
name: '活动列表',
authority: 'activityList'
}
]
} }
]; ];
...@@ -74,3 +74,11 @@ export function getCurrentMonth() { ...@@ -74,3 +74,11 @@ export function getCurrentMonth() {
const today = new Date(); const today = new Date();
return formatDate(today, 'MM'); return formatDate(today, 'MM');
} }
/**
* 返回yyyy-MM-dd
* */
export function getYMD(timestamp) {
let date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
return formatDate(date, 'yyyy-MM-dd');
}
<template>
<div class="app-container calendar-list-container" v-loading.body="showLoadingBody">
<div>
<el-table :key='tableKey' :data="list" border fit highlight-current-row
style="width: 100%;">
<el-table-column type="index" align="center" label="活动ID" width="200">
<template scope="scope">
<span>{{scope.row.id}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="活动名称">
<template scope="scope">
<span>{{scope.row.name}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="活动时间">
<template scope="scope">
<div v-if="scope.row.title">永久</div>
<div v-else><span>{{scope.row.startTimeStr}}</span> ~ <span>{{scope.row.endTimeStr}}</span></div>
</template>
</el-table-column>
<el-table-column align="center" label="人数限制">
<template scope="scope">
<span>{{scope.row.numLimit}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="已参加人数">
<template scope="scope">
<span>{{scope.row.hasJoinNum}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="状态">
<template scope="scope">
<span v-if="scope.row.status==1">上架</span>
<span v-if="scope.row.status==2">下架</span>
</template>
</el-table-column>
<el-table-column align="center" label="操作">
<template scope="scope">
<el-button size="small" type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
<el-button size="small" type="success" @click="handleActivityData(scope.row)" style="margin-left:0px">活动数据</el-button>
</template>
</el-table-column>
</el-table>
<div v-show="!listLoading" class="pagination-container">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="listQuery.page" :page-sizes="[10,20,30,40,50]" :page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
</div>
<el-dialog title="编辑" :visible.sync="newPeopelVisible">
<el-form :model="formdata" :rules="rules" ref="form" >
<div style="font-weight: bold;">基础设置</div>
<el-row>
<el-col :span="5">
<el-form-item label="活动状态" label-width="70px">
<el-radio-group v-model="formdata.status_name" size="medium">
<el-radio-button label="上架"></el-radio-button>
<el-radio-button label="下架"></el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="参与人数" label-width="70px">
<el-input v-model="formdata.numLimit" placeholder="请输入参与人数"></el-input>
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item label="活动开始/结束时间" label-width="130px" style="padding-left:8px">
<el-date-picker v-model="formdata.starTimeStr" type = "datetime" placeholder = "开始时间" value-format=" yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm" :picker-options="pickerOptionsStart"></el-date-picker>
<span> - </span>
<el-date-picker v-model="formdata.endTimeStr" type = "datetime" placeholder = "结束时间" value-format=" yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm" :picker-options="pickerOptionsEnd"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="add('form')">确认添加</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
formatDate
} from 'utils/dateFormattor';
import {
toEast8Date,
deepCopyDate,
newEast8Date,
convertDate2Str,
timestamp2Date
} from 'utils/dateUtils';
import rsCode from '../../utils/rsCode';
import {mapGetters} from 'vuex';
import {
getToken
} from 'utils/auth';
import {
activityList
} from 'api/activityManagement';
import Element1 from "../admin/menu/components/element";
import ElRow from "element-ui/packages/row/src/row";
import ElCol from "element-ui/packages/col/src/col";
export default {
name: 'conponList',
components: {
ElCol,
ElRow,
Element1,
},
data() {
return {
rules:{
phone: {
type: 'string',
required: true,
message: '请输入手机号',
trigger: 'blur'
},
num: {
type: 'string',
required: true,
message: '请输入添加张数',
trigger: 'blur'
}
},
newPeopelVisible:false,
BASE_API: process.env.BASE_API,
showLoadingBody: false,
list: null,
total: null,
listLoading: true,
listQuery: {
page: 1,
limit: 20,
},
inline: true,
tableKey: 0,
formdata:{
phone:'',
num:'',
type:''
},
pickerOptionsStart: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;
}
},
pickerOptionsEnd: {
disabledDate: time => {
const beginDateVal = new Date(this.formdata.starTimeStr).getTime()
if (beginDateVal) {
return time.getTime() < beginDateVal - 0
}
}
},
}
},
created() {
this.getList();
},
computed: {
...mapGetters([
'elements'
])
},
methods: {
/**
* 获取活动列表
* */
getList() {
this.listLoading = true;
activityList(this.listQuery).then(response => {
let totalCountRs = undefined;
let listRs = undefined;
// if (!this.$utils.isEmpty(response.data) && this.$utils.isInteger(response.data.totalCount)) {
if (!this.$utils.isEmpty(response.data)) {
listRs = response.data;
listRs.map(function(item){
item.startTimeeStr = timestamp2Date(item.startTime);
item.endTimeStr = timestamp2Date(item.endTime);
item.visible1 = false;
item.visible2 = false;
});
}
this.listLoading = false;
this.list = listRs;
this.total = totalCountRs;
})
},
handleSizeChange(val) {
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
},
giveCunpon(){
this.giveDialogVisible =true;
},
handleUpdate(item){
var that = this;
that.formdata = item;
that.newPeopelVisible = true;
}
}
}
</script>
<template>
<div class="app-container calendar-list-container" v-loading.body="showLoadingBody">
<div class="filter-container" ref="filter-container">
<el-form ref="queryForm" :inline="inline" :model="listQuery" label-width="60px">
<el-row>
<el-col :span="4">
<el-form-item label="描述">
<el-input v-model.number="listQuery.popupName" placeholder="请输入描述"></el-input>
</el-form-item>
</el-col>
<el-button class="filter-item" type="primary" v-waves icon="search" @click="handleFilter">搜索</el-button>
<el-button class="filter-item" type="primary" style="float: right;" @click="handleCreate">+ 添加弹窗</el-button>
</el-row>
</el-form>
</div>
<el-table :key='tableKey' :data="list" border fit highlight-current-row
style="width: 100%">
<el-table-column
type="index"
align="center" label="序号" width="98">
</el-table-column>
<el-table-column width="200" align="center" label="描述">
<template scope="scope">
<span>{{scope.row.descr}}</span>
</template>
</el-table-column>
<el-table-column width="150" align="center" label="显示条件">
<template scope="scope">
<span>{{scope.row.type==1?"通用":scope.row.type==2?"已登录":scope.row.type==3?"未登录":''}}</span>
</template>
</el-table-column>
<el-table-column width="300" align="center" label="跳转链接">
<template scope="scope">
<span>{{scope.row.url}}</span>
</template>
</el-table-column>
<el-table-column width="300" align="center" label="弹窗图片">
<template scope="scope">
<img :src="scope.row.background" style="width:100%;max-height:50px;">
</template>
</el-table-column>
<el-table-column width="300" align="center" label="创建时间">
<template scope="scope">
<span>{{scope.row.crtTimeStr}}</span>
</template>
</el-table-column>
<el-table-column width="300" align="center" label="状态">
<template scope="scope">
<span v-if="scope.row.status==1">上架</span>
<span v-if="scope.row.status==2">下架</span>
</template>
</el-table-column>
<el-table-column align="center" width="200" label="操作">
<template scope="scope">
<el-button size="small" type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
<el-button size="small" type="success" @click="handleUpdate(scope.row)" style="margin-left:0px">下架</el-button>
<el-popover
ref="popover5"
placement="top"
width="160"
v-model="scope.row.visible2">
<p>确定删除吗?</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="scope.row.visible2 = false">取消</el-button>
<el-button type="primary" size="mini" @click="deleteHandler(scope.row)">确定</el-button>
</div>
</el-popover>
<el-button type="danger" size="small" v-popover:popover5>删除</el-button>
</template>
</el-table-column>
</el-table>
<div v-show="!listLoading" class="pagination-container">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="listQuery.page" :page-sizes="[10,20,30,40,50]" :page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
<!-- banner modal弹窗 -->
<el-dialog :title="modalTitle" :visible.sync="bannerDialogVisible">
<el-form :model="form" :rules="rules" ref="form" label-width="90px">
<el-form-item label="弹窗描述" prop="title">
<el-input v-model="form.title" placeholder="请输入弹窗描述"></el-input>
</el-form-item>
<el-form-item label="有效时间" >
<el-date-picker v-model="form.starTimeStr" type = "datetime" placeholder = "开始有效时间" value-format=" yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm" :picker-options="pickerOptionsStart"></el-date-picker>
<span> - </span>
<el-date-picker v-model="form.endTimeStr" type = "datetime" placeholder = "结束有效时间" value-format=" yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm" :picker-options="pickerOptionsEnd"></el-date-picker>
</el-form-item>
<el-form-item label="显示条件" >
<el-radio-group v-model="form.showType" size="medium">
<el-radio-button label="未登录"></el-radio-button>
<el-radio-button label="已登录" ></el-radio-button>
<el-radio-button label="启动时" ></el-radio-button>
</el-radio-group>
</el-form-item>
<!--BASE_API + -->
<el-form-item label="弹窗图片" prop="cover" :style="{display:'block'}">
<el-upload
class="avatar-uploader"
:action="'https://xxtest.upyuns.com/api/universal/file/app/unauth/admin/upload'"
:show-file-list="false"
:headers="getHeaderWithToken"
:on-success="handleAvatarSuccess">
<img v-if="$utils.isString(form.modalImg) && !$utils.isEmpty(form.modalImg)" :src="form.modalImg" style="width:200px;max-height:200px;">
<i v-else class="el-icon-plus avatar-uploader-icon" style="lineHeight:100px;width:100px;height: 100px;"></i>
</el-upload>
</el-form-item>
<el-form-item label="按钮图片" prop="cover" :style="{display:'block'}">
<el-upload
class="avatar-uploader"
:action="'https://xxtest.upyuns.com/api/universal/file/app/unauth/admin/upload'"
:show-file-list="false"
:headers="getHeaderWithToken"
:on-success="handleBtnSuccess">
<img v-if="$utils.isString(form.btnImg) && !$utils.isEmpty(form.btnImg)" :src="form.btnImg" style="width:100px;max-height:30px;">
<i v-else class="el-icon-plus avatar-uploader-icon" style="lineHeight:100px;width:100px;height: 100px;"></i>
</el-upload>
</el-form-item>
<el-form-item label="跳转链接">
<el-input v-model="form.url" placeholder="请输入跳转链接"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelHandel">取 消</el-button>
<el-button v-if="modalTitle=='创建'" type="primary" @click="create('form')">确 定</el-button>
<el-button v-else type="primary" @click="update('form')">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import 'static/css/uploadImg.css';// 引入图片上传组件对话框
import {
formatDate
} from 'utils/dateFormattor';
import {
toEast8Date,
deepCopyDate,
newEast8Date,
convertDate2Str,
timestamp2Date
} from 'utils/dateUtils';
import {
getModalList
} from 'src/api/appManagement/modalManagement';
import rsCode from '../../../utils/rsCode';
import {mapGetters} from 'vuex';
import {
getToken
} from '../../../utils/auth';
import Element1 from "../../admin/menu/components/element";
import ElRow from "element-ui/packages/row/src/row";
import ElCol from "element-ui/packages/col/src/col";
export default {
name: 'modalManagement',
components: {
ElCol,
ElRow,
Element1
},
data() {
return {
tableKey:0,
modalTitle: "创建",
BASE_API: process.env.BASE_API,
bannerDialogVisible: false,//添加、编辑弹框
showLoadingBody: false,
form: {
title: "",
url: "",
modalImg:"",
btnImg:'',
type: "0",
location: "0",
starTimeStr:'',
endTimeStr:'',
showType:'未登录'
},
listQuery: {
page: 1,
limit: 20,
popupName: '',//描述
},
rules: {
title: {
type: 'string',
required: true,
message: '请输入弹窗描述',
trigger: 'blur'
},
type:{
type: 'string',
required: true,
message: '请选择banner类型',
trigger: 'blur'
},
modalImg: {
type: 'string',
required: true,
message: '请上传图片',
},
},
pickerOptionsStart: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;
}
},
pickerOptionsEnd: {
disabledDate: time => {
const beginDateVal = new Date(this.form.starTimeStr).getTime()
if (beginDateVal) {
return time.getTime() < beginDateVal - 0
}
}
},
list: null,
total: null,
listLoading: true,
inline: true,
}
},
created() {
this.getList();
},
computed: {
...mapGetters([
'elements',
'belong2Type'
]),
getHeaderWithToken() {
return {Authorization: getToken()};
},
},
methods: {
handleFilter() {
this.listQuery.page = 1;
this.$refs.queryForm.validate(valid => {
if (valid) {
this.getList();
} else {
return false;
}
});
},
handleSizeChange(val) {
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
},
/**
* 添加
* */
handleCreate() {
this.cleanForm();
this.modalTitle = '创建';
this.bannerDialogVisible = true;
},
/**
* 操作-编辑
* */
handleUpdate(row) {
this.modalTitle = '编辑';
this.cleanForm();
this.form = row;
this.bannerDialogVisible = true;
},
/**
* 弹框-取消
* */
cancelHandel(){
this.cleanForm();
this.bannerDialogVisible = false;
},
/**
* 清空表单
* */
cleanForm() {
this.form = {
title: "",
modalImg:"",
btnImg:'',
url:"",
type: "0",
location: "0",
starTimeStr:'',
endTimeStr:'',
showType:'未登录'
}
},
/**
* 获取banner列表数据
* */
getList() {
this.listLoading = true;
getModalList(this.listQuery).then(response => {
let totalCountRs = undefined;
let listRs = undefined;
if (!this.$utils.isEmpty(response.data.list) && this.$utils.isInteger(response.data.total)) {
listRs = response.data.list;
response.data.list.map(function(item){
item.crtTimeStr = timestamp2Date(item.crtTime);
item.visible2 = false;
});
totalCountRs = response.data.total;
}
this.listLoading = false;
this.list = listRs;
this.total = totalCountRs;
});
},
/**
* 创建
* */
create(formName) {
const set = this.$refs;
set[formName].validate(valid => {
if (valid) {
addBanner(this.form)
.then(response => {
if (response.status === 200) {
this.bannerDialogVisible = false;
this.getList();
this.$notify({
title: '成功',
message: '创建成功',
type: 'success',
duration: 2000
});
this.getList();
} else {
this.$notify({
title: '失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
} else {
return false;
}
});
},
/**
* 编辑-更新
* */
update(formName) {
const set = this.$refs;
set[formName].validate(valid => {
if (valid) {
editBanner(this.form).then(response => {
if (response.status === 200) {
this.bannerDialogVisible = false;
this.getList();
this.$notify({
title: '成功',
message: '编辑成功',
type: 'success',
duration: 2000
});
this.getList();
} else {
this.$notify({
title: '失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
} else {
return false;
}
});
},
/**
* 上传图片
* @param file
* @returns {boolean}
*/
beforeAvatarUpload(file) {
const isJPG = file.type === 'image/jpeg' || file.type === 'image/gif';
const isLt2M = file.size / 1024 / 1024 < 10;
if (!isJPG) {
this.$message.error('上传图片只能是 JPG/GIF 格式!');
}
if (!isLt2M) {
this.$message.error('上传图片大小不能超过 10MB!');
}
this.showLoadingBody = true;
return isJPG && isLt2M;
},
handleAvatarSuccess(res, file) {
this.form.modalImg = res.data;
this.showLoadingBody = false;
},
handleBtnSuccess(res, file) {
this.form.btnImg = res.data;
this.showLoadingBody = false;
},
/**
* 操作-删除
* */
deleteHandler(row) {
delBanner(row.id).then(response => {
if (response.status === 200) {
this.$notify({
title: '成功',
message: '删除成功',
type: 'success',
duration: 2000
});
this.getList();
} else {
this.$notify({
title: '删除失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
},
}
}
</script>
<template>
<div class="app-container calendar-list-container" v-loading.body="showLoadingBody">
<div class="filter-container" ref="filter-container">
<el-form ref="queryForm" :inline="inline" :model="listQuery" label-width="60px">
<el-row>
<el-col :span="4">
<el-form-item label="描述">
<el-input v-model.number="listQuery.title" placeholder="请输入描述"></el-input>
</el-form-item>
</el-col>
<el-button class="filter-item" type="primary" v-waves icon="search" @click="handleFilter">搜索</el-button>
<el-button class="filter-item" type="primary" style="float: right;" @click="handleCreate">+ 添加弹窗</el-button>
</el-row>
</el-form>
</div>
<el-table :key='tableKey' :data="list" border fit highlight-current-row
style="width: 100%">
<el-table-column
type="index"
align="center" label="序号" width="98">
</el-table-column>
<el-table-column width="200" align="center" label="描述">
<template scope="scope">
<span>{{scope.row.title}}</span>
</template>
</el-table-column>
<el-table-column width="300" align="center" label="跳转链接">
<template scope="scope">
<span>{{scope.row.url}}</span>
</template>
</el-table-column>
<el-table-column width="300" align="center" label="banner图片">
<template scope="scope">
<img :src="scope.row.cover" style="width:100%;max-height:100px;">
</template>
</el-table-column>
<el-table-column width="300" align="center" label="排序">
<template scope="scope">
<span>{{scope.row.url}}</span>
</template>
</el-table-column>
<el-table-column width="300" align="center" label="创建时间">
<template scope="scope">
<span>{{scope.row.url}}</span>
</template>
</el-table-column>
<el-table-column width="300" align="center" label="状态">
<template scope="scope">
<span>{{scope.row.url}}</span>
</template>
</el-table-column>
<el-table-column align="center" width="200" label="操作">
<template scope="scope">
<el-button size="small" type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
<el-button size="small" type="success" @click="handleUpdate(scope.row)" style="margin-left:0px">下架</el-button>
<el-popover
ref="popover5"
placement="top"
width="160"
v-model="scope.row.visible2">
<p>确定删除吗?</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="scope.row.visible2 = false">取消</el-button>
<el-button type="primary" size="mini" @click="deleteHandler(scope.row)">确定</el-button>
</div>
</el-popover>
<el-button type="danger" size="small" v-popover:popover5>删除</el-button>
</template>
</el-table-column>
</el-table>
<div v-show="!listLoading" class="pagination-container">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:current-page.sync="listQuery.pageNo" :page-sizes="[10,20,30,40,50]" :page-size="listQuery.pageSize"
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
<!-- banner modal弹窗 -->
<el-dialog :title="modalTitle" :visible.sync="bannerDialogVisible">
<el-form :model="form" :rules="rules" ref="form" label-width="90px">
<el-form-item label="描述" prop="title">
<el-input v-model="form.title" placeholder="请输入描述"></el-input>
</el-form-item>
<el-form-item label="上架时间" >
<el-radio-group v-model="form.up_name" size="medium">
<el-radio-button label="不限"></el-radio-button>
<el-radio-button label="自定义"></el-radio-button>
</el-radio-group>
<div style="display:inline-block" v-show="form.up_name=='自定义'">
<el-date-picker v-model="form.starTimeStr" type = "datetime" placeholder = "开始时间" value-format=" yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm" :picker-options="pickerOptionsStart"></el-date-picker>
<span> - </span>
<el-date-picker v-model="form.endTimeStr" type = "datetime" placeholder = "结束时间" value-format=" yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm" :picker-options="pickerOptionsEnd"></el-date-picker>
</div>
</el-form-item>
<el-form-item label="图片" prop="banner" :style="{display:'block'}">
<el-upload
class="avatar-uploader"
:action="'https://xxtest.upyuns.com/api/universal/file/app/unauth/admin/upload'"
:show-file-list="false"
:headers="getHeaderWithToken"
:on-success="handleAvatarSuccess">
<img v-if="$utils.isString(form.banner) && !$utils.isEmpty(form.banner)" :src="form.banner" style="width:200px;max-height:200px;">
<i v-else class="el-icon-plus avatar-uploader-icon" style="lineHeight:100px;width:100px;height: 100px;"></i>
</el-upload>
</el-form-item>
<el-form-item label="跳转链接">
<el-input v-model="form.url" placeholder="请输入跳转链接"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelHandel">取 消</el-button>
<el-button v-if="modalTitle=='创建'" type="primary" @click="create('form')">确 定</el-button>
<el-button v-else type="primary" @click="update('form')">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import 'static/css/uploadImg.css';// 引入图片上传组件对话框
import {
formatDate
} from 'utils/dateFormattor';
import {
toEast8Date,
deepCopyDate,
newEast8Date,
convertDate2Str
} from 'utils/dateUtils';
import {
getBannerList,
editBanner,
addBanner,
delBanner
} from 'api/tourManage';
import rsCode from '../../../utils/rsCode';
import {mapGetters} from 'vuex';
import {
getToken
} from '../../../utils/auth';
import Element1 from "../../admin/menu/components/element";
import ElRow from "element-ui/packages/row/src/row";
import ElCol from "element-ui/packages/col/src/col";
export default {
name: 'selectedActivities',
components: {
ElCol,
ElRow,
Element1
},
data() {
return {
tableKey:0,
modalTitle: "创建",
BASE_API: process.env.BASE_API,
bannerDialogVisible: false,//添加、编辑弹框
showLoadingBody: false,
form: {
title: "",
up_name:'自定义',
starTimeStr:'',
endTimeStr:'',
banner:'',
url:'',
},
listQuery: {
pageNo: 1,
pageSize: 20,
title: '',//描述
},
rules: {
title: {
type: 'string',
required: true,
message: '请输入描述',
trigger: 'blur'
},
banner: {
type: 'string',
required: true,
message: '请上传图片',
},
},
pickerOptionsStart: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7;
}
},
pickerOptionsEnd: {
disabledDate: time => {
const beginDateVal = new Date(this.form.starTimeStr).getTime()
if (beginDateVal) {
return time.getTime() < beginDateVal - 0
}
}
},
list: null,
total: null,
listLoading: true,
inline: true,
}
},
created() {
this.getList();
},
computed: {
...mapGetters([
'elements',
'belong2Type'
]),
getHeaderWithToken() {
return {Authorization: getToken()};
},
},
methods: {
handleFilter() {
this.listQuery.pageNo = 1;
this.$refs.queryForm.validate(valid => {
if (valid) {
this.getList();
} else {
return false;
}
});
},
handleSizeChange(val) {
this.listQuery.pageSize = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.pageNo = val;
this.getList();
},
/**
* 添加
* */
handleCreate() {
this.cleanForm();
this.modalTitle = '创建';
this.bannerDialogVisible = true;
},
/**
* 操作-编辑
* */
handleUpdate(row) {
this.modalTitle = '编辑';
this.cleanForm();
this.form = row;
this.bannerDialogVisible = true;
},
/**
* 弹框-取消
* */
cancelHandel(){
this.cleanForm();
this.bannerDialogVisible = false;
},
/**
* 清空表单
* */
cleanForm() {
this.form = {
title: "",
up_name:'自定义',
starTimeStr:'',
endTimeStr:'',
banner:'',
url:'',
}
},
/**
* 获取banner列表数据
* */
getList() {
this.listLoading = true;
getBannerList(this.listQuery).then(response => {
let totalCountRs = undefined;
let listRs = undefined;
if (!this.$utils.isEmpty(response.data.data) && this.$utils.isInteger(response.data.totalCount)) {
listRs = response.data.data;
response.data.data.map(function(item){
item.type = item.type+"";
item.location = item.location?item.location+"": "0";
item.visible2 = false;
});
totalCountRs = response.data.totalCount;
}
this.listLoading = false;
this.list = listRs;
this.total = totalCountRs;
});
},
/**
* 创建
* */
create(formName) {
const set = this.$refs;
set[formName].validate(valid => {
if (valid) {
addBanner(this.form)
.then(response => {
if (response.status === 200) {
this.bannerDialogVisible = false;
this.getList();
this.$notify({
title: '成功',
message: '创建成功',
type: 'success',
duration: 2000
});
this.getList();
} else {
this.$notify({
title: '失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
} else {
return false;
}
});
},
/**
* 编辑-更新
* */
update(formName) {
const set = this.$refs;
set[formName].validate(valid => {
if (valid) {
editBanner(this.form).then(response => {
if (response.status === 200) {
this.bannerDialogVisible = false;
this.getList();
this.$notify({
title: '成功',
message: '编辑成功',
type: 'success',
duration: 2000
});
this.getList();
} else {
this.$notify({
title: '失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
} else {
return false;
}
});
},
/**
* 上传图片
* @param file
* @returns {boolean}
*/
beforeAvatarUpload(file) {
const isJPG = file.type === 'image/jpeg' || file.type === 'image/gif';
const isLt2M = file.size / 1024 / 1024 < 10;
if (!isJPG) {
this.$message.error('上传图片只能是 JPG/GIF 格式!');
}
if (!isLt2M) {
this.$message.error('上传图片大小不能超过 10MB!');
}
this.showLoadingBody = true;
return isJPG && isLt2M;
},
handleAvatarSuccess(res, file) {
this.form.banner = res.data;
this.showLoadingBody = false;
},
/**
* 操作-删除
* */
deleteHandler(row) {
delBanner(row.id).then(response => {
if (response.status === 200) {
this.$notify({
title: '成功',
message: '删除成功',
type: 'success',
duration: 2000
});
this.getList();
} else {
this.$notify({
title: '删除失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
},
}
}
</script>
...@@ -6,37 +6,40 @@ ...@@ -6,37 +6,40 @@
<el-row> <el-row>
<el-col :span="4"> <el-col :span="4">
<el-form-item label="手机号"> <el-form-item label="手机号">
<el-input v-model.number="listQuery.phone" placeholder="请输入姓名"></el-input> <el-input v-model.number="listQuery.phone" placeholder="请输入手机号"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="3">
<el-form-item label=""> <el-form-item label="">
<el-select class="filter-item" v-model="listQuery.state" placeholder="请输入状态"> <el-select class="filter-item" v-model="listQuery.couponId" placeholder="请选择优惠券标题">
<el-option v-for="(item,index) in typeOptions" :key="index" :label="item.name" :value="item.val"> </el-option> <el-option key="" label="" value=""> </el-option>
<el-option v-for="(item,index) in titleList" :key="index" :label="item.title" :value="item.id"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<el-form-item label="金额"> <el-form-item label="金额">
<el-input v-model.number="listQuery.phone" placeholder="请输入姓名"></el-input> <el-input v-model.number="listQuery.usedAmount" placeholder="请输入金额"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<el-form-item label=""> <el-form-item label="">
<el-select class="filter-item" v-model="listQuery.state" placeholder="请输入状态"> <el-select class="filter-item" v-model="listQuery.status" placeholder="请输入状态">
<el-option v-for="(item,index) in typeOptions" :key="index" :label="item.name" :value="item.val"> </el-option> <el-option v-for="(item,index) in typeOptions" :key="index" :label="item.name" :value="item.val"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-button class="filter-item" type="primary" v-waves icon="search" @click="handleFilter">搜索</el-button> <el-button class="filter-item" type="primary" v-waves icon="search" @click="handleFilter">搜索</el-button>
<el-button class="filter-item" type="primary" @click="giveCunpon" style="float: right;">+ 发券</el-button>
<!-- <el-button class="filter-item" type="primary" style="float: right;">+ 批量发券</el-button> -->
</el-row> </el-row>
</el-form> </el-form>
</div> </div>
<el-table :key='tableKey' :data="list" border fit highlight-current-row <el-table :key='tableKey' :data="list" border fit highlight-current-row
style="width: 100%;"> style="width: 100%;">
<el-table-column type="index" align="center" label="姓名" width="200"> <el-table-column type="index" align="center" label="ID" width="200">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.username}}</span> <span>{{scope.row.id}}</span>
</template> </template>
</el-table-column> </el-table-column>
...@@ -46,26 +49,31 @@ ...@@ -46,26 +49,31 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="金额"> <el-table-column align="center" label="优惠券标题">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.amount}}</span> <span>{{scope.row.title}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="状态"> <el-table-column align="center" label="金额">
<template scope="scope"> <template scope="scope">
<span v-if="scope.row.stauts==0">未到帐</span> <span>{{scope.row.usedAmount}}</span>
<span v-if="scope.row.stauts==1">已到账</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="申请时间"> <el-table-column align="center" label="领取时间">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.crtTimeStr}}</span> <span>{{scope.row.crtTimeStr}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="到账时间"> <el-table-column align="center" label="过期时间">
<template scope="scope">
<span>{{scope.row.expireTimeStr}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="状态">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.finishTimeStr}}</span> <span v-if="scope.row.isUse==1">已使用</span>
<span v-if="scope.row.isUse==0">未使用</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -75,6 +83,37 @@ ...@@ -75,6 +83,37 @@
layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination> layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div> </div>
</div> </div>
<el-dialog title="发券" :visible.sync="giveDialogVisible">
<el-form :model="formdata" :rules="rules" ref="form" label-width="110px">
<el-row>
<el-col :span="12">
<el-form-item label="手机号" prop="phone">
<el-input v-model="formdata.phone" placeholder="请输入手机号"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="选择优惠券" prop="couponId">
<el-select class="filter-item" v-model="formdata.couponId" placeholder="请选择优惠券">
<el-option key="" label="" value=""> </el-option>
<el-option v-for="(item,index) in titleList" :key="index" :label="item.title" :value="item.id"> </el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="添加张数" prop="couponNum">
<el-input v-model="formdata.couponNum" placeholder="请输入添加张数"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="add('form')">确认添加</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
...@@ -98,8 +137,10 @@ ...@@ -98,8 +137,10 @@
getToken getToken
} from 'utils/auth'; } from 'utils/auth';
import { import {
discountList getTitle,
} from 'api/purseManage'; getCouponList,
giveObj
} from 'api/cunponManagements';
import Element1 from "../admin/menu/components/element"; import Element1 from "../admin/menu/components/element";
import ElRow from "element-ui/packages/row/src/row"; import ElRow from "element-ui/packages/row/src/row";
import ElCol from "element-ui/packages/col/src/col"; import ElCol from "element-ui/packages/col/src/col";
...@@ -113,19 +154,38 @@ ...@@ -113,19 +154,38 @@
}, },
data() { data() {
return { return {
titleList:[],
rules:{
phone: [
{
type: 'string',
required: true,
message: '请输入手机号',
trigger: 'blur'
},
{ pattern: /^1[3456789]\d{9}$/, message: '手机号码错误' }
],
couponNum: {
type: 'string',
required: true,
message: '请输入添加张数',
trigger: 'blur'
},
couponId:{
required: true,
message: '请选择优惠券',
}
},
giveDialogVisible:false,
typeOptions: [ typeOptions: [
{ {
"name":'全部', "name":'已使用',
"val":'' "val":'1'
}, },
{ {
"name":'未到账', "name":'未使用',
"val":'0' "val":'0'
}, },
{
"name":'已到账',
"val":'1'
},
], ],
BASE_API: process.env.BASE_API, BASE_API: process.env.BASE_API,
showLoadingBody: false, showLoadingBody: false,
...@@ -135,16 +195,23 @@ ...@@ -135,16 +195,23 @@
listQuery: { listQuery: {
page: 1, page: 1,
limit: 20, limit: 20,
couponId:'',//优惠券id
phone: '',//手机号 phone: '',//手机号
username: '',//姓名 usedAmount: '',//金额
state:'',//状态 status:'0',//状态
}, },
inline: true, inline: true,
tableKey: 0 tableKey: 0,
formdata:{
phone:'',
couponNum:'',
couponId:''
}
} }
}, },
created() { created() {
this.getList(); this.getList();
this.get_title();
}, },
computed: { computed: {
...mapGetters([ ...mapGetters([
...@@ -152,12 +219,17 @@ ...@@ -152,12 +219,17 @@
]) ])
}, },
methods: { methods: {
get_title(){
getTitle().then(response => {
this.titleList = response.data;
})
},
/** /**
* 获取提现列表 * 获取列表
* */ * */
getList() { getList() {
this.listLoading = true; this.listLoading = true;
discountList(this.listQuery).then(response => { getCouponList(this.listQuery).then(response => {
let totalCountRs = undefined; let totalCountRs = undefined;
let listRs = undefined; let listRs = undefined;
if (!this.$utils.isEmpty(response.data.data) && this.$utils.isInteger(response.data.totalCount)) { if (!this.$utils.isEmpty(response.data.data) && this.$utils.isInteger(response.data.totalCount)) {
...@@ -165,7 +237,7 @@ ...@@ -165,7 +237,7 @@
totalCountRs = response.data.totalCount; totalCountRs = response.data.totalCount;
listRs.map(function(item){ listRs.map(function(item){
item.crtTimeStr = timestamp2Date(item.crtTime); item.crtTimeStr = timestamp2Date(item.crtTime);
item.finishTimeStr = timestamp2Date(item.finishTime); item.expireTimeStr = timestamp2Date(item.expireTime);
}); });
} }
this.listLoading = false; this.listLoading = false;
...@@ -191,6 +263,39 @@ ...@@ -191,6 +263,39 @@
handleCurrentChange(val) { handleCurrentChange(val) {
this.listQuery.page = val; this.listQuery.page = val;
this.getList(); this.getList();
},
add(formName) {
var that = this;
const set = this.$refs;
set[formName].validate(valid => {
if (valid) {
giveObj(that.formdata)
.then(response => {
if (response.status === 200) {
this.giveDialogVisible = false;
this.getList();
this.$notify({
title: '成功',
message: '发券成功',
type: 'success',
duration: 2000
});
} else {
this.$notify({
title: '失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
} else {
return false;
}
});
},
giveCunpon(){
this.giveDialogVisible = true;
} }
} }
} }
......
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
</el-col> </el-col>
<el-col :span="5"> <el-col :span="5">
<el-form-item> <el-form-item>
<el-select class="filter-item" v-model="listQuery.state" placeholder="类型"> <el-select class="filter-item" v-model="listQuery.channel" placeholder="类型">
<el-option v-for="(item,index) in channelType" :key="index" :label="item.name" :value="item.val"> </el-option> <el-option v-for="(item,index) in channelType" :key="index" :label="item.val" :value="item.id"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -40,19 +40,24 @@ ...@@ -40,19 +40,24 @@
<span v-if="scope.row.channel==3">营地</span> <span v-if="scope.row.channel==3">营地</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="金额">
<template scope="scope">
<span>{{scope.row.usedAmount}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="已领取"> <el-table-column align="center" label="已领取">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.get}}</span> <span>{{scope.row.takeCount}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="已使用"> <el-table-column align="center" label="已使用">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.used}}</span> <span>{{scope.row.usedCount}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="申请时间"> <el-table-column align="center" label="创建时间">
<template scope="scope"> <template scope="scope">
<span>{{scope.row.time}}</span> <span>{{scope.row.crtTimeStr}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="操作"> <el-table-column align="center" label="操作">
...@@ -103,18 +108,17 @@ ...@@ -103,18 +108,17 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="优惠金额"> <el-form-item label="优惠金额">
<el-input v-model="formdata.used_amount" placeholder="请输入优惠金额" :disabled="isUpdate"></el-input> <el-input v-model="formdata.usedAmount" placeholder="请输入优惠金额" :disabled="isUpdate"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="优惠方式"> <el-form-item label="优惠方式">
<el-select class="filter-item" v-model="formdata.type" placeholder="请选择" style="width:110px" :disabled="isUpdate"> <el-select class="filter-item" v-model="formdata.type" placeholder="请选择" style="width:110px" :disabled="isUpdate">
<el-option :label="formdata.typeName" :value="formdata.type"></el-option>
<el-option v-for="(item,index) in cunponType " :key="index" :label="item.val" <el-option v-for="(item,index) in cunponType " :key="index" :label="item.val"
:value="item.id" :disabled="item.id==2"></el-option> :value="item.id" :disabled="item.id==2"></el-option>
</el-select> </el-select>
<span v-if="formdata.type==1"></span> <span v-if="formdata.type==1"></span>
<el-input v-model="formdata.title" placeholder="请输入金额" style="width:100px" v-if="formdata.type==1" :disabled="isUpdate"></el-input> <el-input v-model="formdata.withAmount" placeholder="请输入金额" style="width:100px" v-if="formdata.type==1" :disabled="isUpdate"></el-input>
<span v-if="formdata.type==1">可用</span> <span v-if="formdata.type==1">可用</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -127,9 +131,9 @@ ...@@ -127,9 +131,9 @@
<el-radio-button label="相对时效" :disabled="formdata.valid_type_name=='绝对时效'&&isUpdate"></el-radio-button> <el-radio-button label="相对时效" :disabled="formdata.valid_type_name=='绝对时效'&&isUpdate"></el-radio-button>
</el-radio-group> </el-radio-group>
<div style="display:inline-block" v-show="formdata.valid_type_name=='绝对时效'"> <div style="display:inline-block" v-show="formdata.valid_type_name=='绝对时效'">
<el-date-picker v-model="formdata.validStartTimeStr" type = "date" placeholder = "开始时间" :disabled="isUpdate"></el-date-picker> <el-date-picker v-model="formdata.validStartTimeStr" type = "date" placeholder = "开始时间" :disabled="isUpdate" :picker-options="pickerOptionsStart"></el-date-picker>
<span> - </span> <span> - </span>
<el-date-picker v-model="formdata.validEndTimeStr" type = "date" placeholder = "结束时间" :disabled="isUpdate"></el-date-picker> <el-date-picker v-model="formdata.validEndTimeStr" type = "date" placeholder = "结束时间" :disabled="isUpdate" :picker-options="pickerOptionsEnd1"></el-date-picker>
</div> </div>
<div style="display:inline-block" v-show="formdata.valid_type_name=='相对时效'"> <div style="display:inline-block" v-show="formdata.valid_type_name=='相对时效'">
<span>领取后</span> <span>领取后</span>
...@@ -176,7 +180,6 @@ ...@@ -176,7 +180,6 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="优惠券类别" > <el-form-item label="优惠券类别" >
<el-select class="filter-item" v-model="formdata.used" placeholder="请选择" :disabled="isUpdate"> <el-select class="filter-item" v-model="formdata.used" placeholder="请选择" :disabled="isUpdate">
<el-option :label="formdata.usedName" :value="formdata.used"></el-option>
<el-option v-for="(item,index) in usedType " :key="index" :label="item.val" <el-option v-for="(item,index) in usedType " :key="index" :label="item.val"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
...@@ -187,7 +190,6 @@ ...@@ -187,7 +190,6 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="适用范围" > <el-form-item label="适用范围" >
<el-select class="filter-item" v-model="formdata.channel" placeholder="请选择" :disabled="isUpdate"> <el-select class="filter-item" v-model="formdata.channel" placeholder="请选择" :disabled="isUpdate">
<el-option :label="formdata.channelName" :value="formdata.channel"></el-option>
<el-option v-for="(item,index) in channelType " :key="index" :label="item.val" <el-option v-for="(item,index) in channelType " :key="index" :label="item.val"
:value="item.id"></el-option> :value="item.id"></el-option>
</el-select> </el-select>
...@@ -230,7 +232,7 @@ ...@@ -230,7 +232,7 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="每人限领次数" > <el-form-item label="每人限领次数" >
<el-input v-model="formdata.limit_collar" placeholder="请输入限领次数"></el-input> <el-input v-model="formdata.limitCollar" placeholder="请输入限领次数"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -256,7 +258,7 @@ ...@@ -256,7 +258,7 @@
newEast8Date, newEast8Date,
convertDate2Str, convertDate2Str,
timestamp2Date, timestamp2Date,
getymdTimeByDay getYMD
} from 'utils/dateUtils'; } from 'utils/dateUtils';
import {mapGetters} from 'vuex'; import {mapGetters} from 'vuex';
...@@ -264,7 +266,10 @@ ...@@ -264,7 +266,10 @@
getToken getToken
} from 'utils/auth'; } from 'utils/auth';
import { import {
cunponManagementList cunponManagementList,
delObj,
getObj,
addObj
} from 'api/cunponManagements'; } from 'api/cunponManagements';
import Element1 from "../admin/menu/components/element"; import Element1 from "../admin/menu/components/element";
import ElRow from "element-ui/packages/row/src/row"; import ElRow from "element-ui/packages/row/src/row";
...@@ -281,57 +286,57 @@ ...@@ -281,57 +286,57 @@
return { return {
cunponType:[ cunponType:[
{ {
id:'1', id:1,
val:'满减卷' val:'满减卷'
},{ },{
id:'2', id:2,
val:'叠加满减卷' val:'叠加满减卷'
},{ },{
id:'3', id:3,
val:'无门槛卷' val:'无门槛卷'
} }
], ],
usedType:[ usedType:[
{ {
id:'10', id:10,
val:'店铺优惠卷' val:'店铺优惠卷'
}, },
{ {
id:'11', id:11,
val:'新人店铺卷' val:'新人店铺卷'
}, },
{ {
id:'20', id:20,
val:'商品优惠券' val:'商品优惠券'
}, },
{ {
id:'30', id:30,
val:'类目优惠券' val:'类目优惠券'
}, },
{ {
id:'60', id:60,
val:'平台优惠券' val:'平台优惠券'
}, },
{ {
id:'61', id:61,
val:'新人平台券' val:'新人平台券'
} }
], ],
channelType:[ channelType:[
{ {
id:'0', id:0,
val:'全平台' val:'全平台'
}, },
{ {
id:'1', id:1,
val:'租车' val:'租车'
}, },
{ {
id:'2', id:2,
val:'旅游' val:'旅游'
}, },
{ {
id:'3', id:3,
val:'营地' val:'营地'
} }
], ],
...@@ -343,8 +348,8 @@ ...@@ -343,8 +348,8 @@
listQuery: { listQuery: {
page: 1, page: 1,
limit: 20, limit: 20,
title: '',//手机号 title: '',//标题
state:undefined,//状态 channel:0,//状态
}, },
inline: true, inline: true,
tableKey: 0, tableKey: 0,
...@@ -360,22 +365,7 @@ ...@@ -360,22 +365,7 @@
trigger: 'blur' trigger: 'blur'
}, },
}, },
list:[ list:[],
{
id:'1',
title:"123",
get:'1',
used:'10',
time:'2018-01-01',
visible2:false,
cover:"",
user_type_name:"普通用户",
type:1,
channel:0,
startTimeStr:'',
endTimeStr:''
}
],
pickerOptionsStart: { pickerOptionsStart: {
disabledDate(time) { disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7; return time.getTime() < Date.now() - 8.64e7;
...@@ -396,7 +386,16 @@ ...@@ -396,7 +386,16 @@
return time.getTime() < beginDateVal - 0 return time.getTime() < beginDateVal - 0
} }
} }
},
pickerOptionsEnd1: {
disabledDate: time => {
const beginDateVal = new Date(this.formdata.validStartTimeStr).getTime()
if (beginDateVal) {
return time.getTime() < beginDateVal - 0
}
}
} }
} }
}, },
created() { created() {
...@@ -415,22 +414,21 @@ ...@@ -415,22 +414,21 @@
* 获取提现列表 * 获取提现列表
* */ * */
getList() { getList() {
// this.listLoading = true; this.listLoading = true;
// cunponManagementList(this.listQuery).then(response => { cunponManagementList(this.listQuery).then(response => {
// let totalCountRs = undefined; let totalCountRs = undefined;
// let listRs = undefined; let listRs = undefined;
// if (!this.$utils.isEmpty(response.data.data) && this.$utils.isInteger(response.data.totalCount)) { if (!this.$utils.isEmpty(response.data.data) && this.$utils.isInteger(response.data.totalCount)) {
// listRs = response.data.data; listRs = response.data.data;
// totalCountRs = response.data.totalCount; totalCountRs = response.data.totalCount;
// listRs.map(function(item){ listRs.map(function(item){
// item.crtTimeStr = timestamp2Date(item.crtTime); item.crtTimeStr = timestamp2Date(item.crtTime);
// item.finishTimeStr = timestamp2Date(item.finishTime); });
// }); }
// } this.listLoading = false;
// this.listLoading = false; this.list = listRs;
// this.list = listRs; this.total = totalCountRs;
// this.total = totalCountRs; })
// })
}, },
handleFilter() { handleFilter() {
...@@ -451,67 +449,47 @@ ...@@ -451,67 +449,47 @@
this.listQuery.page = val; this.listQuery.page = val;
this.getList(); this.getList();
}, },
handleUpdate(item){ handleUpdate(row){
var that = this; var that = this;
that.modalTitle = '优惠券编辑'; that.modalTitle = '优惠券编辑';
that.isUpdate = true; that.isUpdate = true;
that.cleanForm(); that.cleanForm();
item.user_type_name = item.userType==0?'普通用户':'会员用户'; getObj(row.id).then(response => {
item.valid_type_name = item.validType==1?'绝对时效':'相对时效'; console.log(response)
if(item.validStartTime!=''){ var item = response.data;
item.validStartTimeStr = getymdTimeByDay(item.validStartTime); item.user_type_name = item.userType==0?'普通用户':'会员用户';
}else{ item.valid_type_name = item.validType==1?'绝对时效':'相对时效';
item.validStartTimeStr = ''; //相对时效的时间
} if(item.validStartTime>0){
if(item.validEndTime!=''){ item.validStartTimeStr = getYMD(item.validStartTime);
item.validEndTimeStr = getymdTimeByDay(item.validEndTime); }else{
}else{ item.validStartTimeStr = '';
item.validEndTimeStr = ''; }
} if(item.validEndTime>0){
if(item.startTime>0){ item.validEndTimeStr = getYMD(item.validEndTime);
item.startTimeStr = getymdTimeByDay(item.startTime); }else{
}else{ item.validEndTimeStr = '';
item.startTimeStr = ''; }
} //高级设置,发放时间
if(item.endTime>0){ if(item.startTime>0){
item.endTimeStr = getymdTimeByDay(item.endTime); item.startTimeStr = getYMD(item.startTime);
}else{ }else{
item.endTimeStr = ''; item.startTimeStr = '';
} }
if(item.type==1){ if(item.endTime>0){
item.typeName = '满减券' item.endTimeStr = getYMD(item.endTime);
}else if(item.type==3){ }else{
item.typeName = '无门槛券' item.endTimeStr = '';
} }
if(item.used ==10){
item.usedName = '店铺优惠券'
}else if(item.used ==11){
item.usedName = '新人店铺券'
}else if(item.used ==20){
item.usedName = '商品优惠券'
}else if(item.used ==30){
item.usedName = '类目优惠券'
}else if(item.used ==60){
item.usedName = '平台优惠券'
}else if(item.used ==61){
item.usedName = '新人平台券'
}
if(item.channel ==0){ item.startTimeName=item.startTime==0?'不限':'自定义';
item.channelName = '全平台' item.endTimeName=item.endTime==0?'不限':'自定义';
}else if(item.channel ==1){ item.cangive='否';
item.channelName = '租车' that.formdata = item;
}else if(item.channel ==2){ that.editDialogVisible = true;
item.channelName = '旅游' })
}else if(item.channel ==3){
item.channelName = '营地'
}
item.startTimeName=item.startTime==0?'不限':'自定义';
item.endTimeName=item.endTime==0?'不限':'自定义';
item.cangive='否';
that.formdata = item;
console.log(that.formdata)
that.editDialogVisible = true;
}, },
addCunpon(){ addCunpon(){
var that = this; var that = this;
...@@ -521,9 +499,18 @@ ...@@ -521,9 +499,18 @@
console.log(that.formdata) console.log(that.formdata)
that.editDialogVisible = true; that.editDialogVisible = true;
}, },
deleteHandler(item){ deleteHandler(row){
item.visible2 = false delObj(row.id).then(() => {
this.$notify({
title: '成功',
message: '删除成功',
type: 'success',
duration: 2000
});
row.visible2 = false;
const index = this.list.indexOf(row);
this.list.splice(index, 1);
});
}, },
/** /**
* 创建 * 创建
...@@ -533,52 +520,48 @@ ...@@ -533,52 +520,48 @@
const set = this.$refs; const set = this.$refs;
set[formName].validate(valid => { set[formName].validate(valid => {
if (valid) { if (valid) {
if(that.formdata.validStartTimeStr!=''){ that.formdata.userType = that.formdata.user_type_name=='普通用户'?0:1;
that.formdata.validStartTime = this.formdata.validStartTimeStr.getTime(); that.formdata.validType = that.formdata.valid_type_name=='绝对时效'?1:2;
}else{ if(that.formdata.valid_type_name=='绝对时效'){
that.formdata.validStartTime = '' that.formdata.validStartTime = new Date(this.formdata.validStartTimeStr).getTime();
} that.formdata.validEndTime = new Date(this.formdata.validEndTimeStr).getTime();
if(that.formdata.validEndTimeStr!=''){
that.formdata.validEndTime = this.formdata.validEndTimeStr.getTime();
}else{ }else{
that.formdata.validEndTime = '' that.formdata.validStartTime = 0;
that.formdata.validEndTime = 0;
} }
if(that.formdata.startTimeStr!=''){ if(that.formdata.startTimeName=='自定义'){
that.formdata.startTime = this.formdata.startTimeStr.getTime(); that.formdata.startTime = new Date(this.formdata.startTimeStr).getTime();
}else{ }else{
that.formdata.startTime = 0 that.formdata.startTime = 0
} }
if(that.formdata.endTimeName=='自定义'){
if(that.formdata.endTimeStr!=''){ that.formdata.endTime = new Date(this.formdata.endTimeStr).getTime();
that.formdata.endTime = this.formdata.endTimeStr.getTime();
}else{ }else{
that.formdata.endTime = 0 that.formdata.endTime = 0
} }
that.formdata.userType = that.formdata.user_type_name=='普通用户'?0:1
console.log(that.formdata) console.log(that.formdata)
// addBanner(this.form) addObj(that.formdata)
// .then(response => { .then(response => {
// if (response.status === 200) { if (response.status === 200) {
// this.bannerDialogVisible = false; this.editDialogVisible = false;
// this.getList(); this.getList();
// this.$notify({ this.$notify({
// title: '成功', title: '成功',
// message: '创建成功', message: '创建成功',
// type: 'success', type: 'success',
// duration: 2000 duration: 2000
// }); });
// this.getList(); } else {
// } else { this.$notify({
// this.$notify({ title: '失败',
// title: '失败', message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
// message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!', type: 'error',
// type: 'error', duration: 2000
// duration: 2000 });
// }); }
// } });
// });
} else { } else {
return false; return false;
} }
...@@ -588,33 +571,57 @@ ...@@ -588,33 +571,57 @@
* 编辑-更新 * 编辑-更新
* */ * */
update(formName) { update(formName) {
var that = this;
const set = this.$refs; const set = this.$refs;
// set[formName].validate(valid => { set[formName].validate(valid => {
// if (valid) { if (valid) {
// editBanner(this.form).then(response => { that.formdata.userType = that.formdata.user_type_name=='普通用户'?0:1;
// if (response.status === 200) { that.formdata.validType = that.formdata.valid_type_name=='绝对时效'?1:2;
// this.bannerDialogVisible = false;
// this.getList(); if(that.formdata.valid_type_name=='绝对时效'){
// this.$notify({ that.formdata.validStartTime = new Date(that.formdata.validStartTimeStr).getTime();
// title: '成功', that.formdata.validEndTime = new Date(that.formdata.validEndTimeStr).getTime();
// message: '编辑成功', }else{
// type: 'success', that.formdata.validStartTime = 0;
// duration: 2000 that.formdata.validEndTime = 0;
// }); }
// this.getList();
// } else { if(that.formdata.startTimeName=='自定义'){
// this.$notify({ that.formdata.startTime = new Date(that.formdata.startTimeStr).getTime();
// title: '失败', }else{
// message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!', that.formdata.startTime = 0
// type: 'error', }
// duration: 2000 if(that.formdata.endTimeName=='自定义'){
// }); that.formdata.endTime = new Date(that.formdata.endTimeStr).getTime();
// } }else{
// }); that.formdata.endTime = 0
// } else { }
// return false;
// } console.log(that.formdata)
// }); addObj(that.formdata)
.then(response => {
if (response.status === 200) {
this.editDialogVisible = false;
this.getList();
this.$notify({
title: '成功',
message: '编辑成功',
type: 'success',
duration: 2000
});
} else {
this.$notify({
title: '失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
} else {
return false;
}
});
}, },
/** /**
* 上传图片 * 上传图片
...@@ -652,21 +659,24 @@ ...@@ -652,21 +659,24 @@
this.formdata = { this.formdata = {
title: '', title: '',
user_type_name:"普通用户", user_type_name:"普通用户",
type:'', usedAmount:'',
type:1,
withAmount:'',
valid_type_name:'绝对时效', valid_type_name:'绝对时效',
startTime:'', validStartTimeStr:'',
endTime:'', validEndTimeStr:'',
validDays:0,
cangive:'否', cangive:'否',
url:'', url:'',
icon:'', icon:'',
used:'', used:61,
channel:'', channel:0,
startTimeName:'不限', startTimeName:'不限',
endTimeName:'不限', endTimeName:'不限',
validStartTimeStr:'',
validEndTimeStr:'',
startTimeStr:'', startTimeStr:'',
endTimeStr:'', endTimeStr:'',
quota:'',
limitCollar:''
} }
}, },
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment