From cc3e08bda13360c88b7189e8f8d043b60783c7fb Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期四, 21 十一月 2024 16:46:32 +0800
Subject: [PATCH] 新增
---
src/views/safetyReview/baseSet/evaluateType/index.vue | 39 +
src/api/login.js | 5
src/views/safetyReview/expertManage/applyRecords/index.vue | 30
src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue | 348 +++++++++-----
src/views/system/dept/index.vue | 8
src/views/safetyReview/baseSet/openApply/index.vue | 81 +++
src/api/system/dept.js | 11
src/views/safetyReview/expertManage/evaluateRecord/index.vue | 120 +---
src/api/backManage/evaluate.js | 79 +++
src/views/safetyReview/baseSet/evaluateType/components/typeDialog.vue | 66 +-
src/views/safetyReview/expertManage/fillForm/index.vue | 68 +-
src/views/safetyReview/baseSet/expertsType/index.vue | 4
src/views/safetyReview/expertManage/experts/index.vue | 141 ++++-
src/layout/components/Sidebar/Logo.vue | 2
src/views/safetyReview/expertManage/checkProgress/index.vue | 152 ++++--
src/views/safetyReview/expertManage/evaluateRecord/components/evaluateDetail.vue | 62 +-
src/views/components/loginForm.vue | 36 +
src/api/form.js | 13
src/views/safetyReview/expertManage/postEvaluation/index.vue | 67 --
19 files changed, 830 insertions(+), 502 deletions(-)
diff --git a/src/api/backManage/evaluate.js b/src/api/backManage/evaluate.js
index 0ff7148..c8ce9d7 100644
--- a/src/api/backManage/evaluate.js
+++ b/src/api/backManage/evaluate.js
@@ -36,3 +36,82 @@
})
}
+export function getReviewList(params) {
+ return request({
+ url: '/system/evaluation/list',
+ method: 'get',
+ params: params
+ })
+}
+export function addReview(data) {
+ return request({
+ url: '/system/evaluation/add',
+ method: 'post',
+ data: data
+ })
+}
+
+export function editReview(params) {
+ return request({
+ url: `/system/evaluation/edit`,
+ method: 'put',
+ data: params
+ })
+}
+
+export function delReview(data) {
+ return request({
+ url: `/system/evaluation/` + data.id,
+ method: 'delete'
+ })
+}
+
+export function getApplyList(params) {
+ return request({
+ url: '/system/settings/applyList',
+ method: 'get',
+ params: params
+ })
+}
+
+export function getSettings(params) {
+ return request({
+ url: '/system/settings/getSettings',
+ method: 'get',
+ params: params
+ })
+}
+
+export function updateSettings(params) {
+ return request({
+ url: '/system/settings/updateSettings',
+ method: 'get',
+ params: params
+ })
+}
+
+// 事后评价分页
+export function getProjectExpertList(params) {
+ return request({
+ url: '/system/management/projectExpertList',
+ method: 'get',
+ params: params
+ })
+}
+
+// 专家考评记录
+export function getExpertEvaList(params) {
+ return request({
+ url: '/system/management/projectExpertEvaList',
+ method: 'get',
+ params: params
+ })
+}
+
+export function getExpertEvaDetail(params) {
+ return request({
+ url: '/system/management/selectProjectExpertDetailList',
+ method: 'get',
+ params: params
+ })
+}
\ No newline at end of file
diff --git a/src/api/form.js b/src/api/form.js
index 78913d3..e4f2475 100644
--- a/src/api/form.js
+++ b/src/api/form.js
@@ -12,8 +12,8 @@
// 获取专家列表
export function delExpert(id) {
return request({
- url: '/expert/info/del/'+id,
- method: 'get'
+ url: '/system/expert_info/del/'+id,
+ method: 'delete'
})
}
@@ -78,6 +78,15 @@
})
}
+// 查询审批结果
+export function queryApprove(data) {
+ return request({
+ url: '/system/expert_info/queryApprove',
+ method: 'post',
+ data: data
+ })
+}
+
// 根据id获取专家信息
export function getInfo(id) {
return request({
diff --git a/src/api/login.js b/src/api/login.js
index 8539913..a494c70 100644
--- a/src/api/login.js
+++ b/src/api/login.js
@@ -82,10 +82,7 @@
// 删除图片
export function delPic(path) {
return request({
- url: '/system/common/removeFile',
- headers: {
- isToken: false
- },
+ url: '/common/removeFile',
method: 'delete',
params: path,
timeout: 20000
diff --git a/src/api/system/dept.js b/src/api/system/dept.js
index fc943cd..2632179 100644
--- a/src/api/system/dept.js
+++ b/src/api/system/dept.js
@@ -9,6 +9,15 @@
})
}
+// 查询部门列表
+export function listOutDept(query) {
+ return request({
+ url: '/system/dept/getOutDeptList',
+ method: 'get',
+ params: query
+ })
+}
+
// 查询部门列表(排除节点)
export function listDeptExcludeChild(deptId) {
return request({
@@ -28,7 +37,7 @@
// 新增部门
export function addDept(data) {
return request({
- url: '/system/dept',
+ url: '/system/dept/add',
method: 'post',
data: data
})
diff --git a/src/layout/components/Sidebar/Logo.vue b/src/layout/components/Sidebar/Logo.vue
index ff486bb..6beb78c 100644
--- a/src/layout/components/Sidebar/Logo.vue
+++ b/src/layout/components/Sidebar/Logo.vue
@@ -15,7 +15,7 @@
<script setup>
import variables from '@/assets/styles/variables.module.scss'
-import logo from '@/assets/logo/logo.png'
+import logo from '@/assets/logo/logo2.png'
import useSettingsStore from '@/store/modules/settings'
import usePermissionStore from '@/store/modules/permission'
defineProps({
diff --git a/src/views/components/loginForm.vue b/src/views/components/loginForm.vue
index 7d4fd1b..be9abc5 100644
--- a/src/views/components/loginForm.vue
+++ b/src/views/components/loginForm.vue
@@ -48,7 +48,7 @@
</el-form-item>
<div style="display: flex;justify-content: space-between;align-items: center;margin-bottom: 25px">
<div class="btn-cont">
- <button class="login-btn" @click.prevent="handleLogin">
+ <button class="login-btn" @click.prevent="handleLogin" v-preReClick>
<span v-if="!loading">登 录</span>
<span v-else>登 录 中...</span>
</button>
@@ -59,8 +59,8 @@
</div>
</el-form>
<div class="other-btns">
- <el-button link type="primary" style="color: #fff" @click="openApply()">专家申请</el-button>
- <el-button link type="primary" style="color: #fff" @click="openCheck">专家评定进度查询</el-button>
+ <el-button link type="primary" style="color: #fff" @click="openApply()" v-preReClick>专家申请</el-button>
+ <el-button link type="primary" style="color: #fff" @click="openCheck" v-preReClick>专家评定进度查询</el-button>
</div>
</div>
</el-col>
@@ -72,6 +72,7 @@
<script setup>
import {onMounted, ref, watch, defineAsyncComponent, nextTick, computed} from "vue"
import { getCodeImg } from "@/api/login";
+import {getSettings} from "@/api/backManage/evaluate";
import Cookies from "js-cookie";
import { encrypt, decrypt } from "@/utils/jsencrypt";
import useUserStore from '@/store/modules/user'
@@ -79,6 +80,7 @@
import { Base64 } from 'js-base64'
import ExpertForm from "../safetyReview/expertManage/applyRecords/components/expertForm";
import usePermissionStore from '@/store/modules/permission'
+import {ElMessage} from "element-plus";
const permissionStore = usePermissionStore()
const sidebarRouters = computed(() => permissionStore.sidebarRouters);
const userStore = useUserStore()
@@ -104,6 +106,7 @@
const regRef = ref(null)
// 验证码开关
const captchaEnabled = ref(true);
+const applyStatus = ref('1')
// 注册开关
const isRegister = ref(true);
const redirect = ref(undefined);
@@ -122,12 +125,27 @@
const expertFormRef = ref()
-const openApply = () => {
- // expertFormRef.value.openApply(type, value)
- const routePath = '/fillForm';
- const resolvedRoute = router.resolve(routePath);
- const fullPath = resolvedRoute.href
- window.open(fullPath, '_blank');
+
+const getApplyStatus = async ()=>{
+ const res = await getSettings()
+ if(res.code == 200){
+ return res.data
+ }else{
+ ElMessage.warning(res.msg)
+ return '0'
+ }
+}
+
+const openApply = async () => {
+ const status = await getApplyStatus();
+ if(status == '1'){
+ const routePath = '/fillForm';
+ const resolvedRoute = router.resolve(routePath);
+ const fullPath = resolvedRoute.href
+ window.open(fullPath, '_blank');
+ }else{
+ ElMessage.warning('抱歉,专家申请暂未开启,请联系相关人员进行处理')
+ }
}
diff --git a/src/views/safetyReview/baseSet/evaluateType/components/typeDialog.vue b/src/views/safetyReview/baseSet/evaluateType/components/typeDialog.vue
index 603ba8b..d188447 100644
--- a/src/views/safetyReview/baseSet/evaluateType/components/typeDialog.vue
+++ b/src/views/safetyReview/baseSet/evaluateType/components/typeDialog.vue
@@ -8,9 +8,9 @@
>
<el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="110px" >
<el-form-item label="类型:" prop="label">
- <el-radio-group v-model="state.form.type">
- <el-radio :label="0" size="large" border>加分项</el-radio>
- <el-radio :label="1" size="large" border>扣分项</el-radio>
+ <el-radio-group v-model="state.form.scoreType">
+ <el-radio label="1" size="large" border>加分项</el-radio>
+ <el-radio label="2" size="large" border>扣分项</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="标准分值:" prop="score">
@@ -34,7 +34,7 @@
import Editor from "@/components/Editor/index.vue";
import {ElMessage} from "element-plus";
import {addNotice} from "@/api/backManage/notice";
-import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate";
+import {addDict, addReview, editDict, editReview, getDictDetail} from "@/api/backManage/evaluate";
const dialogVisible = ref(false);
const title = ref("");
@@ -43,33 +43,25 @@
const emit = defineEmits(["getList"]);
const state = reactive({
form: {
- id: '',
- label: '',
- value: '',
- dictType: "sys_assess_type",
+ id: '',
+ score: '',
+ content: '',
+ scoreType: null
},
formRules:{
- label: [{ required: true, message: '请输入类型', trigger: 'blur' }],
+ scoreType: [{ required: true, message: '请选择类型', trigger: 'blur' }],
+ score: [{ required: true, message: '请输入标准分值', trigger: 'blur' }],
+ content: [{ required: true, message: '请输入内容', trigger: 'blur' }]
},
})
const openDialog = async (type, value) => {
- length.value = value.listLength
- title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ;
+ title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看';
if(type === 'edit') {
- state.form = value;
- const param = {
- dictId: value.id
- }
- const res = await getDictDetail(param);
- if(res.code === 200){
- state.form = res.data
- }else{
- ElMessage.warning(res.message)
- }
+ state.form = value
}
- dialogVisible.value = true;
+ dialogVisible.value = true
}
const onSubmit = async () => {
@@ -77,11 +69,11 @@
if(valid){
if(title.value === '新增'){
const param = {
- dictType: "sys_assess_type",
- label: state.form.label,
- value: length.value.toString()
+ score: state.form.score,
+ content: state.form.content,
+ scoreType: state.form.scoreType
}
- const res = await addDict(param)
+ const res = await addReview(param)
if(res.code === 200){
ElMessage({
type: 'success',
@@ -92,27 +84,25 @@
}
emit("getList")
busRef.value.clearValidate();
- reset();
dialogVisible.value = false;
}else if(title.value === '编辑'){
const param = {
- id: state.form.id,
- dictType: state.form.dictType,
- label: state.form.label,
- value: state.form.value
+ id: state.form.id,
+ score: state.form.score,
+ content: state.form.content,
+ scoreType: state.form.scoreType
}
- const res = await editDict(param)
+ const res = await editReview(param)
if(res.code === 200){
ElMessage({
type: 'success',
- message: '新增成功'
+ message: '修改成功'
});
}else{
ElMessage.warning(res.message)
}
emit("getList")
busRef.value.clearValidate();
- reset();
dialogVisible.value = false;
}
}
@@ -126,10 +116,10 @@
}
const reset = () => {
state.form = {
- id: '',
- label: '',
- value: '',
- dictType: "sys_assess_type",
+ id: '',
+ score: '',
+ content: '',
+ scoreType: null
}
}
defineExpose({
diff --git a/src/views/safetyReview/baseSet/evaluateType/index.vue b/src/views/safetyReview/baseSet/evaluateType/index.vue
index a44c44f..3754b30 100644
--- a/src/views/safetyReview/baseSet/evaluateType/index.vue
+++ b/src/views/safetyReview/baseSet/evaluateType/index.vue
@@ -9,7 +9,7 @@
>新增</el-button>
</div>
<div style="margin-top: 15px;margin-bottom: 15px;">
- <el-radio-group v-model="queryParams.expertType">
+ <el-radio-group v-model="queryParams.scoreType" @change="reSearch()">
<el-radio-button label="">全部</el-radio-button>
<el-radio-button label="1">加分项</el-radio-button>
<el-radio-button label="2">扣分项</el-radio-button>
@@ -17,9 +17,13 @@
</div>
<!-- 表格数据 -->
<el-table v-loading="loading" :data="dataList" :border="true">
- <el-table-column label="项目内容" prop="label" align="center" />
- <el-table-column label="类型" prop="label" align="center" />
- <el-table-column label="标准分值" prop="label" align="center" />
+ <el-table-column label="项目内容" prop="content" align="center"/>
+ <el-table-column label="类型" prop="scoreType" align="center">
+ <template #default="scope">
+ {{scope.row.scoreType == '1'?'加分项':scope.row.scoreType == '2'?'扣分项':''}}
+ </template>
+ </el-table-column>
+ <el-table-column label="标准分值" prop="score" align="center" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
<template #default="scope">
<el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
@@ -47,15 +51,16 @@
import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue";
import typeDialog from "./components/typeDialog.vue"
import {ElMessage, ElMessageBox} from "element-plus";
-import {delDict, getDictList,} from "@/api/backManage/evaluate";
+import {delDict, delReview, getDictList, getReviewList,} from "@/api/backManage/evaluate";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const typeRef = ref();
const dictType = ref("sys_assess_type")
const data = reactive({
queryParams: {
- pageNum: 1,
- pageSize: 10,
+ scoreType: '',
+ pageNum: 1,
+ pageSize: 10,
},
total: 0,
dataList: [
@@ -66,14 +71,14 @@
const { queryParams, total, dataList } = toRefs(data);
onMounted(() => {
- // getList();
+ getList();
});
const getList = async () => {
loading.value = true;
- const res = await getDictList({dictType: dictType.value});
- if(res.code === 200){
- dataList.value = res.data.list
- total.value = res.data.total
+ const res = await getReviewList(data.queryParams);
+ if(res.code == 200){
+ dataList.value = res.rows
+ total.value = res.total
}else{
ElMessage.warning(res.message)
}
@@ -97,6 +102,12 @@
function reset() {
proxy.resetForm("roleRef");
}
+
+const reSearch=()=>{
+ data.queryParams.pageNum = 1
+ getList()
+}
+
const handleDelete = (val) => {
ElMessageBox.confirm(
'确定删除此条数据?',
@@ -107,13 +118,13 @@
type: 'warning',
})
.then( async() => {
- const res = await delDict(val);
+ const res = await delReview(val);
if(res.code === 200){
ElMessage({
type: 'success',
message: '删除成功'
});
- getList();
+ await getList();
}else{
ElMessage.warning(res.message)
}
diff --git a/src/views/safetyReview/baseSet/expertsType/index.vue b/src/views/safetyReview/baseSet/expertsType/index.vue
index 3808ca5..379022e 100644
--- a/src/views/safetyReview/baseSet/expertsType/index.vue
+++ b/src/views/safetyReview/baseSet/expertsType/index.vue
@@ -100,10 +100,10 @@
const formRef = ref()
onMounted(()=>{
- // getList()
+ getList()
})
/** 查询岗位列表 */
- const getList = async()=> {
+ const getList = async()=> {
state.loading = true;
const res = await getExpertTypes()
if(res.code == 200){
diff --git a/src/views/safetyReview/baseSet/openApply/index.vue b/src/views/safetyReview/baseSet/openApply/index.vue
index d50a03d..77d6aec 100644
--- a/src/views/safetyReview/baseSet/openApply/index.vue
+++ b/src/views/safetyReview/baseSet/openApply/index.vue
@@ -1,8 +1,18 @@
<template>
<div class="app-container">
<div style="margin-bottom: 10px">
- <el-button type="primary" plain icon="Open">开启专家申请</el-button>
- <el-button type="danger" plain icon="TurnOff">关闭专家申请</el-button>
+<!-- <el-button type="primary" plain icon="Open">开启专家申请</el-button>-->
+<!-- <el-button type="danger" plain icon="TurnOff">关闭专家申请</el-button>-->
+ <el-switch
+ v-model="applyStatus"
+ inline-prompt
+ style="--el-switch-on-color: #ff4949; --el-switch-off-color: #13ce66"
+ active-text="关闭专家申请"
+ inactive-text="开启专家申请"
+ active-value="2"
+ inactive-value="1"
+ @change="handleChange"
+ />
</div>
<!-- 表格数据 -->
<el-table v-loading="loading" :data="dataList" :border="true">
@@ -28,7 +38,7 @@
<script setup>
import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue";
import {ElMessage, ElMessageBox} from "element-plus";
-import {delDict, getDictList} from "@/api/backManage/evaluate";
+import {getApplyList, getSettings, updateSettings} from "@/api/backManage/evaluate";
const { proxy } = getCurrentInstance();
const loading = ref(false);
const busRef = ref();
@@ -36,8 +46,7 @@
const data = reactive({
queryParams: {
pageNum: 1,
- pageSize: 10,
- dictType: dictType.value
+ pageSize: 10
},
total: 0,
dataList: [
@@ -49,16 +58,45 @@
const { queryParams, total, dataList } = toRefs(data);
onMounted(() => {
- // getList();
+ getList()
+ getApplyStatus()
});
+const applyStatus = ref()
+const isInitialized = ref(false)
+
+const getApplyStatus = async ()=>{
+ const res = await getSettings()
+ if(res.code == 200){
+ applyStatus.value = res.data
+ isInitialized.value = true
+ }else{
+ ElMessage.warning(res.msg)
+ }
+}
+
+const handleChange = (val)=>{
+ if (!isInitialized.value) return
+ changeStatus(val);
+}
+
+const changeStatus = async (val) => {
+ const res = await updateSettings({ sysSettings: val });
+ if (res.code == 200) {
+ ElMessage.success('专家申请设置已更新');
+ await getList()
+ } else {
+ ElMessage.warning(res.msg);
+ }
+}
+
const getList = async () => {
loading.value = true;
- const res = await getDictList(data.queryParams);
+ const res = await getApplyList(data.queryParams);
if(res.code === 200){
- dataList.value = res.data.list
- total.value = res.data.total
+ dataList.value = res.rows
+ total.value = res.total
}else{
- ElMessage.warning(res.message)
+ ElMessage.warning(res.msg)
}
loading.value = false;
}
@@ -102,7 +140,26 @@
</script>
<style>
.pag-container{
-float: right;
-margin-top: 10px;
+ float: right;
+ margin-top: 10px;
}
+.el-switch__core{
+ height: 32px;
+ padding: 10px 30px;
+ border-radius: 16px;
+
+ .el-switch__inner{
+ height: 32px;
+ }
+ .el-switch__action{
+ width: 24px;
+ height: 24px;
+ left: 4px;
+ }
+}
+
+.el-switch.is-checked .el-switch__core .el-switch__action{
+ left: calc(100% - 28px);
+}
+
</style>
diff --git a/src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue b/src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue
index 5e88339..59cf27e 100644
--- a/src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue
+++ b/src/views/safetyReview/expertManage/applyRecords/components/expertForm.vue
@@ -12,29 +12,29 @@
<el-form :model="state.form" :rules="state.rules" ref="ruleFormRef" label-width="200px">
<el-row>
<el-col :span="20">
- <el-form-item label="专业类别" prop="profession">
+ <el-form-item label="专业类别" prop="domain">
<el-cascader
:disabled="state.disable"
style="width: 100%"
- v-model="state.form.profession"
+ v-model="state.form.domain"
:options="state.expertsType"
- :props="{ expandTrigger: 'hover',value: 'id',label: 'classifyName' }"
+ :props="{ expandTrigger: 'hover',value: 'classifyName',label: 'classifyName',emitPath: false }"
@change="professionChange"></el-cascader>
</el-form-item>
</el-col>
</el-row>
- <!-- <el-row>-->
- <!-- <el-col :span="20">-->
- <!-- <el-form-item label="填报日期" prop="date">-->
- <!-- <el-date-picker-->
- <!-- style="width: 100%"-->
- <!-- v-model="form.date"-->
- <!-- type="date"-->
- <!-- placeholder="选择日期">-->
- <!-- </el-date-picker>-->
- <!-- </el-form-item>-->
- <!-- </el-col>-->
- <!-- </el-row>-->
+ <el-row>
+ <el-col :span="20">
+ <el-form-item label="业务处室:" prop="deptId">
+ <el-cascader
+ style="width: 100%"
+ clearable
+ v-model="state.form.deptId"
+ :options="state.deptList"
+ :props="{ expandTrigger: 'hover', value: 'deptId',label: 'deptName',emitPath: false}"></el-cascader>
+ </el-form-item>
+ </el-col>
+ </el-row>
<el-row>
<el-col :span="20">
<el-form-item label="姓名" prop="name">
@@ -58,7 +58,7 @@
<el-date-picker
style="width: 100%"
v-model="state.form.birthday"
- value-format="YYYY-MM-DD 00:00:00"
+ value-format="YYYY-MM-DD"
type="date"
placeholder="选择日期" :disabled="state.disable">
</el-date-picker>
@@ -310,7 +310,39 @@
</el-row>
</el-form>
<el-dialog v-model="imgDialog">
- <img w-full :src="state.dialogImageUrl" alt="">
+ <img style="width: 100%" w-full :src="state.dialogImageUrl" alt="">
+ </el-dialog>
+ <el-dialog
+ v-model="state.assessDialog"
+ title="评定详情"
+ width="50%"
+ :before-close="closeAssess"
+ >
+ <el-form :model="state.assessForm" :rules="state.assessRules" ref="assessFormRef" label-width="200px">
+ <el-form-item label="专家聘用期限" prop="employTime">
+ <el-date-picker
+ v-model="state.assessForm.employTime"
+ type="daterange"
+ range-separator="至"
+ start-placeholder="开始日期"
+ end-placeholder="结束日期"
+ value-format="YYYY-MM-DD"
+ />
+ </el-form-item>
+ <el-form-item label="专家评定等级" prop="ratingLevel">
+ <el-radio-group v-model="state.assessForm.ratingLevel">
+ <el-radio label="1">一级</el-radio>
+ <el-radio label="2">二级</el-radio>
+ <el-radio label="3">三级</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="closeAssess" size="default">取 消</el-button>
+ <el-button type="primary" @click="assessSubmit(assessFormRef)" size="default" v-preReClick>确认</el-button>
+ </span>
+ </template>
</el-dialog>
</div>
<template #footer>
@@ -319,25 +351,29 @@
<el-button type="primary" @click="onSubmit(ruleFormRef)" size="default" v-preReClick>确认</el-button>
</span>
<span class="dialog-footer" v-if="state.title == '评定'">
- <el-button type="danger" size="default" @click="assess(3)" v-preReClick>评定驳回</el-button>
- <el-button type="primary" @click="assess(2)" size="default" v-preReClick>评定通过</el-button>
+ <el-button type="danger" size="default" @click="startAssess(3)" v-preReClick>评定驳回</el-button>
+ <el-button type="primary" @click="startAssess(2)" size="default" v-preReClick>评定通过</el-button>
</span>
</template>
</el-dialog>
+
</div>
</template>
<script setup>
-import {reactive, ref, toRefs, defineEmits, nextTick, onMounted} from 'vue'
+import {reactive, ref, toRefs, defineEmits, nextTick, onMounted, getCurrentInstance} from 'vue'
import {ElMessage, ElMessageBox} from "element-plus"
import {verifyPhone, verifyIdCard} from "../../../../../utils/validate"
import {addExpertInfo, getExpertTypes, getInfo, modExpertInfo, uploadFile, changeApprove} from "@/api/form"
import {delPic} from "@/api/login"
import { getToken } from "@/utils/auth"
import {Base64} from "js-base64"
+import {listOutDept} from "@/api/system/dept";
const emit = defineEmits(["getList"])
const dialogVisible = ref(false)
const imgDialog = ref(false)
const ruleFormRef = ref()
+const assessFormRef = ref()
+const { proxy } = getCurrentInstance()
var validatePass = (rule, value, callback) => {
if (state.fileList.length == 0) {
callback(new Error('请上传证件照'));
@@ -369,13 +405,13 @@
}
const state = reactive({
+ assessDialog: false,
form:{
id: null,
name:'',
sex:'',
- profession: [],
- bigClassify:null,
- smallClassify: null,
+ domain: '',
+ deptId: null,
birthday: '',
phone:'',
title: '',
@@ -405,9 +441,14 @@
remark: '',
source: 2
},
+ assessForm: {
+ employTime: [],
+ ratingLevel: ''
+ },
hasDeleteFile: false,
disable: false,
expertsType: [],
+ deptList: [],
directionList: [
{
value: 1,
@@ -430,7 +471,7 @@
label: '其他'
}
],
- uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
+ uploadUrl: import.meta.env.VITE_APP_BASE_API + '/common/upload',
header: {
Authorization: 'Bearer ' + getToken()
},
@@ -445,7 +486,8 @@
rules:{
name:[{ required: true, message: '请填写姓名', trigger: 'blur' }],
sex:[{ required: true, message: '请选择性别', trigger: 'blur' }],
- profession: [{ required: true, message: '请选择专业类别', trigger: 'blur' }],
+ domain: [{ required: true, message: '请选择专业类别', trigger: 'blur' }],
+ deptId: [{ required: true, message: '请选择业务处室', trigger: 'blur' }],
birthday: [{ required: true, message: '请选择出生日期', trigger: 'blur' }],
phone:[{ required: true, validator: validatePhone, trigger: 'blur' }],
title: [{ required: true, message: '请填写职称', trigger: 'blur' }],
@@ -454,6 +496,10 @@
dutyStatus: [{ required: true, message: '请选择在岗情况', trigger: 'blur' }],
companyName: [{ required: true, message: '请填写单位全称', trigger: 'blur' }],
degree: [{ required: true, message: '请填写最高学历', trigger: 'blur' }]
+ },
+ assessRules:{
+ employTime: [{ required: true, message: '请选择聘用期限', trigger: 'blur' }],
+ ratingLevel: [{ required: true, message: '请选择评定等级', trigger: 'blur' }]
}
})
@@ -463,98 +509,113 @@
const openDialog = (type, value) => {
state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='view' ?'查看':'评定'
getExpertsType()
- if(type == 'edit'||type=='view'||type=='assess'){
- getInfo(value.id).then((res)=>{
- if(res.code == 200){
- if(res.data) {
- const val = res.data
- for(let i in state.form) {
- if (validKey(i, val)) {
- state.form[i] = val[i]
- }
- }
- state.form.profession[0] = val.bigClassify
- state.form.profession[1] = val.smallClassify
- if(val.supportDirectionSafety){
- state.form.supportDirectionSafety = val.supportDirectionSafety.split(',').map(i=>Number(i))
- }
- if(val.supportDirectionPrevention){
- state.form.supportDirectionPrevention = val.supportDirectionPrevention.split(',').map(i=>Number(i))
- }
- if(val.supportDirectionEmergency){
- state.form.supportDirectionEmergency = val.supportDirectionEmergency.split(',').map(i=>Number(i))
- }
- state.fileList.push({
- name: state.form.electronicPhoto,
- url: import.meta.env.VITE_APP_BASE_API + '/' + state.form.electronicPhoto,
- })
- if(state.form.resumeKey !== ''){
- state.resumeList = state.form.resumeKey.split(',').map(i=>{
- return {
- name: i,
- url: import.meta.env.VITE_APP_BASE_API + '/' + i,
- }
- })
- }
- if(state.form.paperSituationKey !== ''){
- state.inventionList = state.form.paperSituationKey.split(',').map(i=>{
- return {
- name: i,
- url: import.meta.env.VITE_APP_BASE_API + '/' + i,
- }
- })
- }
- if(state.form.rewardKey !== ''){
- state.rewardList = state.form.rewardKey.split(',').map(i=>{
- return {
- name: i,
- url: import.meta.env.VITE_APP_BASE_API + '/' + i,
- }
- })
- }
- if(state.form.achievementKey !== ''){
- state.achievementList = state.form.achievementKey.split(',').map(i=>{
- return {
- name: i,
- url: import.meta.env.VITE_APP_BASE_API + '/' + i,
- }
- })
- }
- if(state.form.personalOpinionKey !== ''){
- state.proAdviceList = state.form.personalOpinionKey.split(',').map(i=>{
- return {
- name: i,
- url: import.meta.env.VITE_APP_BASE_API + '/' + i,
- }
- })
- }
- if(state.form.recommendUnitOpinionKey !== ''){
- state.adviceList = state.form.recommendUnitOpinionKey.split(',').map(i=>{
- return {
- name: i,
- url: import.meta.env.VITE_APP_BASE_API + '/' + i,
- }
- })
+ getDepList()
+ state.fileList = []
+ if(type == 'edit'||type=='view'||type=='assess'){
+ getInfo(value.id).then((res)=>{
+ if(res.code == 200){
+ if(res.data) {
+ const val = res.data
+ for(let i in state.form) {
+ if (validKey(i, val)) {
+ state.form[i] = val[i]
}
}
- dialogVisible.value = true
- }else{
- ElMessage.warning('数据获取失败:'+res.message)
+ if(val.supportDirectionSafety && val.supportDirectionSafety!==''){
+ state.form.supportDirectionSafety = val.supportDirectionSafety.split(',').map(i=>Number(i))
+ }else{
+ state.form.supportDirectionSafety = []
+ }
+ if(val.supportDirectionPrevention && val.supportDirectionPrevention!==''){
+ state.form.supportDirectionPrevention = val.supportDirectionPrevention.split(',').map(i=>Number(i))
+ }else{
+ state.form.supportDirectionPrevention = []
+ }
+ if(val.supportDirectionEmergency && val.supportDirectionEmergency!==''){
+ state.form.supportDirectionEmergency = val.supportDirectionEmergency.split(',').map(i=>Number(i))
+ }else{
+ state.form.supportDirectionEmergency = []
+ }
+ state.fileList.push({
+ name: state.form.electronicPhoto,
+ url: state.form.electronicPhoto,
+ })
+ if(state.form.resumeKey !== ''){
+ state.resumeList = state.form.resumeKey.split(',').map(i=>{
+ return {
+ name: i,
+ url: i,
+ }
+ })
+ }
+ if(state.form.paperSituationKey !== ''){
+ state.inventionList = state.form.paperSituationKey.split(',').map(i=>{
+ return {
+ name: i,
+ url: i,
+ }
+ })
+ }
+ if(state.form.rewardKey !== ''){
+ state.rewardList = state.form.rewardKey.split(',').map(i=>{
+ return {
+ name: i,
+ url: i,
+ }
+ })
+ }
+ if(state.form.achievementKey !== ''){
+ state.achievementList = state.form.achievementKey.split(',').map(i=>{
+ return {
+ name: i,
+ url: i,
+ }
+ })
+ }
+ if(state.form.personalOpinionKey !== ''){
+ state.proAdviceList = state.form.personalOpinionKey.split(',').map(i=>{
+ return {
+ name: i,
+ url: i,
+ }
+ })
+ }
+ if(state.form.recommendUnitOpinionKey !== ''){
+ state.adviceList = state.form.recommendUnitOpinionKey.split(',').map(i=>{
+ return {
+ name: i,
+ url: i,
+ }
+ })
+ }
}
- })
- if(type == 'edit'){
- state.disable = false
+ console.log(state.form,'form')
+ dialogVisible.value = true
}else{
- state.disable = true
+ ElMessage.warning('数据获取失败:'+res.msg)
}
- }else{
+ })
+ if(type == 'edit'){
state.disable = false
- dialogVisible.value = true
+ }else{
+ state.disable = true
}
+ }else{
+ state.disable = false
+ dialogVisible.value = true
+ }
}
const validKey=(key,obj)=>{
return key in obj
+ }
+
+ const startAssess = async (num)=>{
+ if(num == 2){
+ state.assessDialog = true
+ }else{
+ await assess(num)
+ }
}
const assess = (num)=>{
@@ -567,18 +628,34 @@
type: 'warning',
})
.then(async() => {
- const res = await changeApprove({id:state.form.id,state: num})
+ let params = {}
+ if(num == 2){
+ params = {
+ id: state.form.id,
+ state: num,
+ employmentDateStart: state.assessForm.employTime[0],
+ employmentDateEnd: state.assessForm.employTime[1],
+ ratingLevel: state.assessForm.ratingLevel
+ }
+ }else{
+ params = {
+ id:state.form.id,
+ state: num
+ }
+ }
+ const res = await changeApprove(params)
if(res.code == 200){
ElMessage({
type: 'success',
message: '审批成功'
});
emit('getList')
+ state.assessDialog = false
dialogVisible.value = false
}else{
ElMessage({
type: 'warning',
- message: res.message
+ message: res.msg
});
}
})
@@ -595,6 +672,12 @@
});
}
}
+
+function getDepList() {
+ listOutDept({}).then(response => {
+ state.deptList = proxy.handleTree(response.data, "deptId",'parentId','children');
+ });
+}
const professionChange=(value)=> {
console.log(value,'val')
@@ -628,9 +711,9 @@
const handleAvatarSuccess = (res, uploadFile,type) => {
if(res.code == 200){
if(type == '证件照'){
- state.form.electronicPhoto = res.data.path
+ state.form.electronicPhoto = res.url
}else{
- uploadFile.name = res.data.path
+ uploadFile.name = res.url
}
}else{
ElMessage({
@@ -641,6 +724,7 @@
}
const handleRemove = (file, uploadFiles,type) => {
+ console.log(file, uploadFiles)
if(file && file.status == 'success') {
ElMessageBox.confirm(
'该操作将永久删除此文件内容,是否继续?',
@@ -667,7 +751,7 @@
} else {
ElMessage({
type: 'warning',
- message: res.message
+ message: res.msg
})
}
})
@@ -683,23 +767,20 @@
return
}
let data = JSON.parse(JSON.stringify(state.form))
- data.supportDirectionSafety = data.supportDirectionSafety.join(',')
- data.supportDirectionPrevention = data.supportDirectionPrevention.join(',')
- data.supportDirectionEmergency = data.supportDirectionEmergency.join(',')
- data.bigClassify = data.profession[0]
- data.smallClassify = data.profession[1]
+ data.supportDirectionSafety = Array.isArray(data.supportDirectionSafety)?data.supportDirectionSafety.join(','):''
+ data.supportDirectionPrevention = Array.isArray(data.supportDirectionPrevention)?data.supportDirectionPrevention.join(','):''
+ data.supportDirectionEmergency = Array.isArray(data.supportDirectionEmergency)?data.supportDirectionEmergency.join(','):''
data.resumeKey = state.resumeList.map(i=>i.name).join(',')
data.paperSituationKey = state.inventionList.map(i=>i.name).join(',')
data.rewardKey = state.rewardList.map(i=>i.name).join(',')
data.achievementKey = state.achievementList.map(i=>i.name).join(',')
data.personalOpinionKey = state.proAdviceList.map(i=>i.name).join(',')
data.recommendUnitOpinionKey = state.adviceList.map(i=>i.name).join(',')
- delete data.profession
if(state.title == '新增'){
delete data.id
const res= await addExpertInfo(data)
if(res.code == 200){
- ElMessage.success(res.message)
+ ElMessage.success(res.msg)
state.fileList = []
state.resumeList = []
state.inventionList = []
@@ -711,12 +792,12 @@
state.hasDeleteFile = false
dialogVisible.value = false
}else{
- ElMessage.warning(res.message)
+ ElMessage.warning(res.msg)
}
}else{
const res= await modExpertInfo(data)
if(res.code == 200){
- ElMessage.success(res.message)
+ ElMessage.success(res.msg)
state.fileList = []
state.resumeList = []
state.inventionList = []
@@ -728,13 +809,33 @@
state.hasDeleteFile = false
dialogVisible.value = false
}else{
- ElMessage.warning(res.message)
+ ElMessage.warning(res.msg)
}
}
} else {
ElMessage.warning('请完善必填信息')
}
})
+}
+
+const assessSubmit = async (formEl)=> {
+ if (!formEl) return
+ await formEl.validate(async (valid, fields) => {
+ if (valid) {
+ await assess(2)
+ }else {
+ ElMessage.warning('请完善必填信息')
+ }
+ })
+}
+
+const closeAssess = ()=>{
+ assessFormRef.value.clearValidate()
+ state.assessForm = {
+ employTime: [],
+ ratingLevel: ''
+ }
+ state.assessDialog = false;
}
const handleClose = () => {
@@ -744,9 +845,8 @@
id: null,
name:'',
sex:'',
- profession: [],
- bigClassify:null,
- smallClassify: null,
+ domain: '',
+ deptId: null,
birthday: '',
phone:'',
title: '',
diff --git a/src/views/safetyReview/expertManage/applyRecords/index.vue b/src/views/safetyReview/expertManage/applyRecords/index.vue
index 96084d0..c62e07f 100644
--- a/src/views/safetyReview/expertManage/applyRecords/index.vue
+++ b/src/views/safetyReview/expertManage/applyRecords/index.vue
@@ -4,9 +4,9 @@
<el-form-item label="专业类别">
<el-cascader
clearable
- v-model="classiFy"
+ v-model="queryParams.domain"
:options="expertTypes"
- :props="{ expandTrigger: 'hover', value: 'id',label: 'classifyName'}"
+ :props="{ expandTrigger: 'hover', value: 'classifyName',label: 'classifyName'}"
@change="handleChange"></el-cascader>
</el-form-item>
<el-form-item label="姓名">
@@ -52,15 +52,15 @@
<el-table v-loading="loading" :data="expertList" :border="true">
<el-table-column type="index" width="55" align="center" />
<el-table-column label="姓名" align="center" prop="name" />
- <el-table-column label="出生日期" align="center" prop="birthday" />
+ <el-table-column label="出生日期" align="center" prop="birthday">
+ <template #default="scope">
+ {{scope.row.birthday.slice(0,10)}}
+ </template>
+ </el-table-column>
<el-table-column label="学历" align="center" prop="degree" />
<el-table-column label="职称" align="center" prop="title"/>
<el-table-column label="专业" align="center" prop="speciality" />
- <el-table-column label="推荐类别组别" align="center">
- <template #default="scope">
- {{findNodeById(expertTypes,scope.row.bigClassify)}}/{{findNodeById(expertTypes,scope.row.smallClassify)}}
- </template>
- </el-table-column>
+ <el-table-column label="推荐类别组别" align="center" prop="domain"/>
<el-table-column label="联系电话" align="center" prop="phone"/>
<el-table-column label="申请时间" align="center" prop="createTime">
<template #default="scope">
@@ -112,8 +112,7 @@
queryParams: {
pageNum: 1,
pageSize: 10,
- bigClassify: null,
- smallClassify: null,
+ domain: '',
dutyStatus: null,
name: '',
params: {
@@ -176,10 +175,6 @@
const handleQuery=()=> {
data.queryParams.pageNum = 1
- if(data.classiFy && data.classiFy.length>0){
- data.queryParams.bigClassify = data.classiFy[0]
- data.queryParams.smallClassify = data.classiFy[1]
- }
if(data.searchTime && data.searchTime.length>0){
data.queryParams.params.startTime = data.searchTime[0]
data.queryParams.params.endTime = data.searchTime[1]
@@ -191,8 +186,8 @@
loading.value = true;
const res = await getExpertsList(data.queryParams)
if(res.code == 200){
- data.expertList = res.data.list
- data.total = res.data.total
+ data.expertList = res.rows
+ data.total = res.total
}else{
ElMessage.warning(res.msg)
}
@@ -226,8 +221,7 @@
data.queryParams = {
pageNum: 1,
pageSize: 10,
- bigClassify: null,
- smallClassify: null,
+ domain: '',
dutyStatus: null,
name: '',
params: {
diff --git a/src/views/safetyReview/expertManage/checkProgress/index.vue b/src/views/safetyReview/expertManage/checkProgress/index.vue
index 30173e0..b448ce7 100644
--- a/src/views/safetyReview/expertManage/checkProgress/index.vue
+++ b/src/views/safetyReview/expertManage/checkProgress/index.vue
@@ -1,45 +1,36 @@
<template>
<div class="form-container">
- <el-dialog
- v-model="dialogVisible"
- title="专家申请进度查询"
- width="550px"
- :before-close="handleClose"
- center
- >
- <el-form :model="state.form" size="default" ref="formRef" :rules="state.formRules" label-width="110px" >
- <el-form-item label="身份证号:" prop="idCard">
- <el-input v-model.trim="state.form.idCard" placeholder="请输入身份证号"></el-input>
- </el-form-item>
- <el-form-item label="手机号:" prop="phone">
- <el-input v-model.trim="state.form.phone" placeholder="请输入申报时预留的手机号"></el-input>
- </el-form-item>
- <el-form-item label="业务处室:" prop="roomId">
- <el-select v-model="state.form.roomId" style="width: 100%" class="m-2" placeholder="请选择申请的业务处室">
- <el-option
- v-for="item in state.agencyList"
- :key="item.id"
- :label="item.name"
- :value="item.name"
- />
- </el-select>
- </el-form-item>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button type="primary" @click="onSubmit" size="default" v-preReClick>进度查询</el-button>
- </span>
- </template>
- </el-dialog>
- <div class="pro-map">
+ <el-form :model="queryParams" size="default" ref="formRef" inline :rules="formRules" label-width="110px" >
+ <el-form-item label="身份证号:" prop="idCard">
+ <el-input v-model.trim="queryParams.idCard" placeholder="请输入身份证号"></el-input>
+ </el-form-item>
+ <el-form-item label="手机号:" prop="phone">
+ <el-input v-model.trim="queryParams.phone" placeholder="请输入申报时预留的手机号"></el-input>
+ </el-form-item>
+ <el-form-item label="业务处室:" prop="deptId">
+ <el-cascader
+ clearable
+ placeholder="请选择申请的业务处室"
+ v-model="queryParams.deptId"
+ :options="deptList"
+ :props="{ expandTrigger: 'hover', value: 'deptId',label: 'deptName',checkStrictly: true,emitPath: false}"></el-cascader>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="Search" @click="onSubmit(formRef)" v-preReClick>进度查询</el-button>
+ <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+ </el-form-item>
+ </el-form>
+ <div class="pro-map" v-if="showProgress">
<button class="pro-btn-active">申请提交</button>
- <button class="pro-btn">
- <span>待评定</span>
+ <button :class="(result.state == 4 ||result.state == 2) ?'pro-btn-active':result.state == 3?'pro-btn-red':result.state == 1?'pro-btn-blue':'pro-btn'">
+ <span v-if="result.state == 1">待评定</span>
+ <span v-if="result.state == 3">评定不符合</span>
+ <span v-if="result.state == 2">评定通过</span>
</button>
- <button class="pro-btn">
+ <button :class="result.state == 4?'pro-btn-active':'pro-btn'">
专家入库
</button>
- <button class="pro-btn">
+ <button :class="result.state == 4?'pro-download-active':'pro-download'">
专家证书下载
</button>
</div>
@@ -50,7 +41,10 @@
import {ElMessage, ElMessageBox} from "element-plus"
import {verifyPhone, verifyIdCard} from "../../../../utils/validate"
import { getToken } from "@/utils/auth"
+import {getExpertsList, queryApprove} from "@/api/form";
+import {listOutDept} from "@/api/system/dept";
+const { proxy } = getCurrentInstance();
let validatePhone = (rule, value, callback)=>{
if(value === ''){
@@ -75,27 +69,34 @@
}
}
-const dialogVisible = ref(false)
-const formRef = ref()
-const handleClose = () => {
- reset();
- formRef.value.clearValidate();
- dialogVisible.value = false;
-}
-
-
-const state = reactive({
- form:{
- idCard: null,
+const data = reactive({
+ queryParams: {
+ idCard: '',
phone: '',
- roomId: null
+ deptId: null
},
formRules:{
idCard:[{ required: true, validator: verifyId, trigger: 'blur' }],
phone:[{ required: true, validator: validatePhone, trigger: 'blur' }],
- roomId: [{ required: true, message: '请选择申请的业务处室', trigger: 'blur' }]
- }
+ deptId: [{ required: true, message: '请选择申请的业务处室', trigger: 'blur' }]
+ },
+ result: {}
})
+
+const {queryParams,formRules,result} = toRefs(data)
+const deptList = ref([]);
+onMounted(()=>{
+ getDepList()
+})
+
+const showProgress = ref(false)
+const formRef = ref()
+
+function getDepList() {
+ listOutDept({}).then(response => {
+ deptList.value = proxy.handleTree(response.data, "deptId",'parentId','children');
+ })
+}
onMounted(()=>{
@@ -105,19 +106,36 @@
if (!formEl) return
await formEl.validate(async (valid, fields) => {
if (valid) {
-
+ const res = await queryApprove(data.queryParams)
+ if(res.code == 200){
+ data.result = res.data
+ showProgress.value = true
+ }else{
+ showProgress.value = false
+ ElMessage.warning(res.msg)
+ }
} else {
ElMessage.warning('请完善必填信息')
}
})
}
+
+const resetQuery = ()=>{
+ data.queryParams = {
+ idCard: '',
+ phone: '',
+ deptId: null
+ }
+ showProgress.value = false
+}
</script>
<style scoped lang="scss">
.form-container{
padding: 20px;
display: flex;
+ flex-direction: column;
justify-content: center;
align-items: center;
@@ -127,28 +145,42 @@
display: flex;
justify-content: space-around;
- .pro-btn {
+ .pro-btn,.pro-download{
width: calc(25% - 20px);
- color: #fff;
+ color: #333;
cursor: pointer;
- border: 1px solid #000;
+ border: 1px solid #666;
border-radius: 40px 99px 99px 40px;
padding: 2em 4em;
- background: #000;
+ background: #ccc;
transition: 0.2s;
}
- .pro-btn-active {
+ .pro-btn-active,.pro-btn-red,.pro-btn-blue,.pro-download-active {
width: calc(25% - 20px);
color: #fff;
cursor: pointer;
- border: 1px solid #000;
+ border: 1px solid #666;
border-radius: 40px 99px 99px 40px;
padding: 2em 4em;
transition: 0.2s;
transform: translate(-0.25rem, -0.25rem);
- background: #03a9f4;
- box-shadow: 0.25rem 0.25rem #000;
+ background: #67C23A;
+ box-shadow: 0.25rem 0.25rem #ccc;
+ }
+
+ .pro-download-active,.pro-download{
+ border-radius: 20px;
+ }
+
+ .pro-btn-red{
+ color: #fff;
+ background: #F56C6C;
+ }
+
+ .pro-btn-blue{
+ color: #fff;
+ background: #2563EB;
}
}
}
diff --git a/src/views/safetyReview/expertManage/evaluateRecord/components/evaluateDetail.vue b/src/views/safetyReview/expertManage/evaluateRecord/components/evaluateDetail.vue
index 5cc296e..09328b7 100644
--- a/src/views/safetyReview/expertManage/evaluateRecord/components/evaluateDetail.vue
+++ b/src/views/safetyReview/expertManage/evaluateRecord/components/evaluateDetail.vue
@@ -7,27 +7,27 @@
:before-close="handleClose"
>
<el-form :model="state.form" inline size="default" ref="busRef" :rules="state.formRules" label-width="140px" >
- <el-form-item label="姓名:" prop="score">
- <el-input v-model.trim="state.form.score" readonly></el-input>
+ <el-form-item label="姓名:" prop="name">
+ <el-input v-model.trim="state.form.name" readonly></el-input>
</el-form-item>
- <el-form-item label="身份证号:" prop="content">
- <el-input v-model.trim="state.form.content" readonly></el-input>
+ <el-form-item label="身份证号:" prop="idCard">
+ <el-input v-model.trim="state.form.idCard" readonly></el-input>
</el-form-item>
- <el-form-item label="项目名称:" prop="score">
+ <el-form-item label="项目名称:" prop="projectName">
+ <el-input v-model.trim="state.form.projectName" readonly></el-input>
+ </el-form-item>
+ <el-form-item label="是否为专家组组长:" prop="leader">
+ <el-input v-model.trim="state.form.leader" readonly></el-input>
+ </el-form-item>
+ <el-form-item label="考评记录时间:" prop="updateTime">
+ <el-input v-model.trim="state.form.updateTime" readonly></el-input>
+ </el-form-item>
+ <el-form-item label="总计:" prop="score">
<el-input v-model.trim="state.form.score" readonly></el-input>
</el-form-item>
- <el-form-item label="是否为专家组组长:" prop="content">
- <el-input v-model.trim="state.form.content" readonly></el-input>
- </el-form-item>
- <el-form-item label="考评记录时间:" prop="content">
- <el-input v-model.trim="state.form.content" readonly></el-input>
- </el-form-item>
- <el-form-item label="总计:" prop="content">
- <el-input v-model.trim="state.form.content" readonly></el-input>
- </el-form-item>
</el-form>
- <el-table :data="tableData" border style="width: 100%">
- <el-table-column prop="name" label="加(扣)分项目"/>
+ <el-table :data="state.form.tableData" border style="width: 100%">
+ <el-table-column prop="content" label="加(扣)分项目"/>
<el-table-column prop="score" label="分值明细" />
</el-table>
<template #footer>
@@ -43,20 +43,21 @@
import Editor from "@/components/Editor/index.vue";
import {ElMessage} from "element-plus";
import {addNotice} from "@/api/backManage/notice";
-import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate";
+import {addDict, editDict, getDictDetail, getExpertEvaDetail} from "@/api/backManage/evaluate";
const dialogVisible = ref(false);
const title = ref("");
const busRef = ref();
-const length = ref()
const emit = defineEmits(["getList"]);
const state = reactive({
form: {
- score: null,
- id: '',
- label: '',
- value: '',
- dictType: "sys_assess_type",
+ name: '',
+ idCard: '',
+ projectName: '',
+ leader: '',
+ updateTime: '',
+ score: '',
+ tableData: []
},
formRules:{
label: [{ required: true, message: '请输入类型', trigger: 'blur' }],
@@ -65,20 +66,21 @@
})
const openDialog = async (type, value) => {
- length.value = value.listLength
title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ;
- if(type === 'edit') {
- state.form = value;
+ if(type === 'edit' || type === 'view') {
+ state.form = value
+ state.form.leader = value.teamLeader==1?'是':'否'
const param = {
- dictId: value.id
+ projectExpertId: value.projectExpertId
}
- const res = await getDictDetail(param);
+ const res = await getExpertEvaDetail(param);
if(res.code === 200){
- state.form = res.data
+ state.form.tableData = res.data
}else{
- ElMessage.warning(res.message)
+ ElMessage.warning(res.msg)
}
}
+ console.log(state.form,'form')
dialogVisible.value = true;
}
diff --git a/src/views/safetyReview/expertManage/evaluateRecord/index.vue b/src/views/safetyReview/expertManage/evaluateRecord/index.vue
index f19dd68..a02fba2 100644
--- a/src/views/safetyReview/expertManage/evaluateRecord/index.vue
+++ b/src/views/safetyReview/expertManage/evaluateRecord/index.vue
@@ -2,29 +2,29 @@
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="项目名称">
- <el-input v-model="queryParams.name" placeholder="请输入项目名称" />
+ <el-input v-model="queryParams.projectName" placeholder="请输入项目名称" />
</el-form-item>
- <el-form-item label="姓名">
+ <el-form-item label="专家姓名">
<el-input v-model="queryParams.name" placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="身份证号">
- <el-input v-model="queryParams.name" placeholder="请输入身份证号" />
+ <el-input v-model="queryParams.idCard" placeholder="请输入身份证号" />
</el-form-item>
- <el-form-item label="领域" prop="dutyStatus">
- <el-select v-model="queryParams.dutyStatus" placeholder="岗位状态" clearable>
- <el-option :key="0" label="已评估" :value="0"/>
- <el-option :key="1" label="未评估" :value="1"/>
- </el-select>
+ <el-form-item label="专家领域">
+ <el-cascader
+ clearable
+ v-model="queryParams.domain"
+ :options="expertTypes"
+ :props="{ expandTrigger: 'hover', value: 'classifyName',label: 'classifyName',emitPath: false}"></el-cascader>
</el-form-item>
<el-form-item label="时间范围" prop="searchTime">
<el-date-picker
v-model="searchTime"
- type="daterange"
- @change="changeTime"
+ type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
- value-format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
<el-form-item>
@@ -33,28 +33,24 @@
</el-form-item>
</el-form>
- <el-row :gutter="10" class="mb8">
- <el-col :span="1.5">
- <el-button type="primary" plain :icon="Plus" @click="openDialog('add',{})">新增</el-button>
- </el-col>
- </el-row>
+<!-- <el-row :gutter="10" class="mb8">-->
+<!-- <el-col :span="1.5">-->
+<!-- <el-button type="primary" plain :icon="Plus" @click="openDialog('add',{})">新增</el-button>-->
+<!-- </el-col>-->
+<!-- </el-row>-->
<el-table v-loading="loading" :data="expertList" :border="true">
<el-table-column type="index" width="55" align="center" />
- <el-table-column label="考评时间" align="center" prop="birthday" />
- <el-table-column label="姓名" align="center" prop="birthday" />
- <el-table-column label="身份证号" align="center" prop="birthday" />
- <el-table-column label="考评应用领域" align="center" prop="birthday" />
- <el-table-column label="项目名称" align="center" prop="name" />
- <el-table-column label="是否为专家组" align="center">
+ <el-table-column label="考评时间" align="center" prop="updateTime" />
+ <el-table-column label="姓名" align="center" prop="name" />
+ <el-table-column label="身份证号" align="center" prop="idCard" />
+ <el-table-column label="考评应用领域" align="center" prop="domain" />
+ <el-table-column label="项目名称" align="center" prop="projectName" />
+ <el-table-column label="是否为专家组组长" align="center" prop="teamLeader">
<template #default="scope">
- {{findNodeById(expertTypes,scope.row.bigClassify)}}/{{findNodeById(expertTypes,scope.row.smallClassify)}}
+ {{scope.row.teamLeader == 1?'是':'否'}}
</template>
</el-table-column>
- <el-table-column label="考评分数" align="center">
- <template #default="scope">
- {{findNodeById(expertTypes,scope.row.bigClassify)}}/{{findNodeById(expertTypes,scope.row.smallClassify)}}
- </template>
- </el-table-column>
+ <el-table-column label="考评分数" align="center" prop="score"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button type="primary" link @click="openDialog('view',scope.row)">查看明细</el-button>
@@ -78,6 +74,7 @@
import EvaluateDetail from "./components/evaluateDetail";
import {delExpert, getExpertsList, getExpertTypes} from "../../../../api/form";
import { Plus } from '@element-plus/icons-vue'
+import {getExpertEvaList, getProjectExpertList} from "@/api/backManage/evaluate";
const loading = ref(false);
const data = reactive({
@@ -88,24 +85,21 @@
queryParams: {
pageNum: 1,
pageSize: 10,
- bigClassify: null,
- smallClassify: null,
- dutyStatus: null,
+ projectName: '',
name: '',
- params: {
- startTime: '',
- endTime: ''
- }
+ idCard: '',
+ domain: '',
+ startTime: '',
+ endTime: ''
},
- classiFy: [],
searchTime: []
});
const { showSearch,total, expertTypes,expertList,queryParams,classiFy,searchTime} = toRefs(data);
const evaluateFormRef = ref()
onMounted(()=>{
- // getList()
- // getTypes()
+ getList()
+ getTypes()
})
onUnmounted(()=>{
@@ -117,22 +111,8 @@
if(res.code == 200){
data.expertTypes = res.data
}else{
- ElMessage.warning(res.msg)
+ ElMessage.warning(res.message)
}
-}
-
-const handleChange=(value)=> {
- if(!value){
- data.classiFy = []
- data.queryParams.bigClassify = ""
- data.queryParams.smallClassify = ""
- }
-}
-const changeTime=(value)=>{
- if(!value){
- data.queryParams.params.endTime = ""
- data.queryParams.params.startTime = ""
- }
}
const findNodeById = (data,value)=> {
@@ -152,23 +132,17 @@
const handleQuery=()=> {
data.queryParams.pageNum = 1
- if(data.classiFy && data.classiFy.length>0){
- data.queryParams.bigClassify = data.classiFy[0]
- data.queryParams.smallClassify = data.classiFy[1]
- }
- if(data.searchTime && data.searchTime.length>0){
- data.queryParams.params.startTime = data.searchTime[0]
- data.queryParams.params.endTime = data.searchTime[1]
- }
getList()
}
const getList = async () => {
- loading.value = true;
- const res = await getExpertsList(data.queryParams)
+ loading.value = true
+ data.queryParams.startTime = data.searchTime[0] || ''
+ data.queryParams.endTime = data.searchTime[1] || ''
+ const res = await getExpertEvaList(data.queryParams)
if(res.code == 200){
- data.expertList = res.data.list
- data.total = res.data.total
+ data.expertList = res.rows
+ data.total = res.total
}else{
ElMessage.warning(res.msg)
}
@@ -176,7 +150,6 @@
}
const openDialog = async (type, value) => {
- console.log(evaluateFormRef.value,666)
evaluateFormRef.value.openDialog(type, value)
}
@@ -203,16 +176,13 @@
data.queryParams = {
pageNum: 1,
pageSize: 10,
- bigClassify: null,
- smallClassify: null,
- dutyStatus: null,
+ projectName: '',
name: '',
- params: {
- startTime: '',
- endTime: ''
- }
- };
- data.classiFy = []
+ idCard: '',
+ domain: '',
+ startTime: '',
+ endTime: ''
+ }
data.searchTime = []
handleQuery()
}
diff --git a/src/views/safetyReview/expertManage/experts/index.vue b/src/views/safetyReview/expertManage/experts/index.vue
index b8435a5..26a6f23 100644
--- a/src/views/safetyReview/expertManage/experts/index.vue
+++ b/src/views/safetyReview/expertManage/experts/index.vue
@@ -4,12 +4,15 @@
<el-form-item label="姓名">
<el-input v-model.trim="queryParams.name" placeholder="请输入姓名"></el-input>
</el-form-item>
+ <el-form-item label="身份证号">
+ <el-input v-model.trim="queryParams.idCard" placeholder="请输入身份证号"></el-input>
+ </el-form-item>
<el-form-item label="专业类别">
<el-cascader
clearable
- v-model="classiFy"
+ v-model="queryParams.domain"
:options="expertTypes"
- :props="{ expandTrigger: 'hover', value: 'id',label: 'classifyName'}"
+ :props="{ expandTrigger: 'hover', value: 'classifyName',label: 'classifyName'}"
@change="handleChange"></el-cascader>
</el-form-item>
<el-form-item label="在岗情况" prop="dutyStatus">
@@ -29,6 +32,13 @@
value-format="YYYY-MM-DD"
/>
</el-form-item>
+ <el-form-item label="评定级别">
+ <el-radio-group v-model="queryParams.ratingLevel">
+ <el-radio-button label="1">一级</el-radio-button>
+ <el-radio-button label="2">二级</el-radio-button>
+ <el-radio-button label="3">三级</el-radio-button>
+ </el-radio-group>
+ </el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
@@ -38,7 +48,11 @@
<el-table-column type="index" width="55" align="center" />
<el-table-column label="姓名" align="center" prop="name" />
<el-table-column label="身份证号" align="center" prop="idCard" />
- <el-table-column label="出生日期" align="center" prop="birthdayName" />
+ <el-table-column label="出生日期" align="center" prop="birthday">
+ <template #default="scope">
+ {{scope.row.birthday.slice(0,10)}}
+ </template>
+ </el-table-column>
<el-table-column label="性别" align="center" prop="sex" >
<template #default="scope">
<span>{{scope.row.sex === 0 ? '男' : '女'}}</span>
@@ -55,10 +69,42 @@
<el-table-column label="单位全称" align="center" prop="companyName"/>
<el-table-column label="现从事专业及方向" align="center" prop="currentProfession"/>
<el-table-column label="联系方式" align="center" prop="phone"/>
- <el-table-column label="支撑方向" align="center" prop="supportDirectionSafety"/>
+ <el-table-column label="支撑方向" align="center">
+ <template #default="scope">
+ {{ getSupport(scope.row.supportDirectionSafety, scope.row.supportDirectionPrevention, scope.row.supportDirectionEmergency) }}
+<!-- directionList-->
+ </template>
+ </el-table-column>
<el-table-column label="专家领域" align="center" prop="domain"/>
<el-table-column label="入库分级" align="center" prop="level"/>
- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+ <el-table-column label="评定级别" align="center" prop="ratingLevel">
+ <template #default="scope">
+ {{scope.row.ratingLevel == 1?'一级':scope.row.ratingLevel == 2?'二级':scope.row.ratingLevel == 3?'三级':'--'}}
+ </template>
+ </el-table-column>
+ <el-table-column label="聘书有效时间" align="center" prop="">
+ <template #default="scope">
+ {{scope.row.employmentDateStart}}/{{scope.row.employmentDateEnd}}
+ </template>
+ </el-table-column>
+ <el-table-column label="专家聘书" align="center" prop="expertCertificate">
+ <template #default="scope">
+ <div class="demo-image__preview" v-if="scope.row.expertCertificate && scope.row.expertCertificate!==''">
+ <el-image
+ style="width: 100px; height: 100px"
+ :src= "scope.row.expertCertificate"
+ :zoom-rate="1.2"
+ :max-scale="7"
+ :min-scale="0.2"
+ :preview-src-list="[scope.row.expertCertificate]"
+ :initial-index="0"
+ fit="cover"
+ :preview-teleported=true
+ />
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<template #default="scope">
<el-button type="primary" link @click="openDialog('view',scope.row)">查看</el-button>
</template>
@@ -89,26 +135,49 @@
expertTypes: [],
expertList: [],
queryParams: {
+ name: '',
pageNum: 1,
pageSize: 10,
- state: 2,
- bigClassify: null,
- smallClassify: null,
- dutyStatus: null,
+ idCard: '',
+ dutyStatus: '',
+ domain: '',
+ ratingLevel: null,
params: {
startTime: '',
endTime: ''
}
},
classiFy: [],
- searchTime: []
+ searchTime: [],
+ directionList: [
+ {
+ value: '1',
+ label: '现场检查'
+ },
+ {
+ value: '2',
+ label: '调查评估'
+ },
+ {
+ value: '3',
+ label: '咨询服务'
+ },
+ {
+ value: '4',
+ label: '教育培训'
+ },
+ {
+ value: '5',
+ label: '其他'
+ }
+ ],
});
const { showSearch,total, expertTypes,expertList,queryParams,classiFy,searchTime} = toRefs(data);
const expertFormRef = ref()
onMounted(()=>{
- // getList()
- // getTypes()
+ getList()
+ getTypes()
})
onUnmounted(()=>{
@@ -153,12 +222,34 @@
return null;
}
+const getSupport =(safety,prevention,emergency)=>{
+ let str = []
+ let safeArr = safety?.split(',')
+ let preventArr = prevention?.split(',')
+ let emergencyArr = emergency?.split(',')
+ if(Array.isArray(safeArr) && !safeArr.includes("")){
+ safeArr = safeArr.map(i=>{
+ return data.directionList.find(item=>item.value == i)?.label
+ })
+ str.push(`安全生产(${safeArr.join('、')})`)
+ }
+ if(Array.isArray(preventArr) && !preventArr.includes("")){
+ preventArr = preventArr.map(i=>{
+ return data.directionList.find(item=>item.value == i)?.label
+ })
+ str.push(`防灾减灾(${preventArr.join('、')})`)
+ }
+ if(Array.isArray(emergencyArr) && !emergencyArr.includes("")){
+ emergencyArr = emergencyArr.map(i=>{
+ return data.directionList.find(item=>item.value == i)?.label
+ })
+ str.push(`应急救援(${emergencyArr.join('、')})`)
+ }
+ return str.join(',')
+}
+
const handleQuery=()=> {
data.queryParams.pageNum = 1
- if(data.classiFy && data.classiFy.length>0){
- data.queryParams.bigClassify = data.classiFy[0]
- data.queryParams.smallClassify = data.classiFy[1]
- }
if(data.searchTime && data.searchTime.length>0){
data.queryParams.params.startTime = data.searchTime[0]
data.queryParams.params.endTime = data.searchTime[1]
@@ -170,13 +261,8 @@
loading.value = true;
const res = await getExpertsList(data.queryParams)
if(res.code == 200){
- data.expertList = res.data.map(item => {
- return{
- ...item,
- birthdayName: item.birthday ? item.birthday.slice(0,10) : ''
- }
- })
- data.total = res.data.total
+ data.expertList = res.rows
+ data.total = res.total
}else{
ElMessage.warning(res.msg)
}
@@ -189,12 +275,13 @@
const resetQuery=()=> {
data.queryParams = {
+ name: '',
pageNum: 1,
pageSize: 10,
- state: 2,
- bigClassify: null,
- smallClassify: null,
- dutyStatus: null,
+ idCard: '',
+ dutyStatus: '',
+ domain: '',
+ ratingLevel: null,
params: {
startTime: '',
endTime: ''
diff --git a/src/views/safetyReview/expertManage/fillForm/index.vue b/src/views/safetyReview/expertManage/fillForm/index.vue
index 543b20b..996a55d 100644
--- a/src/views/safetyReview/expertManage/fillForm/index.vue
+++ b/src/views/safetyReview/expertManage/fillForm/index.vue
@@ -5,28 +5,29 @@
<el-form :model="state.form" :rules="state.rules" ref="ruleFormRef" label-width="200px">
<el-row>
<el-col :span="20">
- <el-form-item label="专业类别" prop="profession">
+ <el-form-item label="专业类别" prop="domain">
<el-cascader
style="width: 100%"
- v-model="state.form.profession"
+ clearable
+ v-model="state.form.domain"
:options="state.expertsType"
- :props="{ expandTrigger: 'hover',value: 'id',label: 'classifyName' }"
+ :props="{ expandTrigger: 'hover',value: 'classifyName',label: 'classifyName',emitPath: false }"
@change="professionChange"></el-cascader>
</el-form-item>
</el-col>
</el-row>
- <!-- <el-row>-->
- <!-- <el-col :span="20">-->
- <!-- <el-form-item label="填报日期" prop="date">-->
- <!-- <el-date-picker-->
- <!-- style="width: 100%"-->
- <!-- v-model="form.date"-->
- <!-- type="date"-->
- <!-- placeholder="选择日期">-->
- <!-- </el-date-picker>-->
- <!-- </el-form-item>-->
- <!-- </el-col>-->
- <!-- </el-row>-->
+ <el-row>
+ <el-col :span="20">
+ <el-form-item label="业务处室:" prop="deptId">
+ <el-cascader
+ style="width: 100%"
+ clearable
+ v-model="state.form.deptId"
+ :options="state.deptList"
+ :props="{ expandTrigger: 'hover', value: 'deptId',label: 'deptName',emitPath: false}"></el-cascader>
+ </el-form-item>
+ </el-col>
+ </el-row>
<el-row>
<el-col :span="20">
<el-form-item label="姓名" prop="name">
@@ -50,7 +51,7 @@
<el-date-picker
style="width: 100%"
v-model="state.form.birthday"
- value-format="YYYY-MM-DD 00:00:00"
+ value-format="YYYY-MM-DD"
type="date"
placeholder="选择日期">
</el-date-picker>
@@ -318,7 +319,9 @@
import {delPic} from "@/api/login"
import { getToken } from "@/utils/auth"
import {Base64} from "js-base64"
+import {listDept, listOutDept} from "@/api/system/dept";
+const { proxy } = getCurrentInstance();
const imgDialog = ref(false)
const ruleFormRef = ref()
var validatePass = (rule, value, callback) => {
@@ -355,9 +358,8 @@
form:{
name:'',
sex:'',
- profession: [],
- bigClassify:null,
- smallClassify: null,
+ domain: '',
+ deptId: null,
birthday: '',
phone:'',
title: '',
@@ -388,6 +390,7 @@
source: 1
},
expertsType: [],
+ deptList: [],
directionList: [
{
value: 1,
@@ -410,7 +413,7 @@
label: '其他'
}
],
- uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
+ uploadUrl: import.meta.env.VITE_APP_BASE_API + '/common/upload',
header: {
Authorization: 'Bearer ' + getToken()
},
@@ -425,7 +428,8 @@
rules:{
name:[{ required: true, message: '请填写姓名', trigger: 'blur' }],
sex:[{ required: true, message: '请选择性别', trigger: 'blur' }],
- profession: [{ required: true, message: '请选择专业类别', trigger: 'blur' }],
+ domain: [{ required: true, message: '请选择专业类别', trigger: 'blur' }],
+ deptId: [{ required: true, message: '请选择业务处室', trigger: 'blur' }],
birthday: [{ required: true, message: '请选择出生日期', trigger: 'blur' }],
phone:[{ required: true, validator: validatePhone, trigger: 'blur' }],
title: [{ required: true, message: '请填写职称', trigger: 'blur' }],
@@ -439,6 +443,7 @@
onMounted(()=>{
getExpertsType()
+ getDepList()
})
const getExpertsType = async ()=>{
@@ -451,6 +456,12 @@
message: res.message
});
}
+ }
+
+ function getDepList() {
+ listOutDept({}).then(response => {
+ state.deptList = proxy.handleTree(response.data, "deptId",'parentId','children');
+ });
}
const professionChange=(value)=> {
@@ -485,9 +496,9 @@
const handleAvatarSuccess = (res, uploadFile,type) => {
if(res.code == 200){
if(type == '证件照'){
- state.form.electronicPhoto = res.data.path
+ state.form.electronicPhoto = res.url
}else{
- uploadFile.name = res.data.path
+ uploadFile.name = res.url
}
}else{
ElMessage({
@@ -542,25 +553,20 @@
data.supportDirectionSafety = data.supportDirectionSafety.join(',')
data.supportDirectionPrevention = data.supportDirectionPrevention.join(',')
data.supportDirectionEmergency = data.supportDirectionEmergency.join(',')
- data.bigClassify = data.profession[0]
- data.smallClassify = data.profession[1]
data.resumeKey = state.resumeList.map(i=>i.name).join(',')
data.paperSituationKey = state.inventionList.map(i=>i.name).join(',')
data.rewardKey = state.rewardList.map(i=>i.name).join(',')
data.achievementKey = state.achievementList.map(i=>i.name).join(',')
data.personalOpinionKey = state.proAdviceList.map(i=>i.name).join(',')
data.recommendUnitOpinionKey = state.adviceList.map(i=>i.name).join(',')
- delete data.profession
delete data.id
const res= await addExpertInfo(data)
if(res.code == 200){
- ElMessage.success(res.message)
+ ElMessage.success(res.msg)
state.form = {
name:'',
sex:'',
- profession: [],
- bigClassify:null,
- smallClassify: null,
+ domain: '',
birthday: '',
phone:'',
title: '',
@@ -598,7 +604,7 @@
state.proAdviceList = []
state.adviceList = []
}else{
- ElMessage.warning(res.message)
+ ElMessage.warning(res.msg)
}
} else {
ElMessage.warning('请完善必填信息')
diff --git a/src/views/safetyReview/expertManage/postEvaluation/index.vue b/src/views/safetyReview/expertManage/postEvaluation/index.vue
index 909d1fa..3f91c8e 100644
--- a/src/views/safetyReview/expertManage/postEvaluation/index.vue
+++ b/src/views/safetyReview/expertManage/postEvaluation/index.vue
@@ -2,20 +2,20 @@
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="项目名称">
- <el-input v-model="queryParams.name" placeholder="请输入姓名" />
+ <el-input v-model="queryParams.projectName" placeholder="请输入项目名称" />
</el-form-item>
- <el-form-item label="评估情况" prop="dutyStatus">
+ <el-form-item label="评估情况" prop="evaluationState">
<el-select v-model="queryParams.dutyStatus" placeholder="岗位状态" clearable>
- <el-option :key="0" label="已评估" :value="0"/>
- <el-option :key="1" label="未评估" :value="1"/>
+ <el-option :key="0" label="未评估" :value="0"/>
+ <el-option :key="1" label="已评估" :value="1"/>
</el-select>
</el-form-item>
- <el-form-item label="审批时间" prop="searchTime">
+ <el-form-item label="审批时间" prop="projectCheckTime">
<el-date-picker
v-model="searchTime"
- type="date"
+ type="datetime"
@change="changeTime"
- value-format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
<el-form-item>
@@ -71,6 +71,7 @@
import ExpertDialog from "./components/expertList";
import {delExpert, getExpertsList, getExpertTypes} from "../../../../api/form";
import { Plus } from '@element-plus/icons-vue'
+import {getProjectExpertList} from "@/api/backManage/evaluate";
const loading = ref(false)
const data = reactive({
@@ -81,14 +82,9 @@
queryParams: {
pageNum: 1,
pageSize: 10,
- bigClassify: null,
- smallClassify: null,
+ projectName: '',
dutyStatus: null,
- name: '',
- params: {
- startTime: '',
- endTime: ''
- }
+ projectCheckTime: ''
},
classiFy: [],
searchTime: []
@@ -98,7 +94,7 @@
const expertListRef = ref()
onMounted(()=>{
- // getList()
+ getList()
// getTypes()
})
@@ -113,20 +109,6 @@
}else{
ElMessage.warning(res.msg)
}
-}
-
-const handleChange=(value)=> {
- if(!value){
- data.classiFy = []
- data.queryParams.bigClassify = ""
- data.queryParams.smallClassify = ""
- }
-}
-const changeTime=(value)=>{
- if(!value){
- data.queryParams.params.endTime = ""
- data.queryParams.params.startTime = ""
- }
}
const findNodeById = (data,value)=> {
@@ -146,23 +128,15 @@
const handleQuery=()=> {
data.queryParams.pageNum = 1
- if(data.classiFy && data.classiFy.length>0){
- data.queryParams.bigClassify = data.classiFy[0]
- data.queryParams.smallClassify = data.classiFy[1]
- }
- if(data.searchTime && data.searchTime.length>0){
- data.queryParams.params.startTime = data.searchTime[0]
- data.queryParams.params.endTime = data.searchTime[1]
- }
getList()
}
const getList = async () => {
loading.value = true;
- const res = await getExpertsList(data.queryParams)
+ const res = await getProjectExpertList(data.queryParams)
if(res.code == 200){
- data.expertList = res.data.list
- data.total = res.data.total
+ data.expertList = res.rows
+ data.total = res.total
}else{
ElMessage.warning(res.msg)
}
@@ -196,17 +170,10 @@
data.queryParams = {
pageNum: 1,
pageSize: 10,
- bigClassify: null,
- smallClassify: null,
+ projectName: '',
dutyStatus: null,
- name: '',
- params: {
- startTime: '',
- endTime: ''
- }
- };
- data.classiFy = []
- data.searchTime = []
+ projectCheckTime: ''
+ }
handleQuery()
}
diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue
index a4a3c8d..13afa61 100644
--- a/src/views/system/dept/index.vue
+++ b/src/views/system/dept/index.vue
@@ -143,9 +143,9 @@
<script setup name="Dept">
import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild } from "@/api/system/dept";
import {onMounted,ref} from "vue";
-
+import {parseTime} from "@/utils/ruoyi";
const { proxy } = getCurrentInstance();
-// const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
+const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
const deptList = ref([]);
const open = ref(false);
@@ -174,14 +174,14 @@
const { queryParams, form, rules } = toRefs(data);
onMounted(()=>{
- // getList()
+ getList()
})
/** 查询部门列表 */
function getList() {
loading.value = true;
listDept(queryParams.value).then(response => {
- deptList.value = proxy.handleTree(response.data, "deptId");
+ deptList.value = proxy.handleTree(response.data, "deptId",'parentId','children');
loading.value = false;
});
}
--
Gitblit v1.9.2