Browse Source

积分商城后台管理

master
wanggongfeng 4 years ago
parent
commit
d6ef0916c6
  1. 13
      src/views/modules/points/acitveproductdept.vue
  2. 59
      src/views/modules/points/acitveproductexchange.vue
  3. 130
      src/views/modules/points/acitveproductinfo-add-or-update.vue
  4. 33
      src/views/modules/points/activepointlog.vue

13
src/views/modules/points/acitveproductdept.vue

@ -16,17 +16,16 @@
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column label="序号" width="50px" align="center">
<template slot-scope="scope">
{{scope.$index+1}}
</template>
</el-table-column>
<el-table-column prop="id" label="id" header-align="center" align="center"></el-table-column>
<el-table-column prop="productId" label="商品ID" header-align="center" align="center"></el-table-column>
<el-table-column prop="deptId" label="部门ID" header-align="center" align="center"></el-table-column>
<el-table-column prop="delFlag" label="删除标记 0:未删除,1:已删除" header-align="center" align="center"></el-table-column>
<el-table-column prop="revision" label="乐观锁" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdBy" 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 prop="updatedBy" label="更新人" header-align="center" align="center"></el-table-column>
<el-table-column prop="updatedTime" label="更新时间" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<el-table-column v-if="false" :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="$hasPermission('points:acitveproductdept:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('points:acitveproductdept:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>

59
src/views/modules/points/acitveproductexchange.vue

