Files
dvcp_v2_wxcp_app/library/apps/AppServicePublic/Add.vue
2024-10-31 14:34:57 +08:00

263 lines
6.4 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" :focus="true" 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 :value="forms.areaId" :areaId="user.areaId" @select="areaSelect" selectRoot isForm/>
</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" v-if="!isHideCoverimg">
<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: '',
areaId: '',
selectIndex: '',
files: [],
},
showStstus: false,
flag: false,
areaIdProps: '',
moduleId: '',
listName: '',
selectList: [],
isHideCoverimg: false,
}
},
computed: {...mapState(['user'])},
onLoad(o) {
this.moduleId = o.moduleId
this.getModuleInfo()
if (o.id) {
this.id = o.id
}
if (!o.id) {
this.forms.areaId = this.user.areaId
}
this.listName = o.listName
this.getType()
},
onShow() {
document.title = this.listName
},
methods: {
getModuleInfo() {
this.$http.post(`/app/appcontentmoduleinfo/queryDetailById?id=${this.moduleId}`).then(res => {
if (res.code === 0) {
this.isHideCoverimg = res.data.styleType === '0'
}
})
},
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) => {
if (res.code == 0) {
uni.$emit('update')
this.$u.toast('发布成功')
this.flag = true
setTimeout(() => {
uni.navigateBack()
}, 600)
}
})
},
areaSelect(e) {
this.forms.areaId = e
},
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: 9999;
}
.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>