From b8dfc98b089e47fdb3e269941bbd2de3f7fb7de1 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 13 Sep 2021 17:14:57 +0800
Subject: [PATCH] Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/zhba_enterprises
---
src/views/trainExam/index.vue | 30
src/page/index/top/top-menu.vue | 108
src/views/exam/examPayment.vue | 394 +++++
src/views/resource/uploadPolicyRelease.vue | 3
src/api/trainingRegistration/trainingRegistration.js | 26
src/views/trainApply/index.vue | 136 +
src/api/examapi/performance.js | 37
src/views/trainingRegistration/index.vue | 228 ++
src/api/system/dept.js | 16
src/views/dispatch/dispatchChildoperable.vue | 21
src/views/resource/uploadNotice.vue | 3
public/papersTrain.html | 222 +++
src/store/getters.js | 1
src/views/zc/zc.vue | 295 +++
src/views/securityUnitChild/data.js | 678 +++++---
public/img/securityCertificate/QQ截图.png | 0
src/views/licenseApproval/branchOffice.vue | 23
src/lang/zh.js | 209 +-
src/views/securityGuard/securityGuardDetail.vue | 21
src/store/modules/user.js | 60
public/img/securityCertificate/bj2.jpeg | 0
src/page/index/tags.vue | 357 ++--
src/views/trainExam/singleperformance.vue | 23
src/views/securityUnitChild/businessLicense.vue | 27
src/views/companyApply/index.vue | 1
src/views/licenseApproval/securityGuard.vue | 23
src/views/licenseApproval/crossRegion.vue | 22
src/views/securityUnitChild/licence.vue | 27
src/config/website.js | 76 +
src/page/login/index.vue | 47
src/views/applyexam/index.vue | 200 ++
src/router/views/index.js | 29
src/views/securityGuard/securityGuard.vue | 54
src/views/trainExam/performance.vue | 51
src/views/system/user.vue | 1
src/views/applydetailed/index.vue | 1
src/api/exam/examPayment.js | 52
public/img/securityCertificate/bj.jpeg | 0
src/views/securityUnitChild/index.vue | 81
src/page/login/codelogin.vue | 331 +++
src/api/system/user.js | 3
src/views/trainingRegistration/data.js | 84
src/views/securityUnitChild/social.vue | 10
src/api/zc/zc.js | 57
src/views/traincompany/index.vue | 112
src/views/securityGuard/securityCertificate.vue | 161 ++
src/views/applyexam/papers.vue | 13
src/views/securityEquipment/equipments.vue | 38
src/api/examapi/applyexam.js | 9
src/views/licenseApproval/securityTraining.vue | 4
public/img/securityCertificate/123.png | 0
src/views/resource/uploadNotification.vue | 3
src/views/securityAnalysis/index.vue | 6
53 files changed, 3,455 insertions(+), 959 deletions(-)
diff --git a/public/img/securityCertificate/123.png b/public/img/securityCertificate/123.png
new file mode 100644
index 0000000..d793536
--- /dev/null
+++ b/public/img/securityCertificate/123.png
Binary files differ
diff --git "a/public/img/securityCertificate/QQ\346\210\252\345\233\276.png" "b/public/img/securityCertificate/QQ\346\210\252\345\233\276.png"
new file mode 100644
index 0000000..6435ead
--- /dev/null
+++ "b/public/img/securityCertificate/QQ\346\210\252\345\233\276.png"
Binary files differ
diff --git a/public/img/securityCertificate/bj.jpeg b/public/img/securityCertificate/bj.jpeg
new file mode 100644
index 0000000..0433980
--- /dev/null
+++ b/public/img/securityCertificate/bj.jpeg
Binary files differ
diff --git a/public/img/securityCertificate/bj2.jpeg b/public/img/securityCertificate/bj2.jpeg
new file mode 100644
index 0000000..112497f
--- /dev/null
+++ b/public/img/securityCertificate/bj2.jpeg
Binary files differ
diff --git a/public/papersTrain.html b/public/papersTrain.html
new file mode 100644
index 0000000..7b2095c
--- /dev/null
+++ b/public/papersTrain.html
@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <style>
+ #table {
+ color: #000;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-direction: column;
+ }
+ /* .print-header {
+ width: 100%;
+ text-align: center;
+ } */
+
+ .print {
+ position: relative;
+ left: 47%;
+ margin-top: 30px;
+ width: 7%;
+ height: 30px;
+ border: 0px;
+ border-radius: 6px;
+ color: #fff;
+ background-color: #1D5CE4;
+ letter-spacing: 4px;
+ }
+
+ .user-info-table {
+ margin-top: 30px;
+ width: 90%;
+ height: 60%;
+ border: 1px solid #000;
+ background-color: #fff;
+ }
+
+ .user-info-tr {
+ height: 50px;
+ }
+
+ .avatar {
+ width: 140px;
+ height: 190px;
+ }
+
+ .title {
+ margin-top: 20px;
+ }
+
+ .avatar {
+ width: 140px;
+ height: 190px;
+ }
+
+ .my-picture {
+ width: 150px;
+ /* height: 200px; */
+ }
+ </style>
+ <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
+ <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
+</head>
+
+
+<body>
+ <div>
+
+ <!--startprint-->
+ <div id="table">
+ <!-- <span class="title">准考证信息</span>
+ <table class="user-info-table" border="1px" align="center" cellspacing="0" cellpadding="10">
+ <tr class="user-info-tr">
+ <td width="150px">姓名</td>
+ <td width="150px"></td>
+ <td width="150px">身份证号</td>
+ <td width="150px"></td>
+ <td rowspan="4" align="center" width="150px" v-if="data.avatar == ''">
+ 照片
+ </td>
+ </tr>
+
+ <tr class="user-info-tr">
+ <td>准考证号</td>
+ <td></td>
+ <td width="150px">性别</td>
+ <td width="150px" v-if="data.sex == 1">男</td>
+ </tr>
+
+ <tr class="user-info-tr">
+ <td>考点名称</td>
+ <td colspan="3"></td>
+ </tr>
+
+ <tr class="user-info-tr">
+ <td>考点地址</td>
+ <td colspan="3"></td>
+ </tr>
+
+ <tr class="user-info-tr" style="height:5px">
+ <td colspan="5"></td>
+ </tr>
+
+ <tr class="user-info-tr">
+ <td>考试名称</td>
+ <td>考试类型</td>
+ <td>考试时间</td>
+ <td>考场号</td>
+ <td>座位号</td>
+ </tr>
+
+ <tr class="user-info-tr">
+ <td>{{data.examName}}</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+
+ </table>-->
+ </div>
+ <!--endprint-->
+
+
+ <div class="print-header">
+ <button onclick="preview(1)" class="print">打印</button>
+ </div>
+ </div>
+ <script>
+ var getData = function(name) {
+ var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
+ var r = window.location.search.substr(1).match(reg);
+ if (r != null) return unescape(r[2]);
+ return null;
+ };
+ var id = JSON.parse(getData("data")).id;
+ var examType = JSON.parse(getData("data")).examType;
+ // console.log(JSON.parse(getData("data")), 111);
+
+ axios.get('http://223.82.109.183:2080/api/apply/getApplyInfo?id=' + id + "&applyExamType=" + examType).then(function(res) {
+ // axios.get('http://localhost:81/apply/getApplyInfo?id=' + id + "&applyExamType=" + examType).then(function(res) {
+ var data = res.data.data;
+ var str = `<span class="title">${data.examName}</span>
+ <span class="title">准考证信息</span>
+ <table class="user-info-table" border="1px" align="center" cellspacing="0" cellpadding="10">
+ <tr class="user-info-tr">
+ <td width="150px">姓名</td>
+ <td width="150px">${data.realName}</td>
+ <td width="150px">身份证号</td>
+ <td width="150px">${data.idCardNo}</td>
+ <td rowspan="4" align="center" width="150px"">
+ <img class="my-picture" src="${data.myPicture}" />
+ </td>
+ </tr>
+
+ <tr class="user-info-tr">
+ <td>准考证号</td>
+ <td>${data.candidateNo}</td>
+ <td width="150px">性别</td>
+ <td width="150px">${data.sex==1?"男":(data.sex==2?"女":"")}</td>
+ </tr>
+
+ <tr class="user-info-tr">
+ <td>考点名称</td>
+ <td colspan="3">${data.company}</td>
+ </tr>
+
+ <tr class="user-info-tr">
+ <td>考点地址</td>
+ <td colspan="3">${data.address}</td>
+ </tr>
+
+ <tr class="user-info-tr" style="height:5px">
+ <td colspan="5"></td>
+ </tr>
+
+ <tr class="user-info-tr">
+ <td colspan="2">考试名称</td>
+ <td width="120px">考试类型</td>
+ <td width="180px" colspan="2">考试时间</td>
+ </tr>
+
+ <tr class="user-info-tr">
+ <td colspan="2">${data.examName}</td>
+ <td width="120px">培训考试</td>
+ <td width="180px" colspan="2">${data.stringTime}</td>
+ </tr>
+
+ </table>`
+
+ var dom = $('#table');
+ dom.empty();
+ dom.append(str);
+ })
+
+ function preview(oper) {
+ if (oper < 10) {
+ bdhtml = window.document.body.innerHTML;
+ // 打印开始的标志
+ sprnstr = "<!--startprint-->";
+ // 打印结束的标志
+ eprnstr = "<!--endprint-->";
+ // 从打印开始的位置截取到末尾
+ prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr));
+ // 从开始截取到打印结束的位置
+ prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));
+ // 替换html
+ window.document.body.innerHTML = prnhtml;
+ // 打印
+ window.print();
+ window.document.body.innerHTML = bdhtml;
+ } else {
+ window.print();
+ }
+ }
+ </script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/src/api/exam/examPayment.js b/src/api/exam/examPayment.js
new file mode 100644
index 0000000..3c41947
--- /dev/null
+++ b/src/api/exam/examPayment.js
@@ -0,0 +1,52 @@
+import request from '@/router/axios';
+
+
+export const getExamPaymentList = (current, size, params) => {
+ return request({
+ url: '/api/examPayment/page',
+ method: 'get',
+ params: {
+ ...params,
+ current,
+ size
+ }
+ })
+}
+
+
+export const remove = (ids) => {
+ return request({
+ url: '/api/examPayment/remove',
+ method: 'post',
+ params: {
+ ids,
+ }
+ })
+}
+
+export const add = (row) => {
+ return request({
+ url: '/api/examPayment/submit',
+ method: 'post',
+ data: row
+ })
+}
+
+export const update = (row) => {
+ return request({
+ url: '/api/examPayment/submit',
+ method: 'post',
+ data: row
+ })
+}
+
+
+export const getExamPayment = (id) => {
+ return request({
+ url: '/api/examPayment/detail',
+ method: 'get',
+ params: {
+ id,
+ }
+ })
+}
\ No newline at end of file
diff --git a/src/api/examapi/applyexam.js b/src/api/examapi/applyexam.js
index 7f6700f..5530ebd 100644
--- a/src/api/examapi/applyexam.js
+++ b/src/api/examapi/applyexam.js
@@ -60,16 +60,11 @@
})
}
-export const addExam = (ids, examTime, startTime, endTime) => {
+export const addExam = (params) => {
return request({
url: '/api/apply/batchExam',
method: 'post',
- params: {
- ids,
- examTime,
- startTime,
- endTime
- }
+ data: params
})
}
diff --git a/src/api/examapi/performance.js b/src/api/examapi/performance.js
index ba130f1..36582a6 100644
--- a/src/api/examapi/performance.js
+++ b/src/api/examapi/performance.js
@@ -1,21 +1,30 @@
import request from '@/router/axios';
export const getList = (current, size, params) => {
- return request({
- url: '/api/examScore/page',
- method: 'get',
- params: {
- ...params,
- current,
- size
- }
- })
+ return request({
+ url: '/api/examScore/page',
+ method: 'get',
+ params: {
+ ...params,
+ current,
+ size
+ }
+ })
}
export const update = (row) => {
- return request({
- url: '/api/examScore/updateExamScore',
- method: 'post',
- data: row
- })
+ return request({
+ url: '/api/examScore/updateExamScore',
+ method: 'post',
+ data: row
+ })
}
+
+
+export const updateAbsent = (row) => {
+ return request({
+ url: '/api/examScore/updateAbsent',
+ method: 'post',
+ data: row
+ })
+}
\ No newline at end of file
diff --git a/src/api/system/dept.js b/src/api/system/dept.js
index d6d3f47..2b8b1bf 100644
--- a/src/api/system/dept.js
+++ b/src/api/system/dept.js
@@ -88,4 +88,18 @@
parentId
}
})
-}
\ No newline at end of file
+}
+
+export const ss = () => {
+ return request({
+ url: '/api/blade-system/dept/selectInfo',
+ method: 'get',
+ })
+}
+
+export const rs = () => {
+ return request({
+ url: '/api/blade-system/role/selectRole',
+ method: 'get',
+ })
+}
diff --git a/src/api/system/user.js b/src/api/system/user.js
index 097f4ed..0c21d46 100644
--- a/src/api/system/user.js
+++ b/src/api/system/user.js
@@ -14,12 +14,13 @@
}
-export const getListByDeptId = (deptId) => {
+export const getListByDeptId = (deptId, status) => {
return request({
url: '/api/blade-user/page-security-units',
method: 'get',
params: {
deptId,
+ status
}
})
}
diff --git a/src/api/trainingRegistration/trainingRegistration.js b/src/api/trainingRegistration/trainingRegistration.js
index 9b93056..5bb75da 100644
--- a/src/api/trainingRegistration/trainingRegistration.js
+++ b/src/api/trainingRegistration/trainingRegistration.js
@@ -38,6 +38,23 @@
})
}
+
+export const cancelTrainAudit = (row) => {
+ return request({
+ url: '/api/trainingRegistration/cancelTrainAudit',
+ method: 'post',
+ data: row
+ })
+}
+
+export const auditSucess = (row) => {
+ return request({
+ url: '/api/trainingRegistration/auditSucess',
+ method: 'post',
+ data: row
+ })
+}
+
export const update = (row) => {
return request({
url: '/api/trainingRegistration/update',
@@ -57,15 +74,10 @@
}
-export const addExam = (ids, examTime, startTime, endTime) => {
+export const addExam = (params) => {
return request({
url: '/api/trainingRegistration/batchExam',
method: 'post',
- params: {
- ids,
- examTime,
- startTime,
- endTime
- }
+ data: params
})
}
\ No newline at end of file
diff --git a/src/api/zc/zc.js b/src/api/zc/zc.js
new file mode 100644
index 0000000..9201feb
--- /dev/null
+++ b/src/api/zc/zc.js
@@ -0,0 +1,57 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+ return request({
+ url: '/api/zc/page',
+ method: 'get',
+ params: {
+ ...params,
+ current,
+ size,
+ }
+ })
+}
+
+export const getDetail = (id) => {
+ return request({
+ url: '/api/zc/detail',
+ method: 'get',
+ params: {
+ id
+ }
+ })
+}
+
+export const remove = (ids) => {
+ return request({
+ url: '/api/zc/remove',
+ method: 'post',
+ params: {
+ ids,
+ }
+ })
+}
+
+export const add = (row) => {
+ return request({
+ url: '/api/zc/submit',
+ method: 'post',
+ data: row
+ })
+}
+
+export const update = (row) => {
+ return request({
+ url: '/api/zc/update',
+ method: 'post',
+ data: row
+ })
+}
+
+export const inster = (row) => {
+ return request({
+ url: '/api/zc/inster',
+ method: 'post',
+ data: row
+ })
+}
diff --git a/src/config/website.js b/src/config/website.js
index cd9256c..c4e0314 100644
--- a/src/config/website.js
+++ b/src/config/website.js
@@ -54,7 +54,7 @@
value: '/securityUnit/localCompany',
imgs: 'url(/img/gldw.jpg)'
}, {
- label: '统计分析',
+ label: '智能分析',
value: '/securityAnalysis/index',
imgs: 'url(/img/glgz.jpg)'
},]
@@ -82,6 +82,80 @@
value: '/expression/index',
imgs: 'url(/img/tongji.jpg)'
},]
+ },
+ {
+ userName: '未持证保安',
+ list: [
+ {
+ label: '保安员信息',
+ value: '/securityMan/index',
+ imgs: 'url(/img/yijianbaoj.jpg)'
+ }, {
+ label: '派遣记录',
+ value: '/dispatchChildoperableSee/index',
+ imgs: 'url(/img/fangyi.jpg)'
+ }, {
+ label: '从业记录',
+ value: '/job/index',
+ imgs: 'url(/img/anjian.jpg)'
+ }, {
+ label: '工作汇报',
+ value: '/workreport/workreport',
+ imgs: 'url(/img/tiwen.jpg)'
+ }, {
+ label: '表现记录',
+ value: '/expression/index',
+ imgs: 'url(/img/tongji.jpg)'
+ },]
+ },
+ {
+ userName: '保安公司管理员',
+ list: [
+ {
+ label: '智能分析',
+ value: '/securityAnalysis/index',
+ imgs: 'url(/img/glgz.jpg)'
+ }, {
+ label: '保安员管理',
+ value: '/securityGuard/index',
+ imgs: 'url(/img/glba.jpg)'
+ }, {
+ label: '单位信息',
+ value: '/securityUnitChild/index',
+ imgs: 'url(/img/gldw.jpg)'
+ }, {
+ label: '派遣记录',
+ value: '/dispatch/dispatchChildoperable',
+ imgs: 'url(/img/glgj.jpg)'
+ }, {
+ label: '通知公告',
+ value: '/desk/index',
+ imgs: 'url(/img/gltz.jpg)'
+ },]
+ }, {
+ userName: '公安管理员',
+ list: [
+ {
+ label: '智能分析',
+ value: '/securityAnalysis/index',
+ imgs: 'url(/img/glgz.jpg)'
+ }, {
+ label: '保安员管理',
+ value: '/securityGuard/index',
+ imgs: 'url(/img/glba.jpg)'
+ }, {
+ label: '公司管理',
+ value: '/securityUnit/index',
+ imgs: 'url(/img/gldw.jpg)'
+ }, {
+ label: '通知公告',
+ value: '/desk/index',
+ imgs: 'url(/img/gltz.jpg)'
+ }, {
+ label: '工作汇报',
+ value: '/workreport/workreply',
+ imgs: 'url(/img/glgj.jpg)'
+ }]
}
],
diff --git a/src/lang/zh.js b/src/lang/zh.js
index 0e17b06..2e4e965 100644
--- a/src/lang/zh.js
+++ b/src/lang/zh.js
@@ -1,108 +1,113 @@
export default {
- tip: '提示',
- title: '保安服务企业管理',
- logoutTip: '退出系统, 是否继续?',
- submitText: '确定',
- cancelText: '取消',
- search: '请输入搜索内容',
- menuTip: '没有发现菜单',
- wel: {
- info: '早安,Smallwei,Avuex一款超乎你想象的框架!',
- dept: '我是avue团队下的一个部门-哈皮部门-哈皮职位',
- team: '团队内排名',
- project: '项目访问',
- count: '项目数',
- data: {
- subtitle: '实时',
- column1: '分类统计',
- column2: '附件统计',
- column3: '文章统计',
- key1: '分',
- key2: '附',
- key3: '评',
- text1: '当前分类总记录数',
- text2: '当前上传的附件数',
- text3: '评论次数'
- },
- data2: {
- column1: '今日注册',
- column2: '今日登录',
- column3: '今日订阅',
- column4: '今日评论'
- },
- data3: {
- column1: '转化率(日同比 28%)',
- column2: '签到率(日同比 11%)',
- column3: '签到率(日同比 11%)'
- },
- data4: {
- column1: '错误日志',
- column2: '数据展示',
- column3: '权限管理',
- column4: '用户管理'
- },
- table: {
- rw: '工作任务',
- nr: '工作内容',
- sj: '工作时间'
- }
+ tip: '提示',
+ title: '保安服务企业管理',
+ logoutTip: '退出系统, 是否继续?',
+ submitText: '确定',
+ cancelText: '取消',
+ search: '请输入搜索内容',
+ menuTip: '没有发现菜单',
+ wel: {
+ info: '早安,Smallwei,Avuex一款超乎你想象的框架!',
+ dept: '我是avue团队下的一个部门-哈皮部门-哈皮职位',
+ team: '团队内排名',
+ project: '项目访问',
+ count: '项目数',
+ data: {
+ subtitle: '实时',
+ column1: '分类统计',
+ column2: '附件统计',
+ column3: '文章统计',
+ key1: '分',
+ key2: '附',
+ key3: '评',
+ text1: '当前分类总记录数',
+ text2: '当前上传的附件数',
+ text3: '评论次数'
},
- route: {
- info: '个人信息',
- website: 'bladex官网',
- avuexwebsite: 'avuex官网',
- dashboard: '首页',
- more: '更多',
- tags: '标签',
- store: '本地存储',
- api: '全局函数',
- logs: '日志监控',
- table: '表格',
- form: '表单',
- top: '返回顶部',
- data: '数据展示',
- permission: '权限',
- error: '异常页面',
- test: '测试页面'
+ data2: {
+ column1: '今日注册',
+ column2: '今日登录',
+ column3: '今日订阅',
+ column4: '今日评论'
},
- login: {
- title: '登录 ',
- info: '保安服务企业管理',
- tenantId: '请输入保安单位ID',
- username: '请输入账号',
- password: '请输入密码',
- wechat: '微信',
- qq: 'QQ',
- github: 'github',
- gitee: '码云',
- phone: '请输入手机号',
- code: '请输入验证码',
- submit: '登录',
- userLogin: '账号密码登录',
- phoneLogin: '手机号登录',
- thirdLogin: '第三方系统登录',
- msgText: '发送验证码',
- msgSuccess: '秒后重发',
+ data3: {
+ column1: '转化率(日同比 28%)',
+ column2: '签到率(日同比 11%)',
+ column3: '签到率(日同比 11%)'
},
- navbar: {
- logOut: '退出登录',
- userinfo: '个人信息',
- dashboard: '首页',
- lock: '锁屏',
- bug: '没有错误日志',
- bugs: '条错误日志',
- screenfullF: '退出全屏',
- screenfull: '全屏',
- language: '中英文',
- notice: '消息通知',
- theme: '主题',
- color: '换色'
+ data4: {
+ column1: '错误日志',
+ column2: '数据展示',
+ column3: '权限管理',
+ column4: '用户管理'
},
- tagsView: {
- search: '搜索',
- menu: '更多',
- clearCache: '清除缓存',
- closeOthers: '关闭其它',
- closeAll: '关闭所有'
+ table: {
+ rw: '工作任务',
+ nr: '工作内容',
+ sj: '工作时间'
}
-}
\ No newline at end of file
+ },
+ route: {
+ info: '个人信息',
+ website: 'bladex官网',
+ avuexwebsite: 'avuex官网',
+ dashboard: '首页',
+ more: '更多',
+ tags: '标签',
+ store: '本地存储',
+ api: '全局函数',
+ logs: '日志监控',
+ table: '表格',
+ form: '表单',
+ top: '返回顶部',
+ data: '数据展示',
+ permission: '权限',
+ error: '异常页面',
+ test: '测试页面'
+ },
+ login: {
+ title: '登录 ',
+ info: '保安服务企业管理',
+ tenantId: '请输入保安单位ID',
+ username: '请输入账号',
+ password: '请输入密码',
+ password2: '请再次输入密码',
+ name: '请输入姓名',
+ wechat: '微信',
+ cardid: '请输入身份证号',
+ qq: 'QQ',
+ zc: '注册',
+ gb: '关闭',
+ github: 'github',
+ gitee: '码云',
+ phone: '请输入手机号',
+ code: '请输入验证码',
+ submit: '登录',
+ userLogin: '账号密码登录',
+ phoneLogin: '账号注册',
+ thirdLogin: '第三方系统登录',
+ msgText: '发送验证码',
+ msgSuccess: '秒后重发',
+ },
+ navbar: {
+ logOut: '退出登录',
+ userinfo: '个人信息',
+ dashboard: '首页',
+ lock: '锁屏',
+ bug: '没有错误日志',
+ bugs: '条错误日志',
+ screenfullF: '退出全屏',
+ screenfull: '全屏',
+ language: '中英文',
+ notice: '消息通知',
+ theme: '主题',
+ color: '换色'
+ },
+ tagsView: {
+ search: '搜索',
+ menu: '更多',
+ clearCache: '清除缓存',
+ closeOthers: '关闭其它',
+ closeAll: '关闭所有'
+ }
+}
diff --git a/src/page/index/tags.vue b/src/page/index/tags.vue
index ab14485..86b13a5 100644
--- a/src/page/index/tags.vue
+++ b/src/page/index/tags.vue
@@ -1,186 +1,231 @@
<template>
- <div class="avue-tags"
- v-if="showTag">
+ <div class="avue-tags" v-if="showTag">
<!-- tag盒子 -->
- <div v-if="contextmenuFlag"
- class="avue-tags__contentmenu"
- :style="{left:contentmenuX+'px',top:contentmenuY+'px'}">
- <div class="item"
- @click="clearCacheTags">{{$t('tagsView.clearCache')}}
+ <div
+ v-if="contextmenuFlag"
+ class="avue-tags__contentmenu"
+ :style="{ left: contentmenuX + 'px', top: contentmenuY + 'px' }"
+ >
+ <div class="item" @click="clearCacheTags">
+ {{ $t("tagsView.clearCache") }}
</div>
- <div class="item"
- @click="closeOthersTags">{{$t('tagsView.closeOthers')}}
+ <div class="item" @click="closeOthersTags">
+ {{ $t("tagsView.closeOthers") }}
</div>
- <div class="item"
- @click="closeAllTags">{{$t('tagsView.closeAll')}}
+ <div class="item" @click="closeAllTags">
+ {{ $t("tagsView.closeAll") }}
</div>
</div>
- <div class="avue-tags__box"
- :class="{'avue-tags__box--close':!website.isFirstPage}">
- <el-tabs v-model="active"
- type="card"
- @contextmenu.native="handleContextmenu"
- :closable="tagLen!==1"
- @tab-click="openTag"
- @edit="menuTag">
- <el-tab-pane :key="item.value"
- v-for="item in tagList"
- :label="generateTitle(item)"
- :name="item.value">
+ <div
+ class="avue-tags__box"
+ :class="{ 'avue-tags__box--close': !website.isFirstPage }"
+ >
+ <el-tabs
+ v-model="active"
+ type="card"
+ @contextmenu.native="handleContextmenu"
+ :closable="tagLen !== 1"
+ @tab-click="openTag"
+ @edit="menuTag"
+ >
+ <el-tab-pane
+ :key="item.value"
+ v-for="item in tagList"
+ :label="generateTitle(item)"
+ :name="item.value"
+ >
</el-tab-pane>
-
</el-tabs>
<el-dropdown class="avue-tags__menu">
- <el-button type="primary"
- size="mini">
- {{$t('tagsView.menu')}}
+ <el-button type="primary" size="mini">
+ {{ $t("tagsView.menu") }}
<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
- <el-dropdown-item @click.native="$parent.isSearch=true">{{$t('tagsView.search')}}</el-dropdown-item>
- <el-dropdown-item @click.native="closeOthersTags">{{$t('tagsView.closeOthers')}}</el-dropdown-item>
- <el-dropdown-item @click.native="closeAllTags">{{$t('tagsView.closeAll')}}</el-dropdown-item>
- <el-dropdown-item @click.native="clearCacheTags">{{$t('tagsView.clearCache')}}</el-dropdown-item>
+ <el-dropdown-item @click.native="$parent.isSearch = true">{{
+ $t("tagsView.search")
+ }}</el-dropdown-item>
+ <el-dropdown-item @click.native="closeOthersTags">{{
+ $t("tagsView.closeOthers")
+ }}</el-dropdown-item>
+ <el-dropdown-item @click.native="closeAllTags">{{
+ $t("tagsView.closeAll")
+ }}</el-dropdown-item>
+ <el-dropdown-item @click.native="clearCacheTags">{{
+ $t("tagsView.clearCache")
+ }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
-
</div>
</template>
<script>
- import {mapGetters, mapState} from "vuex";
- import {clearCache} from "@/api/user";
+import { mapGetters, mapState } from "vuex";
+import { clearCache } from "@/api/user";
+import { getTopMenu, getRoutes } from "@/api/system/menu";
- export default {
- name: "tags",
- data() {
- return {
- active: "",
- contentmenuX: "",
- contentmenuY: "",
- contextmenuFlag: false
- };
- },
- created() {
- },
- mounted() {
+export default {
+ name: "tags",
+ data() {
+ return {
+ active: "",
+ contentmenuX: "",
+ contentmenuY: "",
+ contextmenuFlag: false,
+ };
+ },
+ created() {},
+ mounted() {
+ this.setActive();
+ this.tagList.forEach((item, index) => {
+ if (item.label == "首页" && this.userInfo.role_name == "培训公司管理员") {
+ this.tagList.splice(index, 1);
+ this.$store.commit("set_hideHome", true);
+ // getRoutes().then((res) => {
+ // const data = res.data.data;
+ // var child = {},
+ // findchild = (data) => {
+ // if (data.children != undefined) {
+ // findchild(data.children[0]);
+ // } else {
+ // child = data;
+ // }
+ // };
+ // findchild(data[0]);
+ // this.$router.push({ path: child.path });
+ // });
+ var d = this.$router.options.routes,
+ path = "";
+ for (var k in d) {
+ if (d[k].peixun == true) {
+ // console.log(d[k]);
+ path = d[k].path;
+ }
+ }
+ this.$router.push({ path: path });
+ } else {
+ this.$store.commit("set_hideHome", false);
+ }
+ });
+ },
+ watch: {
+ tag() {
this.setActive();
},
- watch: {
- tag() {
- this.setActive();
- },
- contextmenuFlag() {
- window.addEventListener("mousedown", this.watchContextmenu);
+ contextmenuFlag() {
+ window.addEventListener("mousedown", this.watchContextmenu);
+ },
+ },
+ computed: {
+ ...mapGetters(["tagWel", "tagList", "tag", "website", "userInfo", "menu"]),
+ ...mapState({
+ showTag: (state) => state.common.showTag,
+ }),
+ tagLen() {
+ return this.tagList.length || 0;
+ },
+ },
+ methods: {
+ generateTitle(item) {
+ return this.$router.$avueRouter.generateTitle(
+ item.label,
+ (item.meta || {}).i18n
+ );
+ },
+ watchContextmenu(event) {
+ if (!this.$el.contains(event.target) || event.button !== 0) {
+ this.contextmenuFlag = false;
+ }
+ window.removeEventListener("mousedown", this.watchContextmenu);
+ },
+ handleContextmenu(event) {
+ let target = event.target;
+ // 解决 https://github.com/d2-projects/d2-admin/issues/54
+ let flag = false;
+ if (target.className.indexOf("el-tabs__item") > -1) flag = true;
+ else if (target.parentNode.className.indexOf("el-tabs__item") > -1) {
+ target = target.parentNode;
+ flag = true;
+ }
+ if (flag) {
+ event.preventDefault();
+ event.stopPropagation();
+ this.contentmenuX = event.clientX;
+ this.contentmenuY = event.clientY;
+ this.tagName = target.getAttribute("aria-controls").slice(5);
+ this.contextmenuFlag = true;
}
},
- computed: {
- ...mapGetters(["tagWel", "tagList", "tag", "website"]),
- ...mapState({
- showTag: state => state.common.showTag
- }),
- tagLen() {
- return this.tagList.length || 0;
+ //激活当前选项
+ setActive() {
+ this.active = this.tag.value;
+ },
+ menuTag(value, action) {
+ if (action === "remove") {
+ let { tag, key } = this.findTag(value);
+ this.$store.commit("DEL_TAG", tag);
+ if (tag.value === this.tag.value) {
+ tag = this.tagList[key === 0 ? key : key - 1]; //如果关闭本标签让前推一个
+ this.openTag(tag);
+ }
}
},
- methods: {
- generateTitle(item) {
- return this.$router.$avueRouter.generateTitle(
- item.label,
- (item.meta || {}).i18n
- );
- },
- watchContextmenu(event) {
- if (!this.$el.contains(event.target) || event.button !== 0) {
- this.contextmenuFlag = false;
- }
- window.removeEventListener("mousedown", this.watchContextmenu);
- },
- handleContextmenu(event) {
- let target = event.target;
- // 解决 https://github.com/d2-projects/d2-admin/issues/54
- let flag = false;
- if (target.className.indexOf("el-tabs__item") > -1) flag = true;
- else if (target.parentNode.className.indexOf("el-tabs__item") > -1) {
- target = target.parentNode;
- flag = true;
- }
- if (flag) {
- event.preventDefault();
- event.stopPropagation();
- this.contentmenuX = event.clientX;
- this.contentmenuY = event.clientY;
- this.tagName = target.getAttribute("aria-controls").slice(5);
- this.contextmenuFlag = true;
- }
- },
- //激活当前选项
- setActive() {
- this.active = this.tag.value;
- },
- menuTag(value, action) {
- if (action === "remove") {
- let {tag, key} = this.findTag(value);
- this.$store.commit("DEL_TAG", tag);
- if (tag.value === this.tag.value) {
- tag = this.tagList[key === 0 ? key : key - 1]; //如果关闭本标签让前推一个
- this.openTag(tag);
- }
- }
- },
- openTag(item) {
- let tag;
- if (item.name) {
- tag = this.findTag(item.name).tag;
- } else {
- tag = item;
- }
- this.$router.push({
- path: this.$router.$avueRouter.getPath({
+ openTag(item) {
+ let tag;
+ if (item.name) {
+ tag = this.findTag(item.name).tag;
+ } else {
+ tag = item;
+ }
+ this.$router.push({
+ path: this.$router.$avueRouter.getPath(
+ {
name: tag.label,
- src: tag.value
- }, tag.meta),
- query: tag.query
+ src: tag.value,
+ },
+ tag.meta
+ ),
+ query: tag.query,
+ });
+ },
+ closeOthersTags() {
+ this.contextmenuFlag = false;
+ this.$store.commit("DEL_TAG_OTHER");
+ },
+ findTag(value) {
+ let tag, key;
+ this.tagList.map((item, index) => {
+ if (item.value === value) {
+ tag = item;
+ key = index;
+ }
+ });
+ return { tag: tag, key: key };
+ },
+ closeAllTags() {
+ this.contextmenuFlag = false;
+ this.$store.commit("DEL_ALL_TAG");
+ this.$router.push({
+ path: this.$router.$avueRouter.getPath({
+ src: this.tagWel.value,
+ }),
+ query: this.tagWel.query,
+ });
+ },
+ clearCacheTags() {
+ this.$confirm("是否需要清除缓存?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning",
+ }).then(() => {
+ clearCache().then(() => {
+ this.contextmenuFlag = false;
+ this.$message.success("清除完毕");
});
- },
- closeOthersTags() {
- this.contextmenuFlag = false;
- this.$store.commit("DEL_TAG_OTHER");
- },
- findTag(value) {
- let tag, key;
- this.tagList.map((item, index) => {
- if (item.value === value) {
- tag = item;
- key = index;
- }
- });
- return {tag: tag, key: key};
- },
- closeAllTags() {
- this.contextmenuFlag = false;
- this.$store.commit("DEL_ALL_TAG");
- this.$router.push({
- path: this.$router.$avueRouter.getPath({
- src: this.tagWel.value
- }),
- query: this.tagWel.query
- });
- },
- clearCacheTags() {
- this.$confirm("是否需要清除缓存?", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning"
- }).then(() => {
- clearCache().then(() => {
- this.contextmenuFlag = false;
- this.$message.success('清除完毕');
- })
- });
- }
- }
- };
+ });
+ },
+ },
+};
</script>
diff --git a/src/page/index/top/top-menu.vue b/src/page/index/top/top-menu.vue
index 3add0bf..09a2c22 100644
--- a/src/page/index/top/top-menu.vue
+++ b/src/page/index/top/top-menu.vue
@@ -1,19 +1,26 @@
<template>
<div class="top-menu">
- <el-menu :default-active="activeIndex"
- mode="horizontal"
- text-color="#333">
- <el-menu-item index="0" @click.native="openHome(itemHome)" key="0">
+ <el-menu :default-active="activeIndex" mode="horizontal" text-color="#333">
+ <el-menu-item
+ index="0"
+ @click.native="openHome(itemHome)"
+ key="0"
+ v-if="!hideHome"
+ >
<template slot="title">
<i :class="itemHome.source"></i>
- <span>{{generateTitle(itemHome)}}</span>
+ <span>{{ generateTitle(itemHome) }}</span>
</template>
</el-menu-item>
- <template v-for="(item,index) in items">
- <el-menu-item :index="item.id+''" @click.native="openMenu(item)" :key="index">
+ <template v-for="(item, index) in items">
+ <el-menu-item
+ :index="item.id + ''"
+ @click.native="openMenu(item)"
+ :key="index"
+ >
<template slot="title">
- <i :class="item.source" style="padding-right: 5px;"></i>
- <span>{{generateTitle(item)}}</span>
+ <i :class="item.source" style="padding-right: 5px"></i>
+ <span>{{ generateTitle(item) }}</span>
</template>
</el-menu-item>
</template>
@@ -22,48 +29,51 @@
</template>
<script>
- import {mapGetters} from "vuex";
+import { mapGetters } from "vuex";
- export default {
- name: "top-menu",
- data() {
- return {
- itemHome: {
- name: '首页',
- source: 'el-icon-menu',
- },
- activeIndex: "0",
- items: [],
- };
+export default {
+ name: "top-menu",
+ data() {
+ return {
+ itemHome: {
+ name: "首页",
+ source: "el-icon-menu",
+ },
+ activeIndex: "0",
+ items: [],
+ };
+ },
+ inject: ["index"],
+ created() {
+ this.getMenu();
+ },
+ computed: {
+ ...mapGetters(["tagCurrent", "menu", "hideHome"]),
+ },
+ methods: {
+ openHome(itemHome) {
+ this.index.openMenu(itemHome);
+ this.$router.push({
+ path: this.$router.$avueRouter.getPath(
+ { name: itemHome.name, src: "" },
+ {}
+ ),
+ });
},
- inject: ["index"],
- created() {
- this.getMenu();
+ openMenu(item) {
+ this.index.openMenu(item);
},
- computed: {
- ...mapGetters(["tagCurrent", "menu"])
+ getMenu() {
+ this.$store.dispatch("GetTopMenu").then((res) => {
+ this.items = res;
+ });
},
- methods: {
- openHome(itemHome) {
- this.index.openMenu(itemHome);
- this.$router.push({
- path: this.$router.$avueRouter.getPath({name: itemHome.name, src: ''}, {})
- });
- },
- openMenu(item) {
- this.index.openMenu(item)
- },
- getMenu() {
- this.$store.dispatch("GetTopMenu").then(res => {
- this.items = res;
- });
- },
- generateTitle(item) {
- return this.$router.$avueRouter.generateTitle(
- item.name,
- (item.meta || {}).i18n
- );
- },
- }
- };
+ generateTitle(item) {
+ return this.$router.$avueRouter.generateTitle(
+ item.name,
+ (item.meta || {}).i18n
+ );
+ },
+ },
+};
</script>
diff --git a/src/page/login/codelogin.vue b/src/page/login/codelogin.vue
index 79022c3..d359b6d 100644
--- a/src/page/login/codelogin.vue
+++ b/src/page/login/codelogin.vue
@@ -1,61 +1,126 @@
<template>
- <el-form class="login-form"
- status-icon
- :rules="loginRules"
- ref="loginForm"
- :model="loginForm"
- label-width="0">
- <el-form-item prop="phone">
- <el-input size="small"
- @keyup.enter.native="handleLogin"
- v-model="loginForm.phone"
- auto-complete="off"
- :placeholder="$t('login.phone')">
- <i slot="prefix"
- class="icon-shouji"/>
+ <el-form
+ class="login-form"
+ status-icon
+ :rules="loginRules"
+ ref="loginForm"
+ :model="loginForm"
+ label-width="0"
+ >
+ <el-form-item prop="username">
+ <el-input
+ size="small"
+ @keyup.enter.native="handleLogin"
+ v-model="loginForm.username"
+ auto-complete="off"
+ :placeholder="$t('login.username')"
+ >
+ <i slot="prefix" class="icon-yonghu" />
</el-input>
</el-form-item>
- <el-form-item prop="code">
- <el-input size="small"
- @keyup.enter.native="handleLogin"
- v-model="loginForm.code"
- auto-complete="off"
- :placeholder="$t('login.code')">
- <i slot="prefix"
- class="icon-yanzhengma"
- style="margin-top:6px;"/>
- <template slot="append">
- <span @click="handleSend"
- class="msg-text"
- :class="[{display:msgKey}]">{{msgText}}</span>
- </template>
+ <el-form-item prop="password">
+ <el-input
+ size="small"
+ @keyup.enter.native="handleLogin"
+ v-model="loginForm.password"
+ auto-complete="off"
+ show-password
+ :placeholder="$t('login.password')"
+ >
+ <i slot="prefix" class="icon-mima" />
</el-input>
</el-form-item>
- <el-form-item>
- <el-button size="small"
- type="primary"
- @click.native.prevent="handleLogin"
- class="login-submit">{{$t('login.submit')}}</el-button>
+ <el-form-item prop="password2">
+ <el-input
+ size="small"
+ @keyup.enter.native="handleLogin"
+ v-model="loginForm.password2"
+ auto-complete="off"
+ show-password
+ :placeholder="$t('login.password2')"
+ >
+ <i slot="prefix" class="icon-mima" />
+ </el-input>
+ </el-form-item>
+ <el-form-item prop="sname">
+ <el-input
+ size="small"
+ @keyup.enter.native="handleLogin"
+ v-model="loginForm.sname"
+ auto-complete="off"
+ :placeholder="$t('login.name')"
+ >
+ <i slot="prefix" class="icon-yonghu" />
+ </el-input>
+ </el-form-item>
+ <el-form-item prop="cardid">
+ <el-input
+ size="small"
+ v-model="loginForm.cardid"
+ auto-complete="off"
+ :placeholder="$t('login.cardid')"
+ >
+ <i slot="prefix" class="icon-shouji" />
+ </el-input>
+ </el-form-item>
+ <avue-input-tree
+ style="width: 580px !important"
+ :defaultExpandAll="loginForm.defaultFlag"
+ v-model="loginForm.deptid"
+ placeholder="请选择部门"
+ type="tree"
+ :dic="dic"
+ ></avue-input-tree>
+ <el-form-item class="z-login-submit-prv">
+ <el-button
+ size="small"
+ type="primary"
+ @click.native.prevent="handleLogin"
+ class="z-login-submit"
+ >{{ $t("login.zc") }}
+ </el-button>
+ <el-button size="small" @click.native.prevent="gbs" class="z-login-submit"
+ >{{ $t("login.gb") }}
+ </el-button>
</el-form-item>
</el-form>
</template>
<script>
import { isvalidatemobile } from "@/util/validate";
+import { inster } from "@/api/zc/zc";
+import { ss, rs } from "@/api/system/dept";
import { mapGetters } from "vuex";
+
export default {
name: "codelogin",
data() {
- const validatePhone = (rule, value, callback) => {
- if (isvalidatemobile(value)[0]) {
- callback(new Error(isvalidatemobile(value)[1]));
+ const validatePass = (rule, value, callback) => {
+ if (value === "") {
+ callback(new Error("请输入密码"));
} else {
callback();
}
};
- const validateCode = (rule, value, callback) => {
- if (value.length !== 4) {
- callback(new Error("请输入4位数的验证码"));
+ const validatePass2 = (rule, value, callback) => {
+ if (value === "") {
+ callback(new Error("请再次输入密码"));
+ } else if (value !== this.loginForm.password) {
+ callback(new Error("两次输入密码不一致!"));
+ } else {
+ callback();
+ }
+ };
+ const validateIdNo = (rule, value, callback) => {
+ let id18 =
+ /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
+ let id15 =
+ /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$/;
+ if (
+ !id18.test(this.loginForm.cardid) &&
+ !id15.test(this.loginForm.cardid)
+ ) {
+ callback(new Error("请输入正确的身份证号格式"));
} else {
callback();
}
@@ -63,34 +128,154 @@
return {
msgText: "",
msgTime: "",
+ dic: [],
+ dicr: [],
msgKey: false,
loginForm: {
- phone: "",
- code: ""
+ cardid: "",
+ username: "",
+ sname: "",
+ password: "",
+ deptid: "",
+ roleid: "",
+ password2: "",
},
+ value: "",
+ options: [],
loginRules: {
- phone: [{ required: true, trigger: "blur", validator: validatePhone }],
- code: [{ required: true, trigger: "blur", validator: validateCode }]
- }
+ cardid: [{ required: true, trigger: "blur", validator: validateIdNo }],
+ password: [
+ { required: true, validator: validatePass, trigger: "blur" },
+ ],
+ password2: [
+ { required: true, validator: validatePass2, trigger: "blur" },
+ ],
+ username: [
+ { required: true, message: "请输入用户名", trigger: "blur" },
+ ],
+ },
+ passwordType: "password",
+ passwordTypes: "password2",
};
},
created() {
this.msgText = this.config.MSGINIT;
this.msgTime = this.config.MSGTIME;
+ // defaultFlag
},
- mounted() {},
+ mounted() {
+ var that = this;
+ ss().then((res) => {
+ console.log(that.ergodicData(res.data.data), 898989);
+ that.dic = that.ergodicData(res.data.data);
+ });
+ },
computed: {
...mapGetters(["tagWel"]),
config() {
return {
MSGINIT: this.$t("login.msgText"),
MSGSCUCCESS: this.$t("login.msgSuccess"),
- MSGTIME: 60
+ MSGTIME: 60,
};
- }
+ },
},
props: [],
methods: {
+ ergodicData(val) {
+ var arr = [];
+
+ val.forEach((item, index) => {
+ arr.push({
+ label: item.title,
+ value: item.value,
+ id: item.id,
+ parent_id: item.parent_id,
+ });
+
+ if (item.hasChildren == true) {
+ var arrOne = [];
+
+ if (item.children && item.children.length > 0) {
+ item.children.forEach((childItem, childIndex) => {
+ arrOne.push({
+ label: childItem.title,
+ value: childItem.value,
+ id: childItem.id,
+ parent_id: childItem.parent_id,
+ });
+
+ if (childItem.hasChildren == true) {
+ var arrTwo = [];
+
+ if (childItem.children && childItem.children.length > 0) {
+ childItem.children.forEach((findItem, findIndex) => {
+ arrTwo.push({
+ label: findItem.title,
+ value: findItem.value,
+ id: findItem.id,
+ parent_id: findItem.parent_id,
+ });
+ });
+ }
+
+ arrOne[childIndex].children = arrTwo;
+ }
+ });
+ }
+
+ arr[index].children = arrOne;
+ }
+ });
+
+ return arr;
+ },
+
+ clearValidate(formName) {
+ this.$refs[formName].clearValidate();
+ },
+ async allmedia() {
+ ss().then((res) => {
+ console.log(res, 1323);
+ res.data.data.forEach((element) => {
+ this.options.push({
+ deptname: element.dept_name,
+ deptid: element.deptid,
+ });
+ });
+ });
+ },
+ refreshCode(row) {
+ inster(row).then((res) => {
+ this.loginForm.cardid = "";
+ this.loginForm.username = "";
+ this.loginForm.sname = "";
+ this.loginForm.password = "";
+ this.loginForm.password2 = "";
+ this.loginForm.deptid = "";
+ this.loginForm.defaultFlag = false;
+ this.$notify({
+ title: "注册成功,待审核",
+ type: "warning",
+ });
+ });
+ var z = document.querySelector(".z");
+ z.style.display = "none";
+ this.clearValidate("loginForm");
+ this.clearValidate("loginForm");
+ },
+ gb() {
+ this.loginForm.cardid = "";
+ this.loginForm.username = "";
+ this.loginForm.sname = "";
+ this.loginForm.password = "";
+ this.loginForm.password2 = "";
+ this.loginForm.deptid = "";
+ this.loginForm.defaultFlag = false;
+ var zs = document.querySelector(".z");
+ zs.style.display = "none";
+ this.clearValidate("loginForm");
+ },
handleSend() {
if (this.msgKey) return;
this.msgText = this.msgTime + this.config.MSGSCUCCESS;
@@ -106,16 +291,29 @@
}
}, 1000);
},
+ showPassword() {
+ this.passwordType === ""
+ ? (this.passwordType = "password")
+ : (this.passwordType = "");
+ },
+ showPasswords() {
+ this.passwordType === ""
+ ? (this.passwordType = "password2")
+ : (this.passwordType = "");
+ },
handleLogin() {
- this.$refs.loginForm.validate(valid => {
+ this.$refs.loginForm.validate((valid) => {
if (valid) {
- this.$store.dispatch("LoginByPhone", this.loginForm).then(() => {
- this.$router.push({ path: this.tagWel.value });
- });
+ this.refreshCode(this.loginForm);
+ this.message("dahsiofhiusa");
+ return Promise.reject(new Error("注册成功,待审核"));
}
});
- }
- }
+ },
+ gbs() {
+ this.gb();
+ },
+ },
};
</script>
@@ -127,7 +325,34 @@
text-align: center;
cursor: pointer;
}
+
.msg-text.display {
color: #ccc;
}
+
+.z-login-submit-prv {
+ margin-top: 25px;
+ padding: 0 10%;
+ box-sizing: border-box;
+}
+
+.z-login-submit-prv > div {
+ width: 80%;
+ display: flex;
+}
+
+.z-login-submit {
+ flex: 1;
+ height: 45px;
+ border: 1px solid #409eff;
+ background: none;
+ font-size: 18px;
+ letter-spacing: 2px;
+ font-weight: 300;
+ color: #409eff;
+ cursor: pointer;
+ font-family: "neo";
+ -webkit-transition: 0.25s;
+ transition: 0.25s;
+}
</style>
diff --git a/src/page/login/index.vue b/src/page/login/index.vue
index a1aa03f..9c90ce4 100644
--- a/src/page/login/index.vue
+++ b/src/page/login/index.vue
@@ -15,19 +15,23 @@
<div class="login-main">
<h4 class="login-title">
{{ $t('login.title') }}
-<!-- <top-lang></top-lang>-->
+ <!-- <top-lang></top-lang>-->
</h4>
- <userLogin v-if="activeName==='user'"></userLogin>
- <codeLogin v-else-if="activeName==='code'"></codeLogin>
- <thirdLogin v-else-if="activeName==='third'"></thirdLogin>
+ <h4 class="login-title-child">IoT security cloud service platform</h4>
+ <userLogin></userLogin>
+ <!-- <codeLogin v-else-if="activeName==='code'"></codeLogin>-->
+ <!-- <thirdLogin v-else-if="activeName==='third'"></thirdLogin>-->
<div class="login-menu">
- <a href="#" @click.stop="activeName='user'">{{ $t('login.userLogin') }}</a>
- <!--<a href="#" @click.stop="activeName='code'">{{ $t('login.phoneLogin') }}</a>-->
-<!-- <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a>-->
+ <!-- <a href="#" @click.stop="activeName='user'">{{ $t('login.userLogin') }}</a>-->
+ <a href="#" @click.stop="zShow">{{ $t('login.phoneLogin') }}</a>
+ <!-- <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a>-->
</div>
</div>
</div>
+ </div>
+ <div class="z" v-show="activeName == 'code'">
+ <codeLogin></codeLogin>
</div>
</div>
</template>
@@ -109,11 +113,40 @@
loading.close();
});
}
+ },
+ zShow() {
+ document.querySelector('.z').style.display = 'block';
}
}
};
</script>
<style lang="scss">
+.z {
+ position: fixed;
+ margin: auto;
+ padding: 10px;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 80px;
+ width: 600px;
+ height: 500px;
+ background-color: #fff;
+ box-sizing: border-box;
+ box-shadow: 6px 6px 5px #909090;
+}
+
+.company-jx {
+ position: fixed;
+ margin: auto;
+ top: auto;
+ left: 0px;
+ right: 0px;
+ bottom: 120px;
+ text-align: center;
+ color: #fff;
+ font-size: 15px;
+}
@import "@/styles/login.scss";
</style>
diff --git a/src/router/views/index.js b/src/router/views/index.js
index aea0396..d9cfe2e 100644
--- a/src/router/views/index.js
+++ b/src/router/views/index.js
@@ -687,20 +687,21 @@
// import( /* webpackChunkName: "views" */ '@/views/securityEquipment/gun')
// }]
// },
-// {
-// path: '/trainingRegistration',
-// component: Layout,
-// redirect: '/trainingRegistration/index',
-// children: [{
-// path: 'index',
-// name: '保安培训报名',
-// meta: {
-// i18n: 'dict'
-// },
-// component: () =>
-// import ( /* webpackChunkName: "views" */ '@/views/trainingRegistration/index')
-// }]
-// },
+{
+ path: '/trainingRegistration',
+ component: Layout,
+ peixun: true,
+ redirect: '/trainingRegistration/index',
+ children: [{
+ path: 'index',
+ name: '培训报名列表',
+ meta: {
+ i18n: 'dict'
+ },
+ component: () =>
+ import( /* webpackChunkName: "views" */ '@/views/trainingRegistration/index')
+ }]
+},
// {
// path: '/trainExam',
// component: Layout,
diff --git a/src/store/getters.js b/src/store/getters.js
index e6fcd6f..2afabf9 100644
--- a/src/store/getters.js
+++ b/src/store/getters.js
@@ -19,6 +19,7 @@
roles: state => state.user.roles,
permission: state => state.user.permission,
menu: state => state.user.menu,
+ hideHome: state => state.user.hideHome,
menuId: state => state.user.menuId,
menuAll: state => state.user.menuAll,
logsList: state => state.logs.logsList,
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index f8fe52e..545d41a 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -1,11 +1,11 @@
-import {setToken, setRefreshToken, removeToken, removeRefreshToken} from '@/util/auth'
-import {Message} from 'element-ui'
-import {setStore, getStore} from '@/util/store'
-import {isURL, validatenull} from '@/util/validate'
-import {deepClone} from '@/util/util'
+import { setToken, setRefreshToken, removeToken, removeRefreshToken } from '@/util/auth'
+import { Message } from 'element-ui'
+import { setStore, getStore } from '@/util/store'
+import { isURL, validatenull } from '@/util/validate'
+import { deepClone } from '@/util/util'
import website from '@/config/website'
-import {loginByUsername, loginBySocial, getUserInfo, logout, refreshToken, getButtons} from '@/api/user'
-import {getTopMenu, getRoutes} from '@/api/system/menu'
+import { loginByUsername, loginBySocial, getUserInfo, logout, refreshToken, getButtons } from '@/api/user'
+import { getTopMenu, getRoutes } from '@/api/system/menu'
import md5 from 'js-md5'
@@ -34,19 +34,20 @@
const user = {
state: {
- tenantId: getStore({name: 'tenantId'}) || '',
- userInfo: getStore({name: 'userInfo'}) || [],
- permission: getStore({name: 'permission'}) || {},
+ tenantId: getStore({ name: 'tenantId' }) || '',
+ userInfo: getStore({ name: 'userInfo' }) || [],
+ permission: getStore({ name: 'permission' }) || {},
roles: [],
menuId: {},
- menu: getStore({name: 'menu'}) || [],
- menuAll: getStore({name: 'menuAll'}) || [],
- token: getStore({name: 'token'}) || '',
- refreshToken: getStore({name: 'refreshToken'}) || '',
+ menu: getStore({ name: 'menu' }) || [],
+ menuAll: getStore({ name: 'menuAll' }) || [],
+ token: getStore({ name: 'token' }) || '',
+ refreshToken: getStore({ name: 'refreshToken' }) || '',
+ hideHome: false,
},
actions: {
//根据用户名登录
- LoginByUsername({commit}, userInfo) {
+ LoginByUsername({ commit }, userInfo) {
return new Promise((resolve, reject) => {
loginByUsername(userInfo.tenantId, userInfo.username, md5(userInfo.password), userInfo.type, userInfo.key, userInfo.code).then(res => {
const data = res.data;
@@ -70,7 +71,7 @@
})
},
//根据手机号登录
- LoginByPhone({commit}, userInfo) {
+ LoginByPhone({ commit }, userInfo) {
return new Promise((resolve) => {
loginByUsername(userInfo.phone, userInfo.code).then(res => {
const data = res.data.data;
@@ -82,7 +83,7 @@
})
},
//根据第三方信息登录
- LoginBySocial({commit}, userInfo) {
+ LoginBySocial({ commit }, userInfo) {
return new Promise((resolve) => {
loginBySocial(userInfo.tenantId, userInfo.source, userInfo.code, userInfo.state).then(res => {
const data = res.data;
@@ -103,7 +104,7 @@
})
},
//获取用户信息
- GetUserInfo({commit}) {
+ GetUserInfo({ commit }) {
return new Promise((resolve, reject) => {
getUserInfo().then((res) => {
const data = res.data.data;
@@ -115,7 +116,7 @@
})
},
//刷新token
- refreshToken({state, commit}) {
+ refreshToken({ state, commit }) {
window.console.log('handle refresh token')
return new Promise((resolve, reject) => {
refreshToken(state.refreshToken, state.tenantId).then(res => {
@@ -129,7 +130,7 @@
})
},
// 登出
- LogOut({commit}) {
+ LogOut({ commit }) {
return new Promise((resolve, reject) => {
logout().then(() => {
commit('SET_TOKEN', '');
@@ -148,7 +149,7 @@
})
},
//注销session
- FedLogOut({commit}) {
+ FedLogOut({ commit }) {
return new Promise(resolve => {
commit('SET_TOKEN', '');
commit('SET_MENU_ALL_NULL', []);
@@ -172,7 +173,7 @@
})
},
//获取系统菜单
- GetMenu({commit, dispatch}, topMenuId) {
+ GetMenu({ commit, dispatch }, topMenuId) {
return new Promise(resolve => {
getRoutes(topMenuId).then((res) => {
const data = res.data.data
@@ -188,7 +189,7 @@
})
},
//获取系统按钮
- GetButtons({commit}) {
+ GetButtons({ commit }) {
return new Promise((resolve) => {
getButtons().then(res => {
const data = res.data.data;
@@ -199,10 +200,13 @@
},
},
mutations: {
+ set_hideHome: (state, val) => {
+ state.hideHome = val;
+ },
SET_TOKEN: (state, token) => {
setToken(token);
state.token = token;
- setStore({name: 'token', content: state.token})
+ setStore({ name: 'token', content: state.token })
},
SET_MENU_ID(state, menuId) {
state.menuId = menuId;
@@ -228,18 +232,18 @@
SET_REFRESH_TOKEN: (state, refreshToken) => {
setRefreshToken(refreshToken)
state.refreshToken = refreshToken;
- setStore({name: 'refreshToken', content: state.refreshToken})
+ setStore({ name: 'refreshToken', content: state.refreshToken })
},
SET_TENANT_ID: (state, tenantId) => {
state.tenantId = tenantId;
- setStore({name: 'tenantId', content: state.tenantId})
+ setStore({ name: 'tenantId', content: state.tenantId })
},
SET_USER_INFO: (state, userInfo) => {
if (validatenull(userInfo.avatar)) {
userInfo.avatar = "/img/bg/img-logo.png";
}
state.userInfo = userInfo;
- setStore({name: 'userInfo', content: state.userInfo})
+ setStore({ name: 'userInfo', content: state.userInfo })
},
SET_ROLES: (state, roles) => {
state.roles = roles;
@@ -266,7 +270,7 @@
result.forEach(ele => {
state.permission[ele] = true;
});
- setStore({name: 'permission', content: state.permission})
+ setStore({ name: 'permission', content: state.permission })
}
}
diff --git a/src/views/applydetailed/index.vue b/src/views/applydetailed/index.vue
index cd1dffb..e813954 100644
--- a/src/views/applydetailed/index.vue
+++ b/src/views/applydetailed/index.vue
@@ -538,6 +538,7 @@
questionBankOnLoad(page, params = {}) {
// debugger;
params["examId"] = this.$route.query.id;
+ // params["applyStatus"] = 2;
this.questionBankLoading = false;
getApplyList(
page.currentPage,
diff --git a/src/views/applyexam/index.vue b/src/views/applyexam/index.vue
index fb6545d..bf9a8f8 100644
--- a/src/views/applyexam/index.vue
+++ b/src/views/applyexam/index.vue
@@ -180,6 +180,7 @@
} from "@/api/examapi/applyexam";
import { mapState } from "vuex";
import { mapGetters } from "vuex";
+import { getRoleDetail } from "@/api/system/role";
var DIC = {
applyStatus: [
{
@@ -299,13 +300,79 @@
dialogClickModal: false,
column: [
{
+ label: "考试人数",
+ prop: "number",
+ type: 'number',
+ span: 12,
+ precision:0,
+ step:50,
+ mock:{
+ type:'number',
+ max:1000,
+ min:0,
+ precision:0
+ },
+ rules: [
+ {
+ required: true,
+ message: "请输入考试人数",
+ trigger: "blur",
+ },
+ ],
+ minRows: 0,
+ maxRows: 1000,
+ value:50,
+ },
+ {
+ label: "序号开始",
+ prop: "serialStart",
+ span: 6,
+ value:1,
+ mock:{
+ type:'number',
+ max:1000,
+ min:1,
+ precision:0
+ },
+ minRows: 1,
+ maxRows: 1000,
+ type:"number",
+ rules: [
+ {
+ required: true,
+ message: "请输入序号",
+ trigger: "blur",
+ },
+ ],
+ },
+ {
+ label: "序号结束",
+ prop: "serialEnd",
+ span: 6,
+ value:50,
+ mock:{
+ type:'number',
+ max:1000,
+ min:1,
+ precision:0
+ },
+ minRows: 1,
+ maxRows: 1000,
+ type:"number",
+ rules: [
+ {
+ required: true,
+ message: "请输入序号",
+ trigger: "blur",
+ },
+ ],
+ },
+ {
label: "考试时间",
prop: "startTime",
type: "datetime",
format: "yyyy-MM-dd HH:mm",
valueFormat: "yyyy-MM-dd HH:mm",
- startPlaceholder: "考试开始时间",
- endPlaceholder: "考试结束时间",
// 表单新增时是否禁止
addDisabled: false,
// 表单新增时是否可见
@@ -325,7 +392,34 @@
trigger: "blur",
},
],
- span: 24,
+ span: 12,
+ },
+ {
+ label: "截止时间",
+ prop: "endTime",
+ type: "datetime",
+ format: "yyyy-MM-dd HH:mm",
+ valueFormat: "yyyy-MM-dd HH:mm",
+ // 表单新增时是否禁止
+ addDisabled: false,
+ // 表单新增时是否可见
+ addDisplay: true,
+ // 表单新增时是否为查看模式
+ addDetail: false,
+ // 表单编辑时是否禁止
+ editDisabled: false,
+ // 表单编辑时是否可见
+ editDisplay: true,
+ // 表单编辑时是否为查看模式
+ editDetail: false,
+ rules: [
+ {
+ required: true,
+ message: "请选择考试时间",
+ trigger: "blur",
+ },
+ ],
+ span: 12,
},
],
},
@@ -334,7 +428,7 @@
delBtn: false,
editBtn: false,
addBtn: false,
- selection: true,
+ selection: false,
menu: true,
// 导出按钮
// excelBtn: true,
@@ -706,6 +800,34 @@
// overHidden: true,
// width: 150,
// },
+ // {
+ // label: "报名状态",
+ // search: true,
+ // type: "select",
+ // searchSpan: 4,
+ // prop: "applyStatus",
+ // searchValue: 2,
+ // dicData: [{
+ // label: '全部',
+ // value: 0,
+ // },
+ // {
+ // label: '已报名',
+ // value: 2,
+ // },
+ // {
+ // label: '已取消',
+ // value: 4,
+ // }
+ // ],
+ // props: {
+ // label: "label",
+ // value: "value"
+ // },
+ // editDisplay: false,
+ // addDisplay: false,
+ // width: 100,
+ // },
],
},
questionBankSearch: {},
@@ -751,6 +873,8 @@
if (this.userInfo.role_name.indexOf("ksxtadmin") != -1) {
this.examPersission = true;
}
+
+ this.questionBankSearch['applyStatus'] = 2;
},
mounted() {},
computed: {
@@ -785,19 +909,36 @@
});
},
questionBankOnLoad(page, params = {}) {
+ params = this.questionBankSearch;
this.questionBankLoading = false;
- params["applyStatus"] = 1;
- getApplyList(
- page.currentPage,
- page.pageSize,
- Object.assign(params, this.questionBankQuery)
- ).then((res) => {
- const data = res.data.data;
- this.questionBankPage.total = data.total;
- this.questionBankData = data.records;
- this.questionBankLoading = false;
- this.questionBankSelectionClear();
- });
+ this.loading = true;
+ //判断角色,如果是保安公司管理员或保安,只能查看当前公司的报名信息
+ var that = this;
+ //获取当前登录人员的角色信息
+ var roleIds = this.userInfo.role_id.split(",");
+ roleIds.forEach((roleId) => {
+ getRoleDetail(roleId).then((res) => {
+ var roleAlias = res.data.data.roleAlias;
+ if (
+ roleAlias == "保安公司管理员" ||
+ roleAlias == "保安"
+ ) {
+ //如果是保安公司管理员
+ params["deptId"] = that.userInfo.dept_id;
+ }
+ getApplyList(
+ page.currentPage,
+ page.pageSize,
+ Object.assign(params, this.questionBankQuery)
+ ).then((res) => {
+ const data = res.data.data;
+ this.questionBankPage.total = data.total;
+ this.questionBankData = data.records;
+ this.questionBankLoading = false;
+ this.questionBankSelectionClear();
+ });
+ })
+ })
},
questionBankSelectionClear() {
this.questionBankSelectionList = [];
@@ -868,11 +1009,28 @@
//生成考试
submitExamApply(row, done, loading) {
var that = this;
- var startTime = row.startTime + ":00";
- // var endTime = row.examTime[1];
- // var examTime = JSON.stringify(row.examTime);
- // console.log(this.ids,111);
- addExam(this.ids, null, startTime, null).then(
+ row.startTime = row.startTime + ":00";
+ row.endTime = row.endTime + ":00";
+ if(row.number!=((row.serialEnd-row.serialStart)+1)){
+ this.$message({
+ type: "error",
+ message: "考试人数与序号不匹配!",
+ });
+ done();
+ return;
+ }
+
+ var s = new Date(row.startTime);
+ var e = new Date(row.endTime);
+ if(s>e){
+ this.$message({
+ type: "error",
+ message: "截止时间不能早于考试考试开始时间!",
+ });
+ done();
+ return;
+ }
+ addExam(Object.assign(row, this.questionBankSearch)).then(
() => {
this.questionBankOnLoad(this.questionBankPage);
this.$message({
diff --git a/src/views/applyexam/papers.vue b/src/views/applyexam/papers.vue
index 7c54248..b87c038 100644
--- a/src/views/applyexam/papers.vue
+++ b/src/views/applyexam/papers.vue
@@ -8,13 +8,18 @@
export default {
data() {
return {
- url: "/papers.html",
+ url: "/papers.html"
};
},
created(){
- var d = this.$route.query;
- this.url += "?data=" + JSON.stringify(d);
- // console.log(d);
+ var data = this.$route.query;
+
+ if(data.examType==1){
+ this.url += "?data=" + JSON.stringify(data);
+ }
+ if(data.examType==2){
+ this.url = "/papersTrain.html?data=" + JSON.stringify(data);
+ }
},
mounted() {
var flag = false,
diff --git a/src/views/companyApply/index.vue b/src/views/companyApply/index.vue
index 03360a1..6627bc6 100644
--- a/src/views/companyApply/index.vue
+++ b/src/views/companyApply/index.vue
@@ -56,6 +56,7 @@
size="small"
icon="el-icon-folder-checked"
v-if="row.isApply != 1 && permission.company_add"
+ :disabled="row.examinationType=='1'"
@click="questionBankRowSave(row)"
>报名
</el-button>
diff --git a/src/views/dispatch/dispatchChildoperable.vue b/src/views/dispatch/dispatchChildoperable.vue
index 72bad92..5082b01 100644
--- a/src/views/dispatch/dispatchChildoperable.vue
+++ b/src/views/dispatch/dispatchChildoperable.vue
@@ -138,7 +138,7 @@
value: "id",
},
// dicUrl: `/api/blade-user/page-security-units?dispatch=1&deptId={{key}}`,
- dicUrl: `/api/blade-user/page-security-units?deptId={{key}}`,
+ dicUrl: `/api/blade-user/page-security-units?status=1&deptId={{key}}`,
dicData: [],
rules: [
{
@@ -434,19 +434,10 @@
this.onLoad1(this.page1, this.query1);
},
- // beforeOpen(done, type) {
- // var that = this;
- // if (["add", "edit", "view"].includes(type)) {
- // if (this.userInfo.role_name == "保安公司管理员") {
- // getListByDeptId(that.userInfo.dept_id).then((res) => {
- // const userColumn = that.findObject(this.option1.column, "userIds");
- // userColumn.dicData = res.data.data;
- // });
- // }
- // }
- // this.initFlag = true;
- // done();
- // },
+ beforeOpen(done, type) {
+ this.initFlag = true;
+ done();
+ },
getStartTime() {
if (
@@ -534,7 +525,7 @@
);
dispatcherUnitIdColumn.dicData = res.data.data;
});
- getListByDeptId(that.userInfo.dept_id).then((res) => {
+ getListByDeptId(that.userInfo.dept_id,1).then((res) => {
const userIdsColumn = that.findObject(this.option1.column, "userIds");
userIdsColumn.dicData = res.data.data;
});
diff --git a/src/views/exam/examPayment.vue b/src/views/exam/examPayment.vue
new file mode 100644
index 0000000..6ea508b
--- /dev/null
+++ b/src/views/exam/examPayment.vue
@@ -0,0 +1,394 @@
+/*
+ * @Author: Morpheus
+ * @Date: 2021-07-05 16:31:54
+ * @Last Modified by: Morpheus
+ * @Last Modified time: 2021-07-18 19:44:47
+ * menu-name 考试缴费管理
+ */
+<template>
+ <el-row class="morpheus-box">
+ <el-col :span="24" class="recruitmentManagement">
+ <el-card>
+ <div class="exam-card-body">
+ <avue-crud
+ v-model="obj"
+ class="company-box"
+ :option="questionBankOption"
+ :permission="permissionList"
+ :search.sync="questionBankSearch"
+ :table-loading="questionBankLoading"
+ :data="questionBankData"
+ ref="questionBankCrud"
+ :page.sync="questionBankPage"
+ @on-load="questionBankOnLoad"
+ @selection-change="questionBankSelectionChange"
+ @search-change="questionBankSearchChange"
+ @search-reset="questionBankSearchReset"
+ @current-change="questionBankCurrentChange"
+ @size-change="questionBankSizeChange"
+ @row-del="rowDel"
+ @row-update="questionBankRowUpdate"
+ >
+ <template slot-scope="{ row }" slot="sex">
+ <el-tag v-if="row.sex == 1">男</el-tag>
+ <el-tag v-if="row.sex == 2">女</el-tag>
+ </template>
+
+ <!-- 自定义按钮 -->
+ <template slot="menuLeft">
+ <!-- <el-button type="danger"
+ size="mini"
+ icon="el-icon-delete"
+ plain
+ @click="handleDelete">新增
+ </el-button> -->
+ <!-- <el-button type="danger"
+ size="mini"
+ icon="el-icon-delete"
+ plain
+ @click="handleDelete">删除
+ </el-button> -->
+ <el-button
+ type="success"
+ size="small"
+ plain
+ icon="el-icon-upload2"
+ v-if="permission.performance_import"
+ @click="handleImport"
+ >缴费凭证批量上传
+ </el-button>
+ </template>
+
+ <template slot-scope="{ row }" slot="menu">
+ <el-button
+ style="display:none"
+ type="text"
+ size="mini"
+ icon="el-icon-collection"
+ class="start-kaoshi"
+ v-if="permission.performance_print"
+ :disabled="row.qualified==1"
+ @click="securityPrint(row)"
+ >保安证打印
+ </el-button>
+ </template>
+ </avue-crud>
+
+ <el-dialog
+ title="缴费凭证批量上传"
+ append-to-body
+ :visible.sync="excelBox"
+ width="555px"
+ >
+ <avue-form
+ :option="excelOption"
+ v-model="excelForm"
+ :upload-after="uploadAfter"
+ >
+ </avue-form>
+ </el-dialog>
+ </div>
+ </el-card>
+ </el-col>
+ </el-row>
+</template>
+
+<script>
+import { getExamPaymentList, update,remove } from "@/api/exam/examPayment";
+import { mapGetters } from "vuex";
+import { getRoleDetail } from "@/api/system/role";
+
+export default {
+ data() {
+ return {
+ obj: {
+ name: "张三",
+ },
+ excelBox: false,
+ questionBankOption: {
+ // 操作栏多余按钮去除
+ delBtn: true,
+ editBtn: false,
+ addBtn: false,
+ selection: false,
+ viewBtn: true,
+ // title: '成绩',
+ align: "center",
+ height: "auto",
+ calcHeight: 80,
+ tip: false,
+ searchShow: true,
+ searchMenuSpan: 4,
+ index: true,
+ indexLabel: "序号",
+ dialogClickModal: false,
+ // 操作栏宽度
+ menu: true,
+ menuWidth: 186,
+ labelWidth: 120,
+
+ column: [
+ // {
+ // label: "缴费类型",
+ // prop: "type",
+ // dicData:[
+ // {
+ // label:"公司缴费",
+ // value: 1
+ // },
+ // {
+ // label:"个人缴费",
+ // value: 2
+ // }
+ // ],
+ // searchSpan: 4,
+ // search: true,
+ // type: "select",
+ // },
+ {
+ label: "缴费人",
+ prop: "realName",
+ search:true,
+ searchSpan:4,
+ },
+ {
+ label: "身份证号",
+ prop: "idCardNo",
+ search:true,
+ searchSpan:4,
+ },
+ {
+ label: "性别",
+ prop: "sex",
+ slot:true,
+ dicData: [
+ {
+ label:"男",
+ value:1
+ },
+ {
+ label:"女",
+ value:2
+ }
+ ],
+ },
+ {
+ label: "联系方式",
+ prop: "phone",
+ },
+ {
+ label: "所在单位",
+ prop: "deptName",
+ search:true,
+ searchSpan:6,
+ },
+ // {
+ // label: "缴费状态",
+ // prop: "paymentStatus",
+ // searchSpan: 4,
+ // search: true,
+ // dicData: [
+ // {
+ // label:"已缴费",
+ // value:1
+ // },
+ // {
+ // label:"未缴费",
+ // value:2
+ // },
+ // {
+ // label:"部分缴费",
+ // value:3
+ // },
+ // ],
+ // type: "select",
+ // },
+ {
+ label: "缴费凭证",
+ prop: "certificateUrl",
+ overHidden: true,
+ type: "upload",
+ listType: "picture-img",
+ },
+ {
+ label: "缴费时间",
+ prop: "paymentTime",
+ type: "date",
+ format: "yyyy-MM-dd",
+ valueFormat: "yyyy-MM-dd",
+ labelWidth: 120,
+ searchSpan: 4,
+ // search: true,
+ overHidden: true,
+ rules: [
+ {
+ required: true,
+ message: "请输入时间",
+ trigger: "click",
+ },
+ ],
+ },
+ ],
+ },
+ questionBankSearch: {},
+ questionBankLoading: true,
+ questionBankData: [],
+ questionBankPage: {
+ pageSize: 10,
+ currentPage: 1,
+ total: 16,
+ },
+ questionBankQuery: {},
+ questionBankSelectionList: [],
+ excelForm: {},
+ excelOption: {
+ submitBtn: false,
+ emptyBtn: false,
+ column: [
+ {
+ label: "模板上传",
+ prop: "excelFile",
+ type: "upload",
+ drag: true,
+ loadText: "模板上传中,请稍等",
+ span: 24,
+ propsHttp: {
+ res: "data",
+ },
+ tip: "请上传 zip 压缩文件",
+ action: "/api/blade-resource/oss/endpoint/put-file-exam-payment-zip",
+ }
+ ],
+ },
+ };
+ },
+ computed:{
+ ...mapGetters(["userInfo", "permission"]),
+ permissionList() {
+ return {
+ addBtn: this.vaildData(null, false),
+ viewBtn: this.vaildData(this.permission.notice_view, false),
+ delBtn: this.vaildData(this.permission.notice_delete, false),
+ editBtn: this.vaildData(this.permission.performance__edit, false),
+ excelBtn: this.vaildData(this.permission.performance_export, false),
+ };
+ },
+ },
+ created() {},
+ mounted() {},
+ methods: {
+ questionBankOnLoad(page, params = {}) {
+ //判断角色,如果是保安公司管理员或保安,只能查看当前公司的考试成绩
+ var that = this;
+ //获取当前登录人员的角色信息
+ var roleIds = this.userInfo.role_id.split(",");
+ roleIds.forEach((roleId) => {
+ getRoleDetail(roleId).then((res) => {
+ var roleAlias = res.data.data.roleAlias;
+ if (
+ roleAlias == "保安公司管理员" ||
+ roleAlias == "保安" ||
+ roleAlias == "未持证保安"
+ ) {
+ //如果是保安公司管理员
+ params["deptId"] = that.userInfo.dept_id;
+ }
+ that.questionBankLoading = false;
+ params["examType"] = 1;
+ getExamPaymentList(
+ page.currentPage,
+ page.pageSize,
+ Object.assign(params, this.query)
+ ).then((res) => {
+ const data = res.data.data;
+ that.questionBankPage.total = data.total;
+ that.questionBankData = data.records;
+ that.questionBankLoading = false;
+ that.questionBankSelectionClear();
+ });
+ })
+ });
+
+ },
+
+ rowDel(row) {
+ this.$confirm("确定删除当前缴费数据?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning",
+ })
+ .then(() => {
+ return remove(row.id);
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!",
+ });
+ });
+ },
+ questionBankSelectionClear() {
+ this.questionBankSelectionList = [];
+ this.$refs.questionBankCrud.toggleSelection();
+ },
+ questionBankSelectionChange(list) {
+ this.questionBankSelectionList = list;
+ },
+ questionBankSearchChange(params, done) {
+ this.questionBankQuery = params;
+ this.questionBankPage.currentPage = 1;
+ this.questionBankOnLoad(this.questionBankPage, params);
+ done();
+ },
+ questionBankSearchReset() {
+ this.questionBankQuery = {};
+ this.questionBankOnLoad(this.questionBankPage);
+ },
+ questionBankCurrentChange(currentPage) {
+ this.questionBankPage.currentPage = currentPage;
+ },
+ questionBankSizeChange(pageSize) {
+ this.questionBankPage.pageSize = pageSize;
+ },
+
+ questionBankRowUpdate(row, index, done, loading) {
+ // debugger;
+ update({
+ theoryGrade: row.theoryGrade,
+ learnGrade: row.learnGrade,
+ examId: row.examId,
+ id: row.id,
+ }).then(
+ () => {
+ this.questionBankOnLoad(this.questionBankPage);
+ this.$message({
+ type: "success",
+ message: "操作成功!",
+ });
+ done();
+ },
+ (error) => {
+ window.console.log(error);
+ loading();
+ }
+ );
+ },
+ handleImport() {
+ this.excelBox = true;
+ },
+ uploadAfter(res, done, loading, column) {
+ window.console.log(column);
+ this.excelBox = false;
+ this.refreshChange();
+ done();
+ },
+ refreshChange() {
+ this.questionBankOnLoad(this.page, this.query);
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+</style>
diff --git a/src/views/licenseApproval/branchOffice.vue b/src/views/licenseApproval/branchOffice.vue
index 4c89b6c..5dafefe 100644
--- a/src/views/licenseApproval/branchOffice.vue
+++ b/src/views/licenseApproval/branchOffice.vue
@@ -2,7 +2,7 @@
* @Author: liu
* @Date: 2021-08-26 17:00:55
* @Last Modified by: liu
- * @Last Modified time: 2021-08-27 19:26:20
+ * @Last Modified time: 2021-09-06 08:52:18
*/
@@ -91,13 +91,13 @@
ref="licence"
>
<div class="licence" id="licence" v-if="dialogVisible">
- <div class="licence-head">备案证</div>
+ <div class="licence-head">备案回执</div>
<div class="head-tid">
- 洪公保服务
+ 编号
<span class="fontStyle">{{
licenceData.row.organizationcode
}}</span>
- 号
+ <!-- 号 -->
</div>
<div class="licence-main">
<div
@@ -109,9 +109,9 @@
<span class="l-m-r-once">{{ item }}</span>
</div>
</div>
- <div class="licence-bottom">发证机关(南昌市公安局)</div>
+ <div class="licence-bottom">(公安机关印章)</div>
<div class="l-bottom">
- 发证日期
+ <!-- 发证日期 -->
<span class="l-b-t">{{
licenceData.row.permitime.slice(0, 4)
}}</span
@@ -636,14 +636,17 @@
viewLicense(row) {
//查看许可证
+ console.log(row, 34);
this.licenceData.row = row;
this.licenceData.chiden = {};
this.licenceData.chiden["名称"] = row.enterprisename;
- this.licenceData.chiden["住所"] = row.address;
+ this.licenceData.chiden["地址"] = row.address;
+ this.licenceData.chiden["服务区域"] = row.industry;
this.licenceData.chiden["法定代表人"] = row.representative;
- this.licenceData.chiden["服务范围"] = row.industry;
- this.licenceData.chiden["注册资本"] = row.registeredcapital;
- this.licenceData.chiden["批准文号"] = row.registrationnumber;
+ this.licenceData.chiden["备案时间"] = row.officetime;
+ this.licenceData.chiden["备案内容"] = "设立分公司备案";
+ // this.licenceData.chiden["注册资本"] = row.registeredcapital;
+ // this.licenceData.chiden["批准文号"] = row.registrationnumber;
console.log(this.licenceData);
this.dialogVisible = true;
diff --git a/src/views/licenseApproval/crossRegion.vue b/src/views/licenseApproval/crossRegion.vue
index 4ef9aaf..e6cfb4b 100644
--- a/src/views/licenseApproval/crossRegion.vue
+++ b/src/views/licenseApproval/crossRegion.vue
@@ -2,7 +2,7 @@
* @Author:liu
* @Date: 2021-08-26 16:59:35
* @Last Modified by: liu
- * @Last Modified time: 2021-08-27 19:36:17
+ * @Last Modified time: 2021-09-06 09:19:32
*/
@@ -90,13 +90,13 @@
ref="licence"
>
<div class="licence" id="licence" v-if="dialogVisible">
- <div class="licence-head">备案证</div>
+ <div class="licence-head">备案回执</div>
<div class="head-tid">
- 洪公保服务
+ 编号
<span class="fontStyle">{{
licenceData.row.organizationcode
}}</span>
- 号
+ <!-- 号 -->
</div>
<div class="licence-main">
<div
@@ -108,9 +108,9 @@
<span class="l-m-r-once">{{ item }}</span>
</div>
</div>
- <div class="licence-bottom">发证机关(南昌市公安局)</div>
+ <div class="licence-bottom">(公安机关印章)</div>
<div class="l-bottom">
- 发证日期
+ <!-- 发证日期 -->
<span class="l-b-t">{{
licenceData.row.permitime.slice(0, 4)
}}</span
@@ -628,11 +628,13 @@
this.licenceData.row = row;
this.licenceData.chiden = {};
this.licenceData.chiden["名称"] = row.enterprisename;
- this.licenceData.chiden["住所"] = row.address;
+ this.licenceData.chiden["地址"] = row.address;
+ this.licenceData.chiden["服务区域"] = row.industry;
this.licenceData.chiden["法定代表人"] = row.representative;
- this.licenceData.chiden["服务范围"] = row.industry;
- this.licenceData.chiden["注册资本"] = row.registeredcapital;
- this.licenceData.chiden["批准文号"] = row.registrationnumber;
+ this.licenceData.chiden["备案时间"] = row.officetime;
+ this.licenceData.chiden["备案内容"] = "跨区域经营备案";
+ // this.licenceData.chiden["注册资本"] = row.registeredcapital;
+ // this.licenceData.chiden["批准文号"] = row.registrationnumber;
console.log(this.licenceData);
this.dialogVisible = true;
diff --git a/src/views/licenseApproval/securityGuard.vue b/src/views/licenseApproval/securityGuard.vue
index 3919185..9910a0c 100644
--- a/src/views/licenseApproval/securityGuard.vue
+++ b/src/views/licenseApproval/securityGuard.vue
@@ -2,7 +2,7 @@
* @Author: liu
* @Date: 2021-08-26 16:57:58
* @Last Modified by: liu
- * @Last Modified time: 2021-08-27 19:35:04
+ * @Last Modified time: 2021-09-06 09:10:46
*/
@@ -98,13 +98,13 @@
ref="licence"
>
<div class="licence" id="licence" v-if="dialogVisible">
- <div class="licence-head">备案证</div>
+ <div class="licence-head">备案回执</div>
<div class="head-tid">
- 洪公保服务
+ 编号
<span class="fontStyle">{{
licenceData.row.organizationcode
}}</span>
- 号
+ <!-- 号 -->
</div>
<div class="licence-main">
<div
@@ -116,9 +116,9 @@
<span class="l-m-r-once">{{ item }}</span>
</div>
</div>
- <div class="licence-bottom">发证机关(南昌市公安局)</div>
+ <div class="licence-bottom">(公安机关印章)</div>
<div class="l-bottom">
- 发证日期
+ <!-- 发证日期 -->
<span class="l-b-t">{{
licenceData.row.permitime.slice(0, 4)
}}</span
@@ -687,14 +687,17 @@
},
viewLicense(row) {
//查看许可证
+ console.log(row, 34);
this.licenceData.row = row;
this.licenceData.chiden = {};
this.licenceData.chiden["名称"] = row.enterprisename;
- this.licenceData.chiden["住所"] = row.address;
+ this.licenceData.chiden["地址"] = row.address;
+ this.licenceData.chiden["服务区域"] = row.industry;
this.licenceData.chiden["法定代表人"] = row.representative;
- this.licenceData.chiden["服务范围"] = row.industry;
- this.licenceData.chiden["注册资本"] = row.registeredcapital;
- this.licenceData.chiden["批准文号"] = row.registrationnumber;
+ this.licenceData.chiden["备案时间"] = row.officetime;
+ this.licenceData.chiden["备案内容"] = "自招保安单位备案";
+ // this.licenceData.chiden["注册资本"] = row.registeredcapital;
+ // this.licenceData.chiden["批准文号"] = row.registrationnumber;
console.log(this.licenceData);
this.dialogVisible = true;
diff --git a/src/views/licenseApproval/securityTraining.vue b/src/views/licenseApproval/securityTraining.vue
index cc4d6c1..a2e3827 100644
--- a/src/views/licenseApproval/securityTraining.vue
+++ b/src/views/licenseApproval/securityTraining.vue
@@ -2,7 +2,7 @@
* @Author: liu
* @Date: 2021-08-26 16:55:25
* @Last Modified by: liu
- * @Last Modified time: 2021-08-27 11:45:56
+ * @Last Modified time: 2021-09-06 09:27:21
*/
@@ -142,7 +142,7 @@
ref="licence"
>
<div class="licence" id="licence" v-if="dialogVisible">
- <div class="licence-head">保安服务许可证</div>
+ <div class="licence-head">保安培训许可证</div>
<div class="head-tid">
洪公保服务
<span class="fontStyle">{{
diff --git a/src/views/resource/uploadNotice.vue b/src/views/resource/uploadNotice.vue
index ba64a2a..84d884e 100644
--- a/src/views/resource/uploadNotice.vue
+++ b/src/views/resource/uploadNotice.vue
@@ -23,7 +23,6 @@
type="primary"
size="small"
plain
- v-if="permission.attach_upload"
icon="el-icon-upload2"
@click="handleUpload"
>上 传
@@ -33,7 +32,6 @@
size="small"
icon="el-icon-delete"
plain
- v-if="permission.attach_delete"
@click="handleDelete"
>删 除
</el-button>
@@ -43,7 +41,6 @@
type="text"
icon="el-icon-download"
size="small"
- v-if="permission.attach_download"
@click="handleDownload(scope.row)"
>下载
</el-button>
diff --git a/src/views/resource/uploadNotification.vue b/src/views/resource/uploadNotification.vue
index 80036ba..a0b3460 100644
--- a/src/views/resource/uploadNotification.vue
+++ b/src/views/resource/uploadNotification.vue
@@ -23,7 +23,6 @@
type="primary"
size="small"
plain
- v-if="permission.attach_upload"
icon="el-icon-upload2"
@click="handleUpload"
>上 传
@@ -33,7 +32,6 @@
size="small"
icon="el-icon-delete"
plain
- v-if="permission.attach_delete"
@click="handleDelete"
>删 除
</el-button>
@@ -43,7 +41,6 @@
type="text"
icon="el-icon-download"
size="small"
- v-if="permission.attach_download"
@click="handleDownload(scope.row)"
>下载
</el-button>
diff --git a/src/views/resource/uploadPolicyRelease.vue b/src/views/resource/uploadPolicyRelease.vue
index 9f99ab2..ad976c2 100644
--- a/src/views/resource/uploadPolicyRelease.vue
+++ b/src/views/resource/uploadPolicyRelease.vue
@@ -23,7 +23,6 @@
type="primary"
size="small"
plain
- v-if="permission.attach_upload"
icon="el-icon-upload2"
@click="handleUpload"
>上 传
@@ -33,7 +32,6 @@
size="small"
icon="el-icon-delete"
plain
- v-if="permission.attach_delete"
@click="handleDelete"
>删 除
</el-button>
@@ -43,7 +41,6 @@
type="text"
icon="el-icon-download"
size="small"
- v-if="permission.attach_download"
@click="handleDownload(scope.row)"
>下载
</el-button>
diff --git a/src/views/securityAnalysis/index.vue b/src/views/securityAnalysis/index.vue
index 7806a6a..ad71495 100644
--- a/src/views/securityAnalysis/index.vue
+++ b/src/views/securityAnalysis/index.vue
@@ -214,7 +214,7 @@
})
.catch((res) => {
var b = that.changedata([], "cz", "wcz", "持证", "未持证");
- that.setEC1(b);
+ that.setEC2(b);
});
},
setEC2(data) {
@@ -488,7 +488,7 @@
})
.catch((res) => {
var b = that.changedata([], "pnum", "wpnum", "已派遣", "未派遣");
- that.setEC1(b);
+ that.setEC5(b);
});
},
setEC5(d) {
@@ -556,7 +556,7 @@
"已缴纳社保",
"未缴纳社保"
);
- that.setEC1(b);
+ that.setEC6(b);
});
},
setEC6(d) {
diff --git a/src/views/securityEquipment/equipments.vue b/src/views/securityEquipment/equipments.vue
index 1452fe0..1d7800b 100644
--- a/src/views/securityEquipment/equipments.vue
+++ b/src/views/securityEquipment/equipments.vue
@@ -114,7 +114,7 @@
align: "center",
selection: true,
column: column,
- labelWidth:110,
+ labelWidth: 110,
},
};
},
@@ -263,17 +263,33 @@
// console.log(params.deptId);
if (this.fromDeptId != undefined) {
params["deptId"] = this.fromDeptId;
- this.option.column[4].search = false;
- this.option.column[6].search = false;
- this.option.column[6].hide = true;
- this.option.column[6].addDisplay = false;
- this.option.column[6].editDisplay = false;
+ for (let k in this.option.column) {
+ if (this.option.column[k].prop == "deptId") {
+ this.option.column[k].search = false;
+ this.option.column[k].hide = true;
+ this.option.column[k].addDisplay = false;
+ this.option.column[k].editDisplay = false;
+ }
+ }
+ // this.option.column[4]. = false;
+ // this.option.column[6].search = false;
+ // this.option.column[6].hide = true;
+ // this.option.column[6].addDisplay = false;
+ // this.option.column[6].editDisplay = false;
} else {
- this.option.column[4].search = true;
- this.option.column[6].search = true;
- this.option.column[6].hide = false;
- this.option.column[6].addDisplay = true;
- this.option.column[6].editDisplay = true;
+ for (let k in this.option.column) {
+ if (this.option.column[k].prop == "deptId") {
+ this.option.column[k].search = true;
+ this.option.column[k].hide = false;
+ this.option.column[k].addDisplay = true;
+ this.option.column[k].editDisplay = true;
+ }
+ }
+ // this.option.column[4].search = true;
+ // this.option.column[6].search = true;
+ // this.option.column[6].hide = false;
+ // this.option.column[6].addDisplay = true;
+ // this.option.column[6].editDisplay = true;
}
getdata(
page.currentPage,
diff --git a/src/views/securityGuard/securityCertificate.vue b/src/views/securityGuard/securityCertificate.vue
new file mode 100644
index 0000000..5d24cc0
--- /dev/null
+++ b/src/views/securityGuard/securityCertificate.vue
@@ -0,0 +1,161 @@
+<template>
+ <div class="securityCertificate">
+ <div class="security_main">
+ <div class="security_m_left">
+ <div class="security_m_l_up">
+ <span class="security_m_l_u_fixed">{{ data.realName }}</span>
+ 经国家保安员考试审查合格。特颁此证。
+ </div>
+ <div class="security_m_l_center">
+ 发证公安机关 (印章)<br />
+ 发证日期 {{ data.paperTime.slice(0, 10) }}
+ </div>
+ <div class="security_m_l_down">
+ 证件编号 {{ data.securitynumber }}
+ </div>
+ </div>
+ <div class="security_m_right">
+ <div class="security_m_r_img">
+ <div v-if="!data.avatar">暂无照片</div>
+ <img :src="data.avatar" alt="" v-else />
+ </div>
+ <div class="security_m_r_once">
+ <span class="security_m_r_o_left">姓名</span>
+ <span class="security_m_r_o_right">{{ data.realName }}</span>
+ </div>
+ <div class="security_m_r_once">
+ <span class="security_m_r_o_left">出生年月</span>
+ <span class="security_m_r_o_right">{{ data.birthday }}</span>
+ </div>
+ <div class="security_m_r_once security_m_r_odizhi">
+ <span class="security_m_r_o_left security_m_r_o_l_ups">地址</span>
+ <span class="security_m_r_o_right security_m_r_o_l_r">
+ {{ data.address }}
+ </span>
+ </div>
+ <div class="security_m_r_once">
+ <div class="security_m_r_o_left">公民身份证号码</div>
+ <div class="security_m_r_o_right">{{ data.cardid }}</div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ props: ["data"],
+};
+</script>
+
+<style lang="scss" scoped>
+//保安证 本子
+.securityCertificate {
+ width: 100%;
+ height: 90%;
+ background-color: #fff;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.security_main {
+ width: 800px;
+ height: 560px;
+ // border: 1px solid rgba($color: #a5a5a5, $alpha: 0.5);
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+ background-image: url(/img/securityCertificate/123.png);
+ background-size: 100% 100%;
+ background-repeat: no-repeat;
+}
+.security_m_left,
+.security_m_right {
+ width: 380px;
+ height: 540px;
+ // background-color: rgb(226, 226, 226);
+ padding: 70px 40px;
+ box-sizing: border-box;
+ position: relative;
+ // background-image: url(/img/securityCertificate/bj2.jpeg);
+ // background-size: 100% 100%;
+ // background-repeat: no-repeat;
+}
+.security_m_left {
+ padding-left: 70px;
+ padding-right: 10px;
+}
+.security_m_l_up {
+ font-size: 22px;
+ width: 100%;
+ margin-bottom: 150px;
+ text-indent: 12rem;
+ letter-spacing: 0.5rem;
+ line-height: 2.5rem;
+ // height: ;
+}
+.security_m_l_u_fixed {
+ position: absolute;
+ width: auto;
+ left: -80px;
+}
+.security_m_l_center {
+ font-size: 18px;
+ margin-bottom: 20px;
+ line-height: 40px;
+}
+.security_m_l_down {
+ font-size: 22px;
+}
+.security_m_r_img {
+ width: 100%;
+ height: 210px;
+ display: flex;
+ // align-items: center;
+ justify-content: center;
+}
+.security_m_r_img img {
+ width: 125px;
+ height: 160px;
+}
+.security_m_r_once {
+ position: relative;
+ widows: 100%;
+ font-size: 20px;
+ margin-bottom: 10px;
+ height: auto;
+}
+.security_m_r_o_left {
+ width: 100px;
+ height: auto;
+ display: inline-block;
+ text-align: justify;
+ text-align-last: justify;
+ margin-right: 10px;
+ // display: flex;
+ // justify-content: space-around;
+}
+.security_m_r_o_right {
+ width: 190px;
+ height: auto;
+ display: inline-block;
+}
+.security_m_r_o_l_ups {
+ position: absolute;
+ // bottom: 1.7rem;
+ // height: 3rem;
+}
+.security_m_r_o_l_r {
+ position: relative;
+ left: 110px;
+}
+.security_m_r_odizhi {
+ height: 60px;
+ overflow: hidden;
+}
+// .security_m_r_o_left:after {
+// display: inline-block;
+// content: "";
+// padding-left: 100%;
+// }
+</style>
\ No newline at end of file
diff --git a/src/views/securityGuard/securityGuard.vue b/src/views/securityGuard/securityGuard.vue
index d1609ba..e6f6f0f 100644
--- a/src/views/securityGuard/securityGuard.vue
+++ b/src/views/securityGuard/securityGuard.vue
@@ -49,6 +49,15 @@
>批量导入
</el-button>
<el-button
+ type="success"
+ size="small"
+ plain
+ icon="el-icon-upload2"
+ v-if="permission.securityGuard_import"
+ @click="handleImport2"
+ >个人照片批量上传
+ </el-button>
+ <el-button
type="danger"
style="display: none"
size="small"
@@ -250,6 +259,19 @@
</template>
</avue-form>
</el-dialog>
+ <el-dialog
+ title="个人照片批量上传"
+ append-to-body
+ :visible.sync="excelBox2"
+ width="555px"
+ >
+ <avue-form
+ :option="excelOption2"
+ v-model="excelForm2"
+ :upload-after="uploadAfter2"
+ >
+ </avue-form>
+ </el-dialog>
</basic-container>
</el-col>
</el-row>
@@ -300,6 +322,7 @@
return {
securityid: "",
excelBox1: false,
+ excelBox2: false,
isSecurity: true,
excelForm1: {},
excelOption1: {
@@ -325,6 +348,26 @@
formslot: true,
span: 24,
},
+ ],
+ },
+ excelForm2: {},
+ excelOption2: {
+ submitBtn: false,
+ emptyBtn: false,
+ column: [
+ {
+ label: "文件上传",
+ prop: "file",
+ type: "upload",
+ drag: true,
+ loadText: "文件上传中,请稍等",
+ span: 24,
+ propsHttp: {
+ res: "data",
+ },
+ tip: "请上传 zip 压缩文件",
+ action: "/api/blade-resource/oss/endpoint/put-file-zip",
+ }
],
},
@@ -861,12 +904,21 @@
uploadAfter1(res, done, loading, column) {
window.console.log(column);
this.excelBox1 = false;
- // this.refreshChange();
+ this.refreshChange();
done();
},
handleTemplate1() {
window.open(`/api/blade-user/export-template-security`);
},
+ handleImport2() {
+ this.excelBox2 = true;
+ },
+ uploadAfter2(res, done, loading, column) {
+ window.console.log(column);
+ this.excelBox2 = false;
+ this.refreshChange();
+ done();
+ },
//行点击事件
rowClick(row) {
diff --git a/src/views/securityGuard/securityGuardDetail.vue b/src/views/securityGuard/securityGuardDetail.vue
index b388b1a..f4141d8 100644
--- a/src/views/securityGuard/securityGuardDetail.vue
+++ b/src/views/securityGuard/securityGuardDetail.vue
@@ -37,8 +37,8 @@
<div class="baz-m-body" ref="baoanzheng">
<div class="bmb-heard">保安员证</div>
<div class="img">
- <div v-if="!obj0.myPicture">暂无照片</div>
- <img :src="obj0.myPicture" alt="" v-else />
+ <div v-if="!obj0.avatar">暂无照片</div>
+ <img :src="obj0.avatar" alt="" v-else />
</div>
<div class="imgs">
<div v-if="erweima == ''">暂无二维码</div>
@@ -81,6 +81,9 @@
</div>
</div>
</span>
+ <span v-else-if="typeTABS.prop === 'tab5'">
+ <securityCertificate :data="obj0"></securityCertificate>
+ </span>
</div>
</template>
@@ -95,7 +98,7 @@
updateExperience,
getExperienceDetail,
experienceRemove,
- getExperienceList
+ getExperienceList,
} from "@/api/experience/experience";
import {
@@ -108,8 +111,12 @@
} from "@/api/performance/performance";
// import vueQr from "vue-qr";
+import securityCertificate from "./securityCertificate.vue";
export default {
+ components: {
+ securityCertificate: securityCertificate,
+ },
data() {
return {
typeTABS: {}, //标签页
@@ -135,6 +142,11 @@
// icon: "el-icon-info",
label: "保安员证",
prop: "tab4",
+ },
+ {
+ // icon: "el-icon-info",
+ label: "保安员证书",
+ prop: "tab5",
},
],
},
@@ -261,7 +273,7 @@
};
//获取用户从业信息
console.log(this.id, "cid");
- getExperienceList(this.current, this.size,param).then((res1) => {
+ getExperienceList(this.current, this.size, param).then((res1) => {
const data = res1.data.data;
this.page1.total = data.total;
this.data1 = data.records;
@@ -282,7 +294,6 @@
this.loading2 = false;
});
},
-
rowSave2(form, done, loading) {
form.securityid = this.id;
diff --git a/src/views/securityUnitChild/businessLicense.vue b/src/views/securityUnitChild/businessLicense.vue
index 8637e5a..4c79944 100644
--- a/src/views/securityUnitChild/businessLicense.vue
+++ b/src/views/securityUnitChild/businessLicense.vue
@@ -2,7 +2,12 @@
<div class="businessLicense">
<el-container>
<el-main>
- <avue-form :option="option" v-model="form" :upload-after="uploadAfter">
+ <avue-form
+ :option="option"
+ v-model="form"
+ :upload-after="uploadAfter"
+ :upload-delete="uploadDelete"
+ >
</avue-form
></el-main>
</el-container>
@@ -57,6 +62,24 @@
this.form.imgUrl = this.row.businessLicense;
}
},
+ uploadDelete(column, file) {
+ this.row.businessLicense = "";
+ return update(this.row)
+ .then(() => {
+ this.$message({
+ type: "success",
+ message: "删除成功!",
+ });
+ // done();
+ })
+ .catch((error) => {
+ this.$message({
+ type: "warning",
+ message: "删除照片失败,再重试!",
+ });
+ // done();
+ });
+ },
uploadAfter(res, done, loading, column) {
// this.row.businessLicense = "";
this.row.businessLicense = res.url;
@@ -64,7 +87,7 @@
() => {
this.$message({
type: "success",
- message: "操作成功!",
+ message: "添加成功!",
});
done();
},
diff --git a/src/views/securityUnitChild/data.js b/src/views/securityUnitChild/data.js
index 3c8388c..1c2f116 100644
--- a/src/views/securityUnitChild/data.js
+++ b/src/views/securityUnitChild/data.js
@@ -8,118 +8,289 @@
var w = 160,
s = 12;
export var column = [{
- label: "",
- labelWidth: 20,
- type: 'title',
- prop: "title",
- span: 24,
- styles: {
- fontSize: '24px'
- }
+ label: "",
+ labelWidth: 20,
+ type: 'title',
+ prop: "title",
+ span: 24,
+ styles: {
+ fontSize: '24px'
+ }
+},
+{
+ label: "企业名称",
+ prop: "enterprisename",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+},
+// {
+// label: "统一社会信用代码",
+// prop: "creditcode",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// },
+{
+ label: "法定代表人",
+ prop: "representative",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+}, {
+ label: "法定代表人电话",
+ prop: "representativecell",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+},
+{
+ label: "联系人",
+ prop: "contacts",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+}, {
+ label: "联系电话",
+ prop: "contactscell",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+},
+// {
+// label: "注册时间",
+// prop: "establishtime",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// },
+// {
+// label: "注册资本",
+// prop: "registeredcapital",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// },
+// {
+// label: "实缴资本",
+// prop: "capital",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// },
+// {
+// label: "组织机构代码",
+// prop: "organizationcode",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// },
+// {
+// label: "工商注册号",
+// prop: "registrationnumber",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// },
+// {
+// label: "纳税人识别号",
+// prop: "identificationnumber",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// },
+{
+ label: "企业类型",
+ prop: "stats",
+ type: "tree",
+ dicUrl: "/api/blade-system/dict-biz/dictionary?code=stats",
+ props: {
+ label: "dictValue",
+ value: "dictKey"
},
- {
- label: "企业名称",
- prop: "enterprisename",
- span: 11,
- labelWidth: 130,
- disabled: true,
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+},
+{
+ label: "注册地址",
+ prop: "address",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+ // search: true,
+},
+// {
+// label: "所属辖区",
+// prop: "region",
+// span: 11,
+// labelWidth: 130,
+// width: 110,
+// overHidden: true,
+// disabled: true,
+// },
+{
+ label: "所属辖区",
+ prop: "region",
+ // multiple: true,
+ type: "tree",
+ dicUrl: "/api/jurisdiction/lazy-tree",
+ props: {
+ label: "title",
+ value: "id",
},
- {
- label: "统一社会信用代码",
- prop: "creditcode",
- span: 11,
- labelWidth: 130,
- disabled: true,
- },
- {
- label: "法定代表人",
- prop: "representative",
- span: 11,
- labelWidth: 130,
- disabled: true,
- }, {
- label: "法定代表人电话",
- prop: "representativecell",
- span: 11,
- labelWidth: 130,
- disabled: true,
- },
- {
- label: "联系人",
- prop: "contacts",
- span: 11,
- labelWidth: 130,
- disabled: true,
- }, {
- label: "联系电话",
- prop: "contactscell",
- span: 11,
- labelWidth: 130,
- disabled: true,
- },
- {
- label: "注册时间",
- prop: "establishtime",
- span: 11,
- labelWidth: 130,
- disabled: true,
- },
- {
- label: "注册资本",
- prop: "registeredcapital",
- span: 11,
- labelWidth: 130,
- disabled: true,
- },
- {
- label: "实缴资本",
- prop: "capital",
- span: 11,
- labelWidth: 130,
- disabled: true,
- },
- {
- label: "组织机构代码",
- prop: "organizationcode",
- span: 11,
- labelWidth: 130,
- disabled: true,
- },
- {
- label: "工商注册号",
- prop: "registrationnumber",
- span: 11,
- labelWidth: 130,
- disabled: true,
- },
- {
- label: "纳税人识别号",
- prop: "identificationnumber",
- span: 11,
- labelWidth: 130,
- disabled: true,
- },
- {
- label: "企业类型",
- prop: "stats",
- type: "tree",
- dicUrl: "/api/blade-system/dict-biz/dictionary?code=stats",
- props: {
- label: "dictValue",
- value: "dictKey"
- },
- span: 11,
- labelWidth: 130,
- disabled: true,
- },
- {
- label: "注册地址",
- prop: "address",
- span: 11,
- labelWidth: 130,
- disabled: true,
- // search: true,
- },
+ span: 11,
+ labelWidth: 130,
+ width: 110,
+ overHidden: true,
+ disabled: true,
+ rules: [{
+ required: false,
+ message: "请选择所属辖区",
+ trigger: "click",
+ },],
+},
+{
+ label: "所属行业",
+ prop: "industry",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+},
+{
+ label: "登记机关",
+ prop: "registration",
+ // span: 11,
+ labelWidth: 130,
+ disabled: true,
+ span: 11,
+},
+{
+ label: "经营范围",
+ prop: "business",
+ span: 24,
+ labelWidth: 130,
+ width: 110,
+ // overHidden: true,
+ type: 'textarea',
+ showWordLimit: true,
+ disabled: true,
+}
+]
+export var column11 = [{
+ label: "",
+ labelWidth: 20,
+ type: 'title',
+ prop: "title",
+ span: 24,
+ styles: {
+ fontSize: '24px'
+ }
+},
+// {
+// label: "企业名称",
+// prop: "enterprisename",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// },
+{
+ label: "统一社会信用代码",
+ prop: "creditcode",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+},
+// {
+// label: "法定代表人",
+// prop: "representative",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// },
+// {
+// label: "法定代表人电话",
+// prop: "representativecell",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// },
+// {
+// label: "联系人",
+// prop: "contacts",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// }, {
+// label: "联系电话",
+// prop: "contactscell",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// },
+{
+ label: "注册时间",
+ prop: "establishtime",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+},
+{
+ label: "注册资本",
+ prop: "registeredcapital",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+},
+// {
+// label: "实缴资本",
+// prop: "capital",
+// span: 11,
+// labelWidth: 130,
+// disabled: true,
+// },
+{
+ label: "组织机构代码",
+ prop: "organizationcode",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+},
+{
+ label: "工商注册号",
+ prop: "registrationnumber",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+},
+{
+ label: "纳税人识别号",
+ prop: "identificationnumber",
+ span: 11,
+ labelWidth: 130,
+ disabled: true,
+},
+ // {
+ // label: "企业类型",
+ // prop: "stats",
+ // type: "tree",
+ // dicUrl: "/api/blade-system/dict-biz/dictionary?code=stats",
+ // props: {
+ // label: "dictValue",
+ // value: "dictKey"
+ // },
+ // span: 11,
+ // labelWidth: 130,
+ // disabled: true,
+ // },
+ // {
+ // label: "注册地址",
+ // prop: "address",
+ // span: 11,
+ // labelWidth: 130,
+ // disabled: true,
+ // // search: true,
+ // },
// {
// label: "所属辖区",
// prop: "region",
@@ -129,154 +300,153 @@
// overHidden: true,
// disabled: true,
// },
- {
- label: "所属辖区",
- prop: "region",
- // multiple: true,
- type: "tree",
- dicUrl: "/api/jurisdiction/lazy-tree",
- props: {
- label: "title",
- value: "id",
- },
- span: 11,
- labelWidth: 130,
- width: 110,
- overHidden: true,
- disabled: true,
- rules: [{
- required: false,
- message: "请选择所属辖区",
- trigger: "click",
- }, ],
- },
- {
- label: "所属行业",
- prop: "industry",
- span: 11,
- labelWidth: 130,
- disabled: true,
- },
- {
- label: "登记机关",
- prop: "registration",
- // span: 11,
- labelWidth: 130,
- disabled: true,
- span: 11,
- },
- {
- label: "经营范围",
- prop: "business",
- span: 24,
- labelWidth: 130,
- width: 110,
- // overHidden: true,
- type: 'textarea',
- showWordLimit: true,
- disabled: true,
- }
-]
-
-export var column1 = [{
- label: "id",
- prop: "id",
- hide: true,
- addDisplay: false,
- editDisplay: false,
-
- }, {
- label: "股东",
- prop: "shareholder",
- searchLabelWidth: 55,
- search: true,
- labelWidth: w,
- span: s,
- }, {
- label: "持股比例(%)",
- prop: "shareholdingratio",
- labelWidth: w,
- span: s,
- },
- // {
- // label: "最终受益股份",
- // prop: "beneficial",
+ // {
+ // label: "所属辖区",
+ // prop: "region",
+ // // multiple: true,
+ // type: "tree",
+ // dicUrl: "/api/jurisdiction/lazy-tree",
+ // props: {
+ // label: "title",
+ // value: "id",
+ // },
+ // span: 11,
+ // labelWidth: 130,
+ // width: 110,
+ // overHidden: true,
+ // disabled: true,
+ // rules: [{
+ // required: false,
+ // message: "请选择所属辖区",
+ // trigger: "click",
+ // }, ],
// },
- {
- label: "出资金额(万元)",
- prop: "capital",
- labelWidth: w,
- span: s,
- }, {
- label: "出资时间",
- prop: "capitaltime",
- type: "date",
- format: "yyyy-MM-dd hh:mm:ss",
- valueFormat: "timestamp",
- labelWidth: w,
- span: s,
- }, {
- label: "身份证",
- prop: "cardid",
- labelWidth: w,
- span: s,
- search: true
- }, {
- label: "联系电话",
- prop: "cell",
- labelWidth: w,
- span: s,
- }, {
- label: "统一社会信用代码",
- prop: "creditcode",
- hide: true,
- addDisplay: false,
- editDisplay: false,
- labelWidth: w,
- span: s,
- },
+ // {
+ // label: "所属行业",
+ // prop: "industry",
+ // span: 11,
+ // labelWidth: 130,
+ // disabled: true,
+ // },
+ // {
+ // label: "登记机关",
+ // prop: "registration",
+ // // span: 11,
+ // labelWidth: 130,
+ // disabled: true,
+ // span: 11,
+ // },
+ // {
+ // label: "经营范围",
+ // prop: "business",
+ // span: 24,
+ // labelWidth: 130,
+ // width: 110,
+ // // overHidden: true,
+ // type: 'textarea',
+ // showWordLimit: true,
+ // disabled: true,
+ // }
+]
+export var column1 = [{
+ label: "id",
+ prop: "id",
+ hide: true,
+ addDisplay: false,
+ editDisplay: false,
+
+}, {
+ label: "股东",
+ prop: "shareholder",
+ searchLabelWidth: 55,
+ search: true,
+ labelWidth: w,
+ span: s,
+}, {
+ label: "持股比例(%)",
+ prop: "shareholdingratio",
+ labelWidth: w,
+ span: s,
+},
+// {
+// label: "最终受益股份",
+// prop: "beneficial",
+// },
+{
+ label: "出资金额(万元)",
+ prop: "capital",
+ labelWidth: w,
+ span: s,
+}, {
+ label: "出资时间",
+ prop: "capitaltime",
+ type: "date",
+ format: "yyyy-MM-dd hh:mm:ss",
+ valueFormat: "timestamp",
+ labelWidth: w,
+ span: s,
+}, {
+ label: "身份证",
+ prop: "cardid",
+ labelWidth: w,
+ span: s,
+ search: true
+}, {
+ label: "联系电话",
+ prop: "cell",
+ labelWidth: w,
+ span: s,
+}, {
+ label: "统一社会信用代码",
+ prop: "creditcode",
+ hide: true,
+ addDisplay: false,
+ editDisplay: false,
+ labelWidth: w,
+ span: s,
+},
]
export var column2 = [{
- label: "统一社会信用代码",
- prop: "creditcode",
- hide: true,
- addDisplay: false,
- editDisplay: false,
- labelWidth: w,
- span: s,
- }, {
- label: "id",
- prop: "id",
- hide: true,
- addDisplay: false,
- editDisplay: false,
- labelWidth: w,
- span: s,
- }, {
- label: "姓名",
- prop: "name",
- search: true,
- labelWidth: w,
- searchLabelWidth: 55,
- span: s,
- }, {
- label: "职务",
- prop: "post",
- search: true,
- labelWidth: w,
- span: s,
- }, {
- label: "身份证",
- prop: "cardid",
- labelWidth: w,
- span: s,
- }, {
- label: "联系电话",
- prop: "cell",
- labelWidth: w,
- span: s,
- }
+ label: "统一社会信用代码",
+ prop: "creditcode",
+ hide: true,
+ addDisplay: false,
+ editDisplay: false,
+ labelWidth: w,
+ span: s,
+}, {
+ label: "id",
+ prop: "id",
+ hide: true,
+ addDisplay: false,
+ editDisplay: false,
+ labelWidth: w,
+ span: s,
+}, {
+ label: "姓名",
+ prop: "name",
+ search: true,
+ labelWidth: w,
+ searchLabelWidth: 55,
+ span: s,
+}, {
+ label: "职务",
+ prop: "post",
+ search: true,
+ labelWidth: w,
+ span: s,
+}, {
+ label: "身份证",
+ prop: "cardid",
+ labelWidth: w,
+ span: s,
+}, {
+ label: "联系电话",
+ prop: "cell",
+ labelWidth: w,
+ span: s,
+}
// , {
// label: "持股比例(%)",
// prop: "shareholdingratio",
diff --git a/src/views/securityUnitChild/index.vue b/src/views/securityUnitChild/index.vue
index 3f8c7dd..58e1696 100644
--- a/src/views/securityUnitChild/index.vue
+++ b/src/views/securityUnitChild/index.vue
@@ -42,6 +42,47 @@
</avue-form>
</basic-container>
</span>
+ <span v-if="typeTABS.prop === 'tab11'" class="tab">
+ <!-- <avue-crud
+ :option="option"
+ :data="data"
+ :page.sync="page"
+ ref="crudrec"
+ @on-load="onLoad"
+ :table-loading="loading"
+ @row-save="rowSave"
+ @search-change="searchChange"
+ @search-reset="searchReset"
+ @row-update="rowUpdate"
+ @row-del="rowDel"
+ @selection-change="selectionChange"
+ @refresh-change="refreshChange"
+ >
+ <template slot="menuLeft">
+ <el-button
+ type="danger"
+ size="small"
+ plain
+ icon="el-icon-delete"
+ @click="handleDelete"
+ >删 除
+ </el-button>
+ </template>
+ </avue-crud>-->
+ <!-- 表单组件 -->
+ <basic-container>
+ <avue-form
+ ref="form"
+ v-model="obj0"
+ :option="option01"
+ @submit="submit0"
+ >
+ <!-- <template slot-scope="scope" slot="menuForm">
+ <el-button @click="tip">自定义按钮</el-button>
+ </template> -->
+ </avue-form>
+ </basic-container>
+ </span>
<span v-else-if="typeTABS.prop === 'tab2'" class="tab">
<!-- <span v-if="typeTABS.prop === 'tab2'"> -->
<basic-container>
@@ -183,7 +224,7 @@
</template>
<script>
-import { column, column1, column2 } from "./data";
+import { column11, column, column1, column2 } from "./data";
import {
getOncedata,
// getdata,
@@ -262,7 +303,7 @@
res: "data",
},
tip: "请上传 .xls,.xlsx 标准格式文件",
- action: "/api/car/import-examSubject",
+ action: "/api/shareholder/import-share",
},
{
label: "模板下载",
@@ -290,7 +331,7 @@
res: "data",
},
tip: "请上传 .xls,.xlsx 标准格式文件",
- action: "/api/examSubjectChoices/import-examSubject",
+ action: "/api/member/import-member",
},
{
label: "模板下载",
@@ -308,6 +349,11 @@
// icon: "el-icon-info",
label: "保安单位基本信息",
prop: "tab1",
+ },
+ {
+ // icon: "el-icon-info",
+ label: "工商信息",
+ prop: "tab11",
},
{
// icon: "el-icon-info",
@@ -364,6 +410,14 @@
submitText: "保存",
gutter: 30,
column: column,
+ },
+
+ option01: {
+ emptyBtn: false,
+ submitBtn: false,
+ submitText: "保存",
+ gutter: 30,
+ column: column11,
},
loading1: true, //派遣记录
@@ -445,7 +499,7 @@
update(row).then(
() => {
// this.onLoad(this.page);
- this.onloads();
+ // this.onloads();
this.$message({
type: "success",
message: "操作成功!",
@@ -467,11 +521,11 @@
uploadAfter(res, done, loading, column) {
window.console.log(column);
this.excelBox = false;
- this.refreshChange();
+ this.refreshChange1();
done();
},
handleTemplate() {
- window.open(`/api/car/export-template`);
+ window.open(`/api/shareholder/export-template`);
},
handleImport1() {
@@ -481,11 +535,11 @@
uploadAfter1(res, done, loading, column) {
window.console.log(column);
this.excelBox1 = false;
- // this.refreshChange();
+ this.refreshChange2();
done();
},
handleTemplate1() {
- window.open(`/api/examSubjectChoices/export-template`);
+ window.open(`/api/member/export-template`);
},
handleChangeTABS(column) {
@@ -874,19 +928,30 @@
getRoleDetail(roleId).then((res) => {
var roleAlias = res.data.data.roleAlias;
var d = that.option0.column;
+ var e = that.option01.column;
// console.log(roleAlias);
if (roleAlias == "保安公司管理员") {
that.option0.submitBtn = true;
+ that.option01.submitBtn = true;
for (var k in d) {
// if (d[k].label != "企业类型") {
d[k].disabled = false;
// }
}
+ for (var n in e) {
+ // if (d[k].label != "企业类型") {
+ e[n].disabled = false;
+ // }
+ }
} else {
that.option0.submitBtn = false;
+ that.option01.submitBtn = false;
for (var k in d) {
d[k].disabled = true;
}
+ for (var n in e) {
+ e[n].disabled = true;
+ }
}
getdatas(roleAlias);
});
diff --git a/src/views/securityUnitChild/licence.vue b/src/views/securityUnitChild/licence.vue
index 7fc6d85..efa47c1 100644
--- a/src/views/securityUnitChild/licence.vue
+++ b/src/views/securityUnitChild/licence.vue
@@ -2,7 +2,12 @@
<div class="License">
<el-container>
<el-main>
- <avue-form :option="option" v-model="form" :upload-after="uploadAfter">
+ <avue-form
+ :option="option"
+ v-model="form"
+ :upload-after="uploadAfter"
+ :upload-delete="uploadDelete"
+ >
</avue-form
></el-main>
</el-container>
@@ -57,13 +62,31 @@
this.form.imgUrl = this.row.licence;
}
},
+ uploadDelete(column, file) {
+ this.row.licence = "";
+ return update(this.row)
+ .then(() => {
+ this.$message({
+ type: "success",
+ message: "删除成功!",
+ });
+ // done();
+ })
+ .catch((error) => {
+ this.$message({
+ type: "warning",
+ message: "删除照片失败,再重试!",
+ });
+ // done();
+ });
+ },
uploadAfter(res, done, loading, column) {
this.row.licence = res.url;
update(this.row).then(
() => {
this.$message({
type: "success",
- message: "操作成功!",
+ message: "添加成功!",
});
done();
},
diff --git a/src/views/securityUnitChild/social.vue b/src/views/securityUnitChild/social.vue
index 6448fab..d13c4a8 100644
--- a/src/views/securityUnitChild/social.vue
+++ b/src/views/securityUnitChild/social.vue
@@ -76,9 +76,12 @@
props: ["deptid"],
data() {
var deptid = this.deptid;
-
+ if (this.deptid == undefined) {
+ // deptid = this.userInfo
+ // console.log(this.$store.getters.userInfo.dept_id);
+ deptid = this.$store.getters.userInfo.dept_id;
+ }
return {
- do: 0,
form: { cardid: "" },
query: {},
@@ -398,8 +401,7 @@
},
methods: {
changes(val) {
- this.do++;
- if (this.do >= 2) {
+ if (val.value != "") {
getuseList(val.value).then((res) => {
// console.log(res);
var d = res.data.data;
diff --git a/src/views/system/user.vue b/src/views/system/user.vue
index 1a726da..a94be80 100644
--- a/src/views/system/user.vue
+++ b/src/views/system/user.vue
@@ -985,6 +985,7 @@
},
onLoad(page, params = {}) {
this.loading = true;
+ params['status'] = 1;
getList(
page.currentPage,
page.pageSize,
diff --git a/src/views/trainApply/index.vue b/src/views/trainApply/index.vue
index 231f28f..a201ecf 100644
--- a/src/views/trainApply/index.vue
+++ b/src/views/trainApply/index.vue
@@ -62,9 +62,25 @@
:type="type"
size="small"
icon="el-icon-receiving"
- :disabled="row.candidateNo==''"
+ :disabled="row.candidateNo=='' || row.cancel==2"
@click="handlePrint(row)"
>准考证打印
+ </el-button>
+ <el-button
+ :type="type"
+ size="small"
+ icon="el-icon-refresh-left"
+ :disabled="row.cancel==2"
+ @click="revoke(row)"
+ >取消报名
+ </el-button>
+ <el-button
+ :type="type"
+ size="small"
+ icon="el-icon-circle-check"
+ :disabled="row.auditStatus==1"
+ @click="auditSucess(row)"
+ >审核通过
</el-button>
</template>
@@ -98,7 +114,7 @@
<script>
-import {getdata,adddata,remove} from "@/api/trainingRegistration/trainingRegistration";
+import {getdata,adddata, cancelTrainAudit,auditSucess,remove} from "@/api/trainingRegistration/trainingRegistration";
import { mapState } from 'vuex'
@@ -258,6 +274,24 @@
width: 220
},
{
+ label: "报名状态",
+ prop: "cancel",
+ type:"select",
+ search:true,
+ hide:true,
+ searchSpan:4,
+ searchValue:1,
+ dicData:[
+ {
+ label: '已报名',
+ value: 1
+ }, {
+ label: '已取消',
+ value: 2
+ }
+ ]
+ },
+ {
label: "准考证号",
prop: "candidateNo",
slot: true,
@@ -373,7 +407,7 @@
? "0" + new Date().getSeconds()
: new Date().getSeconds())),
- width: 160
+ width: 150
},
{
label: "考试时间",
@@ -394,7 +428,44 @@
editDisplay: true,
// 表单编辑时是否为查看模式
editDetail: false,
- width: 160
+ width: 150
+ },
+ {
+ label: "审核状态",
+ search: true,
+ searchLabelWidth: 110,
+ type: "select",
+ searchSpan: 4,
+ prop: "auditStatus",
+ searchValue: 4,
+ dicData: [{
+ label: '全部',
+ value: 0,
+ },
+ {
+ label: '审核通过',
+ value: 1,
+ },
+ {
+ label: '审核不通过',
+ value: 2,
+ },
+ {
+ label: '已提交审核',
+ value: 3,
+ },
+ {
+ label: '未提交审核',
+ value: 4,
+ }
+ ],
+ props: {
+ label: "label",
+ value: "value"
+ },
+ editDisplay: false,
+ addDisplay: false,
+ width: 100,
},
// {
// label: "报名状态",
@@ -494,11 +565,8 @@
this.questionBankOption.column[0].dicUrl = "/api/blade-system/dept/lazy-tree-user?parentId=" + this.userInfo.dept_id
}
-
-
-
-
-
+ this.questionBankSearch['cancel'] = 1;
+ this.questionBankSearch['auditStatus'] = 0;
},
mounted() {
var flag = false,
@@ -540,7 +608,7 @@
});
},
questionBankOnLoad (page, params = {}) {
- // debugger;
+ params = this.questionBankSearch;
params['examId'] = this.$route.query.id;
this.questionBankLoading = false;
getdata(page.currentPage, page.pageSize, Object.assign(params, this.questionBankQuery)).then(res => {
@@ -574,6 +642,54 @@
questionBankSizeChange (pageSize) {
this.questionBankPage.pageSize = pageSize;
},
+ //取消报名
+ revoke(row, done, loading) {
+ this.$confirm("确定取消报名?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning",
+ }).then(() => {
+ row.cancel = 2;
+ cancelTrainAudit(row).then(
+ () => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "取消报名成功!",
+ });
+ done();
+ },
+ (error) => {
+ window.console.log(error);
+ loading();
+ }
+ );
+ });
+ },
+ //审核通过
+ auditSucess(row, done, loading) {
+ this.$confirm("确定审核通过?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning",
+ }).then(() => {
+ row.cancel = 1;
+ auditSucess(row).then(
+ () => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!",
+ });
+ done();
+ },
+ (error) => {
+ window.console.log(error);
+ loading();
+ }
+ );
+ });
+ },
// 新增
questionBankRowSave (row, done, loading) {
diff --git a/src/views/trainExam/index.vue b/src/views/trainExam/index.vue
index cfd1e6a..412cc67 100644
--- a/src/views/trainExam/index.vue
+++ b/src/views/trainExam/index.vue
@@ -72,6 +72,7 @@
size="mini"
icon="el-icon-collection"
class="start-kaoshi"
+ v-if="permission.trainExam_trainPapers"
@click="startExam(row)"
>报名清册
</el-button>
@@ -79,8 +80,17 @@
type="text"
size="mini"
icon="el-icon-folder-checked"
+ v-if="permission.trainExam_check"
@click="handleAudit(row)"
>审核
+ </el-button>
+ <el-button
+ type="text"
+ size="mini"
+ icon="el-icon-folder-checked"
+ v-if="permission.trainExam_index_examScoreViews"
+ @click="examScoreViews(row)"
+ >成绩查看
</el-button>
</template>
</avue-crud>
@@ -115,6 +125,7 @@
updateAudit,
} from "@/api/examapi/examination";
import { auditColumn } from "./data";
+import { mapGetters } from "vuex";
export default {
data() {
var validatePass = (rule, value, callback) => {
@@ -441,7 +452,6 @@
questionBankSelectionList: [],
};
},
- created() {},
mounted() {},
computed: {
ids() {
@@ -450,6 +460,15 @@
ids.push(ele.id);
});
return ids.join(",");
+ },
+ ...mapGetters(["userInfo", "permission"]),
+ permissionList() {
+ return {
+ addBtn: this.vaildData(null, false),
+ viewBtn: this.vaildData(null, false),
+ delBtn: this.vaildData(null, false),
+ editBtn: this.vaildData(null, false),
+ };
},
},
watch: {},
@@ -527,6 +546,15 @@
});
}
},
+ examScoreViews(row){
+ //模拟考试
+ if (row.examType == 2) {
+ this.$router.push({
+ path: `/trainExam/singleperformance`,
+ query: row,
+ });
+ }
+ },
// 新增
questionBankRowSave(row, done, loading) {
row.startTime = row.startTime + ":00";
diff --git a/src/views/trainExam/performance.vue b/src/views/trainExam/performance.vue
index 95027d0..dc7adac 100644
--- a/src/views/trainExam/performance.vue
+++ b/src/views/trainExam/performance.vue
@@ -38,7 +38,7 @@
{{ row.allGrade == -1 ? "" : row.allGrade }}
</template>
<template slot-scope="{ row }" slot="qualified">
- {{ row.qualified == -1 ? "" : row.qualified==0?"合格":row.qualified==1?"不合格":'' }}
+ {{ row.qualified == -1 ? "" : row.qualified==0?"合格":row.qualified==1?"不合格":row.qualified==3?"缺考,成绩无效":'' }}
</template>
<!-- 自定义按钮 -->
@@ -64,6 +64,16 @@
@click="handleImport"
>实操成绩导入
</el-button>
+ </template>
+
+ <template slot-scope="{ type, size, row }" slot="menu">
+ <el-button
+ icon="el-icon-s-flag"
+ @click="absent(row)"
+ :size="size"
+ :type="type"
+ >缺考标记</el-button
+ >
</template>
</avue-crud>
@@ -92,7 +102,7 @@
</template>
<script>
-import { getList, update } from "@/api/examapi/performance";
+import { getList, update,updateAbsent } from "@/api/examapi/performance";
import { mapGetters } from "vuex";
import { getRoleDetail } from "@/api/system/role";
export default {
@@ -394,6 +404,10 @@
label: "暂未录实操成绩",
value: 2,
},
+ {
+ label: "缺考,成绩无效",
+ value: 3,
+ },
],
// 表单新增时是否禁止
addDisabled: false,
@@ -506,11 +520,16 @@
var roleAlias = res.data.data.roleAlias;
if (
roleAlias == "保安公司管理员" ||
- roleAlias == "保安" ||
- roleAlias == "未持证保安"
+ roleAlias == "保安"
) {
//如果是保安公司管理员
params["deptId"] = that.userInfo.dept_id;
+ }
+ if (
+ roleAlias == "培训公司管理员"
+ ) {
+ //如果是培训公司管理员
+ params["trainUnitId"] = that.userInfo.dept_id;
}
that.questionBankLoading = false;
params["examType"] = 2;
@@ -529,6 +548,30 @@
});
},
+ //缺考标记
+ absent(row, done, loading) {
+ this.$confirm("确定缺考标记?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning",
+ }).then(() => {
+ row.qualified = 3;
+ updateAbsent(row).then(
+ () => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!",
+ });
+ done();
+ },
+ (error) => {
+ window.console.log(error);
+ loading();
+ }
+ );
+ });
+ },
questionBankSelectionClear() {
this.questionBankSelectionList = [];
this.$refs.questionBankCrud.toggleSelection();
diff --git a/src/views/trainExam/singleperformance.vue b/src/views/trainExam/singleperformance.vue
index adb0a7d..ad770e3 100644
--- a/src/views/trainExam/singleperformance.vue
+++ b/src/views/trainExam/singleperformance.vue
@@ -38,7 +38,7 @@
{{ row.learnGrade == -1 ? "" : row.allGrade }}
</template>
<template slot-scope="{ row }" slot="qualified">
- {{ row.learnGrade == -1 ? "" : row.qualified == 0?"合格":row.qualified==1?"不合格":'' }}
+ {{ row.qualified == -1 ? "" : row.qualified==0?"合格":row.qualified==1?"不合格":row.qualified==3?"缺考,成绩无效":'' }}
</template>
<template slot-scope="{ row }" slot="menu">
@@ -139,7 +139,7 @@
label: "考试名称",
prop: "examName",
search: true,
- searchSpan: 4,
+ searchSpan: 5,
slot: true,
viewDisplay:false,
// 表单新增时是否禁止
@@ -273,7 +273,7 @@
type: "select",
slot: true,
search: true,
- searchSpan: 4,
+ searchSpan: 3,
dicData: [
{
label: "发布成绩",
@@ -369,7 +369,7 @@
type: "select",
slot: true,
search: true,
- searchSpan: 4,
+ searchSpan: 3,
dicData: [
{
label: "合格",
@@ -418,7 +418,10 @@
questionBankSelectionList: [],
};
},
- created() {},
+ created() {
+ // console.log(this.$route.query,111);
+ this.questionBankSearch['examName'] = this.$route.query.examName;
+ },
mounted() {},
computed:{
...mapGetters(["userInfo", "permission"]),
@@ -447,17 +450,23 @@
var that = this;
//获取当前登录人员的角色信息
var roleIds = this.userInfo.role_id.split(",");
+ params = this.questionBankSearch;
roleIds.forEach((roleId) => {
getRoleDetail(roleId).then((res) => {
var roleAlias = res.data.data.roleAlias;
if (
roleAlias == "保安公司管理员" ||
- roleAlias == "保安" ||
- roleAlias == "未持证保安"
+ roleAlias == "保安"
) {
//如果是保安公司管理员
params["deptId"] = that.userInfo.dept_id;
}
+ if (
+ roleAlias == "培训公司管理员"
+ ) {
+ //如果是培训公司管理员
+ params["trainUnitId"] = that.userInfo.dept_id;
+ }
that.questionBankLoading = false;
params["examType"] = 2;
getList(
diff --git a/src/views/traincompany/index.vue b/src/views/traincompany/index.vue
index 86882d7..9c6095c 100644
--- a/src/views/traincompany/index.vue
+++ b/src/views/traincompany/index.vue
@@ -35,6 +35,7 @@
size="small"
icon="el-icon-edit"
v-if="permission.traincompany_addTrain"
+ :disabled="auditStatus"
@click="handleTrainApply(row)"
>报名
</el-button>
@@ -71,12 +72,13 @@
import {adddata,batchTrain} from "@/api/trainingRegistration/trainingRegistration";
import { mapGetters } from "vuex";
import { mapState } from 'vuex';
-
+import {getUser} from "@/api/system/user";
export default {
data() {
return {
form: {},
+ auditStatus:false,
formTrainApply: {},
query: {},
deptId:null,
@@ -116,7 +118,7 @@
display: false,
},
{
- label: "法定代表人",
+ label: "校长",
prop: "representative",
display: false,
search: true,
@@ -125,37 +127,18 @@
width: 120,
},
{
- label: "注册时间",
- prop: "establishtime",
- type: "date",
- format: "yyyy-MM-dd",
- valueFormat: "yyyy-MM-dd",
- mock: {
- type: "datetime",
- format: "yyyy-MM-dd",
- },
- display: false,
- width: 180,
+ label: "负责人",
+ prop: "contacts",
+ display: false
},
{
- label: "注册资金",
- prop: "registeredcapital",
+ label: "联系方式",
+ prop: "contactscell",
display: false,
width: 130,
},
{
- label: "实缴资金",
- prop: "capital",
- display: false,
- width: 130,
- },
- {
- label: "公司类型",
- prop: "enterprises",
- display: false,
- },
- {
- label: "注册地址",
+ label: "联系地址",
prop: "address",
display: false,
width: 280,
@@ -271,10 +254,23 @@
},
created() {
this.optionTrainApply.column[1].dicUrl =
- "/api/blade-user/security-apply-tree?deptId=" +
+ "/api/blade-user/security-apply-tree?examType=2&deptId=" +
this.userInfo.dept_id;
+
+ this.getUserDetail();
},
methods: {
+ //获取用户信息
+ getUserDetail(){
+ var that = this;
+ getUser(this.userInfo.Id).then((res)=>{
+ var status = res.data.data.examinationType;
+ if(status=='1'){
+ that.auditStatus = true;
+ }
+ console.log(that.auditStatus,3333);
+ })
+ },
//保安公司批量报名
handleTrainApplyBatch(row){
this.dialogDisable = true;
@@ -318,34 +314,40 @@
},
//未持证保安人员报名
handleTrainApply(row,done,loading){
- row['userId'] = this.userInfo.user_id;
- row['trainingUnitId'] = row.departmentid;
- adddata(row).then(
- (res) => {
- // this.onLoad(this.page);
- if(res.data.data==201){
- this.$message({
- type: "warning",
- message:"已报名,不能重复报名",
- });
- }else if(res.data.data==201){
- this.$message({
- type: "warning",
- message:"报名失败",
- });
- }else{
- this.$message({
- type: "success",
- message:"报名成功",
- });
+ this.$confirm("是否确定报名?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning",
+ }).then(() => {
+ row['userId'] = this.userInfo.user_id;
+ row['trainingUnitId'] = row.departmentid;
+ adddata(row).then(
+ (res) => {
+ // this.onLoad(this.page);
+ if(res.data.data==201){
+ this.$message({
+ type: "warning",
+ message:"已报名,不能重复报名",
+ });
+ }else if(res.data.data==201){
+ this.$message({
+ type: "warning",
+ message:"报名失败",
+ });
+ }else{
+ this.$message({
+ type: "success",
+ message:"报名成功",
+ });
+ }
+ done();
+ },
+ (error) => {
+ window.console.log(error);
+ loading();
}
- done();
- },
- (error) => {
- window.console.log(error);
- loading();
- }
- );
+ );
+ })
},
//关闭窗口清除数据
closeDialog(){
diff --git a/src/views/trainingRegistration/data.js b/src/views/trainingRegistration/data.js
index f08ae3d..c05d907 100644
--- a/src/views/trainingRegistration/data.js
+++ b/src/views/trainingRegistration/data.js
@@ -35,6 +35,7 @@
}],
searchSpan: 4,
searchLabelWidth: 110,
+ width: 200,
}, {
label: "姓名",
prop: "userId",
@@ -126,29 +127,82 @@
message: "请输入单位名称",
trigger: "blur"
}],
+
},
{
label: "考试名称",
- prop: "trainExamName"
+ prop: "trainExamName",
+ width: 220,
},
{
label: "考试证件",
prop: "applyCard"
},
- // {
- // label: "报名状态",
- // prop: "cancel",
- // // search: true,
- // dicData: DIC1,
- // props: {
- // label: "label",
- // value: "value"
- // },
- // editDisplay: false,
- // addDisplay: false,
- // searchSpan: 4,
- // width: 100,
- // },
+ {
+ label: "审核状态",
+ search: true,
+ searchLabelWidth: 110,
+ type: "select",
+ searchSpan: 4,
+ prop: "auditStatus",
+ searchValue: 4,
+ dicData: [{
+ label: '全部',
+ value: 0,
+ },
+ {
+ label: '审核通过',
+ value: 1,
+ },
+ {
+ label: '审核不通过',
+ value: 2,
+ },
+ {
+ label: '已提交审核',
+ value: 3,
+ },
+ {
+ label: '未提交审核',
+ value: 4,
+ }
+ ],
+ props: {
+ label: "label",
+ value: "value"
+ },
+ editDisplay: false,
+ addDisplay: false,
+ width: 100,
+ },
+ {
+ label: "报名状态",
+ search: true,
+ type: "select",
+ searchSpan: 4,
+ prop: "cancel",
+ searchValue: 1,
+ dicData: [{
+ label: '全部',
+ value: 0,
+ },
+ {
+ label: '已报名',
+ value: 1,
+ },
+ {
+ label: '已取消',
+ value: 2,
+ }
+ ],
+ props: {
+ label: "label",
+ value: "value"
+ },
+ editDisplay: false,
+ addDisplay: false,
+ width: 100,
+ },
// {
// label: "确认截止时间",
// prop: "remainingTime",
diff --git a/src/views/trainingRegistration/index.vue b/src/views/trainingRegistration/index.vue
index 8005c94..372c962 100644
--- a/src/views/trainingRegistration/index.vue
+++ b/src/views/trainingRegistration/index.vue
@@ -5,6 +5,7 @@
:table-loading="loading"
:data="data"
:page.sync="page"
+ :search.sync="search"
ref="crud"
@row-del="rowDel"
v-model="form"
@@ -57,6 +58,7 @@
:size="size"
:type="type"
v-if="permission.trainingRegistration_cancel"
+ :disabled="row.cancel==2"
>取消报名</el-button
>
<el-button
@@ -64,7 +66,7 @@
size="small"
icon="el-icon-receiving"
v-if="permission.trainingRegistration_print"
- :disabled="row.candidateNo == ''"
+ :disabled="row.candidateNo == '' || row.cancel==2"
@click="handlePrint(row)"
>准考证打印
</el-button>
@@ -127,12 +129,14 @@
addExam,
} from "@/api/trainingRegistration/trainingRegistration";
import { mapGetters } from "vuex";
+import { getRoleDetail } from "@/api/system/role";
export default {
data() {
return {
loading: true,
excelBox: false,
dialogExamFormVisible: false,
+ search:{},
optionExamApply: {
height: "auto",
filterBtn: true,
@@ -145,27 +149,79 @@
index: true,
stripe: true,
viewBtn: true,
- selection: true,
+ selection: false,
excelBtn: false,
menuWidth: 380,
dialogClickModal: false,
column: [
- // {
- // label: "考试人数",
- // prop: "number",
- // type: 'number',
- // span: 6,
- // precision:2,
- // mock:{
- // type:'number',
- // max:500,
- // min:50,
- // precision:50
- // },
- // minRows: 0,
- // maxRows: 3,
- // row:true,
- // },
+ {
+ label: "考试人数",
+ prop: "number",
+ type: 'number',
+ span: 12,
+ precision:0,
+ step:50,
+ mock:{
+ type:'number',
+ max:1000,
+ min:0,
+ precision:0
+ },
+ rules: [
+ {
+ required: true,
+ message: "请输入考试人数",
+ trigger: "blur",
+ },
+ ],
+ minRows: 0,
+ maxRows: 1000,
+ value:50,
+ },
+ {
+ label: "序号开始",
+ prop: "serialStart",
+ span: 6,
+ value:1,
+ mock:{
+ type:'number',
+ max:1000,
+ min:1,
+ precision:0
+ },
+ minRows: 1,
+ maxRows: 1000,
+ type:"number",
+ rules: [
+ {
+ required: true,
+ message: "请输入序号",
+ trigger: "blur",
+ },
+ ],
+ },
+ {
+ label: "序号结束",
+ prop: "serialEnd",
+ span: 6,
+ value:50,
+ mock:{
+ type:'number',
+ max:1000,
+ min:1,
+ precision:0
+ },
+ minRows: 1,
+ maxRows: 1000,
+ type:"number",
+ rules: [
+ {
+ required: true,
+ message: "请输入序号",
+ trigger: "blur",
+ },
+ ],
+ },
{
label: "考试时间",
prop: "startTime",
@@ -191,7 +247,34 @@
trigger: "blur",
},
],
- span: 24,
+ span: 12,
+ },
+ {
+ label: "截止时间",
+ prop: "endTime",
+ type: "datetime",
+ format: "yyyy-MM-dd HH:mm",
+ valueFormat: "yyyy-MM-dd HH:mm",
+ // 表单新增时是否禁止
+ addDisabled: false,
+ // 表单新增时是否可见
+ addDisplay: true,
+ // 表单新增时是否为查看模式
+ addDetail: false,
+ // 表单编辑时是否禁止
+ editDisabled: false,
+ // 表单编辑时是否可见
+ editDisplay: true,
+ // 表单编辑时是否为查看模式
+ editDetail: false,
+ rules: [
+ {
+ required: true,
+ message: "请选择考试时间",
+ trigger: "blur",
+ },
+ ],
+ span: 12,
},
],
},
@@ -239,7 +322,7 @@
labelWidth: "120",
menuWidth: 200,
align: "center",
- selection: true,
+ selection: false,
column: column,
delBtn: false,
editBtn: false,
@@ -264,6 +347,11 @@
editBtn: this.vaildData(this.permission.notice_edit, false),
};
},
+
+ },
+ created(){
+ this.search['cancel'] = 1;
+ this.search['auditStatus'] = 4;
},
methods: {
//准考证查看
@@ -276,15 +364,12 @@
});
},
sizeChange(val) {
- this.page1.currentPage = 1;
- this.page1.pageSize = val;
+ this.page.pageSize = val;
this.getData();
- // this.$message.success("行数" + val);
},
currentChange(val) {
- this.page1.currentPage = val;
+ this.page.currentPage = val;
this.getData();
- // this.$message.success("页码" + val);
},
rowSave(form, done, loading) {
var that = this;
@@ -326,8 +411,6 @@
this.onLoad(this.page);
},
rowUpdate(row, index, done, loading) {
- // console.log(row);
-
update(row).then(
() => {
this.onLoad(this.page);
@@ -437,18 +520,41 @@
},
onLoad(page, params = {}) {
this.loading = true;
- getdata(
- page.currentPage,
- page.pageSize,
- Object.assign(params, this.query)
- ).then((res) => {
- // console.log(res);
- const data = res.data.data;
- this.page.total = data.total;
- this.data = data.records;
- console.log(this.data);
- this.loading = false;
- });
+ //判断角色,如果是保安公司管理员或保安,只能查看当前公司的考试成绩
+ var that = this;
+ //获取当前登录人员的角色信息
+ var roleIds = this.userInfo.role_id.split(",");
+ params = this.search;
+ roleIds.forEach((roleId) => {
+ getRoleDetail(roleId).then((res) => {
+ var roleAlias = res.data.data.roleAlias;
+ if (
+ roleAlias == "保安公司管理员" ||
+ roleAlias == "保安"
+ ) {
+ //如果是保安公司管理员
+ params["deptId"] = that.userInfo.dept_id;
+ }
+ if (
+ roleAlias == "培训公司管理员"
+ ) {
+ //如果是培训公司管理员
+ params["trainingUnitId"] = that.userInfo.dept_id;
+ }
+ getdata(
+ page.currentPage,
+ page.pageSize,
+ Object.assign(params, this.query)
+ ).then((res) => {
+ // console.log(res);
+ const data = res.data.data;
+ this.page.total = data.total;
+ this.data = data.records;
+ console.log(this.data);
+ this.loading = false;
+ });
+ })
+ })
},
handleImport() {
this.excelBox = true;
@@ -474,19 +580,37 @@
//生成考试
submitExamApply(row, done, loading) {
var that = this;
- var startTime = row.startTime + ":00";
- // var endTime = row.examTime[1];
- // var examTime = JSON.stringify(row.examTime);
- // console.log(this.ids,111);
- addExam(this.ids, null, startTime, null).then(
+ row.startTime = row.startTime + ":00";
+ row.endTime = row.endTime + ":00";
+ if(row.number!=((row.serialEnd-row.serialStart)+1)){
+ this.$message({
+ type: "error",
+ message: "考试人数与序号不匹配!",
+ });
+ done();
+ return;
+ }
+
+ var s = new Date(row.startTime);
+ var e = new Date(row.endTime);
+ if(s>e){
+ this.$message({
+ type: "error",
+ message: "截止时间不能早于考试考试开始时间!",
+ });
+ done();
+ return;
+ }
+
+ addExam(Object.assign(row, this.search)).then(
() => {
this.onLoad(this.page);
- this.$message({
- type: "success",
- message: "操作成功!",
- });
that.$refs.formExamApply.resetFields();
that.dialogExamFormVisible = false;
+ this.$message({
+ type: "success",
+ message: "操作成功",
+ });
done();
},
(error) => {
@@ -499,14 +623,6 @@
closeDialog() {
this.$refs.formExamApply.resetFields();
},
- },
- mounted() {
- // this.Ourdata = data;
- // this.getData();
- // this.onLoad(this.page);
- // var dept_id = JSON.parse(
- // window.localStorage.getItem("saber-userInfo")
- // ).content.dept_id;
},
};
</script>
diff --git a/src/views/zc/zc.vue b/src/views/zc/zc.vue
new file mode 100644
index 0000000..1ff5804
--- /dev/null
+++ b/src/views/zc/zc.vue
@@ -0,0 +1,295 @@
+<template>
+ <basic-container>
+ <avue-crud :option="option"
+ :table-loading="loading"
+ :data="data"
+ :page.sync="page"
+ :permission="permissionList"
+ :before-open="beforeOpen"
+ v-model="form"
+ ref="crud"
+ @row-update="rowUpdate"
+ @row-save="rowSave"
+ @row-del="rowDel"
+ @search-change="searchChange"
+ @search-reset="searchReset"
+ @selection-change="selectionChange"
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ @refresh-change="refreshChange"
+ @on-load="onLoad">
+ <template slot="menuLeft">
+ <el-button type="danger"
+ size="small"
+ icon="el-icon-delete"
+ plain
+ v-if="permission.zc_delete"
+ @click="handleDelete">删 除
+ </el-button>
+ </template>
+ <template slot-scope="{row}" slot="type">
+ <el-tag>{{row.type==='0'?'未审核':row.type==='1'?'审核通过':'审核未通过'}}</el-tag>
+ </template>
+
+ <template slot-scope="{row}"
+ slot="roleName">
+ <el-tag>{{row.roleName}}</el-tag>
+ </template>
+ <template slot-scope="scope" slot="menu">
+ <el-button icon="el-icon-check" size="small" @click.stop="handleEdit(scope.row,scope.index)">审核</el-button>
+ </template>
+ </avue-crud>
+
+
+ </basic-container>
+</template>
+
+<script>
+ import {getList, getDetail, add, update, remove} from "@/api/zc/zc";
+ import {getRoleTree} from "@/api/system/role";
+ import {mapGetters} from "vuex";
+
+ export default {
+ data() {
+ return {
+ form: {},
+ query: {},
+ loading: true,
+ page: {
+ pageSize: 10,
+ currentPage: 1,
+ total: 0
+ },
+ selectionList: [],
+ option: {
+ height:'auto',
+ calcHeight: 54,
+ tip: false,
+ searchShow: true,
+ searchMenuSpan: 4,
+ border: true,
+ index: true,
+ viewBtn: true,
+ selection: true,
+ headerAlign: 'center',
+ align: 'center',
+ dialogClickModal: false,
+ column: [
+ {
+ label: "账号",
+ searchSpan:4,
+ display: false,
+ search: true,
+ disabled:true,
+ prop: "username",
+ },
+ {
+ label: "密码",
+ hide: true,
+ editDisplay: false,
+ viewDisplay: false,
+ prop: "password",
+ },
+ {
+ label: "姓名",
+ display: false,
+ search: true,
+ searchSpan:4,
+ disabled:true,
+ prop: "sname",
+ },
+ {
+ label: "身份证号",
+ disabled:true,
+ search: true,
+ display: false,
+ prop: "cardid",
+ },
+ {
+ label: "部门",
+ editDisplay: false,
+ prop: "deptName",
+ },
+ {
+ label: "角色",
+ prop: "parentId",
+ hide: true,
+ dicData: [],
+ type: "tree",
+ props: {
+ label: "title"
+ },
+ },
+ {
+ label: "审核状态",
+ prop: "type",
+ search: true,
+ slot: true,
+ searchSpan:4,
+ type: "select",
+ dicData: [
+ {
+ label: "未审核",
+ value: "0"
+ },
+ {
+ label: "审核通过",
+ value: "1"
+ },
+ {
+ label: "审核不通过",
+ value: "2"
+ }
+
+ ],
+ }
+ ]
+ },
+ data: []
+ };
+ },
+ computed: {
+ ...mapGetters(["permission"]),
+ permissionList() {
+ return {
+ addBtn: this.vaildData(this.permission.zc_add, false),
+ viewBtn: this.vaildData(this.permission.zc_view, true),
+ delBtn: this.vaildData(this.permission.zc_delete, false),
+ editBtn: this.vaildData(this.permission.zc_edit, false)
+ };
+ },
+ ids() {
+ let ids = [];
+ this.selectionList.forEach(ele => {
+ ids.push(ele.id);
+ });
+ return ids.join(",");
+ }
+ },
+ methods: {
+ initData(){
+ getRoleTree().then(res => {
+ const column = this.findObject(this.option.column, "parentId");
+ column.dicData = res.data.data;
+ });
+ },
+ handleEdit (row, index) {
+ this.initData();
+ this.$refs.crud.rowEdit(row, index);
+ },
+ rowSave(row, done, loading) {
+ add(row).then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ done();
+ }, error => {
+ loading();
+ window.console.log(error);
+ });
+ },
+ rowUpdate(row, index, done, loading) {
+ update(row).then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ done();
+ }, error => {
+ loading();
+ console.log(error);
+ });
+ },
+ rowDel(row) {
+ this.$confirm("确定将选择数据删除?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(row.id);
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ });
+ },
+ handleDelete() {
+ if (this.selectionList.length === 0) {
+ this.$message.warning("请选择至少一条数据");
+ return;
+ }
+ this.$confirm("确定将选择数据删除?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(this.ids);
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ this.$refs.crud.toggleSelection();
+ });
+ },
+ beforeOpen(done, type) {
+ if (["edit", "view"].includes(type)) {
+ getDetail(this.form.id).then(res => {
+ this.form = res.data.data;
+ });
+ }
+ done();
+ },
+ searchReset() {
+ this.query = {};
+ this.onLoad(this.page);
+ },
+ searchChange(params, done) {
+ this.query = params;
+ this.page.currentPage = 1;
+ this.onLoad(this.page, params);
+ done();
+ },
+ selectionChange(list) {
+ this.selectionList = list;
+ },
+ selectionClear() {
+ this.selectionList = [];
+ this.$refs.crud.toggleSelection();
+ },
+ currentChange(currentPage){
+ this.page.currentPage = currentPage;
+ },
+ sizeChange(pageSize){
+ this.page.pageSize = pageSize;
+ },
+ refreshChange() {
+ this.onLoad(this.page, this.query);
+ },
+ onLoad(page, params = {}) {
+ this.loading = true;
+ getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+ const data = res.data.data;
+ this.page.total = data.total;
+ this.data = data.records;
+ this.loading = false;
+ this.selectionClear();
+ });
+ }
+ }
+ };
+</script>
+
+<style>
+
+</style>
--
Gitblit v1.9.3