<!--待办事件--> <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>