<template>
  <div>
    <div class="con-title">{{ $t('pages.affairsHall.againAdd.applyforrerepair') }}</div>
    <div class="con-box">
      <el-button type="text" @click='gobackActiveList'>{{ $t('pages.affairsHall.againAdd.backlist') }}</el-button>
      <el-row type="flex" justify="center">
        <el-col :xs="24" :sm="24" :md="16" :lg="12" :xl="8">
          <el-form :disabled="this.isFormProhibit" ref="setApplyForm" :label-width="labelWidth" :model="setApply" :rules="applyRules">
            <el-form-item :label="$t('pages.affairsHall.againAdd.sname')" prop="personal_name">
              <el-input v-model="setApply.personal_name" :placeholder="$t('pages.affairsHall.againAdd.inputsname')" type="text" />
            </el-form-item>
            <el-form-item :label="$t('pages.affairsHall.againAdd.class')" prop="class_name">
              <el-input v-model="setApply.class_name" :placeholder="$t('pages.affairsHall.againAdd.inputclass')" type="text" />
            </el-form-item>
            <el-form-item :label="$t('pages.affairsHall.againAdd.Failedsemester')" prop="semester_name">
              <el-input v-model="setApply.semester_name" :placeholder="$t('pages.affairsHall.againAdd.inputFailedsemester')" type="text" />
            </el-form-item>
            <el-form-item :label="$t('pages.affairsHall.againAdd.Retraining')" prop="course_name">
              <el-input v-model="setApply.course_name" :placeholder="$t('pages.affairsHall.againAdd.inputRetraining')" type="text" />
            </el-form-item>
            <el-form-item :label="$t('pages.affairsHall.againAdd.Uploadpaymentvoucher')" prop="file">
              <el-upload
                v-if="!isFormProhibit"
                ref="upFile"
                class="upload-demo"
                list-type="picture-card"
                action=""
                :multiple="false"
                :limit="1"
                :on-change="handleChange"
                :http-request="uploadFile"
                :file-list="filesArr">
                <el-button size="small" type="primary">{{ $t('pages.affairsHall.againAdd.btnName') }}</el-button>
                <div slot="tip" class="el-upload__tip">{{ $t('pages.affairsHall.againAdd.upimg') }}</div>
              </el-upload>
              <img v-if="isFormProhibit" style="width:100px;height:100px" :src="dialogImageUrl" alt="">
              <el-dialog :visible.sync="dialogVisible">
                <img width="100%" :src="dialogImageUrl" alt="">
              </el-dialog>
            </el-form-item>
            <el-form-item v-if="isFormProhibit && approve_time !==null" :label="$t('pages.affairsHall.againAdd.approvalTime')" prop="sharing_theme">
              <el-input v-model="approve_time" placeholder="" type="text" />
            </el-form-item>
            <el-form-item v-if="isFormProhibit && remark !==null" :label="$t('pages.affairsHall.againAdd.remarks')" prop="content">
              <el-input v-model="remark" maxlength="50" placeholder="" type="textarea" :autosize="{ minRows: 5 }" />
            </el-form-item>
            <el-form-item>
              <el-button type="primary" @click="onApplyFrom" v-if="!isFormProhibit">{{ $t('pages.affairsHall.againAdd.saveSubmit') }}</el-button>
            </el-form-item>
          </el-form>
        </el-col>
      </el-row>
    </div>
  </div>
</template>
<script>
import cAction from '@action'

