<template>
  <el-card class="box-card" shadow="always">
    <div slot="header" class="clearfix">
      <span>{{ title }}</span>
      <el-button-group style="float: right;">
        <el-button type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
        <el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
      </el-button-group>
    </div>
    <div class="body-wrapper">
      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
        <div style="padding: 20px 200px">
          <el-form-item label="项目名称" prop="projectName">
            <el-input v-model="form.projectName" placeholder="请输入项目名称" />
          </el-form-item>

          <el-form-item label="项目描述" prop="projectDescription">
            <el-input v-model="form.projectDescription" type="textarea" placeholder="请输入项目描述" />
          </el-form-item>
        </div>
      </el-form>
    </div>
  </el-card>
</template>

<script>
  import { getProjectById, updateProject } from '@/api/monitor/projectApi'

  export default {
    name: 'ProjectEdit',
    props: {
      data: {
        type: Object,
        default: function() {
          return {}
        }
      }
    },
    data() {
      return {
        title: '项目修改',
        // 展示切换
        showOptions: {
          data: {},
          showList: true,
          showAdd: false,
          showEdit: false,
          showDetail: false
        },
        // 保存按钮
        loadingOptions: {
          loading: false,
          loadingText: '保存',
          isDisabled: false
        },
        // 表单参数
        form: {
          id: undefined,
          projectName: undefined,
          projectDescription: undefined,
          subjectId: undefined,
          deleted: undefined
        },
        // 表单校验
        rules: {
          projectName: [
            { required: true, message: '项目名称不能为空', trigger: 'change' }
          ]
        }
      }
    },
    created() {
    },
    mounted() {
      this.getProjectById(this.data.id)
    },
    methods: {
      showCard() {
        this.$emit('showCard', this.showOptions)
      },
      /** 获取详情 */
      async getProjectById(id) {
        this.form = await getProjectById(id).then(response => {
          if (response.code === 200) {
            return response.data
          }
        })
      },
      /** 提交按钮 */
      submitForm: function() {
        this.$refs['form'].validate(valid => {
          if (valid) {
            this.loadingOptions.loading = true
            this.loadingOptions.loadingText = '保存中...'
            this.loadingOptions.isDisabled = true
            updateProject(this.form).then(response => {
              if (response.code === 200) {
                this.$message.success('保存成功')
                setTimeout(() => {
                  // 2秒后跳转列表页
                  this.$emit('showCard', this.showOptions)
                }, 2000)
              } else {
                this.$message.error('保存失败')
                this.loadingOptions.loading = false
                this.loadingOptions.loadingText = '保存'
                this.loadingOptions.isDisabled = false
              }
            }).catch(() => {
              this.loadingOptions.loading = false
              this.loadingOptions.loadingText = '保存'
              this.loadingOptions.isDisabled = false
            })
          }
        })
      }
    }
  }
</script>

<style lang="scss" scoped>
  .el-card ::v-deep .el-card__body {
    height: calc(100vh - 230px);
    overflow-y: auto;
  }
  .choosedDbType{
    border: 1px solid #165DFF;
  }
</style>
