This commit is contained in:
zzyuan 2025-11-06 17:13:01 +08:00
commit ce9e86cdbc
6 changed files with 276 additions and 219 deletions

View File

@ -208,3 +208,27 @@ export function getCheckListPageApi(data) {
params:data
})
}
// 证件管理-分页查询设备信息
export function getCertificateCheckListPageApi(data) {
return request({
url: '/certificate/certificate_manage/certificateInfo/checkList',
method: 'get',
headers: {
//"merchant-id":"378915229716713472",
},
params:data
})
}
// 证件管理-新增验证
export function addCertificateCheckApi(data) {
return request({
url: '/certificate/certificate_manage/certificateInfo/addCheck',
method: 'post',
headers: {
//"merchant-id":"378915229716713472",
},
data: data
})
}

View File

@ -93,7 +93,6 @@
plain
icon="el-icon-plus"
size="mini"
:disabled="multiple"
@click="handleTask"
>一人多证核验</el-button>
</el-col>
@ -323,9 +322,9 @@
<el-form ref="taskForm" :model="taskForm" :rules="taskRules" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="核验截止日期" prop="verificationDate">
<el-form-item label="核验截止日期" prop="processDate">
<el-date-picker
v-model="taskForm.verificationDate"
v-model="taskForm.processDate"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd" style="width: 100%;"
@ -352,7 +351,7 @@
listDeptExcludeChild,
} from '@/api/system/dept'
import { getCertificateInfoListPageApi,addCertificateInfoApi, updateCertificateInfoApi,
deleteCertificateInfoApi,getSysUserListApi } from "@/api/certificateManage/index";
deleteCertificateInfoApi,getSysUserListApi,addCertificateCheckApi } from "@/api/certificateManage/index";
import base64 from 'base-64';
import { getToken } from '@/utils/auth'
import { downloadFileByUrl } from '@/utils/download'
@ -386,6 +385,7 @@
isCreateFlage:true,
userNameFlage:false,
certificateNos:[],
userIds:[],
isReadOnly:false,
openSelectUser:false,
selectItme:{},
@ -471,11 +471,11 @@
openTask: false,
//
taskForm: {
verificationDate:""
processDate:""
},
//
taskRules: {
verificationDate: [
processDate: [
{
required: true,
message: '核验截止日期不能为空',
@ -776,6 +776,7 @@
//
handleSelectionChange(selection) {
this.certificateNos = selection.map(item => item.certificateNo)
this.userIds=selection.map(item => item.userId)
//
this.single = selection.length !== 1
this.multiple = !selection.length
@ -793,23 +794,30 @@
//
resetTask() {
this.taskForm = {
verificationDate:""
processDate:""
}
this.resetForm('taskForm')
},
/** 提交按钮 */
submitTask: function () {
this.$refs['taskForm'].validate((valid) => {
let param = Object.assign({},this.taskForm)
console.log(param)
if (valid) {
// updateUser(param).then((response) => {
// this.$modal.msgSuccess('')
// this.openTask = false
// this.getList()
// })
}
})
this.$refs['taskForm'].validate((valid) => {
let param = Object.assign({},this.taskForm)
console.log(param)
console.log(this.ids)
if (valid) {
param.userIds=this.userIds;
param.checkType="2";
addCertificateCheckApi(param).then(response => {
if(response.code=200){
this.$modal.msgSuccess("验证下发成功");
this.openTask = false;
this.getList();
}else{
this.$modal.msgError(response.msg);
}
});
}
})
},
openLog(row){
this.$router.push({ path: "/certificate/certificateManage/certificateLogList",query: {certificateInfoRowData:JSON.stringify(row)} });

View File

@ -72,17 +72,6 @@
>他人代领
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
:disabled="multiple"
@click="handleTask"
>出入境核验
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="tableListData" @selection-change="handleSelectionChange" height="800">
@ -200,26 +189,6 @@
</div>
</el-dialog>
<el-dialog title="核验任务下达" :visible.sync="openTask" width="600px" append-to-body>
<el-form ref="taskForm" :model="taskForm" :rules="taskRules" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="核验截止日期" prop="verificationDate">
<el-date-picker
v-model="taskForm.verificationDate"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd" style="width: 100%;"
value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitTask"> </el-button>
<el-button @click="cancelTask"> </el-button>
</div>
</el-dialog>
</div>
</template>

View File

@ -54,6 +54,16 @@
v-hasPermi="['system:dict:export']"
>导出</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleTask"
>出入境核验
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<div style="width: 98%;margin: 10px;display: flex;flex-direction: column;align-items: flex-end;">
@ -61,7 +71,8 @@
<div style="font-weight: bold;">取证任务数/已完成数235/230</div>
</div>
<el-table v-loading="loading" :data="tableListData" @selection-change="handleSelectionChange" height="800">
<el-table-column type="selection" width="55" align="center" :selectable="selectablerow"/>
<el-table-column type="selection" width="25" align="center" :selectable="selectablerow"/>
<el-table-column type="selection" width="25" align="center" :selectable="selectablerow2"/>
<el-table-column label="序号" align="center" width="80" type="index">
<template slot-scope="scope">
<span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span>
@ -110,7 +121,7 @@
@pagination="getList"
/>
<!-- 核验任务下达 -->
<!-- 查看验证码 -->
<el-dialog title="查看验证码" :visible.sync="openCode" width="410px" append-to-body>
<div style="display: flex;width: 100%;justify-content: center;align-items: center;" ref="codeBox">
<div style="width: 300px;height: 300px;">
@ -123,6 +134,27 @@
</div>
</el-dialog>
<el-dialog title="核验任务下达" :visible.sync="openTask" width="600px" append-to-body>
<el-form ref="taskForm" :model="taskForm" :rules="taskRules" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="核验截止日期" prop="verificationDate">
<el-date-picker
v-model="taskForm.verificationDate"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd" style="width: 100%;"
value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitTask"> </el-button>
<el-button @click="cancelTask"> </el-button>
</div>
</el-dialog>
</div>
</template>
@ -136,7 +168,8 @@
updateDept,
listDeptExcludeChild,
} from '@/api/system/dept'
import { getCertificateTaskListPageApi,addCertificateInfoApi, updateCertificateInfoApi, deleteCertificateInfoApi,getCertificateTakeReturnPageApi } from "@/api/certificateManage/index";
import { getCertificateTaskListPageApi,addCertificateInfoApi, updateCertificateInfoApi, deleteCertificateInfoApi,
getCertificateTakeReturnPageApi,addCertificateCheckApi } from "@/api/certificateManage/index";
import base64 from 'base-64';
import { getToken } from '@/utils/auth'
import Treeselect from '@riophae/vue-treeselect'
@ -152,6 +185,9 @@
loading: true,
//
ids: [],
userIds: [],
exitTimes:[],
entryTimes:[],
//
single: true,
//
@ -251,7 +287,22 @@
},
openCode:false,
qrCode: '',
qrCodeStr:""
qrCodeStr:"",
openTask: false,
//
taskForm: {
processDate:""
},
//
taskRules: {
processDate: [
{
required: true,
message: '核验截止日期不能为空',
trigger: 'blur',
},
]
},
};
},
mounted(){
@ -266,6 +317,13 @@
}else{
return true;
}
},
selectablerow2(row,index){
if(row.checkState=="0"||row.checkState=="1"){
return false;
}else{
return true;
}
},
/** 搜索按钮操作 */
handleQuery() {
@ -441,7 +499,10 @@
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.taskNo)
this.ids = selection.map(item => item.taskNo);
this.userIds=selection.map(item => item.userId);
this.exitTimes=selection.map(item => item.exitTime);
this.entryTimes=selection.map(item => item.entryTime);
this.single = selection.length!=1
this.multiple = !selection.length
},
@ -459,7 +520,53 @@
correctLevel: QRCode.CorrectLevel.H
})
}, 500)
}
},
/** 远程校验按钮操作 */
handleTask() {
this.resetTask()
this.openTask = true
},
//
cancelTask() {
this.openTask = false
this.resetTask()
},
//
resetTask() {
this.taskForm = {
verificationDate:""
}
this.resetForm('taskForm')
},
/** 提交按钮 */
submitTask: function () {
this.$refs['taskForm'].validate((valid) => {
let param = Object.assign({},this.taskForm)
console.log(param)
console.log(this.userIds)
if (valid) {
param.userIds=this.userIds;
param.exitTimes=this.exitTimes;
param.entryTimes=this.entryTimes;
for(var k=0;k<this.exitTimes.length;k++){
if(this.exitTimes[k]==null){
this.$modal.msgError("请选择取证列表!");
return;
}
}
param.checkType="3";
addCertificateCheckApi(param).then(response => {
if(response.code=200){
this.$modal.msgSuccess("验证下发成功");
this.openTask = false;
this.getList();
}else{
this.$modal.msgError(response.msg);
}
});
}
})
},
}
};
</script>

