From 12a7587eb12e3d33809ef9c169dd76b20ac707c4 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期三, 13 十一月 2024 10:23:47 +0800
Subject: [PATCH] 修改

---
 src/views/index.vue                                                       |    2 
 src/permission.js                                                         |    2 
 src/layout/components/Sidebar/menu.js                                     |   51 +
 src/views/homePage.vue                                                    |  171 -------
 src/views/safetyReview/expertManage/applyRecords/index.vue                |    1 
 src/views/system/dept/index.vue                                           |   51 +-
 src/router/index.js                                                       |   65 +-
 src/assets/images/loginBg.jpg                                             |    0 
 .env.staging                                                              |    4 
 .env.development                                                          |    8 
 src/api/home/homePage.js                                                  |   54 --
 src/views/safetyReview/projectSupplement/components/supplemenrtDialog.vue |    1 
 src/views/safetyReview/expertManage/experts/index.vue                     |   26 -
 src/main.js                                                               |    1 
 index.html                                                                |    2 
 package.json                                                              |    2 
 src/views/safetyReview/expertManage/checkProgress/index.vue               |  659 +++-----------------------
 .env.production                                                           |    4 
 src/views/components/loginForm.vue                                        |  288 ++++++++---
 public/favicon.ico                                                        |    0 
 20 files changed, 401 insertions(+), 991 deletions(-)

diff --git a/.env.development b/.env.development
index 77a3fcf..fcf58c3 100644
--- a/.env.development
+++ b/.env.development
@@ -1,15 +1,15 @@
 # 页面标题
-VITE_APP_TITLE = 智慧安评
+VITE_APP_TITLE = 专家管理系统
 
 # 开发环境配置
 VITE_APP_ENV = 'development'
 
-# 智慧安评/开发环境
+# 专家管理系统/开发环境
 #黄镇
 #VITE_APP_BASE_API = 'http://192.168.0.47:8085'
 
 #孔哥
-VITE_APP_BASE_API = 'http://192.168.2.15:8088/api'
+#VITE_APP_BASE_API = 'http://192.168.2.15:8088/api'
 
 #线上
-#VITE_APP_BASE_API = 'http://106.15.95.149:8088/api'
+VITE_APP_BASE_API = 'http://106.15.95.149:8088/api'
\ No newline at end of file
diff --git a/.env.production b/.env.production
index e42547e..dd3939d 100644
--- a/.env.production
+++ b/.env.production
@@ -1,10 +1,10 @@
 # 页面标题
-VITE_APP_TITLE = 智慧安评
+VITE_APP_TITLE = 专家管理系统
 
 # 生产环境配置
 VITE_APP_ENV = 'production'
 
-# 智慧安评/生产环境
+# 专家管理系统/生产环境
 VITE_APP_BASE_API = 'http://106.15.95.149:8088/api'
 
 # 是否在打包时开启压缩,支持 gzip 和 brotli
diff --git a/.env.staging b/.env.staging
index 49092a9..26b6ad4 100644
--- a/.env.staging
+++ b/.env.staging
@@ -1,10 +1,10 @@
 # 页面标题
-VITE_APP_TITLE = 智慧安评
+VITE_APP_TITLE = 专家管理系统
 
 # 生产环境配置
 VITE_APP_ENV = 'staging'
 
-# 智慧安评/生产环境
+# 专家管理系统/生产环境
 VITE_APP_BASE_API = '/stage-api'
 
 # 是否在打包时开启压缩,支持 gzip 和 brotli
diff --git a/index.html b/index.html
index 5b6a975..ab81f49 100644
--- a/index.html
+++ b/index.html
@@ -7,7 +7,7 @@
   <meta name="renderer" content="webkit">
   <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
   <link rel="icon" href="/favicon.ico">
-  <title>智慧安评</title>
+  <title>专家管理系统</title>
   <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
   <style>
     html,
diff --git a/package.json b/package.json
index 101e041..fbc916a 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "ruoyi",
   "version": "3.8.6",
-  "description": "智慧安评",
+  "description": "专家管理系统",
   "author": "若依",
   "license": "MIT",
   "scripts": {
diff --git a/public/favicon.ico b/public/favicon.ico
index e263760..647bc5e 100644
--- a/public/favicon.ico
+++ b/public/favicon.ico
Binary files differ
diff --git a/src/api/home/homePage.js b/src/api/home/homePage.js
index 20ec8e8..543ea86 100644
--- a/src/api/home/homePage.js
+++ b/src/api/home/homePage.js
@@ -1,55 +1 @@
 import request from '@/utils/request'
-
-// 获取分页
-export function getNotice(params) {
-    return request({
-        url: '/notice/noticeList',
-        method: 'get',
-        params: params
-    })
-}
-
-// 获取详情
-export function getNoticeDetails(params) {
-    return request({
-        url: '/notice/getNoticeById',
-        method: 'get',
-        params: params
-    })
-}
-
-// 获取分页
-export function getLaws(params) {
-    return request({
-        url: '/law/lawList',
-        method: 'get',
-        params: params
-    })
-}
-
-// 获取详情
-export function getLawsDetails(params) {
-    return request({
-        url: '/law/getLawById',
-        method: 'get',
-        params: params
-    })
-}
-
-// 获取分页
-export function getPublish(params) {
-    return request({
-        url: '/agency/agencyList',
-        method: 'get',
-        params: params
-    })
-}
-
-// 获取详情
-export function getPublishDetails(params) {
-    return request({
-        url: '/agency/getAgencyById',
-        method: 'get',
-        params: params
-    })
-}
\ No newline at end of file
diff --git a/src/assets/images/loginBg.jpg b/src/assets/images/loginBg.jpg
index e1cc12c..9d59c8c 100644
--- a/src/assets/images/loginBg.jpg
+++ b/src/assets/images/loginBg.jpg
Binary files differ
diff --git a/src/layout/components/Sidebar/menu.js b/src/layout/components/Sidebar/menu.js
index 74bc42a..dd25c14 100644
--- a/src/layout/components/Sidebar/menu.js
+++ b/src/layout/components/Sidebar/menu.js
@@ -66,35 +66,40 @@
             ]
         },
         {
-            path: '/baseSet',
-            redirect: '/baseSet/evaluate',
-            meta: { title: '基础设置',icon: 'dict'},
+            path: '/system',
+            redirect: '/system/dept',
+            meta: { title: '系统设置',icon: 'dict'},
             children: [
+                {
+                    path: 'dept',
+                    name: 'dept',
+                    meta: { title: '部门处室管理',icon: 'build'}
+                },
                 {
                     path: 'evaluate',
                     name: 'evaluate',
                     meta: { title: '类型管理',icon: 'build'}
                 },
-                {
-                    path: 'expertsType',
-                    name: 'expertsType',
-                    meta: { title: '专家类型管理',icon: 'clipboard'}
-                },
-                {
-                    path: 'business',
-                    name: 'business',
-                    meta: { title: '业务范围管理',icon: 'cascader'}
-                },
-                {
-                    path: 'area',
-                    name: 'area',
-                    meta: { title: '地区维护管理',icon: 'component'}
-                },
-                {
-                    path: 'major',
-                    name: 'major',
-                    meta: { title: '专业方向管理',icon: 'documentation'}
-                }
+                // {
+                //     path: 'expertsType',
+                //     name: 'expertsType',
+                //     meta: { title: '专家类型管理',icon: 'clipboard'}
+                // },
+                // {
+                //     path: 'business',
+                //     name: 'business',
+                //     meta: { title: '业务范围管理',icon: 'cascader'}
+                // },
+                // {
+                //     path: 'area',
+                //     name: 'area',
+                //     meta: { title: '地区维护管理',icon: 'component'}
+                // },
+                // {
+                //     path: 'major',
+                //     name: 'major',
+                //     meta: { title: '专业方向管理',icon: 'documentation'}
+                // }
 
             ]
         },
