|
@@ -0,0 +1,147 @@
|
|
|
+<template>
|
|
|
+ <div id="edit">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24" class="main">
|
|
|
+ <el-col :span="24" class="top">
|
|
|
+ <van-nav-bar :title="pageTitle" left-text="取消" @click-left="toCancel" :right-text="id ? '修改' : '发表'" @click-right="toSubmit" />
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <van-form ref="form" style="margin-top:30px">
|
|
|
+ <van-field v-model="form.title" name="title" label="标题" placeholder="请输入标题" :rules="[{ required: true, message: '请填写标题' }]" />
|
|
|
+ <van-field v-model="form.origin" name="origin" label="信息来源" placeholder="请输入信息来源" />
|
|
|
+ <van-cell title="服务联系人" />
|
|
|
+ <van-field v-model="form.contact.name" name="contact.name" label="联系人姓名" placeholder="请输入联系人姓名" />
|
|
|
+ <van-field v-model="form.contact.phone" name="contact.phone" label="联系电话" placeholder="请输入联系电话" />
|
|
|
+ <van-field v-model="form.contact.email" name="contact.email" label="电子邮箱" placeholder="请输入电子邮箱" />
|
|
|
+ <van-field v-model="form.contact.address" name="contact.address" label="联系地址" placeholder="请输入联系地址" />
|
|
|
+ <van-field name="type" label="文章类型">
|
|
|
+ <template #input>
|
|
|
+ <van-radio-group v-model="form.type" direction="horizontal">
|
|
|
+ <van-radio name="0">文字</van-radio>
|
|
|
+ <van-radio name="1">图文</van-radio>
|
|
|
+ <van-radio name="2">科普视频</van-radio>
|
|
|
+ <van-radio name="3">培训视频</van-radio>
|
|
|
+ </van-radio-group>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+ <van-field v-if="form.type === '0' || form.type === '1'" v-model="form.content" rows="2" autosize type="textarea" placeholder="请输入本文内容" />
|
|
|
+ <van-field v-if="form.type === '1'" name="uploader" label="图片上传">
|
|
|
+ <template #input>
|
|
|
+ <van-uploader :fileList="form.imgUrl" :after-read="file => toUpload(file, 'imgUrl')" @delete="file => toDelete(file, 'imgUrl')" />
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+ <van-field v-if="form.type === '2' || form.type === '3'" name="uploader" label="文章视频">
|
|
|
+ <template #input>
|
|
|
+ <van-uploader
|
|
|
+ :fileList="form.fileUrl"
|
|
|
+ :max-count="1"
|
|
|
+ :after-read="file => toUpload(file, 'fileUrl')"
|
|
|
+ accept=".mp4,.flv,.avi,.rmvb,.wmv"
|
|
|
+ @delete="file => toDelete(file, 'fileUrl')"
|
|
|
+ max-size="11534336"
|
|
|
+ @oversize="onOversize"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+ </van-form>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" class="foot">
|
|
|
+ <foot></foot>
|
|
|
+ </el-col>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+const moment = require('moment');
|
|
|
+const _ = require('lodash');
|
|
|
+import Toast from 'vant';
|
|
|
+import foot from '@/layout/common/foot.vue';
|
|
|
+import { mapState, createNamespacedHelpers } from 'vuex';
|
|
|
+const { mapActions: upload } = createNamespacedHelpers('upload');
|
|
|
+const { mapActions: service } = createNamespacedHelpers('service');
|
|
|
+export default {
|
|
|
+ name: 'edit',
|
|
|
+ props: {},
|
|
|
+ components: { foot },
|
|
|
+ data: function() {
|
|
|
+ return {
|
|
|
+ form: {
|
|
|
+ imgUrl: [],
|
|
|
+ fileUrl: [],
|
|
|
+ contact: {},
|
|
|
+ },
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ if (this.id) this.search();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ ...upload(['upload']),
|
|
|
+ ...service(['create', 'fetch', 'update']),
|
|
|
+ async search() {
|
|
|
+ const res = await this.fetch(this.id);
|
|
|
+ if (this.$checkRes(res, null, res.errmsg || '未找到指定数据')) {
|
|
|
+ this.$set(this, `form`, res.data);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async toSubmit() {
|
|
|
+ // type:0=>只有文字;1=>文字+图片;2/3=>只有上传视频
|
|
|
+ let dup = _.cloneDeep(this.form);
|
|
|
+ if (dup.type == '0') delete dup.imgUrl, delete dup.fileUrl;
|
|
|
+ if (dup.type == '1') delete dup.fileUrl;
|
|
|
+ if (dup.type == '2' || dup.type == '3') delete dup.content, delete dup.imgUrl;
|
|
|
+ let res;
|
|
|
+ if (this.id) {
|
|
|
+ dup.renew_time = moment().format('YYYY-MM-DD HH:mm:ss');
|
|
|
+ res = await this.update(dup);
|
|
|
+ } else {
|
|
|
+ // user_id,origin需要加进数据中
|
|
|
+ dup.user_id = this.user._id;
|
|
|
+ res = await this.create(dup);
|
|
|
+ }
|
|
|
+ if (this.$checkRes(res, '保存成功', res.errmsg || '保存失败')) {
|
|
|
+ this.toCancel();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ toCancel() {
|
|
|
+ this.$router.push('/adminServe');
|
|
|
+ },
|
|
|
+ onOversize() {
|
|
|
+ Toast('文件大小不能超过 10MB');
|
|
|
+ },
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapState(['user', 'menuParams']),
|
|
|
+ pageTitle() {
|
|
|
+ return `${this.$route.meta.title}`;
|
|
|
+ },
|
|
|
+ id() {
|
|
|
+ return this.$route.query.id;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ metaInfo() {
|
|
|
+ return { title: this.$route.meta.title };
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped>
|
|
|
+.main {
|
|
|
+ .top {
|
|
|
+ height: 40px;
|
|
|
+ overflow: hidden;
|
|
|
+ border-bottom: 1px solid #f1f1f1;
|
|
|
+ }
|
|
|
+ .info {
|
|
|
+ overflow-x: hidden;
|
|
|
+ overflow-y: auto;
|
|
|
+ }
|
|
|
+ .foot {
|
|
|
+ height: 50px;
|
|
|
+ overflow: hidden;
|
|
|
+ border-top: 1px solid #f1f1f1;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|