修改红包等
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
<template>
|
||||
<el-dialog :title="title" :visible.sync="Visible" width="700px" center class="ac-dialog" :close-on-click-modal="false" @close="close">
|
||||
<el-form :inline="true" :rules="rules" :model="form" ref="ruleForm" class="demo-form-inline" label-width="150px" label-position="right">
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<el-form-item label="用户Id" prop="userId">
|
||||
<el-input placeholder="请输入用户Id" v-model="form.userId" style="width: 400px" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<el-form-item label="图片">
|
||||
<UploadImg @changeImgUrl="changeCoverImgUrl" @onRemove="onRemoveImage('img', $event)" :img="form.img"></UploadImg>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<el-form-item label="系统消息标题">
|
||||
<el-input placeholder="请输入系统消息标题" v-model="form.title" style="width: 400px" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<el-form-item label="跳转链接" prop="content">
|
||||
<el-input placeholder="请输入跳转链接" v-model="form.link" style="width: 400px" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<el-form-item label="内容" prop="content">
|
||||
<el-input placeholder="请输入内容" v-model="form.content" type="textarea" style="width: 400px" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="Visible = false"> 取 消 </el-button>
|
||||
<el-button type="primary" @click="submit('ruleForm')"> 确 定 </el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import moment from 'moment'
|
||||
import UploadImg from '@/components/UploadImg/index'
|
||||
import { msgAdd, msgUpdate } from '@/api/activity/msg'
|
||||
|
||||
export default {
|
||||
name: 'AddOrEdit',
|
||||
props: ['data'],
|
||||
components: {
|
||||
UploadImg
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
Visible: true,
|
||||
title: '',
|
||||
// 表单数据
|
||||
form: {
|
||||
img: undefined,
|
||||
userId: undefined,
|
||||
content: undefined, // "string",内容
|
||||
title: undefined // "string",标题
|
||||
},
|
||||
rules: {
|
||||
content: [{ required: true, message: '必填', trigger: 'blur' }],
|
||||
userId: [{ required: true, message: '必填', trigger: 'blur' }]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.title = this.data.title
|
||||
if (this.title === '编辑') {
|
||||
this.form = { ...this.data.data }
|
||||
this.form.start = moment(this.data.data.start).utcOffset(480).format('YYYY-MM-DDTHH:mm:ss') + '+08:00'
|
||||
this.form.end = moment(this.data.data.end).utcOffset(480).format('YYYY-MM-DDTHH:mm:ss') + '+08:00'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// TODO:新增消息列表数据
|
||||
add(data) {
|
||||
msgAdd(data).then(res => {
|
||||
if (res.code === 200) {
|
||||
this.$message.success('新增成功')
|
||||
this.Visible = false
|
||||
} else {
|
||||
this.$message.error('新增失败')
|
||||
}
|
||||
})
|
||||
},
|
||||
// TODO:编辑消息列表数据
|
||||
update(data) {
|
||||
msgUpdate(data).then(res => {
|
||||
if (res.code === 200) {
|
||||
this.$message.success('更新成功')
|
||||
this.Visible = false
|
||||
} else {
|
||||
this.$message.error('更新失败')
|
||||
}
|
||||
})
|
||||
},
|
||||
changeCoverImgUrl(data) {
|
||||
this.form.img = data
|
||||
},
|
||||
// 移除图片地址到form表单
|
||||
onRemoveImage(key, type) {
|
||||
if (type) {
|
||||
this.form[key].type = ''
|
||||
} else {
|
||||
this.form[key] = ''
|
||||
}
|
||||
},
|
||||
// 提交按钮
|
||||
submit(formName) {
|
||||
this.$refs[formName].validate(valid => {
|
||||
if (valid) {
|
||||
this.form.userId = +this.form.userId
|
||||
const data = { ...this.form }
|
||||
if (this.title === '新增') {
|
||||
this.add(data)
|
||||
} else if (this.title === '编辑') {
|
||||
this.update(data)
|
||||
}
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 关闭编辑
|
||||
close() {
|
||||
this.$emit('close')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
<template>
|
||||
<div class="hongbao-bg">
|
||||
<el-form :inline="true" :model="form" ref="ruleForm" label-width="150px" label-position="right">
|
||||
<el-row :gutter="24">
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<el-form-item label="展示开启" prop="enabled">
|
||||
<el-switch v-model="form.enabled" active-color="#13ce66" inactive-color="#ff4949" active-text="开启"
|
||||
inactive-text="关闭"></el-switch>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<el-form-item label="发放金币总数" prop="content">
|
||||
<el-input placeholder="请输入总数" v-model.number="form.dailyLimit" style="width: 400px">
|
||||
<template #append>
|
||||
<span>金币</span>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||
<el-form-item :label="`第${i + 1}次领取`" size="mini" v-for="(ru, i) in form.rule" :key="i">
|
||||
<el-form-item label="间隔:" size="mini" label-width="50">
|
||||
<el-input placeholder="单位(s)" v-model.number="ru.interval" style="width: 120px">
|
||||
<template #append>
|
||||
<span>秒</span>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="最小:" size="mini" label-width="50">
|
||||
<el-input placeholder="该次领取最小值" v-model.number="ru.min" style="width: 150px">
|
||||
<template #append>
|
||||
<span>金币</span>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="最大:" size="mini" label-width="50">
|
||||
<el-input placeholder="该次领取最大值" v-model.number="ru.max" style="width: 150px">
|
||||
<template #append>
|
||||
<span>金币</span>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-button icon="el-icon-delete" type="danger" size="mini" @click="delRule(i)"></el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div style="margin-left: 100px;">
|
||||
<el-button type="text" icon="el-icon-circle-plus-outline" @click="addRule">新增规则</el-button>
|
||||
<el-button type="primary" @click="submit"> 确 定 </el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { updateConfig, getConfig } from '@/api/activity/msg'
|
||||
export default {
|
||||
name: 'Hongbao',
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
enabled: true,
|
||||
interval: 600,
|
||||
dailyLimit: 200,
|
||||
rule: []
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isLastRuleAvailable() {
|
||||
if (!this.form.rule || !this.form.rule.length) return true
|
||||
const lastRule = this.form.rule[this.form.rule.length - 1]
|
||||
return lastRule.interval && lastRule.min && lastRule.max
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.init()
|
||||
},
|
||||
methods: {
|
||||
async init() {
|
||||
const res = await getConfig()
|
||||
this.form = res.data
|
||||
this.form.dailyLimit = (res.data.dailyLimit || 0) / 100
|
||||
if (this.form.rule) {
|
||||
this.form.rule = this.form.rule.map(v => ({ ...v, min: v.min / 100, max: v.max / 100 }))
|
||||
}
|
||||
},
|
||||
async submit() {
|
||||
if (!this.isLastRuleAvailable) {
|
||||
this.$message.error('请完善最后一项规则或者删除')
|
||||
return
|
||||
}
|
||||
const form = {
|
||||
...this.form,
|
||||
dailyLimit: this.form.dailyLimit * 100
|
||||
}
|
||||
if (this.form.rule) {
|
||||
form.rule = this.form.rule.map(v => ({ ...v, min: v.min * 100, max: v.max * 100 }))
|
||||
}
|
||||
await updateConfig(form)
|
||||
this.$message.success('修改成功')
|
||||
},
|
||||
addRule() {
|
||||
if (!this.isLastRuleAvailable) {
|
||||
this.$message.error('请先完善上一项规则')
|
||||
return
|
||||
}
|
||||
const rule = {
|
||||
min: null,
|
||||
max: null,
|
||||
interval: null
|
||||
}
|
||||
this.form.rule = this.form.rule || []
|
||||
this.form.rule.push(rule)
|
||||
},
|
||||
delRule(i) {
|
||||
this.form.rule.splice(i, 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.hongbao-bg {
|
||||
height: 80vh;
|
||||
background-color: #fff;
|
||||
padding: 50px 100px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,123 @@
|
||||
<template>
|
||||
<div class="hongbao-list">
|
||||
<ConfigTable
|
||||
ref="ct"
|
||||
:searchConfig="searchConfig"
|
||||
:tableColumns="tableColumns"
|
||||
:tableData="list"
|
||||
:total="total"
|
||||
@change="loadData"
|
||||
@delete="delRow"
|
||||
@edit="editRow"></ConfigTable>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ConfigTable from '@/components/ConfigTable'
|
||||
import { getRecordList } from '@/api/activity/msg'
|
||||
import { BeiJingTime } from '@/filters'
|
||||
|
||||
const prizeTypeOptions = [
|
||||
{ label: '金币', value: 1 },
|
||||
{ label: '积分', value: 2 }
|
||||
]
|
||||
|
||||
const searchConfig = [
|
||||
{ type: 'number', placeholder: '输入用户ID查询', key: 'userId' },
|
||||
{
|
||||
type: 'select',
|
||||
placeholder: '奖励类型',
|
||||
key: 'prizeType',
|
||||
options: prizeTypeOptions
|
||||
},
|
||||
// { type: "date", placeholder: "请选择日期", key: "day", format: 'YYYY-MM-DD' },
|
||||
{ type: 'daterange', startPlaceholder: '开始日期', endPlaceholder: '结束日期', key: 'startTimeAndEndTime', keys: ['startTime', 'endTime'], format: 'YYYY-MM-DD' },
|
||||
{ type: 'button', icon: 'search', placeholder: '搜索', key: 'search' }
|
||||
]
|
||||
|
||||
const tableColumns = (_this) => [
|
||||
{ name: 'id', key: 'id', fixed: 'fixed' },
|
||||
{ name: '用户id', key: 'userId', fixed: 'fixed' },
|
||||
{ name: '用户昵称', key: 'nickname' },
|
||||
{ name: '日期', key: 'day' },
|
||||
{ name: '奖励类型', key: 'prizeType', valueHandler: (val) => (prizeTypeOptions.find(v => v.value == val) || {}).label },
|
||||
{ name: '奖励数量(金币)', key: 'amount', valueHandler: (val) => val / 100 },
|
||||
{ name: '领取时间', key: 'createdAt', valueHandler: (val) => BeiJingTime(val) }
|
||||
]
|
||||
|
||||
export default {
|
||||
name: 'HongbaoList',
|
||||
components: { ConfigTable },
|
||||
data() {
|
||||
return {
|
||||
searchConfig,
|
||||
total: 0,
|
||||
list: [],
|
||||
appOpts: []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
tableColumns() {
|
||||
return tableColumns(this)
|
||||
}
|
||||
},
|
||||
watch: {},
|
||||
mounted() { },
|
||||
methods: {
|
||||
async loadData(params) {
|
||||
try {
|
||||
const newParams = {}
|
||||
Object.keys(params).forEach((key) => {
|
||||
if (params[key] !== '') newParams[key] = params[key]
|
||||
})
|
||||
const r = await getRecordList(newParams)
|
||||
const data = r.data
|
||||
this.total = data.total
|
||||
this.list = data.list
|
||||
} catch (error) {
|
||||
console.error('查询失败:', error)
|
||||
}
|
||||
},
|
||||
async delRow(row) {
|
||||
try {
|
||||
await this.$confirm('您确定要删除该条数据吗?', '操作提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
const r = await transApi.delAiTextImage({ id: row.id })
|
||||
if (r.code === 200) {
|
||||
this.$message.success('已删除')
|
||||
this.$refs.ct.search()
|
||||
} else {
|
||||
this.$message.error(r.tip)
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
},
|
||||
async editRow(row) {
|
||||
this.$refs.editDialog.open(row)
|
||||
},
|
||||
async callEdit(r) {
|
||||
try {
|
||||
console.log(r)
|
||||
const res = await transApi.updateAiTextImage(r.data)
|
||||
if (res.code !== 200) {
|
||||
this.$message.error(res.data)
|
||||
} else {
|
||||
this.$message.success(r.isEdit ? '退款成功' : '')
|
||||
this.$refs.editDialog.close()
|
||||
setTimeout(() => {
|
||||
this.$refs.ct.search()
|
||||
}, 200)
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('call edit error:', error)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
@@ -16,6 +16,13 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :lg="24" :md="24" :sm="24" :xl="24" :xs="24">
|
||||
<el-form-item label="跳转链接">
|
||||
<el-input v-model="form.jumpLink" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div class="dialog-footer" slot="footer">
|
||||
<el-button @click="Visible=false">取 消</el-button>
|
||||
@@ -37,7 +44,8 @@ export default {
|
||||
// 表单数据
|
||||
form: {
|
||||
id: undefined,
|
||||
topRank: undefined
|
||||
topRank: undefined,
|
||||
jumpLink: undefined
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -53,7 +61,8 @@ export default {
|
||||
const param = {
|
||||
id: this.form.id,
|
||||
param: {
|
||||
topRank: this.form.topRank
|
||||
topRank: this.form.topRank,
|
||||
jumpLink: this.form.jumpLink
|
||||
}
|
||||
}
|
||||
commentUpdate(param).then((res) => {
|
||||
|
||||
Reference in New Issue
Block a user