feat:ui走查修改,测试问题修改

dev_1.0.0
xiangcongshuai 1 year ago
parent c1360bdc49
commit f818f8b0e6

@ -22,6 +22,7 @@
"html2canvas": "^1.4.1", "html2canvas": "^1.4.1",
"js-md5": "0.7.3", "js-md5": "0.7.3",
"jszip": "3.10.1", "jszip": "3.10.1",
"marked": "^14.0.0",
"moment": "2.29.4", "moment": "2.29.4",
"node-polyfill-webpack-plugin": "2.0.1", "node-polyfill-webpack-plugin": "2.0.1",
"nprogress": "0.2.0", "nprogress": "0.2.0",

@ -47,6 +47,9 @@ dependencies:
jszip: jszip:
specifier: 3.10.1 specifier: 3.10.1
version: 3.10.1 version: 3.10.1
marked:
specifier: ^14.0.0
version: 14.0.0
moment: moment:
specifier: 2.29.4 specifier: 2.29.4
version: 2.29.4 version: 2.29.4
@ -7593,6 +7596,12 @@ packages:
object-visit: 1.0.1 object-visit: 1.0.1
dev: true dev: true
/marked@14.0.0:
resolution: {integrity: sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==}
engines: {node: '>= 18'}
hasBin: true
dev: false
/material-colors@1.2.6: /material-colors@1.2.6:
resolution: {integrity: sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==} resolution: {integrity: sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==}
dev: false dev: false

@ -65,3 +65,11 @@ export function executeModelAnalyse(data) {
data data
}) })
} }
/** 执行模型分析 */
export function robotChat(data) {
return request({
url: `/robot/chat`,
method: 'post',
data
})
}