diff --git a/src/main.js b/src/main.js
index d1504ce..131022b 100644
--- a/src/main.js
+++ b/src/main.js
@@ -47,7 +47,6 @@
 
 import vue3JsonExcel   from 'vue3-json-excel';
 
-
 import { Boot } from '@wangeditor/editor'
 import attachmentModule from '@wangeditor/plugin-upload-attachment'
 import loadMore from '@/utils/selectLoadMoreDirective'
diff --git a/src/permission.js b/src/permission.js
index b3da443..03ed486 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -11,7 +11,7 @@
 
 NProgress.configure({ showSpinner: false });
 
-const whiteList = ['/homePage','/fillForm'];
+const whiteList = ['/homePage','/fillForm','/checkProgress'];
 
 router.beforeEach((to, from, next) => {
   NProgress.start()
diff --git a/src/router/index.js b/src/router/index.js
index 49e47c5..63231ea 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -58,6 +58,11 @@
     hidden: true
   },
   {
+    path: '/checkProgress',
+    component: () => import('@/views/safetyReview/expertManage/checkProgress/index.vue'),
+    hidden: true
+  },
+  {
     path: '/expertUser',
     component: () => import('@/views/safetyReview/userManage/expertUsers/index.vue'),
     hidden: true
@@ -235,41 +240,47 @@
     ]
   },
   {
-    path: '/baseSet',
+    path: '/system',
     component: Layout,
-    redirect: '/baseSet/evaluate',
-    meta: { title: '基础设置'},
+    redirect: '/system/post',
+    meta: { title: '系统设置'},
     children: [
+      {
+        path: 'dept',
+        component: () => import('@/views/system/dept/index.vue'),
+        name: 'dept',
+        meta: { title: '部门处室管理',icon: 'form'}
+      },
       {
         path: 'evaluate',
         component: () => import('@/views/safetyReview/baseSet/evaluateType/index.vue'),
         name: 'evaluate',
         meta: { title: '类型管理',icon: 'form'}
       },
-      {
-        path: 'expertsType',
-        component: () => import('@/views/safetyReview/baseSet/expertsType/index.vue'),
-        name: 'expertsType',
-        meta: { title: '专家类型管理',icon: 'form'}
-      },
-      {
-        path: 'business',
-        component: () => import('@/views/safetyReview/baseSet/business/index.vue'),
-        name: 'business',
-        meta: { title: '业务范围',icon: 'form'}
-      },
-      {
-        path: 'area',
-        component: () => import('@/views/safetyReview/baseSet/area/index.vue'),
-        name: 'area',
-        meta: { title: '地区维护',icon: 'form'}
-      },
-      {
-        path: 'major',
-        component: () => import('@/views/safetyReview/baseSet/major/index.vue'),
-        name: 'major',
-        meta: { title: '专业方向',icon: 'form'}
-      },
+      // {
+      //   path: 'expertsType',
+      //   component: () => import('@/views/safetyReview/baseSet/expertsType/index.vue'),
+      //   name: 'expertsType',
+      //   meta: { title: '专家类型管理',icon: 'form'}
+      // },
+      // {
+      //   path: 'business',
+      //   component: () => import('@/views/safetyReview/baseSet/business/index.vue'),
+      //   name: 'business',
+      //   meta: { title: '业务范围',icon: 'form'}
+      // },
+      // {
+      //   path: 'area',
+      //   component: () => import('@/views/safetyReview/baseSet/area/index.vue'),
+      //   name: 'area',
+      //   meta: { title: '地区维护',icon: 'form'}
+      // },
+      // {
+      //   path: 'major',
+      //   component: () => import('@/views/safetyReview/baseSet/major/index.vue'),
+      //   name: 'major',
+      //   meta: { title: '专业方向',icon: 'form'}
+      // },
     ]
   },
 
diff --git a/src/views/components/loginForm.vue b/src/views/components/loginForm.vue
index e2e2f2a..e6d1833 100644
--- a/src/views/components/loginForm.vue
+++ b/src/views/components/loginForm.vue
@@ -1,72 +1,76 @@
 <template>
