feat:笔录案件需求修改,测试问题修改

dev_1.0.0
xiangcongshuai 9 months ago
parent 9ca4c9ae79
commit c1360bdc49

@ -160,3 +160,11 @@ export function caseScoreDetail(data) {
params: data params: data
}) })
} }
/** 修改案件人员 */
export function updatePerson(data) {
return request({
url: `/modelCase/updatePerson`,
method: 'post',
data
})
}

@ -37,7 +37,7 @@ export default {
pageSizes: { pageSizes: {
type: Array, type: Array,
default() { default() {
return [20, 40, 50, 100, 200] return [12, 20, 40, 50, 100, 200]
} }
}, },
layout: { layout: {

@ -131,8 +131,8 @@
format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"
type="datetimerange" type="datetimerange"
range-separator="至" range-separator="至"
start-placeholder="开始时间" start-placeholder="开始"
end-placeholder="结束时间" end-placeholder="结束"
/> />
<template v-else-if="item.type==='radio'"> <template v-else-if="item.type==='radio'">
<el-radio v-model="SearchformInline[index]" :label="item.option[0].value">{{ item.option[0].label }}</el-radio> <el-radio v-model="SearchformInline[index]" :label="item.option[0].value">{{ item.option[0].label }}</el-radio>
@ -146,8 +146,8 @@
</el-col> </el-col>
<el-col v-if="direction === 'row'" :span="4"> <el-col v-if="direction === 'row'" :span="4">
<el-form-item style="text-align: center"> <el-form-item style="text-align: center">
<el-button size="mini" icon="el-icon-refresh" plain @click="clearSearchformInline"></el-button>
<el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmit"></el-button> <el-button size="mini" type="primary" icon="el-icon-search" @click="onSubmit"></el-button>
<el-button size="mini" icon="el-icon-refresh" plain @click="clearSearchformInline"></el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col v-else :span="3"> <el-col v-else :span="3">

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

@ -238,7 +238,7 @@ export default {
if (latestView) { if (latestView) {
this.$router.push(latestView) this.$router.push(latestView)
} else { } else {
this.$router.push('/index') this.$router.push('/case-management')
} }
}, },
async toThisTag() { async toThisTag() {

@ -88,9 +88,9 @@ export default {
if (this.jumpTime) { if (this.jumpTime) {
this.jumpTime-- this.jumpTime--
} else { } else {
this.$router.push({ path: '/' }) this.$router.push({ path: '/case-management' })
this.$store.dispatch('tabsBar/delOthersRoutes', { this.$store.dispatch('tabsBar/delOthersRoutes', {
path: '/' path: '/case-management'
}) })
clearInterval(this.timer) clearInterval(this.timer)
} }

@ -9,7 +9,7 @@
<div class="title">{{ caseInfo.caseName }}</div> <div class="title">{{ caseInfo.caseName }}</div>
<div class="time">{{ caseInfo.evaluationTime }}</div> <div class="time">{{ caseInfo.evaluationTime }}</div>
<div class="desc"> <div class="desc">
<span>按照伏羲智能分析模型赋分规则该案综合得分为<span :class="['score', caseInfo.totalScore >= 70 ? 'success' : 'warning']">{{ caseInfo.commonScore }}</span>+<span :class="['score', caseInfo.totalScore >= 70 ? 'success' : 'warning']">{{ caseInfo.specificCrimeScore }}</span>=<span :class="['score', caseInfo.totalScore >= 70 ? 'success' : 'warning']">{{ caseInfo.totalScore }}</span><span :class="['score', caseInfo.totalScore >= 70 ? 'success' : 'warning']">{{ caseInfo.scoreDesc }}</span></span> <span>按照取证智能分析大模型指标设置及赋分规则该案共性指标<span :class="['score', caseInfo.totalScore >= 70 ? 'success' : 'warning']">{{ caseInfo.commonScore }}</span>入罪指标<span :class="['score', caseInfo.totalScore >= 70 ? 'success' : 'warning']">{{ caseInfo.specificCrimeScore }}</span>综合得分<span :class="['score', caseInfo.totalScore >= 70 ? 'success' : 'warning']">{{ caseInfo.totalScore }}</span>初步判<span :class="['score', caseInfo.totalScore >= 70 ? 'success' : 'warning']">{{ caseInfo.scoreDesc }}</span></span>
</div> </div>
</div> </div>
<div class="card"> <div class="card">

@ -9,19 +9,23 @@
<template> <template>
<div class="record-content"> <div class="record-content">
<div v-if="isEdit" class="flex-row" style="align-items: center; justify-content: space-between"> <div v-if="isEdit" class="flex-row" style="align-items: center; justify-content: space-between">
<el-dropdown @command="handleSelect"> <div>
<el-button type="primary">添加笔录<i class="el-icon-arrow-down el-icon--right" /></el-button> <el-dropdown @command="handleSelect">
<el-dropdown-menu slot="dropdown"> <el-button type="primary">添加笔录<i class="el-icon-arrow-down el-icon--right" /></el-button>
<el-dropdown-item command="1">文档笔录</el-dropdown-item> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="2">图像笔录</el-dropdown-item> <el-dropdown-item command="1">文档笔录</el-dropdown-item>
</el-dropdown-menu> <el-dropdown-item command="2">图像笔录</el-dropdown-item>
</el-dropdown> </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" /> <el-input v-model="searchName" placeholder="搜索名称" style="width: 300px" />
</div> </div>
<vxe-grid v-bind="gridOptions" style="margin-top: 10px"> <vxe-grid v-bind="gridOptions" style="margin-top: 10px">
<template #opera="{row}"> <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 v-if="row.children.length === 0" type="text" icon="el-icon-video-play" :disabled="!isEdit" title="笔录分析" @click="handleCreateAtlas(row)" />
<el-button v-if="row.children.length === 0" type="text" icon="el-icon-edit" title="编辑" :disabled="!isEdit" @click="handelEdit(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-delete" :disabled="!isEdit" style="color: red" title="删除" @click="handleDel(row)" />
</template> </template>
</vxe-grid> </vxe-grid>
@ -33,6 +37,8 @@
@pagination="fetchData" @pagination="fetchData"
/> />
</div> </div>
<!--新增用户-->
<add-case-user ref="addUser" @reloadData="fetchData" :case-id="caseId" />
<!--选择三元组信息入库--> <!--选择三元组信息入库-->
<triplet-info ref="triplet" /> <triplet-info ref="triplet" />
<!--选择上传方式--> <!--选择上传方式-->
@ -51,10 +57,11 @@ import SelectUpload from '@/views/caseDetails/components/edit/SelectUpload.vue'
import OcrRecord from '@/views/caseDetails/components/edit/OcrRecord.vue' import OcrRecord from '@/views/caseDetails/components/edit/OcrRecord.vue'
import TripletInfo from '@/views/caseDetails/components/TripletInfo.vue' import TripletInfo from '@/views/caseDetails/components/TripletInfo.vue'
import { queryRecordList, delRecords } from '@/api/caseDetails' import { queryRecordList, delRecords } from '@/api/caseDetails'
import AddCaseUser from './edit/AddCaseUser.vue'
import { debounce } from '@/utils' import { debounce } from '@/utils'
export default { export default {
name: 'CaseRecord', name: 'CaseRecord',
components: { TripletInfo, OcrRecord, SelectUpload, EditRecord }, components: { TripletInfo, OcrRecord, SelectUpload, EditRecord, AddCaseUser },
mixins: [mixin], mixins: [mixin],
props: { props: {
// //
@ -82,7 +89,7 @@ export default {
{ title: '序号', type: 'seq', treeNode: true }, { title: '序号', type: 'seq', treeNode: true },
{ title: '姓名', field: 'name', sortable: true }, { title: '姓名', field: 'name', sortable: true },
// { title: '', field: 'recordNum', sortable: true }, // { title: '', field: 'recordNum', sortable: true },
{ title: '角色', field: 'role' }, { title: '角色', field: 'roleName' },
{ title: '供述材料', field: 'confessionMaterial' }, { title: '供述材料', field: 'confessionMaterial' },
{ title: '询问人', field: 'lawAsker' }, { title: '询问人', field: 'lawAsker' },
{ title: '进度', field: 'percentage' }, { title: '进度', field: 'percentage' },
@ -131,6 +138,9 @@ export default {
this.fetchData() this.fetchData()
this.$emit('reloadData') this.$emit('reloadData')
}, },
addUser() {
this.$refs.addUser.show()
},
// //
handleAdd() { handleAdd() {
this.$refs.type.show() this.$refs.type.show()
@ -145,7 +155,11 @@ export default {
}, },
// //
handelEdit(row) { handelEdit(row) {
this.$refs.edit.show(row, true) if (row.children.length > 0) {
this.$refs.addUser.show(row)
} else {
this.$refs.edit.show(row, true)
}
}, },
// //
handleDel(row) { handleDel(row) {

@ -65,6 +65,7 @@ export default {
title: { title: {
title: '选择三元组信息入库' title: '选择三元组信息入库'
}, },
width: '1300px',
top: '50px', top: '50px',
hiddenFooter: true, hiddenFooter: true,
appendToBody: true appendToBody: true
@ -72,6 +73,7 @@ export default {
gridOptions: { gridOptions: {
...mixin.data().gridOptions, ...mixin.data().gridOptions,
loading: false, loading: false,
height: 650,
columns: [ columns: [
{ type: 'checkbox', width: '80px' }, { type: 'checkbox', width: '80px' },
{ title: '头节点', field: 'startNode' }, { title: '头节点', field: 'startNode' },
@ -89,9 +91,6 @@ export default {
selectionRows: [] selectionRows: []
} }
}, },
mounted() {
this.tableHeight(650)
},
methods: { methods: {
// //
show(data) { show(data) {
@ -196,7 +195,7 @@ export default {
this.$refs.xTable.getCheckboxRecords().map(item => { this.$refs.xTable.getCheckboxRecords().map(item => {
ids.push(item.id) ids.push(item.id)
}) })
saveTripletInfo({ ids }).then(res => { saveTripletInfo({ ids, recordId: this.lastPageData['id'] }).then(res => {
loading.close() loading.close()
const { code, msg } = res const { code, msg } = res
code === 200 ? this.$baseMessage.success(msg || '保存成功!') : this.$baseMessage.error(msg || '保存失败!') code === 200 ? this.$baseMessage.success(msg || '保存成功!') : this.$baseMessage.error(msg || '保存失败!')
@ -212,6 +211,7 @@ export default {
display: flex; display: flex;
background: #FFFFFF; background: #FFFFFF;
height: 750px; height: 750px;
width: 1240px;
.left { .left {
width: 750px; width: 750px;
border-right: 1px solid #EAEAEA; border-right: 1px solid #EAEAEA;

@ -14,13 +14,13 @@
<template slot="content"> <template slot="content">
<el-form ref="userForm" :model="userForm" :rules="userRules" label-width="80px"> <el-form ref="userForm" :model="userForm" :rules="userRules" label-width="80px">
<el-form-item label="姓名" prop="name"> <el-form-item label="姓名" prop="name">
<el-input v-model="userForm['name']" placeholder="请输入姓名" /> <el-input v-model="userForm['name']" :disabled="isCaseActorFlag" placeholder="请输入姓名" />
</el-form-item> </el-form-item>
<el-form-item label="身份证号" prop="idCard"> <el-form-item label="身份证号" prop="idCard">
<el-input v-model="userForm['idCard']" placeholder="请输入身份证号" /> <el-input v-model="userForm['idCard']" placeholder="请输入身份证号" />
</el-form-item> </el-form-item>
<el-form-item label="角色" prop="roleCode"> <el-form-item label="角色" prop="roleCode">
<el-select v-model="userForm['roleCode']" placeholder="请选择角色" style="width: 100%"> <el-select v-model="userForm['roleCode']" :disabled="isCaseActorFlag" placeholder="请选择角色" style="width: 100%">
<el-option <el-option
v-for="item in roleList" v-for="item in roleList"
:key="item.value" :key="item.value"
@ -36,7 +36,7 @@
<script> <script>
import { validIdCard } from '@/utils/validate' import { validIdCard } from '@/utils/validate'
import { addUser } from '@/api/caseDetails' import { addUser, updatePerson, queryUserList } from '@/api/caseDetails'
export default { export default {
name: 'AddCaseUser', name: 'AddCaseUser',
@ -65,24 +65,56 @@ export default {
idCard: [{ required: true, message: '身份证号不能为空', trigger: 'blur' }, { validator: validIdCard, trigger: 'blur' }], idCard: [{ required: true, message: '身份证号不能为空', trigger: 'blur' }, { validator: validIdCard, trigger: 'blur' }],
role: [{ required: true, message: '角色不能为空', trigger: 'blur' }] role: [{ required: true, message: '角色不能为空', trigger: 'blur' }]
}, },
isEdit: false,
userList: [],
// //
roleList: JSON.parse(sessionStorage.getItem('case_role')) roleList: JSON.parse(sessionStorage.getItem('case_role')),
//
isCaseActorFlag: false
} }
}, },
methods: { methods: {
// //
show() { show(row) {
this.dialogOption.show = true this.dialogOption.show = true
this.userForm = {} this.isCaseActorFlag = false
if (row) {
this.getUserList()
this.isEdit = true
this.userForm = JSON.parse(JSON.stringify(row))
this.$set(this.userForm, 'idCard', row.personIdCard)
this.$set(this.userForm, 'roleCode', row.role)
this.$set(this.userForm, 'id', row.personId)
} else {
this.userForm = {}
this.isEdit = false
}
this.drawerOption.title = this.isEdit ? '编辑涉案人员' : '添加涉案人员'
},
//
getUserList() {
queryUserList({ caseId: this.$route.params.id }).then(res => {
this.userList = res.data
if (this.userList[0].id === this.userForm.personId) {
this.isCaseActorFlag = true
}
})
}, },
// //
handleSubmit() { handleSubmit() {
this.$refs.userForm.validate(async valid => { this.$refs.userForm.validate(async valid => {
if (valid) { if (valid) {
const { code, msg } = await addUser({ ...this.userForm, caseId: this.$route.params['id'] }) if (this.isEdit) {
code === 200 ? this.$baseMessage.success(msg || '新增成功!') : this.$baseMessage.error(msg || '新增失败!') const { code, msg } = await updatePerson({ ...this.userForm, caseId: this.$route.params['id'] })
this.dialogOption.show = false code === 200 ? this.$baseMessage.success('编辑成功!') : this.$baseMessage.error(msg || '编辑失败!')
this.$emit('reloadData') this.dialogOption.show = false
this.$emit('reloadData')
} else {
const { code, msg } = await addUser({ ...this.userForm, caseId: this.$route.params['id'] })
code === 200 ? this.$baseMessage.success(msg || '新增成功!') : this.$baseMessage.error(msg || '新增失败!')
this.dialogOption.show = false
this.$emit('reloadData')
}
} }
}) })
} }

@ -27,10 +27,10 @@
<!-- </el-col>--> <!-- </el-col>-->
<el-col :span="24"> <el-col :span="24">
<el-form ref="form" :model="recordForm" :rules="rules" label-width="80px"> <el-form ref="form" :model="recordForm" :rules="rules" label-width="80px">
<el-form-item label="姓名" prop="name"> <el-form-item label="姓名" prop="personId">
<div class="flex-row" style="justify-content: space-between"> <div class="flex-row" style="justify-content: space-between">
<el-select <el-select
v-model="recordForm.name" v-model="recordForm.personId"
:disabled="isEdit" :disabled="isEdit"
placeholder="请选择姓名" placeholder="请选择姓名"
style="width: 83%" style="width: 83%"
@ -39,8 +39,8 @@
<el-option <el-option
v-for="item in userList" v-for="item in userList"
:key="item.id" :key="item.id"
:value="item.name" :value="item.id"
:label:="item.name" :label="item.name"
> >
<span>{{ `${item.name}-${item['roleName']}` }}</span> <span>{{ `${item.name}-${item['roleName']}` }}</span>
</el-option> </el-option>
@ -55,7 +55,7 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item v-if="isEdit" label="角色" prop="role"> <el-form-item v-if="isEdit" label="角色" prop="role">
<el-select v-model="recordForm.role" placeholder="请选择角色" style="width: 100%"> <el-select v-model="recordForm.role" :disabled="isEdit" placeholder="请选择角色" style="width: 100%">
<el-option <el-option
v-for="item in roleList" v-for="item in roleList"
:key="item.value" :key="item.value"
@ -97,6 +97,7 @@
:headers="{ :headers="{
token: token token: token
}" }"
:disabled="isEdit"
class="upload-demo" class="upload-demo"
:action="uploadOption.action" :action="uploadOption.action"
:accept="uploadOption.accept" :accept="uploadOption.accept"
@ -108,7 +109,7 @@
:on-exceed="handleExceed" :on-exceed="handleExceed"
:file-list="fileList" :file-list="fileList"
> >
<el-button size="small" type="primary" icon="el-icon-upload2">选择文件</el-button> <el-button :disabled="isEdit" size="small" type="primary" icon="el-icon-upload2">选择文件</el-button>
<div slot="tip" class="el-upload__tip">支持扩展名docxdoc单个文档小于5mb</div> <div slot="tip" class="el-upload__tip">支持扩展名docxdoc单个文档小于5mb</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
@ -161,7 +162,7 @@ export default {
fileIdList: [] fileIdList: []
}, },
rules: { rules: {
name: [{ required: true, message: '姓名不能为空!', trigger: 'blur' }], personId: [{ required: true, message: '姓名不能为空!', trigger: 'blur' }],
indexNum: [{ required: true, message: '次数不能为空!', trigger: 'blur' }], indexNum: [{ required: true, message: '次数不能为空!', trigger: 'blur' }],
roleCode: [{ required: true, message: '角色不能为空!', trigger: 'blur' }], roleCode: [{ required: true, message: '角色不能为空!', trigger: 'blur' }],
lawAsker: [{ required: true, message: '询问人不能为空!', trigger: 'blur' }], lawAsker: [{ required: true, message: '询问人不能为空!', trigger: 'blur' }],
@ -195,18 +196,19 @@ export default {
// }, // },
mounted() { mounted() {
this.caseId = this.$route.params.id this.caseId = this.$route.params.id
this.getUserList()
}, },
methods: { methods: {
show(data, isEdit) { show(data, isEdit) {
this.isEdit = isEdit this.isEdit = isEdit
// //
// this.drawerOption.width = isEdit ? '50%' : '35%' // this.drawerOption.width = isEdit ? '50%' : '35%'
this.recordForm = isEdit ? data : { fileIdList: [] } const formData = isEdit ? JSON.parse(JSON.stringify(data)) : { fileIdList: [] }
this.recordForm = isEdit ? formData : { fileIdList: [] }
// //
if (isEdit && data['confessionStartTime'] && data['confessionEndTime']) { if (isEdit && formData['confessionStartTime'] && formData['confessionEndTime']) {
this.$set(this.recordForm, 'confessionTime', [data['confessionStartTime'], data['confessionEndTime']]) this.$set(this.recordForm, 'confessionTime', [formData['confessionStartTime'], formData['confessionEndTime']])
} }
this.getUserList()
this.fileList = [] this.fileList = []
if (isEdit) { if (isEdit) {
const list = [] const list = []
@ -230,8 +232,10 @@ export default {
}, },
// //
handleSelectChange(val) { handleSelectChange(val) {
const roleName = this.userList.find(item => item.name === val).roleName // const roleName = this.userList.find(item => item.id === val).roleName
this.$set(this.recordForm, 'role', roleName) const name = this.userList.find(item => item.id === val).name
this.$set(this.recordForm, 'role', val)
this.$set(this.recordForm, 'name', name)
}, },
// //
handleAdd() { handleAdd() {

@ -53,7 +53,7 @@
<!-- <el-descriptions-item label="立案时间">{{ caseData.registerTime || '暂未添加,上传笔录后自动生成' }}</el-descriptions-item> <!-- <el-descriptions-item label="立案时间">{{ caseData.registerTime || '暂未添加,上传笔录后自动生成' }}</el-descriptions-item>
<el-descriptions-item label="受理时间">{{ caseData.acceptTime || '暂未添加,上传笔录后自动生成' }}</el-descriptions-item> --> <el-descriptions-item label="受理时间">{{ caseData.acceptTime || '暂未添加,上传笔录后自动生成' }}</el-descriptions-item> -->
<el-descriptions-item label="行为人">{{ caseData.lawActorName || '暂未添加,上传笔录后自动生成' }}</el-descriptions-item> <el-descriptions-item label="行为人">{{ caseData.caseActorName || '暂未添加,上传笔录后自动生成' }}</el-descriptions-item>
<el-descriptions-item label="当事人">{{ caseData.lawParty || '暂未添加,上传笔录后自动生成' }}</el-descriptions-item> <el-descriptions-item label="当事人">{{ caseData.lawParty || '暂未添加,上传笔录后自动生成' }}</el-descriptions-item>
<el-descriptions-item label="案件概述" span="24"> <el-descriptions-item label="案件概述" span="24">
<div slot="default" class="case-summarize"> <div slot="default" class="case-summarize">

@ -34,6 +34,12 @@
<el-form-item label="案件概述" prop="caseDetail"> <el-form-item label="案件概述" prop="caseDetail">
<el-input v-model="caseForm['caseDetail']" type="textarea" :rows="5" placeholder="请输入案件概述" /> <el-input v-model="caseForm['caseDetail']" type="textarea" :rows="5" placeholder="请输入案件概述" />
</el-form-item> </el-form-item>
<el-form-item label="行为人" prop="caseActorName">
<el-input v-model="caseForm['caseActorName']" :disabled="isEdit" maxlength="10" placeholder="请输入行为人姓名" />
</el-form-item>
<el-form-item label="身份证号" prop="caseActorIdCard">
<el-input v-model="caseForm['caseActorIdCard']" :disabled="isEdit" placeholder="请输入身份证号" />
</el-form-item>
</el-form> </el-form>
</template> </template>
</cs-drawer> </cs-drawer>
@ -41,7 +47,7 @@
<script> <script>
import { addCaseInfo, checkCaseNo } from '@/api/caseManagement' import { addCaseInfo, checkCaseNo } from '@/api/caseManagement'
import { validIdCard } from '@/utils/validate'
export default { export default {
name: 'EditCaseInfo', name: 'EditCaseInfo',
data() { data() {
@ -78,7 +84,8 @@ export default {
caseType: '', caseType: '',
caseStatus: '', caseStatus: '',
crimeMode: '', crimeMode: '',
caseDetail: '' caseDetail: '',
idCard: ''
}, },
// //
rules: { rules: {
@ -90,7 +97,9 @@ export default {
caseType: [{ required: true, message: '案件类型不能为空!', trigger: 'blur' }], caseType: [{ required: true, message: '案件类型不能为空!', trigger: 'blur' }],
caseStatus: [{ required: false, message: '案件状态不能为空!', trigger: 'blur' }], caseStatus: [{ required: false, message: '案件状态不能为空!', trigger: 'blur' }],
crimeMode: [{ required: true, message: '到案方式不能为空!', trigger: 'blur' }], crimeMode: [{ required: true, message: '到案方式不能为空!', trigger: 'blur' }],
caseDetail: [{ required: true, message: '案件概述不能为空!', trigger: 'blur' }] caseDetail: [{ required: true, message: '案件概述不能为空!', trigger: 'blur' }],
caseActorName: [{ required: true, message: '行为人不能为空!', trigger: 'blur' }],
caseActorIdCard: [{ required: true, message: '身份证号不能为空', trigger: 'blur' }, { validator: validIdCard, trigger: 'blur' }]
}, },
// //
isEdit: false isEdit: false

@ -18,7 +18,7 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="行为人"> <el-form-item label="行为人">
<div class="flex-row"> <div class="flex-row">
<el-input v-model="caseData['lawActorName']" :disabled="!doreEdit" /> <el-input v-model="caseData['caseActorName']" :disabled="!doreEdit" />
<el-button v-show="false" :plain="!doreEdit" type="primary" style="margin-left: 10px" @click="handelDore">{{ doreEdit ? '' : '' }}</el-button> <el-button v-show="false" :plain="!doreEdit" type="primary" style="margin-left: 10px" @click="handelDore">{{ doreEdit ? '' : '' }}</el-button>
</div> </div>
</el-form-item> </el-form-item>

@ -8,7 +8,7 @@
<template> <template>
<div ref="htmlContent" class="content"> <div ref="htmlContent" class="content">
<cs-search title="案件检索" :data="searchData" :span="8" @onSearch="onSearch" @getData="onSearch" /> <cs-search title="案件检索" :data="searchData" :span="4" direction="row" @onSearch="onSearch" @getData="onSearch" />
<div class="case-content"> <div class="case-content">
<div class="flex-row header"> <div class="flex-row header">
<el-button type="primary" icon="el-icon-circle-plus-outline" @click="handleAdd"></el-button> <el-button type="primary" icon="el-icon-circle-plus-outline" @click="handleAdd"></el-button>
@ -19,66 +19,66 @@
<input ref="file" type="file" style="display: none" @change="uploadFile"> <input ref="file" type="file" style="display: none" @change="uploadFile">
</div> </div>
<el-row :gutter="20" type="flex" class="list-content"> <el-row :gutter="20" type="flex" class="list-content">
<vuedraggable v-model="caseList" animation="400" handle=".mover" style="width: 100%">
<transition-group class="list-span"> <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" :span="6">
<div class="list-item" @click="handleClick(item)"> <div class="list-item" @click="handleClick(item)">
<div class="flex-row item-header"> <div class="flex-row item-header">
<div class="flex-row" style="align-items: center;flex: 1"> <div class="flex-row" style="align-items: center;flex: 1">
<el-tag <el-tag
v-if="item.caseStatus && item.identifyResultName " v-if="item.caseStatus && item.identifyResultName "
:type="item.caseStatus === '1' ? 'success' : 'warning'" :type="item.caseStatus === '1' ? 'success' : 'warning'"
style="margin-right: 5px" style="margin-right: 5px"
> >
{{ item.identifyResultName }} {{ item.identifyResultName }}
</el-tag> </el-tag>
<span class="main-title">{{ item.caseName }}</span> <span class="main-title">{{ item.caseName }}</span>
</div>
<div>
<img src="~@/assets/caseManagement/duihua@2x.png" class="tag-icon" @click.stop="handleContact(item)">
<img src="~@/assets/caseManagement/tuola@2x.png" class="tag-icon mover">
</div>
</div> </div>
<div class="item-body"> <div>
<el-row :gutter="10" style="padding: 10px;"> <img src="~@/assets/caseManagement/duihua@2x.png" class="tag-icon" @click.stop="handleContact(item)">
<el-col :span="8"> <!-- <img src="~@/assets/caseManagement/tuola@2x.png" class="tag-icon mover"> -->
<span class="item-body-top etc">{{ `行为人:${item['lawActorName'] ? item['lawActorName'] : '-'}` }}</span> </div>
</el-col> </div>
<el-col :span="16"> <div class="item-body">
<span class="item-body-top etc">{{ `案件编号:${item.caseNo}` }}</span> <el-row :gutter="10" style="padding: 10px;">
</el-col> <el-col :span="8">
<!-- <el-col :span="8">--> <span class="item-body-top etc">{{ `行为人:${item['caseActorName'] ? item['caseActorName'] : '-'}` }}</span>
<!-- <span class="item-body-top etc">{{ `证据数量:${item.evidenceNum}` }}</span>--> </el-col>
<!-- </el-col>--> <el-col :span="16">
<el-col :span="24" style="margin-top: 10px"> <span class="item-body-top etc">{{ `案件编号:${item.caseNo}` }}</span>
<span class="item-body-top etc">{{ `当事人:${item.lawParty}` }}</span> </el-col>
</el-col> <!-- <el-col :span="8">-->
</el-row> <!-- <span class="item-body-top etc">{{ `证据数量:${item.evidenceNum}` }}</span>-->
<div class="item-body-bottom"> <!-- </el-col>-->
<div class="flex-row" style="align-items: center; justify-content: space-between;padding: 10px;min-height: 40px"> <el-col :span="24" style="margin-top: 10px">
<div class="flex-column"> <span class="item-body-top etc">{{ `当事人:${item.lawParty}` }}</span>
<div class="flex-row" style="align-items: center;margin-bottom: 5px"> </el-col>
<i v-if="item.isAnalysing" class="el-icon-loading" style="margin-right: 5px" /> </el-row>
<span class="status-title">{{ formatterStatusName(item) }}</span> <div class="item-body-bottom" :style="{borderColor:item.totalScore ? '#9DEACD' : '#90BDFF'}">
</div> <div class="flex-row" style="align-items: center; justify-content: space-between;padding: 10px;min-height: 40px">
<span class="subtitle">{{ item.updateTime }}</span> <div class="flex-column">
</div> <div class="flex-row" style="align-items: center;margin-bottom: 5px">
<div v-show="item['totalScore']" class="flex-column" style="align-items: center"> <i v-if="item.isAnalysing" class="el-icon-loading" style="margin-right: 5px" />
<span :class="['score', item.totalScore >= 70 ? 'success' : 'warning']">{{ item.totalScore }}</span> <span class="status-title">{{ formatterStatusName(item) }}</span>
<span class="subtitle">综合得分</span>
</div> </div>
<span class="subtitle">{{ item.updateTime }}</span>
</div> </div>
<div class="flex-row bottom-buttons"> <div v-show="item['totalScore']" class="flex-column" style="align-items: center">
<div @click.stop="handleDel(item)">删除</div> <span :class="['score', item.totalScore >= 70 ? 'success' : 'warning']">{{ item.totalScore }}</span>
<div @click.stop="handleEdit(item)">编辑</div> <span class="subtitle">综合得分</span>
<div :class="[item['isAnalysing'] ? 'disabled' : '']" @click.stop="handleAnalysis(item)">模型分析</div>
</div> </div>
</div> </div>
<div class="flex-row bottom-buttons">
<div :class="[item['isAnalysing'] ? 'disabled' : '']" @click.stop="handleAnalysis(item)">模型分析</div>
<div @click.stop="handleEdit(item)">编辑</div>
<div @click.stop="handleDel(item)">删除</div>
</div>
</div> </div>
</div> </div>
</el-col> </div>
</transition-group> </el-col>
</vuedraggable> </div>
</el-row> </el-row>
<div style="text-align: center"> <div style="text-align: center">
<cs-page <cs-page
@ -117,7 +117,7 @@ export default {
searchData: [ searchData: [
{ label: '案件编号', model: 'caseNo', type: 'input' }, { label: '案件编号', model: 'caseNo', type: 'input' },
{ label: '案件名称', model: 'caseName', type: 'input' }, { label: '案件名称', model: 'caseName', type: 'input' },
{ label: '认定结果', model: 'identifyResult', type: 'select', option: JSON.parse(sessionStorage.getItem('identify_result')) }, { label: '认定结果', model: 'identifyResult', type: 'selectMultiple', option: JSON.parse(sessionStorage.getItem('identify_result')) },
{ label: '行为人', model: 'lawActor', type: 'input' }, { label: '行为人', model: 'lawActor', type: 'input' },
{ label: '当事人', model: 'lawParty', type: 'input' }, { label: '当事人', model: 'lawParty', type: 'input' },
{ label: '最新时间', model: 'updateTime', type: 'datetimerange' } { label: '最新时间', model: 'updateTime', type: 'datetimerange' }
@ -275,7 +275,7 @@ export default {
padding: 20px; padding: 20px;
box-sizing: border-box; box-sizing: border-box;
margin-top: 10px; margin-top: 10px;
height: calc(100% - 170px); height: calc(100% - 140px);
.header { .header {
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
@ -286,8 +286,7 @@ export default {
height: calc(100% - 32px - 32px - 20px); height: calc(100% - 32px - 32px - 20px);
flex-wrap: wrap; flex-wrap: wrap;
.list-span { .list-span {
display: flex; width: 100%;
flex-wrap: wrap;
} }
.list-item { .list-item {
background: #F2F5F9; background: #F2F5F9;
@ -325,7 +324,7 @@ export default {
} }
.item-body-bottom { .item-body-bottom {
background: #ffffff; background: #ffffff;
border-top: 3px solid $base-color-default; border-top: 3px solid;
border-top-left-radius: 8px; border-top-left-radius: 8px;
border-top-right-radius: 8px; border-top-right-radius: 8px;
margin: 0 10px; margin: 0 10px;

@ -97,7 +97,7 @@ export default {
this.$store this.$store
.dispatch('user/login', this.loginForm) .dispatch('user/login', this.loginForm)
.then(() => { .then(() => {
this.$router.push('/index') this.$router.push('/case-management')
this.loading = false this.loading = false
}) })
.catch(() => { .catch(() => {

@ -74,8 +74,8 @@ export default {
{ label: '指标名称', model: 'name', type: 'input' }, { label: '指标名称', model: 'name', type: 'input' },
{ label: '指标类别', model: 'indexType', type: 'select', option: JSON.parse(sessionStorage.getItem('index_type')) }, { label: '指标类别', model: 'indexType', type: 'select', option: JSON.parse(sessionStorage.getItem('index_type')) },
// { label: '', model: 'doer', type: 'input' }, // { label: '', model: 'doer', type: 'input' },
{ label: '案件类型', model: 'caseType', type: 'select', option: JSON.parse(sessionStorage.getItem('case_type')) } { label: '案件类型', model: 'caseType', type: 'select', option: JSON.parse(sessionStorage.getItem('case_type')) },
// { label: '', model: 'name', type: 'input' }, { label: '原子指标', model: 'atomicIndexName', type: 'input' }
], ],
// //
gridOptions: { gridOptions: {

Loading…
Cancel
Save