This commit is contained in:
jiask 2025-11-04 15:40:39 +08:00
parent b0076d4bc0
commit 1c14c5e546
12 changed files with 375 additions and 234 deletions

View File

@ -174,3 +174,37 @@ export function getDevicelistApi(data) {
params:data
})
}
// 备份人员管理-分页查询信息
export function getCertificateUserListPageApi(data) {
return request({
url: '/certificate/certificate_system/list',
method: 'get',
headers: {
//"merchant-id":"378915229716713472",
},
params:data
})
}
export function getAccessListPageApi(data) {
return request({
url: '/certificate/certificate_manage/certificateInfo/getAccessListByCertificateNo',
method: 'get',
headers: {
//"merchant-id":"378915229716713472",
},
params:data
})
}
export function getCheckListPageApi(data) {
return request({
url: '/certificate/certificate_manage/certificateInfo/getCheckListByCertificateNo',
method: 'get',
headers: {
//"merchant-id":"378915229716713472",
},
params:data
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -21,11 +21,11 @@
<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-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
</el-form>
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="tableListData">
</el-row>
<el-table v-loading="loading" :data="tableListData">
<el-table-column label="序号" align="center" width="80" type="index" fixed="left">
<template slot-scope="scope">
<span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span>
@ -33,7 +33,7 @@
</el-table-column>
<el-table-column label="姓名" align="center" prop="name" :show-overflow-tooltip="true" width="120"/>
<el-table-column label="身份证号" align="center" prop="idNumber" :show-overflow-tooltip="true" width="180"/>
<!-- <el-table-column label="部门" align="center" prop="deptFullName" :show-overflow-tooltip="true" width="250"/>
<!-- <el-table-column label="部门" align="center" prop="deptFullName" :show-overflow-tooltip="true" width="250"/>
<el-table-column label="出生日期" align="center" width="120" prop="birthday" :show-overflow-tooltip="true"/>
<el-table-column label="出生地点" align="center" prop="birthAddr" :show-overflow-tooltip="true"/> -->
<el-table-column label="证件类型" align="center" prop="certificateTypeName" :show-overflow-tooltip="true"/>
@ -47,10 +47,10 @@
<el-table-column label="有效期至" align="center" width="120" prop="issueLifespan" :show-overflow-tooltip="true"/>
<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="" :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>
<el-table-column label="存取类型" align="center" prop="typeName" :show-overflow-tooltip="true"/>
<el-table-column label="存取证任务下达时间" align="center" prop="createTime" :show-overflow-tooltip="true"/>
<el-table-column label="实际存取证时间" align="center" prop="realProcessDate" :show-overflow-tooltip="true"/>
</el-table>
<pagination
v-show="total>0"
:total="total"
@ -60,7 +60,7 @@
/>
</el-tab-pane>
<el-tab-pane label="证件核验记录" name="statistics">
<el-form :model="queryParams2" ref="queryForm2" size="small" :inline="true" v-show="showSearch" label-width="90px">
<el-form :model="queryParams2" ref="queryForm2" size="small" :inline="true" v-show="showSearch" label-width="90px">
<el-form-item label="日期范围">
<el-date-picker
v-model="dateRange"
@ -79,10 +79,10 @@
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery2">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery2">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
</el-form>
<el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList2"></right-toolbar>
</el-row>
</el-row>
<el-table v-loading="loading" :data="tableListData2">
<el-table-column label="序号" align="center" width="80" type="index" fixed="left">
<template slot-scope="scope">
@ -91,7 +91,7 @@
</el-table-column>
<el-table-column label="姓名" align="center" prop="name" :show-overflow-tooltip="true" width="120"/>
<el-table-column label="身份证号" align="center" prop="idNumber" :show-overflow-tooltip="true" width="180"/>
<!-- <el-table-column label="部门" align="center" prop="deptFullName" :show-overflow-tooltip="true" width="250"/>
<!-- <el-table-column label="部门" align="center" prop="deptFullName" :show-overflow-tooltip="true" width="250"/>
<el-table-column label="出生日期" align="center" width="120" prop="birthday" :show-overflow-tooltip="true"/>
<el-table-column label="出生地点" align="center" prop="birthAddr" :show-overflow-tooltip="true"/> -->
<el-table-column label="证件类型" align="center" prop="certificateTypeName" :show-overflow-tooltip="true"/>
@ -108,7 +108,7 @@
<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>
</el-table>
<pagination
v-show="total2>0"
:total="total2"
@ -116,14 +116,13 @@
:limit.sync="queryParams2.pageSize"
@pagination="getList2"
/>
</el-tab-pane>
</el-tabs>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
// import { stockInoutFlowingPageApi,stockInoutStatisticsPageApi } from "@/api/foodManage/stockReport";
import { getAccessListPageApi,getCheckListPageApi } from "@/api/certificateManage/index";
export default {
name: "CertificateLogList",
dicts: [],
@ -139,17 +138,17 @@ export default {
//
multiple: true,
//
showSearch: true,
showSearch: true,
activeName:'stream',
//-----------
//
total: 0,
//
tableListData: [],
tableListData: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
pageSize: 10,
},
dateRange:this.defaultDateRange(),//
pickerOptions: {
@ -178,24 +177,24 @@ export default {
picker.$emit('pick', [start, end]);
}
}]
},
},
//-----------
//
total2: 0,
//
tableListData2: [],
tableListData2: [],
//
queryParams2: {
pageNum: 1,
pageSize: 10,
pageSize: 10,
},
};
},
created() {
this.getList();
created() {
this.getList();
},
created() {
if(this.$route.query.certificateInfoRowData){
created() {
if(this.$route.query.certificateInfoRowData){
this.certificateInfoRowData = JSON.parse(this.$route.query.certificateInfoRowData)
console.log(this.certificateInfoRowData)
this.getList()
@ -218,13 +217,13 @@ export default {
jumpList() {
// const obj = { path: "foodManage/purchaseManage/contractDetail" };
// this.$tab.closeOpenPage(obj);
// this.$router.replace({ path: "/foodManage/purchaseManage/contractList" }); //
// this.$router.replace({ path: "/foodManage/purchaseManage/contractList" }); //
},
handleTabClick(){
if(this.activeName=='stream'){
this.queryParams={
pageNum: 1,
pageSize: 10,
pageSize: 10,
}
this.dateRange = this.defaultDateRange()
this.resetForm("queryForm");
@ -246,7 +245,7 @@ export default {
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
resetQuery() {
this.dateRange = this.defaultDateRange()
this.queryParams = {
pageNum: 1,
@ -254,13 +253,13 @@ export default {
}
this.resetForm("queryForm");
this.handleQuery();
},
},
/** 查询列表 */
getList() {
// this.loading = true;
let param = {
"pageNum": this.queryParams.pageNum,
"pageSize": this.queryParams.pageSize,
"pageNum": this.queryParams.pageNum,
"pageSize": this.queryParams.pageSize,
}
if(this.dateRange&&this.dateRange.length>0){
param.startDate=this.formatDateTime(this.dateRange[0])
@ -268,14 +267,14 @@ export default {
}else{
param.startDate=undefined;
param.endDate=undefined;
}
}
console.log(param)
// stockInoutFlowingPageApi(param).then(response => {
// this.tableListData = response.rows;
// this.total = Number(response.total);
// this.loading = false;
// });
},
getAccessListPageApi(param).then(response => {
this.tableListData = response.rows;
this.total = Number(response.total);
this.loading = false;
});
},
//-----------
/** 搜索按钮操作 */
handleQuery2() {
@ -283,7 +282,7 @@ export default {
this.getList2();
},
/** 重置按钮操作 */
resetQuery2() {
resetQuery2() {
this.queryParams2 = {
pageNum: 1,
pageSize: 10,
@ -295,7 +294,7 @@ export default {
getList2() {
this.loading = true;
let param = {
"pageNum": this.queryParams2.pageNum,
"pageNum": this.queryParams2.pageNum,
"pageSize": this.queryParams2.pageSize,
}
if(this.dateRange&&this.dateRange.length>0){
@ -306,21 +305,21 @@ export default {
param.endDate=undefined;
}
console.log(param)
// stockInoutStatisticsPageApi(param).then(response => {
// this.tableListData2 = response.rows;
// this.total2 = Number(response.total);
// this.loading = false;
// });
},
getCheckListPageApi(param).then(response => {
this.tableListData2 = response.rows;
this.total2 = Number(response.total);
this.loading = false;
});
},
defaultDateRange() {
const end = new Date(new Date().toLocaleDateString());
end.setTime(end.getTime() + 24 * 60 * 60 * 1000 -1);
const start = new Date((new Date().toLocaleDateString()));
start.setTime(start.getTime() - 30 * 24 * 60 * 60 * 1000);
start.setTime(start.getTime() - 30 * 24 * 60 * 60 * 1000);
this.start = parseInt(start.getTime() / 1000)
this.end = parseInt(end.getTime() / 1000)
return [start, end]
},
},
//
formatDate(date) {
// YYYY-MM-DD
@ -341,7 +340,7 @@ export default {
const minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
const seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
}
}
};
</script>

View File

@ -62,7 +62,7 @@
size="mini"
@click="handleAdd(5)"
>应急取证</el-button>
</el-col>
</el-col>
<el-col :span="1.5">
<el-button
icon="el-icon-download"
@ -79,10 +79,10 @@
icon="el-icon-plus"
size="mini"
:disabled="multiple"
@click="handleTask"
@click="handleTask"
>出入境核验
</el-button>
</el-col>
</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">
@ -91,7 +91,7 @@
<template slot-scope="scope">
<span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="姓名" align="center" prop="name" :show-overflow-tooltip="true" width="120"/>
<el-table-column label="身份证号" align="center" prop="idNumber" :show-overflow-tooltip="true" width="180"/>
<el-table-column label="出生日期" align="center" prop="birthday" :show-overflow-tooltip="true"/>
@ -155,8 +155,42 @@
</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-dialog :title="title2+''" :visible.sync="open2" width="700px" append-to-body>
<el-tabs v-model="activeName">
<!-- 基础设置 -->
<el-tab-pane label="" name="baseSetting" style="height: 100px;">
<el-form ref="baseForm" :model="baseForm" :rules="baseFormRules2" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="出境日期" prop="exitTime">
<el-date-picker
v-model="baseForm.exitTime"
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="entryTime">
<el-date-picker
v-model="baseForm.entryTime"
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>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm2"> </el-button>
<el-button @click="cancel2"> </el-button>
</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">
@ -167,14 +201,14 @@
format="yyyy-MM-dd" style="width: 100%;"
value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
</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>
</el-dialog>
</div>
</template>
@ -218,6 +252,9 @@
title: "",
//
open: false,
title2: "",
//
open2: false,
checked: false,
selectName:"",
selectIdNumber:"",
@ -252,11 +289,13 @@
},
//
baseFormRules: {
name: [
{ required: true, message: "姓名不能为空", trigger: "blur" }
],
},
baseFormRules2: {
exitTime: [{ required: true, message: "出境时间不能为空", trigger: "blur" }],
entryTime: [{ required: true, message: "入境时间不能为空", trigger: "blur" }],
},
logTableData:[],//
//
@ -276,9 +315,9 @@
//
taskForm: {
verificationDate:""
},
},
//
taskRules: {
taskRules: {
verificationDate: [
{
required: true,
@ -365,14 +404,20 @@
return;
}
var titlemsg="是否确定自助取证?"
var
titled="自助取证"
if(type==3){
titlemsg="是否确定自助取证?"
titled="自助取证"
}else if(type==4){
titlemsg="是否确定管理员取证?"
titled="管理员取证"
}else if(type==5){
titlemsg="是否确定应急取证?"
titled="应急取证"
}else if(type==6){
titlemsg="是否确定代人取证?"
titled="代人取证"
}
if(type==6){
this.open = true;
@ -384,17 +429,31 @@
this.allreplace=response;
});
}else{
this.$modal.confirm(titlemsg).then(() => {
getCertificateTakeAddPageApi({"certificateNos":CertificateNos,"type":type,"idNumber":"","name":""}).then(response => {
this.getList();
this.$modal.msgSuccess("操作成功");
});
}).catch(() => {});
this.selectCertificateNos=CertificateNos;
this.selectType=type;
this.open2 = true;
this.title2 = titled;
}
},
submitForm2: function() {
const param={"certificateNos":this.selectCertificateNos,"type":this.selectType,"exitTime":this.baseForm.exitTime,"entryTime":this.baseForm.entryTime};
console.log("param",param);
getCertificateTakeAddPageApi(param).then(response => {
this.getList();
this.open2 = false;
this.reset();
this.$modal.msgSuccess("操作成功");
});
},
//
cancel2() {
this.open2 = false;
this.reset();
},
submitForm: function() {
console.log("this.baseForm",this.baseForm);
getCertificateTakeAddPageApi({"certificateNos":this.selectCertificateNos,"type":this.selectType,"idNumber":this.selectIdNumber,"name":this.selectName}).then(response => {
const param={"certificateNos":this.selectCertificateNos,"type":this.selectType,"idNumber":this.selectIdNumber,"name":this.selectName};
console.log("param",param);
getCertificateTakeAddPageApi(param).then(response => {
this.getList();
this.open = false;
this.reset();
@ -422,8 +481,8 @@
},
/** 远程校验按钮操作 */
handleTask() {
this.resetTask()
this.openTask = true
this.resetTask()
this.openTask = true
},
//
cancelTask() {
@ -434,21 +493,21 @@
resetTask() {
this.taskForm = {
verificationDate:""
}
this.resetForm('taskForm')
}
this.resetForm('taskForm')
},
/** 提交按钮 */
submitTask: function () {
this.$refs['taskForm'].validate((valid) => {
this.$refs['taskForm'].validate((valid) => {
let param = Object.assign({},this.taskForm)
console.log(param)
console.log(this.ids)
if (valid) {
if (valid) {
// updateUser(param).then((response) => {
// this.$modal.msgSuccess('')
// this.openTask = false
// this.getList()
// })
// })
}
})
},

View File

@ -15,7 +15,7 @@
<el-option label="小型" value="1"/>
<el-option label="中型" value="2"/>
<el-option label="大型" value="3"/>
</el-select>
</el-select>
</el-form-item>
<el-form-item label="单位名称" prop="unitName">
<el-input
@ -49,7 +49,7 @@
<template slot-scope="scope">
<span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="护照柜名称" align="center" prop="deviceName" :show-overflow-tooltip="true" width="180"/>
<el-table-column label="设备编号" align="center" prop="deviceNumber" :show-overflow-tooltip="true" width="120"/>
<el-table-column label="护照柜类型" align="center" prop="deviceType" :show-overflow-tooltip="true" width="100">
@ -71,11 +71,11 @@
<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">
<template slot-scope="scope">
<template slot-scope="scope">
<span>{{Number(scope.row.soltNum)-Number(scope.row.soltUsedNum)}}</span>
</template>
</el-table-column>
<el-table-column label="所属单位" align="center" prop="unitName" :show-overflow-tooltip="true"></el-table-column>
</el-table-column>
<el-table-column label="所属单位" align="center" prop="deptName" :show-overflow-tooltip="true"></el-table-column>
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope">
@ -108,7 +108,25 @@
<!-- 基础设置 -->
<el-tab-pane label="基础设置" name="baseSetting" style="height: 400px;">
<el-form ref="baseForm" :model="baseForm" :rules="baseFormRules" label-width="80px">
<el-col :span="12" v-if="baseForm.deptId !== 0">
<el-form-item label="单位" prop="deptId" style="width: 100%;">
<treeselect
v-model="baseForm.deptId"
:options="deptOptions"
:normalizer="normalizer"
placeholder="选择单位"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="类型" prop="deviceType">
<el-select v-model="baseForm.deviceType" placeholder="护照柜类型" clearable>
<el-option label="小型" value="1"/>
<el-option label="中型" value="2"/>
<el-option label="大型" value="3"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="设备编号" prop="deviceNumber">
<el-input v-model="baseForm.deviceNumber" placeholder="请输入设备编号" maxlength="30" clearable/>
@ -167,13 +185,24 @@
</template>
<script>
import {
listDept,
getDept,
delDept,
addDept,
updateDept,
listDeptExcludeChild,
} from '@/api/system/dept'
import { systemAreaTreeApi,getCanteenByAreaApi,getStallByCanteenApi } from "@/api/base/stall";
import { getDeviceListPageApi,addDeviceApi, updateDeviceApi, deleteDeviceApi,getMenuRecipeDetailApi,uploadApkApi } from "@/api/device/index";
import base64 from 'base-64';
import { getToken } from '@/utils/auth'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
name: "",
dicts: ["dev_comm_status","dev_status"],
components: { Treeselect },
data() {
return {
//
@ -190,6 +219,7 @@
total: 0,
//
tableListData: [],
deptOptions: [],
//
title: "",
//
@ -221,6 +251,12 @@
},
//
baseFormRules: {
deptId: [
{ required: true, message: "单位不能为空", trigger: "blur" }
],
deviceType: [
{ required: true, message: "设备类型不能为空", trigger: "blur" }
],
deviceNumber: [
{ required: true, message: "设备编号不能为空", trigger: "blur" }
],
@ -280,23 +316,6 @@
//
url: process.env.VUE_APP_BASE_API + '/file/upload',
},
appFormRules:{
version: [
{ required: true, message: "版本号不能为空", trigger: "blur" }
],
versionName: [
{ required: true, message: "版本号名称不能为空", trigger: "blur" }
],
apkName: [
{ required: true, message: "APP名称不能为空", trigger: "blur" }
],
apkPath: [
{ required: true, message: "APP路径不能为空", trigger: "blur" }
],
updateContent: [
{ required: true, message: "更新内容不能为空", trigger: "blur" }
]
},
};
},
mounted(){
@ -358,6 +377,21 @@
this.reset();
this.open = true;
this.title = "新增";
listDept().then((response) => {
this.deptOptions = this.handleTree(response.data, 'deptId');
console.log("this.deptOptions",this.deptOptions)
})
},
/** 转换部门数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children
}
return {
id: node.deptId,
label: node.deptName,
children: node.children,
}
},
/** 修改按钮操作 */
handleUpdate(row) {
@ -366,6 +400,9 @@
this.baseForm = Object.assign({}, row)
// this.$set(this,"metadata",row.deviceMetadata)
this.title = "修改";
listDept().then((response) => {
this.deptOptions = this.handleTree(response.data, 'deptId')
})
},
handleTabClick(tab, event) {
console.log(tab, event);
@ -407,7 +444,6 @@
console.log(this.baseForm)
this.$refs["baseForm"].validate(valid => {
if (valid) {
this.baseForm.deviceType=20
// this.baseForm.metadata=this.metadata
if (this.baseForm.deviceId != undefined) {
updateDeviceApi(this.baseForm).then(response => {
@ -477,7 +513,7 @@
apkName:null,
apkPath:null,
updateContent:null,
deviceType:20,//20APP 2APP
deviceType:null,//20APP 2APP
};
this.resetForm("appForm");
this.openApp = true;

View File

@ -45,7 +45,7 @@
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input
v-model="queryParams.phonenumber"
@ -54,7 +54,7 @@
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@ -72,14 +72,14 @@
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
@click="handleExport"
>导出
</el-button>
</el-col>
@ -90,10 +90,10 @@
icon="el-icon-plus"
size="mini"
:disabled="multiple"
@click="handleTask"
@click="handleTask"
>有无证件核验
</el-button>
</el-col>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
@ -106,24 +106,24 @@
<template slot-scope="scope">
<span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
</el-table-column>
<el-table-column label="用户姓名" align="center" prop="nickName" :show-overflow-tooltip="true"/>
<el-table-column label="身份证号" align="center" prop="" :show-overflow-tooltip="true"/>
<el-table-column label="身份证号" align="center" prop="idNumber" :show-overflow-tooltip="true"/>
<el-table-column label="手机号码" align="center" prop="phonenumber" width="120">
<template slot-scope="scope">
<span>{{ hidePhone(scope.row.phonenumber) }}</span>
</template>
</el-table-column>
<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="createTime" width="160">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column> -->
<el-table-column label="单位职务" align="center" prop="postName" :show-overflow-tooltip="true"/>
<el-table-column label="人员类别" align="center" prop="userTypeName" :show-overflow-tooltip="true"/>
<el-table-column label="责任处室" align="center" prop="deptName" :show-overflow-tooltip="true"/>
<el-table-column label="有无证件" align="center" prop="" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.isHave==0||scope.row.isHave==null" style="color: #FF7322;font-size: 15px;"></span>
<span v-if="scope.row.isHave==1" style="color: #03DF6D;font-size: 15px;"></span>
</template>
</el-table-column>
</el-table>
<pagination
@ -134,11 +134,11 @@
@pagination="getList"
/>
</el-col>
</el-row>
</el-row>
<!-- 添加或修改参数配置对话框 -->
<el-dialog title="核验任务下达" :visible.sync="openTask" width="600px" append-to-body>
<el-form ref="taskForm" :model="taskForm" :rules="taskRules" label-width="120px">
<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">
@ -149,25 +149,26 @@
format="yyyy-MM-dd" style="width: 100%;"
value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
</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>
</el-dialog>
</div>
</template>
<script>
import {
listUser,
deptTreeSelect,
} from '@/api/system/user'
listUser,
deptTreeSelect,
} from '@/api/system/user'
import {getCertificateUserListPageApi} from "@/api/certificateManage/index"
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
name: '',
dicts: [
@ -193,30 +194,31 @@ export default {
//
total: 0,
//
userList: null,
userList: null,
//
deptOptions: undefined,
deptOptions: undefined,
//
deptName: undefined,
deptName: undefined,
defaultProps: {
children: 'children',
label: 'label',
},
},
//
queryParams: {
pageNum: 1,
pageSize: 10,
isCertificate:"1",
userName: undefined,
phonenumber: undefined,
phonenumber: undefined,
deptId: undefined,
},
openTask: false,
//
taskForm: {
verificationDate:""
},
},
//
taskRules: {
taskRules: {
verificationDate: [
{
required: true,
@ -226,7 +228,7 @@ export default {
]
},
}
},
},
watch: {
//
deptName(val) {
@ -235,21 +237,21 @@ export default {
},
created() {
this.getList()
this.getDeptTree()
this.getDeptTree()
},
methods: {
/* 手机号码脱敏 */
hidePhone(phone) {
if (!phone) return ''
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
},
},
/** 查询用户列表 */
getList() {
this.loading = true
listUser(this.queryParams).then(
(response) => {
this.userList = response.rows
this.total = response.total
this.total = response.total
this.loading = false
},
)
@ -279,31 +281,31 @@ export default {
handleNodeClick(data) {
this.queryParams.deptId = data.id
this.handleQuery()
},
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm')
resetQuery() {
this.resetForm('queryForm')
this.$refs.tree.setCurrentKey(null)
this.handleQuery()
},
//
handleSelectionChange(selection) {
handleSelectionChange(selection) {
// roleId
this.ids = selection.map((item) => item.userId)
//
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 远程校验按钮操作 */
handleTask() {
this.resetTask()
this.openTask = true
this.resetTask()
this.openTask = true
},
//
cancelTask() {
@ -314,21 +316,21 @@ export default {
resetTask() {
this.taskForm = {
verificationDate:""
}
this.resetForm('taskForm')
}
this.resetForm('taskForm')
},
/** 提交按钮 */
submitTask: function () {
this.$refs['taskForm'].validate((valid) => {
this.$refs['taskForm'].validate((valid) => {
let param = Object.assign({},this.taskForm)
console.log(param)
console.log(this.ids)
if (valid) {
if (valid) {
// updateUser(param).then((response) => {
// this.$modal.msgSuccess('')
// this.openTask = false
// this.getList()
// })
// })
}
})
},
@ -348,14 +350,14 @@ export default {
},
/** 导出按钮操作 */
handleExport() {
// this.download(
// 'system/user/export',
// {
// ...this.queryParams,
// },
// `user_${new Date().getTime()}.xlsx`,
// )
},
this.download(
'system/user/export2',
{
...this.queryParams,
},
`user_${new Date().getTime()}.xlsx`,
)
},
//
formatDate(sdate) {
let date = new Date(sdate);
@ -364,7 +366,7 @@ export default {
const month = String(date.getMonth() + 1).padStart(2, '0'); // 0
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
}
},
}
</script>

View File

@ -2,7 +2,7 @@
<div class="app-container home">
<el-row :gutter="20">
<el-col :sm="24" :lg="12" style="padding-left: 20px">
<h2>证件管理系统</h2>
<h2>公职人员护照管理系统</h2>
<p>
<b>当前版本:</b> <span>v{{ version }}</span>
</p>

View File

@ -1,7 +1,7 @@
<template>
<div class="login">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title">证件管理系统</h3>
<h3 class="title">公职人员护照管理系统</h3>
<el-form-item prop="username">
<el-input
v-model="loginForm.username"

View File

@ -3,7 +3,7 @@
<div class="login">
<div class="login-form" style="width: 450px;">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" >
<h3 class="title">证件管理系统</h3>
<h3 class="title">公职人员护照管理系统</h3>
<template v-if="loginMethod === 'password'">
<el-form-item prop="username">
<el-input
@ -406,7 +406,7 @@ export default {
align-items: center;
height: 100%;
width: 100%;
background-image: url("../assets/images/login-bg.png");
background-image: url("../assets/images/logind.jpg");
background-repeat: no-repeat;
background-size: 100% 100%; /* 确保背景图覆盖整个容器 */
background-position: center center; /* 居中显示背景图 */

View File

@ -1,7 +1,7 @@
<template>
<div class="register">
<el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
<h3 class="title">证件管理系统</h3>
<h3 class="title">公职人员护照管理系统</h3>
<el-form-item prop="username">
<el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />

View File

@ -2,7 +2,7 @@
<div class="container">
<div class="register">
<el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
<h3 class="title">证件管理系统</h3>
<h3 class="title">公职人员护照管理系统</h3>
<el-form-item prop="nickName">
<el-input v-model="registerForm.nickName" type="text" auto-complete="off" placeholder="请输入姓名">

View File

@ -215,7 +215,7 @@
label="用户账号"
align="center"
key="userName"
prop="userName"
prop="userName"
v-if="columns[1].visible"
:show-overflow-tooltip="true"
/>
@ -365,7 +365,7 @@
<el-dropdown-menu slot="dropdown">
<!-- <el-dropdown-item
command="handleUpFace"
icon="el-icon-key"
icon="el-icon-key"
>人脸上传
</el-dropdown-item> -->
<el-dropdown-item
@ -444,7 +444,7 @@
noResultsText="没有搜索结果"
/>
</el-form-item>
</el-col>
</el-col>
<el-col :span="12">
<el-form-item label="手机号码" prop="phonenumber">
<el-input
@ -455,14 +455,14 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="邮箱" prop="email">
<el-form-item label="身份证" prop="idNumber">
<el-input
v-model="form.email"
placeholder="请输入邮箱"
v-model="form.idNumber"
placeholder="请输入身份证号码"
maxlength="50"
/>
</el-form-item>
</el-col>
</el-col>
<el-col :span="12">
<el-form-item
v-if="form.userId == undefined"
@ -490,7 +490,7 @@
show-password
/>
</el-form-item>
</el-col>
</el-col>
<el-col :span="12">
<el-form-item label="用户性别">
<el-select
@ -518,6 +518,18 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备案人员">
<el-radio-group v-model="form.isCertificate">
<el-radio
v-for="dict in isCertificates"
:key="dict.value"
:label="dict.value"
>{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户类别">
<el-select v-model="form.userType" placeholder="请选择用户类别" style="width: 100%;">
@ -530,23 +542,11 @@
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="APP用户">
<el-radio-group v-model="form.isCustomer">
<el-radio
v-for="item in isCustomerList"
:key="item.id"
:label="item.id"
>{{ item.name }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col> -->
<el-col :span="12">
<el-form-item label="岗位">
<el-select
v-model="form.postIds"
multiple style="width: 100%;"
v-model="form.postId"
style="width: 100%;"
placeholder="请选择岗位"
>
<el-option
@ -558,7 +558,7 @@
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-col>
<el-col :span="12">
<el-form-item label="角色" prop="roleIds">
<el-select
@ -590,7 +590,7 @@
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-col>
<el-col :span="12">
<el-form-item label="登录权限" prop="loginTypeArr">
<el-checkbox-group v-model="loginTypeArr">
@ -616,9 +616,9 @@
end-placeholder="结束日期" clearable
format="yyyy-MM-dd" style="width: 100%"
:picker-options="pickerOptions" >
</el-date-picker>
</el-date-picker>
</el-form-item>
</el-col>
</el-col>
<el-col :span="12">
<el-form-item label="人脸图片">
<el-upload
@ -643,7 +643,7 @@
</el-upload>
</el-form-item>
</el-col>
</el-row>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注">
@ -665,7 +665,7 @@
<!-- 人脸上传弹窗 -->
<el-dialog title="上传人脸" :visible.sync="openFace" width="500px" append-to-body>
<el-form ref="baseForm" :model="baseForm" label-width="100px">
<el-row>
<el-row>
<el-col :span="12">
<el-form-item label="人脸图片">
<el-upload
@ -696,7 +696,7 @@
<el-button @click="openFace=false"> </el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogVisible" width="700px">
<img style="width: 100%;height: 100%;" :src="dialogImageUrl" alt="">
</el-dialog>
@ -767,8 +767,8 @@ import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import { validateNewPassword } from '@/utils/validate'
import store from "@/store";
import { imgUpLoadTwo } from '@/api/system/upload'
import store from "@/store";
import { imgUpLoadTwo } from '@/api/system/upload'
import { decryptWithSM4,encryptWithSM4 } from '@/utils/sm';
export default {
name: 'User',
@ -815,6 +815,7 @@ export default {
//
loginTypeArr: [],
isCustomerList:[{id:"0",name:"是"},{id:"1",name:"否"}],
isCertificates:[{"value":0,"label":"否"},{"value":1,"label":"是"}],
//
multipleLimit: 1,
//
@ -880,6 +881,10 @@ export default {
trigger: 'blur',
},
],
idNumber: [
{ required: true, message: "身份证不能为空", trigger: "blur" },
{ validator: this.validateIDCard, trigger: 'blur' }
],
nickName: [
{
required: true,
@ -949,7 +954,7 @@ export default {
checkUrlList: [],//
checkUrlNameList: [],//
dialogVisible:false,//
dialogImageUrl:"",//
dialogImageUrl:"",//
loadingBtn:false,
// cropper
visible: false,
@ -998,6 +1003,17 @@ export default {
})
},
methods: {
validateIDCard(rule, value, callback) {
// 15
const reg15 = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
// 18
const reg18 = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}(\d|X|x)$/;
if (reg15.test(value) || reg18.test(value)) {
callback(); //
} else {
callback(new Error('请输入有效的身份证号')); //
}
},
/* 手机号码脱敏 */
hidePhone(phone) {
if (!phone) return ''
@ -1018,11 +1034,11 @@ export default {
(response) => {
this.userList = response.rows
this.total = response.total
// this.userList.forEach(item=>{
// this.userList.forEach(item=>{
// if(item.phonenumber&&item.phonenumber!=""){
// this.$set(item,"phonenumber",decryptWithSM4(item.phonenumber))
// }
// })
// }
// })
this.loading = false
},
)
@ -1176,18 +1192,13 @@ export default {
const userId = row.userId || this.ids
getUser(userId).then((response) => {
this.form = response.data
// if(this.form.phonenumber&&this.form..phonenumber!=""){
// this.$set(this.form,"phonenumber",decryptWithSM4(response.data.phonenumber))
// }
// if(this.form.email&&this.form..email!=""){
// this.$set(this.form,"email",decryptWithSM4(response.data.email))
// }
console.log("this.form",this.form);
const loginType = response.data.loginType
if (loginType) {
this.loginTypeArr = loginType.split(',')
}
if(this.form.isPermanent==0){
this.effectiveDateRange = [new Date(this.form.effectiveStartDay).getTime(),new Date(this.form.effectiveEndDay).getTime()]
if(this.form.isPermanent==0){
this.effectiveDateRange = [new Date(this.form.effectiveStartDay).getTime(),new Date(this.form.effectiveEndDay).getTime()]
}
this.postOptions = response.posts
this.roleOptions = response.roles
@ -1202,7 +1213,7 @@ export default {
this.fileList=[]
this.checkUrlList=[]
this.checkUrlNameList = []
}
}
this.open = true
this.title = '修改用户'
this.form.password = ''
@ -1301,9 +1312,9 @@ export default {
this.form.photoUrl = null
// this.$message.warning('')
}else{
this.form.photoUrl = this.checkUrlList[0]
this.form.photoUrl = this.checkUrlList[0]
}
if(this.form.isPermanent==0){
if(this.form.isPermanent==0){
this.form.effectiveStartDay = this.formatDate(this.effectiveDateRange[0])
this.form.effectiveEndDay = this.formatDate(this.effectiveDateRange[1])
}else{
@ -1314,10 +1325,10 @@ export default {
if (valid) {
// if(param.phonenumber&&param.phonenumber!=""){
// this.$set(param,"phonenumber",encryptWithSM4(param.phonenumber))
// }
// }
// if(param.email&&param.email!=""){
// this.$set(param,"email",encryptWithSM4(param.email))
// }
// this.$set(param,"email",encryptWithSM4(param.email))
// }
if (param.userId != undefined) {
updateUser(param).then((response) => {
this.$modal.msgSuccess('修改成功')
@ -1392,7 +1403,7 @@ export default {
//
submitFileForm() {
this.$refs.upload.submit()
},
},
hasSystemOrAuditrRole(roles) {
if (!roles || !Array.isArray(roles)) {
return false // roles false
@ -1401,7 +1412,7 @@ export default {
(role) =>
role.roleKey === 'systemAdmin' || role.roleKey === 'audit',
) // roleKey admin
},
},
//
checkSelectable(row) {
return !(
@ -1409,7 +1420,7 @@ export default {
row.isBuiltIn === '0' ||
this.hasSystemOrAuditrRole(row.roles)
)
},
},
getRowClassName(row) {
return !this.checkSelectable(row) ? 'disabled-row' : ''
},
@ -1420,9 +1431,9 @@ export default {
console.log(row)
const userId = row.userId || this.ids
getUser(userId).then((response) => {
this.baseForm = response.data
this.openFace = true
})
this.baseForm = response.data
this.openFace = true
})
},
submitFace(){
// console.log(this.baseForm)
@ -1433,7 +1444,7 @@ export default {
this.baseForm.photoUrl = this.checkUrlList[0]
updateUser(this.baseForm).then((response) => {
this.$modal.msgSuccess('上传成功')
store.commit('SET_FACE', this.checkUrlList[0]);
store.commit('SET_FACE', this.checkUrlList[0]);
this.openFace = false;
this.getList()
})
@ -1448,12 +1459,12 @@ export default {
if (res.code == 200) {
this.checkUrlList.push(res.data.url)
this.checkUrlNameList.push(res.data.name)
} else {
} else {
this.$modal.msgError(res.msg)
}
this.loadingBtn=false
})
.catch((error) => {
.catch((error) => {
this.$modal.msgError(error)
this.loadingBtn=false
})
@ -1462,7 +1473,7 @@ export default {
console.log('success')
},
//
handleBeforeUpload(file) {
handleBeforeUpload(file) {
const isLt = file.size / 1024 / 1024 < 5
if (!isLt) {
this.$modal.msgError(`图片大小不能超过 5 MB`)
@ -1501,7 +1512,7 @@ export default {
const month = String(date.getMonth() + 1).padStart(2, '0'); // 0
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
}
}
},
}
</script>