Commit 6b1374d9 by 葛青博

社保新增考生校对、考生管理

1 parent 2e5e928b
...@@ -5,65 +5,65 @@ ...@@ -5,65 +5,65 @@
const path = require('path') const path = require('path')
module.exports = { module.exports = {
dev: { dev: {
// Paths // Paths
assetsSubDirectory: 'static', assetsSubDirectory: 'static',
assetsPublicPath: '/', assetsPublicPath: '/',
proxyTable: {}, proxyTable: {},
// Various Dev Server settings // Various Dev Server settings
host: '192.168.9.102', // can be overwritten by process.env.HOST host: '192.168.9.102', // 'localhost', // // can be overwritten by process.env.HOST
port: 8990, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined port: 8990, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false, autoOpenBrowser: false,
errorOverlay: true, errorOverlay: true,
notifyOnErrors: true, notifyOnErrors: true,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
/** /**
* Source Maps * Source Maps
*/ */
// https://webpack.js.org/configuration/devtool/#development // https://webpack.js.org/configuration/devtool/#development
devtool: 'cheap-module-eval-source-map', devtool: 'cheap-module-eval-source-map',
// If you have problems debugging vue-files in devtools, // If you have problems debugging vue-files in devtools,
// set this to false - it *may* help // set this to false - it *may* help
// https://vue-loader.vuejs.org/en/options.html#cachebusting // https://vue-loader.vuejs.org/en/options.html#cachebusting
cacheBusting: true, cacheBusting: true,
cssSourceMap: true cssSourceMap: true
}, },
build: { build: {
// Template for index.html // Template for index.html
index: path.resolve(__dirname, '../dist/index.html'), index: path.resolve(__dirname, '../dist/index.html'),
// Paths // Paths
assetsRoot: path.resolve(__dirname, '../dist'), assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static', assetsSubDirectory: 'static',
assetsPublicPath: './', assetsPublicPath: './',
/** /**
* Source Maps * Source Maps
*/ */
productionSourceMap: true, productionSourceMap: true,
// https://webpack.js.org/configuration/devtool/#production // https://webpack.js.org/configuration/devtool/#production
devtool: '#source-map', devtool: '#source-map',
// Gzip off by default as many popular static hosts such as // Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you. // Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to: // Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin // npm install --save-dev compression-webpack-plugin
productionGzip: false, productionGzip: false,
productionGzipExtensions: ['js', 'css'], productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to // Run the build command with an extra argument to
// View the bundle analyzer report after build finishes: // View the bundle analyzer report after build finishes:
// `npm run build --report` // `npm run build --report`
// Set to `true` or `false` to always turn it on or off // Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report bundleAnalyzerReport: process.env.npm_config_report
} }
} }
\ No newline at end of file \ No newline at end of file
...@@ -6,188 +6,205 @@ Vue.use(Router) ...@@ -6,188 +6,205 @@ Vue.use(Router)
* 公共路由 * 公共路由
*/ */
export const constantRouterMap = [{ export const constantRouterMap = [{
path: '/', path: '/',
name: 'login', name: 'login',
component: reslove => require(['@/views/login/login'], reslove), component: reslove => require(['@/views/login/login'], reslove),
},
{
path: '/show',
name: '首页',
redirect: "/display",
component: reslove => require(['@/views/layout'], reslove),
meta: {
icon: 'gy-icon-shouye'
}, },
children: [{ {
path: '/display', path: '/show',
name: '首页', name: '首页',
component: reslove => require(['@/views/Home/show'], reslove), redirect: "/display",
}] component: reslove => require(['@/views/layout'], reslove),
}, meta: {
icon: 'gy-icon-shouye'
},
children: [{
path: '/display',
name: '首页',
component: reslove => require(['@/views/Home/show'], reslove),
}]
},
// {
// path: '/system/examinee',
// name: '考生管理',
// component: reslove => require(['@/views/System/SysExaminee'], reslove),
// },
// {
// path: '/system/proofread',
// name: '考生校对',
// component: reslove => require(['@/views/System/SysExaminee/proofreading'], reslove),
// },
// { // {
// path: '/home', // path: '/home',
// name: '首页', // name: '首页',
// component: reslove => require(['@/views/layout'], reslove), // component: reslove => require(['@/views/layout'], reslove),
// children: [{ // children: [{
// path: '/show', // path: '/show',
// name: '首页', // name: '首页',
// component: reslove => require(['@/views/home/show'], reslove), // component: reslove => require(['@/views/home/show'], reslove),
// }] // }]
// }, // },
{ {
path: '/illaudit', path: '/illaudit',
name: '违法审核', name: '违法审核',
component: reslove => require(['@/views/Enforcelaw/aduit'], reslove) component: reslove => require(['@/views/Enforcelaw/aduit'], reslove)
} }
] ]
/** /**
* 异步路由 * 异步路由
*/ */
export const asyncRouterMap = [ export const asyncRouterMap = [{
{ path: '/monitor',
path: '/monitor', name: '报表统计',
name: '报表统计', component: reslove => require(['@/views/layout'], reslove),
component: reslove => require(['@/views/layout'], reslove), meta: {
meta: { icon: 'gy-icon-jianguan'
icon: 'gy-icon-jianguan' },
}, children: [{
children: [ path: '/monitor/show',
{ name: '报表展示',
path: '/monitor/show', component: reslove => require(['@/views/report/show'], reslove),
name: '报表展示', },
component: reslove => require(['@/views/report/show'], reslove), {
}, path: '/monitor/static',
{ name: '基础统计',
path: '/monitor/static', component: reslove => require(['@/views/report/static'], reslove),
name: '基础统计', },
component: reslove => require(['@/views/report/static'], reslove), {
}, path: '/monitor/timeflow',
{ name: '时段客流分布',
path: '/monitor/timeflow', component: reslove => require(['@/views/report/timeflow'], reslove),
name: '时段客流分布', }
component: reslove => require(['@/views/report/timeflow'], reslove), ]
}
]
},
// {
// path: '/monitor',
// name: '实时视频',
// component: reslove => require(['@/views/layout'], reslove),
// meta: {
// icon: 'gy-icon-jianguan'
// },
// children: [
// {
// path: '/system/playvideo',
// name: '实时视频',
// component: reslove => require(['@/views/videos/playvideo'], reslove),
// }
// ]
// },
{
path: '/system/playvideo',
name: '数据检索',
meta: {
icon: 'el-icon-search'
}, },
component: reslove => require(['@/views/layout'], reslove), // {
children: [{ // path: '/monitor',
path: '/search/filmedrecords', // name: '实时视频',
name: '抓拍记录', // component: reslove => require(['@/views/layout'], reslove),
component: reslove => require(['@/views/Search/FilmedRecords'], reslove), // meta: {
}, // icon: 'gy-icon-jianguan'
// { // },
// path: '/search/pices', // children: [
// name: '以图搜图', // {
// component: reslove => require(['@/views/Search/Searchpic'], reslove), // path: '/system/playvideo',
// }, // name: '实时视频',
{ // component: reslove => require(['@/views/videos/playvideo'], reslove),
path: '/activity/report', // }
name: '状态报表', // ]
component: reslove => require(['@/views/activity/report'], reslove),
}
]
},
// {
// path: '/activity',
// name: '活动状态',
// meta: {
// icon: 'el-icon-map-location'
// },
// component: reslove => require(['@/views/layout'], reslove),
// children: [
// // {
// // path: '/activity/status',
// // name: '轨迹查询',
// // component: reslove => require(['@/views/activity/status'], reslove),
// // },
// {
// path: '/activity/report',
// name: '状态报表',
// component: reslove => require(['@/views/activity/report'], reslove),
// }
// ]
// },
{
path: '/equipment',
name: '设备管理',
component: reslove => require(['@/views/layout'], reslove),
meta: {
icon: 'el-icon-video-camera'
},
children: [{
path: '/equipment/org',
name: '组织机构管理',
component: reslove => require(['@/views/Equipment/org.vue'], reslove),
}
// ,{
// path: '/equipment/vchan',
// name: '相机配置',
// component: reslove => require(['@/views/Equipment/vchan.vue'], reslove),
// }, // },
{
// ,{ path: '/system/playvideo',
// path: '/equipment/dev', name: '数据检索',
// name: '设备状态', meta: {
// component: reslove => require(['@/views/Equipment/dev.vue'], reslove), icon: 'el-icon-search'
// } },
] component: reslove => require(['@/views/layout'], reslove),
}, { children: [{
path: '/system', path: '/search/filmedrecords',
name: '系统管理', name: '抓拍记录',
component: reslove => require(['@/views/layout'], reslove), component: reslove => require(['@/views/Search/FilmedRecords'], reslove),
meta: { },
icon: 'gy-icon-xitong' // {
// path: '/search/pices',
// name: '以图搜图',
// component: reslove => require(['@/views/Search/Searchpic'], reslove),
// },
{
path: '/activity/report',
name: '状态报表',
component: reslove => require(['@/views/activity/report'], reslove),
},
{
path: '/system/proofread',
name: '考生校对',
component: reslove => require(['@/views/System/SysExaminee/proofreading'], reslove),
},
]
}, },
// {
// path: '/activity',
// name: '活动状态',
// meta: {
// icon: 'el-icon-map-location'
// },
// component: reslove => require(['@/views/layout'], reslove),
// children: [
// // {
// // path: '/activity/status',
// // name: '轨迹查询',
// // component: reslove => require(['@/views/activity/status'], reslove),
// // },
// {
// path: '/activity/report',
// name: '状态报表',
// component: reslove => require(['@/views/activity/report'], reslove),
// }
// ]
// },
{
path: '/equipment',
name: '设备管理',
component: reslove => require(['@/views/layout'], reslove),
meta: {
icon: 'el-icon-video-camera'
},
children: [{
path: '/equipment/org',
name: '组织机构管理',
component: reslove => require(['@/views/Equipment/org.vue'], reslove),
}
// ,{
// path: '/equipment/vchan',
// name: '相机配置',
// component: reslove => require(['@/views/Equipment/vchan.vue'], reslove),
// },
children: [{ // ,{
path: '/system/user', // path: '/equipment/dev',
name: '用户管理', // name: '设备状态',
component: reslove => require(['@/views/System/Sysuser'], reslove), // component: reslove => require(['@/views/Equipment/dev.vue'], reslove),
}, { // }
path: '/system/role', ]
name: '角色管理', }, {
component: reslove => require(['@/views/System/role'], reslove), path: '/system',
}, name: '系统管理',
// { component: reslove => require(['@/views/layout'], reslove),
// path: '/system/setting', meta: {
// name: '其他配置', icon: 'gy-icon-xitong'
// component: reslove => require(['@/views/System/Setting'], reslove), },
// },
{
path: '/search/dbs',
name: '人口库管理',
component: reslove => require(['@/views/Search/facedb/database'], reslove),
}
] children: [{
} path: '/system/user',
name: '用户管理',
component: reslove => require(['@/views/System/Sysuser'], reslove),
}, {
path: '/system/role',
name: '角色管理',
component: reslove => require(['@/views/System/role'], reslove),
},
// {
// path: '/system/setting',
// name: '其他配置',
// component: reslove => require(['@/views/System/Setting'], reslove),
// },
{
path: '/search/dbs',
name: '人口库管理',
component: reslove => require(['@/views/Search/facedb/database'], reslove),
},
{
path: '/system/examinee',
name: '考生管理',
component: reslove => require(['@/views/System/SysExaminee'], reslove),
},
]
}
] ]
export default new Router({ export default new Router({
routes: constantRouterMap routes: constantRouterMap
}) })
\ No newline at end of file \ No newline at end of file
...@@ -6,22 +6,23 @@ import axios from 'axios' ...@@ -6,22 +6,23 @@ import axios from 'axios'
import vue from 'vue' import vue from 'vue'
import router from '../router' import router from '../router'
const service = axios.create({ const service = axios.create({
timeout: 2000000 //设置请求超时时间 timeout: 2000000 //设置请求超时时间
}) })
import { Message, Loading } from 'element-ui'; import { Message, Loading } from 'element-ui';
let loading //定义loading变量 let loading //定义loading变量
function startLoading() { //使用Element loading-start 方法 function startLoading() { //使用Element loading-start 方法
loading = Loading.service({ loading = Loading.service({
lock: true, lock: true,
text: '加载中……', text: '加载中……',
background: 'rgba(0, 0, 0, 0.7)' background: 'rgba(0, 0, 0, 0.7)'
}) })
} }
function endLoading() { //使用Element loading-close 方法
function endLoading() { //使用Element loading-close 方法
loading.close() loading.close()
} }
...@@ -47,29 +48,30 @@ export function tryHideFullScreenLoading() { ...@@ -47,29 +48,30 @@ export function tryHideFullScreenLoading() {
/**@param /**@param
* 请求前的拦截器 * 请求前的拦截器
*/ */
service.interceptors.request.use(function (config) { service.interceptors.request.use(function(config) {
const token = localStorage.getItem('atoken'); const token = localStorage.getItem('atoken');
//截取API添加时间戳防止请求缓存 // config.headers['app-code'] = 1
if (config.method == "get") { //截取API添加时间戳防止请求缓存
config.params = { if (config.method == "get") {
_t: Date.parse(new Date()) / 1000, config.params = {
...config.params _t: Date.parse(new Date()) / 1000,
}; ...config.params
} };
if (config.url.indexOf('codes/countries') < 1) { }
if (config.url.indexOf('cates') < 1) { if (config.url.indexOf('codes/countries') < 1) {
if (token) { if (config.url.indexOf('cates') < 1) {
// config.headers.authorization = '4db5183a-721b-4eee-b623-1d143890e813'; if (token) {
config.headers.authorization = token; // config.headers.authorization = '4db5183a-721b-4eee-b623-1d143890e813';
//showFullScreenLoading(); config.headers.authorization = token;
} else { //showFullScreenLoading();
router.push('/'); } else {
} router.push('/');
}
}
} }
} return config
return config }, function(err) {
}, function (err) { //tryHideFullScreenLoading();
//tryHideFullScreenLoading();
}); });
...@@ -77,21 +79,21 @@ service.interceptors.request.use(function (config) { ...@@ -77,21 +79,21 @@ service.interceptors.request.use(function (config) {
* @param * @param
* 响应前的拦截器 * 响应前的拦截器
*/ */
service.interceptors.response.use(function (res) { service.interceptors.response.use(function(res) {
//tryHideFullScreenLoading(); //tryHideFullScreenLoading();
if (res.data) { if (res.data) {
if (res.data.ecode === 401) { if (res.data.ecode === 401) {
Message({ Message({
type: 'error', type: 'error',
message: res.data.enote message: res.data.enote
}) })
// router.push('/'); // router.push('/');
}
} }
} return res;
return res; }, function(err) {
}, function (err) { //tryHideFullScreenLoading();
//tryHideFullScreenLoading(); return Promise.reject(err);
return Promise.reject(err);
}) })
export default service export default service
\ No newline at end of file \ No newline at end of file
<template>
<div class="statusdetail">
<el-dialog
:title="titlename"
:visible.sync="show"
width="40%"
>
<div class="activitychart" id="activitychart" v-show="curshow == 'chart'&&!noImg"></div>
<div class="imgbox" v-show="curshow == 'img'&&!noImg">
<div v-for="(item,index) in imgData" class="item-img-box" :key="index">
<img :src="API.picUrl+'picture/'+item.facePath+item.facePic" alt="">
</div>
</div>
<div class="" v-show="noImg">
暂无数据
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="show = false">取 消</el-button>
<el-button type="primary" @click="show = false">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import defaultPhotos from './index.json'
export default {
data() {
return {
show:false,
curshow:'img',
titlename:'抓拍图片',
imgData:[],
noImg:false
}
},
methods:{
initImg(data){
this.imgData = []
this.show = true
this.titlename = '抓拍图片'
this.curshow = 'img'
this.axios.get(this.API.url + '/faceRecognitions',{
params:{
mallId: data.mallId,
personUnid:data.personUnid,
sortName: "counttime",
sortOrder: "DESC"
}
}).then(res => {
if(res.data.data){
this.imgData = res.data.data;
this.noImg=false;
}else{
this.noImg=true;
}
})
},
chageperiod(){
},
},
mounted(){
}
}
</script>
<style lang="stylus" scoped>
.activitychart{
height 40vh
width 40vw
}
.report-select{
width 100%
overflow hidden
}
.imgbox{
overflow auto
height 60vh
}
.item-img-box{
width 155px
height 200px
float left
overflow hidden
border-radius 5px
margin 0 0 20px 20px
img {
height 100%
width 100%
}
}
</style>
{ "success": true, "code": 200, "msg": "select success", "data": [{ "id": 5235, "deviceId": 3, "channelId": 3, "gateId": 4, "deviceSerialnum": "227d123e-bf7a040f", "channelSerialnum": "227d123e-bf7a040f-01", "personType": 2, "facePic": "227d123e-bf7a040f-20200604085749-face-0.jpg", "mood": 0, "age": 2, "gender": 1, "direction": 1, "counttime": "2020-06-04 08:57:49", "countdate": "2020-06-04 00:00:00", "modifyTime": "2020-06-04 08:58:10", "createTime": "2020-06-04 08:58:10", "mallId": 4, "accountId": 1, "personUnid": "26aabf3c-a475-11ea-8f93-0367bf41ed29", "status": 0, "happyConf": 0, "historyArrivalCount": 0, "todayArrivalCount": 0, "unid": "05629698-538d-4e75-a42e-db4c42cffa60", "faceScore": 100.0, "faceType": 1, "facePicNum": 1, "bodyPicNum": 0, "faceFeatureType": 1, "bodyFeatureType": -1, "facePath": "face/20200604/227d123e-bf7a040f-01/", "trackPath": "track/20200604/227d123e-bf7a040f-01/" }, { "id": 5168, "deviceId": 3, "channelId": 3, "gateId": 4, "deviceSerialnum": "227d123e-bf7a040f", "channelSerialnum": "227d123e-bf7a040f-01", "personType": 2, "facePic": "227d123e-bf7a040f-20200603171413-face-0.jpg", "mood": 0, "age": 2, "gender": 1, "direction": 1, "counttime": "2020-06-03 17:14:13", "countdate": "2020-06-03 00:00:00", "modifyTime": "2020-06-03 17:14:36", "createTime": "2020-06-03 17:14:36", "mallId": 4, "accountId": 1, "personUnid": "26aabf3c-a475-11ea-8f93-0367bf41ed29", "status": 0, "happyConf": 0, "historyArrivalCount": 0, "todayArrivalCount": 0, "unid": "954833a5-b6c6-47cd-a648-51557acdc489", "faceScore": 97.0, "faceType": 1, "facePicNum": 1, "bodyPicNum": 0, "faceFeatureType": 1, "bodyFeatureType": -1, "facePath": "face/20200603/227d123e-bf7a040f-01/", "trackPath": "track/20200603/227d123e-bf7a040f-01/" }, { "id": 5074, "deviceId": 3, "channelId": 3, "gateId": 4, "deviceSerialnum": "227d123e-bf7a040f", "channelSerialnum": "227d123e-bf7a040f-01", "personType": 2, "facePic": "227d123e-bf7a040f-20200603090054-face-0.jpg", "mood": 0, "age": 2, "gender": 1, "direction": 1, "counttime": "2020-06-03 09:00:54", "countdate": "2020-06-03 00:00:00", "modifyTime": "2020-06-03 09:01:16", "createTime": "2020-06-03 09:01:16", "mallId": 4, "accountId": 1, "personUnid": "26aabf3c-a475-11ea-8f93-0367bf41ed29", "status": 0, "happyConf": 0, "historyArrivalCount": 0, "todayArrivalCount": 0, "unid": "2eb6ace3-fb91-4502-9470-8af73b2e19b7", "faceScore": 97.0, "faceType": 1, "facePicNum": 1, "bodyPicNum": 0, "faceFeatureType": 1, "bodyFeatureType": -1, "facePath": "face/20200603/227d123e-bf7a040f-01/", "trackPath": "track/20200603/227d123e-bf7a040f-01/" }, { "id": 4941, "deviceId": 3, "channelId": 3, "gateId": 4, "deviceSerialnum": "227d123e-bf7a040f", "channelSerialnum": "227d123e-bf7a040f-01", "personType": 2, "facePic": "227d123e-bf7a040f-20200602120353-face-0.jpg", "mood": 0, "age": 2, "gender": 1, "direction": 1, "counttime": "2020-06-02 12:03:53", "countdate": "2020-06-02 00:00:00", "modifyTime": "2020-06-02 12:04:15", "createTime": "2020-06-02 12:04:15", "mallId": 4, "accountId": 1, "personUnid": "26aabf3c-a475-11ea-8f93-0367bf41ed29", "status": 0, "happyConf": 0, "historyArrivalCount": 0, "todayArrivalCount": 0, "unid": "ec57bdc5-5c2e-4b41-968d-efbf366a620b", "faceScore": 100.0, "faceType": 1, "facePicNum": 1, "bodyPicNum": 0, "faceFeatureType": 1, "bodyFeatureType": -1, "facePath": "face/20200602/227d123e-bf7a040f-01/", "trackPath": "track/20200602/227d123e-bf7a040f-01/" }] }
\ No newline at end of file \ No newline at end of file
<template>
<div class="template-box content_div_main">
<el-row class="">
<el-form :inline="true" class="search-form" size="small">
<el-form-item label="考点名称:" label-width="82px">
<el-select v-model="examinationId" placeholder="请选择" @change="changeExamination">
<el-option
v-for="item in options"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="人员类型:">
<el-select v-model="typeId" placeholder="请选择">
<el-option
v-for="item in types"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button class="search-btn" @click="searchUser" icon="el-icon-download"
:disabled="buttonDisable()">获取考生列表</el-button>
<el-button class="search-btn ml10" @click="getAllUserList"
:disabled="buttonDisable()">获取考生照片</el-button>
</el-form-item>
</el-form>
</el-row>
<el-row>
<div class="line"></div>
</el-row>
<el-row>
<el-form :inline="true" class="search-form" size="small">
<el-form-item label="身份证号:">
<el-input type="text" class="bla bra br0" v-model="idCard" placeholder=""></el-input>
</el-form-item>
<el-form-item>
<el-button class="search-btn" @click="getUserList"
:disabled="examinationId === '' || typeId === ''">查询</el-button>
</el-form-item>
</el-form>
</el-row>
<el-row>
<el-table :data="systableData"
:v-loading="pictLoading"
element-loading-background = "rgba(0, 0, 0, 0.5)"
element-loading-text = "数据正在加载中"
element-loading-spinner = "el-icon-loading"
style="width:98%;margin:20px auto;" class="table_m_type" height="700">
<div slot="empty">
<div class="no-data-box">
<img src="../../../assets/img/nodata.png" alt="暂无数据"/>
<div>暂无数据</div>
</div>
</div>
<el-table-column type="index" width=""></el-table-column>
<!-- <el-table-column prop="tabOrder" label="序号" width=""></el-table-column> -->
<el-table-column prop="idCard" label="身份证号" width=""></el-table-column>
<el-table-column label="照片" align="center">
<template slot-scope="scope">
<el-popover placement="left" trigger="hover">
<div class="face-img-box" slot="reference">
<img
:src="dealCardImg(scope.row)"
width="50"
height="50"
alt
class="face-img"
:onerror="defaultImg"
/>
</div>
<img
:src="dealCardImg(scope.row)"
:alt="dealCardImg(scope.row)"
width="200"
height="200"
class="zoomout-img"
:onerror="defaultImg"
/>
</el-popover>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="">
<template slot-scope="scope" align="center">
<div class="tab-btn-box">
<span class="table-btn" @click="getItemUserImg(scope.$index, scope.row)">获取照片</span>
</div>
</template>
</el-table-column>
</el-table>
</el-row>
<el-row>
<div style="display: flex; flex-direction:row-reverse ">
<el-pagination
class="mt10"
@current-change="handleCurrentChange" :current-page.sync="currentPage"
:page-size="limit"
background
layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
</el-row>
<el-dialog title="考生照片获取进度" :visible.sync="progressDialog" width="40%">
<div class="progress-content">
<div>{{ `第${nowNumber}条` }}</div>
<div>{{ `共计${allUserList.length}条` }}</div>
</div>
<el-progress :text-inside="true" :stroke-width="14" :percentage="parseInt(nowNumber/allUserList.length * 100)"></el-progress>
</el-dialog>
</div>
</template>
<script>
const { picUrls = '' } = window.SECURITY_CONF
import defaultImg from "@/assets/img/default.png";
export default {
data() {
return {
options: [],
examinationId: "",
typeId: "",
systableData: [],
progressDialog: false,
types: [],
successCount: "",
idCard: null,
total:0,
currentPage:1,
limit:20,
pictLoading: false,
accountId:localStorage.getItem("accountId"),
allUserList: [],
picUrls,
defaultImg,
nowNumber: 0
}
},
methods: {
searchUser () {
this.axios.get(this.API.url+`/persons/socialSecurity/getStudentInfo`, {
params: {
mallId: this.examinationId,
personType: this.typeId
}
}).then(response => {
if (response.data.code === 200) {
this.successCount = response.data.data.successCount
this.userDataSuccess()
this.getUserList()
}
});
},
handleCurrentChange(val){
this.currentPage = val;
this.getUserList();
},
// 获取所有用户
async getAllUserList () {
try {
const allPerson = await this.axios.get(this.API.url+`/persons`, {
params: {
mallId: this.examinationId,
type: this.typeId,
}
});
if (allPerson.data && allPerson.data.data && allPerson.data.data.length > 0) {
const { data } = allPerson.data;
this.allUserList = data
this.progressDialog = true
this.editUserInfo()
} else {
}
} catch (err) {
}
},
dealCardImg(row) {
let img_path = "";
if (!row.personPic) {
img_path = this.defaultImg;
} else {
img_path = this.picUrls + "/" + row.personPic;
}
return img_path;
},
async editUserInfo () {
const { nowNumber } = this
if (nowNumber >= this.allUserList.length) {
return;
}
if (nowNumber === this.allUserList.length - 1) {
this.getUserList()
}
if (nowNumber < this.allUserList.length) {
await this.setUserPhoto(() => {
this.nowNumber = this.nowNumber + 1;
this.editUserInfo()
})
}
},
// 获取考生照片
async setUserPhoto (callback) {
const { allUserList, nowNumber } = this
try {
await this.axios.get(this.API.url+`/persons/socialSecurity/getPictures/${allUserList[nowNumber].id}`)
callback()
} catch (err) {
callback()
}
},
// 获取担任考生照片
getUserList () {
this.axios.get(this.API.url+`/persons`, {
params: {
mallId: this.examinationId,
type: this.typeId,
idCard: this.idCard === "" ? null : this.idCard,
page:this.currentPage,
pageSize: this.limit,
}
}).then(response => {
if (response.data && response.data.data && response.data.data.list) {
// response.data.data.list.forEach((item, index) => {
// item.tabOrder = ++index;
// });
this.systableData = response.data.data.list
this.total = response.data.data.total || 0
} else {
this.systableData = []
}
});
},
getTypes () {
this.axios.get(this.API.url+"/personTypes", {
params: {
accountId: this.accountId,
mallId: this.examinationId,
}
}).then(response => {
if (response && response.data && response.data.data) {
this.types = response.data.data
} else {
this.types = []
}
});
},
buttonDisable () {
if (this.typeId === "" || this.examinationId === "") {
return true
}
return false
},
async getItemUserImg (index, row) { // 单条获取照片
const { systableData } = this
try {
const data = await this.axios.get(this.API.url+`/persons/socialSecurity/getPictures/${row.id}`)
if (data && data.data && data.data.data) {
systableData[index].personPic = data.data.data.personPic
}
} catch (err) {
}
},
userDataSuccess () {
this.$alert(`考试列表获取成功!共计${this.successCount}条信息更新`, '', {
confirmButtonText: '确定'
});
},
getMalls () {
this.axios.get(this.API.url+`/malls`, {
params: {
accountId: this.accountId,
status: 1,
type: 1
}
}).then(response => {
if (response && response.data && response.data.data) {
this.options = response.data.data
} else {
this.options = []
}
});
},
changeExamination () {
if (this.examinationId !== '') {
this.getTypes()
}
}
},
created() {
this.getMalls()
},
};
</script>
<style lang="stylus" scoped>
.progress-content {
width 100%;
display flex;
justify-content space-between;
align-items center;
box-sizing border-box;
padding-right 18px;
margin-bottom 10px;
}
.line {
width 100%;
height 1px;
background-color #efefef;
}
.face-img-box {
position relative;
width 50px;
height 50px;
border 1px solid #dcdcdc;
margin 0px auto;
cursor zoom-in;
}
.pic-popover {
margin 5px 0;
padding 10px;
background #fff;
border 1px solid #ebeef5;
box-shadow 0 2px 12px 0 rgba(0, 0, 0, 0.1);
border-radius 4px;
}
.face-img {
width 50px;
height 50px;
}
.zoomout-img {
width auto;
height 200px;
}
</style>
<template>
<div class="template-box content_div_main">
<el-row class="">
<el-form :inline="true" class="search-form" size="small">
<el-form-item label="考点名称:" label-width="82px">
<el-select v-model="examinationId" placeholder="请选择" @change="changeExamination">
<el-option
v-for="item in options"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="人员类型:">
<el-select v-model="typeId" placeholder="请选择">
<el-option
v-for="item in types"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="校对结果:">
<el-select v-model="proofrendResut" placeholder="请选择">
<el-option
v-for="item in snapshots"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="身份证号:">
<el-input type="text" class="bla bra br0" v-model="idCard" placeholder="" style="width: 192px"></el-input>
</el-form-item>
<el-form-item>
<el-button class="search-btn" @click="getUserList" :disabled="examinationId === '' || typeId === ''">查询</el-button>
<el-button class="search-btn ml10" @click="upLoadData" :disabled="examinationId === '' || typeId === ''">上传校对结果</el-button>
</el-form-item>
</el-form>
</el-row>
<el-row>
<el-table :data="systableData" style="width:98%;margin:20px auto;" class="table_m_type" height="700">
<div slot="empty">
<div class="no-data-box">
<img src="../../../assets/img/nodata.png" alt="暂无数据"/>
<div>暂无数据</div>
</div>
</div>
<el-table-column type="index" width="" label="序号"></el-table-column>
<!-- <el-table-column prop="" label="序号" width=""></el-table-column> -->
<el-table-column prop="idCard" label="身份证号" width=""></el-table-column>
<el-table-column prop="" label="校对结果" width="">
<template slot-scope="scope">
<div>{{ scope.row.snapshotCount > 0 ? '认证通过' : '认证不通过' }}</div>
</template>
</el-table-column>
<el-table-column prop="" label="证件照片" align="center">
<template slot-scope="scope">
<el-popover placement="left" trigger="hover">
<div class="face-img-box" slot="reference">
<img
:src="dealCardImg(scope.row)"
width="50"
height="50"
alt
class="face-img"
:onerror="defaultImg"
/>
</div>
<img
:src="dealCardImg(scope.row)"
:alt="dealCardImg(scope.row)"
width="200"
height="200"
class="zoomout-img"
:onerror="defaultImg"
/>
</el-popover>
</template>
</el-table-column>
<el-table-column prop="" label="抓拍照片" width="">
<template slot-scope="scope" align="center">
<div class="tab-btn-box">
<span class="table-btn" @click="getItemUserImg(scope.$index, scope.row)">抓拍照片</span>
</div>
</template>
</el-table-column>
</el-table>
</el-row>
<el-row>
<div style="display: flex; flex-direction:row-reverse ">
<el-pagination
class="mt10"
@current-change="handleCurrentChange" :current-page.sync="currentPage"
:page-size="limit"
background
layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
</el-row>
<el-row>
<statusdetails ref="detail"></statusdetails>
</el-row>
</div>
</template>
<script>
const { picUrls = '' } = window.SECURITY_CONF
import defaultImg from "@/assets/img/default.png";
import statusdetails from './detail'
export default {
components:{
statusdetails
},
data() {
return {
options: [],
examinationId: "",
systableData: [],
total:0,
currentPage:1,
limit:20,
proofrendResut: '全部',
types: [],
typeId: "",
idCard: null,
accountId:localStorage.getItem("accountId"),
snapshots: [
{
value: '全部',
lable: '全部'
},
{
value: 'snapshotCount',
label: '认证不通过'
},
{
value: 'snapshotCount_gt',
label: '认证通过'
}
],
picUrls,
defaultImg,
}
},
methods: {
async upLoadData () {
try {
const response = await this.axios.get(this.API.url+`/persons/socialSecurity/sendComparisonResults`, {
params: {
mallId: this.examinationId,
personType: this.typeId
}
});
this.$alert(response.data.msg, '', {
confirmButtonText: '确定'
});
} catch (err) {
this.$message.error("上传校队失败");
}
},
userDataSuccess () {
this.$alert('这是一段内容', '标题名称', {
confirmButtonText: '确定'
});
},
getMalls () {
this.axios.get(this.API.url+`/malls`, {
params: {
accountId: this.accountId,
status: 1,
type: 1
}
}).then(response => {
if (response && response.data && response.data.data) {
this.options = response.data.data
} else {
this.options = []
}
});
},
// 获取所有用户
getUserList () {
const { proofrendResut } = this
let data = {}
if (proofrendResut === '全部') {
data = {
snapshotCount: null
}
} else if (proofrendResut === 'snapshotCount') {
data = {
snapshotCount: 0
}
} else if (proofrendResut === 'snapshotCount_gt') {
data = {
snapshotCount_gt: 0
}
}
this.axios.get(this.API.url+`/persons`, {
params: {
mallId: this.examinationId,
idCard: this.idCard === "" ? null : this.idCard,
page:this.currentPage,
pageSize: this.limit,
...data
}
}).then(response => {
if (response.data && response.data.data && response.data.data.list) {
// response.data.data.list.forEach((item, index) => {
// item.tabOrder = ++index;
// });
this.systableData = response.data.data.list
this.total = response.data.data.total || 0
} else {
this.systableData = []
}
});
},
getTypes () {
this.axios.get(this.API.url+"/personTypes", {
params: {
accountId: this.accountId,
mallId: this.examinationId,
}
}).then(response => {
if (response && response.data && response.data.data) {
this.types = response.data.data
} else {
this.types = []
}
});
},
changeExamination () {
if (this.examinationId !== '') {
this.getTypes()
}
},
handleCurrentChange(val){
this.currentPage = val;
this.getUserList();
},
dealCardImg(row) {
let img_path = "";
if (!row.personPic) {
img_path = this.defaultImg;
} else {
img_path = this.picUrls + "/" + row.personPic;
}
return img_path;
},
getItemUserImg (index, row) { // 单条获取照片
this.$refs.detail.initImg(row)
},
},
created() {
this.getMalls()
},
};
</script>
<style lang="stylus" scoped>
.progress-content {
width 100%;
display flex;
justify-content space-between;
align-items center;
box-sizing border-box;
padding-right 18px;
margin-bottom 10px;
}
.line {
width 100%;
height 1px;
background-color #efefef;
}
.face-img-box {
position relative;
width 50px;
height 50px;
border 1px solid #dcdcdc;
margin 0px auto;
cursor zoom-in;
}
.pic-popover {
margin 5px 0;
padding 10px;
background #fff;
border 1px solid #ebeef5;
box-shadow 0 2px 12px 0 rgba(0, 0, 0, 0.1);
border-radius 4px;
}
.face-img {
width 50px;
height 50px;
}
.zoomout-img {
width auto;
height 200px;
}
</style>
window.SECURITY_CONF = { window.SECURITY_CONF = {
// urls: 'http://15.72.10.193/report', // urls: 'http://15.72.10.193/report',
// picUrls: 'http://15.72.10.193/images/', // picUrls: 'http://15.72.10.193/images/',
// mapUrls: 'http://15.72.10.193/map' // mapUrls: 'http://15.72.10.193/map'
urls: 'https://store.keliuyun.com/report', urls: 'https://store.keliuyun.com/report',
picUrls: 'https://vion-retail.oss-cn-beijing.aliyuncs.com/', // urls: 'http://192.168.9.146:17070',
mapUrls: 'http://19610hs911.iask.in/static/pics/qingdaoMap/roadmap' picUrls: 'https://vion-retail.oss-cn-beijing.aliyuncs.com/',
} mapUrls: 'http://19610hs911.iask.in/static/pics/qingdaoMap/roadmap'
}
\ No newline at end of file \ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!