You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fu-hsi-web/src/views/caseDetails/components/CaseRecord.vue

223 lines
8.0 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
* @description: 案件笔录
* @fileName: CaseRecord
* @author: 17076
* @date: 2024/6/26-下午3:07
* @version: V1.0.0
-->
<template>
<div class="record-content">
<div v-if="isEdit" class="flex-row" style="align-items: center; justify-content: space-between">
<div>
<el-button type="primary" icon="el-icon-circle-plus-outline" @click="handleAdd">添加笔录</el-button>
<!-- <el-dropdown @command="handleSelect">
<el-button type="primary" icon="el-icon-circle-plus-outline">添加笔录</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="1">文档笔录</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown> -->
<el-button type="primary" style="margin-left: 16px;" @click="addUser">添加人员</el-button>
</div>
<el-input v-model="searchName" placeholder="搜索名称" style="width: 300px" />
</div>
<vxe-grid v-bind="gridOptions" style="margin-top: 10px">
<template #opera="{row}">
<el-button v-if="row.children.length === 0" type="text" icon="el-icon-video-play" :disabled="!isEdit" title="笔录分析" @click="handleCreateAtlas(row)" />
<el-button type="text" icon="el-icon-edit" title="编辑" :disabled="!isEdit" @click="handelEdit(row)" />
<el-button v-if="row.children.length === 0" type="text" icon="el-icon-delete" :disabled="!isEdit" style="color: red" title="删除" @click="handleDel(row)" />
<el-button v-if="row.children.length === 0" type="text" icon="el-icon-collection" :disabled="!isEdit" title="笔录提取" @click="handleExtract(row)" />
</template>
<template #percentage="{row}">
<div class="per-content">
<span>{{ row.percentage }}</span>
<el-badge v-if="row.isPromptUpdate" style="margin-left: 6px;">
<el-tag type="success">最新</el-tag>
</el-badge>
</div>
</template>
</vxe-grid>
<div style="text-align: center">
<cs-page
:page.sync="queryForm.page"
:limit.sync="queryForm.size"
:total="queryForm.total"
@pagination="fetchData"
/>
</div>
<!--新增用户-->
<add-case-user ref="addUser" :case-id="caseId" @reloadData="fetchData" />
<!--选择三元组信息入库-->
<triplet-info ref="triplet" />
<!--选择上传方式-->
<select-upload ref="type" @select="handleSelect" />
<!--新增/编辑笔录-->
<edit-record ref="edit" :case-id="caseId" @reloadData="refreshData" />
<!--选择上传笔录方式-->
<SelectUploadType ref="SelectUploadTypeRef" @selectOk="handleSelect" />
</div>
</template>
<script>
import mixin from '@/views/mixin'
import EditRecord from './edit/EditRecord.vue'
import SelectUpload from '@/views/caseDetails/components/edit/SelectUpload.vue'
// import OcrRecord from '@/views/caseDetails/components/edit/OcrRecord.vue'
import TripletInfo from '@/views/caseDetails/components/TripletInfo.vue'
import { queryRecordList, delRecords, redoExtract } from '@/api/caseDetails'
import AddCaseUser from './edit/AddCaseUser.vue'
import { debounce } from '@/utils'
import SelectUploadType from './SelectUploadType.vue'
export default {
name: 'CaseRecord',
components: { TripletInfo, SelectUpload, EditRecord, AddCaseUser, SelectUploadType },
mixins: [mixin],
props: {
// 是否编辑
isEdit: {
type: Boolean,
default: false
},
// 是否展开
isExpand: {
type: Boolean,
default: true
}
},
data() {
return {
searchName: '',
// 案件id
caseId: '',
gridOptions: {
...mixin.data().gridOptions,
columns: [
{ title: '序号', field: 'serialNumber' },
{ title: '姓名', field: 'name', sortable: true },
// { title: '笔录序号', field: 'recordNum', sortable: true },
{ title: '角色', field: 'roleName' },
{ title: '供述材料', field: 'confessionMaterial' },
{ title: '询问人', field: 'lawAsker' },
{ title: '进度', field: 'percentage', slots: { default: 'percentage' }},
{ title: '供述开始时间', field: 'confessionStartTime' },
{ title: '供述结束时间', field: 'confessionEndTime' },
{ 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' }]
}
}
},
watch: {
isExpand: {
handler: function(newVal, oldVal) {
if (newVal !== oldVal) {
this.tableHeight(this.isExpand ? (this.isEdit ? 580 : 530) : (this.isEdit ? 400 : 320))
}
}
},
searchName: function() {
this.debounceSearch(this)
}
},
mounted() {
this.caseId = this.$route.params.id
this.$nextTick(() => {
this.tableHeight(this.isExpand ? (this.isEdit ? 580 : 530) : (this.isEdit ? 400 : 320))
})
this.fetchData()
},
methods: {
// 防抖查询数据
debounceSearch: debounce((_this) => {
_this.fetchData()
}),
// 获取数据
fetchData() {
queryRecordList({ name: this.searchName, caseId: this.caseId }, this.queryForm.page, this.queryForm.size).then(res => {
this.gridOptions.data = res.data.result
this.gridOptions.data.forEach(e => {
if (e.percentage == null) {
e.percentage = '未提取'
}
})
this.queryForm.total = res.data.total
})
},
// 刷新数据
refreshData() {
this.fetchData()
this.$emit('reloadData')
},
addUser() {
this.$refs.addUser.show()
},
// 添加笔录
// handleAdd() {
// this.$refs.type.show()
// },
// 上传方式选择
handleAdd() {
this.$refs.SelectUploadTypeRef.show()
// val === '1' ? this.$refs.edit.show() : this.$router.push({ path: `/add-record/${this.caseId}`, query: { isEdit: 0 }})
},
handleSelect(val) {
val === '1' ? this.$refs.edit.show() : this.$router.push({ path: `/add-record/${this.caseId}`, query: { caseName: this.$route.params.caseName, caseNo: this.$route.query.caseNo }})
},
// 笔录分析
handleCreateAtlas(row) {
if (row.percentage === '未提取') {
this.$baseMessage.error('请先操作笔录提取')
return
}
this.$refs.triplet.show(row)
},
// 编辑
handelEdit(row) {
if (row.recordType === '1' && row.imgRecordStatus !== '3') {
this.$router.push({ path: `/edit-record/${this.caseId}/${row.id}`, query: { caseName: this.$route.params.caseName, caseNo: this.$route.query.caseNo, recordId: row.id, imgRecordStatus: row.imgRecordStatus }})
} else {
this.$refs.edit.show(row, true)
}
},
// 删除
handleDel(row) {
this.$baseConfirm('你确定要删除当前项吗', null, async() => {
const { code, msg } = await delRecords(row['id'])
code === 200 ? this.$baseMessage.success(msg || '删除成功!') : this.$baseMessage.error(msg || '删除成功!')
this.fetchData()
})
},
handleExtract(row) {
if (row.percentage !== '100%' && row.percentage !== '未提取') {
this.$baseMessage.error('笔录解析任务未完成,请等待!')
return
}
const fileIdList = []
row.fileList.forEach(e => {
fileIdList.push(e.fileId)
})
const params = {
caseId: this.caseId,
name: row.name,
fileIdList,
id: row.id
}
this.$baseConfirm('你确定要重新提取当前笔录信息吗笔录提取可能需要10-20分钟请重新执行【模型分析】获得最新分数。', null, async() => {
const { code, msg } = await redoExtract(params)
code === 200 ? this.$baseMessage.success(msg || '提取成功!') : this.$baseMessage.error(msg || '提取成功!')
this.fetchData()
})
}
}
}
</script>
<style scoped lang="scss">
.record-content {
}
</style>