export default {
  props: {
    rid: { type: String, required: false }
  },
  components: {},
  data () {
    return {
      isFormProhibit: false,
      labelWidth: '110px',
      setApply: {
        personal_name: '',
        class_name: '',
        semester_name: '',
        course_name: ''
      },
      remark: '',
      approve_time: '',
      applyRules: {
        personal_name: [
          { required: true, message: '请输入您的姓名', trigger: 'blur' }
        ],
        class_name: [
          { required: true, message: '请输入您的班级', trigger: 'blur' }
        ],
        semester_name: [
          { required: true, message: '请输入您的挂科学期', trigger: 'blur' }
        ],
        course_name: [
          { required: true, message: '请输入您的重修课程名称', trigger: 'blur' }
        ]
      },
      successFileUrl: '',
      filesArr: [],
      file: {
        id: 'WU_FILE_0',
        name: '',
        type: '',
        lastModifiedDate: '',
        size: '',
        file: ''
      },
      dialogImageUrl: '',
      dialogVisible: false
    }
  },
  created () {
    this.affair_id = this.$route.query.id
  },
  mounted () {
    this.isFormProhibit = this.$route.query.is_view || false
    if (this.rid !== '-1') {
      const loading = this.$loading({ lock: true, text: '', spinner: '', background: 'rgba(255, 255, 255, 0.9)' })
      cAction.Affairs.getAffairsDetails(this.rid).then(data => {
        if (data.form.id) {
          this.setApply.personal_name = data.form.personal_name
          this.setApply.class_name = data.form.class_name
          this.setApply.semester_name = data.form.semester_name
          this.setApply.course_name = data.form.course_name
          this.dialogImageUrl = data.form.payment_instrument
          this.remark = data.remark1
          this.approve_time = data.approve_time1
        }
      }).catch(e => { this.$message.error(e.message) }).finally(() => { loading.close() })
    }
    window.addEventListener('resize', () => {
      const width = document.documentElement.clientWidth
      if (width < 790) {
        this.labelWidth = 'auto'
      } else {
        this.labelWidth = '110px'
      }
    })
  },
  methods: {
    handleChange (file, filelist) {
      this.file.name = file.raw.name
      this.file.type = file.raw.type
      this.file.lastModifiedDate = file.raw.lastModifiedDate
      this.file.size = file.raw.size
      this.file.file = file.raw
    },
    uploadFile () {
      const loading = this.$loading({ lock: true, text: '', spinner: '', background: 'rgba(255, 255, 255, 0.9)' })
      cAction.Affairs.uploadFile(this.file).then(data => {
        this.successFileUrl = data.url
        // this.filesArr.pop()
      }).catch(e => { this.filesArr.pop(); this.$message.error(e.message) }).finally(() => { loading.close() })
    },
    handlePictureCardPreview (file) {
      this.dialogImageUrl = file.url
      this.dialogVisible = true
    },
    gobackActiveList () {
      this.$router.push({ path: '/app/affairs-hall/hall', query: { index: 2 } })
    },
    onApplyFrom () {
      this.$refs.setApplyForm.validate((valid) => {
        if (valid) {
          if (!this.successFileUrl) {
            this.$message.error('请上传缴费凭证')
            return
            // this.$refs['setApplyForm'].resetFields()
          }
          const loading = this.$loading({ lock: true, text: '', spinner: '', background: 'rgba(255, 255, 255, 0.9)' })
          let reportActive = null
          if (this.rid !== '-1') {
            /* 修改 */
            reportActive = cAction.Affairs.submitLearning(this.rid, {
              symposium_name: this.setApply.name,
              symposium_time: this.setApply.time,
              symposium_lecturer: this.setApply.author,
              symposium_address: this.setApply.address,
              symposium_contents: this.setApply.content,
              symposium_attachments: this.successFileUrl
            })
          } else {
            /* 新建 */
            reportActive = cAction.Affairs.submitLearning({
              affair_id: this.affair_id,
              personal_name: this.setApply.personal_name,
              class_name: this.setApply.class_name,
              semester_name: this.setApply.semester_name,
              course_name: this.setApply.course_name,
              payment_instrument: this.successFileUrl
            })
          }
          reportActive.then(data => {
            if (data.success) {
              this.$message({ type: 'success', message: '提交成功' })
              setTimeout(() => {
                this.$router.push({ path: '/app/affairs-hall/hall', query: { index: 2 } })
              }, 500)
            }
          }).catch(e => { this.filesArr.pop(); this.$message.error(e.message) }).finally(() => { loading.close() })
        } else {
          this.$message.error('请检查输入项，确认无误后，重新提交')
          return false
        }
      })
    }
  }
}
</script>

<style lang="scss" scoped>
/* 申请 */
.el-date-editor.el-input {
  width: 100%;
}
.el-upload__tip {
  line-height: 1.5;
}
</style>
