Browse Source

拼团购后台管理功能 init

feature/syp_points
liuchuang 5 years ago
parent
commit
06d7c1e1d1
  1. 214
      src/views/modules/custom/groupbuy-detail.vue
  2. 83
      src/views/modules/custom/groupbuyinfo.vue

214
src/views/modules/custom/groupbuy-detail.vue

@ -1,66 +1,138 @@
<template> <template>
<el-dialog :visible.sync="visible" :title="$t('look')" :close-on-click-modal="false" :close-on-press-escape="false"> <el-dialog :visible.sync="visible" :title="$t('look')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" ref="dataForm" label-width="150px"> <el-form :model="dataForm" ref="dataForm" label-width="150px">
<el-form-item label="标题" prop="groupBuyTitle"> <el-form-item label="标题" prop="groupBuyTitle">
<div>{{ dataForm.groupBuyTitle }}</div> <div>{{ dataForm.groupBuyTitle }}</div>
</el-form-item> </el-form-item>
<el-form-item label="联系电话:" prop="groupBuyMobile"> <el-form-item label="发布内容" prop="groupBuyContent">
<div>{{ dataForm.groupBuyMobile }}</div> <div>{{ dataForm.groupBuyContent }}</div>
<el-image v-for="url in dataForm.images"
style="width: 100px; height: 100px; margin-right: 10px"
:key="url"
:src="url"
:preview-src-list="previewImgList"
@click="clickImg(url)">
</el-image>
</el-form-item> </el-form-item>
<el-form-item label="发布内容:" prop="groupBuyContent">
<div>{{ dataForm.groupBuyContent }}</div> <el-form-item label="价格">
</el-form-item> <div v-for="(price, index) in dataForm.prices" :key="price.groupBuyNumber">
<el-form-item label="团购时间:" prop="groupBuyTime"> <div :id="`content${index}`">
<div>{{ dataForm.groupBuyTime }}</div> <span>人数达到 {{ price.groupBuyNumber }} 团购价格为 {{ price.groupBuyPrice }} /</span>
</el-form-item> </div>
<el-form-item label="发布时间:" prop="createdTime"> </div>
</el-form-item>
<el-form-item label="联系电话" prop="groupBuyMobile">
<div>{{ dataForm.groupBuyMobile }}</div>
</el-form-item>
<el-form-item label="发布时间" prop="createdTime">
<div>{{ dataForm.createdTime }}</div> <div>{{ dataForm.createdTime }}</div>
</el-form-item> </el-form-item>
<el-form-item label="排序:" prop="sort"> <el-form-item label="报名人员">
<div>{{ dataForm.sort }}</div> <el-link type="primary" @click="innerVisible = true">查看</el-link>
</el-form-item> </el-form-item>
<el-form-item v-if="dataForm.shieldFlag === '1'" label="屏蔽状态:" prop="shieldFlag"> <el-form-item label="评价">
<el-link type="primary" @click="evaluationVisible = true">查看</el-link>
</el-form-item>
<el-form-item label="状态" prop="groupBuyStatus">
<div v-if="dataForm.groupBuyStatus === 0">团购中</div>
<div v-if="dataForm.groupBuyStatus === 5">已结束</div>
<div v-if="dataForm.groupBuyStatus === 10">已取消</div>
</el-form-item>
<el-form-item v-if="dataForm.groupBuyStatus === 10" label="取消原因" prop="cancelReason">
<div>{{ dataForm.cancelReason }}</div>
</el-form-item>
<el-form-item v-if="dataForm.topFlag === 1" label="置顶状态" prop="topFlag">
<div>已置顶</div>
</el-form-item>
<el-form-item v-if="dataForm.topFlag === 1" label="置顶时间" prop="topTime">
<div>{{ dataForm.topTime }}</div>
</el-form-item>
<el-form-item v-if="dataForm.shieldFlag === '1'" label="屏蔽状态" prop="shieldFlag">
<div>已屏蔽</div> <div>已屏蔽</div>
</el-form-item> </el-form-item>
<el-form-item v-if="dataForm.shieldFlag === '1'" label="屏蔽原因:" prop="shieldReason"> <el-form-item v-if="dataForm.shieldFlag === '1'" label="屏蔽原因" prop="shieldReason">
<div>{{ dataForm.shieldReason }}</div> <div>{{ dataForm.shieldReason }}</div>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template slot="footer"> <template slot="footer">
<el-button @click="visible = false">{{ $t('close') }}</el-button> <el-button @click="visible = false">{{ $t('close') }}</el-button>
</template> </template>
<el-dialog width="90%" title="报名列表" :visible.sync="innerVisible" append-to-body>
<el-table :data="signUpList" border style="width: 100%;">
<el-table-column prop="nickname" label="昵称" header-align="center" align="center"></el-table-column>
<el-table-column prop="mobile" label="联系电话" header-align="center" align="center"></el-table-column>
<el-table-column prop="signUpTime" label="报名时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="signUpStatus" label="是否完成交易" header-align="center" align="center" :formatter="signUpStatusFormatter"></el-table-column>
</el-table>
<el-pagination
:current-page="pageIndex"
:page-sizes="[10, 20, 50, 100]"
:page-size="limitVal"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandleNew"
@current-change="pageCurrentChangeHandleNew">
</el-pagination>
</el-dialog>
<el-dialog width="90%" title="评价列表" :visible.sync="evaluationVisible" append-to-body>
<el-table :data="evaluations.evaluationList" border style="width: 100%;">
<el-table-column prop="nickname" label="昵称" header-align="center" align="center"></el-table-column>
<el-table-column prop="evaluationContent" label="评价内容" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdTime" label="评价时间" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="scope.row.shieldFlag === 0" type="button" size="small" @click="shieldEvaluation(scope.row.id)">屏蔽</el-button>
<el-button v-if="scope.row.shieldFlag === 1" type="text" size="small">已屏蔽</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="evaluations.pageIndex"
:page-sizes="[10, 20, 50, 100]"
:page-size="evaluations.limitVal"
:total="evaluations.total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</el-dialog>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import 'element-ui/lib/theme-chalk/image.css'
export default { export default {
data () { data () {
return { return {
visible: false, visible: false,
innerVisible: false,
evaluationVisible: false,
dataForm: { dataForm: {
id: '', id: '',
content: '', topFlag: '',
reportUser: '', topTime: '',
reportUserMobile: '', groupBuyStatus: '',
anonymousFlag: '', cancelReason: '',
userId: '',
nickname: '',
userFace: '',
mobile: '',
deptId: '',
deptName: '',
parentDeptIds: '',
parentDeptNames: '',
allDeptIds: '',
allDeptNames: '',
delFlag: '',
shieldFlag: '', shieldFlag: '',
shieldReason: '', shieldReason: '',
revision: '', prices: [],
createdBy: '', images: []
createdTime: '', },
updatedBy: '', previewImgList: [],
updatedTime: '' signUpList: [],
order: '',
orderField: '',
pageIndex: 1,
limitVal: 10,
total: 0,
evaluations: {
evaluationList: [],
order: '',
orderField: '',
pageIndex: 1,
limitVal: 10,
total: 0
} }
} }
}, },
@ -73,10 +145,11 @@ export default {
this.$refs['dataForm'].resetFields() this.$refs['dataForm'].resetFields()
if (this.dataForm.id) { if (this.dataForm.id) {
this.getInfo() this.getInfo()
this.getSignUpList()
this.evaluationList()
} }
}) })
}, },
//
getInfo () { getInfo () {
this.$http.get(`/custom/groupbuyinfo/${this.dataForm.id}`).then(({ data: res }) => { this.$http.get(`/custom/groupbuyinfo/${this.dataForm.id}`).then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
@ -87,6 +160,75 @@ export default {
...res.data ...res.data
} }
}).catch(() => {}) }).catch(() => {})
},
clickImg (url) {
this.previewImgList = []
this.previewImgList.push(url)
},
pageSizeChangeHandleNew (val) {
this.pageIndex = 1
this.limitVal = val
this.getSignUpList()
},
pageCurrentChangeHandleNew (val) {
this.pageIndex = val
this.getSignUpList()
},
getSignUpList () {
this.$http.get('/custom/groupbuyinfo/signuplist', { params: { groupBuyId: this.dataForm.id, order: this.order, orderField: this.orderField, page: this.pageIndex, limit: this.limitVal }
}).then(({ data: res }) => {
if (res.code !== 0) {
this.signUpList = []
this.total = 0
return this.$message.error(res.msg)
}
this.signUpList = res.data.list
this.total = res.data.total
}).catch(() => {})
},
signUpStatusFormatter (row, column) {
let signUpStatus = row.signUpStatus
if (signUpStatus === 0) {
return '否'
} else if (signUpStatus === 5) {
return '是'
}
},
pageSizeChangeHandle (val) {
this.evaluations.pageIndex = 1
this.evaluations.limitVal = val
this.evaluationList()
},
pageCurrentChangeHandle (val) {
this.evaluations.pageIndex = val
this.evaluationList()
},
evaluationList () {
this.$http.get('/custom/groupbuyinfo/evaluationlist', { params: { groupBuyId: this.dataForm.id, order: this.evaluations.order, orderField: this.evaluations.orderField, page: this.evaluations.pageIndex, limit: this.evaluations.limitVal }
}).then(({ data: res }) => {
if (res.code !== 0) {
this.evaluations.evaluationList = []
this.evaluations.total = 0
return this.$message.error(res.msg)
}
this.evaluations.evaluationList = res.data.list
this.evaluations.total = res.data.total
}).catch(() => {})
},
shieldEvaluation (val) {
this.$http['post']('/custom/groupbuyinfo/shieldEvaluation', [val]).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.evaluationList()
}
})
}).catch(() => {})
} }
} }
} }

