<!--待办事件-->
<template>
  <app-container>
    <case-search :list-query="listQuery" @search="search"/>
    <case-list-table :list-query="listQuery" :list="list" :total="total" :list-loading="listLoading" @changePage="changePage">
      <template slot="operations">
        <el-table-column label="操作" align="center" width="200">
          <template slot-scope="scope">
            <el-button type="text" size="small" @click.stop="processCase(scope.row)">任务办理</el-button>
            <el-button type="text" size="small" @click.stop="applyDelay(scope.row)">申请延期</el-button>
            <el-button type="text" size="small" @click.stop="applyReport(scope.row)">上报请示</el-button>
          </template>
        </el-table-column>
      </template>
    </case-list-table>

    <el-dialog :visible.sync="delayDialogVisible" :close-on-click-modal="false" title="申请延期" append-to-body @close="cancelDelay">
      <el-form ref="delayForm" :model="delayForm" :rules="delayRules" label-width="auto">
        <el-form-item label="延期时间" prop="delayTime">
          <el-date-picker v-model="delayForm.delayTime" type="datetime" value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择延期时间"/>
        </el-form-item>
        <el-form-item label="申请理由" prop="applyReason">
          <el-input v-model="delayForm.applyReason" type="textarea"/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="cancelDelay()">取消</el-button>
        <el-button type="primary" @click="submitDelay()">确定</el-button>
      </div>
    </el-dialog>
  </app-container>
</template>

<script>
import AppContainer from '@/components/layout/AppContainer'
import CaseSearch from './caseCommon/caseSearch'
import CaseListTable from './caseCommon/caseListTable'
import { workList } from '@/api/callCase'
import { applyDelay } from '@/api/caseDelay'

export default {
  name: 'WaitForHandle',
  components: { CaseSearch, CaseListTable, AppContainer },
  data() {
    return {
      listQuery: {
        caseId: '', // 事件编号
        title: '', // 事件标题
        description: '', // 事件内容
        reporterPhone: '', // 联系方式
        reporterName: '', // 联系人
        startTime: '', // 来电开始时间
        endTime: '', // 来电结束时间
        caseState: '', // 处理方式
        state: '', // 处理状态
        isDelay: '', // 事件状态
        source: '', // 事件来源
        caseLevel: '', // 紧急程度
        offset: 1,
        limit: 20,
        sort: 'createTime',
        order: 'desc'
      }, // 筛选条件
      list: [], // 列表数据
      total: 0, // 数据总数
      listLoading: true, // 列表加载动画
      delayDialogVisible: false, // 申请延期对话框
      delayForm: {
        caseId: '',
        delayTime: '',
        applyReason: ''
      },
      delayRules: {
        delayTime: [{ required: true, message: '请选择延期时间', trigger: ['change', 'blur'] }],
        applyReason: [{ required: true, message: '请填写申请理由', trigger: ['change', 'blur'] }]
      }
    }
  },
  created() {
    this.fetchData()
  },
  methods: {
    fetchData() {
      this.listLoading = true
      workList(this.listQuery).then(response => {
        this.list = response.data.rows
        this.total = response.data.totalt
        this.listLoading = false
      })
    },
    search(listQuery) {
      console.log('search')
      this.fetchData()
    },
    changePage(listQuery) {
      console.log('changePage')
      this.fetchData()
    },
    // 任务办理
    processCase(row) {
      this.$router.push({
        path: '/caseDetail/' + row.id,
        query: {
          showProcess: true
        }
      })
    },
    // 申请延期
    applyDelay(row) {
      this.delayDialogVisible = true
      this.delayForm.caseId = row.id
    },
    resetDeleyForm() {
      this.$refs['delayForm'].resetFields()
      this.delayForm = {
        id: '',
        delayTime: '',
        applyReason: ''
      }
    },
    cancelDelay() {
      this.delayDialogVisible = false
      this.resetDeleyForm()
    },
    submitDelay() {
      this.$refs['delayForm'].validate((valid) => {
        if (valid) {
          applyDelay(this.delayForm).then(res => {
            this.$message.success('申请延期成功')
            this.cancelDelay()
          }).catch((res) => {
            this.cancelDelay()
          })
        }
      })
    },
    // 上报请示
    applyReport(row) { }
  }
}
</script>

<style scoped>

</style>
