feat:产品问题修改

dev_1.0.0
xiangcongshuai 9 months ago
parent d5eed44c30
commit 2c15daf631

@ -130,11 +130,12 @@ export const asyncRoutes = [
component: Layout,
meta: { title: '案件' },
hidden: true,
permission: 'p_case2',
permission: 'p_caseDetails',
children: [
{
path: '/case-details/:id/:caseName/',
name: 'CaseDetails',
permission: 'p_caseDetails',
component: () => import('@/views/caseDetails/index.vue'),
meta: { title: '案件详情', affix: true }
}

@ -6,10 +6,10 @@
<template slot="content">
<div class="CaseAnalysis">
<div class="header">
<div class="title">{{ caseInfo.caseName}}</div>
<div class="title">{{ caseInfo.caseName }}</div>
<div class="time">{{ caseInfo.evaluationTime }}</div>
<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 class="card">
@ -20,14 +20,17 @@
</div>
</div>
<div class="card">
<div class="card_header">{{ `一)${caseInfo.specificCrimeIndexCount}个共性证据指标${caseInfo.specificCrimeIndexHitCount}` }}</div>
<div class="card_header">{{ `二)${caseInfo.specificCrimeIndexCount}${caseInfo.specificCrime}${caseInfo.specificCrimeIndexHitCount}` }}</div>
<div class="tip">包括(对应指标展示</div>
<div class="tip_list">
<span v-for="(item,index) in caseInfo.specificCrimeIndexDescList" :key="index">{{ `${index + 1}. ${item}` }}</span>
</div>
</div>
<div class="card">
<span class="card_desc">{{ `为提高司法定性可能,还可补全以下相关证据:${caseInfo.missAtomicIndexCount}项缺失的原子指标(证据)` }}</span>
</div>
</div>
</template>
</cs-dialog>
</template>
@ -51,8 +54,10 @@ export default {
},
caseInfo: {
caseName: '',
evaluationTime:"",
evaluationTime: '',
commonScore: '',
missAtomicIndexCount:"",
specificCrime: '',
specificCrimeScore: '',
totalScore: '',
scoreDesc: '',
@ -130,6 +135,10 @@ export default {
border-radius: 8px 8px 8px 8px;
margin-top: 16px;
padding: 24px;
.card_desc {
font-size: 16px;
color: #666666;
}
.card_header {
font-weight: 400;
font-size: 22px;
@ -145,9 +154,9 @@ export default {
display: flex;
flex-direction: column;
span {
margin-bottom: 12px;
margin-bottom: 12px;
font-size: 16px;
color: #666666;
color: #666666;
}
}
}

@ -27,7 +27,7 @@
/>
</div>
<!--编辑/新增证据-->
<edit-evidence @onClose="fetchData" ref="edit" />
<edit-evidence ref="edit" @onClose="fetchData" />
</div>
</template>
@ -36,6 +36,7 @@
import mixin from '@/views/mixin'
import EditEvidence from '@/views/caseDetails/components/edit/EditEvidence.vue'
import { queryEvidenceList, deleteEvidence } from '@/api/caseDetails'
import { debounce } from '@/utils'
export default {
name: 'CaseEvidence',
components: { EditEvidence },
@ -58,7 +59,7 @@ export default {
gridOptions: {
...mixin.data().gridOptions,
columns: [
{ title: '序号', type: 'seq',width:80 },
{ title: '序号', type: 'seq', width: 80 },
{ title: '证据名称', field: 'evidenceName' },
{ title: '证据类型', field: 'evidenceTypeDesc' },
// { title: '', field: 'confessionMaterial' },
@ -77,6 +78,9 @@ export default {
}
},
immediate: true
},
searchName: function() {
this.debounceSearch(this)
}
},
mounted() {
@ -87,10 +91,15 @@ export default {
this.fetchData()
},
methods: {
//
debounceSearch: debounce((_this) => {
_this.fetchData()
}),
//
fetchData() {
const params = {
caseId: this.caseId,
evidenceName: this.searchName,
page: this.queryForm.page,
size: this.queryForm.size
}

@ -20,7 +20,7 @@
</div>
<vxe-grid v-bind="gridOptions" style="margin-top: 10px">
<template #opera="{row}">
<el-button 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 v-if="row.children.length === 0" type="text" icon="el-icon-delete" :disabled="!isEdit" style="color: red" title="删除" @click="handleDel(row)" />
</template>

@ -95,10 +95,9 @@ export default {
methods: {
//
show(data) {
this.dialogOptions.show = true
this.lastPageData = data
this.gridOptions.data = []
this.selectedRowKeys = []
this.selectionRows = []
this.name = ''
this.fetchData()
},
@ -114,6 +113,25 @@ export default {
this.gridOptions.loading = false
this.tableData = JSON.parse(JSON.stringify(res.data))
this.gridOptions.data = JSON.parse(JSON.stringify(res.data))
for (const item of this.gridOptions.data) {
if (item.addNeo4j === '1') {
this.selectionRows.push(item)
}
}
if (this.selectionRows && this.selectionRows.length > 0) {
//
const _this = this
_this.$nextTick(() => {
_this.gridOptions.data.map(column => {
_this.selectionRows.map(item => {
if (item.id === column.id) {
_this.$refs.xTable.setCheckboxRow(column, true)
}
})
})
})
}
this.dialogOptions.show = true
}).catch(() => {
this.gridOptions.loading = false
})

@ -21,7 +21,6 @@
<span :style="commonStyle">{{ caseData['totalScore'] }}</span>
<span :style="commonStyle">{{ caseData['identifyResultName'] }}</span>
<span>{{ `最新时间:${caseData['updateTime']}` }}</span>
<!-- <span v-if="isEdit" class="model" @click="handleAnalysis"></span> -->
</div>
<div
@ -38,10 +37,10 @@
<div class="flex-row" style="align-items: center; justify-content: space-between">
<h4>基本信息</h4>
<div>
<el-button type="info" plain icon="el-icon-download" @click="handleDownload"></el-button>
<!-- <el-button type="info" plain icon="el-icon-download" @click="handleDownload"></el-button> -->
<el-button v-if="isEdit" type="primary" plain icon="el-icon-edit" @click="handleEdit"></el-button>
<el-button v-if="caseData['totalScore'] && caseData['totalScore'] > 0" type="primary" plain @click="openDeatil"></el-button>
<!-- <el-button v-if="isEdit" type="primary" :icon="caseData.isAnalysing ? 'el-icon-loading' : 'el-icon-refresh'" @click="handleAnalysis"></el-button> -->
<el-button type="text" icon="el-icon-arrow-up" style="color: #666666" @click="expand = false">收起</el-button>
</div>
</div>
@ -98,7 +97,7 @@
</div>
</div>
<!--编辑/新增弹窗-->
<edit-case-info ref="edit" />
<edit-case-info @reloadData="fetchData" ref="edit" />
<!--模型分析-->
<model-analysis ref="analysis" @confirm="handleConfirmAnalysis" />
<!--案件分析详情-->

@ -11,7 +11,7 @@
<template slot="content">
<el-form ref="form" :model="caseForm" :rules="rules" label-width="90px">
<el-form-item label="案件编号" prop="caseNo">
<el-input :disabled="isEdit" v-model="caseForm['caseNo']" placeholder="请输入案件编号" />
<el-input v-model="caseForm['caseNo']" :disabled="isEdit" placeholder="请输入案件编号" />
</el-form-item>
<el-form-item label="案件名称" prop="caseName">
<el-input v-model="caseForm['caseName']" placeholder="请输入案件名称" />
@ -46,7 +46,10 @@ export default {
name: 'EditCaseInfo',
data() {
const validatorCaseNo = (rule, value, callback) => {
if (this.isEdit) return
if (this.isEdit) {
callback()
return
}
checkCaseNo({ caseNo: value }).then(res => {
const { code, msg } = res
if (code === 200 && msg) {
@ -69,7 +72,14 @@ export default {
//
crimeModeOptions: JSON.parse(sessionStorage.getItem('crime_mode')),
//
caseForm: {},
caseForm: {
caseNo: '',
caseName: '',
caseType: '',
caseStatus: '',
crimeMode: '',
caseDetail: ''
},
//
rules: {
caseNo: [
@ -88,19 +98,23 @@ export default {
},
methods: {
show(data, isEdit) {
this.drawerOption.show = true
this.isEdit = isEdit
this.drawerOption.show = true
this.drawerOption.title = isEdit ? '编辑案件' : '新建案件'
this.caseForm = isEdit ? data : {}
this.$nextTick(() => {
const _this = this
const formData = data ? JSON.parse(JSON.stringify(data)) : { }
_this.caseForm = data ? formData : (isEdit ? formData : { })
})
},
//
handleReset() {
if (this.isEdit) return
this.$refs.form.resetFields()
this.$refs.form.clearValidate()
},
//
handleSubmit() {
this.$refs.form.validate(async valid => {
this.$refs['form'].validate(async valid => {
if (valid) {
const { code, msg } = await addCaseInfo(this.caseForm)
code === 200 ? (this.isEdit ? this.$baseMessage.success(msg || '编辑成功!') : this.$baseMessage.success(msg || '新增成功!')) : (this.isEdit ? this.$baseMessage.error(msg || '编辑失败!') : this.$baseMessage.error(msg || '新增失败!'))

@ -12,10 +12,10 @@
<div class="case-content">
<div class="flex-row header">
<el-button type="primary" icon="el-icon-circle-plus-outline" @click="handleAdd"></el-button>
<div>
<!-- <div>
<el-button icon="el-icon-upload2" title="导入案件" circle @click="handleImport" />
<el-button icon="el-icon-download" title="模板下载" circle @click="handleDownload" />
</div>
</div> -->
<input ref="file" type="file" style="display: none" @change="uploadFile">
</div>
<el-row :gutter="20" type="flex" class="list-content">
@ -146,7 +146,7 @@ export default {
for (const item of e.lawPartyList) {
list.push(item.name)
}
e.lawParty = list.length > 0 ? list.join(','): '无'
e.lawParty = list.length > 0 ? list.join(',') : '无'
})
this.queryForm.total = res.data.total
})

@ -121,8 +121,13 @@ export default {
judgeLogic: {
type: String,
required: true,
defaultValue: ""
defaultValue: ''
},
isChange: {
type: Boolean,
required: true,
defaultValue: false
}
},
data() {
return {
@ -136,9 +141,24 @@ export default {
symbolOptions: JSON.parse(sessionStorage.getItem('judge_result'))
}
},
watch: {
isChange(val) {
if (val === true) {
this.logicData = [
{ groupLogic: '1', rowLogic: '1', atomicData: [{ atomicIndex: '', relationalSymbol: '' }] }
]
}
}
},
mounted() {
if(!this.judgeLogic) return
this.logicData = JSON.parse(this.judgeLogic)
if (this.isChange) {
this.logicData = [
{ groupLogic: '1', rowLogic: '1', atomicData: [{ atomicIndex: '', relationalSymbol: '' }] }
]
} else {
if (!this.judgeLogic) return
this.logicData = JSON.parse(this.judgeLogic)
}
},
methods: {
//

@ -114,7 +114,7 @@
</el-form>
<div v-if="activeStep === 1">
<p>{{ `[${indexTypeName}] ${ruleForm['name']}` }}</p>
<custom-logic ref="custom" :atomic-index-data="ruleForm['atomicIndexList']" :judge-logic="ruleForm['judgeLogic']" />
<custom-logic ref="custom" :is-change="isChange" :atomic-index-data="ruleForm['atomicIndexList']" :judge-logic="ruleForm['judgeLogic']" />
</div>
<!--原子指标选择-->
<select-atomic ref="select" @submit="handleAtomicSubmit" />
@ -177,7 +177,9 @@ export default {
judgeLogic: [{ required: true, message: '指标说明不能为空!', trigger: 'blur' }]
},
//
isEdit: false
isEdit: false,
//
isChange: false
}
},
methods: {
@ -185,7 +187,7 @@ export default {
show(data, isEdit) {
this.isEdit = isEdit
this.drawerOption.show = true
this.isChange = false
this.$nextTick(() => {
const _this = this
_this.ruleForm = isEdit ? JSON.parse(JSON.stringify(data)) : {}
@ -199,6 +201,7 @@ export default {
},
delItem(index) {
this.ruleForm['atomicIndexList'].splice(index, 1)
this.isChange = true
},
//
handleChange(val) {
@ -212,6 +215,7 @@ export default {
handleAtomicSubmit(data) {
this.$refs.form.clearValidate('atomicIndexList')
this.$set(this.ruleForm, 'atomicIndexList', data)
this.isChange = true
},
//
handleReset() {

@ -117,7 +117,7 @@ export default {
_this.gridOptions.data.map(column => {
_this.selectionRows.map(item => {
if (item.id === column.id) {
_this.$refs.xTable.toggleCheckboxRow(column, true)
_this.$refs.xTable.setCheckboxRow(column, true)
}
})
})

@ -12,11 +12,11 @@
<div class="index-content">
<div class="header">
<el-button type="primary" icon="el-icon-circle-plus-outline" @click="handleAdd"></el-button>
<el-button type="primary" icon="el-icon-edit" @click="handleChange"></el-button>
<!-- <el-button type="primary" icon="el-icon-edit" @click="handleChange"></el-button> -->
<vxe-grid v-bind="gridOptions" style="margin-top: 20px">
<template #operate="{row}">
<el-button type="text" @click="handleEdit(row)"></el-button>
<el-button type="text" @click="handleAtlas(row)"></el-button>
<!-- <el-button type="text" @click="handleAtlas(row)"></el-button> -->
<el-button type="text" style="color: red" @click="handleDel(row)"></el-button>
</template>
<template #content="{row}">

Loading…
Cancel
Save