-  <div class="login-panel">
-    <div class="login-img">
-      <img :src="loginImgPng">
-    </div>
-    <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
-      <h3 class="title">登录系统</h3>
-      <el-form-item prop="username">
-        <el-input
-          v-model="loginForm.username"
-          type="text"
-          size="large"
-          auto-complete="off"
-          placeholder="账号"
-        >
-          <template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template>
-        </el-input>
-      </el-form-item>
-      <el-form-item prop="password">
-        <el-input
-          v-model="loginForm.password"
-          type="password"
-          size="large"
-          auto-complete="off"
-          placeholder="密码"
-          @keyup.enter="handleLogin"
-          show-password
-        >
-          <template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template>
-        </el-input>
-      </el-form-item>
-      <el-form-item prop="code" v-if="captchaEnabled">
-        <el-input
-          v-model="loginForm.code"
-          size="large"
-          auto-complete="off"
-          placeholder="验证码"
-          style="width: 63%"
-          @keyup.enter="handleLogin"
-        >
-          <template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template>
-        </el-input>
-        <div class="login-code">
-          <img :src="codeUrl" @click="getCode" class="login-code-img"/>
-        </div>
-      </el-form-item>
-      <el-radio-group v-model="loginForm.role" class="mb5">
-        <el-radio :label="0" size="large">监管部门</el-radio>
-        <el-radio :label="1" size="large">机构管理员</el-radio>
-      </el-radio-group>
-      <div style="display: flex;justify-content: space-between;align-items: center;margin-bottom: 25px">
-<!--        <el-checkbox v-model="loginForm.rememberMe">记住密码</el-checkbox>-->
-        <el-button
-            :loading="loading"
-            size="large"
-            type="primary"
-            style="width:63%;"
-            @click.prevent="handleLogin"
-        >
-          <span v-if="!loading">登 录</span>
-          <span v-else>登 录 中...</span>
-        </el-button>
-        <div v-if="isRegister">
-          <el-button link type="primary" @click="openRegist">立即注册</el-button>
+  <el-row class="login-panel">
+    <el-col :sm="24" :md="12" class="login-img">
+      新疆维吾尔自治区应急管理厅<br/>专家管理系统
+    </el-col>
+    <el-col :sm="24" :md="12" class="login-box">
+      <div class="login-card">
+        <el-form ref="loginRef" :model="loginForm" :rules="loginRules" class="login-form">
+          <h3 class="title">登录系统</h3>
+          <el-form-item prop="username">
+            <el-input
+              v-model="loginForm.username"
+              type="text"
+              size="large"
+              auto-complete="off"
+              placeholder="账号"
+            >
+              <template #prefix><svg-icon icon-class="user" class="el-input__icon input-icon" /></template>
+            </el-input>
+          </el-form-item>
+          <el-form-item prop="password">
+            <el-input
+              v-model="loginForm.password"
+              type="password"
+              size="large"
+              auto-complete="off"
+              placeholder="密码"
+              @keyup.enter="handleLogin"
+              show-password
+            >
+              <template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template>
+            </el-input>
+          </el-form-item>
+          <el-form-item prop="code" v-if="captchaEnabled">
+            <el-input
+              v-model="loginForm.code"
+              size="large"
+              auto-complete="off"
+              placeholder="验证码"
+              style="width: 63%"
+              @keyup.enter="handleLogin"
+            >
+              <template #prefix><svg-icon icon-class="validCode" class="el-input__icon input-icon" /></template>
+            </el-input>
+            <div class="login-code">
+              <img :src="codeUrl" @click="getCode" class="login-code-img"/>
+            </div>
+          </el-form-item>
+    <!--      <el-radio-group v-model="loginForm.role" class="mb5">-->
+    <!--        <el-radio :label="0" size="large">监管部门</el-radio>-->
+    <!--        <el-radio :label="1" size="large">机构管理员</el-radio>-->
+    <!--      </el-radio-group>-->
+          <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">
+                <span v-if="!loading">登 录</span>
+                <span v-else>登 录 中...</span>
+              </button>
+            </div>
+  <!--          <div v-if="isRegister">-->
+  <!--            <el-button link type="primary" @click="openRegist">立即注册</el-button>-->
+  <!--          </div>-->
+          </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>
         </div>
       </div>
-    </el-form>
-  </div>
-  <register ref="regRef"/>
+    </el-col>
+  </el-row>
+  <expert-form ref="expertFormRef"></expert-form>
+<!--  <register ref="regRef"/>-->
 </template>
 
 <script setup>
@@ -78,7 +82,7 @@
 import { Register } from "@/layout/components";
 import { Base64 } from 'js-base64'
 import menu from "@/layout/components/Sidebar/menu";
-import loginImgPng from "@/assets/images/loginImg.png"
+import ExpertForm from "../safetyReview/expertManage/applyRecords/components/expertForm";
 
 const userStore = useUserStore()
 const route = useRoute();
