家长维护页面调优
This commit is contained in:
		| @@ -1,97 +1,97 @@ | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2020-09-01 20:25:37 | ||||
|  * @LastEditTime: 2020-09-01 20:27:37 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: In User Settings Edit | ||||
|  * @FilePath: \ruoyi-ui\src\permission.js | ||||
|  */ | ||||
| import router from './router' | ||||
| import store from './store' | ||||
| import { | ||||
|   Message | ||||
| } from 'element-ui' | ||||
| import NProgress from 'nprogress' | ||||
| import 'nprogress/nprogress.css' | ||||
| import { | ||||
|   getToken | ||||
| } from '@/utils/auth' | ||||
|  | ||||
| NProgress.configure({ | ||||
|   showSpinner: false | ||||
| }) | ||||
|  | ||||
| //const whiteList = ['/login', '/auth-redirect', '/bind', '/register'] | ||||
| const whiteList = ['/login', '/experience/apply/', '/experience/result/', '/experience/content/'] | ||||
|  | ||||
| router.beforeEach((to, from, next) => { | ||||
|   NProgress.start() | ||||
|   if (getToken()) { | ||||
|     /* has token*/ | ||||
|     if (to.path === '/login') { | ||||
|       next({ | ||||
|         path: '/' | ||||
|       }) | ||||
|       NProgress.done() | ||||
|     } else { | ||||
|       if (store.getters.roles.length === 0) { | ||||
|         // 判断当前用户是否已拉取完user_info信息 | ||||
|         store.dispatch('GetInfo').then(res => { | ||||
|             // 拉取user_info | ||||
|             const roles = res.roles | ||||
|             store.dispatch('GenerateRoutes', { | ||||
|               roles | ||||
|             }).then(accessRoutes => { | ||||
|               // 测试 默认静态页面 | ||||
|               // store.dispatch('permission/generateRoutes', { roles }).then(accessRoutes => { | ||||
|               // 根据roles权限生成可访问的路由表 | ||||
|               router.addRoutes(accessRoutes) // 动态添加可访问路由表 | ||||
|               next({ | ||||
|                 ...to, | ||||
|                 replace: true | ||||
|               }) // hack方法 确保addRoutes已完成 | ||||
|             }) | ||||
|           }) | ||||
|           .catch(err => { | ||||
|             store.dispatch('FedLogOut').then(() => { | ||||
|               Message.error(err) | ||||
|               next({ | ||||
|                 path: '/' | ||||
|               }) | ||||
|             }) | ||||
|           }) | ||||
|       } else { | ||||
|         next() | ||||
|         // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓ | ||||
|         // if (hasPermission(store.getters.roles, to.meta.roles)) { | ||||
|         //   next() | ||||
|         // } else { | ||||
|         //   next({ path: '/401', replace: true, query: { noGoBack: true }}) | ||||
|         // } | ||||
|         // 可删 ↑ | ||||
|       } | ||||
|     } | ||||
|   } else { | ||||
|     // 没有token | ||||
|     // if (whiteList.indexOf(to.path) !== -1 ||to.path.indexOf("/experience/apply/") != -1||to.path.indexOf("/experience/result/") != -1||to.path.indexOf("/experience/content/") != -1||to.path.indexOf("/activity") != -1||to.path.indexOf("/week") != -1) { | ||||
|     let whiteBool = false; | ||||
|     for (let path of whiteList) { | ||||
|       // console.log(to.path.indexOf(path) > -1); | ||||
|       if (to.path.indexOf(path) > -1) { | ||||
|         whiteBool = true; | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|     if (whiteBool) { | ||||
|       // 在免登录白名单,直接进入 | ||||
|       next() | ||||
|     } else { | ||||
|       next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页 | ||||
|       NProgress.done() | ||||
|     } | ||||
|   } | ||||
| }) | ||||
|  | ||||
| router.afterEach(() => { | ||||
|   NProgress.done() | ||||
| }) | ||||
| /* | ||||
|  * @Author: your name | ||||
|  * @Date: 2020-09-01 20:25:37 | ||||
|  * @LastEditTime: 2020-09-01 20:27:37 | ||||
|  * @LastEditors: Please set LastEditors | ||||
|  * @Description: In User Settings Edit | ||||
|  * @FilePath: \ruoyi-ui\src\permission.js | ||||
|  */ | ||||
| import router from './router' | ||||
| import store from './store' | ||||
| import { | ||||
|     Message | ||||
| } from 'element-ui' | ||||
| import NProgress from 'nprogress' | ||||
| import 'nprogress/nprogress.css' | ||||
| import { | ||||
|     getToken | ||||
| } from '@/utils/auth' | ||||
|  | ||||
| NProgress.configure({ | ||||
|     showSpinner: false | ||||
| }) | ||||
|  | ||||
| //const whiteList = ['/login', '/auth-redirect', '/bind', '/register'] | ||||
| const whiteList = ['/login', '/experience/apply/', '/experience/result/', '/experience/content/', '/benyi_child/child_preserve'] | ||||
|  | ||||
| router.beforeEach((to, from, next) => { | ||||
|     NProgress.start() | ||||
|     if (getToken()) { | ||||
|         /* has token*/ | ||||
|         if (to.path === '/login') { | ||||
|             next({ | ||||
|                 path: '/' | ||||
|             }) | ||||
|             NProgress.done() | ||||
|         } else { | ||||
|             if (store.getters.roles.length === 0) { | ||||
|                 // 判断当前用户是否已拉取完user_info信息 | ||||
|                 store.dispatch('GetInfo').then(res => { | ||||
|                         // 拉取user_info | ||||
|                         const roles = res.roles | ||||
|                         store.dispatch('GenerateRoutes', { | ||||
|                             roles | ||||
|                         }).then(accessRoutes => { | ||||
|                             // 测试 默认静态页面 | ||||
|                             // store.dispatch('permission/generateRoutes', { roles }).then(accessRoutes => { | ||||
|                             // 根据roles权限生成可访问的路由表 | ||||
|                             router.addRoutes(accessRoutes) // 动态添加可访问路由表 | ||||
|                             next({ | ||||
|                                     ...to, | ||||
|                                     replace: true | ||||
|                                 }) // hack方法 确保addRoutes已完成 | ||||
|                         }) | ||||
|                     }) | ||||
|                     .catch(err => { | ||||
|                         store.dispatch('FedLogOut').then(() => { | ||||
|                             Message.error(err) | ||||
|                             next({ | ||||
|                                 path: '/' | ||||
|                             }) | ||||
|                         }) | ||||
|                     }) | ||||
|             } else { | ||||
|                 next() | ||||
|                     // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓ | ||||
|                     // if (hasPermission(store.getters.roles, to.meta.roles)) { | ||||
|                     //   next() | ||||
|                     // } else { | ||||
|                     //   next({ path: '/401', replace: true, query: { noGoBack: true }}) | ||||
|                     // } | ||||
|                     // 可删 ↑ | ||||
|             } | ||||
|         } | ||||
|     } else { | ||||
|         // 没有token | ||||
|         // if (whiteList.indexOf(to.path) !== -1 ||to.path.indexOf("/experience/apply/") != -1||to.path.indexOf("/experience/result/") != -1||to.path.indexOf("/experience/content/") != -1||to.path.indexOf("/activity") != -1||to.path.indexOf("/week") != -1) { | ||||
|         let whiteBool = false; | ||||
|         for (let path of whiteList) { | ||||
|             // console.log(to.path.indexOf(path) > -1); | ||||
|             if (to.path.indexOf(path) > -1) { | ||||
|                 whiteBool = true; | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|         if (whiteBool) { | ||||
|             // 在免登录白名单,直接进入 | ||||
|             next() | ||||
|         } else { | ||||
|             next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页 | ||||
|             NProgress.done() | ||||
|         } | ||||
|     } | ||||
| }) | ||||
|  | ||||
| router.afterEach(() => { | ||||
|     NProgress.done() | ||||
| }) | ||||
| @@ -89,6 +89,18 @@ export const constantRoutes = [{ | ||||
|             import ('@/views/benyi/planweek/table'), | ||||
|         hidden: true | ||||
|     }, | ||||
|     { | ||||
|         path: '/benyi_child/child_preserve', | ||||
|         component: () => | ||||
|             import ('@/views/benyi/child_preserve/index'), | ||||
|         hidden: true, | ||||
|         children: [{ | ||||
|             path: '/benyi_child/child_preserve', | ||||
|             component: () => | ||||
|                 import ('@/views/benyi/child_preserve/index'), | ||||
|             hidden: true | ||||
|         }, ] | ||||
|     }, | ||||
|     { | ||||
|         path: '/experience/apply/:id(\\d+)', | ||||
|         component: () => | ||||
|   | ||||
| @@ -868,12 +868,9 @@ export default { | ||||
|         //console.log(domain); | ||||
|         //this.user = response.data; | ||||
|         this.inviteCode = | ||||
|           response.data.dept.deptName + | ||||
|           "幼儿信息维护链接" + | ||||
|           "http://" + | ||||
|           domain + | ||||
|           "/child_preserve/index/" + | ||||
|           response.data.dept.deptId; | ||||
|           "/benyi_child/child_preserve"; | ||||
|       }); | ||||
|     }, | ||||
|     // 给家长发送链接 | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| <template> | ||||
|   <div class="result-container"> | ||||
|     <h2 class="title">请输入幼儿姓名和手机号进行查询:</h2> | ||||
|     <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px"> | ||||
|       <el-form-item label="幼儿姓名" prop="name"> | ||||
|         <el-input v-model="queryParams.name" placeholder="请输入幼儿姓名" clearable size="small" /> | ||||
| @@ -16,142 +17,288 @@ | ||||
|       <h2 class="title">幼儿信息查询与维护</h2> | ||||
|       <div class="result-form"> | ||||
|         <p class="form-title">提交核对幼儿信息</p> | ||||
|         <el-form class="form" ref="form" :model="form" label-width="110px"> | ||||
|           <el-form-item label="父亲姓名" prop="father"> | ||||
|             <el-input v-model="form.father" placeholder="请输入父亲姓名" @input="onInput()" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="母亲姓名" prop="mother"> | ||||
|             <el-input v-model="form.mother" placeholder="请输入母亲姓名" @input="onInput()" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="家长联系方式" prop="phone"> | ||||
|             <el-input v-model="form.phone" placeholder="请输入联系方式" :disabled="hide" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="幼儿姓名" prop="name"> | ||||
|             <el-input v-model="form.name" placeholder="请输入幼儿姓名" :disabled="hide" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="英文名" prop="enName"> | ||||
|             <el-input v-model="form.enName" placeholder="请输入联系方式" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="小名" prop="infantName"> | ||||
|             <el-input v-model="form.infantName" placeholder="请输入联系方式" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="性别" prop="xb"> | ||||
|             <el-select v-model="form.xb" placeholder="请选择性别"> | ||||
|               <el-option | ||||
|                 v-for="dict in sexOptions" | ||||
|                 :key="dict.dictValue" | ||||
|                 :label="dict.dictLabel" | ||||
|                 :value="dict.dictValue" | ||||
|               ></el-option> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="民族" prop="mz"> | ||||
|             <el-select v-model="form.mz" placeholder="请选择民族"> | ||||
|               <el-option | ||||
|                 v-for="dict in mzOptions" | ||||
|                 :key="dict.dictValue" | ||||
|                 :label="dict.dictLabel" | ||||
|                 :value="dict.dictValue" | ||||
|               ></el-option> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="证件号码" prop="zjhm"> | ||||
|             <el-input v-model="form.zjhm" placeholder="请输入证件号码" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="幼儿出生日期" prop="csrq"> | ||||
|             <el-date-picker | ||||
|               clearable | ||||
|               size="small" | ||||
|               v-model="form.csrq" | ||||
|               type="date" | ||||
|               value-format="yyyy-MM-dd" | ||||
|               placeholder="选择幼儿出生日期" | ||||
|             ></el-date-picker> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="出生地" prop="birthProvincename"> | ||||
|             <v-distpicker | ||||
|               v-model="form.birthProvincename" | ||||
|               :placeholders="placeholders" | ||||
|               :province="diglogForm.province" | ||||
|               :city="diglogForm.city" | ||||
|               :area="diglogForm.area" | ||||
|               @selected="onSelected_brith" | ||||
|             ></v-distpicker> | ||||
|             <el-input v-model="form.birthProvince" v-if="false" /> | ||||
|             <el-input v-model="form.birthCity" v-if="false" /> | ||||
|             <el-input v-model="form.birthArea" v-if="false" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="户口地" prop="registeredProvincename"> | ||||
|             <v-distpicker | ||||
|               v-model="form.registeredProvincename" | ||||
|               :placeholders="placeholders" | ||||
|               :province="diglogForm1.province" | ||||
|               :city="diglogForm1.city" | ||||
|               :area="diglogForm1.area" | ||||
|               @selected="onSelected_registered" | ||||
|             ></v-distpicker> | ||||
|             <el-input v-model="form.registeredProvince" v-if="false" /> | ||||
|             <el-input v-model="form.registeredCity" v-if="false" /> | ||||
|             <el-input v-model="form.registeredArea" v-if="false" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="现住址" prop="addrProvincename"> | ||||
|             <v-distpicker | ||||
|               v-model="form.addrProvincename" | ||||
|               :placeholders="placeholders" | ||||
|               :province="diglogForm2.province" | ||||
|               :city="diglogForm2.city" | ||||
|               :area="diglogForm2.area" | ||||
|               @selected="onSelected_addr" | ||||
|             ></v-distpicker> | ||||
|             <el-input v-model="form.addrProvince" v-if="false" /> | ||||
|             <el-input v-model="form.addrCity" v-if="false" /> | ||||
|             <el-input v-model="form.addrArea" v-if="false" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="详细地址" prop="addrDetail"> | ||||
|             <el-input v-model="form.addrDetail" placeholder="请输入详细地址" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="曾就读园" prop="everSchool"> | ||||
|             <el-input v-model="form.everSchool" placeholder="请输入曾经就读幼儿园" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="学习英语" prop="learnEnglish"> | ||||
|             <el-radio-group v-model="form.learnEnglish"> | ||||
|               <el-radio | ||||
|                 v-for="dict in ynOptions" | ||||
|                 :key="dict.dictValue" | ||||
|                 :label="dict.dictValue" | ||||
|               >{{dict.dictLabel}}</el-radio> | ||||
|             </el-radio-group> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="入园渠道" prop="source"> | ||||
|             <el-select v-model="form.source" placeholder="请选择入园渠道"> | ||||
|               <el-option | ||||
|                 v-for="dict in sourceOptions" | ||||
|                 :key="dict.dictValue" | ||||
|                 :label="dict.dictLabel" | ||||
|                 :value="dict.dictValue" | ||||
|               ></el-option> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="状态"> | ||||
|             <el-radio-group v-model="form.status"> | ||||
|               <el-radio | ||||
|                 v-for="dict in statusOptions" | ||||
|                 :key="dict.dictValue" | ||||
|                 :label="dict.dictValue" | ||||
|               >{{dict.dictLabel}}</el-radio> | ||||
|             </el-radio-group> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="第一语言" prop="firstLanguage"> | ||||
|             <el-input v-model="form.firstLanguage" placeholder="请输入第一语言" maxlength="2" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="第二语言" prop="seconderLanguage"> | ||||
|             <el-input v-model="form.seconderLanguage" placeholder="请输入第二语言" maxlength="2" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="其他语言" prop="otherLanguage"> | ||||
|             <el-input v-model="form.otherLanguage" placeholder="请输入其他语言" /> | ||||
|           </el-form-item> | ||||
|           <div></div> | ||||
|         </el-form> | ||||
|         <el-tabs type="border-card"> | ||||
|           <el-tab-pane label="幼儿基础信息"> | ||||
|             <el-row :gutter="15"> | ||||
|               <el-form class="form" ref="form" :model="form" label-width="110px"> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="家长联系方式" prop="phone"> | ||||
|                     <el-input v-model="form.phone" placeholder="请输入联系方式" :disabled="hide" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="幼儿姓名" prop="name"> | ||||
|                     <el-input v-model="form.name" placeholder="请输入幼儿姓名" :disabled="hide" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="英文名" prop="enName"> | ||||
|                     <el-input v-model="form.enName" placeholder="请输入联系方式" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="小名" prop="infantName"> | ||||
|                     <el-input v-model="form.infantName" placeholder="请输入联系方式" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="性别" prop="xb"> | ||||
|                     <el-select v-model="form.xb" placeholder="请选择性别"> | ||||
|                       <el-option | ||||
|                         v-for="dict in sexOptions" | ||||
|                         :key="dict.dictValue" | ||||
|                         :label="dict.dictLabel" | ||||
|                         :value="dict.dictValue" | ||||
|                       ></el-option> | ||||
|                     </el-select> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="民族" prop="mz"> | ||||
|                     <el-select v-model="form.mz" placeholder="请选择民族"> | ||||
|                       <el-option | ||||
|                         v-for="dict in mzOptions" | ||||
|                         :key="dict.dictValue" | ||||
|                         :label="dict.dictLabel" | ||||
|                         :value="dict.dictValue" | ||||
|                       ></el-option> | ||||
|                     </el-select> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="证件号码" prop="zjhm"> | ||||
|                     <el-input v-model="form.zjhm" placeholder="请输入证件号码" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="幼儿出生日期" prop="csrq"> | ||||
|                     <el-date-picker | ||||
|                       clearable | ||||
|                       size="small" | ||||
|                       v-model="form.csrq" | ||||
|                       type="date" | ||||
|                       value-format="yyyy-MM-dd" | ||||
|                       placeholder="选择幼儿出生日期" | ||||
|                     ></el-date-picker> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="24"> | ||||
|                   <el-form-item label="出生地" prop="birthProvincename"> | ||||
|                     <v-distpicker | ||||
|                       v-model="form.birthProvincename" | ||||
|                       :placeholders="placeholders" | ||||
|                       :province="diglogForm.province" | ||||
|                       :city="diglogForm.city" | ||||
|                       :area="diglogForm.area" | ||||
|                       @selected="onSelected_brith" | ||||
|                     ></v-distpicker> | ||||
|                     <el-input v-model="form.birthProvince" v-if="false" /> | ||||
|                     <el-input v-model="form.birthCity" v-if="false" /> | ||||
|                     <el-input v-model="form.birthArea" v-if="false" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="24"> | ||||
|                   <el-form-item label="户口地" prop="registeredProvincename"> | ||||
|                     <v-distpicker | ||||
|                       v-model="form.registeredProvincename" | ||||
|                       :placeholders="placeholders" | ||||
|                       :province="diglogForm1.province" | ||||
|                       :city="diglogForm1.city" | ||||
|                       :area="diglogForm1.area" | ||||
|                       @selected="onSelected_registered" | ||||
|                     ></v-distpicker> | ||||
|                     <el-input v-model="form.registeredProvince" v-if="false" /> | ||||
|                     <el-input v-model="form.registeredCity" v-if="false" /> | ||||
|                     <el-input v-model="form.registeredArea" v-if="false" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="24"> | ||||
|                   <el-form-item label="现住址" prop="addrProvincename"> | ||||
|                     <v-distpicker | ||||
|                       v-model="form.addrProvincename" | ||||
|                       :placeholders="placeholders" | ||||
|                       :province="diglogForm2.province" | ||||
|                       :city="diglogForm2.city" | ||||
|                       :area="diglogForm2.area" | ||||
|                       @selected="onSelected_addr" | ||||
|                     ></v-distpicker> | ||||
|                     <el-input v-model="form.addrProvince" v-if="false" /> | ||||
|                     <el-input v-model="form.addrCity" v-if="false" /> | ||||
|                     <el-input v-model="form.addrArea" v-if="false" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="详细地址" prop="addrDetail"> | ||||
|                     <el-input v-model="form.addrDetail" placeholder="请输入详细地址" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="曾就读园" prop="everSchool"> | ||||
|                     <el-input v-model="form.everSchool" placeholder="请输入曾经就读幼儿园" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="学习英语" prop="learnEnglish"> | ||||
|                     <el-radio-group v-model="form.learnEnglish"> | ||||
|                       <el-radio | ||||
|                         v-for="dict in ynOptions" | ||||
|                         :key="dict.dictValue" | ||||
|                         :label="dict.dictValue" | ||||
|                       >{{dict.dictLabel}}</el-radio> | ||||
|                     </el-radio-group> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="入园渠道" prop="source"> | ||||
|                     <el-select v-model="form.source" placeholder="请选择入园渠道"> | ||||
|                       <el-option | ||||
|                         v-for="dict in sourceOptions" | ||||
|                         :key="dict.dictValue" | ||||
|                         :label="dict.dictLabel" | ||||
|                         :value="dict.dictValue" | ||||
|                       ></el-option> | ||||
|                     </el-select> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="状态"> | ||||
|                     <el-radio-group v-model="form.status"> | ||||
|                       <el-radio | ||||
|                         v-for="dict in statusOptions" | ||||
|                         :key="dict.dictValue" | ||||
|                         :label="dict.dictValue" | ||||
|                       >{{dict.dictLabel}}</el-radio> | ||||
|                     </el-radio-group> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="第一语言" prop="firstLanguage"> | ||||
|                     <el-input v-model="form.firstLanguage" placeholder="请输入第一语言" maxlength="2" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="第二语言" prop="seconderLanguage"> | ||||
|                     <el-input v-model="form.seconderLanguage" placeholder="请输入第二语言" maxlength="2" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="其他语言" prop="otherLanguage"> | ||||
|                     <el-input v-model="form.otherLanguage" placeholder="请输入其他语言" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|  | ||||
|                 <div></div> | ||||
|               </el-form> | ||||
|             </el-row> | ||||
|           </el-tab-pane> | ||||
|           <el-tab-pane label="监护人信息"> | ||||
|             <el-form ref="form_jhr" :model="form_jhr" label-width="110px"> | ||||
|               <el-row :gutter="15"> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="父亲姓名" prop="fathername"> | ||||
|                     <el-input v-model="form_jhr.fathername" placeholder="请输入父亲姓名" @input="onInput()" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="联系电话" prop="fphone"> | ||||
|                     <el-input v-model="form_jhr.fphone" placeholder="请输入父亲联系电话" @input="onInput()"/> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="办公电话" prop="foffphone"> | ||||
|                     <el-input v-model="form_jhr.foffphone" placeholder="请输入父亲办公电话" @input="onInput()"/> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|               </el-row> | ||||
|               <el-row :gutter="15"> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="母亲姓名" prop="mothername"> | ||||
|                     <el-input v-model="form_jhr.mothername" placeholder="请输入父亲姓名" @input="onInput()" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="联系电话" prop="mphone"> | ||||
|                     <el-input v-model="form_jhr.mphone" placeholder="请输入母亲姓名" @input="onInput()" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="办公电话" prop="moffphone"> | ||||
|                     <el-input v-model="form_jhr.moffphone" placeholder="请输入母亲办公电话" @input="onInput()"/> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|               </el-row> | ||||
|               <el-row :gutter="15"> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="其他联系人姓名" prop="grandfathername"> | ||||
|                     <el-input v-model="form_jhr.grandfathername" placeholder="请输入其他联系人姓名" @input="onInput()"/> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="与幼儿关系" prop="gfgx"> | ||||
|                     <el-select v-model="form_jhr.gfgx" placeholder="请选择与幼儿关系" > | ||||
|                       <el-option | ||||
|                         v-for="dict in jtgxOptions" | ||||
|                         :key="dict.dictValue" | ||||
|                         :label="dict.dictLabel" | ||||
|                         :value="dict.dictValue" | ||||
|                       ></el-option> | ||||
|                     </el-select> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="联系电话" prop="gfphone"> | ||||
|                     <el-input v-model="form_jhr.gfphone" placeholder="请输入联系电话" @input="onInput()"/> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="办公电话" prop="gfoffphone"> | ||||
|                     <el-input v-model="form_jhr.gfoffphone" placeholder="请输入办公电话" @input="onInput()" /> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="24"> | ||||
|                   <el-form-item label="住址" prop="gfaddress"> | ||||
|                     <el-input v-model="form_jhr.gfaddress" placeholder="请输入住址" @input="onInput()"/> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|               </el-row> | ||||
|               <el-row :gutter="15"> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="其他联系人姓名" prop="grandmothername"> | ||||
|                     <el-input v-model="form_jhr.grandmothername" placeholder="请输入其他联系人姓名" @input="onInput()"/> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="与幼儿关系" prop="gmgx"> | ||||
|                     <el-select v-model="form_jhr.gmgx" placeholder="请选择与幼儿关系 "> | ||||
|                       <el-option | ||||
|                         v-for="dict in jtgxOptions" | ||||
|                         :key="dict.dictValue" | ||||
|                         :label="dict.dictLabel" | ||||
|                         :value="dict.dictValue" | ||||
|                       ></el-option> | ||||
|                     </el-select> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="联系电话" prop="gmphone"> | ||||
|                     <el-input v-model="form_jhr.gmphone" placeholder="请输入联系电话" @input="onInput()"/> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="12"> | ||||
|                   <el-form-item label="办公电话" prop="gmoffphone"> | ||||
|                     <el-input v-model="form_jhr.gmoffphone" placeholder="请输入办公电话" @input="onInput()"/> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|                 <el-col :span="24"> | ||||
|                   <el-form-item label="住址" prop="gmaddress"> | ||||
|                     <el-input v-model="form_jhr.gmaddress" placeholder="请输入住址" @input="onInput()"/> | ||||
|                   </el-form-item> | ||||
|                 </el-col> | ||||
|               </el-row> | ||||
|             </el-form> | ||||
|           </el-tab-pane> | ||||
|         </el-tabs> | ||||
|  | ||||
|         <div slot="footer" class="dialog-footer"> | ||||
|           <el-button type="primary" @click="submitForm">提 交</el-button> | ||||
|           <el-button @click="cancelSub">取 消</el-button> | ||||
| @@ -163,16 +310,25 @@ | ||||
|  | ||||
| <script> | ||||
| import { getChild_query, updateChild } from "@/api/benyi/child"; | ||||
| import { | ||||
|   listContactpeople, | ||||
|   getContactpeople, | ||||
|   getContactpeopleByChildId, | ||||
|   delContactpeople, | ||||
|   addContactpeople, | ||||
|   updateContactpeople, | ||||
| } from "@/api/benyi/contactpeople"; | ||||
|  | ||||
| import { listClass } from "@/api/system/class"; | ||||
| import { getToken } from "@/utils/auth"; | ||||
| //导入省市区三级联动库 | ||||
| import VDistpicker from "v-distpicker"; | ||||
|  | ||||
| // 更新紧急联系人 | ||||
| import { updateContactpeople } from "@/api/benyi/contactpeople"; | ||||
|  | ||||
| export default { | ||||
|   name: "result", | ||||
|   data() { | ||||
|     return { | ||||
|       activeNames: ["1"], | ||||
|       placeholders: { | ||||
|         province: "请选择省", | ||||
|         city: "请选择市", | ||||
| @@ -199,8 +355,6 @@ export default { | ||||
|       yzzs: "", | ||||
|       tynrcontent: "", | ||||
|       href_tynr: "", | ||||
|       father: "", | ||||
|       mother: "", | ||||
|       // 是否显示弹出层 | ||||
|       open: false, | ||||
|       // 幼儿信息表格数据 | ||||
| @@ -217,13 +371,19 @@ export default { | ||||
|       ynOptions: [], | ||||
|       //入园渠道 | ||||
|       sourceOptions: [], | ||||
|       //班级 | ||||
|       classOptions: [], | ||||
|       //家庭关系 | ||||
|       jtgxOptions: [], | ||||
|       // 查询参数 | ||||
|       queryParams: { | ||||
|         name: undefined, | ||||
|         phone: undefined | ||||
|       }, | ||||
|       // 表单参数 | ||||
|       form: {} | ||||
|       form: {}, | ||||
|       // 监护人表单参数 | ||||
|       form_jhr: {}, | ||||
|     }; | ||||
|   }, | ||||
|   created() { | ||||
| @@ -244,6 +404,9 @@ export default { | ||||
|     this.getDicts("sys_dm_ryqd").then(response => { | ||||
|       this.sourceOptions = response.data; | ||||
|     }); | ||||
|     this.getDicts("sys_dm_jtgx").then((response) => { | ||||
|       this.jtgxOptions = response.data; | ||||
|     }); | ||||
|   }, | ||||
|   components: { | ||||
|     //省市区三级联动全局组件 | ||||
| @@ -294,10 +457,24 @@ export default { | ||||
|           this.hide = true; | ||||
|           this.childList = response.rows; | ||||
|           this.form = response.data; | ||||
|           // console.log(this.form); | ||||
|           this.form.id = response.data.id; | ||||
|           this.form.father = response.data.byChildContactpeople.fathername; | ||||
|           this.form.mother = response.data.byChildContactpeople.mothername; | ||||
|           this.form_jhr.fathername = response.data.byChildContactpeople.fathername; | ||||
|           this.form_jhr.mothername = response.data.byChildContactpeople.mothername; | ||||
|           this.form_jhr.fphone = response.data.byChildContactpeople.fphone; | ||||
|           this.form_jhr.foffphone = response.data.byChildContactpeople.foffphone; | ||||
|           this.form_jhr.mphone = response.data.byChildContactpeople.mphone; | ||||
|           this.form_jhr.moffphone = response.data.byChildContactpeople.moffphone; | ||||
|           this.form_jhr.grandfathername = response.data.byChildContactpeople.grandfathername; | ||||
|           this.form_jhr.gfgx = response.data.byChildContactpeople.gfgx; | ||||
|           this.form_jhr.gfphone = response.data.byChildContactpeople.gfphone; | ||||
|           this.form_jhr.gfoffphone = response.data.byChildContactpeople.gfoffphone; | ||||
|           this.form_jhr.gfaddress = response.data.byChildContactpeople.gfaddress; | ||||
|           this.form_jhr.grandmothername = response.data.byChildContactpeople.grandmothername; | ||||
|           this.form_jhr.gmgx = response.data.byChildContactpeople.gmgx; | ||||
|           this.form_jhr.gmoffphone = response.data.byChildContactpeople.gmoffphone; | ||||
|           this.form_jhr.gmaddress = response.data.byChildContactpeople.gmaddress; | ||||
|           this.form_jhr.gmoffphone = response.data.byChildContactpeople.gmoffphone; | ||||
|           this.form_jhr.createTime = response.data.byChildContactpeople.createTime; | ||||
|  | ||||
|           this.diglogForm.province = response.data.birthProvincename; | ||||
|           this.diglogForm.city = response.data.birthCityname; | ||||
|           this.diglogForm.area = response.data.birthAreaname; | ||||
| @@ -320,10 +497,8 @@ export default { | ||||
|           if (this.form.id != undefined) { | ||||
|             updateChild(this.form).then(response => { | ||||
|               if (response.code === 200) { | ||||
|                 this.form.childid = this.form.id; | ||||
|                 this.form.fathername = this.form.father; | ||||
|                 this.form.mothername = this.form.mother; | ||||
|                 updateContactpeople(this.form).then(response => { | ||||
|                 this.form_jhr.childid = this.form.id; | ||||
|                 updateContactpeople(this.form_jhr).then(response => { | ||||
|                   if (response.code === 200) { | ||||
|                     this.msgSuccess("修改成功"); | ||||
|                     this.hide = false; | ||||
| @@ -416,6 +591,7 @@ export default { | ||||
|         name: undefined, | ||||
|         phone: undefined | ||||
|       }; | ||||
|        | ||||
|     } | ||||
|   } | ||||
| }; | ||||
|   | ||||
| @@ -1,133 +1,139 @@ | ||||
| package com.ruoyi.framework.config; | ||||
|  | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.http.HttpMethod; | ||||
| import org.springframework.security.authentication.AuthenticationManager; | ||||
| import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; | ||||
| import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; | ||||
| import org.springframework.security.config.annotation.web.builders.HttpSecurity; | ||||
| import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; | ||||
| import org.springframework.security.config.http.SessionCreationPolicy; | ||||
| import org.springframework.security.core.userdetails.UserDetailsService; | ||||
| import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | ||||
| import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; | ||||
| import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; | ||||
| import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; | ||||
| import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; | ||||
|  | ||||
| /** | ||||
|  * spring security配置 | ||||
|  * | ||||
|  * @author ruoyi | ||||
|  */ | ||||
| @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) | ||||
| public class SecurityConfig extends WebSecurityConfigurerAdapter { | ||||
|     /** | ||||
|      * 自定义用户认证逻辑 | ||||
|      */ | ||||
|     @Autowired | ||||
|     private UserDetailsService userDetailsService; | ||||
|  | ||||
|     /** | ||||
|      * 认证失败处理类 | ||||
|      */ | ||||
|     @Autowired | ||||
|     private AuthenticationEntryPointImpl unauthorizedHandler; | ||||
|  | ||||
|     /** | ||||
|      * 退出处理类 | ||||
|      */ | ||||
|     @Autowired | ||||
|     private LogoutSuccessHandlerImpl logoutSuccessHandler; | ||||
|  | ||||
|     /** | ||||
|      * token认证过滤器 | ||||
|      */ | ||||
|     @Autowired | ||||
|     private JwtAuthenticationTokenFilter authenticationTokenFilter; | ||||
|  | ||||
|     /** | ||||
|      * 解决 无法直接注入 AuthenticationManager | ||||
|      * | ||||
|      * @return | ||||
|      * @throws Exception | ||||
|      */ | ||||
|     @Bean | ||||
|     @Override | ||||
|     public AuthenticationManager authenticationManagerBean() throws Exception { | ||||
|         return super.authenticationManagerBean(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * anyRequest          |   匹配所有请求路径 | ||||
|      * access              |   SpringEl表达式结果为true时可以访问 | ||||
|      * anonymous           |   匿名可以访问 | ||||
|      * denyAll             |   用户不能访问 | ||||
|      * fullyAuthenticated  |   用户完全认证可以访问(非remember-me下自动登录) | ||||
|      * hasAnyAuthority     |   如果有参数,参数表示权限,则其中任何一个权限可以访问 | ||||
|      * hasAnyRole          |   如果有参数,参数表示角色,则其中任何一个角色可以访问 | ||||
|      * hasAuthority        |   如果有参数,参数表示权限,则其权限可以访问 | ||||
|      * hasIpAddress        |   如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问 | ||||
|      * hasRole             |   如果有参数,参数表示角色,则其角色可以访问 | ||||
|      * permitAll           |   用户可以任意访问 | ||||
|      * rememberMe          |   允许通过remember-me登录的用户访问 | ||||
|      * authenticated       |   用户登录后可访问 | ||||
|      */ | ||||
|     @Override | ||||
|     protected void configure(HttpSecurity httpSecurity) throws Exception { | ||||
|         httpSecurity | ||||
|                 // CRSF禁用,因为不使用session | ||||
|                 .csrf().disable() | ||||
|                 // 认证失败处理类 | ||||
|                 .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and() | ||||
|                 // 基于token,所以不需要session | ||||
|                 .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() | ||||
|                 // 过滤请求 | ||||
|                 .authorizeRequests() | ||||
|                 // 对于登录login 验证码captchaImage 允许匿名访问 | ||||
|                 .antMatchers("/login", "/captchaImage").anonymous() | ||||
|                 .antMatchers( | ||||
|                         HttpMethod.GET, | ||||
|                         "/*.html", | ||||
|                         "/**/*.html", | ||||
|                         "/**/*.css", | ||||
|                         "/**/*.js" | ||||
|                 ).permitAll() | ||||
|                 .antMatchers("/profile/**").anonymous() | ||||
|                 .antMatchers("/common/download**").anonymous() | ||||
|                 .antMatchers("/common/download/resource**").anonymous() | ||||
|                 .antMatchers("/swagger-ui.html").anonymous() | ||||
|                 .antMatchers("/swagger-resources/**").anonymous() | ||||
|                 .antMatchers("/webjars/**").anonymous() | ||||
|                 .antMatchers("/*/api-docs").anonymous() | ||||
|                 .antMatchers("/druid/**").anonymous() | ||||
|                 .antMatchers("/benyi/experience/add").anonymous()//半日入园体验申请 | ||||
|                 .antMatchers("/benyi/experience/getInfo**").anonymous()//半日入园体验明细 | ||||
|                 .antMatchers("/benyi/halfdayplan/getInfo/**").anonymous()//半日入园内容 | ||||
|                 // 除上面外的所有请求全部需要鉴权认证 | ||||
|                 .anyRequest().authenticated() | ||||
|                 .and() | ||||
|                 .headers().frameOptions().disable(); | ||||
|         httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler); | ||||
|         // 添加JWT filter | ||||
|         httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 强散列哈希加密实现 | ||||
|      */ | ||||
|     @Bean | ||||
|     public BCryptPasswordEncoder bCryptPasswordEncoder() { | ||||
|         return new BCryptPasswordEncoder(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 身份认证接口 | ||||
|      */ | ||||
|     @Override | ||||
|     protected void configure(AuthenticationManagerBuilder auth) throws Exception { | ||||
|         auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder()); | ||||
|     } | ||||
| } | ||||
| package com.ruoyi.framework.config; | ||||
|  | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.http.HttpMethod; | ||||
| import org.springframework.security.authentication.AuthenticationManager; | ||||
| import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; | ||||
| import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; | ||||
| import org.springframework.security.config.annotation.web.builders.HttpSecurity; | ||||
| import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; | ||||
| import org.springframework.security.config.http.SessionCreationPolicy; | ||||
| import org.springframework.security.core.userdetails.UserDetailsService; | ||||
| import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; | ||||
| import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; | ||||
| import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; | ||||
| import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; | ||||
| import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; | ||||
|  | ||||
| /** | ||||
|  * spring security配置 | ||||
|  * | ||||
|  * @author ruoyi | ||||
|  */ | ||||
| @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) | ||||
| public class SecurityConfig extends WebSecurityConfigurerAdapter { | ||||
|     /** | ||||
|      * 自定义用户认证逻辑 | ||||
|      */ | ||||
|     @Autowired | ||||
|     private UserDetailsService userDetailsService; | ||||
|  | ||||
|     /** | ||||
|      * 认证失败处理类 | ||||
|      */ | ||||
|     @Autowired | ||||
|     private AuthenticationEntryPointImpl unauthorizedHandler; | ||||
|  | ||||
|     /** | ||||
|      * 退出处理类 | ||||
|      */ | ||||
|     @Autowired | ||||
|     private LogoutSuccessHandlerImpl logoutSuccessHandler; | ||||
|  | ||||
|     /** | ||||
|      * token认证过滤器 | ||||
|      */ | ||||
|     @Autowired | ||||
|     private JwtAuthenticationTokenFilter authenticationTokenFilter; | ||||
|  | ||||
|     /** | ||||
|      * 解决 无法直接注入 AuthenticationManager | ||||
|      * | ||||
|      * @return | ||||
|      * @throws Exception | ||||
|      */ | ||||
|     @Bean | ||||
|     @Override | ||||
|     public AuthenticationManager authenticationManagerBean() throws Exception { | ||||
|         return super.authenticationManagerBean(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * anyRequest          |   匹配所有请求路径 | ||||
|      * access              |   SpringEl表达式结果为true时可以访问 | ||||
|      * anonymous           |   匿名可以访问 | ||||
|      * denyAll             |   用户不能访问 | ||||
|      * fullyAuthenticated  |   用户完全认证可以访问(非remember-me下自动登录) | ||||
|      * hasAnyAuthority     |   如果有参数,参数表示权限,则其中任何一个权限可以访问 | ||||
|      * hasAnyRole          |   如果有参数,参数表示角色,则其中任何一个角色可以访问 | ||||
|      * hasAuthority        |   如果有参数,参数表示权限,则其权限可以访问 | ||||
|      * hasIpAddress        |   如果有参数,参数表示IP地址,如果用户IP和参数匹配,则可以访问 | ||||
|      * hasRole             |   如果有参数,参数表示角色,则其角色可以访问 | ||||
|      * permitAll           |   用户可以任意访问 | ||||
|      * rememberMe          |   允许通过remember-me登录的用户访问 | ||||
|      * authenticated       |   用户登录后可访问 | ||||
|      */ | ||||
|     @Override | ||||
|     protected void configure(HttpSecurity httpSecurity) throws Exception { | ||||
|         httpSecurity | ||||
|                 // CRSF禁用,因为不使用session | ||||
|                 .csrf().disable() | ||||
|                 // 认证失败处理类 | ||||
|                 .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and() | ||||
|                 // 基于token,所以不需要session | ||||
|                 .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() | ||||
|                 // 过滤请求 | ||||
|                 .authorizeRequests() | ||||
|                 // 对于登录login 验证码captchaImage 允许匿名访问 | ||||
|                 .antMatchers("/login", "/captchaImage").anonymous() | ||||
|                 .antMatchers( | ||||
|                         HttpMethod.GET, | ||||
|                         "/*.html", | ||||
|                         "/**/*.html", | ||||
|                         "/**/*.css", | ||||
|                         "/**/*.js" | ||||
|                 ).permitAll() | ||||
|                 .antMatchers("/profile/**").anonymous() | ||||
|                 .antMatchers("/common/download**").anonymous() | ||||
|                 .antMatchers("/common/download/resource**").anonymous() | ||||
|                 .antMatchers("/swagger-ui.html").anonymous() | ||||
|                 .antMatchers("/swagger-resources/**").anonymous() | ||||
|                 .antMatchers("/webjars/**").anonymous() | ||||
|                 .antMatchers("/*/api-docs").anonymous() | ||||
|                 .antMatchers("/druid/**").anonymous() | ||||
|                 .antMatchers("/benyi/experience/add").anonymous()//半日入园体验申请 | ||||
|                 .antMatchers("/benyi/experience/getInfo**").anonymous()//半日入园体验明细 | ||||
|                 .antMatchers("/benyi/halfdayplan/getInfo/**").anonymous()//半日入园内容 | ||||
|                 .antMatchers("/benyi/child/add").anonymous()//家长维护申请 | ||||
|                 .antMatchers("/benyi/child/getInfo**").anonymous()//家长维护申请明细 | ||||
|                 .antMatchers("/benyi/contactpeople/add").anonymous()//家长维护申请 | ||||
|                 .antMatchers("/benyi/contactpeople/getInfo**").anonymous()//监护人维护明细 | ||||
|                 .antMatchers("/system/dict/data/dictType/**").anonymous()//家长维护申请中的字典 | ||||
|  | ||||
|                 // 除上面外的所有请求全部需要鉴权认证 | ||||
|                 .anyRequest().authenticated() | ||||
|                 .and() | ||||
|                 .headers().frameOptions().disable(); | ||||
|         httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler); | ||||
|         // 添加JWT filter | ||||
|         httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 强散列哈希加密实现 | ||||
|      */ | ||||
|     @Bean | ||||
|     public BCryptPasswordEncoder bCryptPasswordEncoder() { | ||||
|         return new BCryptPasswordEncoder(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 身份认证接口 | ||||
|      */ | ||||
|     @Override | ||||
|     protected void configure(AuthenticationManagerBuilder auth) throws Exception { | ||||
|         auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder()); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -108,7 +108,8 @@ | ||||
|     </resultMap> | ||||
|  | ||||
|     <sql id="selectByChildVo"> | ||||
|         select c.id, c.schoolid, c.classid, c.name, c.en_name, c.infant_name, c.phone, c.xb, c.mz, c.zjhm, c.csrq, c.birth_province, c.birth_provincename, c.birth_city, c.birth_cityname, c.birth_area, c.birth_areaname, c.registered_province, c.registered_provincename, c.registered_city, c.registered_cityname, c.registered_area, c.registered_areaname, c.addr_province, c.addr_provincename, c.addr_city, c.addr_cityname, c.addr_area, c.addr_areaname, c.addr_detail, c.ever_school, c.learn_english, c.source, c.status, c.enter_date, c.out_date, c.first_language, c.seconder_language, c.other_language, c.createuserid, c.create_time, p.fathername, p.mothername | ||||
|         select c.id, c.schoolid, c.classid, c.name, c.en_name, c.infant_name, c.phone, c.xb, c.mz, c.zjhm, c.csrq, c.birth_province, c.birth_provincename, c.birth_city, c.birth_cityname, c.birth_area, c.birth_areaname, c.registered_province, c.registered_provincename, c.registered_city, c.registered_cityname, c.registered_area, c.registered_areaname, c.addr_province, c.addr_provincename, c.addr_city, c.addr_cityname, c.addr_area, c.addr_areaname, c.addr_detail, c.ever_school, c.learn_english, c.source, c.status, c.enter_date, c.out_date, c.first_language, c.seconder_language, c.other_language, c.createuserid, c.create_time, p.fathername, p.mothername, | ||||
|         p.childid, p.fphone, p.foffphone, p.mphone, p.moffphone, p.grandfathername, p.gfgx, p.gfphone, p.gfoffphone, p.gfaddress, p.grandmothername, p.gmgx, p.gmphone, p.gmaddress, p.gmoffphone, p.create_time | ||||
|         from by_child c | ||||
|         left join by_child_contactpeople p on c.id=p.childid | ||||
|     </sql> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user