View File

@ -146,7 +146,7 @@
<el-col :span="24">
<el-form-item label="核验截止日期" prop="verificationDate">
<el-date-picker
v-model="taskForm.verificationDate"
v-model="taskForm.processDate"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd" style="width: 100%;"
@ -169,7 +169,7 @@ import {
listUser,
deptTreeSelect,
} from '@/api/system/user'
import {getCertificateUserListPageApi} from "@/api/certificateManage/index"
import {getCertificateUserListPageApi,addCertificateCheckApi} from "@/api/certificateManage/index"
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
@ -218,11 +218,11 @@ export default {
openTask: false,
//
taskForm: {
verificationDate:""
processDate:""
},
//
taskRules: {
verificationDate: [
processDate: [
{
required: true,
message: '核验截止日期不能为空',
@ -329,11 +329,17 @@ export default {
console.log(param)
console.log(this.ids)
if (valid) {
// updateUser(param).then((response) => {
// this.$modal.msgSuccess('')
// this.openTask = false
// this.getList()
// })
param.userIds=this.ids;
param.checkType="1";
addCertificateCheckApi(param).then(response => {
if(response.code=200){
this.$modal.msgSuccess("验证下发成功");
this.openTask = false;
this.getList();
}else{
this.$modal.msgError(response.msg);
}
});
}
})
},

View File

@ -43,7 +43,7 @@
<span style="font-weight: bold;margin-left: 20px;">有无证件任务数/已核验数760/600</span>
</div>
<el-table v-loading="loading" :data="tableListData" @selection-change="handleSelectionChange" height="800">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="selection" width="55" align="center" :selectable="selectablerow" />
<el-table-column label="序号" align="center" width="80" type="index">
<template slot-scope="scope">
<span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span>
@ -53,20 +53,28 @@
<el-table-column label="身份证号" align="center" prop="idNumber" :show-overflow-tooltip="true"/>
<el-table-column label="证件类型" align="center" prop="certificateTypeName" :show-overflow-tooltip="true"/>
<el-table-column label="证件编号" align="center" prop="certificateNo" :show-overflow-tooltip="true"/>
<el-table-column label="申请出境时间" align="center" prop="" :show-overflow-tooltip="true"/>
<el-table-column label="申请入境时间" align="center" prop="" :show-overflow-tooltip="true"/>
<el-table-column label="核验类型" align="center" prop="" :show-overflow-tooltip="true"/>
<el-table-column label="核验状态" align="center" prop="" :show-overflow-tooltip="true"/>
<el-table-column label="核验结果" align="center" prop="" :show-overflow-tooltip="true"/>
<!-- <el-table-column label="当前状态" align="center" prop="stateName" :show-overflow-tooltip="true">
<el-table-column label="申请出境时间" align="center" prop="exitTime" :show-overflow-tooltip="true"/>
<el-table-column label="申请入境时间" align="center" prop="entryTime" :show-overflow-tooltip="true"/>
<el-table-column label="核验类型" align="center" prop="checkType" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.state==0" style="color: #FF7322;font-size: 15px;">{{scope.row.stateName}}</span>
<span v-if="scope.row.state==1" style="color: #FEE838;font-size: 15px;">{{scope.row.stateName}}</span>
<span v-if="scope.row.state==2" style="color: #03DF6D;font-size: 15px;">{{scope.row.stateName}}</span>
<span v-if="scope.row.state==3" style="color: #FEE838;font-size: 15px;">{{scope.row.stateName}}</span>
<span v-if="scope.row.state==4" style="color: #FF7322;font-size: 15px;">{{scope.row.stateName}}</span>
<span v-if="scope.row.checkType==1" >有无证件</span>
<span v-if="scope.row.checkType==2" >一人多证</span>
<span v-if="scope.row.checkType==3" >出入境时间</span>
</template>
</el-table-column> -->
</el-table-column>/>
<el-table-column label="核验状态" align="center" prop="checkState" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.checkState==0" >验证中</span>
<span v-if="scope.row.checkState==1" >已验证</span>
</template>
</el-table-column>
<el-table-column label="核验结果" align="center" prop="checkResult" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.checkResult==null" >/</span>
<span v-if="scope.row.checkResult==0" >不通过</span>
<span v-if="scope.row.checkResult==1" >已通过</span>
</template>
</el-table-column>
</el-table>
<pagination
@ -83,7 +91,7 @@
<el-row>
<el-col :span="24">
<el-form-item label-width="120px" label="选择核验类型" prop="verificationType">
<el-radio-group v-model="baseForm.verificationType" size="small">
<el-radio-group v-model="baseForm.checkType" size="small">
<el-radio label="1">有无证件</el-radio>
<el-radio label="2">一人多证</el-radio>
<el-radio label="3">出入境时间</el-radio>
@ -95,7 +103,7 @@
<el-col :span="24">
<el-form-item label="核验截止日期" prop="verificationDate">
<el-date-picker
v-model="baseForm.verificationDate"
v-model="baseForm.processDate"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd"
@ -123,7 +131,7 @@
updateDept,
listDeptExcludeChild,
} from '@/api/system/dept'
import { getCertificateInfoListPageApi,addCertificateInfoApi, updateCertificateInfoApi,
import { getCertificateCheckListPageApi,addCertificateCheckApi, updateCertificateInfoApi,
deleteCertificateInfoApi,getSysUserListApi } from "@/api/certificateManage/index";
import base64 from 'base-64';
import { getToken } from '@/utils/auth'
@ -154,7 +162,7 @@
title: "",
//
open: false,
certificateNos:[],
taskNos:[],
//
queryParams: {
pageNum: 1,
@ -164,15 +172,15 @@
},
//
baseForm: {
verificationType:1,
verificationDate:"",
checkType:1,
processDate:"",
},
//
baseFormRules: {
verificationType: [
checkType: [
{ required: true, message: "核验类型不能为空", trigger: "blur" }
],
verificationDate: [
processDate: [
{ required: true, message: "核验截至日期不能为空", trigger: "blur" }
]
},
@ -195,70 +203,11 @@
callback(new Error('请输入有效的身份证号')); //
}
},
handleRadioChange(val){
if(val==1){
this.userNameFlage=true;
this.baseFormRules= {
deptId: [
{ required: true, message: "部门不能为空", trigger: "blur" }
],
name: [
{ required: true, message: "姓名不能为空", trigger: "blur" }
],
idNumber: [
{ required: true, message: "身份证不能为空", trigger: "blur" },
{ validator: this.validateIDCard, trigger: 'blur' }
],
certificateType: [
{ required: true, message: "证件类型不能为空", trigger: "blur" }
],
certificateNo: [
{ required: true, message: "证件编号不能为空", trigger: "blur" }
],
issueDay: [
{ required: true, message: "签发日期不能为空", trigger: "blur" }
],
phone: [
{ required: true, message: "手机号码不能为空", trigger: "blur" },
{ pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }
],
issueLifespan: [
{ required: true, message: "有效期不能为空", trigger: "blur" }
],
userName: [
{ required: true, message: "用户名不能为空", trigger: "blur" }
]
}
selectablerow(row,index){
if(row.checkState=="0"||row.checkState=="1"){
return false;
}else{
this.userNameFlage=false;
this.baseFormRules= {
deptId: [
{ required: true, message: "部门不能为空", trigger: "blur" }
],
name: [
{ required: true, message: "姓名不能为空", trigger: "blur" }
],
idNumber: [
{ required: true, message: "身份证不能为空", trigger: "blur" },
{ validator: this.validateIDCard, trigger: 'blur' }
],
certificateType: [
{ required: true, message: "证件类型不能为空", trigger: "blur" }
],
certificateNo: [
{ required: true, message: "证件编号不能为空", trigger: "blur" }
],
issueDay: [
{ required: true, message: "签发日期不能为空", trigger: "blur" }
],
phone: [
{ required: true, message: "手机号码不能为空", trigger: "blur" },
{ pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }
],
issueLifespan: [
{ required: true, message: "有效期不能为空", trigger: "blur" }
]
}
return true;
}
},
/** 搜索按钮操作 */
@ -282,9 +231,7 @@
"certificateNo":this.queryParams.certificateNo
}
console.log("param",param)
// let str = base64.encode(JSON.stringify(param))
// console.log({"content":str})
getCertificateInfoListPageApi(param).then(response => {
getCertificateCheckListPageApi(param).then(response => {
this.tableListData = response.rows;
this.total = Number(response.total);
this.loading = false;
@ -321,30 +268,26 @@
},
//
handleSelectionChange(selection) {
this.certificateNos = selection.map(item => item.certificateNo)
this.taskNos = selection.map(item => item.taskNo)
},
/** 提交按钮 */
submitForm: function() {
console.log("this.baseForm",this.baseForm);
this.$refs["baseForm"].validate(valid => {
if (valid) {
if (this.baseForm.createTime != undefined) {
updateCertificateInfoApi(this.baseForm).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addCertificateInfoApi(this.baseForm).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
this.baseForm.taskNos=this.taskNos;
addCertificateCheckApi(this.baseForm).then(response => {
if(response.code=200){
this.$modal.msgSuccess("验证下发成功");
this.open = false;
this.getList();
}else{
this.$modal.msgError(response.msg);
}
});
}
});
},
formatDate(date) {
// YYYY-MM-DD
const year = date.getFullYear();