案件列表信息,详情,修改,压缩包

This commit is contained in:
fz
2024-01-11 17:46:26 +08:00
parent 82661af1b7
commit 3151c2f6cf
5 changed files with 363 additions and 199 deletions
+58 -176
View File
@@ -2,8 +2,7 @@
<div>
<el-dialog :title="title" :visible="addVisable" v-if="addVisable" @close="cancel" width="1000px" center
:distroy-on-close="true">
<el-form :model="formData" ref="ruleForm" label-width="130px" class="demo-ruleForm">
<el-form :model="formData" ref="ruleForm" label-width="130px" class="demo-ruleForm" :disabled="caseDisabled">
<el-row>
<div style="display: inline-flex">
<div class="infoIcon"></div>
@@ -57,6 +56,20 @@
<el-input v-model="formData.caseSubjectAmount" placeholder="请输入案件标的" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="裁决书模板" prop="templateId" :rules="[
{
required: true,
message: '裁决书模板',
trigger: 'blur',
},
]">
<el-select placeholder="请选择裁决书模板" v-model="formData.templateId">
<el-option v-for="item in templateList" :label="item.temName" :key="item.id"
:value="item.id"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<div style="display: inline-flex">
<div class="infoIcon"></div>
@@ -262,99 +275,19 @@
</el-form-item>
</el-col>
</el-row>
<el-col :span="24" v-if="modelFlag">
<div style="display: inline-flex">
<div class="infoIcon"></div>
<div class="caseInfo">抓取规则设置</div>
</div>
<el-divider></el-divider>
</el-col>
<el-col :span="24" v-if="modelFlag">
<el-form-item v-for="(item) in formData.columnValueList" :label="item.name" :key="item.id">
<el-input type="textarea" v-model="item.value"></el-input>
</el-form-item>
</el-col>
</el-form>
<div style="display: inline-flex">
<div class="infoIcon"></div>
<div class="caseInfo">抓取规则设置</div>
</div>
<el-divider></el-divider>
<el-button type="primary" icon="el-icon-plus" style="margin-bottom: 20px;"
@click="addForm">新增系统内置抓取规则</el-button>
<div class="formDom">
<el-form ref="form" :model="formData_type" label-width="150px">
<div class="formItem" v-for="(item, index) in formData_type.forms" :key="item.key">
<el-button type="primary" icon="el-icon-delete" style="margin-bottom: 20px;"
@click="deleteForm(item)">删除</el-button>
<el-row>
<el-col :span="12">
<el-form-item label="字段:" :prop="'forms.' + index + '.column'">
<el-input v-model="item.column" placeholder="请输入字段" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="字段名:" :prop="'forms.' + index + '.columnName'">
<el-select v-model="item.columnName" placeholder="请选择" @change="columnNameChange(item)">
<el-option v-for="dict in dict.type.case_built_type" :key="dict.value"
:label="dict.label" :value="dict.label"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="字段值:" :prop="'forms.' + index + '.value'">
<el-input v-model="item.value" placeholder="请输入字段值" />
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</div>
<el-button type="primary" icon="el-icon-plus" style="margin-bottom: 20px;"
@click="addFormCustom">新增自定义抓取规则</el-button>
<div class="formDom">
<el-form ref="form_custom" :model="formData_custom" label-width="150px">
<div class="formItem" v-for="(item, index) in formData_custom.forms" :key="item.key">
<el-button type="primary" icon="el-icon-delete" style="margin-bottom: 20px;"
@click="deleteFormCustom(item)">删除</el-button>
<el-row>
<el-col :span="12">
<el-form-item label="字段:" :prop="'forms.' + index + '.column'">
<el-input v-model="item.column" placeholder="请输入字段" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="字段名:" :prop="'forms.' + index + '.name'">
<el-input v-model="item.name" placeholder="请输入字段名" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="字段值:" :prop="'forms.' + index + '.value'">
<el-input v-model="item.value" placeholder="请输入字段值" />
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="开始抓取字段:" :prop="'forms.' + index + '.startContent'">
<el-input v-model="item.startContent" placeholder="请输入开始抓取字段" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="结束抓取字段:" :prop="'forms.' + index + '.endContent'">
<el-input v-model="item.endContent" placeholder="结束抓取字段" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="指定抓取开始位置:" :prop="'forms.' + index + '.startContentRepeatOrder'">
<el-input-number v-model="item.startContentRepeatOrder" controls-position="right"
:min="1"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="指定抓取结束位置:" :prop="'forms.' + index + '.endContentRepeatOrder'">
<el-input-number v-model="item.endContentRepeatOrder" controls-position="right"
:min="1"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="抓取方向:" :prop="'forms.' + index + '.fatchOrder'">
<el-select v-model="item.fatchOrder" placeholder="请选择">
<el-option v-for="dict in fatchOrderList" :key="dict.key" :label="dict.name"
:value="dict.key"></el-option>
</el-select>
</el-form-item>
</el-col> -->
</el-row>
</div>
</el-form>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel" class="endbutton"><span>取 消</span></el-button>
<el-button type="primary" @click="submitForm" class="endbutton"><span>确认</span></el-button>
@@ -367,8 +300,11 @@ import {
caseApplicationInsert,
caseApplicationSelectById
} from "@/api/caseManagement/caseManagement.js";
import {
getTemplate,
} from "@/api/officialSeal/officialSeal.js";
export default {
props: ["addVisable", "queryParams", "caseData"],
props: ["addVisable", "queryParams", "caseData", "caseDisabled"],
dicts: ["case_built_type"],
data() {
return {
@@ -380,34 +316,35 @@ export default {
columnValueList: [],
caseAttachList: []
},
formData_type: {
forms: []
},
formData_custom: {
forms: []
},
fatchOrderList: [
{
name: '从前向后抓取',
key: 0
},
{
name: '从后往前抓取',
key: 1
}
],
templateList: [],
modelFlag:false,
};
},
watch: {
caseData: {
deep: true,
handler(val) {
console.log(val, "OOOOOOOOOOOOOOOOO");
if (val.id) {
this.getTemplateFn();
if (val.id && !val.flag) {
this.modelFlag = true;
this.title = '修改案件';
this.caseApplicationSelectByIdFn(val.id)
} else if (!val.id && !val.flag) {
this.modelFlag = false;
this.title = '新增案件';
this.formData = {
affiliate: {
respondentSex: 0
},
columnValueList: [],
caseAttachList: []
};
} else if (val.id && val.flag == 1) {
this.modelFlag = true;
this.title = '案件详情';
this.caseApplicationSelectByIdFn(val.id);
}
}
},
},
},
created() {
@@ -416,18 +353,8 @@ export default {
methods: {
/** 根据案件id获取对应信息 */
caseApplicationSelectByIdFn(data) {
this.formData_type.forms = [];
this.formData_custom.forms = [];
caseApplicationSelectById({ id: data }).then((res => {
console.log(res.data, "详情");
this.formData = res.data;
this.formData.columnValueList.forEach(item => {
if (item.isDefault == 0) {
this.formData_type.forms.push(item)
} else {
this.formData_custom.forms.push(item)
}
})
}))
},
// 新增案件
@@ -438,69 +365,24 @@ export default {
this.$emit('getList', this.queryParams);
})
},
/** 获取裁决书模板 */
getTemplateFn(data) {
getTemplate(data).then(res => {
console.log(res)
this.templateList = res.rows;
})
},
// 提交form表单
submitForm() {
this.$refs['ruleForm'].validate((valid) => {
if (valid) {
let paramsList = this.formData_type.forms.concat(this.formData_custom.forms);
this.formData.columnValueList = paramsList;
this.insertFn(this.formData)
}
});
console.log(this.formData, this.formData_type, this.formData_custom, "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL");
},
cancel() {
this.$emit("cancelCaseAdd");
},
addForm() {
this.formData_type.forms.push({
column: "",
name: "",
value: "",
isDefault: 0
});
},
deleteForm(item) {
var index = this.formData_type.forms.indexOf(item)
if (index !== -1) {
this.formData_type.forms.splice(index, 1)
}
},
deleteFormCustom(item) {
var index = this.formData_custom.forms.indexOf(item)
if (index !== -1) {
this.formData_custom.forms.splice(index, 1)
}
},
addFormCustom() {
this.formData_custom.forms.push({
column: "",
name: "",
value: "",
isDefault: 1
});
},
columnNameChange(item) {
let result = this.dict.type.case_built_type.find((data => {
return data.label == item.columnName
}))
item.column = result.value;
},
submitRules() {
this.$refs['form'].validate((valid) => {
if (valid) {
this.$refs['form_custom'].validate((valid_custom) => {
if (valid_custom) {
let paramsList = this.formData_type.forms.concat(this.formData_custom.forms)
this.saveFatchRulesFn({
id: this.rulesData.id,
fatchRules: paramsList
})
}
})
}
});
},
},
};
</script>
@@ -0,0 +1,206 @@
<template>
<div>
<el-dialog title="案件压缩包导入" :visible="openCompressedPackages" width="600px" append-to-body @close="cancel" center>
<el-form ref="form" :model="form" :rules="rules" label-width="150px">
<el-row>
<el-form-item :span="24" label="案件压缩包上传:" prop="upload">
<el-upload class="upload-demo" ref="uploadZipBatch" :limit="1" accept=".zip" :headers="upload.headers"
:action="upload.url" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess" :auto-upload="false" :data="paramsData" drag>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<!-- <el-button size="small" type="primary">点击上传</el-button> -->
<div slot="tip" class="el-upload__tip">
支持zip格式文件
</div>
</el-upload>
</el-form-item>
<el-form-item :span="24" label="裁决书模板" prop="templateId">
<el-select v-model="form.templateId" placeholder="请选择">
<el-option v-for="dict in templateList" :key="dict.id" :label="dict.temName" :value="dict.id"></el-option>
</el-select>
</el-form-item>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm" class="endbutton"><span>确 定</span></el-button>
<el-button @click="cancel" class="endbutton1"><span>取 消</span></el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
getTemplate,
} from "@/api/officialSeal/officialSeal.js";
import { getToken } from "@/utils/auth";
export default {
props: ["openCompressedPackages", "getList", "queryParams"],
data() {
return {
// key: value,
form: {},
fileList: [],
templateList: [],
rules: {
// upload: [
// { required: true, message: "案件压缩包不能为空", trigger: "blur" },
// ],
templateId: [
{ required: true, message: "裁决书模板不能为空", trigger: "blur" },
],
},
paramsData:{
// templateId:this.form.templateId
},
// 案件压缩导入
upload: {
// 是否显示弹出层(用户导入)
open: false,
// 弹出层标题(用户导入)
title: "",
// 是否禁用上传
isUploading: false,
// 是否更新已经存在的用户数据
// updateSupport: 0,
// 设置上传的请求头部
headers: { Authorization: "Bearer " + getToken() },
// 上传的地址
url: process.env.VUE_APP_BASE_API + "/caseApplication/uploadCaseZipFile",
},
};
},
watch: {
openCompressedPackages(val) {
if (val) {
this.form = {}
this.getTemplateFn({
pageNum: 1,
pageSize: 10000000,
})
}
},
},
methods: {
submitForm() {
this.paramsData.templateId = this.form.templateId;
this.$refs["form"].validate((valid) => {
if (valid) {
this.$refs.uploadZipBatch.submit();
}
})
},
// 获取裁决书模板
getTemplateFn(data) {
getTemplate(data).then(res => {
console.log(res.rows, "KKKKKKKKKKKKKKKKKKKKKKK");
this.templateList = res.rows;
})
},
// 取消
cancel() {
this.$emit("cancelCompreess");
},
handleRemove(file, fileList) { },
handlePreview(file) { },
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 1个文件,本次选择了 ${files.length} `
);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}?`);
},
// 下载模板 importTemplate
downloadTemplate() {
// console.log("下载模板");
this.download(
"caseApplication/uploadCaseZipFile",
{},
`case_batch_${new Date().getTime()}.xlsx`
);
},
// 文件上传中处理
handleFileUploadProgress(event, file, fileList) {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess(response, file, fileList) {
// this.upload.open = false;
this.$emit("cancelCompreess");
this.upload.isUploading = false;
this.$refs.uploadZipBatch.clearFiles();
if (response.code == 200) {
this.$alert(
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
response.msg +
"</div>",
"导入结果",
{ dangerouslyUseHTMLString: true }
)
} else {
this.$alert(
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
"导入压缩失败" +
"</div>",
"导入结果",
{ dangerouslyUseHTMLString: true }
)
}
this.getList(this.queryParams);
},
},
};
</script>
<style lang="scss" scoped>
.download {
a {
.uploadlink {
border: none;
color: #2092c7;
}
}
}
::v-deep .el-dialog {
width: 800px;
background: #ffffff;
border-radius: 20px;
}
.endbutton {
width: 154px;
height: 37px;
background: #0072ff;
border-radius: 19px;
span {
width: 96px;
height: 15px;
font-size: 16px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #ffffff;
}
}
.endbutton1 {
width: 154px;
height: 37px;
background: #ffffff;
border: 1px solid #d0d0d0;
border-radius: 19px;
span {
width: 31px;
height: 13px;
font-size: 16px;
font-family: Microsoft YaHei;
font-weight: 400;
color: #959595;
}
}
</style>