123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- <template>
- <div v-loading="loading">
- <el-form
- ref="form"
- :rules="formRules"
- :model="formData"
- class="form"
- label-width="100px"
- >
- <el-row :gutter="10">
- <el-col :span="12">
- <el-form-item label="标题" prop="title">
- <el-input
- v-model="formData.title"
- placeholder="请输入标题"
- clearable
- ></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="作者" prop="author">
- <el-input
- v-model="formData.author"
- placeholder="请输入作者"
- clearable
- ></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="跳转地址" prop="url">
- <el-input
- v-model="formData.url"
- placeholder="请输入跳转地址"
- clearable
- ></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="发布时间" prop="publishTime">
- <!-- value-format="yyyy-MM-dd HH:mm:ss" -->
- <el-date-picker
- style="width: 100%"
- v-model="formData.publishTime"
- type="datetime"
- placeholder="请选择发布时间"
- >
- </el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="类别" prop="publishType">
- <el-select
- style="width: 100%"
- v-model="formData.publishType"
- placeholder="请选择类别"
- clearable
- >
- <el-option
- v-for="dict in dict.type.publish_type"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value"
- />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="状态" prop="status">
- <el-select
- style="width: 100%"
- v-model="formData.status"
- placeholder="请选择状态"
- clearable
- >
- <el-option
- v-for="dict in statusOptions"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value"
- />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="摘要" prop="digest">
- <el-input
- v-model="formData.digest"
- type="textarea"
- :rows="4"
- placeholder="请输入摘要"
- ></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="封面" prop="thumbUrl">
- <image-upload :limit="1" v-model="formData.thumbUrl" />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="是否显示封面" prop="showCoverPic">
- <!-- @change="handleShow" -->
- <el-switch
- v-model="formData.showCoverPic"
- active-color="#13ce66"
- inactive-color="#ff4949"
- active-value="1"
- inactive-value="0"
- >
- </el-switch>
- </el-form-item>
- </el-col>
- <el-col :span="24" style="text-align: right">
- <el-button type="primary" @click="handleConfirm">确 定</el-button>
- <el-button @click="handleCancel">取 消</el-button>
- </el-col>
- </el-row>
- </el-form>
- </div>
- </template>
- <script>
- export default {
- dicts: ["publish_type"],
- props: {
- infoData: {
- type: Object,
- default: () => {},
- },
- loading: {
- type: Boolean,
- default: false,
- },
- },
- data() {
- return {
- formData: {
- title: "",
- author: "",
- thumbUrl: "",
- showCoverPic: "1",
- url: "",
- publishTime: "",
- digest: "",
- status: "",
- publishType: "",
- },
- statusOptions: [
- { value: "0", label: "有效" },
- { value: "1", label: "无效" },
- ],
- formRules: {
- title: [{ required: true, message: "请输入标题", trigger: "blur" }],
- author: [{ required: true, message: "请输入作者", trigger: "blur" }],
- url: [
- { required: true, message: "请输入文章跳转地址", trigger: "blur" },
- ],
- publishTime: [
- { required: true, message: "请选择发布时间", trigger: "change" },
- ],
- type: [{ required: true, message: "请选择类别", trigger: "change" }],
- publishType: [
- { required: true, message: "请选择类别", trigger: "change" },
- ],
- status: [{ required: true, message: "请选择状态", trigger: "change" }],
- digest: [{ required: true, message: "请输入摘要", trigger: "blur" }],
- },
- };
- },
- watch: {
- infoData: {
- handler(newVal) {
- if (newVal) {
- this.formData = {
- officialAccountId: newVal.officialAccountId || "",
- title: newVal.title || "",
- author: newVal.author || "",
- thumbUrl: newVal.thumbUrl || "",
- showCoverPic: newVal.showCoverPic || "1",
- url: newVal.url || "",
- publishTime: newVal.publishTime || "",
- digest: newVal.digest || "",
- status: newVal.status || "",
- publishType: newVal.publishType || "",
- };
- this.$nextTick(() => {
- this.$refs.form && this.$refs.form.clearValidate();
- });
- }
- },
- immediate: true,
- },
- },
- created() {},
- methods: {
- // 是否展示封面
- // handleShow(val) {
- // this.formData.showCoverPic = val;
- // },
- handleConfirm() {
- this.$refs["form"].validate((valid) => {
- if (valid) {
- this.$emit("save", this.formData);
- } else {
- this.$message.warning("表单校验不通过,请检查");
- }
- });
- },
- handleCancel() {
- this.formData = {
- title: "",
- author: "",
- thumbUrl: "",
- showCoverPic: "1",
- url: "",
- publishTime: "",
- digest: "",
- status: "",
- publishType: "",
- };
- this.$refs.form.clearValidate();
- this.$emit("cancel");
- },
- },
- };
- </script>
|