fix: 测试问题修改,案件回收页面开发

dev_1.0.0
xiangcongshuai 9 months ago
parent f818f8b0e6
commit 88ba4b90f0

@ -72,4 +72,21 @@ export function robotChat(data) {
method: 'post',
data
})
}
/** 批量恢复 */
export function resetDataStatusByIds(data) {
return request({
url: `/modelCase/resetDataStatusByIds`,
method: 'post',
data
})
}
/** 批量删除 */
export function realDeleteByIds(data) {
return request({
url: `/modelCase/realDeleteByIds`,
method: 'delete',
data
})
}

@ -10,7 +10,6 @@
<el-dialog
:visible.sync="dialogVisible"
width="1300px"
:show-close="false"
append-to-body
:before-close="handleClose"
>

@ -5,7 +5,7 @@ const network = {
// 默认的接口地址 如果是开发环境和生产环境走vab-mock-server当然你也可以选择自己配置成需要的接口地址
baseURL:
process.env.NODE_ENV === 'development'
? 'http://192.168.10.27:8097/fu-hsi-server'
? 'http://192.168.10.25:8097/fu-hsi-server'
: '/fuHsiApi',
// 配后端数据的接收方式application/json;charset=UTF-8或者application/x-www-form-urlencoded;charset=UTF-8
contentType: 'application/json;charset=UTF-8',

@ -109,9 +109,9 @@ export default {
if (Number(tab.index) === 0) {
//
this.$router.push({
path: '/index',
path: '/case-management',
query: {},
fullPath: '/index'
fullPath: '/case-management'
})
return
}

@ -12,7 +12,6 @@ import '@/utils/errorLog'
import Auth from '@/directive/auth'
import clickoutside from '@/directive/clickoutside'
// 注册全局逐渐
import Dw from './register'
// 注册el组件消息提醒
@ -21,3 +20,21 @@ Vue.use(ElMe)
Vue.directive('auth', Auth)
Vue.directive('clickoutside', clickoutside)
Vue.use(Dw)
Vue.directive('debounce', {
// 当被绑定的元素插入到 DOM 中时……
inserted: function(el, binding) {
// binding.value使用自定义指令v-debounce时填写的参数
// 解构赋值定义了3个变量将参数数组按顺序进行赋值
const [fn, event = 'click', time = 300] = binding.value
let timer
el.addEventListener(event, () => {
// 默认监听的事件为click
// 判断计时器是否存在存在则清除计时器。重新创建计时器到时间后执行函数fn
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => fn(), time)
})
}
})

@ -68,7 +68,14 @@ export const asyncRoutes = [
name: 'CaseManagement',
permission: 'p_caseManagement',
component: () => import('@/views/caseManagement/index.vue'),
meta: { title: '案件管理', affix: false }
meta: { title: '经侦案件', affix: false, subtitle: '模型可分析处理的活跃有效案件数据' }
},
{
path: '/case-recovery',
name: 'CaseRecovery',
permission: 'p_caseRecovery',
component: () => import('@/views/caseManagement/caseRecovery/index.vue'),
meta: { title: '案件回收', affix: false, subtitle: '已删除案件数据的回收站' }
}
]
},

@ -63,7 +63,7 @@ export default {
{ title: '证据名称', field: 'evidenceName' },
{ title: '证据类型', field: 'evidenceTypeDesc' },
// { title: '', field: 'confessionMaterial' },
{ title: '最新时间', field: 'createTime' },
{ title: '最新时间', field: 'updateTime' },
{ title: '操作', slots: { default: 'opera' }, fixed: 'right', width: '100px' }
],
data: [{}]

@ -14,7 +14,7 @@
<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-item command="2">图像笔录</el-dropdown-item> -->
</el-dropdown-menu>
</el-dropdown>
<el-button type="primary" style="margin-left: 16px;" @click="addUser"></el-button>
@ -38,7 +38,7 @@
/>
</div>
<!--新增用户-->
<add-case-user ref="addUser" @reloadData="fetchData" :case-id="caseId" />
<add-case-user ref="addUser" :case-id="caseId" @reloadData="fetchData" />
<!--选择三元组信息入库-->
<triplet-info ref="triplet" />
<!--选择上传方式-->
@ -95,7 +95,7 @@ export default {
{ title: '进度', field: 'percentage' },
{ title: '供述开始时间', field: 'confessionStartTime' },
{ title: '供述结束时间', field: 'confessionEndTime' },
{ title: '最新时间', field: 'createTime' },
{ title: '最新时间', field: 'updateTime' },
{ title: '操作', slots: { default: 'opera' }, fixed: 'right', width: '200px' }
],
data: [{ name: '裴金禄', '笔录序号': '1', roleName: '被害人', confessionMaterial: '3', questioner: '1', startTime: '2024/6/26', newDate: '2024/6/26', endTime: '2024/6/26' }]

