<template>
  <!--批量修改-->
  <el-dialog class="upload-dialog" title="批量修改" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="bulkEditingVisible">
    <div class="setting-dialog">
      <div class="bulk-editing-container">
        <el-form ref="editForm" :model="editForm" :rules="editRules" label-width="100px">
          <el-form-item label="修改字段" prop="fieldItem">
            <el-select v-model="editForm.fieldItem" placeholder="请选择" style="width: 360px;">
              <el-option
                v-for="item in fieldItemOptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              />
            </el-select>
          </el-form-item>
          <el-form-item label="修改方式" prop="type">
            <el-select v-model="editForm.type" placeholder="请选择" style="width: 360px;">
              <el-option
                v-for="item in editTypeOptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              />
            </el-select>
          </el-form-item>
          <el-form-item v-if="editForm.type === '替换'" label="查询内容" prop="content">
            <el-input v-model="editForm.queryContent" style="width: 360px;" />
          </el-form-item>
          <el-form-item label="更新内容" prop="content">
            <el-input v-if="editForm.fieldItem !== '2' && editForm.fieldItem !== '3'" v-model="editForm.content" style="width: 360px;" />
            <el-select v-if="editForm.fieldItem === '2'" v-model="editForm.content" placeholder="请选择" style="width: 360px;">
              <el-option
                v-for="item in fieldOptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              />
            </el-select>
            <el-date-picker
              v-if="editForm.fieldItem === '3'"
              v-model="editForm.content"
              type="date"
              placeholder="选择日期"
              style="width: 360px;"
            />
          </el-form-item>
        </el-form>
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button type="text" @click="bulkEditingVisible = false">取消</el-button>
        <el-button type="primary" @click.native="onSubmitBlukEditing('editForm')">确定</el-button>
      </div>
    </div>
  </el-dialog>
</template>

<script>
export default {
  name: 'BlukEditing',
  components: { },
  mixins: [],
  data() {
    return {
      // 批量修改
      bulkEditingVisible: false,
      editForm: {
        fieldItem: '',
        type: '填充',
        queryContent: '',
        content: ''
      },
      fieldItemOptions: [
        {
          value: '1',
          label: '非字典项&&文本'
        },
        {
          value: '2',
          label: '字典项'
        },
        {
          value: '3',
          label: '日期'
        },
        {
          value: '4',
          label: '数字'
        }
      ],
      editTypeOptions: [],
      fieldOptions: [
        {
          value: '字典项1',
          label: '字典项1'
        }
      ]
    }
  },
  computed: {
    editRules() {
      const validateRule = {
        fieldItem: [
          { required: true, message: '请选择修改字段', trigger: 'change' }
        ],
        type: [
          { required: true, message: '请选择修改方式', trigger: 'change' }
        ],
        queryContent: [
          { required: true, message: '请输入', trigger: 'blur' }
        ],
        content: [
          { required: true }
        ]
      }
      if (this.editForm.fieldItem === '2') {
        this.$set(validateRule, 'content', [
          { required: true, message: '请选择需更新内容得字典项', trigger: 'change' }
        ])
      } else if (this.editForm.fieldItem === '3') {
        this.$set(validateRule, 'content', [
          { type: 'date', required: true, message: '请选择日期', trigger: 'change' }
        ])
      } else {
        this.$set(validateRule, 'content', [
          { required: true, message: '请输入更新内容', trigger: 'blur' }
        ])
      }
      return validateRule
    }
  },
  watch: {
    'editForm.fieldItem'(newVal) {
      this.$refs.editForm.clearValidate()
      this.editForm.content = ''
      this.editForm.type = '填充'
      if (newVal === '1') {
        this.editTypeOptions = [{
          value: '填充',
          label: '填充'
        },
        {
          value: '替换',
          label: '替换'
        }]
      } else if (newVal === '2' || newVal === '3') {
        this.editTypeOptions = [{
          value: '填充',
          label: '填充'
        }]
      } else if (newVal === '4') {
        this.editTypeOptions = [{
          value: '填充',
          label: '填充'
        },
        {
          value: '替换',
          label: '替换'
        },
        {
          value: '增加',
          label: '增加'
        },
        {
          value: '减少',
          label: '减少'
        }]
      }
    }
  },
  methods: {
    onSubmitBlukEditing(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.$message('submit!')
          this.bulkEditingVisible = false
        } else {
          console.log('error submit!!')
          return false
        }
      })
    }
  }
}
</script>

<style lang='scss' scoped>
</style>
