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-item>
</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 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="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="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="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="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 v-if="false" :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<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">
<template slot-scope="scope"> <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: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> <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> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<div class="mod-points__acitveproductexchange}"> <div class="mod-points__acitveproductexchange}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataListSearch()">
<el-form-item> <el-form-item label="商品名称" prop="productName" label-width="90px">
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input> <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-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-form-item> <el-form-item>
<el-button v-if="$hasPermission('points:acitveproductexchange:save')" type="primary" @click="addOrUpdateHandle()">{{ $t('add') }}</el-button> <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-item>
</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 type="selection" header-align="center" align="center" width="50"></el-table-column> <!--<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 label="序号" width="50px" align="center">
<el-table-column prop="userId" label="兑换人id" header-align="center" align="center"></el-table-column> <template slot-scope="scope">
<el-table-column prop="userName" label="兑换人姓名" header-align="center" align="center"></el-table-column> {{scope.$index+1}}
<el-table-column prop="productId" label="商品id" header-align="center" align="center"></el-table-column> </template>
<el-table-column prop="productName" label="商品名称" header-align="center" align="center"></el-table-column> </el-table-column>
<el-table-column prop="exchangeTime" label="兑换时间" header-align="center" align="center"></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="exchangeState" label="兑换状态0:未核销,1:已核销" header-align="center" align="center"></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="checkSysUserId" label="核销人(工作人员)" header-align="center" align="center"></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="qrCodeUrl" label="核销二维码地址" header-align="center" align="center"></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"></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 prop="checkTime" label="核销时间" header-align="center" align="center"></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="delFlag" label="删除标记 0:未删除,1:已删除" header-align="center" align="center"></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="revision" label="乐观锁" header-align="center" align="center"></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 prop="createdBy" label="创建人" header-align="center" align="center"></el-table-column> <el-table-column v-if="false" :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<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">
<template slot-scope="scope"> <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: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> <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 deleteIsBatch: true
}, },
dataForm: { dataForm: {
id: '' id: '',
productName: '',
userName: ''
} }
} }
}, },
components: { components: {
AddOrUpdate 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> </script>

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

@ -10,7 +10,7 @@
<el-form-item label="积分" prop="points"> <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-input-number v-model="dataForm.points" :min="0" :max="1000000000" label="积分" style="width: 200px"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="显示图片" prop="headPic"> <el-form-item label="显示图片" prop="headPic" v-loading="loading">
<el-upload <el-upload
class="avatar-uploader" class="avatar-uploader"
:action="uploadUrl" :action="uploadUrl"
@ -19,26 +19,8 @@
:before-upload="beforeAvatarUpload"> :before-upload="beforeAvatarUpload">
<img v-if="dataForm.headPic" :src="dataForm.headPic" class="avatar"> <img v-if="dataForm.headPic" :src="dataForm.headPic" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i> <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>
<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>
<el-form-item label="兑换开始时间" prop="startTime"> <el-form-item label="兑换开始时间" prop="startTime">
<el-date-picker <el-date-picker
@ -97,7 +79,6 @@ export default {
content: '', content: '',
points: '', points: '',
headPic: '', headPic: '',
images: [],
startTime: '', startTime: '',
endTime: '', endTime: '',
state: '', state: '',
@ -117,10 +98,7 @@ export default {
options: [], options: [],
isAble: false, isAble: false,
uploadUrl: '', uploadUrl: '',
loading: false, loading: false
dialogImageUrl: '',
dialogVisible: false,
hideUpload: false
} }
}, },
computed: { computed: {
@ -136,7 +114,7 @@ export default {
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } { required: true, message: this.$t('validate.required'), trigger: 'blur' }
], ],
headPic: [ headPic: [
{ required: false, message: this.$t('validate.required'), trigger: 'blur' } { required: true, message: this.$t('validate.required'), trigger: 'blur' }
], ],
startTime: [ startTime: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' } { required: true, message: this.$t('validate.required'), trigger: 'blur' }
@ -161,7 +139,8 @@ export default {
}, },
created: function () { created: function () {
this.getOptions() 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')}` // this.uploadUrl = `http://219.146.91.110:10000/epdc-api/oss/file/uploadImg?token=${Cookies.get('token')}`
}, },
methods: { methods: {
@ -200,64 +179,13 @@ export default {
this.dataForm.deptId = this.dataForm.allDeptIds.substring(this.dataForm.allDeptIds.lastIndexOf(',')).replace(',', '') this.dataForm.deptId = this.dataForm.allDeptIds.substring(this.dataForm.allDeptIds.lastIndexOf(',')).replace(',', '')
this.dataForm.deptName = this.dataForm.allDeptNames.substring(this.dataForm.allDeptNames.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) { handleAvatarSuccess (res, file) {
this.loading = false this.loading = false
this.isAble = false this.dataForm.headPic = res.data.url
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
}, },
handlePictureCardPreview (file) { beforeAvatarUpload (file) {
this.dialogImageUrl = file.url this.loading = true
this.dialogVisible = true
}, },
// //
getInfo () { getInfo () {
@ -277,6 +205,20 @@ export default {
if (!valid) { if (!valid) {
return false 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 }) => { this.$http[!this.dataForm.id ? 'post' : 'put']('/points/acitveproductinfo/', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg) return this.$message.error(res.msg)
@ -297,7 +239,27 @@ export default {
} }
</script> </script>
<style> <style>
.hide .el-upload--picture-card { .avatar-uploader .el-upload {
display: none; 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> </style>

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

@ -2,8 +2,11 @@
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<div class="mod-points__activepointlog}"> <div class="mod-points__activepointlog}">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item> <el-form-item label="积分操作类型" prop="operationType">
<el-input v-model="dataForm.id" placeholder="id" clearable></el-input> <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-form-item> <el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button> <el-button @click="getDataList()">{{ $t('query') }}</el-button>
@ -16,22 +19,21 @@
</el-form-item> </el-form-item>
</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 type="selection" header-align="center" align="center" width="50"></el-table-column> <!--<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 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="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="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="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="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="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="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="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 v-if="false" :label="$t('handle')" fixed="right" header-align="center" align="center" width="150">
<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">
<template slot-scope="scope"> <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: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> <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 deleteIsBatch: true
}, },
dataForm: { dataForm: {
id: '' id: '',
} operationType: ''
},
operationTypeArr: [
{ dictValue: '1', dictName: '加积分' },
{ dictValue: '0', dictName: '减积分' }
]
} }
}, },
components: { components: {

Loading…
Cancel
Save