领取中心
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){
|
||||
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 flower from '@/api/flower/index.js'
|
||||
import badge from '@/api/badge/index.js'
|
||||
import claim from '@/api/claim/index.js'
|
||||
export default {
|
||||
user,
|
||||
sys,
|
||||
@ -29,4 +30,5 @@ export default {
|
||||
notice,
|
||||
flower,
|
||||
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