案件管理

This commit is contained in:
fz
2024-01-11 10:47:07 +08:00
parent f2b41d6186
commit 1acfbc5c43
33 changed files with 679 additions and 7960 deletions
@@ -0,0 +1,525 @@
<template>
<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-row>
<div style="display: inline-flex">
<div class="infoIcon"></div>
<div class="caseInfo">案件信息:</div>
</div>
<el-divider></el-divider>
<el-col :span="24">
<el-form-item label="申请人仲裁请求" prop="arbitratClaims" :rules="[
{
required: true,
message: '申请人仲裁请求不能为空',
trigger: 'blur',
},
]">
<el-input v-model="formData.arbitratClaims" placeholder="请输入申请人仲裁诉求" type="textarea"
:autosize="{ minRows: 4, maxRows: 8 }" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="事实和理由" prop="facts" :rules="[
{
required: true,
message: '事实和理由不能为空',
trigger: 'blur',
},
]">
<el-input v-model="formData.facts" placeholder="请输入事实和理由" type="textarea"
:autosize="{ minRows: 4, maxRows: 8 }" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="申请人请求仲裁庭裁决" prop="requestRule">
<el-input v-model="formData.requestRule" placeholder="请输入申请人请求仲裁庭裁决" type="textarea"
:autosize="{ minRows: 4, maxRows: 8 }" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="案件描述" prop="caseDescribe">
<el-input v-model="formData.caseDescribe" placeholder="请输入案件描述" type="textarea"
:autosize="{ minRows: 4, maxRows: 8 }" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="案件标的" prop="caseSubjectAmount" :rules="[
{
required: true,
message: '案件标的不能为空',
trigger: 'blur',
},
]">
<el-input v-model="formData.caseSubjectAmount" placeholder="请输入案件标的" />
</el-form-item>
</el-col>
<el-col :span="24">
<div style="display: inline-flex">
<div class="infoIcon"></div>
<div class="caseInfo">双方信息:</div>
</div>
<el-divider></el-divider>
</el-col>
<el-col :span="12">
<el-form-item label="申请机构名称" prop="affiliate.applicationOrganName" :rules="[
{
required: true,
message: '申请机构名称不能为空',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.applicationOrganName" placeholder="请输入申请机构名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="统一社会信用代码" prop="affiliate.creditCode" :rules="[
{
required: true,
message: '统一社会信用代码不能为空',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.creditCode" placeholder="请输入统一社会信用代码" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="法定代表人" prop="affiliate.compLegalPerson" :rules="[
{
required: true,
message: '法定代表人不能为空',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.compLegalPerson" placeholder="请输入法定代表人" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="申请人住所" prop="affiliate.applicantHome" :rules="[
{
required: true,
message: '申请人住所不能为空',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.applicantHome" placeholder="请输入申请人住所" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="申请人联系地址" prop="affiliate.applicantAddress" :rules="[
{
required: true,
message: '申请人联系地址不能为空',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.applicantAddress" placeholder="请输入申请人联系地址" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="代理人联系电话" prop="affiliate.contactTelphoneAgent" :rules="[
{
required: true,
message: '代理人联系电话不能为空',
trigger: 'blur',
},
{
pattern: /^[1][3,4,5,6,7,8,9][0-9]{9}$/,
message: '请输入正确的手机号码',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.contactTelphoneAgent" placeholder="请输入代理人联系电话" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="委托代理人姓名" prop="affiliate.nameAgent" :rules="[
{
required: true,
message: '委托代理人姓名不能为空',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.nameAgent" placeholder="请输入委托代理人姓名" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="代理人邮箱" prop="affiliate.agentEmail" :rules="[
{
required: true,
message: '代理人邮箱不能为空',
trigger: 'blur',
},
{
pattern:
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
message: '请输入正确的邮箱地址',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.agentEmail" placeholder="请输入代理人邮箱" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="被申请人姓名" prop="affiliate.respondentName" :rules="[
{
required: true,
message: '被申请人姓名不能为空',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.respondentName" placeholder="请输入被申请人姓名" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="被申请人联系电话" prop="affiliate.respondentPhone" :rules="[
{
required: true,
message: '被申请人联系电话不能为空',
trigger: 'blur',
},
{
pattern: /^[1][3,4,5,6,7,8,9][0-9]{9}$/,
message: '请输入正确的手机号码',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.respondentPhone" placeholder="请输入被申请人联系电话" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="被申请人身份证号" prop="affiliate.respondentIdentityNum" :rules="[
{
required: true,
message: '被申请人身份证号不能为空',
trigger: 'blur',
},
{
pattern:
/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
message: '请输入正确的身份证号码',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.respondentIdentityNum" placeholder="请输入被申请人身份证号" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="被申请人性别:" prop="affiliate.respondentSex" :rules="[
{
required: true,
message: '请选择性别'
},
]">
<el-radio-group v-model="formData.affiliate.respondentSex">
<el-radio label="0">男</el-radio>
<el-radio label="1">女</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="被申请人出生年月日:" prop="affiliate.respondentBirth" :rules="[
{
required: true,
message: '被申请人出生年月日不能为空',
trigger: 'blur',
},
]">
<el-date-picker v-model="formData.affiliate.respondentBirth" type="date"
placeholder="被申请人出生年月日">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="被申请人申请人住所" prop="affiliate.respondentHome" :rules="[
{
required: true,
message: '被申请人申请人住所不能为空',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.respondentHome" placeholder="请输入被申请人申请人住所" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="被申请人邮箱" prop="affiliate.respondentEmail" :rules="[
{
required: true,
message: '代理人邮箱不能为空',
trigger: 'blur',
},
{
pattern:
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
message: '请输入正确的邮箱地址',
trigger: 'blur',
},
]">
<el-input v-model="formData.affiliate.respondentEmail" placeholder="请输入被申请人邮箱" />
</el-form-item>
</el-col>
</el-row>
</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>
</div>
</el-dialog>
</div>
</template>
<script>
import {
caseApplicationInsert,
caseApplicationSelectById
} from "@/api/caseManagement/caseManagement.js";
export default {
props: ["addVisable", "queryParams", "caseData"],
dicts: ["case_built_type"],
data() {
return {
title: "新增案件",
formData: {
affiliate: {
respondentSex: 0
},
columnValueList: [],
caseAttachList: []
},
formData_type: {
forms: []
},
formData_custom: {
forms: []
},
fatchOrderList: [
{
name: '从前向后抓取',
key: 0
},
{
name: '从后往前抓取',
key: 1
}
],
};
},
watch: {
caseData: {
deep: true,
handler(val) {
console.log(val, "OOOOOOOOOOOOOOOOO");
if (val.id) {
this.title = '修改案件';
this.caseApplicationSelectByIdFn(val.id)
}
}
},
},
created() {
},
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)
}
})
}))
},
// 新增案件
insertFn(data) {
caseApplicationInsert(data).then(res => {
this.$modal.msgSuccess("新增成功!");
this.$emit("cancelCaseAdd");
this.$emit('getList', this.queryParams);
})
},
// 提交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>
<style lang="scss" scoped>
.infoIcon {
width: 4px;
// height: 17px;
background-color: #0072ff;
margin-right: 5px;
}
.caseInfo {
font-size: 17px;
font-weight: 600;
}
::v-deep .el-dialog__body {
height: 700px !important;
overflow: auto !important;
}
</style>