Merge branch 'hcb' of SH-Arbitrate/Mediation-Frontend into dev

This commit was merged in pull request #9.
This commit is contained in:
2024-01-11 17:56:27 +08:00
committed by Gitea
6 changed files with 365 additions and 199 deletions
+2
View File
@@ -38,6 +38,7 @@ import VueMeta from 'vue-meta'
// 字典数据组件
import DictData from '@/components/DictData'
import {checkPermi} from '@/utils/permission'
import { statusRole } from '@/utils/permission'
// 全局方法挂载
Vue.prototype.getDicts = getDicts
@@ -50,6 +51,7 @@ Vue.prototype.selectDictLabels = selectDictLabels
Vue.prototype.download = download
Vue.prototype.handleTree = handleTree
Vue.prototype.checkPermi = checkPermi
Vue.prototype.statusRole = statusRole
// 全局组件挂载
Vue.component('DictTag', DictTag)
+3
View File
@@ -58,6 +58,9 @@ export function checkRole(value) {
export function statusRole(value) {
let caseStatus = sessionStorage.getItem('caseStatus');
caseStatus = JSON.parse(caseStatus);
if(caseStatus.length == 0){
return false
}
caseStatus.forEach(item => {
if(item == value){
return true
+91 -18
View File
@@ -1,19 +1,44 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
<el-form-item label="案件状态" prop="roleName">
<el-input v-model="queryParams.roleName" placeholder="请输入案件状态" clearable style="width: 240px"
<el-form-item label="案件状态" prop="caseFlowId">
<el-select v-model="queryParams.caseFlowId" placeholder="请选择" @change="columnNameChange(item)" clearable>
<el-option v-for="dict in dict.type.case_flow_node" :key="dict.value" :label="dict.label"
:value="dict.value" @keyup.enter.native="handleQuery"></el-option>
</el-select>
</el-form-item>
<el-form-item label="申请机构" prop="applicationOrganId">
<el-select v-model="queryParams.applicationOrganId" placeholder="请选择" clearable>
<el-option v-for="dict in deptList" :key="dict.deptId" :label="dict.deptName" :value="dict.deptId"
@keyup.enter.native="handleQuery"></el-option>
</el-select>
</el-form-item>
<el-form-item label="批号" prop="batchNumber">
<el-input v-model="queryParams.batchNumber" placeholder="请输入案件批号" clearable style="width: 240px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="案件编号" prop="caseNum">
<el-input v-model="queryParams.caseNum" placeholder="请输入案件编号" clearable style="width: 240px"
@keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="创建时间" prop="caseTime">
<el-date-picker v-model="caseTime" type="datetimerange" align="right" unlink-panels range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" clearable style="width: 240px" @change="caseTimeChange">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> -->
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="addCase">新增案件</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini"
@click="compressedPackages">案件压缩包上传</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="dataList" style="width: 100%">
<el-table-column label="序号" type="index" align="center">
@@ -31,12 +56,11 @@
<el-table-column label="调解员" align="center" prop="mediatorName" :show-overflow-tooltip="true" />
<el-table-column label="开庭日期" align="center" prop="hearDate" :show-overflow-tooltip="true" />
<el-table-column label="案件状态" align="center" prop="caseStatusName" :show-overflow-tooltip="true" />
<el-table-column label="创建时间" align="center" class-name="small-padding fixed-width">
<el-table-column label="创建时间" align="center" prop="createTime" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" @click="eidtNodeprocess(scope.row)" type="text"
icon="el-icon-edit">修改</el-button>
<el-button size="mini" @click="checkDetail(scope.row)" type="text"
icon="el-icon-delete">查看详情</el-button>
<el-button size="mini" @click="eidtNodeprocess(scope.row)" type="text" icon="el-icon-edit">修改</el-button>
<el-button size="mini" @click="checkDetail(scope.row)" type="text" icon="el-icon-view">查看详情</el-button>
<el-button size="mini" @click="consultantApplica(scope.row)" type="text"
icon="el-icon-tickets">法律顾问用印申请</el-button>
<el-button size="mini" @click="departmentApplica(scope.row)" type="text"
@@ -46,17 +70,28 @@
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList(queryParams)" />
<addCase :addVisable="addVisable" :queryParams="queryParams" @cancelCaseAdd="cancelCaseAdd" @getList="getList" :caseData="caseData"></addCase>
<!-- 新增编辑详情 -->
<addCase :addVisable="addVisable" :queryParams="queryParams" @cancelCaseAdd="cancelCaseAdd" @getList="getList"
:caseData="caseData" :caseDisabled="caseDisabled"></addCase>
<!-- 压缩包导入 -->
<caseCompressionPackage :openCompressedPackages="openCompressedPackages" :queryParams="queryParams"
@cancelCompreess="cancelCompreess" :getList="getList">
</caseCompressionPackage>
</div>
</template>
<script>
import { caseApplicationList } from '@/api/caseManagement/caseManagement.js'
import { listDept } from '@/api/system/dept.js'
import moment from "moment";
import addCase from './components/addCase.vue'
import caseCompressionPackage from './components/caseCompressionPackage.vue';
export default {
name: "caseList",
dicts: ["case_flow_node"],
components: {
addCase
addCase,
caseCompressionPackage
},
data() {
return {
@@ -74,42 +109,80 @@ export default {
rules: {},
dataList: [],
addVisable: false,//新增弹窗
openCompressedPackages:false,//压缩包导入弹窗
caseData: {},
caseDisabled: false,
caseTime: '',
deptList: []
};
},
created() {
this.getList(this.queryParams)
this.getList(this.queryParams);
this.listDeptFn()
},
methods: {
/** 新增案件 */
addCase() {
this.addVisable = true;
this.caseData = {};
this.caseDisabled = false;
},
/** 查看详情 */
checkDetail(val) {
// this.addVisable = true;
// this.caseData = val;
this.addVisable = true;
this.caseData = val;
this.caseData.flag = 1;
this.caseDisabled = true;
},
/** 修改案件 */
eidtNodeprocess(row) {
this.addVisable = true;
this.caseData = row;
this.caseDisabled = false;
},
/** 关闭弹窗 */
/** 案件导入压缩包 */
compressedPackages() {
this.openCompressedPackages = true;
},
/** 时间改变处理 */
caseTimeChange() {
if (this.caseTime) {
this.queryParams.startTime = moment(
this.caseTime[0]
).format("YYYY-MM-DD HH:mm:ss");
this.queryParams.endTime = moment(
this.caseTime[1]
).format("YYYY-MM-DD HH:mm:ss");
} else {
this.queryParams.startTime = '';
this.queryParams.endTime = '';
}
},
/** 获取所有部门 */
listDeptFn() {
listDept().then(res => {
this.deptList = res.data;
})
},
/** 关闭新增弹窗 */
cancelCaseAdd() {
this.addVisable = false;
},
/** 关闭压缩包导入弹窗 */
cancelCompreess() {
this.openCompressedPackages = false;
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList(this.queryParams);
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// resetQuery() {
// this.resetForm("queryForm");
// this.handleQuery();
// },
// 查询列表数据
getList(parms) {
this.loading = true;
+51 -169
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-form>
<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-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-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-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>
@@ -13,7 +13,7 @@
<el-input v-model="ruleForm.caseStatusName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="驳回节点" prop="backFlowName">
<el-select v-model="ruleForm.backFlowId" placeholder="请选择">
<el-select v-model="ruleForm.backFlowId" placeholder="请选择" clearable>
<el-option v-for="item in backflowArr" :key="item.backFlowId" :value="item.backFlowId"
:label="item.backFlowName">
</el-option>