|
@@ -0,0 +1,279 @@
|
|
|
+<template>
|
|
|
+ <div id="">
|
|
|
+ <el-dialog
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ title="投稿"
|
|
|
+ :visible.sync="dialogVisible"
|
|
|
+ width="90vw"
|
|
|
+ >
|
|
|
+ <el-form
|
|
|
+ label-position="top"
|
|
|
+ :model="ruleForm"
|
|
|
+ :rules="rules"
|
|
|
+ ref="ruleForm"
|
|
|
+ label-width="80px"
|
|
|
+ class="demo-ruleForm"
|
|
|
+ >
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="所属菜单" prop="MenuId">
|
|
|
+ <el-cascader
|
|
|
+ :disabled="disActive"
|
|
|
+ v-model="ruleForm.MenuId"
|
|
|
+ placeholder="选择目录"
|
|
|
+ :options="routerTableData"
|
|
|
+ :props="{
|
|
|
+ value: 'MenuId',
|
|
|
+ label: 'Name',
|
|
|
+ children: 'ChildList',
|
|
|
+ emitPath: false,
|
|
|
+ }"
|
|
|
+ ></el-cascader
|
|
|
+ ></el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="标题" prop="Title">
|
|
|
+ <el-input v-model.trim="ruleForm.Title"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="图片上传" prop="ImageUrl">
|
|
|
+ <el-image
|
|
|
+ v-if="ruleForm.ImageUrl"
|
|
|
+ style="width: 112px; height: 70px"
|
|
|
+ :src="$methods.splitImgHost(ruleForm.ImageUrl)"
|
|
|
+ :preview-src-list="[$methods.splitImgHost(ruleForm.ImageUrl)]"
|
|
|
+ >
|
|
|
+ </el-image>
|
|
|
+ <label for="uploads" style="vertical-align: text-bottom"
|
|
|
+ ><span class="btn">{{
|
|
|
+ ruleForm.ImageUrl ? "更换图片" : "上传图片"
|
|
|
+ }}</span></label
|
|
|
+ >
|
|
|
+ <input
|
|
|
+ type="file"
|
|
|
+ id="uploads"
|
|
|
+ style="display: none"
|
|
|
+ @change="uploadImg"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="是否置顶" prop="IsTop">
|
|
|
+ <el-radio-group v-model="ruleForm.IsTop">
|
|
|
+ <el-radio :label="true">是</el-radio>
|
|
|
+ <el-radio :label="false">否</el-radio>
|
|
|
+ </el-radio-group></el-form-item
|
|
|
+ >
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="会员可见" prop="IsMemberRead">
|
|
|
+ <el-radio-group v-model="ruleForm.IsMemberRead">
|
|
|
+ <el-radio :label="true">是</el-radio>
|
|
|
+ <el-radio :label="false">否</el-radio>
|
|
|
+ </el-radio-group></el-form-item
|
|
|
+ >
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="状态" prop="Status">
|
|
|
+ <el-radio-group v-model="ruleForm.Status">
|
|
|
+ <el-radio :label="1">正常</el-radio>
|
|
|
+ <el-radio :label="0">停用</el-radio>
|
|
|
+ </el-radio-group></el-form-item
|
|
|
+ >
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="创建时间" prop="CreateTime">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="ruleForm.CreateTime"
|
|
|
+ type="datetime"
|
|
|
+ placeholder="选择创建日期时间"
|
|
|
+ format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ >
|
|
|
+ </el-date-picker
|
|
|
+ ></el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="文章内容" prop="NewContent">
|
|
|
+ <div class="tinymce-box">
|
|
|
+ <editor
|
|
|
+ ref="tinymceRef"
|
|
|
+ :value="ruleForm.NewContent"
|
|
|
+ :imgUrl="'XfWebApiUploadFile'"
|
|
|
+ ></editor>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button size="small" @click="close">取 消</el-button>
|
|
|
+ <el-button
|
|
|
+ size="small"
|
|
|
+ type="primary"
|
|
|
+ @click="submit('ruleForm')"
|
|
|
+ :loading="loading"
|
|
|
+ >确 定</el-button
|
|
|
+ >
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Editor from "@/components/tinymce";
|
|
|
+export default {
|
|
|
+ components: { Editor },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ dialogVisible: false,
|
|
|
+ ruleForm: {
|
|
|
+ Title: "",
|
|
|
+ IsTop: false,
|
|
|
+ IsMemberRead: false,
|
|
|
+ Status: 1,
|
|
|
+ MenuId: "",
|
|
|
+ ImageUrl: "",
|
|
|
+ CreateTime: "",
|
|
|
+ },
|
|
|
+ rules: {
|
|
|
+ Title: [{ required: true, message: "请输入标题", trigger: "blur" }],
|
|
|
+ // ImageUrl: [
|
|
|
+ // { required: true, message: "请上传图片", trigger: "change" },
|
|
|
+ // ],
|
|
|
+ MenuId: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "请选择所属菜单",
|
|
|
+ trigger: ["blur", "change"],
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ loading: false,
|
|
|
+ routerTableData: [],
|
|
|
+ disActive: false,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getGDFunc() {
|
|
|
+ let A = this.routerTableData.find((i) => i.Name == "协会期刊");
|
|
|
+ if (A) {
|
|
|
+ let B = A.ChildList.find((i) => i.Name == "在线投稿");
|
|
|
+ if (B) {
|
|
|
+ return B.MenuId;
|
|
|
+ } else {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getMenuList() {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ this.$api.XfWebApiGetMenuList({ parentid: -1 }).then((res) => {
|
|
|
+ this.routerTableData = res.Data || [];
|
|
|
+ resolve();
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ async showInit(e, id) {
|
|
|
+ await this.getMenuList();
|
|
|
+ if (e) {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.ruleForm = e;
|
|
|
+ this.disActive = true;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.ruleForm = {
|
|
|
+ Title: "",
|
|
|
+ IsTop: false,
|
|
|
+ IsMemberRead: false,
|
|
|
+ Status: 1,
|
|
|
+ ImageUrl: "",
|
|
|
+ MenuId: this.getGDFunc(),
|
|
|
+ CreateTime: "",
|
|
|
+ };
|
|
|
+ this.disActive = this.ruleForm.MenuId ? true : false;
|
|
|
+ }
|
|
|
+ this.dialogVisible = true;
|
|
|
+ },
|
|
|
+ uploadImg(e) {
|
|
|
+ var self = this;
|
|
|
+ var file = e.target.files[0];
|
|
|
+ if (file === undefined) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (file.size > 0.9 * 1024 * 1024) {
|
|
|
+ self.$message.error("图片不得大于900kb");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var type = e.target.value.toLowerCase().split(".").splice(-1);
|
|
|
+ if (type[0] != "jpg" && type[0] != "png" && type[0] != "jpeg") {
|
|
|
+ self.$message.error("上传格式需为:.jpg/.png/.jpeg");
|
|
|
+ e.target.value = "";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let formDatas = new FormData();
|
|
|
+ formDatas.append("file", file);
|
|
|
+ this.$api
|
|
|
+ .XfWebApiUploadFile(formDatas)
|
|
|
+ .then((res) => {
|
|
|
+ this.$set(this.ruleForm, "ImageUrl", res.Data);
|
|
|
+ })
|
|
|
+ .finally(() => {
|
|
|
+ e.target.value = "";
|
|
|
+ });
|
|
|
+ },
|
|
|
+ close() {
|
|
|
+ this.disActive = false;
|
|
|
+ this.loading = false;
|
|
|
+ this.$refs["ruleForm"].resetFields();
|
|
|
+ this.dialogVisible = false;
|
|
|
+ },
|
|
|
+ submit(formName) {
|
|
|
+ this.$refs[formName].validate(async (valid) => {
|
|
|
+ if (valid) {
|
|
|
+ this.ruleForm.NewContent = this.$refs.tinymceRef.getContent();
|
|
|
+ this.$api.XfWebApiSaveNews(this.ruleForm).then((res) => {
|
|
|
+ this.close();
|
|
|
+ this.$emit("search");
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ console.log("error submit!!");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.btn {
|
|
|
+ display: inline-block;
|
|
|
+ line-height: 1;
|
|
|
+ white-space: nowrap;
|
|
|
+ cursor: pointer;
|
|
|
+ border: 1px solid #dcdfe6;
|
|
|
+ -webkit-appearance: none;
|
|
|
+ text-align: center;
|
|
|
+ box-sizing: border-box;
|
|
|
+ outline: none;
|
|
|
+ margin: 0;
|
|
|
+ margin-left: 14px;
|
|
|
+ transition: 0.1s;
|
|
|
+ font-weight: 500;
|
|
|
+ -moz-user-select: none;
|
|
|
+ -webkit-user-select: none;
|
|
|
+ -ms-user-select: none;
|
|
|
+ padding: 8px 16px;
|
|
|
+ font-size: 14px;
|
|
|
+ border-radius: 4px;
|
|
|
+ color: #fff;
|
|
|
+ background-color: #409eff;
|
|
|
+ border-color: #409eff;
|
|
|
+}
|
|
|
+</style>
|