Files
dvcp_v2_wxcp_app/src/apps/AppServicePublic/Add.vue
2021-12-30 19:17:29 +08:00

259 lines
6.3 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="add">
<div class="header-description">
<u-form :model="forms" ref="uForm" label-width="auto">
<u-form-item label="标题" prop="title" required label-position="top">
<u-input v-model="forms.title" placeholder="请输入标题(30字以内)" type="textarea" auto-height height="60"
maxlength="30"/>
</u-form-item>
<u-form-item label="类别" prop="status" required v-if="selectList.length">
<div class="right" @click="showStstus=true">
<span v-if="forms.selectIndex === ''" class="color-999">请选择类别</span>
<span v-else>{{ selectList[forms.selectIndex].categoryName }}</span>
<u-icon name="arrow-right" color="#CCCCCC" class="right-icon"></u-icon>
</div>
<u-select v-model="showStstus" :list="selectList" value-name="selectIndex" label-name="categoryName"
@confirm="selectStatus"></u-select>
</u-form-item>
<u-form-item label="发布地区" prop="areaId" required>
<div class="right">
<AiAreaPicker v-model="forms.areaId" :areaId="user.areaId" @select="areaSelect"></AiAreaPicker>
<u-icon name="arrow-right" color="#CCCCCC" class="right-icon area-right-icon"></u-icon>
</div>
</u-form-item>
<u-form-item label="正文" prop="content" required label-position="top">
<AiEditor v-model="forms.content" placeholder="请输入最多500字" :maxlength="500"/>
</u-form-item>
<u-form-item label="图片(最多9张)" prop="files" class="avatars" label-position="top">
<AiUploader :def.sync="forms.files" multiple placeholder="上传图片" :limit="9"
action="/admin/file/add2"></AiUploader>
</u-form-item>
</u-form>
</div>
<div class="pad-b112"></div>
<div class="btn" @click="submit">保存</div>
</div>
</template>
<script>
import {mapState} from 'vuex'
export default {
name: 'Add',
components: {},
props: {},
data() {
return {
id: '',
forms: {
title: '',
content: '',
areaId: '',
selectIndex: '',
files: []
},
showStstus: false,
flag: false,
areaIdProps: '',
moduleId: '',
listName: '',
selectList: []
}
},
computed: {...mapState(['user'])},
onLoad(o) {
console.log(o)
if (o.id) {
this.id = o.id
}
this.moduleId = o.moduleId
this.forms.areaId = this.user.areaId
this.listName = o.listName
this.getType()
},
onShow() {
document.title = this.listName
},
mounted() {
},
methods: {
getDetail() {
this.$http.post(`/app/appcontentinfo/queryDetailById?id=${this.id}`).then((res) => {
if (res?.data) {
this.forms = {...res.data}
if (this.selectList.length) {
this.selectList.map((item, index) => {
if (item.id == res.data.categoryId) {
this.forms.selectIndex = index
}
})
}
if (res.data.images) {
this.forms.images = JSON.parse(res.data.images || '[]')
}
}
})
},
getType() {
this.$http.post(`/app/appcontentmoduleinfo/listByName?names=${this.listName}`).then((res) => {
if (res.code == 0) {
if (res.data && res.data.length) {
this.selectList = res.data[0].categoryList
this.selectList.map((item, index) => {
item.selectIndex = index
})
}
if (this.id) {
this.getDetail()
}
}
})
},
submit() {
if (this.flag) return
if (!this.forms.title) {
return this.$u.toast('请输入标题')
}
if (!this.forms.content) {
return this.$u.toast('请输入正文')
}
if (this.selectList.length && this.forms.selectIndex === '') {
return this.$u.toast('请选择类别')
}
var categoryId = '', categoryName = ''
if (this.selectList.length) {
categoryId = this.selectList[this.forms.selectIndex].id
categoryName = this.selectList[this.forms.selectIndex].categoryName
}
this.$http.post(`/app/appcontentinfo/addOrUpdate`, {
title: this.forms.title,
areaId: this.forms.areaId,
content: this.forms.content,
files: this.forms.files,
id: this.id,
moduleId: this.moduleId,
categoryId: categoryId,
categoryName: categoryName,
contentType: 0
})
.then((res) => {
console.log(333)
if (res.code == 0) {
uni.$emit('update')
this.$u.toast('发布成功')
this.flag = true
setTimeout(() => {
uni.navigateBack()
}, 600)
}
})
},
areaSelect(e) {
this.forms.areaId = e.id
},
selectStatus(e) {
this.forms.selectIndex = e[0].value
},
},
}
</script>
<style lang="scss" scoped>
.add {
height: 100%;
.header-description {
::v-deep .u-form {
.u-form-item {
.u-form-item__body {
.u-form-item--right__content__slot {
padding-bottom: 0;
}
}
}
.u-form-item:last-child {
margin-bottom: 0;
padding-bottom: 20px !important;
}
.avatars {
.u-form-item__body {
.default {
width: 160px;
height: 160px;
}
}
}
}
}
.pad-b112 {
padding-bottom: 224px;
}
.btn {
position: fixed;
bottom: 0;
width: 100%;
height: 112px;
line-height: 112px;
background: #1365dd;
text-align: center;
font-size: 32px;
font-weight: 500;
color: #ffffff;
z-index: 999999;
}
.right {
width: 100%;
text-align: right;
.right-icon {
vertical-align: middle;
margin-left: 8px;
}
.area-right-icon {
margin: -60px 0 0 8px;
}
::v-deep .AiAreaPicker {
display: inline-block;
width: calc(100% - 50px);
.areaSelector {
div {
width: 100%;
box-sizing: border-box;
text-align: right;
}
.fixedTop {
text-align: left;
}
}
}
}
.color-999 {
color: #999;
}
}
</style>