83
src/views/modules/custom/groupbuyinfo.vue

@ -3,7 +3,18 @@
<div class="mod-custom__groupbuyinfo}"> <div class="mod-custom__groupbuyinfo}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item label="标题" prop="groupBuyTitle"> <el-form-item label="标题" prop="groupBuyTitle">
<el-input v-model.trim="dataForm.groupBuyTitle" placeholder="标题" clearable></el-input> <el-input v-model.trim="dataForm.groupBuyTitle" placeholder="请输入关键字" clearable></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select style="width: 130px" v-model="dataForm.groupBuyStatus"
clearable
placeholder="请选择">
<el-option v-for="item in stateOptions"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="发布时间" prop="startTime"> <el-form-item label="发布时间" prop="startTime">
<el-date-picker <el-date-picker
@ -33,16 +44,16 @@
</el-form> </el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;"> <el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column label="序号" type="index" show-overflow-tooltip align="center" width="50"></el-table-column> <el-table-column label="序号" type="index" show-overflow-tooltip align="center" width="50"></el-table-column>
<el-table-column prop="groupBuyTitle" label="标题" header-align="center" align="center" width="300"></el-table-column> <el-table-column show-overflow-tooltip prop="groupBuyTitle" label="标题" header-align="center" align="center" width="260px"></el-table-column>
<el-table-column prop="groupBuyMobile" label="联系电话" header-align="center" align="center" width="150"></el-table-column> <el-table-column show-overflow-tooltip prop="groupBuyContent" label="内容" header-align="center" align="center" width="300px"></el-table-column>
<el-table-column show-overflow-tooltip prop="groupBuyContent" label="发布内容" header-align="center" align="center" width="300px"></el-table-column> <el-table-column prop="groupBuyStatus" label="状态" header-align="center" align="center" width="100px" :formatter="statusFormat"></el-table-column>
<el-table-column prop="groupBuyTime" label="团购时间" header-align="center" align="center" width="200px"></el-table-column> <el-table-column prop="createdTime" label="发布时间" header-align="center" align="center" width="160px"></el-table-column>
<el-table-column prop="createdTime" label="发布时间" header-align="center" align="center" width="200px"></el-table-column> <el-table-column prop="topFlag" label="置顶状态" header-align="center" align="center" width="100px" :formatter="topFlagFormat"></el-table-column>
<el-table-column prop="sort" label="排序" header-align="center" align="center" width="100"></el-table-column> <el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center">
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="mini" @click="groupBuyDetailHandle(scope.row.id)">查看</el-button> <el-button type="text" size="mini" @click="groupBuyDetailHandle(scope.row.id)">查看</el-button>
<el-button v-if="scope.row.shieldFlag === '0'" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button> <el-button v-if="scope.row.topFlag === 0" type="text" size="small" @click="top(scope.row.id, 1)">{{ '置顶' }}</el-button>
<el-button v-if="scope.row.topFlag === 1" type="text" size="small" @click="top(scope.row.id, 0)">{{ '取消置顶' }}</el-button>
<el-button v-if="scope.row.shieldFlag === '0'" <el-button v-if="scope.row.shieldFlag === '0'"
type="text" type="text"
size="small" size="small"
@ -86,9 +97,20 @@ export default {
}, },
dataForm: { dataForm: {
groupBuyTitle: '', groupBuyTitle: '',
groupBuyStatus: '',
startTime: '', startTime: '',
endTime: '' endTime: ''
}, },
stateOptions: [{
id: '0',
name: '团购中'
}, {
id: '5',
name: '已结束'
}, {
id: '10',
name: '已取消'
}],
pickerBeginDateBefore: { pickerBeginDateBefore: {
disabledDate: time => { disabledDate: time => {
let beginDateVal = this.dataForm.startTime let beginDateVal = this.dataForm.startTime
@ -145,6 +167,49 @@ export default {
this.$refs.groupbuyDetail.dataForm.id = goupBuyId this.$refs.groupbuyDetail.dataForm.id = goupBuyId
this.$refs.groupbuyDetail.init() this.$refs.groupbuyDetail.init()
}) })
},
topFlagFormat: function (row, column) {
let topFlag = row.topFlag
if (topFlag === 0) {
return '未置顶'
} else if (topFlag === 1) {
return '已置顶'
}
},
statusFormat: function (row, column) {
let groupBuyStatus = row.groupBuyStatus
if (groupBuyStatus === 0) {
return '团购中'
} else if (groupBuyStatus === 5) {
return '已结束'
} else if (groupBuyStatus === 10) {
return '已取消'
}
},
top (id, topFlag) {
let title = '置顶'
if (topFlag === '0') {
title = '取消置顶'
}
this.$confirm(this.$t('prompt.info', { 'handle': title }), this.$t(title), {
confirmButtonText: this.$t('confirm'),
cancelButtonText: this.$t('cancel'),
type: 'warning'
}).then(() => {
this.$http['post']('/custom/groupbuyinfo/top', { 'id': id, 'topFlag': topFlag }).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
}
})
this.getDataList()
}).catch(() => {})
}).catch(() => {})
} }
} }
} }

Loading…
Cancel
Save