@@ -113,7 +117,7 @@
 })
 
 const openRegist = ()=>{
-  regRef.value.openDialog('add', {});
+  regRef.value.openApply();
 }
 
 watch(route, (newRoute) => {
@@ -122,6 +126,27 @@
 
 
 const sidebarRouters = ref([])
+
+
+
+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 openCheck = () => {
+  // expertFormRef.value.openApply(type, value)
+  const routePath = '/checkProgress';
+  const resolvedRoute = router.resolve(routePath);
+  const fullPath = resolvedRoute.href
+  window.open(fullPath, '_blank');
+}
+
 function handleLogin() {
   proxy.$refs.loginRef.validate(valid => {
     if (valid) {
@@ -218,42 +243,83 @@
 </script>
 
 <style lang='scss' scoped>
+@font-face {
+  font-family: "AliMa";
+  src: url("@/assets/styles/font/AlimamaShuHeiTi-Bold.ttf");
+  font-style: normal;
+  font-weight: normal;
+}
 .login-panel{
   width: 100%;
   height: 100%;
-  display: flex;
+  background: url("@/assets/images/loginBg.jpg") no-repeat center;
+  background-size: cover;
   justify-content: center;
   align-items: center;
+
 }
 .login-img{
-  flex: 1;
   display: flex;
   justify-content: center;
   align-items: center;
-  img{
-    width: 100%;
-  }
+  font-family: 'AliMa';
+  color: #fff;
+  font-size: 3.2rem;
+  text-align: center;
+  line-height: 1.5;
+  transform: translateY(-80px);
+  text-shadow: -10px 10px 20px rgba(0,0,0,.4);
 }
-.login-form {
-  flex: 2;
-  padding: 10px;
-
-  .title{
-    margin: 20px 0;
+.login-box{
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  transform: translateY(-40px);
+  .login-card{
+    width: 500px;
+    padding: 30px;
+    border-radius: 16px;
+    background-color: rgba(255,255,255,.2);
+    backdrop-filter: blur(5px);
+    -webkit-backdrop-filter: blur(5px);
+    border: 1px solid rgba(255,255,255,.4);
+    max-width: 100%;
+    box-sizing: border-box;
+    box-shadow: 0 10px 20px rgba(0,0,0,.05);
   }
+  .login-form {
+    width: 100%;
+    box-sizing: border-box;
 
-  .el-input {
-    height: 40px;
-    input {
-      height: 40px;
+    .title{
+      margin: 0 0 30px;
+      text-align: center;
+      color: #fff
+    }
+
+    .el-form-item{
+      margin-bottom: 30px;
+    }
+
+    .el-input {
+      height: 48px;
+      input {
+        height: 48px;
+      }
+    }
+    .input-icon {
+      height: 39px;
+      width: 14px;
+      margin-left: 0px;
     }
   }
-  .input-icon {
-    height: 39px;
-    width: 14px;
-    margin-left: 0px;
+  .other-btns{
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
   }
 }
+
 .login-tip {
   font-size: 13px;
   text-align: center;
@@ -261,11 +327,12 @@
 }
 .login-code {
   width: 33%;
-  height: 40px;
+  height: 48px;
   float: right;
-  img {
+  .login-code-img {
     display: inline-block;
     width: 100%;
+    padding-left: 12px;
     cursor: pointer;
     vertical-align: middle;
   }
@@ -279,8 +346,45 @@
   display: flex;
   justify-content: space-between;
 }
-.login-code-img {
-  height: 40px;
-  padding-left: 12px;
+
+.login-btn {
+  width: 100%;
+  font-size: 1.2em;
+  padding: 0.6em 0.8em;
+  border-radius: 0.5em;
+  border: none;
+  background-color: #2563EB;
+  color: #fff;
+  cursor: pointer;
+  box-shadow: 2px 2px 3px #000000b4;
 }
+
+.btn-cont {
+  width: 100%;
+  position: relative;
+  padding: 3px;
+  background: #03a9f4;
+  border-radius: 0.9em;
+  transition: all 0.3s ease;
+}
+
+.btn-cont::before {
+  content: "";
+  position: absolute;
+  inset: 0;
+  margin: auto;
+  border-radius: 0.9em;
+  z-index: -10;
+  filter: blur(0);
+  transition: filter 0.4s ease;
+}
+
+.btn-cont:hover::before {
+  background: #2559c9;
+  filter: blur(0.6em);
+}
+.btn-cont:active::before {
+  filter: blur(0.1em);
+}
+
 </style>
diff --git a/src/views/homePage.vue b/src/views/homePage.vue
index 4cc13a1..cb4614f 100644
--- a/src/views/homePage.vue
+++ b/src/views/homePage.vue
@@ -1,51 +1,6 @@
 <template>
   <div class="login">
-<!--    <img class="pics1" src="src/assets/images/login-data.png">-->
-<!--    <img class="pics2" src="src/assets/images/login-search.png">-->
-    <div class="main-content">
-      <div class="top" style="z-index: 1">
-        <div class="top-cont">
-          <div class="logo blueFont">新疆维吾尔自治区智慧安评服务平台</div>
-          <div class="time">
-            <div>
-              <span>{{state.date}}</span>
-              <span>{{state.weekDay}}</span>
-            </div>
-            <div>
-              {{state.dayTime}}好!
-            </div>
-          </div>
-        </div>
-      </div>
-
-      <div class="nav blueBg" style="z-index: 1">
-        <div class="nav-cont">
-          <div :class="state.activeMenu == 1?'active': ''" @click="changeTab(1)">
-            <HomeFilled style="width: 1em; height: 1em; margin-right: 8px" />
-            <div>首页</div>
-          </div>
-          <div :class="state.activeMenu == 2?'active': ''" @click="changeTab(2)">
-            <Comment style="width: 1em; height: 1em; margin-right: 8px" />
-            <div>通知公告</div>
-          </div>
-          <div :class="state.activeMenu == 3?'active': ''" @click="changeTab(3)">
-            <BellFilled style="width: 1em; height: 1em; margin-right: 8px" />
-            <div>法律法规</div>
-          </div>
-          <div :class="state.activeMenu == 4?'active': ''" @click="changeTab(4)">
-            <List style="width: 1em; height: 1em; margin-right: 8px" />
-            <div>机构公示</div>
-          </div>
-        </div>
-      </div>
-      <div class="content">
-        <Home v-if="state.activeMenu==1" ref="homeRef" @toMore="changeTab" @openDetails="openDetails"/>
-        <Notice v-if="state.activeMenu==2" ref="noticeRef" @openDetails="openDetails"/>
-        <Laws v-if="state.activeMenu==3" ref="lawsRef" @openDetails="openDetails"/>
-        <Publish v-if="state.activeMenu==4" ref="publishRef" @openDetails="openDetails"/>
-        <Details v-if="state.activeMenu==0" ref="detailsRef" @backJump="changeTab"></Details>
-      </div>
-    </div>
+    <login-form ref="loginRef"/>
     <!--  底部  -->
     <div class="el-login-footer">
       <span>Copyright ©2023-{{nowYear}} All Rights Reserved.</span>
@@ -56,11 +11,7 @@
 <script setup>
 import {onMounted, ref, reactive, watch, defineAsyncComponent, nextTick, onUnmounted} from "vue"
 import useUserStore from '@/store/modules/user'
-import Home from './components/home'
-import Notice from './components/notice'
-import Laws from './components/laws'
-import Publish from './components/publish'
-import Details from './components/details.vue'
+import LoginForm from './components/loginForm'
 const { proxy } = getCurrentInstance()
 const route = useRoute()
 const router = useRouter()
@@ -76,11 +27,8 @@
   second: '2-digit'
 }
 
-const homeRef = ref(null)
 const noticeRef = ref(null)
-const lawsRef = ref(null)
-const publishRef = ref(null)
-const detailsRef = ref(null)
+
 const state = reactive({
   activeMenu: 1,
   date: '',
@@ -130,19 +78,6 @@
     redirect.value = newRoute.query && newRoute.query.redirect;
 }, { immediate: true });
 
-const changeTab=(num)=>{
-  state.activeMenu = num
-}
-
-const openDetails=(type,id)=>{
-  state.activeMenu = 0
-  nextTick(() => {
-    proxy.$refs.detailsRef.openDetail(type,id)
-  })
-  // detailsRef.value.openDetail(type,id)
-
-}
-
 </script>
 
 <style lang='scss' scoped>
@@ -151,104 +86,6 @@
   display: flex;
   justify-content: center;
   height: 100%;
-
-  .main-content{
-    width: 100%;
-    display: flex;
-    flex-direction: column;
-    color: #333;
-
-    .top{
-      width: 100%;
-      background: rgba(249,250,251,1);
-      position: fixed;
-      top: 0;
-      left: 0;
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      .top-cont{
-        width: 1200px;
-        height: 80px;
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        margin: 0 auto;
-
-        .logo{
-          font-size: 2rem;
-          font-weight: 800;
-          height: 80px;
-          line-height: 80px;
-          font-family: "PingFang SC";
-        }
-
-        .time{
-          font-size: 16px;
-          height: 80px;
-          display: flex;
-          flex-direction: column;
-          justify-content: center;
-          span{
-            &:first-of-type{
-              margin-right: 10px;
-            }
-          }
-        }
-      }
-    }
-
-
-    .nav{
-      width: 100%;
-      height: 70px;
-      position: fixed;
-      top: 80px;
-      left: 0;
-      .nav-cont{
-        width: 1200px;
-        height: 70px;
-        margin: 0 auto;
-        display: flex;
-        align-items: center;
-        justify-content: left;
-
-        &>div{
-          height: 100%;
-          padding: 0 50px;
-          color: #ffffff;
-          background-color: #385ca7;
-          font-size: 20px;
-          text-decoration: none;
-          display: flex;
-          align-items: center;
-          justify-content: center;
-          cursor: pointer;
-
-          &:hover{
-            background: #294582;
-          }
-        }
-        .active{
-          background: #294582;
-        }
-      }
-    }
-  }
-}
-.pics1{
-  position: absolute;
-  width: 500px;
-  bottom: 0;
-  right: 0;
-  opacity: 0.5;
-}
-.pics2{
-  position: absolute;
-  width: 500px;
-  top: 20px;
-  left: 20px;
-  opacity: 0.5;
 }
 
 .el-login-footer {
@@ -259,8 +96,6 @@
   width: 100%;
   text-align: center;
   color: #fff;
-  background: #385ca7;
-  font-family: "PingFang SC";
   font-size: 12px;
   letter-spacing: 1px;
 }
diff --git a/src/views/index.vue b/src/views/index.vue
index 1c78965..cf1f44d 100644
--- a/src/views/index.vue
+++ b/src/views/index.vue
@@ -41,7 +41,7 @@
       <el-col :sm="24" :lg="12" style="padding-left: 20px">
         <h2>若依后台管理框架</h2>
         <p>
-          一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了智慧安评,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
+          一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了专家管理系统,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
         </p>
         <p>
           <b>当前版本:</b> <span>v{{ version }}</span>
diff --git a/src/views/safetyReview/expertManage/applyRecords/index.vue b/src/views/safetyReview/expertManage/applyRecords/index.vue
index 39b5188..96084d0 100644
--- a/src/views/safetyReview/expertManage/applyRecords/index.vue
+++ b/src/views/safetyReview/expertManage/applyRecords/index.vue
@@ -201,7 +201,6 @@
 
 const openDialog = (type, value) => {
   expertFormRef.value.openDialog(type, value)
-
 }
 
 const handleDelete = (val) => {
diff --git a/src/views/safetyReview/expertManage/checkProgress/index.vue b/src/views/safetyReview/expertManage/checkProgress/index.vue
index 543b20b..30173e0 100644
--- a/src/views/safetyReview/expertManage/checkProgress/index.vue
+++ b/src/views/safetyReview/expertManage/checkProgress/index.vue
@@ -1,333 +1,57 @@
 <template>
-    <div class="form-container">
-          <div class="main-title" style="font-size: 24px;font-weight: bolder;text-align: center;margin: 40px 0">专家信息录入</div>
-          <div class="main_form">
-            <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-cascader
-                        style="width: 100%"
-                        v-model="state.form.profession"
-                        :options="state.expertsType"
-                        :props="{ expandTrigger: 'hover',value: 'id',label: 'classifyName' }"
-                        @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="name">
-                    <el-input v-model="state.form.name"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="性别" prop="sex">
-                    <el-radio-group v-model="state.form.sex">
-                      <el-radio :label="0">男</el-radio>
-                      <el-radio :label="1">女</el-radio>
-                    </el-radio-group>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="出生日期" prop="birthday">
-                    <el-date-picker
-                        style="width: 100%"
-                        v-model="state.form.birthday"
-                        value-format="YYYY-MM-DD 00:00:00"
-                        type="date"
-                        placeholder="选择日期">
-                    </el-date-picker>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="联系电话" prop="phone">
-                    <el-input v-model="state.form.phone"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="职称" prop="title">
-                    <!--              <el-select v-model="form.title" placeholder="请选择" style="width: 100%">-->
-                    <!--                <el-option-->
-                    <!--                  v-for="item in professionalList"-->
-                    <!--                  :key="item.value"-->
-                    <!--                  :label="item.label"-->
-                    <!--                  :value="item.value">-->
-                    <!--                </el-option>-->
-                    <!--              </el-select>-->
-                    <el-input v-model="state.form.title"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="证件照" prop="electronicPhoto">
-                    <el-upload accept="image/*" :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'证件照')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='1' v-model:file-list="state.fileList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'证件照')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="身份证号" prop="idCard">
-                    <el-input v-model="state.form.idCard"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="在岗情况" prop="dutyStatus">
-                    <el-radio-group v-model="state.form.dutyStatus">
-                      <el-radio :label="0">在岗</el-radio>
-                      <el-radio :label="1">退休</el-radio>
-                    </el-radio-group>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="单位全称" prop="companyName">
-                    <el-input v-model="state.form.companyName"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="单位地址">
-                    <el-input v-model="state.form.companyAddress"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="所在部门">
-                    <el-input v-model="state.form.deptName"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="职务">
-                    <el-input v-model="state.form.job"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="单位电话">
-                    <el-input v-model="state.form.companyTelephone"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="传真号码">
-                    <el-input v-model="state.form.faxNum"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="电子邮箱">
-                    <el-input v-model="state.form.email"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="毕业学校">
-                    <el-input v-model="state.form.graduationSchool"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="最高学历" prop="degree">
-                    <el-input v-model="state.form.degree"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="所学专业">
-                    <el-input v-model="state.form.speciality"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="现从事的专业及方向">
-                    <el-input v-model="state.form.currentProfession"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="支撑方向_安全生产" prop="supportDirectionSafety">
-                    <!--              <el-radio-group v-model="form.supportDirectionSafety">-->
-                    <!--                <el-radio v-for="item in directionList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>-->
-                    <!--              </el-radio-group>-->
-                    <el-checkbox-group v-model="state.form.supportDirectionSafety">
-                      <el-checkbox v-for="item in state.directionList" :label="item.value" :key="item.value">{{ item.label }}</el-checkbox>
-                    </el-checkbox-group>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="支撑方向_防灾减灾救灾" prop="supportDirectionPrevention">
-                    <!--              <el-radio-group v-model="form.supportDirectionPrevention">-->
-                    <!--                <el-radio v-for="item in directionList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>-->
-                    <!--              </el-radio-group>-->
-                    <el-checkbox-group v-model="state.form.supportDirectionPrevention">
-                      <el-checkbox v-for="item in state.directionList" :label="item.value" :key="item.value">{{ item.label }}</el-checkbox>
-                    </el-checkbox-group>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="支撑方向_应急救援" prop="supportDirectionEmergency">
-                    <!--              <el-radio-group v-model="form.supportDirectionEmergency">-->
-                    <!--                <el-radio v-for="item in directionList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>-->
-                    <!--              </el-radio-group>-->
-                    <el-checkbox-group v-model="state.form.supportDirectionEmergency">
-                      <el-checkbox v-for="item in state.directionList" :label="item.value" :key="item.value">{{ item.label }}</el-checkbox>
-                    </el-checkbox-group>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="工作简历">
-                    <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'简历')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8' v-model:file-list="state.resumeList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'简历')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="发明、著作、学术论文情况(何时、何地出版或发表)">
-                    <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'著作')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8' v-model:file-list="state.inventionList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'著作')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="受过何种奖励">
-                    <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'奖励')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8' v-model:file-list="state.rewardList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'奖励')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="应急管理相关工作主要业绩及研究成果">
-                    <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'研究')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8' v-model:file-list="state.achievementList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'研究')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="专家本人意见">
-                    <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'本人')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8' v-model:file-list="state.proAdviceList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'本人')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="推荐单位意见">
-                    <el-upload accept="image/*" multiple :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile,'单位')" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='8' v-model:file-list="state.adviceList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles,'单位')" :before-remove="beforeRemove">
-                      <el-icon><Plus /></el-icon>
-                      <template #tip>
-                        <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传5张</div>
-                      </template>
-                    </el-upload>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-              <el-row>
-                <el-col :span="20">
-                  <el-form-item label="补充说明">
-                    <el-input v-model="state.form.remark" type="textarea" :autosize="{ minRows: 2}"></el-input>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-            </el-form>
-            <el-dialog v-model="imgDialog">
-              <img w-full :src="state.dialogImageUrl" alt="">
-            </el-dialog>
-          </div>
-      <div style="width: 100%;display: flex;justify-content: center;margin: 20px 0">
-        <el-button type="primary" @click="onSubmit(ruleFormRef)" size="large" v-preReClick style="width: 40%">确认</el-button>
-      </div>
+  <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">
+      <button class="pro-btn-active">申请提交</button>
+      <button class="pro-btn">
+        <span>待评定</span>
+      </button>
+      <button class="pro-btn">
+        专家入库
+      </button>
+      <button class="pro-btn">
+        专家证书下载
+      </button>
     </div>
+  </div>
 </template>
 <script setup>
 import {reactive, ref, toRefs, defineEmits, nextTick, onMounted} from 'vue'
 import {ElMessage, ElMessageBox} from "element-plus"
 import {verifyPhone, verifyIdCard} from "../../../../utils/validate"
-import {addExpertInfo, getExpertTypes, uploadFile} from "@/api/form"
-import {delPic} from "@/api/login"
 import { getToken } from "@/utils/auth"
-import {Base64} from "js-base64"
 
-const imgDialog = ref(false)
-const ruleFormRef = ref()
-var validatePass = (rule, value, callback) => {
-  if (state.fileList.length == 0) {
-    callback(new Error('请上传证件照'));
-  } else {
-    callback();
-  }
-}
+
 let validatePhone = (rule, value, callback)=>{
   if(value === ''){
     callback(new Error('请输入手机号'))
@@ -351,255 +75,37 @@
   }
 }
 
+const dialogVisible = ref(false)
+const formRef = ref()
+const handleClose = () => {
+  reset();
+  formRef.value.clearValidate();
+  dialogVisible.value = false;
+}
+
+
 const state = reactive({
   form:{
-    name:'',
-    sex:'',
-    profession: [],
-    bigClassify:null,
-    smallClassify: null,
-    birthday: '',
-    phone:'',
-    title: '',
-    electronicPhoto: '',
-    idCard: '',
-    dutyStatus: null,
-    companyName: '',
-    companyAddress: '',
-    deptName: '',
-    job: '',
-    companyTelephone: '',
-    faxNum: '',
-    email: '',
-    graduationSchool: '',
-    degree: '',
-    speciality: '',
-    currentProfession: '',
-    supportDirectionSafety: [],
-    supportDirectionPrevention: [],
-    supportDirectionEmergency: [],
-    resumeKey: '',
-    paperSituationKey: '',
-    rewardKey: '',
-    achievementKey: '',
-    personalOpinionKey: '',
-    recommendUnitOpinionKey: '',
-    remark: '',
-    source: 1
+    idCard: null,
+    phone: '',
+    roomId: null
   },
-  expertsType: [],
-  directionList: [
-    {
-      value: 1,
-      label: '现场检查'
-    },
-    {
-      value: 2,
-      label: '调查评估'
-    },
-    {
-      value: 3,
-      label: '咨询服务'
-    },
-    {
-      value: 4,
-      label: '教育培训'
-    },
-    {
-      value: 5,
-      label: '其他'
-    }
-  ],
-  uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
-  header: {
-    Authorization: 'Bearer ' + getToken()
-  },
-  fileList: [],
-  resumeList: [],
-  inventionList: [],
-  rewardList: [],
-  achievementList: [],
-  proAdviceList: [],
-  adviceList: [],
-  dialogImageUrl: '',
-  rules:{
-    name:[{ required: true, message: '请填写姓名', trigger: 'blur' }],
-    sex:[{ required: true, message: '请选择性别', trigger: 'blur' }],
-    profession: [{ required: true, message: '请选择专业类别', trigger: 'blur' }],
-    birthday: [{ required: true, message: '请选择出生日期', trigger: 'blur' }],
+  formRules:{
+    idCard:[{ required: true, validator: verifyId, trigger: 'blur' }],
     phone:[{ required: true, validator: validatePhone, trigger: 'blur' }],
-    title: [{ required: true, message: '请填写职称', trigger: 'blur' }],
-    electronicPhoto: [{ required: true,validator: validatePass, trigger: 'blur' }],
-    idCard: [{ required: true, validator: verifyId, trigger: 'blur' }],
-    dutyStatus: [{ required: true, message: '请选择在岗情况', trigger: 'blur' }],
-    companyName: [{ required: true, message: '请填写单位全称', trigger: 'blur' }],
-    degree: [{ required: true, message: '请填写最高学历', trigger: 'blur' }]
+    roomId: [{ required: true, message: '请选择申请的业务处室', trigger: 'blur' }]
   }
 })
 
-  onMounted(()=>{
-    getExpertsType()
-  })
+onMounted(()=>{
 
-  const getExpertsType = async ()=>{
-    const res = await getExpertTypes()
-    if(res.code == 200){
-      state.expertsType = res.data
-    }else{
-      ElMessage({
-        type: 'warning',
-        message: res.message
-      });
-    }
-  }
-
-  const professionChange=(value)=> {
-    console.log(value,'val')
-  }
-
-
-
-  // 图片上传
-  const showTip =()=>{
-    ElMessage({
-      type: 'warning',
-      message: '超出文件上传数量'
-    });
-  }
-
-  const picSize = async (rawFile) => {
-    if(rawFile.size / 1024 / 1024 > 5){
-      ElMessage({
-        type: 'warning',
-        message: '文件大小不能超过5M'
-      });
-      return false
-    }
-  };
-
-  const handlePictureCardPreview = (uploadFile) => {
-    state.dialogImageUrl = uploadFile.url
-    imgDialog.value = true;
-  }
-
-  const handleAvatarSuccess = (res, uploadFile,type) => {
-    if(res.code == 200){
-      if(type == '证件照'){
-        state.form.electronicPhoto = res.data.path
-      }else{
-        uploadFile.name = res.data.path
-      }
-    }else{
-      ElMessage({
-        type: 'warning',
-        message: '文件上传失败'
-      })
-    }
-  }
-
-  const handleRemove = (file, uploadFiles,type) => {
-    if(file && file.status == 'success') {
-      ElMessageBox.confirm(
-          '该操作将永久删除此文件内容,是否继续?',
-          '提示',
-          {
-            confirmButtonText: '确定',
-            cancelButtonText: '取消',
-            type: 'warning',
-          })
-          .then(async () => {
-            let path = ''
-            if (type == '证件照') {
-              path = state.form.electronicPhoto
-            } else {
-              path = file.name
-            }
-            const res = await delPic({path: path})
-            if (res.code == 200) {
-              ElMessage({
-                type: 'success',
-                message: '文件已删除'
-              })
-            } else {
-              ElMessage({
-                type: 'warning',
-                message: res.message
-              })
-            }
-          })
-    }
-  }
+})
 
 const onSubmit = async (formEl)=> {
   if (!formEl) return
   await formEl.validate(async (valid, fields) => {
     if (valid) {
-      if(state.form.supportDirectionSafety.length==0&&state.form.supportDirectionSafety.length==0&&state.form.supportDirectionSafety.length==0){
-        ElMessage.warning('请至少选择一种支撑方向')
-        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.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)
-        state.form = {
-          name:'',
-          sex:'',
-          profession: [],
-          bigClassify:null,
-          smallClassify: null,
-          birthday: '',
-          phone:'',
-          title: '',
-          electronicPhoto: '',
-          idCard: '',
-          dutyStatus: null,
-          companyName: '',
-          companyAddress: '',
-          deptName: '',
-          job: '',
-          companyTelephone: '',
-          faxNum: '',
-          email: '',
-          graduationSchool: '',
-          degree: '',
-          speciality: '',
-          currentProfession: '',
-          supportDirectionSafety: [],
-          supportDirectionPrevention: [],
-          supportDirectionEmergency: [],
-          resumeKey: '',
-          paperSituationKey: '',
-          rewardKey: '',
-          achievementKey: '',
-          personalOpinionKey: '',
-          recommendUnitOpinionKey: '',
-          remark: '',
-          source: 1
-        }
-        state.fileList = []
-        state.resumeList = []
-        state.inventionList = []
-        state.rewardList = []
-        state.achievementList = []
-        state.proAdviceList = []
-        state.adviceList = []
-      }else{
-        ElMessage.warning(res.message)
-      }
+
     } else {
       ElMessage.warning('请完善必填信息')
     }
@@ -610,15 +116,40 @@
 
 <style scoped lang="scss">
 .form-container{
-    padding: 20px;
+  padding: 20px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
 
-    :deep(.el-form .el-form-item__label) {
-        font-size: 15px;
+  .pro-map{
+    width: 75%;
+    margin-top: 40px;
+    display: flex;
+    justify-content: space-around;
+
+    .pro-btn {
+      width: calc(25% - 20px);
+      color: #fff;
+      cursor: pointer;
+      border: 1px solid #000;
+      border-radius: 40px 99px 99px 40px;
+      padding: 2em 4em;
+      background: #000;
+      transition: 0.2s;
     }
-    .file {
-        display: flex;
-        flex-direction: column;
-        align-items: flex-start;
+
+    .pro-btn-active {
+      width: calc(25% - 20px);
+      color: #fff;
+      cursor: pointer;
+      border: 1px solid #000;
+      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;
     }
+  }
 }
 </style>
diff --git a/src/views/safetyReview/expertManage/experts/index.vue b/src/views/safetyReview/expertManage/experts/index.vue
index 2b323ff..56c3b88 100644
--- a/src/views/safetyReview/expertManage/experts/index.vue
+++ b/src/views/safetyReview/expertManage/experts/index.vue
@@ -55,7 +55,7 @@
         <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="supportName" width="100"/>
+        <el-table-column label="支撑方向" align="center" prop="supportDirectionSafety"/>
         <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">
@@ -173,30 +173,8 @@
     data.expertList = res.data.list.map(item => {
       return{
         ...item,
-        birthdayName: item.birthday ? item.birthday.slice(0,10) : '',
-        supportName: item.supportDirectionSafety.split(',')
+        birthdayName: item.birthday ? item.birthday.slice(0,10) : ''
       }
-    })
-    data.expertList.forEach(item => {
-      item.supportName.forEach((s,index) => {
-       switch (s){
-         case '1':
-           item.supportName[index] = '现场检查'
-           break;
-         case '2':
-           item.supportName[index] = '调查评估'
-           break;
-         case '3':
-           item.supportName[index] = '咨询服务'
-           break;
-         case '4':
-           item.supportName[index] = '教育培训'
-           break;
-         case '5':
-           item.supportName[index] = '其他'
-           break;
-       }
-      })
     })
     data.total = res.data.total
   }else{
diff --git a/src/views/safetyReview/projectSupplement/components/supplemenrtDialog.vue b/src/views/safetyReview/projectSupplement/components/supplemenrtDialog.vue
index ef6fed9..2d08881 100644
--- a/src/views/safetyReview/projectSupplement/components/supplemenrtDialog.vue
+++ b/src/views/safetyReview/projectSupplement/components/supplemenrtDialog.vue
@@ -234,7 +234,6 @@
 const handleClose = () => {
   reset();
   suppleRef.value.clearValidate();
-
   dialogVisible.value = false;
 }
 const reset = () => {
diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue
index e013bb7..a4a3c8d 100644
--- a/src/views/system/dept/index.vue
+++ b/src/views/system/dept/index.vue
@@ -26,26 +26,26 @@
          </el-form-item>
       </el-form>
 
-      <el-row :gutter="10" class="mb8">
-         <el-col :span="1.5">
-            <el-button
-               type="primary"
-               plain
-               icon="Plus"
-               @click="handleAdd"
-               v-hasPermi="['system:dept:add']"
-            >新增</el-button>
-         </el-col>
-         <el-col :span="1.5">
-            <el-button
-               type="info"
-               plain
-               icon="Sort"
-               @click="toggleExpandAll"
-            >展开/折叠</el-button>
-         </el-col>
-         <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
-      </el-row>
+<!--      <el-row :gutter="10" class="mb8">-->
+<!--         <el-col :span="1.5">-->
+<!--            <el-button-->
+<!--               type="primary"-->
+<!--               plain-->
+<!--               icon="Plus"-->
+<!--               @click="handleAdd"-->
+<!--               v-hasPermi="['system:dept:add']"-->
+<!--            >新增</el-button>-->
+<!--         </el-col>-->
+<!--         <el-col :span="1.5">-->
+<!--            <el-button-->
+<!--               type="info"-->
+<!--               plain-->
+<!--               icon="Sort"-->
+<!--               @click="toggleExpandAll"-->
+<!--            >展开/折叠</el-button>-->
+<!--         </el-col>-->
+<!--         <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>-->
+<!--      </el-row>-->
 
       <el-table
          v-if="refreshTable"
@@ -142,13 +142,14 @@
 
 <script setup name="Dept">
 import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild } from "@/api/system/dept";
+import {onMounted,ref} from "vue";
 
 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);
-const loading = ref(true);
+const loading = ref(false);
 const showSearch = ref(true);
 const title = ref("");
 const deptOptions = ref([]);
@@ -171,6 +172,10 @@
 });
 
 const { queryParams, form, rules } = toRefs(data);
+
+onMounted(()=>{
+  // getList()
+})
 
 /** 查询部门列表 */
 function getList() {
@@ -269,6 +274,4 @@
     proxy.$modal.msgSuccess("删除成功");
   }).catch(() => {});
 }
-
-getList();
 </script>

--
Gitblit v1.9.2