325 lines
12 KiB
Vue
325 lines
12 KiB
Vue
<template>
|
|
<el-dialog :title="title" :visible.sync="Visible" calss="ac-dialog" center width="800px" @close="close">
|
|
<div>
|
|
<el-form :rules="rules" :model="dialogForm" label-width="130px" ref="dialogForm">
|
|
<el-row :gutter="24">
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="小说标题">
|
|
<el-input placeholder="请输入标题" v-model="dialogForm.title" style="width: 180px" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="小说作者">
|
|
<el-input placeholder="请输入作者" v-model="dialogForm.author" style="width: 180px" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="小说主题">
|
|
<el-select placeholder="请选择小说主题" v-model="dialogForm.topics" filterable multiple>
|
|
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in topicsList" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="小说标签">
|
|
<el-select placeholder="请选择小说标题" v-model="dialogForm.tags" value-key="id" filterable multiple>
|
|
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in labelList" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="排序" prop="rank">
|
|
<el-input placeholder="请输入排序" v-model.number="dialogForm.rank" style="width: 180px" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="是否VIP" prop="isVip">
|
|
<el-switch v-model.number="dialogForm.isVip" :active-value="true" :inactive-value="false" active-color="#13ce66" inactive-color="#ff4949"> </el-switch>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="小说类型">
|
|
<el-select placeholder="请选择小说类型" v-model="dialogForm.novelType">
|
|
<el-option label="文本" :value="1" />
|
|
<el-option label="有声" :value="2" />
|
|
<el-option label="asmr" :value="3" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="24">
|
|
<el-col :lg="12" :md="12" :sm="12" :xl="12" :xs="12">
|
|
<el-form-item label="上架时间">
|
|
<el-date-picker style="width: 180px" v-model="dialogForm.addedTime" type="date" placeholder="选择日期" value-format="yyyy-MM-ddTHH:mm:ssZ"> </el-date-picker>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="12">
|
|
<el-form-item label="登场人物" prop="actors">
|
|
<el-input placeholder="请输入登场人物" v-model.number="dialogForm.actors" style="width: 180px" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="免费章节" prop="noneChapter">
|
|
<el-input placeholder="请输入免费章节" v-model.number="dialogForm.noneChapter" style="width: 180px" />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="24">
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="封面">
|
|
<UploadImg @onRemove="onRemove('coverImg')" @changeImgUrl="changeCoverImg" :img="dialogForm.coverImg"> </UploadImg>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="章节数量">
|
|
<el-input placeholder="请输入章节数量" v-model.number="dialogForm.chapterCount" style="width: 180px" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="小说总字数">
|
|
<el-input placeholder="请输入小说总字数" v-model.number="dialogForm.wordTotalCount" style="width: 180px" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="最新章节">
|
|
<el-input placeholder="请输入最新章节" v-model.number="dialogForm.newChapter" style="width: 180px" />
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :lg="12" :md="12" :sm="12" :xl="12" :xs="12">
|
|
<el-form-item label="小说发布者ID">
|
|
<el-input placeholder="请输入小说发布者ID" v-model.number="dialogForm.publishId" style="width: 180px" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="售价">
|
|
<el-input placeholder="请输入售价" v-model.number="dialogForm.price" style="width: 180px" />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="24">
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="小说上架状态">
|
|
<el-select placeholder="请选择小说上架状态" v-model="dialogForm.status">
|
|
<el-option label="上架" :value="1" />
|
|
<el-option label="下架" :value="2" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="12">
|
|
<el-form-item label="小说更新状态">
|
|
<el-select placeholder="请选择小说更新状态" v-model="dialogForm.updateStatus">
|
|
<el-option label="待发布" :value="0" />
|
|
<el-option label="连载中" :value="1" />
|
|
<el-option label="已完结" :value="2" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="24">
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
<el-form-item label="描述" prop="desc">
|
|
<el-input placeholder="请输入描述" v-model="dialogForm.desc" type="textarea" style="width: 520px" />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
</el-form>
|
|
</div>
|
|
<div class="dialog-footer" slot="footer">
|
|
<el-button @click="Visible = false">取 消</el-button>
|
|
<el-button @click="submitForm('dialogForm')" type="primary">确 定</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
</template>
|
|
<script>
|
|
import { novelsAdd, novelsUpdate } from '@/api/resourceManagement/novel';
|
|
import { novelsLabelsList } from '@/api/novelsManagement/novelsTopic';
|
|
// import { novelsCvList } from '@/api/novelsManagement/novelsCV'
|
|
import { changeMoneyYuan, changeMoneyFen, arryToString, stringToArry, current } from '@/filters/index';
|
|
import UploadImg from '@/components/UploadImg/index';
|
|
import moment from 'moment/moment';
|
|
export default {
|
|
name: 'AddOrEdit',
|
|
props: ['data', 'circleList'],
|
|
components: {
|
|
UploadImg,
|
|
},
|
|
data() {
|
|
return {
|
|
Visible: true,
|
|
title: '',
|
|
// 表单数据
|
|
dialogForm: {
|
|
author: undefined, // "string",小说作者
|
|
chapterCount: undefined, // 0,章节数量
|
|
coverImg: undefined, // "string",封面
|
|
desc: undefined, // "string",描述信息
|
|
isVip: undefined, // true,是否VIp
|
|
newChapter: undefined, // 0,最新章节
|
|
price: undefined, // 0,售价,单位分
|
|
rank: undefined, // 0,排序
|
|
status: undefined, // 0,小说状态
|
|
tags: [], // 0 小说标签
|
|
title: undefined, // string 标题
|
|
topics: undefined, // 0 小说话题
|
|
updateStatus: undefined, // 小说更新状态
|
|
noneChapter: undefined, // 免费章节
|
|
novelNumber: undefined, //评分
|
|
actors: undefined, //登场人物
|
|
addedTime: undefined, //上架时间
|
|
lastWatchTime: undefined, //上次观看时间
|
|
monthWatchTimes: undefined, //月观看次数,每月一号重置
|
|
weekWatchTimes: undefined, //周观看次数,每周一重置
|
|
newTime: undefined, //最新章节更新时间
|
|
wordTotalCount: undefined, //小说总字数
|
|
publishId: undefined, //漫画发布者ID
|
|
novelType:undefined
|
|
},
|
|
topicsList: this.$store.state.novels.novelsTopicList,
|
|
labelList: [],
|
|
rules: {
|
|
// sort: [{ required: true, message: '必填', trigger: 'blur' }],
|
|
},
|
|
resData: [],
|
|
};
|
|
},
|
|
|
|
async mounted() {
|
|
this.title = this.data.title;
|
|
|
|
if (this.title === '编辑') {
|
|
this.dialogForm = { ...this.data.data };
|
|
// if (!this.dialogForm.roleList.length) {
|
|
// this.dialogForm.roleList.push({
|
|
// comicsId: undefined,
|
|
// roleName: undefined
|
|
// })
|
|
// console.log(this.dialogForm,"dialogForm")
|
|
// }
|
|
this.dialogForm.price = changeMoneyYuan(this.dialogForm.price);
|
|
this.dialogForm.author = arryToString(this.data.data.author);
|
|
this.dialogForm.actors = arryToString(this.data.data.actors);
|
|
}
|
|
this.getNovelsLabelsList();
|
|
// this.getList()
|
|
},
|
|
methods: {
|
|
// TODO:请求小说标签列表数据
|
|
// getList() {
|
|
// this.loading = true
|
|
// novelsCvList({ pageNum: 1, pageSize: 50 }).then((res) => {
|
|
// if (res.code === 200) {
|
|
// this.resData = res.data.list
|
|
// } else {
|
|
// this.$message.error('请求列表失败!')
|
|
// this.resData = []
|
|
// this.total = 0
|
|
// }
|
|
// this.loading = false
|
|
// })
|
|
// },
|
|
// addSectionItem() {
|
|
// this.dialogForm.roleList.push({
|
|
// comicsId: undefined,
|
|
// roleName: undefined
|
|
// })
|
|
// },
|
|
delSectionItem(index) {
|
|
this.dialogForm.roleList.splice(index, 1);
|
|
},
|
|
// TODO:请求小说标签列表
|
|
async getNovelsLabelsList() {
|
|
console.log('tianjia1');
|
|
this.labelList = this.title === '编辑' ? this.data.data.tagName : [];
|
|
const param = {
|
|
pageNum: 1,
|
|
// pageSize: 500,
|
|
status: true,
|
|
};
|
|
novelsLabelsList(param).then(res => {
|
|
if (res.code === 200) {
|
|
// if (this.title === '编辑') {
|
|
// for (let tagindex = 0; tagindex < this.data.data.tagName.length; tagindex++) {
|
|
// const tag = this.data.data.tagName[tagindex]
|
|
// let e = 0
|
|
// for (let index = 0; index < this.labelList.length; index++) {
|
|
// const element = this.labelList[index]
|
|
// if (element.id === tag.id) {
|
|
// e = 1
|
|
// }
|
|
// }
|
|
// if (e === 0) {
|
|
// this.labelList.push(tag)
|
|
// }
|
|
// }
|
|
// res.data.forEach(item => {
|
|
// });
|
|
// this.labelList = res.data
|
|
// } else {
|
|
// this.labelList = res.data
|
|
// }
|
|
this.labelList = res.data;
|
|
}
|
|
});
|
|
},
|
|
// TODO:新增小说列表数据
|
|
novelsAddFun(data) {
|
|
novelsAdd(data).then(res => {
|
|
if (res.code === 200) {
|
|
this.$message.success('新增成功');
|
|
this.Visible = false;
|
|
} else {
|
|
this.$message.error('新增失败');
|
|
}
|
|
});
|
|
},
|
|
|
|
// TODO:编辑小说列表数据
|
|
novelsUpdateFun(data) {
|
|
novelsUpdate(data).then(res => {
|
|
if (res.code === 200) {
|
|
this.$message.success('编辑成功');
|
|
this.Visible = false;
|
|
} else {
|
|
this.$message.error('编辑失败');
|
|
}
|
|
});
|
|
},
|
|
changeCoverImg(data) {
|
|
this.dialogForm.coverImg = data;
|
|
},
|
|
onRemove(data) {
|
|
this.dialogForm[data] = undefined;
|
|
},
|
|
|
|
close() {
|
|
this.$emit('close');
|
|
},
|
|
|
|
// 提交按钮
|
|
submitForm(formName) {
|
|
this.$refs[formName].validate(valid => {
|
|
if (valid) {
|
|
const data = JSON.parse(JSON.stringify(this.dialogForm));
|
|
data.price = data.price ? changeMoneyFen(data.price) : 0;
|
|
data.author = stringToArry(data.author);
|
|
data.actors = stringToArry(data.actors);
|
|
data.circleId = data.circleId ? data.circleId : undefined;
|
|
if (this.title === '编辑') {
|
|
this.novelsUpdateFun(data);
|
|
} else {
|
|
this.novelsAddFun(data);
|
|
}
|
|
}
|
|
});
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|