领取中心
This commit is contained in:
parent
eeaf770a06
commit
798d53c611
20
src/api/claim/index.js
Normal file
20
src/api/claim/index.js
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import fetch from '../fetch.js'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
save(params) {
|
||||||
|
return fetch('/claim/add', params,'post','json')
|
||||||
|
},
|
||||||
|
update(params) {
|
||||||
|
return fetch('/claim/update', params,'post','json')
|
||||||
|
},
|
||||||
|
|
||||||
|
list(params) {
|
||||||
|
return fetch('/claim/list', params,'post','json')
|
||||||
|
},
|
||||||
|
|
||||||
|
setImg(params) {
|
||||||
|
return fetch('/claim/uploadImg',params,'post','json')
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -25,7 +25,7 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
inviteList(params){
|
inviteList(params){
|
||||||
return fetch('/personal/inviteCode/inviteRecords',params,'post','json')
|
return fetch('/personal/inviteCode/records',params,'post','json')
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import contractPay from '@/api/contract/pay.js'
|
|||||||
import notice from '@/api/notice/index.js'
|
import notice from '@/api/notice/index.js'
|
||||||
import flower from '@/api/flower/index.js'
|
import flower from '@/api/flower/index.js'
|
||||||
import badge from '@/api/badge/index.js'
|
import badge from '@/api/badge/index.js'
|
||||||
|
import claim from '@/api/claim/index.js'
|
||||||
export default {
|
export default {
|
||||||
user,
|
user,
|
||||||
sys,
|
sys,
|
||||||
@ -29,4 +30,5 @@ export default {
|
|||||||
notice,
|
notice,
|
||||||
flower,
|
flower,
|
||||||
badge,
|
badge,
|
||||||
|
claim
|
||||||
}
|
}
|
||||||
|
|||||||
147
src/views/flower/claim/components/edit.vue
Normal file
147
src/views/flower/claim/components/edit.vue
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<a-button type="text" @click="show = true">{{
|
||||||
|
type === 'add' ? '新增' : '编辑'
|
||||||
|
}}</a-button>
|
||||||
|
<a-modal v-model:visible="show" @before-ok="submit">
|
||||||
|
<a-form :model="form" auto-label-width ref="form">
|
||||||
|
<a-form-item label="名称" field="name" required>
|
||||||
|
<a-input
|
||||||
|
placeholder="请输入徽章名称"
|
||||||
|
v-model="form.name"
|
||||||
|
></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="描述" field="content" required>
|
||||||
|
<a-textarea
|
||||||
|
placeholder="请输入描述"
|
||||||
|
:auto-size = {minRows:7}
|
||||||
|
v-model="form.content"
|
||||||
|
></a-textarea>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="标签" field="tag" required>
|
||||||
|
<a-input
|
||||||
|
placeholder="请输入标签"
|
||||||
|
v-model="form.tag"
|
||||||
|
></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="库存" field="amount" required>
|
||||||
|
<a-input-number
|
||||||
|
placeholder="请输入库存"
|
||||||
|
v-model="form.amount"
|
||||||
|
></a-input-number>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="视频号链接" field="videoUrl" required>
|
||||||
|
<a-input
|
||||||
|
placeholder="请输入视频号链接"
|
||||||
|
v-model="form.videoUrl"
|
||||||
|
></a-input>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="阳光值" field="points" required>
|
||||||
|
<a-input-number
|
||||||
|
placeholder="请输入兑换所需阳光值"
|
||||||
|
v-model="form.points"
|
||||||
|
></a-input-number>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="上传图片" field="ossId" required>
|
||||||
|
<div class="">
|
||||||
|
<a-image
|
||||||
|
class="mb-10"
|
||||||
|
v-if="form.ossId"
|
||||||
|
:src="form.ossUrl"
|
||||||
|
width="160"
|
||||||
|
height="160"
|
||||||
|
></a-image>
|
||||||
|
<upload @ok="upload" />
|
||||||
|
<div class="font-14 primary mt-10">
|
||||||
|
图片大小为 400* 400
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a-form-item>
|
||||||
|
</a-form>
|
||||||
|
</a-modal>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import upload from '@/components/upload/index.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
upload
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
type: {
|
||||||
|
type: String,
|
||||||
|
default: 'add'
|
||||||
|
},
|
||||||
|
info: {
|
||||||
|
type: Object,
|
||||||
|
default: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
info: {
|
||||||
|
handler(val) {
|
||||||
|
this.form = { ...val }
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
show: false,
|
||||||
|
form: {
|
||||||
|
amount: 0,
|
||||||
|
content: '',
|
||||||
|
name: '',
|
||||||
|
ossId: '',
|
||||||
|
points: 0,
|
||||||
|
tag: '',
|
||||||
|
videoUrl: '',
|
||||||
|
ossUrl: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
upload(file) {
|
||||||
|
this.form.ossId = file.id
|
||||||
|
this.form.ossUrl = file.url
|
||||||
|
},
|
||||||
|
submit(done) {
|
||||||
|
this.$refs.form.validate(err => {
|
||||||
|
if (err === undefined) {
|
||||||
|
if (this.form.id) {
|
||||||
|
this.$api.claim.update(this.form).then(res => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
this.$emit('ok')
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
done()
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.msg)
|
||||||
|
done(false)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
const data = this.form
|
||||||
|
data.ossIds = [ this.form.ossId ]
|
||||||
|
this.$api.claim.save(data).then(res => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
this.$emit('ok')
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
done()
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.msg)
|
||||||
|
done(false)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
done(false)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
||||||
99
src/views/flower/claim/index.vue
Normal file
99
src/views/flower/claim/index.vue
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<navbar title="植物兑换中心" />
|
||||||
|
|
||||||
|
|
||||||
|
<a-card>
|
||||||
|
<div class="flex flex-center flex-justify-start">
|
||||||
|
<edit @ok="fetchList"/>
|
||||||
|
</div>
|
||||||
|
<a-table
|
||||||
|
class="mt-20"
|
||||||
|
:columns="columns"
|
||||||
|
:data="list"
|
||||||
|
:pagination="page"
|
||||||
|
@pageChange="change"
|
||||||
|
>
|
||||||
|
<template #name="{ record }">
|
||||||
|
<div class="flex flex-center flex-justify-start">
|
||||||
|
<a-image
|
||||||
|
v-if="record.imgList.length > 0"
|
||||||
|
width="60"
|
||||||
|
height="60"
|
||||||
|
:src="record.imgList[0].url"
|
||||||
|
:alt="record.id"
|
||||||
|
/>
|
||||||
|
<div class="ml-10">{{ record.name }}</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #menu="{ record }">
|
||||||
|
<div class="flex flex-center">
|
||||||
|
<edit type="edit" :info="record" @ok="fetchList" />
|
||||||
|
<a-button type="text" @click="changeHot(record)">{{
|
||||||
|
record.isHot === 0 ? '设置热门' : '取消热门'
|
||||||
|
}}</a-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</a-table>
|
||||||
|
</a-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import navbar from '@/components/navbar/index.vue'
|
||||||
|
import edit from '../claim/components/edit.vue'
|
||||||
|
import upload from '../../../components/upload/index.vue'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
upload,
|
||||||
|
edit,
|
||||||
|
navbar
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
page: {
|
||||||
|
current: 0,
|
||||||
|
pageSize: 10
|
||||||
|
},
|
||||||
|
list:[],
|
||||||
|
columns :[
|
||||||
|
{
|
||||||
|
title:'名称',
|
||||||
|
slotName: 'name',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title:'别名',
|
||||||
|
dataIndex: 'aliases',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title:'latinName',
|
||||||
|
dataIndex:'latinName'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title:'科/属',
|
||||||
|
dataIndex: 'genus',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title:"操作",
|
||||||
|
slotName:'menu'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.fetchList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
fetchList() {
|
||||||
|
const data = { keyword: '',name:'', ...this.page }
|
||||||
|
this.$api.claim.list(data).then(res => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
console.log(res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
||||||
@ -1,42 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<navbar title="邀请记录"/>
|
|
||||||
<a-card>
|
|
||||||
|
|
||||||
</a-card>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import navbar from '@/components/navbar/index.vue'
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
navbar,
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
page: {
|
|
||||||
current:0,
|
|
||||||
pageSize:10,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.fetchList();
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
fetchList() {
|
|
||||||
const data = {keyword:'', ...this.page}
|
|
||||||
this.$api.flower.inviteList(data).then(res => {
|
|
||||||
if (res.code === 200){
|
|
||||||
console.log(res)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
|
|
||||||
</style>
|
|
||||||
Loading…
Reference in New Issue
Block a user