完成砍价模块;拼团设置管理
This commit is contained in:
parent
ab5b37cc92
commit
08f56a2777
|
@ -3,5 +3,5 @@ const merge = require('webpack-merge')
|
|||
const prodEnv = require('./prod.env')
|
||||
|
||||
module.exports = merge(prodEnv, {
|
||||
NODE_ENV: '"development"'
|
||||
NODE_ENV: '"development"',
|
||||
})
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
export function fetchDataList(page, pageSize, data) {
|
||||
return request({
|
||||
url: '/user/kanjiaHelp/list',
|
||||
method: 'post',
|
||||
data: {
|
||||
page,
|
||||
pageSize,
|
||||
...data
|
||||
}
|
||||
})
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
export function fetchDataList(page, pageSize, data) {
|
||||
return request({
|
||||
url: '/user/kanjiaJoiner/list',
|
||||
method: 'post',
|
||||
data: {
|
||||
page,
|
||||
pageSize,
|
||||
...data
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export function saveStatus(id, status) {
|
||||
return request({
|
||||
url: '/user/kanjiaJoiner/status',
|
||||
method: 'post',
|
||||
data: { id, status }
|
||||
})
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
export function fetchDataList(page, pageSize, data) {
|
||||
return request({
|
||||
url: '/user/pingtuanSet/list',
|
||||
method: 'post',
|
||||
data: {
|
||||
page,
|
||||
pageSize,
|
||||
...data
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export function info(id) {
|
||||
return request({
|
||||
url: '/user/pingtuanSet/info',
|
||||
method: 'get',
|
||||
params: { id }
|
||||
})
|
||||
}
|
||||
|
||||
export function delData(id) {
|
||||
return request({
|
||||
url: '/user/pingtuanSet/del',
|
||||
method: 'post',
|
||||
data: { id }
|
||||
})
|
||||
}
|
||||
|
||||
export function saveData(data) {
|
||||
return request({
|
||||
url: '/user/pingtuanSet/save',
|
||||
method: 'post',
|
||||
data: { ...data }
|
||||
})
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1526986868571" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1496" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M706.62144 298.03008 337.78688 298.03008l0 412.09344 328.9088 0 0 0c27.88352 1.58208 41.1904-10.94144 39.92576-37.55008L706.62144 298.03008 706.62144 298.03008zM680.00256 422.55872l-75.10016 0 0 192.0256c1.5872 43.08992-21.55008 63.85152-69.39136 62.26944l-28.05248 0 0-31.37536 26.14272 0c19.328 1.5872 28.20096-8.71424 26.61376-30.89408L560.21504 422.55872l-26.61376 0c-19.01568 109.32736-73.984 190.43328-164.92544 243.3536l0-31.37024c33.5872-27.8784 60.27776-59.25888 80.08704-94.11072 19.80416-34.85696 33.35168-74.14272 40.64256-117.87264L364.40064 422.55872l0-30.89408 195.82464 0 0-67.0208 44.68224 0 0 67.0208 75.10016 0L680.00768 422.55872 680.00256 422.55872z" p-id="1497"></path><path d="M522.24 84.43392c-231.38816 0-418.96448 187.57632-418.96448 418.95936 0 231.38816 187.57632 418.95936 418.96448 418.95936 231.38304 0 418.96448-187.5712 418.96448-418.95936C941.19936 272.01536 753.62304 84.43392 522.24 84.43392L522.24 84.43392zM681.9072 741.01248l-392.6016 0L289.3056 265.70752l465.80224 0 0 402.59072 0 0C756.6848 718.3616 732.28288 742.59456 681.9072 741.01248L681.9072 741.01248z" p-id="1498"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -128,21 +128,33 @@ export const constantRouterMap = [
|
|||
|
||||
{
|
||||
name: '营销辅助',
|
||||
path: '/user/kanjiaSet',
|
||||
path: '/user',
|
||||
component: Layout,
|
||||
redirect: '/user/kanjiaSet/list',
|
||||
meta: { title: '营销辅助', icon: 'yingxiao' },
|
||||
children: [{
|
||||
name: '砍价设置',
|
||||
path: 'list',
|
||||
path: 'kanjiaSet/list',
|
||||
component: () => import('@/views/kanjiaSet/list'),
|
||||
meta: { title: '砍价设置', icon: 'kanjia' }
|
||||
},
|
||||
{
|
||||
name: '我的资源包2',
|
||||
path: 'dashboard3',
|
||||
component: () => import('@/views/dashboard/index'),
|
||||
meta: { title: '我的资源包2', icon: 'setting' }
|
||||
name: '砍价参与用户',
|
||||
path: 'kanjiaJoiner/list',
|
||||
component: () => import('@/views/kanjiaJoiner/list'),
|
||||
meta: { title: '砍价参与用户', icon: 'kanjia' }
|
||||
},
|
||||
{
|
||||
name: '砍价明细',
|
||||
path: 'kanjiaHelp/list',
|
||||
component: () => import('@/views/kanjiaHelp/list'),
|
||||
meta: { title: '砍价明细', icon: 'kanjia' }
|
||||
},
|
||||
{
|
||||
name: '拼团设置',
|
||||
path: 'pingtuanSet/list',
|
||||
component: () => import('@/views/pingtuanSet/list'),
|
||||
meta: { title: '拼团设置', icon: 'pingtuan' }
|
||||
}]
|
||||
},
|
||||
|
||||
|
|
|
@ -0,0 +1,197 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
|
||||
<div class="filter-container">
|
||||
<el-input clearable @keyup.enter.native="fetchData" style="width: 200px;" class="filter-item" placeholder="砍价ID" v-model="searchData.kjId">
|
||||
</el-input>
|
||||
<el-input clearable @keyup.enter.native="fetchData" style="width: 200px;" class="filter-item" placeholder="商品ID" v-model="searchData.goodsId">
|
||||
</el-input>
|
||||
<el-input clearable @keyup.enter.native="fetchData" style="width: 200px;" class="filter-item" placeholder="手机号码" v-model="searchData.mobileUser">
|
||||
</el-input>
|
||||
<el-input clearable @keyup.enter.native="fetchData" style="width: 200px;" class="filter-item" placeholder="用户昵称" v-model="searchData.nick">
|
||||
</el-input>
|
||||
<el-date-picker type="date" placeholder="砍价时间起" v-model="searchData.dateAddBegin" style="width: 200px;" class="filter-item"></el-date-picker>
|
||||
<el-date-picker type="date" placeholder="砍价时间止" v-model="searchData.dateAddEnd" style="width: 200px;" class="filter-item"></el-date-picker>
|
||||
<el-button class="filter-item" type="primary" icon="el-icon-search" @click="fetchData">搜索</el-button>
|
||||
</div>
|
||||
|
||||
<el-table :data="list" v-loading.body="listLoading" element-loading-text="Loading" border fit highlight-current-row empty-text="暂无数据" @selection-change="handleSelectionChange">
|
||||
<el-table-column label="序号">
|
||||
<template slot-scope="scope">
|
||||
{{scope.row.id}}
|
||||
<el-tooltip v-if="scope.row.remark" class="item" effect="dark" :content="scope.row.remark" placement="right">
|
||||
<i class="el-icon-info"></i>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="kjId" label="砍价ID"></el-table-column>
|
||||
<el-table-column prop="goodsId" label="商品ID"></el-table-column>
|
||||
<el-table-column label="手机号码[参与]">
|
||||
<template slot-scope="scope">
|
||||
{{userMapJoin[scope.row.uid].mobile}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="昵称[参与]">
|
||||
<template slot-scope="scope">
|
||||
{{userMapJoin[scope.row.uid].nick}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="手机号码[助力]">
|
||||
<template slot-scope="scope">
|
||||
{{userMapHelp[scope.row.uidHelp].mobile}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="昵称[助力]">
|
||||
<template slot-scope="scope">
|
||||
{{userMapHelp[scope.row.uidHelp].nick}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="cutPrice" label="金额"></el-table-column>
|
||||
<el-table-column prop="dateAdd" label="砍价时间"></el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="page"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:page-size="pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="totalRow" style="margin-top:20px;">
|
||||
</el-pagination>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { fetchDataList } from '@/api/kanjiaHelp'
|
||||
import { Message, MessageBox } from 'element-ui'
|
||||
import { mapGetters } from 'vuex'
|
||||
|
||||
export default {
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'centerUserBase'
|
||||
])
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
page:1,
|
||||
pageSize:10,
|
||||
totalRow:0,
|
||||
|
||||
rules: {
|
||||
goodsId: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'integer', message: '必须为数字'}
|
||||
],
|
||||
number: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'integer', message: '必须为数字'}
|
||||
],
|
||||
originalPrice: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'number', message: '必须为数字'}
|
||||
],
|
||||
minPrice: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'number', message: '必须为数字'}
|
||||
],
|
||||
helpPriceMin: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'number', message: '必须为数字'}
|
||||
],
|
||||
helpPriceMax: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'number', message: '必须为数字'}
|
||||
],
|
||||
status: [
|
||||
{ required: true, message: '不能为空'}
|
||||
],
|
||||
dateAddStr: [
|
||||
{ required: true, message: '不能为空'}
|
||||
],
|
||||
dateEndStr: [
|
||||
{ required: true, message: '不能为空'}
|
||||
],
|
||||
},
|
||||
|
||||
searchData:{
|
||||
kjId:undefined,
|
||||
goodsId:undefined,
|
||||
mobileUser:undefined,
|
||||
nick:undefined,
|
||||
status:undefined,
|
||||
dateAddBegin:undefined,
|
||||
dateAddEnd:undefined,
|
||||
dateUpdateBegin:undefined,
|
||||
dateUpdateEnd:undefined,
|
||||
},
|
||||
|
||||
pushData: {
|
||||
dialogTitle : undefined,
|
||||
dialogFormVisible:false,
|
||||
|
||||
id:undefined,
|
||||
goodsId:undefined,
|
||||
number:undefined,
|
||||
originalPrice:undefined,
|
||||
minPrice:undefined,
|
||||
helpPriceMin:undefined,
|
||||
helpPriceMax:undefined,
|
||||
status:undefined,
|
||||
dateAddStr:undefined,
|
||||
dateEndStr:undefined
|
||||
},
|
||||
|
||||
multipleSelection: [],
|
||||
list: null,
|
||||
listLoading: true,
|
||||
statisticsData:{}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pushDataTmp = Object.assign({}, this.pushData)
|
||||
this.fetchData()
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
handleSizeChange(val) {
|
||||
this.pageSize = val;
|
||||
this.fetchData();
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.page = val
|
||||
this.fetchData()
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
fetchData() {
|
||||
this.list = null
|
||||
this.listLoading = true
|
||||
fetchDataList(this.page, this.pageSize, this.searchData).then(response => {
|
||||
if (response.code == 0) {
|
||||
this.userMapJoin = response.data.userMapJoin
|
||||
this.userMapHelp = response.data.userMapHelp
|
||||
this.list = response.data.result
|
||||
this.totalRow = response.data.totalRow
|
||||
}
|
||||
this.listLoading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss">
|
||||
.filter-container {
|
||||
padding-bottom: 10px;
|
||||
.filter-item {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
|
@ -0,0 +1,214 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
|
||||
<div class="filter-container">
|
||||
<el-input clearable @keyup.enter.native="fetchData" style="width: 200px;" class="filter-item" placeholder="砍价ID" v-model="searchData.kjId">
|
||||
</el-input>
|
||||
<el-input clearable @keyup.enter.native="fetchData" style="width: 200px;" class="filter-item" placeholder="商品ID" v-model="searchData.goodsId">
|
||||
</el-input>
|
||||
<el-input clearable @keyup.enter.native="fetchData" style="width: 200px;" class="filter-item" placeholder="手机号码" v-model="searchData.mobileUser">
|
||||
</el-input>
|
||||
<el-input clearable @keyup.enter.native="fetchData" style="width: 200px;" class="filter-item" placeholder="用户昵称" v-model="searchData.nick">
|
||||
</el-input>
|
||||
<el-select clearable style="width: 200px" class="filter-item" v-model="searchData.status" placeholder="状态">
|
||||
<el-option label="进行中" value="0"></el-option>
|
||||
<el-option label="无效" value="1"></el-option>
|
||||
<el-option label="完成" value="2"></el-option>
|
||||
</el-select>
|
||||
<el-date-picker type="date" placeholder="加入时间起" v-model="searchData.dateAddBegin" style="width: 200px;" class="filter-item"></el-date-picker>
|
||||
<el-date-picker type="date" placeholder="加入时间止" v-model="searchData.dateAddEnd" style="width: 200px;" class="filter-item"></el-date-picker>
|
||||
<el-date-picker type="date" placeholder="更新时间起" v-model="searchData.dateUpdateBegin" style="width: 200px;" class="filter-item"></el-date-picker>
|
||||
<el-date-picker type="date" placeholder="更新时间止" v-model="searchData.dateUpdateEnd" style="width: 200px;" class="filter-item"></el-date-picker>
|
||||
<el-button class="filter-item" type="primary" icon="el-icon-search" @click="fetchData">搜索</el-button>
|
||||
</div>
|
||||
|
||||
<el-table :data="list" v-loading.body="listLoading" element-loading-text="Loading" border fit highlight-current-row empty-text="暂无数据" @selection-change="handleSelectionChange">
|
||||
<el-table-column prop="kjId" label="砍价ID"></el-table-column>
|
||||
<el-table-column prop="goodsId" label="商品ID"></el-table-column>
|
||||
<el-table-column label="手机号码">
|
||||
<template slot-scope="scope">
|
||||
{{userMap[scope.row.uid].mobile}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="昵称">
|
||||
<template slot-scope="scope">
|
||||
{{userMap[scope.row.uid].nick}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="curPrice" label="当前价格"></el-table-column>
|
||||
<el-table-column prop="minPrice" label="底价"></el-table-column>
|
||||
<el-table-column prop="helpNumber" label="帮砍人数"></el-table-column>
|
||||
<el-table-column prop="statusStr" label="状态"></el-table-column>
|
||||
<el-table-column prop="dateAdd" label="加入时间"></el-table-column>
|
||||
<el-table-column prop="dateUpdate" label="更新时间"></el-table-column>
|
||||
<el-table-column label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="scope.row.status != 0" type="text" @click="saveStatus(scope.row.id, 0)">进行中</el-button>
|
||||
<el-button v-if="scope.row.status != 2" type="text" @click="saveStatus(scope.row.id, 2)" style="color:green">完成</el-button>
|
||||
<el-button v-if="scope.row.status != 1" type="text" @click="saveStatus(scope.row.id, 1)" style="color:red">无效</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="page"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:page-size="pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="totalRow" style="margin-top:20px;">
|
||||
</el-pagination>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { fetchDataList, saveStatus } from '@/api/kanjiaJoiner'
|
||||
import { Message, MessageBox } from 'element-ui'
|
||||
import { mapGetters } from 'vuex'
|
||||
|
||||
export default {
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'centerUserBase'
|
||||
])
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
page:1,
|
||||
pageSize:10,
|
||||
totalRow:0,
|
||||
|
||||
rules: {
|
||||
goodsId: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'integer', message: '必须为数字'}
|
||||
],
|
||||
number: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'integer', message: '必须为数字'}
|
||||
],
|
||||
originalPrice: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'number', message: '必须为数字'}
|
||||
],
|
||||
minPrice: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'number', message: '必须为数字'}
|
||||
],
|
||||
helpPriceMin: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'number', message: '必须为数字'}
|
||||
],
|
||||
helpPriceMax: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'number', message: '必须为数字'}
|
||||
],
|
||||
status: [
|
||||
{ required: true, message: '不能为空'}
|
||||
],
|
||||
dateAddStr: [
|
||||
{ required: true, message: '不能为空'}
|
||||
],
|
||||
dateEndStr: [
|
||||
{ required: true, message: '不能为空'}
|
||||
],
|
||||
},
|
||||
|
||||
searchData:{
|
||||
kjId:undefined,
|
||||
goodsId:undefined,
|
||||
mobileUser:undefined,
|
||||
nick:undefined,
|
||||
status:undefined,
|
||||
dateAddBegin:undefined,
|
||||
dateAddEnd:undefined,
|
||||
dateUpdateBegin:undefined,
|
||||
dateUpdateEnd:undefined,
|
||||
},
|
||||
|
||||
pushData: {
|
||||
dialogTitle : undefined,
|
||||
dialogFormVisible:false,
|
||||
|
||||
id:undefined,
|
||||
goodsId:undefined,
|
||||
number:undefined,
|
||||
originalPrice:undefined,
|
||||
minPrice:undefined,
|
||||
helpPriceMin:undefined,
|
||||
helpPriceMax:undefined,
|
||||
status:undefined,
|
||||
dateAddStr:undefined,
|
||||
dateEndStr:undefined
|
||||
},
|
||||
|
||||
multipleSelection: [],
|
||||
list: null,
|
||||
listLoading: true,
|
||||
statisticsData:{}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pushDataTmp = Object.assign({}, this.pushData)
|
||||
this.fetchData()
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
handleSizeChange(val) {
|
||||
this.pageSize = val;
|
||||
this.fetchData();
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.page = val
|
||||
this.fetchData()
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
fetchData() {
|
||||
this.list = null
|
||||
this.listLoading = true
|
||||
fetchDataList(this.page, this.pageSize, this.searchData).then(response => {
|
||||
if (response.code == 0) {
|
||||
this.userMap = response.data.userMap
|
||||
this.list = response.data.result
|
||||
this.totalRow = response.data.totalRow
|
||||
}
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
saveStatus(id, status){
|
||||
this.$confirm('确认本次操作?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
saveStatus(id, status).then(res => {
|
||||
Message({
|
||||
message: '操作成功',
|
||||
type: 'success',
|
||||
duration: 1 * 1000,
|
||||
onClose: () => {
|
||||
this.fetchData()
|
||||
}
|
||||
})
|
||||
})
|
||||
}).catch(() => {});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss">
|
||||
.filter-container {
|
||||
padding-bottom: 10px;
|
||||
.filter-item {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
|
@ -40,6 +40,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-button style='margin-top:20px' type="danger" @click="delDataMore">批量删除</el-button>
|
||||
<el-pagination
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
|
@ -234,7 +235,7 @@ export default {
|
|||
duration: 3 * 1000
|
||||
})
|
||||
} else {
|
||||
this.pushData = Object.assign({}, this.pushDataTmp, res.data, {dateAddStr:res.data.dateAdd, dateEndStr:res.data.dateEnd})
|
||||
this.pushData = Object.assign({}, this.pushDataTmp, res.data, {status:'' + res.data.status, dateAddStr:res.data.dateAdd, dateEndStr:res.data.dateEnd})
|
||||
this.pushData.dialogTitle = '修改砍价设置'
|
||||
this.pushData.dialogFormVisible = true
|
||||
this.$nextTick(() => {
|
||||
|
|
|
@ -53,7 +53,6 @@ export default {
|
|||
}
|
||||
},
|
||||
mounted() {
|
||||
this.centerUserBase.aaa = 'ssddfssfg0000'
|
||||
info().then(res => {
|
||||
this.$store.commit('SET_CENTER_USER_BASE',res.data)
|
||||
});
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="login-container">
|
||||
<el-form class="login-form" autoComplete="on" :model="loginForm" :rules="loginRules" ref="loginForm" label-position="left">
|
||||
<h3 class="title">api工厂独立后台</h3>
|
||||
<h3 class="title">api工厂独立后台(beta)</h3>
|
||||
<el-form-item prop="username">
|
||||
<span class="svg-container svg-container_login">
|
||||
<svg-icon icon-class="user" />
|
||||
|
@ -81,7 +81,6 @@ export default {
|
|||
},
|
||||
mounted() {
|
||||
this.changeRandom()
|
||||
console.log('1233', process.env.BASE_API)
|
||||
},
|
||||
methods: {
|
||||
showPwd() {
|
||||
|
|
|
@ -0,0 +1,324 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
|
||||
<div class="filter-container">
|
||||
<el-input clearable @keyup.enter.native="fetchData" style="width: 200px;" class="filter-item" placeholder="拼团ID" v-model="searchData.id">
|
||||
</el-input>
|
||||
<el-input clearable @keyup.enter.native="fetchData" style="width: 200px;" class="filter-item" placeholder="商品ID" v-model="searchData.goodsId">
|
||||
</el-input>
|
||||
<el-select clearable style="width: 200px" class="filter-item" v-model="searchData.status" placeholder="状态">
|
||||
<el-option label="正常" value="0"></el-option>
|
||||
<el-option label="禁用" value="1"></el-option>
|
||||
</el-select>
|
||||
<el-date-picker type="date" placeholder="开始时间起" v-model="searchData.dateAddBegin" style="width: 200px;" class="filter-item"></el-date-picker>
|
||||
<el-date-picker type="date" placeholder="开始时间止" v-model="searchData.dateAddEnd" style="width: 200px;" class="filter-item"></el-date-picker>
|
||||
<el-date-picker type="date" placeholder="截止时间起" v-model="searchData.dateEndBegin" style="width: 200px;" class="filter-item"></el-date-picker>
|
||||
<el-date-picker type="date" placeholder="截止时间止" v-model="searchData.dateEndEnd" style="width: 200px;" class="filter-item"></el-date-picker>
|
||||
<el-button class="filter-item" type="primary" icon="el-icon-search" @click="fetchData">搜索</el-button>
|
||||
<el-button class="filter-item" style="margin-left: 10px;" @click="handleCreate" type="success" icon="el-icon-edit">添加</el-button>
|
||||
</div>
|
||||
|
||||
<el-table :data="list" v-loading.body="listLoading" element-loading-text="Loading" border fit highlight-current-row empty-text="暂无数据" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" align="center" width="55" row-key="id"></el-table-column>
|
||||
<el-table-column prop="id" label="拼团ID"></el-table-column>
|
||||
<el-table-column prop="goodsId" label="商品ID"></el-table-column>
|
||||
<el-table-column prop="numberSucccess" label="成团数量"></el-table-column>
|
||||
<el-table-column prop="numberDoing" label="进行中"></el-table-column>
|
||||
<el-table-column prop="numberPersion" label="几人成团"></el-table-column>
|
||||
<el-table-column prop="timeoutHours" label="超时时间"></el-table-column>
|
||||
<el-table-column prop="statusStr" label="状态"></el-table-column>
|
||||
<el-table-column prop="refundTypeStr" label="退款至"></el-table-column>
|
||||
<el-table-column prop="dateAdd" label="开始时间"></el-table-column>
|
||||
<el-table-column prop="dateEnd" label="截止时间"></el-table-column>
|
||||
<el-table-column label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" @click="handleUpdate(scope.row.id)">编辑</el-button>
|
||||
<el-button type="text" @click="delData(scope.row.id)" style="color:red">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-button style='margin-top:20px' type="danger" @click="delDataMore">批量删除</el-button>
|
||||
<el-pagination
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="page"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:page-size="pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="totalRow" style="margin-top:20px;">
|
||||
</el-pagination>
|
||||
|
||||
<el-dialog :title="pushData.dialogTitle" :visible.sync="pushData.dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-form :rules="rules" ref="addEditPopForm" :model="pushData" label-position="left" label-width="100px">
|
||||
<el-form-item label="商品ID" prop="goodsId" >
|
||||
<el-input v-model.number="pushData.goodsId" clearable @keyup.enter.native="handleCreateSave"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="已成团数量" prop="numberSucccess" >
|
||||
<el-input v-model.number="pushData.numberSucccess" clearable @keyup.enter.native="handleCreateSave"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="几人成团" prop="numberPersion" >
|
||||
<el-input v-model.number="pushData.numberPersion" clearable @keyup.enter.native="handleCreateSave"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="超时时间">
|
||||
<el-col :span="4">
|
||||
<el-form-item prop="timeoutHours">
|
||||
<el-input v-model.number="pushData.timeoutHours" clearable @keyup.enter.native="handleCreateSave"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="20"> 超过该时间(小时数)未成团的将自动退款</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status" >
|
||||
<el-select v-model="pushData.status" placeholder="请选择">
|
||||
<el-option label="正常" value="0"></el-option>
|
||||
<el-option label="禁用" value="1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="退款方式" prop="refundType" >
|
||||
<el-select v-model="pushData.refundType" placeholder="请选择">
|
||||
<el-option label="用户钱包余额" value="0"></el-option>
|
||||
<el-option label="原路退回" value="1"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="开始时间" prop="dateAddStr" >
|
||||
<el-date-picker v-model="pushData.dateAddStr" clearable type="datetime" placeholder="点击选择" value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="截止时间" prop="dateEndStr" >
|
||||
<el-date-picker v-model="pushData.dateEndStr" clearable type="datetime" placeholder="点击选择" value-format="yyyy-MM-dd HH:mm:ss">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="pushData.dialogFormVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="handleCreateSave">确定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { fetchDataList, info, delData, saveData } from '@/api/pingtuanSet'
|
||||
import { Message, MessageBox } from 'element-ui'
|
||||
import { mapGetters } from 'vuex'
|
||||
|
||||
export default {
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'centerUserBase'
|
||||
])
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
page:1,
|
||||
pageSize:10,
|
||||
totalRow:0,
|
||||
|
||||
rules: {
|
||||
goodsId: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'integer', message: '必须为数字'}
|
||||
],
|
||||
numberSucccess: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'integer', message: '必须为数字'}
|
||||
],
|
||||
numberPersion: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'integer', message: '必须为数字'}
|
||||
],
|
||||
timeoutHours: [
|
||||
{ required: true, message: '不能为空'},
|
||||
{ type:'integer', message: '必须为数字'}
|
||||
],
|
||||
status: [
|
||||
{ required: true, message: '不能为空'}
|
||||
],
|
||||
refundType: [
|
||||
{ required: true, message: '不能为空'}
|
||||
],
|
||||
dateAddStr: [
|
||||
{ required: true, message: '不能为空'}
|
||||
],
|
||||
dateEndStr: [
|
||||
{ required: true, message: '不能为空'}
|
||||
],
|
||||
},
|
||||
|
||||
searchData:{
|
||||
id:undefined,
|
||||
goodsId:undefined,
|
||||
status:undefined,
|
||||
dateAddBegin:undefined,
|
||||
dateAddEnd:undefined,
|
||||
dateEndBegin:undefined,
|
||||
dateEndEnd:undefined,
|
||||
},
|
||||
|
||||
pushData: {
|
||||
dialogTitle : undefined,
|
||||
dialogFormVisible:false,
|
||||
|
||||
id:undefined,
|
||||
goodsId:undefined,
|
||||
numberSucccess:0,
|
||||
numberPersion:undefined,
|
||||
timeoutHours:24,
|
||||
status:undefined,
|
||||
refundType:undefined,
|
||||
dateAddStr:undefined,
|
||||
dateEndStr:undefined
|
||||
},
|
||||
|
||||
multipleSelection: [],
|
||||
list: null,
|
||||
listLoading: true,
|
||||
statisticsData:{}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pushDataTmp = Object.assign({}, this.pushData)
|
||||
this.fetchData()
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
handleSizeChange(val) {
|
||||
this.pageSize = val;
|
||||
this.fetchData();
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.page = val
|
||||
this.fetchData()
|
||||
},
|
||||
handleSelectionChange(val) {
|
||||
this.multipleSelection = val
|
||||
},
|
||||
fetchData() {
|
||||
this.list = null
|
||||
this.listLoading = true
|
||||
fetchDataList(this.page, this.pageSize, this.searchData).then(response => {
|
||||
if (response.code == 0) {
|
||||
this.list = response.data.result
|
||||
this.totalRow = response.data.totalRow
|
||||
}
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
handleCreate(){
|
||||
this.pushData = Object.assign({}, this.pushDataTmp)
|
||||
this.pushData.dialogTitle = '增加拼团设置'
|
||||
this.pushData.dialogFormVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['addEditPopForm'].clearValidate()
|
||||
})
|
||||
},
|
||||
handleUpdate(id){
|
||||
info(id).then(res => {
|
||||
if (res.code != 0) {
|
||||
Message({
|
||||
message: res.msg,
|
||||
type: 'error',
|
||||
duration: 3 * 1000
|
||||
})
|
||||
} else {
|
||||
this.pushData = Object.assign({}, this.pushDataTmp, res.data, {status:'' + res.data.status, refundType:'' + res.data.refundType, dateAddStr:res.data.dateAdd, dateEndStr:res.data.dateEnd})
|
||||
this.pushData.dialogTitle = '修改拼团设置'
|
||||
this.pushData.dialogFormVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['addEditPopForm'].clearValidate()
|
||||
})
|
||||
}
|
||||
}).catch(e=>{
|
||||
console.error(e);
|
||||
})
|
||||
},
|
||||
handleCreateSave(){
|
||||
this.$refs['addEditPopForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
saveData(this.pushData).then((res) => {
|
||||
this.pushData.dialogFormVisible = false
|
||||
if (res.code == 0) {
|
||||
Message({
|
||||
message: '操作成功',
|
||||
type: 'success',
|
||||
duration: 1 * 1000,
|
||||
onClose: () => {
|
||||
this.fetchData()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
Message({
|
||||
message: res.msg,
|
||||
type: 'error',
|
||||
duration: 3 * 1000
|
||||
})
|
||||
}
|
||||
}).catch(e=>{
|
||||
console.error(e);
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
statistics(){
|
||||
statistics().then(res => {
|
||||
// 弹框点击确定调整支付宝付款
|
||||
this.statisticsData = res.data
|
||||
})
|
||||
},
|
||||
delData(id){
|
||||
this.$confirm('删除无法恢复, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
delData(id).then(res => {
|
||||
Message({
|
||||
message: '删除成功',
|
||||
type: 'success',
|
||||
duration: 1 * 1000,
|
||||
onClose: () => {
|
||||
this.fetchData()
|
||||
}
|
||||
})
|
||||
})
|
||||
}).catch(() => {});
|
||||
},
|
||||
delDataMore(){
|
||||
if (!this.multipleSelection.length) {
|
||||
Message({
|
||||
message: '请先选择需要删除的数据',
|
||||
type: 'error',
|
||||
duration: 1 * 1000
|
||||
})
|
||||
return
|
||||
}
|
||||
this.$confirm('删除无法恢复, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
|
||||
this.multipleSelection.forEach(obj => {
|
||||
delData(obj.id).then(res => {
|
||||
this.fetchData()
|
||||
})
|
||||
})
|
||||
}).catch(() => {});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss">
|
||||
.filter-container {
|
||||
padding-bottom: 10px;
|
||||
.filter-item {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
Loading…
Reference in New Issue