@ -9,7 +9,7 @@
<template> <template>
<el-dialog <el-dialog
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="65%" width="1300px"
:show-close="false" :show-close="false"
append-to-body append-to-body
:before-close="handleClose" :before-close="handleClose"
@ -20,15 +20,17 @@
<div class="flex-row" style="align-items: center;justify-content: space-between;margin: 10px 0"> <div class="flex-row" style="align-items: center;justify-content: space-between;margin: 10px 0">
<div class="flex-row form-row"> <div class="flex-row form-row">
<span>案件名称</span> <span>案件名称</span>
<el-input v-model="baseForm['caseName']" placeholder="请输入案件名称" style="flex: 1" /> <el-select v-model="baseForm['caseId']" style="flex: 1;" clearable placeholder="请选择案件" @change="selectCase">
<el-option v-for="item in caseOptions" :key="item.id" :label="item.caseName" :value="item.id" />
</el-select>
</div> </div>
<div class="flex-row form-row"> <div class="flex-row form-row">
<span>行为人</span> <span>行为人</span>
<el-input v-model="baseForm['caseName']" placeholder="请输入案件名称" style="flex: 1" /> <el-input v-model="baseForm['caseActorName']" readonly placeholder="请输入行为人" style="flex: 1" />
</div> </div>
<div class="config-button"> <!-- <div class="config-button">
<el-button type="text" icon="el-icon-check" style="width: 100%" @click="handleConfirm"></el-button> <el-button type="text" icon="el-icon-check" style="width: 100%" @click="handleConfirm"></el-button>
</div> </div> -->
</div> </div>
</div> </div>
</template> </template>
@ -48,9 +50,9 @@
</div> </div>
<div <div
v-for="(message, index) in conversationList" v-for="(message, index) in conversationList"
:id="'message' + index"
:key="index" :key="index"
class="conversation-item" class="conversation-item"
:id="'message' + index"
> >
<div v-if="message.type === 'user'" class="flex-row user-message"> <div v-if="message.type === 'user'" class="flex-row user-message">
<img src="~@/assets/avatar/man.png"> <img src="~@/assets/avatar/man.png">
@ -58,7 +60,15 @@
</div> </div>
<div v-if="message.type === 'robot'" class="flex-row robot-message"> <div v-if="message.type === 'robot'" class="flex-row robot-message">
<img src="~@/assets/common/touxiang@2x.png"> <img src="~@/assets/common/touxiang@2x.png">
<span> <span v-loading="!message.text">
<span>{{ message.text }}</span>
<el-collapse>
<el-collapse-item title="知识库匹配结果" :name="i">
<div v-for="(item ,i) in message.docs" :key="i" v-html="item" />
</el-collapse-item>
</el-collapse>
</span>
<!-- <span>
<p>{{ `指标名称:${message['indexName']}` }}</p> <p>{{ `指标名称:${message['indexName']}` }}</p>
<p>{{ `笔录结果:${message['recordResult']}` }}</p> <p>{{ `笔录结果:${message['recordResult']}` }}</p>
<p>{{ `笔录信息:${message['recordInfo']}` }}</p> <p>{{ `笔录信息:${message['recordInfo']}` }}</p>
@ -72,21 +82,21 @@
{{ item.fileName }} {{ item.fileName }}
</a> </a>
</div> </div>
</span> </span> -->
</div> </div>
</div> </div>
</div> </div>
<div class="left-bottom"> <div class="left-bottom">
<el-input <el-input
v-model="caseIndex" v-model="caseIndex"
type="textarea"
placeholder="请输入咨询的案件指标......" placeholder="请输入咨询的案件指标......"
:autosize="{ minRows: 2, maxRows: 2 }"
@keyup.enter.native="handleSend"
/> />
<el-button <el-button
type="primary" type="primary"
icon="el-icon-s-promotion" icon="el-icon-s-promotion"
:disabled="caseIndex === ''" :disabled="caseIndex === ''|| !baseForm.caseId"
@click="handleSend" @click="handleSend"
> >
发送 发送
@ -97,7 +107,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="content-right"> <div class="content-right">
<div class="right-title">案件指标</div> <div class="right-title">案件指标</div>
<el-tabs v-model="activeTab"> <el-tabs v-model="activeTab" @tab-click="changeTab">
<el-tab-pane <el-tab-pane
v-for="item in tabs" v-for="item in tabs"
:key="item.name" :key="item.name"
@ -106,14 +116,14 @@
> >
<div class="index-content" :style="{ height: height + 'px' }"> <div class="index-content" :style="{ height: height + 'px' }">
<div <div
v-for="subItem in item.list" v-for="subItem in questionlist"
:key="subItem.key" :key="subItem.key"
class="index-item" class="index-item"
> >
<el-tooltip placement="top" :content="subItem.label"> <el-tooltip placement="top" :content="subItem.shortName">
<span class="etc">{{ subItem.label }}</span> <span class="etc">{{ subItem.shortName }}</span>
</el-tooltip> </el-tooltip>
<div class="ask-button" @click="handelAsk(subItem)"></div> <!-- <div v-if="caseIndex !== ''|| baseForm.caseId" class="ask-button" @click="handelAsk(subItem)"></div> -->
</div> </div>
</div> </div>
</el-tab-pane> </el-tab-pane>
@ -126,6 +136,10 @@
</template> </template>
<script> <script>
import { queryCaseList, robotChat } from '@/api/caseManagement'
import { queryIndexData } from '@/api/indexRule'
import { marked } from 'marked'
export default { export default {
name: 'Index', name: 'Index',
data() { data() {
@ -133,8 +147,8 @@ export default {
// //
dialogVisible: false, dialogVisible: false,
baseForm: { baseForm: {
caseName: '', caseId: '',
dore: '' caseActorName: ''
}, },
// tab // tab
activeTab: '1', activeTab: '1',
@ -149,6 +163,7 @@ export default {
{ label: '入罪指标', name: '2', list: [] }, { label: '入罪指标', name: '2', list: [] },
{ label: '出罪指标', name: '3', list: [] } { label: '出罪指标', name: '3', list: [] }
], ],
questionlist: [],
// //
caseIndex: '', caseIndex: '',
// //
@ -156,39 +171,94 @@ export default {
// //
conversationList: [], conversationList: [],
// //
firstEnter: false firstEnter: false,
caseOptions: []
} }
}, },
mounted() { mounted() {
this.$nextTick(() => { this.$nextTick(() => {
const _this = this const _this = this
_this.height = (document.documentElement.clientHeight - 400) _this.height = (document.documentElement.clientHeight - 500)
window.onresize = () => { window.onresize = () => {
_this.height = (document.documentElement.clientHeight - 400) _this.height = (document.documentElement.clientHeight - 500)
} }
}) })
}, },
methods: { methods: {
// //
show() { show(val) {
this.dialogVisible = true this.dialogVisible = true
this.fetchData()
this.baseForm.caseId = val || ''
if (val) this.selectCase(val)
this.getIndexData('1')
// const markdownText = '# Hello, world!'
// console.log(marked(markdownText))
marked
// 1 // 1
setTimeout(() => { setTimeout(() => {
this.firstEnter = true this.firstEnter = true
}, 1000) }, 1000)
}, },
//
selectCase(val) {
const obj = this.caseOptions.find(item => item.id === val)
this.$set(this.baseForm, 'caseActorName', obj ? obj.caseActorName : '')
},
// //
fetchData() { fetchData() {
queryCaseList({}, 1, 99999).then(res => {
this.caseOptions = res.data.records
})
},
changeTab(val) {
this.activeTab = val.name
this.getIndexData(this.activeTab)
},
//
getIndexData(val) {
queryIndexData({
indexType: val
}, 1, 999).then(res => {
this.questionlist = res.data.result
})
},
//
playChat(val) {
this.conversationList.push({
type: 'robot',
text: '',
docs: []
})
robotChat({
caseId: this.baseForm.caseId,
query: val || this.caseIndex
}).then(res => {
this.caseIndex = ''
if (res.code === 200) {
this.conversationList[this.conversationList.length - 1].text = res.data.answer
const list = []
res.data.docs.forEach(e => {
e = marked(e)
list.push(e)
})
this.conversationList[this.conversationList.length - 1].docs = list
console.log(this.conversationList)
this.scrollBottom()
}
})
}, },
// //
handelAsk(item) { handelAsk(item) {
this.conversationList.push({ this.conversationList.push({
type: 'user', type: 'user',
text: item.label text: item.shortName
}) })
this.scrollBottom()
this.fetchData() this.playChat(item.shortName)
}, },
// //
handleConfirm() { handleConfirm() {
@ -202,8 +272,7 @@ export default {
recordList: [{ fileName: '裴金禄第1次笔录1.jpg', url: '' }, { fileName: '裴金禄第2次笔录1.jpg', url: '' }] recordList: [{ fileName: '裴金禄第1次笔录1.jpg', url: '' }, { fileName: '裴金禄第2次笔录1.jpg', url: '' }]
}) })
this.scrollBottom() this.scrollBottom()
this.fetchData() this.playChat()
this.caseIndex = ''
}, },
// //
handleClose(done) { handleClose(done) {
@ -211,6 +280,9 @@ export default {
this.conversationList = [] this.conversationList = []
done() done()
}, },
//
handleEnter() {
},
// //
scrollBottom() { scrollBottom() {
this.$nextTick(() => { this.$nextTick(() => {
@ -329,9 +401,15 @@ export default {
padding: 0 8px; padding: 0 8px;
box-sizing: border-box; box-sizing: border-box;
border-radius: 5px; border-radius: 5px;
width: 380px;
>span { >span {
display: inline-block; display: inline-block;
width: 100%; width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
vertical-align: middle;
} }
&:hover { &:hover {
background: #F2F6FD; background: #F2F6FD;
@ -377,5 +455,16 @@ export default {
border: none; border: none;
resize: none; resize: none;
} }
.el-loading-spinner .circular {
width: 16px;
height: 16px;
}
.el-collapse-item__header {
padding-left: 16px;
margin-top: 12px;
}
.el-collapse-item__content {
padding-left: 16px;
}
} }
</style> </style>

@ -10,12 +10,12 @@
<div ref="screenRef" v-clickoutside="handleClose" class="screen-body"> <div ref="screenRef" v-clickoutside="handleClose" class="screen-body">
<div v-if="title" class="title">{{ title }}</div> <div v-if="title" class="title">{{ title }}</div>
<el-form label-width="60px" label-position="left" size="mini"> <el-form label-width="60px" label-position="left" size="mini">
<el-row :gutter="10" type="flex" style="align-items: stretch"> <el-row :gutter="10" type="flex" class="search_header" style="align-items: stretch">
<el-col :span="direction === 'row' ? 20 : 21"> <el-col class="search_left">
<el-row :gutter="40"> <el-row :gutter="40">
<template v-for="(item,index) in data"> <template v-for="(item,index) in data">
<transition :key="index" enter-active-class="animated fadeInUp" leave-active-class="animated fadeOutUp"> <transition :key="index" enter-active-class="animated fadeInUp" leave-active-class="animated fadeOutUp">
<el-col v-if="index < 7 ? true : flag" :key="index" :span="item.type === 'daterange' ? 10: span"> <el-col v-if="index < 7 ? true : flag" :key="index" :span="item.type === 'datetimerange' ? 6: span">
<el-form-item :label-width="item.labelWidth"> <el-form-item :label-width="item.labelWidth">
<span slot="label"> <span slot="label">
<el-tooltip :content="item.label" placement="left"> <el-tooltip :content="item.label" placement="left">
@ -144,12 +144,12 @@
</template> </template>
</el-row> </el-row>
</el-col> </el-col>
<el-col v-if="direction === 'row'" :span="4"> <div v-if="direction === 'row'" class="search_right">
<el-form-item style="text-align: center"> <el-form-item style="text-align: center">
<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-button size="mini" icon="el-icon-refresh" plain @click="clearSearchformInline"></el-button>
</el-form-item> </el-form-item>
</el-col> </div>
<el-col v-else :span="3"> <el-col v-else :span="3">
<el-form-item style="text-align: center"> <el-form-item style="text-align: center">
<div class="flex-column" style="align-items: center;"> <div class="flex-column" style="align-items: center;">
@ -318,6 +318,15 @@ export default {
width: 120px; width: 120px;
} }
} }
.search_header {
display: flex;
.search_left {
flex: 1;
}
.search_right {
width: 250px;
}
}
} }
::v-deep { ::v-deep {
.el-form-item__label { .el-form-item__label {

@ -37,24 +37,25 @@ export const constantRoutes = [
] ]
export const asyncRoutes = [ export const asyncRoutes = [
{ // {
path: '/', // path: '/',
name: 'home', // name: 'home',
component: Layout, // component: Layout,
redirect: '/index', // redirect: '/index',
authKey: 'back_home', // authKey: 'back_home',
meta: { title: '首页' }, // meta: { title: '首页' },
permission: 'p_home', // permission: 'p_home',
children: [ // children: [
{ // {
path: '/index', // path: '/index',
name: 'Index', // name: 'Index',
permission: 'p_home', // permission: 'p_home',
component: () => import('@/views/index/index.vue'), // component: () => import('@/views/index/index.vue'),
meta: { title: '首页', affix: false } // meta: { title: '首页', affix: false }
} // }
] // ]
}, // },
{ {
path: '/case', path: '/case',
name: 'Case', name: 'Case',
@ -168,6 +169,11 @@ export const asyncRoutes = [
path: '*', path: '*',
redirect: '/404', redirect: '/404',
hidden: true hidden: true
},
{
path: '/',
redirect: '/case-management', // 当路径为 '/' 时,重定向到 '/home',
hidden: true
} }
] ]

@ -52,7 +52,7 @@
</div> </div>
<a <a
class="bullshit-return-home" class="bullshit-return-home"
href="#/index" href="#/case-management"
> >
{{ jumpTime }}s&nbsp;{{ btn }} {{ jumpTime }}s&nbsp;{{ btn }}
</a> </a>

@ -74,7 +74,7 @@ export default {
isExpand: { isExpand: {
handler: function(newVal, oldVal) { handler: function(newVal, oldVal) {
if (newVal !== oldVal) { if (newVal !== oldVal) {
this.tableHeight(this.isExpand ? this.isEdit ? 580 : 530 : this.isEdit ? 400 : 350) this.tableHeight(this.isExpand ? this.isEdit ? 580 : 530 : this.isEdit ? 400 : 320)
} }
}, },
immediate: true immediate: true
@ -86,7 +86,7 @@ export default {
mounted() { mounted() {
this.caseId = this.$route.params.id this.caseId = this.$route.params.id
this.$nextTick(() => { this.$nextTick(() => {
this.tableHeight(this.isExpand ? (this.isEdit ? 580 : 530) : (this.isEdit ? 400 : 350)) this.tableHeight(this.isExpand ? (this.isEdit ? 580 : 530) : (this.isEdit ? 400 : 320))
}) })
this.fetchData() this.fetchData()
}, },

@ -106,7 +106,7 @@ export default {
isExpand: { isExpand: {
handler: function(newVal, oldVal) { handler: function(newVal, oldVal) {
if (newVal !== oldVal) { if (newVal !== oldVal) {
this.tableHeight(this.isExpand ? (this.isEdit ? 580 : 530) : (this.isEdit ? 400 : 350)) this.tableHeight(this.isExpand ? (this.isEdit ? 580 : 530) : (this.isEdit ? 400 : 320))
} }
} }
}, },
@ -117,7 +117,7 @@ export default {
mounted() { mounted() {
this.caseId = this.$route.params.id this.caseId = this.$route.params.id
this.$nextTick(() => { this.$nextTick(() => {
this.tableHeight(this.isExpand ? (this.isEdit ? 580 : 530) : (this.isEdit ? 400 : 350)) this.tableHeight(this.isExpand ? (this.isEdit ? 580 : 530) : (this.isEdit ? 400 : 320))
}) })
this.fetchData() this.fetchData()
}, },

@ -60,7 +60,7 @@ export default {
columns: [ columns: [
{ title: '', width: '50px', treeNode: true }, { title: '', width: '50px', treeNode: true },
{ title: '序号', type: 'seq', width: '50px' }, { title: '序号', type: 'seq', width: '50px' },
{ title: '指标名称', field: 'indexName' }, { title: '指标名称', field: 'indexName', align: 'left' },
{ title: '分值', field: 'score' }, { title: '分值', field: 'score' },
{ title: '数据来源', field: 'indexSource', formatter: ({ cellValue }) => { { title: '数据来源', field: 'indexSource', formatter: ({ cellValue }) => {
return cellValue ? this.indexSourceList.find(item => item.value === cellValue).label : '' return cellValue ? this.indexSourceList.find(item => item.value === cellValue).label : ''
@ -81,7 +81,7 @@ export default {
isExpand: { isExpand: {
handler: function(newVal, oldVal) { handler: function(newVal, oldVal) {
if (newVal !== oldVal) { if (newVal !== oldVal) {
this.tableHeight(this.isExpand ? 530 : 360) this.tableHeight(this.isExpand ? 530 : 320)
} }
}, },
immediate: true immediate: true
@ -94,7 +94,7 @@ export default {
// //
fetchData() { fetchData() {
queryIndexDetail({ caseId: this.$route.params['id'], indexType: '1' }, this.queryForm.page, this.queryForm.size).then(res => { queryIndexDetail({ caseId: this.$route.params['id'], indexType: '1' }, this.queryForm.page, this.queryForm.size).then(res => {
this.gridOptions.data = res.data.result this.gridOptions.data = res.data.records
this.queryForm.total = res.data.total this.queryForm.total = res.data.total
}) })
}, },

@ -64,7 +64,7 @@ export default {
columns: [ columns: [
{ title: '', width: '50px', treeNode: true }, { title: '', width: '50px', treeNode: true },
{ title: '序号', type: 'seq', width: '50px' }, { title: '序号', type: 'seq', width: '50px' },
{ title: '指标名称', field: 'indexName' }, { title: '指标名称', field: 'indexName', align: 'left' },
{ title: '分值', field: 'score' }, { title: '分值', field: 'score' },
{ title: '数据来源', field: 'indexSource', formatter: ({ cellValue }) => { { title: '数据来源', field: 'indexSource', formatter: ({ cellValue }) => {
return cellValue ? this.indexSourceList.find(item => item.value === cellValue).label : '' return cellValue ? this.indexSourceList.find(item => item.value === cellValue).label : ''
@ -85,7 +85,7 @@ export default {
isExpand: { isExpand: {
handler: function(newVal, oldVal) { handler: function(newVal, oldVal) {
if (newVal !== oldVal) { if (newVal !== oldVal) {
this.tableHeight(this.isExpand ? 530 : 360) this.tableHeight(this.isExpand ? 530 : 320)
} }
}, },
immediate: true immediate: true
@ -98,7 +98,7 @@ export default {
// //
fetchData() { fetchData() {
queryIndexDetail({ caseId: this.$route.params['id'], indexType: '2' }, this.queryForm.page, this.queryForm.size).then(res => { queryIndexDetail({ caseId: this.$route.params['id'], indexType: '2' }, this.queryForm.page, this.queryForm.size).then(res => {
this.gridOptions.data = res.data.result this.gridOptions.data = res.data.records
this.queryForm.total = res.data.total this.queryForm.total = res.data.total
}) })
}, },

@ -19,9 +19,7 @@
<el-tag :type="row.indexResult === 'true' ? 'success' : 'error'">{{ row.indexResult?row.indexResult=== 'true' ? '符合' : '不符合': '未评估' }}</el-tag> <el-tag :type="row.indexResult === 'true' ? 'success' : 'error'">{{ row.indexResult?row.indexResult=== 'true' ? '符合' : '不符合': '未评估' }}</el-tag>
</el-badge> </el-badge>
</div> </div>
<el-tag v-else :type="row.indexResult === 'true' ? 'success' : 'error'">{{ row.indexResult?row.indexResult=== 'true' ? '符合' : '不符合': '未评估' }}</el-tag> <el-tag v-else :type="row.indexResult === 'true' ? 'success' : 'error'">{{ row.indexResult?row.indexResult=== 'true' ? '符合' : '不符合': '未评估' }}</el-tag>
</template> </template>
</vxe-grid> </vxe-grid>
<div style="text-align: center"> <div style="text-align: center">
@ -62,7 +60,7 @@ export default {
columns: [ columns: [
{ title: '', width: '50px', treeNode: true }, { title: '', width: '50px', treeNode: true },
{ title: '序号', type: 'seq', width: '50px' }, { title: '序号', type: 'seq', width: '50px' },
{ title: '指标名称', field: 'indexName' }, { title: '指标名称', field: 'indexName', align: 'left' },
{ title: '分值', field: 'score' }, { title: '分值', field: 'score' },
{ title: '数据来源', field: 'indexSource', formatter: ({ cellValue }) => { { title: '数据来源', field: 'indexSource', formatter: ({ cellValue }) => {
return cellValue ? this.indexSourceList.find(item => item.value === cellValue).label : '' return cellValue ? this.indexSourceList.find(item => item.value === cellValue).label : ''
@ -84,7 +82,7 @@ export default {
isExpand: { isExpand: {
handler: function(newVal, oldVal) { handler: function(newVal, oldVal) {
if (newVal !== oldVal) { if (newVal !== oldVal) {
this.tableHeight(this.isExpand ? 530 : 360) this.tableHeight(this.isExpand ? 530 : 320)
} }
}, },
immediate: true immediate: true
@ -97,7 +95,7 @@ export default {
// //
fetchData() { fetchData() {
queryIndexDetail({ caseId: this.$route.params['id'], indexType: '3' }, this.queryForm.page, this.queryForm.size).then(res => { queryIndexDetail({ caseId: this.$route.params['id'], indexType: '3' }, this.queryForm.page, this.queryForm.size).then(res => {
this.gridOptions.data = res.data.result this.gridOptions.data = res.data.records
this.queryForm.total = res.data.total this.queryForm.total = res.data.total
}) })
}, },

@ -13,7 +13,7 @@
<div class="left-score"> <div class="left-score">
<vue-chart autoresize :option="scoreOption" :style="{ width: '100%', height: '260px' }" /> <vue-chart autoresize :option="scoreOption" :style="{ width: '100%', height: '260px' }" />
<div <div
v-if="caseData['totalScore'] && caseData['totalScore'] > 0" v-if="caseData['totalScore'] != null"
class="flex-column circle-info" class="flex-column circle-info"
:style="circleStyle" :style="circleStyle"
> >
@ -39,7 +39,7 @@
<div> <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="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="caseData['totalScore'] != null" type="primary" plain @click="openDeatil"></el-button>
<el-button type="text" icon="el-icon-arrow-up" style="color: #666666" @click="expand = false">收起</el-button> <el-button type="text" icon="el-icon-arrow-up" style="color: #666666" @click="expand = false">收起</el-button>
</div> </div>
@ -81,7 +81,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="flex-row details-info" :style="{ height: expand ? 'calc(100% - 270px)' : 'calc(100% - 100px)' }"> <div class="flex-row details-info" :style="{ height: expand ? 'calc(100% - 270px)' : 'calc(100% - 80px)' }">
<div class="info-left"> <div class="info-left">
<el-tree <el-tree
:data="leftTabs" :data="leftTabs"
@ -350,6 +350,12 @@ export default {
padding: 10px; padding: 10px;
box-sizing: border-box; box-sizing: border-box;
border-radius: 8px; border-radius: 8px;
// height: 240px;
h4 {
font-weight: bold;
font-size: 18px;
color: #333333;
}
} }
.case-summarize { .case-summarize {
max-height: 55px; max-height: 55px;
@ -413,5 +419,18 @@ export default {
background: #3763FF; background: #3763FF;
color: white; color: white;
} }
.el-descriptions-item__label {
font-weight: 400;
font-size: 16px;
color: #666666;
}
.el-descriptions-item__content {
font-weight: 400;
font-size: 16px;
color: #333333;
}
.el-descriptions--small:not(.is-bordered) .el-descriptions-item__cell {
padding-bottom: 16px !important;
}
} }
</style> </style>

@ -10,6 +10,7 @@
<cs-dialog <cs-dialog
append-to-body append-to-body
:dialog="dialogOption" :dialog="dialogOption"
class="model"
> >
<div slot="content"> <div slot="content">
<p style="margin-top: 0">分析<span style="font-weight: bold">{{ `${caseData['caseName']}` }}</span>获取智能取证分析结果</p> <p style="margin-top: 0">分析<span style="font-weight: bold">{{ `${caseData['caseName']}` }}</span>获取智能取证分析结果</p>
@ -93,12 +94,12 @@ export default {
}, },
columns: [ columns: [
{ title: '序号', type: 'seq', width: '50px' }, { title: '序号', type: 'seq', width: '50px' },
{ title: '指标名称', field: 'indexName' }, { title: '指标名称', field: 'indexName', align: 'left' },
{ title: '原子指标', field: 'automicIndexName' }, { title: '原子指标', field: 'automicIndexName', width: '260px' },
{ title: '判断结果', field: 'atomicResult', formatter: ({ cellValue }) => { { title: '判断结果', field: 'atomicResult', width: '150px', formatter: ({ cellValue }) => {
return cellValue ? this.resultOptions.find(item => item.value === cellValue).label : '' return cellValue ? this.resultOptions.find(item => item.value === cellValue).label : ''
}, editRender: {}, slots: { edit: 'result_edit' }}, }, editRender: {}, slots: { edit: 'result_edit' }},
{ title: '备注', field: 'remark', formatter: ({ cellValue }) => { { title: '备注', field: 'remark', width: '250px', formatter: ({ cellValue }) => {
return cellValue || '' return cellValue || ''
}, editRender: {}, slots: { edit: 'remark_edit' }} }, editRender: {}, slots: { edit: 'remark_edit' }}
], ],
@ -130,7 +131,6 @@ export default {
this.save() this.save()
}, },
async save() { async save() {
const res = await saveCaseAtomicResult({ const res = await saveCaseAtomicResult({
caseAtomicIndexList: this.gridOptions.data, caseAtomicIndexList: this.gridOptions.data,
caseId: this.caseId caseId: this.caseId
@ -164,3 +164,8 @@ export default {
} }
} }
</script> </script>
<style lang="scss">
.model .el-dialog {
background: #fff !important;
}
</style>

@ -27,7 +27,7 @@
<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="getTypeStatus(item.identifyResult)"
style="margin-right: 5px" style="margin-right: 5px"
> >
{{ item.identifyResultName }} {{ item.identifyResultName }}
@ -41,12 +41,13 @@
</div> </div>
<div class="item-body"> <div class="item-body">
<el-row :gutter="10" style="padding: 10px;"> <el-row :gutter="10" style="padding: 10px;">
<el-col :span="8">
<span class="item-body-top etc">{{ `行为人:${item['caseActorName'] ? item['caseActorName'] : '-'}` }}</span>
</el-col>
<el-col :span="16"> <el-col :span="16">
<span class="item-body-top etc">{{ `案件编号:${item.caseNo}` }}</span> <span class="item-body-top etc">{{ `案件编号:${item.caseNo}` }}</span>
</el-col> </el-col>
<el-col :span="8">
<span class="item-body-top etc">{{ `行为人:${item['caseActorName'] ? item['caseActorName'] : '-'}` }}</span>
</el-col>
<!-- <el-col :span="8">--> <!-- <el-col :span="8">-->
<!-- <span class="item-body-top etc">{{ `证据数量:${item.evidenceNum}` }}</span>--> <!-- <span class="item-body-top etc">{{ `证据数量:${item.evidenceNum}` }}</span>-->
<!-- </el-col>--> <!-- </el-col>-->
@ -118,8 +119,7 @@ export default {
{ label: '案件编号', model: 'caseNo', type: 'input' }, { label: '案件编号', model: 'caseNo', type: 'input' },
{ label: '案件名称', model: 'caseName', type: 'input' }, { label: '案件名称', model: 'caseName', type: 'input' },
{ label: '认定结果', model: 'identifyResult', type: 'selectMultiple', 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: 'involvedPerson', type: 'input' },
{ label: '当事人', model: 'lawParty', type: 'input' },
{ label: '最新时间', model: 'updateTime', type: 'datetimerange' } { label: '最新时间', model: 'updateTime', type: 'datetimerange' }
], ],
// //
@ -130,6 +130,15 @@ export default {
// this.fetchData() // this.fetchData()
}, },
methods: { methods: {
getTypeStatus(val) {
if (val === '1') {
return 'danger'
} else if (val === '2') {
return 'warning'
} else {
return 'success'
}
},
// //
fetchData() { fetchData() {
// //
@ -139,6 +148,7 @@ export default {
this.$set(params, 'updateEndTime', this.searchFormData['updateTime'][1]) this.$set(params, 'updateEndTime', this.searchFormData['updateTime'][1])
} }
delete params['updateTime'] delete params['updateTime']
if (params.identifyResult && params.identifyResult.length === 0) delete params['identifyResult']
queryCaseList(params, this.queryForm.page, this.queryForm.size).then(res => { queryCaseList(params, this.queryForm.page, this.queryForm.size).then(res => {
this.caseList = res.data.records this.caseList = res.data.records
this.caseList.forEach(e => { this.caseList.forEach(e => {
@ -237,8 +247,8 @@ export default {
}) })
}, },
// //
handleContact() { handleContact(row) {
this.$refs.conversation.show() this.$refs.conversation.show(row.id)
}, },
// //
formatterStatusName(item) { formatterStatusName(item) {
@ -338,6 +348,9 @@ export default {
.warning { .warning {
color: #FF9311; color: #FF9311;
} }
.error {
color: #FF3429;
}
.bottom-buttons { .bottom-buttons {
min-height: 45px; min-height: 45px;
line-height: 45px; line-height: 45px;

@ -8,7 +8,7 @@
<template> <template>
<div class="content"> <div class="content">
<cs-search title="原子指标" :data="searchData" :span="8" @onSearch="onSearch" @getData="onSearch" /> <cs-search title="原子指标" :data="searchData" :span="6" direction="row" @onSearch="onSearch" @getData="onSearch" />
<div class="index-content"> <div class="index-content">
<div class="header"> <div class="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>
@ -78,7 +78,7 @@ export default {
} }
}, },
mounted() { mounted() {
this.tableHeight(460) this.tableHeight(390)
}, },
methods: { methods: {
// //
@ -138,11 +138,11 @@ 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% - 120px);
} }
.expand-details { .expand-details {
background: #F6F6F6; background: #F6F6F6;
padding: 20px; padding: 8px 20px;
box-sizing: border-box; box-sizing: border-box;
} }
} }

@ -9,6 +9,7 @@
<template> <template>
<cs-dialog <cs-dialog
:dialog="dialogOption" :dialog="dialogOption"
class="SelectAtomic"
@onSubmit="handleSubmit" @onSubmit="handleSubmit"
> >
<template slot="content"> <template slot="content">
@ -86,7 +87,7 @@ export default {
height: '320px', height: '320px',
columns: [ columns: [
{ type: 'checkbox', width: '80px' }, { type: 'checkbox', width: '80px' },
{ title: '原子指标名称', field: 'name' }, { title: '原子指标名称', field: 'name', align: 'left' },
{ title: '指标来源', field: 'indexSourceName' }, { title: '指标来源', field: 'indexSourceName' },
{ title: '指标说明', field: 'remark' } { title: '指标说明', field: 'remark' }
], ],
@ -177,6 +178,8 @@ export default {
} }
</script> </script>
<style scoped lang="scss"> <style lang="scss">
.SelectAtomic .el-dialog {
background: #fff;
}
</style> </style>

@ -8,7 +8,7 @@
<template> <template>
<div class="content"> <div class="content">
<cs-search title="指标检索" :data="searchData" :span="8" @onSearch="onSearch" @getData="onSearch" /> <cs-search title="指标检索" :data="searchData" :span="6" direction="row" @onSearch="onSearch" @getData="onSearch" />
<div class="index-content"> <div class="index-content">
<div class="header"> <div class="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>
@ -95,7 +95,7 @@ export default {
columns: [ columns: [
{ type: 'expand', width: '40px', slots: { content: 'content' }}, { type: 'expand', width: '40px', slots: { content: 'content' }},
{ title: '序号', type: 'seq', width: '50px' }, { title: '序号', type: 'seq', width: '50px' },
{ title: '指标名称', field: 'name' }, { title: '指标名称', field: 'name', align: 'left' },
{ title: '指标类别', field: 'indexTypeName', width: '150px' }, { title: '指标类别', field: 'indexTypeName', width: '150px' },
{ title: '指标分数', field: 'indexScore', width: '150px', sortable: true }, { title: '指标分数', field: 'indexScore', width: '150px', sortable: true },
{ title: '原子指标数量', field: 'atomicIndexNum', width: '150px' }, { title: '原子指标数量', field: 'atomicIndexNum', width: '150px' },
@ -107,7 +107,7 @@ export default {
} }
}, },
mounted() { mounted() {
this.tableHeight(460) this.tableHeight(390)
}, },
methods: { methods: {
// //
@ -161,11 +161,11 @@ 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% - 120px);
} }
.expand-details { .expand-details {
background: #F6F6F6; background: #F6F6F6;
padding: 20px; padding: 8px 20px;
box-sizing: border-box; box-sizing: border-box;
} }
} }

@ -27,7 +27,7 @@ export default {
...mixin.data().gridOptions, ...mixin.data().gridOptions,
columns: [ columns: [
{ title: '序号', type: 'seq', width: '50px' }, { title: '序号', type: 'seq', width: '50px' },
{ title: '指标名称', field: 'name' }, { title: '指标名称', field: 'name', align: 'left' },
{ title: '指标类别', field: 'indexTypeName', width: '150px' }, { title: '指标类别', field: 'indexTypeName', width: '150px' },
{ title: '指标分数', field: 'indexScore', width: '150px', sortable: true }, { title: '指标分数', field: 'indexScore', width: '150px', sortable: true },
{ title: '原子指标数量', field: 'atomicIndexNum', width: '150px' }, { title: '原子指标数量', field: 'atomicIndexNum', width: '150px' },

@ -16,7 +16,7 @@
</div> </div>
<div class="desc">模型采取赋分制的方法来综合判定工程类合同诈骗案证据充分与否</div> <div class="desc">模型采取赋分制的方法来综合判定工程类合同诈骗案证据充分与否</div>
</div> </div>
<img src="~@/assets/common/more.png" alt=""> <img style="margin-top: 24px;" src="~@/assets/common/more.png" alt="">
</div> </div>
<div class="right"> <div class="right">
<div class="right_card"> <div class="right_card">
@ -72,7 +72,7 @@ export default {
img { img {
width: 346px; width: 346px;
height: 109px; height: 109px;
margin-top: 24px; // margin-top: 12px;
} }
.left_title { .left_title {
font-weight: bold; font-weight: bold;
@ -106,7 +106,7 @@ export default {
// height: calc(100vh - 200px); // height: calc(100vh - 200px);
margin-left: 16px; margin-left: 16px;
.right_card { .right_card {
width: 100%; // width: 100%;
background: #FFFFFF; background: #FFFFFF;
border-radius: 8px 8px 8px 8px; border-radius: 8px 8px 8px 8px;
padding: 24px; padding: 24px;

Loading…
Cancel
Save