@ -1,12 +1,15 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-points__acitveproductexchange}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input>
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataListSearch()">
<el-form-item label="商品名称" prop="productName" label-width="90px">
<el-input v-model="dataForm.productName" placeholder="商品名称" clearable @keyup.native="btKeyUpproductName"></el-input>
</el-form-item>
<el-form-item label="兑换人" prop="userName" label-width="90px">
<el-input v-model="dataForm.userName" placeholder="兑换人" clearable @keyup.native="btKeyUpuserName"></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
<el-button @click="getDataListSearch()">{{ $t('query') }}</el-button>
</el-form-item>
<el-form-item>
<el-button v-if="$hasPermission('points:acitveproductexchange:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button>
@ -16,25 +19,21 @@
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="id" label="兑换id" header-align="center" align="center"></el-table-column>
<el-table-column prop="userId" label="兑换人id" header-align="center" align="center"></el-table-column>
<el-table-column prop="userName" label="兑换人姓名" header-align="center" align="center"></el-table-column>
<el-table-column prop="productId" label="商品id" header-align="center" align="center"></el-table-column>
<el-table-column prop="productName" label="商品名称" header-align="center" align="center"></el-table-column>
<el-table-column prop="exchangeTime" label="兑换时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="exchangeState" label="兑换状态0:未核销,1:已核销" header-align="center" align="center"></el-table-column>
<el-table-column prop="checkSysUserId" label="核销人(工作人员)" header-align="center" align="center"></el-table-column>
<el-table-column prop="qrCodeUrl" label="核销二维码地址" header-align="center" align="center"></el-table-column>
<el-table-column prop="checkSysUserName" label="核销人姓名(工作人员)" header-align="center" align="center"></el-table-column>
<el-table-column prop="checkTime" label="核销时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="delFlag" label="删除标记 0:未删除,1:已删除" header-align="center" align="center"></el-table-column>
<el-table-column prop="revision" label="乐观锁" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdBy" 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 prop="updatedBy" label="更新人" header-align="center" align="center"></el-table-column>
<el-table-column prop="updatedTime" label="更新时间" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<!--<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>-->
<el-table-column label="序号" width="50px" align="center">
<template slot-scope="scope">
{{scope.$index+1}}
</template>
</el-table-column>
<el-table-column prop="userName" label="兑换人姓名" header-align="center" align="center" min-width="150" show-overflow-tooltip></el-table-column>
<el-table-column prop="productName" label="商品名称" header-align="center" align="center" min-width="150" show-overflow-tooltip></el-table-column>
<el-table-column prop="exchangeTime" label="兑换时间" header-align="center" align="center" min-width="170" show-overflow-tooltip></el-table-column>
<el-table-column prop="exchangeStateName" label="兑换状态" header-align="center" align="center" min-width="150" show-overflow-tooltip></el-table-column>
<el-table-column prop="checkSysUserName" label="核销人" header-align="center" align="center" min-width="150" show-overflow-tooltip></el-table-column>
<el-table-column v-if="false" prop="qrCodeUrl" label="核销二维码地址" header-align="center" align="center" min-width="150" show-overflow-tooltip></el-table-column>
<el-table-column prop="checkTime" label="核销时间" header-align="center" align="center" min-width="150" show-overflow-tooltip></el-table-column>
<el-table-column prop="createdTime" label="创建时间" header-align="center" align="center" min-width="170" show-overflow-tooltip></el-table-column>
<el-table-column v-if="false" :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="$hasPermission('points:acitveproductexchange:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('points:acitveproductexchange:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
@ -70,12 +69,24 @@ export default {
deleteIsBatch: true
},
dataForm: {
id: ''
id: '',
productName: '',
userName: ''
}
}
},
components: {
AddOrUpdate
},
methods: {
btKeyUpproductName (e) {
e.target.value = e.target.value.replace(/[`~!@#$%^&*()_+=<>?:"{}|·~!@#¥%……&*()——+={}|《》?:“”【】、;‘’,。、]/g, '')
this.dataForm.productName = e.target.value
},
btKeyUpuserName (e) {
e.target.value = e.target.value.replace(/[`~!@#$%^&*()_+=<>?:"{}|·~!@#¥%……&*()——+={}|《》?:“”【】、;‘’,。、]/g, '')
this.dataForm.userName = e.target.value
}
}
}
</script>

130
src/views/modules/points/acitveproductinfo-add-or-update.vue

@ -10,7 +10,7 @@
<el-form-item label="积分" prop="points">
<el-input-number v-model="dataForm.points" :min="0" :max="1000000000" label="积分" style="width: 200px"></el-input-number>
</el-form-item>
<el-form-item label="显示图片" prop="headPic">
<el-form-item label="显示图片" prop="headPic" v-loading="loading">
<el-upload
class="avatar-uploader"
:action="uploadUrl"
@ -19,26 +19,8 @@
:before-upload="beforeAvatarUpload">
<img v-if="dataForm.headPic" :src="dataForm.headPic" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件且不超过500kb</div>
</el-upload>
<el-upload
ref="upload"
:action="uploadUrl"
:class="{hide:hideUpload}"
list-type="picture-card"
:file-list="dataForm.images"
:limit=1
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:on-success="handleAvatarSuccess"
:on-error="handelError"
:before-upload="beforeAvatarUpload"
style="width:480px">
<i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
<div><font color="gray">1张图</font></div>
</el-form-item>
<el-form-item label="兑换开始时间" prop="startTime">
<el-date-picker
@ -97,7 +79,6 @@ export default {
content: '',
points: '',
headPic: '',
images: [],
startTime: '',
endTime: '',
state: '',
@ -117,10 +98,7 @@ export default {
options: [],
isAble: false,
uploadUrl: '',
loading: false,
dialogImageUrl: '',
dialogVisible: false,
hideUpload: false
loading: false
}
},
computed: {
@ -136,7 +114,7 @@ export default {
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
headPic: [
{ required: false, message: this.$t('validate.required'), trigger: 'blur' }
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
startTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
@ -161,7 +139,8 @@ export default {
},
created: function () {
this.getOptions()
this.uploadUrl = `${window.SITE_CONFIG['apiURL']}/oss/file/uploadImg?token=${Cookies.get('token')}`
// this.uploadUrl = `${window.SITE_CONFIG['apiURL']}/oss/file/uploadImg?token=${Cookies.get('token')}`
this.uploadUrl = `${window.SITE_CONFIG['apiURL']}/oss/file/upload?token=${Cookies.get('token')}`
// this.uploadUrl = `http://219.146.91.110:10000/epdc-api/oss/file/uploadImg?token=${Cookies.get('token')}`
},
methods: {
@ -200,64 +179,13 @@ export default {
this.dataForm.deptId = this.dataForm.allDeptIds.substring(this.dataForm.allDeptIds.lastIndexOf(',')).replace(',', '')
this.dataForm.deptName = this.dataForm.allDeptNames.substring(this.dataForm.allDeptNames.lastIndexOf('-')).replace('-', '')
},
beforeAvatarUpload (file) {
if (this.dataForm.images.length === 1) {
this.$message.error('最多上传1张图片!')
return false
}
this.loading = true
this.isAble = true
const isJPG = file.type === 'image/jpeg'
const isPNG = file.type === 'image/png'
// const isLt1M = file.size / 1024 / 1024 < 1
//
if (!isJPG && !isPNG) {
this.$message.error('上传文件必须是jpg、png格式!')
this.loading = false
this.isAble = false
return false
}
},
//
handleAvatarSuccess (res, file) {
this.loading = false
this.isAble = false
if (res === null || res.data === null || res.data.imgUrl === null) {
this.$message.error('文件上传失败!')
this.handleErrorRemove(file)
return false
}
this.dataForm.images.push({ url: res.data.imgUrl, thumbnail: res.data.thumbnail, fileType: 1 })
this.hideUpload = this.dataForm.images.length >= 1
// 使 to do
this.dataForm.headPic = res.data.imgUrl
},
handleErrorRemove (file) {
//
let fileList = this.$refs.upload.uploadFiles
for (var i = 0; i < fileList.length; i++) {
let item = fileList[i]
if (item.url === file.url) {
fileList.splice(i, 1)
}
}
},
handelError () {
this.loading = false
this.isAble = false
this.$message.error('上传文件失败!')
},
handleRemove (file, fileList) {
for (var i = 0; i < this.dataForm.images.length; i++) {
let item = this.dataForm.images[i]
if (item.url === file.url) {
this.dataForm.images.splice(i, 1)
}
}
this.hideUpload = this.dataForm.images.length >= 1
this.dataForm.headPic = res.data.url
},
handlePictureCardPreview (file) {
this.dialogImageUrl = file.url
this.dialogVisible = true
beforeAvatarUpload (file) {
this.loading = true
},
//
getInfo () {
@ -277,6 +205,20 @@ export default {
if (!valid) {
return false
}
//
let startTime = new Date(this.dataForm.startTime)
let endTime = new Date(this.dataForm.endTime)
if (startTime.getTime() > endTime.getTime()) {
this.$message({
message: '兑换开始时间大于结束时间、请修改后提交!',
type: 'error',
duration: 2000,
onClose: () => {
return false
}
})
return false
}
this.$http[!this.dataForm.id ? 'post' : 'put']('/points/acitveproductinfo/', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
@ -297,7 +239,27 @@ export default {
}
</script>
<style>
.hide .el-upload--picture-card {
display: none;
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
</style>

33
src/views/modules/points/activepointlog.vue

@ -2,8 +2,11 @@
<el-card shadow="never" class="aui-card--fill">
<div class="mod-points__activepointlog}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input>
<el-form-item label="积分操作类型" prop="operationType">
<el-select v-model="dataForm.operationType" placeholder="积分操作类型" clearable>
<el-option v-for="item in operationTypeArr" :key="item.dictValue" :label="item.dictName" :value="item.dictValue">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
@ -16,22 +19,21 @@
</el-form-item>
</el-form>
<el-table v-loading="dataListLoading" :data="dataList" border @selection-change="dataListSelectionChangeHandle" style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="id" label="行为id" header-align="center" align="center"></el-table-column>
<!--<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>-->
<el-table-column label="序号" width="50px" align="center">
<template slot-scope="scope">
{{scope.$index+1}}
</template>
</el-table-column>
<el-table-column prop="userId" label="用户id" header-align="center" align="center"></el-table-column>
<el-table-column prop="operationType" label="积分操作类型(0-减积分,1-加积分)" header-align="center" align="center"></el-table-column>
<el-table-column prop="operationTypeName" label="积分操作类型" header-align="center" align="center"></el-table-column>
<el-table-column prop="points" label="积分" header-align="center" align="center"></el-table-column>
<el-table-column prop="operationCode" label="操作编码" header-align="center" align="center"></el-table-column>
<el-table-column prop="operationDesc" label="操作描述" header-align="center" align="center"></el-table-column>
<el-table-column prop="operationTime" label="操作时间" header-align="center" align="center"></el-table-column>
<el-table-column prop="lavePoints" label="剩余积分" header-align="center" align="center"></el-table-column>
<el-table-column prop="delFlag" label="删除标记 0:未删除,1:已删除" header-align="center" align="center"></el-table-column>
<el-table-column prop="revision" label="乐观锁" header-align="center" align="center"></el-table-column>
<el-table-column prop="createdBy" 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 prop="updatedBy" label="更新人" header-align="center" align="center"></el-table-column>
<el-table-column prop="updatedTime" label="更新时间" header-align="center" align="center"></el-table-column>
<el-table-column :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<el-table-column v-if="false" :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<template slot-scope="scope">
<el-button v-if="$hasPermission('points:activepointlog:update')" type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">{{ $t('update') }}</el-button>
<el-button v-if="$hasPermission('points:activepointlog:delete')" type="text" size="small" @click="deleteHandle(scope.row.id)">{{ $t('delete') }}</el-button>
@ -67,8 +69,13 @@ export default {
deleteIsBatch: true
},
dataForm: {
id: ''
}
id: '',
operationType: ''
},
operationTypeArr: [
{ dictValue: '1', dictName: '加积分' },
{ dictValue: '0', dictName: '减积分' }
]
}
},
components: {

Loading…
Cancel
Save