From 4ef6c36c631c3aa3916e0861fd211dec9b03231b Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期一, 08 一月 2024 09:54:05 +0800
Subject: [PATCH] 修改跳转
---
src/views/coalMine/cTeacherManage/cReviewer/index.vue | 55 ++-
src/layout/components/Navbar.vue | 6
src/views/notCoalMine/nTeacherManage/nReviewer/index.vue | 58 +++-
src/views/system/user/profile/index.vue | 8
src/views/notCoalMine/nPeopleManage/components/peopleDialog.vue | 31 +-
src/views/notCoalMine/nTeacherManage/nTeacher/index.vue | 78 +++--
src/utils/validate.js | 7
src/views/notCoalMine/nCertificateList/components/certificateDialog.vue | 35 ++
src/views/register.vue | 15 +
src/views/system/user/index.vue | 6
src/api/coalMine/teacher.js | 5
src/views/login.vue | 6
src/views/notCoalMine/nPeopleManage/components/certDialog.vue | 281 +++++++++++++++++++++
src/views/system/user/profile/resetPwd.vue | 15 +
src/views/notCoalMine/nPeopleManage/index.vue | 34 +
src/views/coalMine/cPeopleManage/index.vue | 5
src/views/coalMine/cTeacherManage/cTeacher/index.vue | 77 +++--
17 files changed, 576 insertions(+), 146 deletions(-)
diff --git a/src/api/coalMine/teacher.js b/src/api/coalMine/teacher.js
index 3751212..ba2687e 100644
--- a/src/api/coalMine/teacher.js
+++ b/src/api/coalMine/teacher.js
@@ -1,11 +1,10 @@
import request from '@/utils/request'
// 数据分页
-export function getTeacherPage(query) {
+export function getTeacherPage(queryParams) {
return request({
- url: '/teacherManage/page',
+ url: `/teacherManage/pageByCondition?pageNum=${queryParams.pageNum}&pageSize=${queryParams.pageSize}&operateTypeId=${queryParams.operateTypeId}&isCm=${queryParams.isCm}`,
method: 'get',
- params: query
})
}
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 08a8dd8..b47929b 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -31,9 +31,9 @@
<i class="el-icon-caret-bottom" />
</div>
<el-dropdown-menu slot="dropdown">
-<!-- <router-link to="/user/profile">-->
-<!-- <el-dropdown-item>个人中心</el-dropdown-item>-->
-<!-- </router-link>-->
+ <router-link to="/user/profile">
+ <el-dropdown-item>个人中心</el-dropdown-item>
+ </router-link>
<el-dropdown-item @click.native="setting = true">
<span>布局设置</span>
</el-dropdown-item>
diff --git a/src/utils/validate.js b/src/utils/validate.js
index e689132..c7bd099 100644
--- a/src/utils/validate.js
+++ b/src/utils/validate.js
@@ -24,6 +24,13 @@
return reg.test(url)
}
+export function verifyPwd(val) {
+ // false: 强密码不正确
+ if (!/^(?![a-zA-Z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-Z\d]+$)(?![a-zA-Z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*\-_]{6,16}$/.test(val)) return false;
+ // true: 强密码正确
+ else return true;
+}
+
/**
* @param {string} str
* @returns {Boolean}
diff --git a/src/views/coalMine/cPeopleManage/index.vue b/src/views/coalMine/cPeopleManage/index.vue
index 1b91ecc..757b18b 100644
--- a/src/views/coalMine/cPeopleManage/index.vue
+++ b/src/views/coalMine/cPeopleManage/index.vue
@@ -62,7 +62,8 @@
</el-table-column>
<el-table-column label="证件照片" align="center" prop="photoPath">
<template #default="scope">
- <el-button type="text" @click="viewFile(scope.row.photoAttachment)">预览</el-button>
+ <el-button type="text" v-if="scope.row.photoAttachment && scope.row.photoAttachment.fileUrl !==''" @click="viewFile(scope.row.photoAttachment)">预览</el-button>
+ <span type="text" v-else>暂无</span>
</template>
</el-table-column>
<!-- <el-table-column label="个人履历" align="center">-->
@@ -230,7 +231,7 @@
},
viewFile(file){
const t = this
- axios.get(process.env.VUE_APP_BASE_API + file.fileUrl,{headers:{'Content-Type': 'application/json','Authorization': "Bearer " + getToken()},responseType: 'blob'}).then(res=>{
+ axios.get(process.env.VUE_APP_BASE_API + file.fileUrl,{headers:{'Content-Type': 'application/json','Authorization': "Bearer " + getToken()},responseType: 'blob',timeout: 3000}).then(res=>{
if (res && res.data) {
const link = document.createElement('a')
let blob = new Blob([res.data],{type: res.data.type})
diff --git a/src/views/coalMine/cTeacherManage/cReviewer/index.vue b/src/views/coalMine/cTeacherManage/cReviewer/index.vue
index 42c1660..e9e85bc 100644
--- a/src/views/coalMine/cTeacherManage/cReviewer/index.vue
+++ b/src/views/coalMine/cTeacherManage/cReviewer/index.vue
@@ -1,21 +1,12 @@
<template>
<div class="app-container">
<!-- <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">-->
-<!-- <el-form-item label="用户姓名" prop="userName">-->
-<!-- <el-input-->
-<!-- v-model="queryParams.userName"-->
-<!-- placeholder="请输入用户姓名"-->
-<!-- clearable-->
-<!-- @keyup.enter.native="handleQuery"-->
-<!-- />-->
-<!-- </el-form-item>-->
-<!-- <el-form-item label="身份证号" prop="idCard">-->
-<!-- <el-input-->
-<!-- v-model="queryParams.idCard"-->
-<!-- placeholder="请输入身份证号"-->
-<!-- clearable-->
-<!-- @keyup.enter.native="handleQuery"-->
-<!-- />-->
+<!-- <el-form-item label="工种类型" prop="userName">-->
+<!-- <el-cascader-->
+<!-- v-model="queryParams.operate"-->
+<!-- :options="typeList"-->
+<!-- style="width: 100%"-->
+<!-- :props="{ expandTrigger: 'hover', value: 'id',label: 'name'}"></el-cascader>-->
<!-- </el-form-item>-->
<!-- <el-form-item>-->
<!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>-->
@@ -25,6 +16,14 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-upload"
+ size="mini"
+ @click="openUpload"
+ v-hasPermi="['system:experts:add']"
+ >导入</el-button>
<el-button
type="primary"
plain
@@ -44,7 +43,12 @@
{{ scope.row.sex == 0?'男':'女' }}
</template>
</el-table-column>
- <el-table-column label="身份证号" align="center" prop="code" />
+ <el-table-column label="身份证号" align="center" prop="code">
+ <template #default="scope">
+ {{scope.row.code | peridcardtm}}
+ </template>
+ </el-table-column>
+ <el-table-column label="手机号" align="center" prop="mobilePhone" />
<el-table-column label="最高学历" align="center" prop="eduLevel">
<template #default="scope">
{{getDegreeName(scope.row.eduLevel)}}
@@ -107,6 +111,7 @@
import axios from "axios";
import {getToken} from "@/utils/auth";
import {delPeople} from "@/api/coalMine/people";
+import {getOperatePage} from "@/api/coalMine/operateType";
export default {
name: "cTeacherManage",
@@ -130,6 +135,7 @@
created() {
const t = this
t.getPage()
+ t.getList()
},
methods: {
async getPage(){
@@ -146,7 +152,19 @@
}
this.loading = false
},
-
+ async getList() {
+ this.loading = true;
+ const res = await getOperatePage({name: ''})
+ if(res.code == 200){
+ this.typeList = this.handleTree(res.data, "id");
+ }else{
+ this.$message({
+ type: 'warning',
+ message: res.msg
+ });
+ }
+ this.loading = false;
+ },
openDialog(data,type){
this.$refs.reviewerDialog.openDialog(data,type)
},
@@ -158,7 +176,8 @@
},
handleQuery(){
-
+ this.queryParams.pageNum = 1
+ this.getPage()
},
resetQuery(){
this.queryParams = {
diff --git a/src/views/coalMine/cTeacherManage/cTeacher/index.vue b/src/views/coalMine/cTeacherManage/cTeacher/index.vue
index da78459..f1a3e59 100644
--- a/src/views/coalMine/cTeacherManage/cTeacher/index.vue
+++ b/src/views/coalMine/cTeacherManage/cTeacher/index.vue
@@ -1,30 +1,29 @@
<template>
<div class="app-container">
-<!-- <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">-->
-<!-- <el-form-item label="用户姓名" prop="userName">-->
-<!-- <el-input-->
-<!-- v-model="queryParams.userName"-->
-<!-- placeholder="请输入用户姓名"-->
-<!-- clearable-->
-<!-- @keyup.enter.native="handleQuery"-->
-<!-- />-->
-<!-- </el-form-item>-->
-<!-- <el-form-item label="身份证号" prop="idCard">-->
-<!-- <el-input-->
-<!-- v-model="queryParams.idCard"-->
-<!-- placeholder="请输入身份证号"-->
-<!-- clearable-->
-<!-- @keyup.enter.native="handleQuery"-->
-<!-- />-->
-<!-- </el-form-item>-->
-<!-- <el-form-item>-->
-<!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>-->
-<!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>-->
-<!-- </el-form-item>-->
-<!-- </el-form>-->
+ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+ <el-form-item label="工种类型" prop="userName">
+ <el-cascader
+ v-model="queryParams.operateTypeId "
+ :options="typeList"
+ style="width: 100%"
+ :props="{ expandTrigger: 'hover', value: 'id',label: 'name',emitPath: false,checkStrictly: true}"></el-cascader>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+ </el-form-item>
+ </el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-upload"
+ size="mini"
+ @click="openUpload"
+ v-hasPermi="['system:experts:add']"
+ >导入</el-button>
<el-button
type="primary"
plain
@@ -44,7 +43,12 @@
{{ scope.row.sex == 0?'男':'女' }}
</template>
</el-table-column>
- <el-table-column label="身份证号" align="center" prop="code" />
+ <el-table-column label="身份证号" align="center" prop="code">
+ <template #default="scope">
+ {{scope.row.code | peridcardtm}}
+ </template>
+ </el-table-column>
+ <el-table-column label="手机号" align="center" prop="mobilePhone" />
<el-table-column label="最高学历" align="center" prop="eduLevel">
<template #default="scope">
{{getDegreeName(scope.row.eduLevel)}}
@@ -86,7 +90,7 @@
<pagination
v-show="total>0"
:total="total"
- :page.sync="queryParams.pageIndex"
+ :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getPage"
/>
@@ -107,6 +111,7 @@
import axios from "axios";
import {getToken} from "@/utils/auth";
import {delPeople} from "@/api/coalMine/people";
+import {getOperatePage} from "@/api/coalMine/operateType";
export default {
name: "cTeacherManage",
@@ -119,10 +124,12 @@
typeVisible: false,
workType: [],
dataList: [],
+ typeList: [],
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
+ operateTypeId: 0,
isCm: '1'
}
};
@@ -130,6 +137,7 @@
created() {
const t = this
t.getPage()
+ t.getList()
},
methods: {
async getPage(){
@@ -146,9 +154,24 @@
}
this.loading = false
},
-
+ async getList() {
+ this.loading = true;
+ const res = await getOperatePage({name: ''})
+ if(res.code == 200){
+ this.typeList = this.handleTree(res.data, "id");
+ }else{
+ this.$message({
+ type: 'warning',
+ message: res.msg
+ });
+ }
+ this.loading = false;
+ },
openDialog(data,type){
this.$refs.teacherDialog.openDialog(data,type)
+ },
+ openUpload(){
+ this.$message.error('请联系开发人员规范导入')
},
openWorkType(row){
this.workType = row.operateTypes
@@ -158,12 +181,14 @@
},
handleQuery(){
-
+ this.queryParams.pageNum = 1
+ this.getPage()
},
resetQuery(){
this.queryParams = {
pageNum: 1,
pageSize: 10,
+ operateTypeId: 0,
isCm: 1
}
this.getPage()
diff --git a/src/views/login.vue b/src/views/login.vue
index f418855..4ced06e 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -55,9 +55,9 @@
</el-form-item>
</el-form>
<!-- 底部 -->
- <div class="el-login-footer">
- <span>技术支持:中国科学院</span>
- </div>
+<!-- <div class="el-login-footer">-->
+<!-- <span>技术支持:中国科学院</span>-->
+<!-- </div>-->
</div>
</template>
diff --git a/src/views/notCoalMine/nCertificateList/components/certificateDialog.vue b/src/views/notCoalMine/nCertificateList/components/certificateDialog.vue
index abb4e1c..c0316e1 100644
--- a/src/views/notCoalMine/nCertificateList/components/certificateDialog.vue
+++ b/src/views/notCoalMine/nCertificateList/components/certificateDialog.vue
@@ -92,11 +92,14 @@
<el-row>
<el-col :span="20">
- <el-form-item label="图片查看" prop="imgPath">
- <el-image
- style="width: 100px; height: 100px"
- :src="imgPath"
- fit="fill"></el-image>
+<!-- <el-form-item label="图片查看" prop="imgPath">-->
+<!-- <el-image-->
+<!-- style="width: 100px; height: 100px"-->
+<!-- src="http://inspurtestcx.saws.org.cn/zwfile/zwdownload?filePath=QRCODE/2020/12/01/QRCODE362421197712217718_A12000036320030846.jpg"-->
+<!-- fit="fill"></el-image>-->
+<!-- </el-form-item>-->
+ <el-form-item label="图片查看">
+ <el-link type="primary" style="margin-right: 20px" @click="downloadFile(form.imgPath)" target="_blank">点击查看</el-link>
</el-form-item>
</el-col>
</el-row>
@@ -115,6 +118,7 @@
<script>
// import {getExpertTypes,addExpertInfo,uploadFile} from '@/api/system/form'
// import { verifySimplePhone, verifyIdCard } from "@/utils/validate";
+import axios from "axios";
export default {
name: "nCertificateDialog",
dicts: ['sys_nation_code'],
@@ -314,7 +318,26 @@
},
changeSource(num){
this.form.source = num
- }
+ },
+
+ downloadFile(file){
+ const t = this
+ axios.get(file,{headers:{'Content-Type': 'application/json','Authorization': "Bearer " + getToken()},responseType: 'blob'}).then(res=>{
+ if (res) {
+ const link = document.createElement('a')
+ let blob = new Blob([res.data],{type: res.data.type})
+ link.style.display = "none";
+ link.href = URL.createObjectURL(blob); // 创建URL
+ window.open(link.href)
+ // link.setAttribute("download", file.name);
+ // document.body.appendChild(link);
+ // link.click();
+ // document.body.removeChild(link);
+ } else {
+ this.$message.error('获取文件失败')
+ }
+ })
+ },
}
};
</script>
diff --git a/src/views/notCoalMine/nPeopleManage/components/certDialog.vue b/src/views/notCoalMine/nPeopleManage/components/certDialog.vue
new file mode 100644
index 0000000..d4bd266
--- /dev/null
+++ b/src/views/notCoalMine/nPeopleManage/components/certDialog.vue
@@ -0,0 +1,281 @@
+<template>
+ <el-dialog title="资格证书" :visible.sync="open" width="50%" append-to-body>
+ <div class="app-container home">
+ <el-row :gutter="10" class="mb8">
+<!-- <el-col :span="1.5">-->
+<!-- <el-button-->
+<!-- type="primary"-->
+<!-- plain-->
+<!-- icon="el-icon-plus"-->
+<!-- size="mini"-->
+<!-- @click="openEdit({},'add')"-->
+<!-- v-hasPermi="['system:experts:add']"-->
+<!-- >新增</el-button>-->
+<!-- </el-col>-->
+<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
+ </el-row>
+ <el-table v-loading="loading" :data="dataList">
+ <el-table-column type="index" label="序号" width="55" align="center" />
+ <el-table-column label="证书编号" align="center" prop="certNum"/>
+ <el-table-column label="资格类型" align="center" prop="personTypeName" />
+ <el-table-column label="作业类别" align="center" prop="jobTypeName" />
+ <el-table-column label="操作项目" align="center" prop="operItemName" />
+ <el-table-column label="有效期至" align="center" prop="validEndDate"/>
+ <el-table-column label="有效期至" align="center" prop="validEndDate"/>
+<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
+<!-- <template #default="scope">-->
+<!-- <el-button-->
+<!-- size="mini"-->
+<!-- type="text"-->
+<!-- icon="el-icon-edit"-->
+<!-- @click="openEdit(scope.row,'edit')"-->
+<!-- >编辑</el-button>-->
+<!-- <el-button-->
+<!-- size="mini"-->
+<!-- type="text"-->
+<!-- style="color: #f56c6c"-->
+<!-- icon="el-icon-delete"-->
+<!-- @click="handleDelete(scope.row,scope.index)"-->
+<!-- v-hasPermi="['system:experts:remove']"-->
+<!-- >删除</el-button>-->
+<!-- </template>-->
+<!-- </el-table-column>-->
+ </el-table>
+ <el-dialog :title="title" :visible.sync="dialogVisible" width="50%" append-to-body>
+ <el-form :model="form" :rules="rules" ref="ruleForm" label-width="200px">
+ <el-row>
+ <el-col :span="20">
+ <el-form-item label="证书名称" prop="name">
+ <el-input v-model="form.name"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="20">
+ <el-form-item label="资格类型" prop="operateTypeId">
+ <el-cascader
+ v-model="form.operateTypeId"
+ :options="typeList"
+ style="width: 100%"
+ :props="{ expandTrigger: 'hover', value: 'id',label: 'name',emitPath: false}"
+ @change="handleChange"></el-cascader>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="20">
+ <el-form-item label="过期时间" prop="expiredTime">
+ <el-date-picker
+ v-model="form.expiredTime"
+ value-format="yyyy-MM-dd"
+ style="width: 100%">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div style="width: 100%;padding-bottom: 30px;display: flex;justify-content: center">
+ <el-button type="primary" @click="submit()">提交</el-button>
+ </div>
+ </el-dialog>
+ </div>
+ </el-dialog>
+</template>
+
+<script>
+
+// import { verifySimplePhone, verifyIdCard } from "@/utils/validate";
+import {addCert, editCert, delCert} from "@/api/coalMine/people";
+import {getOperatePage} from "@/api/coalMine/operateType";
+
+export default {
+ name: "certDialog",
+ dicts: [],
+ components: { },
+ data() {
+ return {
+ open: false,
+ id: null,
+ dialogVisible: false,
+ title: '新增证书',
+ loading: false,
+ dataList: [],
+ typeList: [],
+ form: {
+ name: '',
+ id: null,
+ staffId: null,
+ expiredTime: '',
+ operateTypeId: null
+ },
+ rules: {
+ name: [{ required: true, message: "请填写证书名称", trigger: "blur" }],
+ expiredTime: [{ required: true, message: "请选择过期时间", trigger: "blur" }],
+ operateTypeId: [{ required: true, message: "请选择资格类型", trigger: "blur" }]
+ }
+ };
+ },
+ created() {
+
+ },
+ methods: {
+ openDialog(data){
+ this.dataList = data.certList
+ this.id = data.id
+ this.getList()
+ this.open = true
+ },
+
+ async getList() {
+ this.loading = true;
+ const res = await getOperatePage({name: ''})
+ if(res.code == 200){
+ this.typeList = this.handleTree(res.data, "id");
+ }else{
+ this.$message({
+ type: 'warning',
+ message: res.msg
+ });
+ }
+ this.loading = false;
+ },
+
+ openEdit(data,type){
+ this.dialogVisible = true
+ if(type == 'add'){
+ this.title='新增证书'
+ this.form = {
+ name: '',
+ id: null,
+ staffId: this.id,
+ expiredTime: '',
+ operateTypeId: null
+ }
+ }else {
+ this.title='编辑证书'
+ for(let i in data){
+ if(this.isKey(i,this.form)){
+ this.form[i] = data[i]
+ }
+ }
+ }
+ },
+ isKey(key,obj){
+ return key in obj
+ },
+ handleDelete(row,index){
+ this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(async () => {
+ const res = await delCert(row.id)
+ if(res.code == 200){
+ this.$message({
+ type: 'success',
+ message: '删除成功!'
+ });
+ this.dialogVisible = false
+ this.open = false
+ this.$emit('closeDialog')
+ }else{
+ this.$message({
+ type: 'warning',
+ message: res.msg
+ });
+ }
+ }).catch(() => {
+
+ });
+ },
+ async submit(){
+ this.$refs["ruleForm"].validate(async(valid) =>{
+ if(valid) {
+ const obj = JSON.parse(JSON.stringify(this.form))
+ // console.log(obj.qualification[1],'obj',this.findNameById(this.typeList,obj.qualification[1]))
+ // if(obj.qualification.length == 2){
+ // obj.qualificationType = this.findNameById(this.typeList,obj.qualification[0])
+ // obj.jobCategory = this.findNameById(this.typeList,obj.qualification[1])
+ // obj.operateTypeId = this.obj.qualification[1]
+ // }
+ // if(obj.qualification.length == 3){
+ // obj.qualificationType = this.findNameById(this.typeList,obj.qualification[0])
+ // obj.jobCategory = this.findNameById(this.typeList,obj.qualification[1])
+ // obj.operationItems = this.findNameById(this.typeList,obj.qualification[2])
+ // obj.operateTypeId = obj.qualification[2]
+ // }
+ if(this.title == '新增证书'){
+ const {id,...data} = obj
+ const res = await addCert(data)
+ if(res.code == 200){
+ this.$message({
+ type:'success',
+ message: res.msg
+ })
+ this.dialogVisible = false
+ this.open = false
+ this.$emit('closeDialog')
+ }else{
+ this.$message({
+ type:'warning',
+ message: res.msg
+ })
+ }
+ }else{
+ const res= await editCert(obj)
+ if(res.code == 200){
+ this.$message({
+ type:'success',
+ message: res.msg
+ })
+ this.dialogVisible = false
+ this.open = false
+ this.$emit('closeDialog')
+ }else{
+ this.$message({
+ type:'warning',
+ message: res.msg
+ })
+ }
+ }
+ }else{
+ this.$message({
+ type:'warning',
+ message:'请完善必填信息'
+ })
+ }
+ })
+ },
+
+ findNameById(data,id){
+ for(const node of data){
+ if(node.id == id){
+ return node.name
+ }
+ if(node.children){
+ const foundName = this.findNameById(node.children,id)
+ if(foundName){
+ return foundName
+ }
+ }
+ }
+ return null
+ },
+
+ handleChange(){
+
+ },
+ handleQuery(){
+
+ },
+ resetQuery(){
+
+ },
+ }
+};
+</script>
+
+<style scoped lang="scss">
+.home {}
+</style>
+
diff --git a/src/views/notCoalMine/nPeopleManage/components/peopleDialog.vue b/src/views/notCoalMine/nPeopleManage/components/peopleDialog.vue
index 8eb5692..03bb939 100644
--- a/src/views/notCoalMine/nPeopleManage/components/peopleDialog.vue
+++ b/src/views/notCoalMine/nPeopleManage/components/peopleDialog.vue
@@ -79,10 +79,10 @@
<el-col :span="24">
<el-form-item label="违章记录">
<el-table :data="form.violationList" border>
- <el-table-column label="时间" align="center">
- <template #default="scope">
- {{scope.row.startTime + '--' + scope.row.endTime}}
- </template>
+ <el-table-column label="时间" align="center" prop="violationTime">
+<!-- <template #default="scope">-->
+<!-- {{scope.row.startTime + '--' + scope.row.endTime}}-->
+<!-- </template>-->
</el-table-column>
<el-table-column label="单位" align="center" prop="unit"/>
</el-table>
@@ -109,7 +109,7 @@
<el-table :data="form.trainList" border>
<el-table-column label="培训时间" align="center">
<template #default="scope">
- {{scope.row.startTime + '--' + scope.row.endTime}}
+ {{scope.row.startTime | formatDate }}--{{scope.row.endTime | formatDate}}
</template>
</el-table-column>
<el-table-column label="培训单位" align="center" prop="trainInstitutionName"/>
@@ -123,14 +123,11 @@
<el-col :span="24">
<el-form-item label="考试经历">
<el-table :data="form.examineeList" border>
- <el-table-column label="考试时间" align="center">
- <template #default="scope">
- {{scope.row.startTime + '--' + scope.row.endTime}}
- </template>
+ <el-table-column label="考试时间" align="center" prop="examTime">
</el-table-column>
- <el-table-column label="考试中心" align="center" prop="trainInstitutionName"/>
+ <el-table-column label="考试中心" align="center" prop="examCenter"/>
<el-table-column label="科目" align="center" prop="subject"/>
- <el-table-column label="考试结果" align="center" prop="trainInstitutionName"/>
+ <el-table-column label="考试结果" align="center" prop="result"/>
</el-table>
</el-form-item>
</el-col>
@@ -232,12 +229,12 @@
this.title = '查看人员'
this.disable = true
}
- // this.form = val
- for(let i in val){
- if(this.isValidKey(i,this.form)){
- this.form[i] = val[i]
- }
- }
+ this.form = val
+ // for(let i in val){
+ // if(this.isValidKey(i,this.form)){
+ // this.form[i] = val[i]
+ // }
+ // }
this.form.sex = Number(this.form.sex)
}
this.open = true
diff --git a/src/views/notCoalMine/nPeopleManage/index.vue b/src/views/notCoalMine/nPeopleManage/index.vue
index fa63a38..0dd1e86 100644
--- a/src/views/notCoalMine/nPeopleManage/index.vue
+++ b/src/views/notCoalMine/nPeopleManage/index.vue
@@ -63,7 +63,7 @@
<el-table-column label="最高学历" align="center" prop="highestEducation"/>
<el-table-column label="作业证书" align="center" prop="certCount">
<template #default="scope">
- <el-button v-if="scope.row.certCount>0" type="text">{{ scope.row.certCount }}</el-button>
+ <el-button v-if="scope.row.certCount>0" type="text" @click="openCert(scope.row)">{{ scope.row.certCount }}</el-button>
<span v-else>{{scope.row.certCount}}</span>
</template>
</el-table-column>
@@ -71,7 +71,8 @@
<el-table-column label="违章次数" align="center" prop="violationCount"/>
<el-table-column label="证件照片" align="center" prop="photoPath">
<template #default="scope">
- <el-button type="text" @click="viewFile(scope.row.photoPath)">预览</el-button>
+ <el-button type="text" v-if="scope.row.photoPath && scope.row.photoPath !==''" @click="viewFile(scope.row.photoPath)">预览</el-button>
+ <span type="text" v-else>暂无</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -99,6 +100,7 @@
@pagination="getPage"
/>
<peopleDialog ref="peopleDialog"></peopleDialog>
+ <certDialog ref="certDialog" @closeDialog="resetQuery"></certDialog>
</div>
</template>
@@ -107,11 +109,11 @@
import peopleDialog from "./components/peopleDialog";
import axios from "axios";
import {getToken} from "@/utils/auth";
-
+import certDialog from "@/views/notCoalMine/nPeopleManage/components/certDialog"
export default {
name: "nPeopleManage",
dicts: ['sys_nation_code'],
- components: { peopleDialog },
+ components: { peopleDialog, certDialog },
data() {
return {
loading: false,
@@ -178,7 +180,11 @@
},
viewFile(file){
const t = this
- axios.get(process.env.VUE_APP_BASE_API + file,{headers:{'Content-Type': 'application/json','Authorization': "Bearer " + getToken()},responseType: 'blob'}).then(res=>{
+ if(file.substring(0, 1) !== '/'){
+ t.$message.error('无效的图片地址')
+ return
+ }
+ axios.get(process.env.VUE_APP_BASE_API + file,{headers:{'Content-Type': 'application/json','Authorization': "Bearer " + getToken()},responseType: 'blob',timeout: 3000}).then(res=>{
if (res) {
const link = document.createElement('a')
let blob = new Blob([res.data],{type: res.data.type})
@@ -189,14 +195,18 @@
t.$message.error('获取文件失败')
}
}).catch(function(err){
- if(err == 'Error: Network Error'){
- t.$message.error('获取文件失败')
- }
- if(err == 'Error: Request failed with status code 404'){
- t.$message.error('获取文件失败')
- }
+ // if(err == 'Error: Network Error'){
+ // t.$message.error('获取文件失败')
+ // }else if(err == 'Error: Request failed with status code 404'){
+ // t.$message.error('获取文件失败')
+ // }else{
+ t.$message.error(err)
+ // }
})
- }
+ },
+ openCert(data){
+ this.$refs.certDialog.openDialog(data)
+ },
}
};
</script>
diff --git a/src/views/notCoalMine/nTeacherManage/nReviewer/index.vue b/src/views/notCoalMine/nTeacherManage/nReviewer/index.vue
index 94cfa70..e067e9d 100644
--- a/src/views/notCoalMine/nTeacherManage/nReviewer/index.vue
+++ b/src/views/notCoalMine/nTeacherManage/nReviewer/index.vue
@@ -1,21 +1,12 @@
<template>
<div class="app-container">
<!-- <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">-->
-<!-- <el-form-item label="用户姓名" prop="userName">-->
-<!-- <el-input-->
-<!-- v-model="queryParams.userName"-->
-<!-- placeholder="请输入用户姓名"-->
-<!-- clearable-->
-<!-- @keyup.enter.native="handleQuery"-->
-<!-- />-->
-<!-- </el-form-item>-->
-<!-- <el-form-item label="身份证号" prop="idCard">-->
-<!-- <el-input-->
-<!-- v-model="queryParams.idCard"-->
-<!-- placeholder="请输入身份证号"-->
-<!-- clearable-->
-<!-- @keyup.enter.native="handleQuery"-->
-<!-- />-->
+<!-- <el-form-item label="工种类型" prop="userName">-->
+<!-- <el-cascader-->
+<!-- v-model="queryParams.operate"-->
+<!-- :options="typeList"-->
+<!-- style="width: 100%"-->
+<!-- :props="{ expandTrigger: 'hover', value: 'id',label: 'name'}"></el-cascader>-->
<!-- </el-form-item>-->
<!-- <el-form-item>-->
<!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>-->
@@ -25,6 +16,14 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-upload"
+ size="mini"
+ @click="openUpload"
+ v-hasPermi="['system:experts:add']"
+ >导入</el-button>
<el-button
type="primary"
plain
@@ -44,7 +43,12 @@
{{ scope.row.sex == 0?'男':'女' }}
</template>
</el-table-column>
- <el-table-column label="身份证号" align="center" prop="code" />
+ <el-table-column label="身份证号" align="center" prop="code">
+ <template #default="scope">
+ {{scope.row.code | peridcardtm}}
+ </template>
+ </el-table-column>
+ <el-table-column label="手机号" align="center" prop="mobilePhone" />
<el-table-column label="最高学历" align="center" prop="eduLevel">
<template #default="scope">
{{getDegreeName(scope.row.eduLevel)}}
@@ -107,6 +111,7 @@
import axios from "axios";
import {getToken} from "@/utils/auth";
import {delPeople} from "@/api/coalMine/people";
+import {getOperatePage} from "@/api/coalMine/operateType";
export default {
name: "nReviewerManage",
@@ -130,6 +135,7 @@
created() {
const t = this
t.getPage()
+ t.getList()
},
methods: {
async getPage(){
@@ -146,7 +152,22 @@
}
this.loading = false
},
-
+ async getList() {
+ this.loading = true;
+ const res = await getOperatePage({name: ''})
+ if(res.code == 200){
+ this.typeList = this.handleTree(res.data, "id");
+ }else{
+ this.$message({
+ type: 'warning',
+ message: res.msg
+ });
+ }
+ this.loading = false;
+ },
+ openUpload(){
+ this.$message.error('请联系开发人员规范导入')
+ },
openDialog(data,type){
this.$refs.teacherDialog.openDialog(data,type)
},
@@ -158,7 +179,8 @@
},
handleQuery(){
-
+ this.queryParams.pageNum = 1
+ this.getPage()
},
resetQuery(){
this.queryParams = {
diff --git a/src/views/notCoalMine/nTeacherManage/nTeacher/index.vue b/src/views/notCoalMine/nTeacherManage/nTeacher/index.vue
index f0684ae..b987e3c 100644
--- a/src/views/notCoalMine/nTeacherManage/nTeacher/index.vue
+++ b/src/views/notCoalMine/nTeacherManage/nTeacher/index.vue
@@ -1,30 +1,28 @@
<template>
<div class="app-container">
-<!-- <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">-->
-<!-- <el-form-item label="用户姓名" prop="userName">-->
-<!-- <el-input-->
-<!-- v-model="queryParams.userName"-->
-<!-- placeholder="请输入用户姓名"-->
-<!-- clearable-->
-<!-- @keyup.enter.native="handleQuery"-->
-<!-- />-->
-<!-- </el-form-item>-->
-<!-- <el-form-item label="身份证号" prop="idCard">-->
-<!-- <el-input-->
-<!-- v-model="queryParams.idCard"-->
-<!-- placeholder="请输入身份证号"-->
-<!-- clearable-->
-<!-- @keyup.enter.native="handleQuery"-->
-<!-- />-->
-<!-- </el-form-item>-->
-<!-- <el-form-item>-->
-<!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>-->
-<!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>-->
-<!-- </el-form-item>-->
-<!-- </el-form>-->
-
+ <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+ <el-form-item label="工种类型" prop="userName">
+ <el-cascader
+ v-model="queryParams.operateTypeId"
+ :options="typeList"
+ style="width: 100%"
+ :props="{ expandTrigger: 'hover', value: 'id',label: 'name',emitPath: false}"></el-cascader>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+ </el-form-item>
+ </el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-upload"
+ size="mini"
+ @click="openUpload"
+ v-hasPermi="['system:experts:add']"
+ >导入</el-button>
<el-button
type="primary"
plain
@@ -44,7 +42,12 @@
{{ scope.row.sex == 0?'男':'女' }}
</template>
</el-table-column>
- <el-table-column label="身份证号" align="center" prop="code" />
+ <el-table-column label="身份证号" align="center" prop="code">
+ <template #default="scope">
+ {{scope.row.code | peridcardtm}}
+ </template>
+ </el-table-column>
+ <el-table-column label="手机号" align="center" prop="mobilePhone" />
<el-table-column label="最高学历" align="center" prop="eduLevel">
<template #default="scope">
{{getDegreeName(scope.row.eduLevel)}}
@@ -86,7 +89,7 @@
<pagination
v-show="total>0"
:total="total"
- :page.sync="queryParams.pageIndex"
+ :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getPage"
/>
@@ -107,6 +110,7 @@
import axios from "axios";
import {getToken} from "@/utils/auth";
import {delPeople} from "@/api/coalMine/people";
+import {getOperatePage} from "@/api/coalMine/operateType";
export default {
name: "nTeacherManage",
@@ -119,10 +123,12 @@
typeVisible: false,
workType: [],
dataList: [],
+ typeList: [],
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
+ operateTypeId: 0,
isCm: '0'
}
};
@@ -130,6 +136,7 @@
created() {
const t = this
t.getPage()
+ t.getList()
},
methods: {
async getPage(){
@@ -146,9 +153,24 @@
}
this.loading = false
},
-
+ async getList() {
+ this.loading = true;
+ const res = await getOperatePage({name: ''})
+ if(res.code == 200){
+ this.typeList = this.handleTree(res.data, "id");
+ }else{
+ this.$message({
+ type: 'warning',
+ message: res.msg
+ });
+ }
+ this.loading = false;
+ },
openDialog(data,type){
this.$refs.teacherDialog.openDialog(data,type)
+ },
+ openUpload(){
+ this.$message.error('请联系开发人员规范导入')
},
openWorkType(row){
this.workType = row.operateTypes
@@ -158,12 +180,14 @@
},
handleQuery(){
-
+ this.queryParams.pageNum = 1
+ this.getPage()
},
resetQuery(){
this.queryParams = {
pageNum: 1,
pageSize: 10,
+ operateTypeId: 0,
isCm: '0'
}
this.getPage()
diff --git a/src/views/register.vue b/src/views/register.vue
index 4330d5f..eed62ec 100644
--- a/src/views/register.vue
+++ b/src/views/register.vue
@@ -68,10 +68,22 @@
<script>
import { getCodeImg, register } from "@/api/login";
+import {verifyPwd} from "@/utils/validate";
export default {
name: "Register",
data() {
+ let validatePwd = (rule, value, callback)=>{
+ if(value === ''){
+ callback(new Error('请输入密码'))
+ }else{
+ if(!verifyPwd(value)){
+ callback(new Error('密码须包含字母、数字、特殊字符,长度在6-16之间'))
+ }else{
+ callback()
+ }
+ }
+ }
const equalToPassword = (rule, value, callback) => {
if (this.registerForm.password !== value) {
callback(new Error("两次输入的密码不一致"));
@@ -94,8 +106,7 @@
{ min: 2, max: 20, message: '用户账号长度必须介于 2 和 20 之间', trigger: 'blur' }
],
password: [
- { required: true, trigger: "blur", message: "请输入您的密码" },
- { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' }
+ { required: true, validator: validatePwd, trigger: 'blur' }
],
confirmPassword: [
{ required: true, trigger: "blur", message: "请再次输入您的密码" },
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 8b23792..d5b2f48 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -434,7 +434,7 @@
],
password: [
{ required: true, message: "用户密码不能为空", trigger: "blur" },
- { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' }
+ { pattern: /^(?![a-zA-Z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-Z\d]+$)(?![a-zA-Z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*\-_]{6,16}$/, message: "用户密码必须包含同时包含字母、数字和特殊字符,长度介于 6 和 16 之间", trigger: 'blur' }
],
email: [
{
@@ -591,8 +591,8 @@
confirmButtonText: "确定",
cancelButtonText: "取消",
closeOnClickModal: false,
- inputPattern: /^.{5,20}$/,
- inputErrorMessage: "用户密码长度必须介于 5 和 20 之间"
+ inputPattern: /^(?![a-zA-Z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-Z\d]+$)(?![a-zA-Z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*\-_]{6,16}$/,
+ inputErrorMessage: "用户密码必须包含同时包含字母、数字和特殊字符,长度介于 6 和 16 之间"
}).then(({ value }) => {
resetUserPwd(row.userId, value).then(response => {
this.$modal.msgSuccess("修改成功,新密码是:" + value);
diff --git a/src/views/system/user/profile/index.vue b/src/views/system/user/profile/index.vue
index ad530f9..4b6c0e1 100644
--- a/src/views/system/user/profile/index.vue
+++ b/src/views/system/user/profile/index.vue
@@ -23,10 +23,10 @@
<svg-icon icon-class="email" />用户邮箱
<div class="pull-right">{{ user.email }}</div>
</li>
- <li class="list-group-item">
- <svg-icon icon-class="tree" />所属部门
- <div class="pull-right" v-if="user.dept">{{ user.dept.deptName }} / {{ postGroup }}</div>
- </li>
+<!-- <li class="list-group-item">-->
+<!-- <svg-icon icon-class="tree" />所属部门-->
+<!-- <div class="pull-right" v-if="user.dept">{{ user.dept.deptName }} / {{ postGroup }}</div>-->
+<!-- </li>-->
<li class="list-group-item">
<svg-icon icon-class="peoples" />所属角色
<div class="pull-right">{{ roleGroup }}</div>
diff --git a/src/views/system/user/profile/resetPwd.vue b/src/views/system/user/profile/resetPwd.vue
index 64e8f8c..f5008df 100644
--- a/src/views/system/user/profile/resetPwd.vue
+++ b/src/views/system/user/profile/resetPwd.vue
@@ -18,9 +18,21 @@
<script>
import { updateUserPwd } from "@/api/system/user";
+import {verifyPwd} from "@/utils/validate";
export default {
data() {
+ let validatePwd = (rule, value, callback)=>{
+ if(value === ''){
+ callback(new Error('请输入密码'))
+ }else{
+ if(!verifyPwd(value)){
+ callback(new Error('密码须包含字母、数字、特殊字符,长度在6-16之间'))
+ }else{
+ callback()
+ }
+ }
+ }
const equalToPassword = (rule, value, callback) => {
if (this.user.newPassword !== value) {
callback(new Error("两次输入的密码不一致"));
@@ -40,8 +52,7 @@
{ required: true, message: "旧密码不能为空", trigger: "blur" }
],
newPassword: [
- { required: true, message: "新密码不能为空", trigger: "blur" },
- { min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" }
+ { required: true, validator: validatePwd, trigger: 'blur' }
],
confirmPassword: [
{ required: true, message: "确认密码不能为空", trigger: "blur" },
--
Gitblit v1.9.2