operation.vue 4.14 KB
<template>
  <main class="operation_container">
    <section class="operation_content">
      <el-form :model="operForm" :rules="rules" ref="operForm" label-width="100px" size="small">
        <el-form-item label="标题" prop="title">
          <el-input v-model="operForm.title" placeholder="给目标起个名字"></el-input>
        </el-form-item>
        <el-form-item label="Banner" prop="idialogImageUrl">
          <el-upload action="#" list-type="picture-card" :auto-upload="false" :limit="1">
            <div slot="default">
              <span>
                上传图片
              </span>
            </div>
            <div slot="file" slot-scope="{file}">
              <img class="el-upload-list__item-thumbnail" :src="file.url" alt="">
              <span class="el-upload-list__item-actions">
                <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
                  <i class="el-icon-view"></i>
                </span>
                <span v-if="!operForm.disabled" class="el-upload-list__item-delete" @click="handleRemove(file)">
                  <i class="el-icon-delete"></i>
                </span>
              </span>
            </div>
          </el-upload>
          <span>
            支持扩展名:.jpg .jpeg .png .gif大小1M以内
            <br>
            建议尺寸:414px*890px
          </span>
          <el-dialog :visible.sync="operForm.dialogVisible">
            <img width="100%" :src="operForm.dialogImageUrl" alt="">
          </el-dialog>
        </el-form-item>
        <el-form-item label="类型" prop="type">
          <el-select v-model="operForm.type" placeholder="请选择">
            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="链接" prop="link">
          <el-input v-model="operForm.link" placeholder="给目标起个名字"></el-input>
        </el-form-item>
        <el-form-item label="启用" prop="status">
          <el-switch v-model="operForm.status">
          </el-switch>
        </el-form-item>
        <el-form-item style="text-align: right;">
          <el-button type="primary" @click="submitForm('operForm')">提交</el-button>
        </el-form-item>
      </el-form>
    </section>
  </main>
</template>
<script>
export default {
  name: 'CarouselOperation',
  data() {
    return {
      operForm: {
        title: '',
        idialogImageUrl: '',
        type: '',
        link: '',
        status: 0,
        dialogVisible: false,
        disabled: false
      },
      options: [{
          value: '选项1',
          label: '黄金糕'
        }, {
          value: '选项2',
          label: '双皮奶'
        }, {
          value: '选项3',
          label: '蚵仔煎'
        }, {
          value: '选项4',
          label: '龙须面'
        }, {
          value: '选项5',
          label: '北京烤鸭'
        }],
      rules: {
        title: [
          { required: true, message: '请输入活动名称', trigger: 'blur' }
        ],
        idialogImageUrl: [
          { required: true, message: '请选择活动区域', trigger: 'change' }
        ],
        type: [
         { required: true, message: '请输入活动名称', trigger: 'blur' }
        ],
        link: [
          { required: true, message: '请输入活动名称', trigger: 'blur' }
        ],
        status: [
          { required: true, message: '请选择活动资源', trigger: 'change' }
        ]
      }
    }
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert('submit!');
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
    handleRemove(file) {
      console.log(file);
    },
    handlePictureCardPreview(file) {
      this.dialogImageUrl = file.url;
      this.dialogVisible = true;
    }
  }
}
</script>
<style lang="scss" scoped>
.operation_container {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  .operation_content {
    width: 520px;
  }
}
</style>