feat: 代码提交

dev_1.0.0
xiangcongshuai 9 months ago
parent d23c55fb49
commit 2106516ab2

@ -98,3 +98,52 @@ export function queryIndexDetail(data, page, size) {
params: data
})
}
/** 查询证据列表 */
export function queryEvidenceList(data) {
return request({
url: `/caseEvidence/pageListEvidence`,
method: 'get',
params: data
})
}
/** 新增案件证据 */
export function saveEvidence(data) {
return request({
url: `/caseEvidence/saveEvidence`,
method: 'post',
data
})
}
/** 编辑案件证据 */
export function updateEvidence(data) {
return request({
url: `/caseEvidence/updateEvidence`,
method: 'post',
data
})
}
/** 删除案件证据 */
export function deleteEvidence(data) {
return request({
url: `/caseEvidence/deleteEvidence`,
method: 'delete',
data
})
}
/** 查询案件原子列表 */
export function listCaseAtomicIndex(data) {
return request({
url: `/modelIndex/listCaseAtomicIndex`,
method: 'get',
params: data
})
}
/** 保存案件原子指标结果 */
export function saveCaseAtomicResult(data) {
return request({
url: `/modelIndex/saveCaseAtomicResult`,
method: 'post',
data
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 MiB

@ -5,7 +5,7 @@ const network = {
// 默认的接口地址 如果是开发环境和生产环境走vab-mock-server当然你也可以选择自己配置成需要的接口地址
baseURL:
process.env.NODE_ENV === 'development'
? 'http://192.168.1.2:8080'
? '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',

@ -27,7 +27,7 @@
/>
</div>
<!--编辑/新增证据-->
<edit-evidence ref="edit" />
<edit-evidence @onClose="fetchData" ref="edit" />
</div>
</template>
@ -35,7 +35,7 @@
import mixin from '@/views/mixin'
import EditEvidence from '@/views/caseDetails/components/edit/EditEvidence.vue'
import { queryEvidenceList, deleteEvidence } from '@/api/caseDetails'
export default {
name: 'CaseEvidence',
components: { EditEvidence },
@ -58,11 +58,11 @@ export default {
gridOptions: {
...mixin.data().gridOptions,
columns: [
{ title: '序号', type: 'seq' },
{ title: '证据名称', field: 'name' },
{ title: '证件类型', field: 'roleName' },
{ title: '证件文件', field: 'confessionMaterial' },
{ title: '最新时间', field: 'newDate' },
{ title: '序号', type: 'seq',width:80 },
{ title: '证据名称', field: 'evidenceName' },
{ title: '证据类型', field: 'evidenceTypeDesc' },
// { title: '', field: 'confessionMaterial' },
{ title: '最新时间', field: 'updateTime' },
{ title: '操作', slots: { default: 'opera' }, fixed: 'right', width: '100px' }
],
data: [{}]
@ -79,10 +79,25 @@ export default {
immediate: true
}
},
mounted() {
this.caseId = this.$route.params.id
this.$nextTick(() => {
this.tableHeight(this.isExpand ? (this.isEdit ? 550 : 500) : (this.isEdit ? 380 : 330))
})
this.fetchData()
},
methods: {
//
fetchData() {
const params = {
caseId: this.caseId,
page: this.queryForm.page,
size: this.queryForm.size
}
queryEvidenceList(params).then(res => {
this.gridOptions.data = res.data.records
this.queryForm.total = res.data.total
})
},
//
handleAdd() {
@ -95,7 +110,11 @@ export default {
//
handleDel(row) {
this.$baseConfirm('你确定要删除当前项吗', null, async() => {
const { code, msg } = await deleteEvidence({
evidenceId: row.id
})
code === 200 ? this.$baseMessage.success(msg || '删除成功!') : this.$baseMessage.error(msg || '删除成功!')
this.fetchData()
})
}
}

@ -23,20 +23,20 @@
v-for="item in evidenceTypeList"
:key="item.value"
:value="item.value"
:label:="item.label"
:label="item.label"
/>
</el-select>
</el-form-item>
<el-form-item label="提供人" prop="provider">
<el-input v-model="evidenceForm['provider']" placeholder="请输入提供人" />
</el-form-item>
<el-form-item label="甲方" prop="firstParty">
<el-input v-model="evidenceForm['firstParty']" placeholder="请输入甲方" />
<el-form-item label="甲方" prop="partyA">
<el-input v-model="evidenceForm['partyA']" placeholder="请输入甲方" />
</el-form-item>
<el-form-item label="乙方" prop="partyB">
<el-input v-model="evidenceForm['partyB']" placeholder="请输入乙方" />
</el-form-item>
<el-form-item label="上传材料" prop="file">
<el-form-item label="上传材料" prop="fileIdList">
<el-upload
class="upload-demo"
:action="uploadOption.action"
@ -44,6 +44,7 @@
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
:on-success="handleSuccess"
multiple
:on-exceed="handleExceed"
:file-list="fileList"
@ -58,38 +59,54 @@
</template>
<script>
import { baseURL } from '@/config/net.config'
import { saveEvidence, updateEvidence } from '@/api/caseDetails'
export default {
name: 'EditEvidence',
data() {
return {
drawerOption: {
show: false,
title: '添加笔录'
title: '添加证据'
},
//
evidenceForm: {},
evidenceForm: {
fileIdList: []
},
rules: {
evidenceName: [{ required: true, message: '证据名称不能为空!', trigger: 'blur' }],
evidenceType: [{ required: true, message: '证据类型不能为空!', trigger: 'blur' }],
evidenceType: [{ required: true, message: '证据类型不能为空!', trigger: 'change' }],
provider: [{ required: true, message: '提供人不能为空!', trigger: 'blur' }],
file: [{ required: true, message: '上传材料不能为空!', trigger: 'blur' }]
fileIdList: [{ required: true, message: '上传材料不能为空!', trigger: 'change' }]
},
//
evidenceTypeList: [],
evidenceTypeList: JSON.parse(sessionStorage.getItem('evidence_type')),
//
fileList: [],
//
uploadOption: {
action: '',
action: `${baseURL}/minio/uploadFile`,
accept: '.docx,.bmp,.jpg,.png'
},
isEdit: false
}
},
methods: {
show(data, isEdit) {
this.isEdit = isEdit
this.evidenceForm = isEdit ? data : {}
this.fileList = []
this.evidenceForm = isEdit ? data : { fileIdList: [] }
if (isEdit) {
const list = []
data.fileList.forEach(e => {
list.push(e.fileId)
this.fileList.push({
name: e.fileName
})
})
this.evidenceForm.fileIdList = list
}
this.drawerOption.title = isEdit ? '编辑证据' : '添加证据'
this.drawerOption.show = true
},
@ -106,11 +123,37 @@ export default {
//
handleSubmit() {
this.$refs.form.validate(valid => {
if (valid) { this.drawerOption.show = false }
if (valid) {
const params = {
...this.evidenceForm,
caseId: this.$route.params.id
}
if (this.isEdit) {
updateEvidence(params).then(res => {
if (res.code === 200) {
this.$baseMessage.success('提交成功')
this.drawerOption.show = false
this.$emit('onClose')
}
})
} else {
saveEvidence(params).then(res => {
if (res.code === 200) {
this.$baseMessage.success('提交成功')
this.drawerOption.show = false
this.$emit('onClose')
}
})
}
}
})
},
handleRemove(file, fileList) {
console.log(file, fileList)
handleRemove(file, uploadFiles) {
const list = []
for (const item of uploadFiles) {
list.push(item.response.data)
}
this.evidenceForm.fileIdList = list
},
handlePreview(file) {
console.log(file)
@ -120,6 +163,11 @@ export default {
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}`)
},
handleSuccess(response) {
if (response.code === 200) {
this.evidenceForm.fileIdList.push(response.data)
}
}
}
}

@ -207,6 +207,7 @@ export default {
}
},
mounted() {
this.caseId = this.$route.params.id
this.getUserList()
},
methods: {
@ -232,7 +233,7 @@ export default {
},
//
getUserList() {
queryUserList({ caseId: this.caseId }).then(res => {
queryUserList({ caseId: this.$route.params.id }).then(res => {
this.userList = res.data
})
},

@ -53,7 +53,7 @@
{{ caseData.caseDetail }}
</div>
</el-descriptions-item>
<el-descriptions-item label="行为人">{{ caseData.lawActor }}</el-descriptions-item>
<el-descriptions-item label="行为人">{{ caseData.lawActorName }}</el-descriptions-item>
<el-descriptions-item label="当事人">{{ caseData.lawParty }}</el-descriptions-item>
</el-descriptions>
</div>
@ -174,7 +174,15 @@ export default {
fetchData() {
queryCaseList({ id: this.$route.params['id'] }, 1, 1).then(res => {
if (res.code === 200) {
this.caseData = res.data.result[0]
this.caseData = res.data.records[0]
if (this.caseData.lawPartyList) {
const list = []
this.caseData.lawPartyList.forEach(e => {
list.push(e.name)
})
this.caseData.lawParty = list.join(',')
}
//
this.scoreOption.series[0].data = [{ value: this.caseData.totalScore }]
//
@ -216,7 +224,7 @@ export default {
this.$set(this.caseData, 'isAnalysing', true)
const params = {
caseId: this.$route.params['id'],
lawActor: this.caseData.lawActor,
lawActorName: this.caseData.lawActorName,
lawParty: this.caseData.lawParty
}
executeModelAnalyse(params).then(res => {

@ -17,7 +17,7 @@
<el-col :span="12">
<el-form-item label="行为人">
<div class="flex-row">
<el-input v-model="caseData['lawActor']" :disabled="!doreEdit" />
<el-input v-model="caseData['lawActorName']" :disabled="!doreEdit" />
<el-button v-show="false" :plain="!doreEdit" type="primary" style="margin-left: 10px" @click="handelDore">{{ doreEdit ? '' : '' }}</el-button>
</div>
</el-form-item>
@ -35,7 +35,7 @@
<h4>原子指标人工判别项</h4>
<vxe-grid ref="xTable" v-bind="gridOptions">
<template #result_edit="{row}">
<el-select v-model="row['result']" placeholder="请选择">
<el-select v-model="row['atomicResult']" placeholder="请选择">
<el-option
v-for="item in resultOptions"
:key="item.value"
@ -44,6 +44,9 @@
/>
</el-select>
</template>
<template #remark_edit="{row}">
<el-input v-model="row['remark']" placeholder="请输入" />
</template>
</vxe-grid>
<div style="text-align: center;margin-top: 10px">
<el-button type="primary" plain style="width: 80px" @click="() => { dialogOption.show = false }">取消</el-button>
@ -56,7 +59,7 @@
<script>
import mixin from '@/views/mixin'
import { listCaseAtomicIndex, saveCaseAtomicResult } from '@/api/caseDetails'
export default {
name: 'ModelAnalysis',
mixins: [mixin],
@ -89,10 +92,13 @@ export default {
columns: [
{ title: '序号', type: 'seq', width: '50px' },
{ title: '指标名称', field: 'indexName' },
{ title: '原子指标', field: 'atomicIndexName' },
{ title: '判断结果', field: 'result', formatter: ({ cellValue }) => {
{ title: '原子指标', field: 'automicIndexName' },
{ title: '判断结果', field: 'atomicResult', formatter: ({ cellValue }) => {
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 }) => {
return cellValue || ''
}, editRender: {}, slots: { edit: 'remark_edit' }}
],
data: []
},
@ -104,6 +110,7 @@ export default {
show(data) {
this.dialogOption.show = true
this.caseData = data
this.fetchData()
},
// /
handelDore() {
@ -117,11 +124,32 @@ export default {
async handelSave() {
const error = await this.$refs.xTable.validate(true)
console.log(error, 666)
this.save()
},
async save() {
const res = await saveCaseAtomicResult({
caseAtomicIndexList: this.gridOptions.data,
caseId: this.$route.params.id
})
if (res.code === 200) {
this.$baseMessage.success('保存成功')
this.dialogOption.show = false
}
},
//
handleExecute() {
async handleExecute() {
await this.save()
this.$emit('confirm', this.caseData)
this.dialogOption.show = false
},
//
fetchData() {
const params = {
caseId: this.$route.params.id
}
listCaseAtomicIndex(params).then(res => {
this.gridOptions.data = res.data
})
}
}
}

@ -20,7 +20,7 @@
</div>
<el-row :gutter="20" type="flex" class="list-content">
<vuedraggable v-model="caseList" animation="400" handle=".mover" style="width: 100%">
<transition-group>
<transition-group class="list-span">
<el-col v-for="item in caseList" :key="item.id" :span="6">
<div class="list-item" @click="handleClick(item)">
<div class="flex-row item-header">
@ -42,14 +42,14 @@
<div class="item-body">
<el-row :gutter="10" style="padding: 10px;">
<el-col :span="8">
<span class="item-body-top etc">{{ `行为人:${item['lawActor'] ? item['lawActor'] : '-'}` }}</span>
<span class="item-body-top etc">{{ `行为人:${item['lawActorName'] ? item['lawActorName'] : '-'}` }}</span>
</el-col>
<el-col :span="8">
<span class="item-body-top etc">{{ `案件编号:${item.caseNo}` }}</span>
</el-col>
<!-- <el-col :span="8">-->
<!-- <span class="item-body-top etc">{{ `证据数量:${item.evidenceNum}` }}</span>-->
<!-- </el-col>-->
<!-- <el-col :span="8">-->
<!-- <span class="item-body-top etc">{{ `证据数量:${item.evidenceNum}` }}</span>-->
<!-- </el-col>-->
<el-col :span="24" style="margin-top: 10px">
<span class="item-body-top etc">{{ `当事人:${item.lawParty}` }}</span>
</el-col>
@ -114,7 +114,7 @@ export default {
{ label: '案件编号', model: 'caseNo', type: 'input' },
{ label: '案件名称', model: 'caseName', type: 'input' },
{ label: '认定结果', model: 'identifyResult', type: 'select', option: JSON.parse(sessionStorage.getItem('identify_result')) },
{ label: '行为人', model: 'lawActor', type: 'input' },
{ label: '行为人', model: 'lawActorName', type: 'input' },
{ label: '当事人', model: 'lawParty', type: 'input' },
{ label: '最新时间', model: 'updateTime', type: 'datetimerange' }
],
@ -136,7 +136,14 @@ export default {
}
delete params['updateTime']
queryCaseList(params, this.queryForm.page, this.queryForm.size).then(res => {
this.caseList = res.data.result
this.caseList = res.data.records
this.caseList.forEach(e => {
const list = []
for (const item of e.lawPartyList) {
list.push(item.name)
}
e.lawParty = list.join(',')
})
this.queryForm.total = res.data.total
})
},
@ -199,7 +206,7 @@ export default {
this.$set(item, 'isAnalysing', true)
const params = {
caseId: item.id,
lawActor: item.lawActor,
lawActorName: item.lawActorName,
lawParty: item.lawParty
}
executeModelAnalyse(params).then(res => {
@ -256,6 +263,10 @@ export default {
overflow-y: auto;
height: calc(100% - 32px - 32px - 20px);
flex-wrap: wrap;
.list-span {
display: flex;
flex-wrap: wrap;
}
.list-item {
background: #F2F5F9;
border: 1px solid #CADFFF;

@ -138,42 +138,46 @@ export default {
align-items: center;
width: 100vw;
height: 100vh;
background-image: url(../../assets/login/bg.png);
background-size: 100% 100%;
.login-left {
font-weight: 700;
font-size: 20px;
margin-left: 160px;
font-weight: bold;
font-size: 50px;
color: #FFFFFF;
margin-left: 260px;
span:nth-child(1) {
font-size: 30px;
font-size: 50px;
letter-spacing: 3px;
}
span:nth-child(2) {
font-size: 50px;
line-height: 100px;
font-size: 80px;
letter-spacing: 13px;
margin-top: 14px;
}
span:nth-child(3) {
font-size: 27px;
font-size: 40px;
margin-top: 24px;
}
}
.login-form {
position: absolute;
background: #FFFFFF;
border-radius: 8px;
right: 160px;
width: 380px;
min-height: 400px;
right: 260px;
width: 500px;
min-height: 520px;
align-items: center;
padding: 0 30px;
box-sizing: border-box;
.form-header {
align-items: center;
padding: 30px 0;
padding: 65px 0;
font-size: 24px;
color: #333333;
font-weight: 600;
span:nth-child(2) {
color: #666666;
margin-top: 5px;
margin-top: 10px;
}
}
.login-item {

Loading…
Cancel
Save