This commit is contained in:
jiask 2025-12-14 19:32:56 +08:00
parent 28dc340780
commit cdba7d7b6e
9 changed files with 490 additions and 206 deletions

View File

@ -251,7 +251,7 @@ export function getCertificateCheckListPageApi(data) {
// 证件管理-新增验证
export function addCertificateCheckApi(data) {
return request({
url: '/certificate/certificate_manage/certificateInfo/addCheck',
url: '/certificate/certificate_verify/certificateVerify/add',
method: 'post',
headers: {
//"merchant-id":"378915229716713472",

View File

@ -116,6 +116,7 @@
:disabled="upload.isUploading"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
:before-upload="beforeUpload"
>
<el-button
type="success"
@ -231,7 +232,7 @@
</el-form-item>
</el-col>
<el-col :span="12" v-if="baseForm.deptId !== 0">
<el-form-item label="单位" prop="deptId" style="width: 100%;">
<el-form-item label="单位" prop="deptId" style="width: 100%;" disabled="true">
<treeselect
v-model="baseForm.deptId"
:options="deptOptions"
@ -242,14 +243,14 @@
</el-col>
<el-col :span="12">
<el-form-item label="手机号码" prop="phone">
<el-input v-model="baseForm.phone" placeholder="请输入" maxlength="30" clearable/>
<el-input v-model="baseForm.phone" placeholder="请输入" maxlength="30" readonly="true" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="身份证号" prop="idNumber">
<el-input v-model="baseForm.idNumber" placeholder="请输入" maxlength="30" clearable/>
<el-input v-model="baseForm.idNumber" placeholder="请输入" maxlength="30" readonly="true"/>
</el-form-item>
</el-col>
<el-col :span="12">
@ -281,7 +282,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="证件编号" prop="certificateNo">
<el-input v-model="baseForm.certificateNo" :readonly="isReadOnly" placeholder="请输入" maxlength="30" clearable/>
<el-input v-model="baseForm.certificateNo" placeholder="请输入" maxlength="30" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
@ -305,6 +306,8 @@
v-model="baseForm.issueLifespan"
type="date"
placeholder="选择日期"
:picker-options="pickerOptionsIssueDay"
@focus="issueLifespanDateFocus"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
@ -377,12 +380,24 @@
<el-form ref="taskForm" :model="taskForm" :rules="taskRules" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="核验截止日期" prop="processDate">
<el-form-item label="核验开始日期" prop="startTime">
<el-date-picker
v-model="taskForm.processDate"
v-model="taskForm.startTime"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd" style="width: 100%;"
:picker-options="pickerOptionsToday"
@focus="startDateFocus"
value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="核验结束日期" prop="endTime">
<el-date-picker
v-model="taskForm.endTime"
type="date"
placeholder="选择日期"
:picker-options="pickerOptionsStart"
@focus="endDateFocus"
format="yyyy-MM-dd" style="width: 100%;"
value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
@ -543,11 +558,20 @@
openTask: false,
//
taskForm: {
startTime:"",
endTime:"",
processDate:""
},
//
taskRules: {
processDate: [
startTime: [
{
required: true,
message: '核验开始日期不能为空',
trigger: 'blur',
},
],
endTime: [
{
required: true,
message: '核验截止日期不能为空',
@ -555,6 +579,35 @@
},
]
},
pickerOptionsToday: {
disabledDate(time) {
//
const today = new Date();
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
}
},
pickerOptionsStart: {
disabledDate(time) {
//
const startTime=this.taskForm.startTime;
const today = new Date(startTime);
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
}
},
pickerOptionsIssueDay:{
disabledDate(time) {
//
const startTime=this.baseForm.issueDay;
const today = new Date(startTime);
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
}
},
};
},
mounted(){
@ -574,6 +627,51 @@
callback(new Error('请输入有效的身份证号')); //
}
},
startDateFocus() {
this.taskForm.endTime = ''
let endTime = this.taskForm.endTime;
if (!endTime) return;
let that = this;
that.pickerOptionsToday = {
disabledDate(time) {
//
const today = new Date();
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
},
};
},
endDateFocus() {
let startTime = this.taskForm.startTime;
if (!startTime) return;
let that = this;
that.pickerOptionsStart = {
disabledDate(time) {
//
const startTime=that.taskForm.startTime;
const today = new Date(startTime);
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
},
};
},
issueLifespanDateFocus() {
let startTime = this.baseForm.issueDay;
if (!startTime) return;
let that = this;
that.pickerOptionsIssueDay = {
disabledDate(time) {
//
const startTime=that.baseForm.issueDay;
const today = new Date(startTime);
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
},
};
},
handleRadioChange(val){
if(val==1){
this.userNameFlage=true;
@ -745,17 +843,26 @@
console.log("this.baseForm",this.baseForm);
this.$refs["baseForm"].validate(valid => {
if (valid) {
if (this.baseForm.createTime != undefined) {
if (this.baseForm.certificateId != undefined&&this.baseForm.certificateId != null) {
updateCertificateInfoApi(this.baseForm).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
if(response.code==200){
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}else{
this.$modal.msgError(response.msg);
}
});
} else {
addCertificateInfoApi(this.baseForm).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
if(response.code==200){
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}else{
this.$modal.msgError(response.msg);
}
});
}
}
@ -786,6 +893,8 @@
console.log("this.baseForm2",this.baseForm2);
this.$refs["baseForm2"].validate(valid => {
if (valid) {
this.$set(this.baseForm,"birthday",this.selectItme.birthday)
this.$set(this.baseForm,"idNumber",this.selectItme.idNumber)
this.$set(this.baseForm,"phone",this.selectItme.phone)
this.$set(this.baseForm,"name",this.selectItme.userName)
this.$set(this.baseForm,"userId",this.selectItme.userId)
@ -829,8 +938,18 @@
...this.queryParams
}, `证件信息_${new Date().getTime()}.xlsx`);
},
beforeUpload(file){
const isLt2M = file.size / 1024 / 1024 < 0.5;
if (!isLt2M) {
this.$message.error('上传文件大小不能超过 500KB!');
return false;
}
},
//
handleFileUploadProgress(event, file, fileList) {
console.log("============");
console.log(file);
console.log(file.length);
this.upload.isUploading = true
},
//
@ -865,6 +984,10 @@
},
/** 远程校验按钮操作 */
handleTask() {
if(this.userIds==undefined||this.userIds==null||this.userIds.length==0){
this.$modal.msgError("请选择核验人员!");
return;
}
this.resetTask()
this.openTask = true
},
@ -876,19 +999,29 @@
//
resetTask() {
this.taskForm = {
processDate:""
startTime:"",
endTime:""
}
this.resetForm('taskForm')
},
/** 提交按钮 */
submitTask: function () {
this.$refs['taskForm'].validate((valid) => {
let param = Object.assign({},this.taskForm)
console.log(param)
let paramd = Object.assign({},this.taskForm)
console.log(paramd)
console.log(this.ids)
if (valid) {
param.userIds=this.userIds;
param.checkType="2";
paramd.userIds=this.userIds;
paramd.checkType="2";
let param={
verifyTitle:"一人多证核验",
startTime:paramd.startTime,
endTime:paramd.endTime,
verifyUsers:this.userIds,
verifyType:"2",
type:"100000",
noticeType:"2"
}
addCertificateCheckApi(param).then(response => {
if(response.code=200){
this.$modal.msgSuccess("验证下发成功");

View File

@ -61,11 +61,16 @@
<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="issueLifespan" :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">
<template slot-scope="scope">
<span v-if="scope.row.processGapDate<=10" style="color: #FEE838;font-size: 25px;">{{scope.row.processGapDate}}</span>
<span v-else-if="scope.row.processGapDate<=20" style="color: orange;font-size: 25px;">{{scope.row.processGapDate}}</span>
<span v-else="scope.row.processGapDate<=30" style="color: red;font-size: 25px;">{{scope.row.processGapDate}}</span>
<span v-if="scope.row.type==1" style="color: orange;font-size: 25px;">临期</span>
<span v-else="scope.row.type==2" style="color: red;font-size: 25px;">过期</span>
</template>
</el-table-column>
<el-table-column label="天数" align="center" prop="" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.type==1" style="color: orange;font-size: 25px;">{{scope.row.processGapDate}}</span>
<span v-else="scope.row.type==2" style="color: red;font-size: 25px;">{{scope.row.processGapDate}}</span>
</template>
</el-table-column>
<!-- <el-table-column label="过期类型" align="center" prop="" :show-overflow-tooltip="true">

View File

@ -4,7 +4,7 @@
<el-form-item label="关键字" prop="keyWord">
<el-input
v-model="queryParams.keyWord"
placeholder="请输入关键字"
placeholder="请输入申请人、身份证号码、证件编号"
clearable maxlength="20"
style="width: 300px"
@keyup.enter.native="handleQuery"

View File

@ -92,7 +92,7 @@
<el-table-column label="设备名称" align="center" prop="deviceName" :show-overflow-tooltip="true"/>
<el-table-column label="设备地址" align="center" prop="deviceAddr" :show-overflow-tooltip="true" width="150"/>
<el-table-column label="设备编号" align="center" prop="deviceNo" :show-overflow-tooltip="true"/>
<el-table-column label="槽位编号" align="center" prop="soltNo" :show-overflow-tooltip="true"/>
<el-table-column label="槽位编号" align="center" prop="slotNo" :show-overflow-tooltip="true"/>
<!-- <el-table-column label="验证码" align="center" prop="verificationCode" :show-overflow-tooltip="true"></el-table-column> -->
<el-table-column label="二维码" align="center" prop="verificationCode" :show-overflow-tooltip="true">
<template slot-scope="scope">
@ -137,12 +137,24 @@
<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="startTime">
<el-date-picker
v-model="taskForm.verificationDate"
v-model="taskForm.startTime"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd" style="width: 100%;"
:picker-options="pickerOptionsToday"
@focus="startDateFocus"
value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="核验结束日期" prop="endTime">
<el-date-picker
v-model="taskForm.endTime"
type="date"
placeholder="选择日期"
:picker-options="pickerOptionsStart"
@focus="endDateFocus"
format="yyyy-MM-dd" style="width: 100%;"
value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
@ -168,7 +180,7 @@
listDeptExcludeChild,
} from '@/api/system/dept'
import { getCertificateTaskListPageApi,addCertificateInfoApi, updateCertificateInfoApi, deleteCertificateInfoApi,
getCertificateTakeReturnPageApi,addCertificateCheckApi,getCertificateTaskNumApi } from "@/api/certificateManage/index";
getCertificateTakeReturnPageApi,addCertificateCheckApi } from "@/api/certificateManage/index";
import { getTaskStatisticsApi } from "@/api/certificateStatistics/index";
import base64 from 'base-64';
import { getToken } from '@/utils/auth'
@ -302,6 +314,8 @@
openTask: false,
//
taskForm: {
startTime:"",
endTime:"",
processDate:""
},
//
@ -314,11 +328,30 @@
},
]
},
pickerOptionsToday: {
disabledDate(time) {
//
const today = new Date();
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
}
},
pickerOptionsStart: {
disabledDate(time) {
//
const startTime=this.taskForm.startTime;
const today = new Date(startTime);
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
}
},
};
},
mounted(){
this.getList();
this.getNum();
// this.getNum();
this.initStatistics();
},
@ -327,7 +360,37 @@
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
this.initStatistics();ss
this.initStatistics();
},
startDateFocus() {
this.taskForm.endTime = ''
let endTime = this.taskForm.endTime;
if (!endTime) return;
let that = this;
that.pickerOptionsToday = {
disabledDate(time) {
//
const today = new Date();
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
},
};
},
endDateFocus() {
let startTime = this.taskForm.startTime;
if (!startTime) return;
let that = this;
that.pickerOptionsStart = {
disabledDate(time) {
//
const startTime=that.taskForm.startTime;
const today = new Date(startTime);
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
},
};
},
initStatistics(){
let param = {}
@ -346,7 +409,7 @@
},
getNum(){
let param = {}
getCertificateTaskNumApi(param).then(response => {
getTaskStatisticsApi(param).then(response => {
console.log("response",response)
this.saveNum = response.data.saveNum;
this.saveNumd = response.data.saveNumd;
@ -565,13 +628,22 @@
/** 提交按钮 */
submitTask: function () {
this.$refs['taskForm'].validate((valid) => {
let param = Object.assign({},this.taskForm)
let paramd = Object.assign({},this.taskForm)
if (valid) {
param.userIds=this.chosenList.map(item => item.userId);
param.exitTimes=this.chosenList.map(item => item.exitTime);
param.entryTimes=this.chosenList.map(item => item.entryTime);
param.checkType="3";
paramd.userIds=this.chosenList.map(item => item.userId);
paramd.exitTimes=this.chosenList.map(item => item.exitTime);
paramd.entryTimes=this.chosenList.map(item => item.entryTime);
paramd.checkType="3";
console.log(param)
let param={
verifyTitle:"出入境时间核验",
startTime:paramd.exitTimes[0],
endTime:paramd.entryTimes[0],
verifyUsers:paramd.userIds,
verifyType:"3",
noticeType:"2",
processDate:''
}
addCertificateCheckApi(param).then(response => {
if(response.code=200){
this.$modal.msgSuccess("验证下发成功");

View File

@ -20,7 +20,7 @@
<el-form-item label="关键字" prop="keyWord">
<el-input
v-model="queryParams.keyWord"
placeholder="请输入"
placeholder="请输入设备名称、设备地址"
clearable maxlength="20"
style="width: 300px"
@keyup.enter.native="handleQuery"
@ -69,8 +69,8 @@
</template>
</el-table-column>
<el-table-column label="槽位数" align="center" prop="soltNum" :show-overflow-tooltip="true"/>
<el-table-column label="已存放数" align="center" prop="soltUsedNum" :show-overflow-tooltip="true"/>
<el-table-column label="空余数" align="center" prop="" :show-overflow-tooltip="true">
<el-table-column label="空余数" align="center" prop="soltUsedNum" :show-overflow-tooltip="true"/>
<el-table-column label="已存放数" align="center" prop="" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span>{{Number(scope.row.soltNum)-Number(scope.row.soltUsedNum)}}</span>
</template>
@ -140,12 +140,12 @@
<el-row>
<el-col :span="12">
<el-form-item label="设备Ip" prop="deviceIp">
<el-input v-model="baseForm.deviceIp" placeholder="请输入设备Ip" maxlength="30" clearable/>
<el-input v-model="baseForm.deviceIp" placeholder="请输入设备Ip" maxlength="30" @blur="handleIpBlur" clearable/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="功能接口" prop="funImp">
<el-input v-model="baseForm.funImp" placeholder="http://xxx.xxx.xxx:8088/externaltask/accessfunction" maxlength="30" clearable/>
<el-input v-model="baseForm.funImp" placeholder="http://xxx.xxx.xxx:8088/externaltask/accessfunction" readonly="true" maxlength="500" clearable/>
</el-form-item>
</el-col>
</el-row>
@ -249,7 +249,7 @@
deviceNumber:"",
deviceName:"",
deviceSn:"",
deviceIp:"",
deviceIp:"192.168.0.229",
deviceKey:"",
deviceAddr:"",
deviceMac:"",
@ -269,7 +269,7 @@
{ required: true, message: "设备地址不能为空", trigger: "blur" }
],
funImp: [
{ required: true, message: "设备编号不能为空", trigger: "blur" }
{ required: true, message: "功能接口不能为空", trigger: "blur" }
],
deviceName: [
{ required: true, message: "设备名称不能为空", trigger: "blur" }
@ -333,6 +333,10 @@
this.getList()
},
methods: {
handleIpBlur(){
const ip=this.baseForm.deviceIp;
this.baseForm.funImp="http://"+ip+":8088/externaltask/accessfunction";
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;

View File

@ -4,7 +4,7 @@
<el-form-item label="关键字" prop="keyWord">
<el-input
v-model="queryParams.keyWord"
placeholder="请输入关键字"
placeholder="请输入姓名、描述"
clearable maxlength="20"
style="width: 200px"
/>

View File

@ -144,14 +144,26 @@
<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.processDate"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd" style="width: 100%;"
value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="核验开始日期" prop="startTime">
<el-date-picker
v-model="taskForm.startTime"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd" style="width: 100%;"
:picker-options="pickerOptionsToday"
@focus="startDateFocus"
value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="核验结束日期" prop="endTime">
<el-date-picker
v-model="taskForm.endTime"
type="date"
placeholder="选择日期"
:picker-options="pickerOptionsStart"
@focus="endDateFocus"
format="yyyy-MM-dd" style="width: 100%;"
value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
@ -247,6 +259,25 @@ export default {
},
]
},
pickerOptionsToday: {
disabledDate(time) {
//
const today = new Date();
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
}
},
pickerOptionsStart: {
disabledDate(time) {
//
const startTime=this.taskForm.startTime;
const today = new Date(startTime);
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
}
},
}
},
watch: {
@ -266,6 +297,36 @@ export default {
if (!phone) return ''
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
},
startDateFocus() {
this.taskForm.endTime = ''
let endTime = this.taskForm.endTime;
if (!endTime) return;
let that = this;
that.pickerOptionsToday = {
disabledDate(time) {
//
const today = new Date();
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
},
};
},
endDateFocus() {
let startTime = this.taskForm.startTime;
if (!startTime) return;
let that = this;
that.pickerOptionsStart = {
disabledDate(time) {
//
const startTime=that.taskForm.startTime;
const today = new Date(startTime);
today.setHours(0, 0, 0, 0); // 00:00:00
//
return time.getTime() < today.getTime();
},
};
},
initStatistics(){
let param = {}
getStatisticsApi(param).then(response => {
@ -353,12 +414,21 @@ export default {
/** 提交按钮 */
submitTask: function () {
this.$refs['taskForm'].validate((valid) => {
let param = Object.assign({},this.taskForm)
console.log(param)
let paramd = Object.assign({},this.taskForm)
console.log(paramd)
console.log(this.ids)
if (valid) {
param.userIds=this.ids;
param.checkType="1";
paramd.userIds=this.ids;
paramd.checkType="1";
let param={
verifyTitle:"无证核验",
startTime:"",
endTime:"",
verifyUsers:this.ids,
verifyType:"1",
noticeType:"2",
processDate:''
}
addCertificateCheckApi(param).then(response => {
if(response.code=200){
this.$modal.msgSuccess("验证下发成功");

View File

@ -4,7 +4,7 @@
<el-form-item label="关键字" prop="keyWord">
<el-input
v-model="queryParams.keyWord"
placeholder="请输入关键字"
placeholder="请输入标题"
clearable maxlength="20"
style="width: 240px"
@keyup.enter.native="handleQuery"