@ -107,7 +107,8 @@ export default {
data.fileList.forEach(e => {
list.push(e.fileId)
this.fileList.push({
name: e.fileName
name: e.fileName,
fileId: e.fileId
})
})
this.evidenceForm.fileIdList = list
@ -156,7 +157,7 @@ export default {
handleRemove(file, uploadFiles) {
const list = []
for (const item of uploadFiles) {
list.push(item.response.data)
list.push(item.fileId)
}
this.evidenceForm.fileIdList = list
},

@ -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>

@ -48,6 +48,7 @@
<script>
import { addCaseInfo, checkCaseNo } from '@/api/caseManagement'
import { validIdCard } from '@/utils/validate'
import { debounce } from '@/utils'
export default {
name: 'EditCaseInfo',
data() {
@ -121,8 +122,7 @@ export default {
if (this.isEdit) return
this.$refs.form.resetFields()
},
//
handleSubmit() {
handleSubmit: debounce(function() {
this.$refs['form'].validate(async valid => {
if (valid) {
const { code, msg } = await addCaseInfo(this.caseForm)
@ -131,7 +131,8 @@ export default {
this.$emit('reloadData')
}
})
}
})
}
}
</script>

@ -18,10 +18,10 @@
</div> -->
<input ref="file" type="file" style="display: none" @change="uploadFile">
</div>
<el-row :gutter="20" type="flex" class="list-content">
<el-row :gutter="24" type="flex" class="list-content">
<div class="list-span">
<el-col v-for="item in caseList" :key="item.id" :span="6">
<el-col v-for="item in caseList" :key="item.id" style="height: 225px;" :span="6">
<div class="list-item" @click="handleClick(item)">
<div class="flex-row item-header">
<div class="flex-row" style="align-items: center;flex: 1">
@ -47,7 +47,7 @@
<el-col :span="8">
<span class="item-body-top etc">{{ `行为人:${item['caseActorName'] ? item['caseActorName'] : '-'}` }}</span>
</el-col>
<!-- <el-col :span="8">-->
<!-- <span class="item-body-top etc">{{ `证据数量:${item.evidenceNum}` }}</span>-->
<!-- </el-col>-->
@ -219,7 +219,7 @@ export default {
},
//
handleDel(item) {
this.$baseConfirm('确定要删除吗?', null, async() => {
this.$baseConfirm('删除案件信息后,可通过‘案件管理-案件回收’功能恢复案件', null, async() => {
const { code, msg } = await delCaseInfo(item['id'])
code === 200 ? this.$baseMessage.success(msg, '删除成功!') : this.$baseMessage.error(msg, '删除失败!')
this.fetchData()
@ -296,7 +296,9 @@ export default {
height: calc(100% - 32px - 32px - 20px);
flex-wrap: wrap;
.list-span {
width: 100%;
width: 100%;
// display: flex;
// flex-wrap: wrap;
}
.list-item {
background: #F2F5F9;

@ -128,6 +128,7 @@ export default {
name: '',
remark: ''
},
id: '',
rules: {
indexSource: [{ required: true, message: '指标算法不能为空!', trigger: 'blur' }],
caseType: [{ required: true, message: '案件类型不能为空!', trigger: 'blur' }],
@ -148,6 +149,7 @@ export default {
show(data, isEdit) {
this.isEdit = isEdit
this.drawerOption.show = true
this.id = isEdit ? data.id : ''
this.$nextTick(() => {
const _this = this
const formData = data ? JSON.parse(JSON.stringify(data)) : { indexSource: '1' }
@ -165,6 +167,9 @@ export default {
handleSubmit() {
this.$refs.form.validate(async valid => {
if (valid) {
if (this.isEdit) {
this.ruleForm.id = this.id
}
const { code, msg } = await addOrUpdAtomicIndex(this.ruleForm)
code === 200 ? (this.isEdit ? this.$baseMessage.success(msg || '编辑成功!') : this.$baseMessage.success(msg || '新增成功!')) : (this.isEdit ? this.$baseMessage.error(msg || '新增失败!') : this.$baseMessage.error(msg || '新增失败!'))
this.drawerOption.show = false

@ -81,7 +81,7 @@ export default {
fetchData() {
getUserList({
...this.searchFormData,
pageNumber: this.queryForm.page,
pageNum: this.queryForm.page,
pageSize: this.queryForm.size
}).then(res => {
this.gridOptions.data = res.data.records
@ -90,7 +90,7 @@ export default {
},
queryRoleList() {
getRoleList({
pageNumber: 1,
pageNum : 1,
pageSize: 999
}).then(res => {
const list = []

@ -70,7 +70,7 @@ export default {
fetchData() {
getRoleList({
roleName: this.searchFormData.roleName,
pageNumber: this.queryForm.page,
pageNum: this.queryForm.page,
pageSize: this.queryForm.size
}).then(res => {
this.gridOptions.data = res.data.records

@ -124,7 +124,7 @@ export default {
//
queryRole() {
getRoleList({
pageNumber: 1,
pageNum : 1,
pageSize: 999999
}).then(res => {
this.roleOptions = res.data.records

Loading…
Cancel
Save