Files
dvcp_v2_wechat_app/src/project/fengdu/AppNewFarmerBank/integralAdd.vue

208 lines
5.0 KiB
Vue
Raw Normal View History

2023-03-31 10:48:06 +08:00
<template>
<div class="integralAdd">
2023-03-31 14:51:04 +08:00
<div class="item">
<div class="left">事件类型</div>
2023-04-03 13:51:58 +08:00
<AiSelect class="right" :list="dictList" v-model="form.applyItemId"></AiSelect>
2023-03-31 16:00:28 +08:00
</div>
<div class="items">
<p>详情描述</p>
<textarea v-model="form.content" :maxlength="300" placeholder="请输入详细描述..."></textarea>
<div class="tips">{{ form.content.length }}/300</div>
2023-03-31 14:51:04 +08:00
</div>
2023-04-03 13:51:58 +08:00
<div class="items">
<p>上传图片</p>
<div class="upload">
2023-04-03 15:33:27 +08:00
<AiUploader v-model="form.images" placeholder="上传图片" type="image" :limit="9" multiple></AiUploader>
2023-04-03 13:51:58 +08:00
</div>
<div class="tips left">可上传图片最多上传9张</div>
</div>
<div class="items">
<p>上传视频</p>
<div class="upload">
2023-04-03 15:33:27 +08:00
<AiUploader v-model="form.videos" placeholder="上传视频" type="video" :limit="9" multiple :size="30 * 1024 * 1024"></AiUploader>
2023-04-03 13:51:58 +08:00
</div>
<div class="tips left">可上传视频最大30M</div>
</div>
<div class="item">
<div class="left">所属网格</div>
<AiPagePicker type="gird" v-model="form.girdId" :params="{ formType: 2 }" @select="handleSelectGrid" nodeKey="id">
<AiMore v-model="form.girdName"/>
</AiPagePicker>
</div>
<div class="btn-wrapper">
<div class="btn" hover-class="text-hover" @click="submit">提交申请</div>
</div>
2023-03-31 10:48:06 +08:00
</div>
</template>
<script>
export default {
name: "integralAdd",
appName: '积分申请',
data() {
return {
2023-03-31 14:51:04 +08:00
form: {
2023-04-03 15:33:27 +08:00
applyItemId: '',
2023-04-03 13:51:58 +08:00
applyIntegral: '',
applyItemName: '',
2023-03-31 16:00:28 +08:00
content: '',
2023-04-03 13:51:58 +08:00
files: [],
2023-04-03 15:33:27 +08:00
images: [],
videos: [],
2023-04-03 13:51:58 +08:00
girdId: '',
girdName: '',
},
list: [],
dictList: [],
2023-04-03 15:33:27 +08:00
flag: false,
2023-04-03 16:12:37 +08:00
id: '',
2023-03-31 10:48:06 +08:00
}
},
2023-03-31 14:51:04 +08:00
onLoad(o) {
2023-04-03 16:12:37 +08:00
if(o.id) {
this.id = o.id
this.getDetail()
}
2023-03-31 14:51:04 +08:00
this.$dict.load(['clapEventStatus'])
2023-04-03 13:51:58 +08:00
this.getType()
},
watch: {
'form.applyItemId'(v) {
if(v) {
this.form.applyItemName = this.list.filter(e=> (e.id==v))[0].ruleName
this.form.applyIntegral = this.list.filter(e => (e.id == v))[0].integral
}
}
},
methods: {
submit() {
2023-04-03 15:33:27 +08:00
if(this.flag) return
if (!this.form.applyItemId) {
return this.$u.toast('请选择事件类型')
}
if ((this.form.images.length + this.form.videos.length) > 9) {
return this.$u.toast('图片和视频不得超过9个')
} else {
this.form.files = [...this.form.images,...this.form.videos]
}
if (!this.form.girdId) {
return this.$u.toast('请选择所属网格')
}
this.flag = true
2023-04-03 13:51:58 +08:00
this.$instance.post(`/app/appintegraluserapply/addOrUpdate`,{
...this.form
}).then(res=> {
2023-04-03 15:33:27 +08:00
this.flag = false
2023-04-03 13:51:58 +08:00
if(res?.data) {
2023-04-03 15:33:27 +08:00
this.$u.toast('提交成功')
setTimeout(()=> {
uni.navigateBack()
},500)
2023-04-03 13:51:58 +08:00
}
})
},
// 事件类型
getType() {
this.$instance.post(`/app/appintegralrule/listByFD`).then(res=> {
if(res?.data) {
this.list = res.data
this.dictList = res.data.map(v => {
return {
value: v.id,
label: v.ruleName
}
})
}
})
},
handleSelectGrid(v) {
this.form.girdName = v.girdName
this.form.girdId = v.girdId
2023-04-03 16:12:37 +08:00
},
getDetail() {
this.$instance.post(`/app/appintegraluserapply/queryDetailById?id=${this.id}`).then(res => {
if (res?.data) {
this.form = res.data
this.form.images = res.data.files.filter(e => (['jpeg', 'jpg', 'png'].includes(e.name.split('.')[1])))
this.form.videos = res.data.files.filter(e => (['mp4'].includes(e.name.split('.')[1])))
this.form.files = []
}
})
},
2023-03-31 14:51:04 +08:00
}
2023-03-31 10:48:06 +08:00
}
</script>
<style lang="scss" scoped>
.integralAdd {
2023-04-03 15:33:27 +08:00
padding: 24px 0 120px 0;
2023-04-03 13:51:58 +08:00
box-sizing: border-box;
2023-03-31 14:51:04 +08:00
.item {
width: 100%;
display: flex;
justify-content: space-between;
background: #FFF;
padding: 24px 32px;
2023-03-31 16:00:28 +08:00
box-sizing: border-box;
2023-04-03 15:33:27 +08:00
margin-bottom: 24px;
2023-03-31 14:51:04 +08:00
.left {
width: 250px;;
}
.right {
width: calc(100% - 200px);
text-align: right;
}
2023-03-31 16:00:28 +08:00
::v-deep .AiSelect {
float: right;
}
}
.items {
width: 100%;
background: #FFF;
2023-04-03 15:33:27 +08:00
margin-bottom: 24px;
2023-03-31 16:00:28 +08:00
p {
padding: 24px 32px;
box-sizing: border-box;
border: 1px solid #EEEEEE;
}
textarea {
padding: 24px 32px;
box-sizing: border-box;
2023-04-03 16:12:37 +08:00
width: 100%;
2023-03-31 16:00:28 +08:00
}
.tips {
padding: 12px 32px;
box-sizing: border-box;
text-align: right;
color: #999999;
font-size: 24px;
font-weight: 400;
}
2023-04-03 13:51:58 +08:00
.left {
text-align: left;
}
.upload {
2023-04-03 16:12:37 +08:00
padding: 24px 32px 0 32px;
2023-04-03 13:51:58 +08:00
box-sizing: border-box;
}
2023-03-31 14:51:04 +08:00
}
2023-04-03 13:51:58 +08:00
::v-deep .btn-wrapper {
background: #FFF;
}
::v-deep .btn-wrapper .btn {
height: 80px;
line-height: 80px;
border-radius: 40px;
}
2023-03-31 10:48:06 +08:00
}
</style>