|
|
|
@ -0,0 +1,205 @@
|
|
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|
<div class="content">
|
|
|
|
|
<cs-search title="案件检索" :data="searchData" :span="4" direction="row" @onSearch="onSearch" @getData="onSearch" />
|
|
|
|
|
<div class="index-content">
|
|
|
|
|
<div class="header">
|
|
|
|
|
<el-dropdown @command="handleSelect">
|
|
|
|
|
<el-button type="primary">批量操作<i class="el-icon-arrow-down el-icon--right" /></el-button>
|
|
|
|
|
<el-dropdown-menu slot="dropdown">
|
|
|
|
|
<el-dropdown-item command="1">批量删除</el-dropdown-item>
|
|
|
|
|
<el-dropdown-item command="2">批量恢复</el-dropdown-item>
|
|
|
|
|
</el-dropdown-menu>
|
|
|
|
|
</el-dropdown>
|
|
|
|
|
</div>
|
|
|
|
|
<vxe-grid v-bind="gridOptions" style="margin-top: 20px" @checkbox-change="selectChangeEvent">
|
|
|
|
|
<template #operate="{row}">
|
|
|
|
|
<el-button type="text" @click="resetData(row)">恢复</el-button>
|
|
|
|
|
<el-button type="text" style="color: red" @click="handleDel(row)">删除</el-button>
|
|
|
|
|
</template>
|
|
|
|
|
</vxe-grid>
|
|
|
|
|
<div style="text-align: center">
|
|
|
|
|
<cs-page
|
|
|
|
|
:page.sync="queryForm.page"
|
|
|
|
|
:limit.sync="queryForm.size"
|
|
|
|
|
:total="queryForm.total"
|
|
|
|
|
@pagination="fetchData"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import mixin from '@/views/mixin'
|
|
|
|
|
import { resetDataStatusByIds, realDeleteByIds, queryCaseList } from '@/api/caseManagement'
|
|
|
|
|
export default {
|
|
|
|
|
name: 'Index',
|
|
|
|
|
mixins: [mixin],
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
// 筛选数据
|
|
|
|
|
searchData: [
|
|
|
|
|
{ label: '案件编号', model: 'caseNo', type: 'input' },
|
|
|
|
|
{ label: '案件名称', model: 'caseName', type: 'input' },
|
|
|
|
|
{ label: '认定结果', model: 'identifyResult', type: 'selectMultiple', option: JSON.parse(sessionStorage.getItem('identify_result')) }
|
|
|
|
|
// { label: '涉案人员', model: 'involvedPerson', type: 'input' },
|
|
|
|
|
// { label: '最新时间', model: 'updateTime', type: 'datetimerange' }
|
|
|
|
|
],
|
|
|
|
|
// 表格配置
|
|
|
|
|
gridOptions: {
|
|
|
|
|
...mixin.data().gridOptions,
|
|
|
|
|
// 指标名称单元格添加样式
|
|
|
|
|
cellClassName: ({ column }) => {
|
|
|
|
|
if (column.field === 'indexName') {
|
|
|
|
|
return 'text-blue'
|
|
|
|
|
}
|
|
|
|
|
return null
|
|
|
|
|
},
|
|
|
|
|
columns: [
|
|
|
|
|
{ type: 'checkbox', width: '80px' },
|
|
|
|
|
{ title: '案件编号', field: 'caseNo' },
|
|
|
|
|
{ title: '案件名称', field: 'caseName' },
|
|
|
|
|
{ title: '行为人', field: 'caseActorName' },
|
|
|
|
|
{ title: '当事人', field: 'lawParty' },
|
|
|
|
|
{ title: '综合得分', field: 'totalScore' },
|
|
|
|
|
{ title: '认定结果', field: 'identifyResultName' },
|
|
|
|
|
{ title: '删除时间', field: 'updateTime' },
|
|
|
|
|
{ title: '操作', slots: { default: 'operate' }, fixed: 'right', width: '150px' }
|
|
|
|
|
],
|
|
|
|
|
data: []
|
|
|
|
|
},
|
|
|
|
|
selectionRows: [],
|
|
|
|
|
selectedRowKeys: []
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
mounted() {
|
|
|
|
|
this.tableHeight(390)
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
// 原子指标查询
|
|
|
|
|
fetchData() {
|
|
|
|
|
const params = JSON.parse(JSON.stringify(this.searchFormData))
|
|
|
|
|
params.isDelete = true
|
|
|
|
|
if (params.identifyResult && params.identifyResult.length === 0) delete params['identifyResult']
|
|
|
|
|
queryCaseList(params, this.queryForm.page, this.queryForm.size).then(res => {
|
|
|
|
|
this.gridOptions.data = res.data.records
|
|
|
|
|
this.gridOptions.data.forEach(e => {
|
|
|
|
|
const list = []
|
|
|
|
|
for (const item of e.lawPartyList) {
|
|
|
|
|
list.push(item.name)
|
|
|
|
|
}
|
|
|
|
|
e.lawParty = list.length > 0 ? list.join(',') : '无'
|
|
|
|
|
})
|
|
|
|
|
this.queryForm.total = res.data.total
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
async handleSelect(val) {
|
|
|
|
|
if (this.selectionRows.length === 0) {
|
|
|
|
|
this.$baseMessage.error('至少选择一条数据!')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
const list = []
|
|
|
|
|
this.selectionRows.forEach(e => {
|
|
|
|
|
list.push(e.id)
|
|
|
|
|
})
|
|
|
|
|
if (val === '1') {
|
|
|
|
|
this.$baseConfirm('确定要删除吗?', null, async() => {
|
|
|
|
|
const { code, msg } = await realDeleteByIds(list)
|
|
|
|
|
code === 200 ? this.$baseMessage.success(msg || '删除成功!') : this.$baseMessage.error(msg || '删除失败!')
|
|
|
|
|
this.fetchData()
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
const { code, msg } = await resetDataStatusByIds(list)
|
|
|
|
|
if (code === 200) {
|
|
|
|
|
this.$baseMessage.success(msg || '恢复成功!')
|
|
|
|
|
this.fetchData()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
// 复选框事件(保留翻页选中的数据)
|
|
|
|
|
selectChangeEvent({ checked, records, reserves, row }) {
|
|
|
|
|
// 勾选选中时
|
|
|
|
|
if (checked) {
|
|
|
|
|
// 第一次选数据,还未进行翻页时
|
|
|
|
|
if (reserves.length === 0) {
|
|
|
|
|
this.selectedRowKeys = records.map(v => v.id)
|
|
|
|
|
this.selectionRows = records
|
|
|
|
|
} else {
|
|
|
|
|
// id集合,翻页存在已选中的数据时,拼接新选中的数据
|
|
|
|
|
this.selectedRowKeys = [...reserves.map(v => v.id), ...records.map(v => v.id)]
|
|
|
|
|
// 数据集合,翻页存在已选中的数据时,拼接新选中的数据
|
|
|
|
|
this.selectionRows = [...reserves, ...records]
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 取消选中时
|
|
|
|
|
const idIndex = this.selectedRowKeys.indexOf(row.id)
|
|
|
|
|
if (idIndex > -1) {
|
|
|
|
|
// 删除取消选中删除指定元素id
|
|
|
|
|
this.$delete(this.selectedRowKeys, idIndex)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let dataIndex = null
|
|
|
|
|
for (let i = 0; i < this.selectionRows.length; i++) {
|
|
|
|
|
if (this.selectionRows[i].id === row.id) {
|
|
|
|
|
dataIndex = i
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 删除取消选中的元素整个对象
|
|
|
|
|
this.$delete(this.selectionRows, dataIndex)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
// 恢复
|
|
|
|
|
async resetData(row) {
|
|
|
|
|
const { code, msg } = await resetDataStatusByIds([row.id])
|
|
|
|
|
if (code === 200) {
|
|
|
|
|
this.$baseMessage.success(msg || '恢复成功!')
|
|
|
|
|
this.fetchData()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
// 删除
|
|
|
|
|
handleDel(row) {
|
|
|
|
|
this.$baseConfirm('确定要删除吗?', null, async() => {
|
|
|
|
|
const { code, msg } = await realDeleteByIds([row.id])
|
|
|
|
|
code === 200 ? this.$baseMessage.success(msg || '删除成功!') : this.$baseMessage.error(msg || '删除失败!')
|
|
|
|
|
this.fetchData()
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
// 筛选
|
|
|
|
|
onSearch(data, callback) {
|
|
|
|
|
this.searchFormData = Object.assign({}, data)
|
|
|
|
|
this.queryForm.page = 1
|
|
|
|
|
this.fetchData()
|
|
|
|
|
if (callback) callback(true)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
|
.content {
|
|
|
|
|
height: 100%;
|
|
|
|
|
.index-content {
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
background: white;
|
|
|
|
|
padding: 20px;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
margin-top: 10px;
|
|
|
|
|
height: calc(100% - 120px);
|
|
|
|
|
}
|
|
|
|
|
.expand-details {
|
|
|
|
|
background: #F6F6F6;
|
|
|
|
|
padding: 8px 20px;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
::v-deep {
|
|
|
|
|
.text-blue {
|
|
|
|
|
color: #005AA8;
|
|
|
|
|
}
|
|
|
|
|
.header-blue {
|
|
|
|
|
background: #F2F6FA;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|