dedsudiyu 1 rok temu
rodzic
commit
c5775f1c4a
56 zmienionych plików z 4484 dodań i 1226 usunięć
  1. 193 1
      src/api/commonality/permission.js
  2. 30 12
      src/api/laboratoryManagement/index.js
  3. 9 0
      src/api/systemManagement/index.js
  4. BIN
      src/assets/ZDimages/laboratoryManagement/tx_cion_one.png
  5. 1 1
      src/layout/components/AppMain.vue
  6. 2 1
      src/store/modules/user.js
  7. 1 1
      src/utils/bigDataRequest.js
  8. 1 1
      src/utils/request.js
  9. 1 1
      src/utils/ruoyi.js
  10. 6 6
      src/views/basicsModules/login.vue
  11. 41 29
      src/views/basicsModules/mine.vue
  12. 1 1
      src/views/gasManage3_0/manage/infoRecord/detailsPage.vue
  13. 2 2
      src/views/gasManage3_0/manage/qualificationApply/qualificationApplyAdd.vue
  14. 2 2
      src/views/gasManage3_0/manage/qualificationManage/qualificationManageCheck.vue
  15. 2 2
      src/views/gasManage3_0/manage/qualificationManage/qualificationManageDetail.vue
  16. 1 1
      src/views/gasManage3_0/manage/supplierManage/supplierManageCheck.vue
  17. 1 1
      src/views/gasManage3_0/manage/supplierManage/supplierPersonCarDetail.vue
  18. 2 2
      src/views/gasManage3_0/manage/useGas/useGasAdd.vue
  19. 2 2
      src/views/gasManage3_0/manage/useGasManage/useGasManageCheck.vue
  20. 2 2
      src/views/gasManage3_0/manage/useGasManage/useGasManageDetail.vue
  21. 2 2
      src/views/gasManage3_0/student/qualificationApply/qualificationApplyAdd.vue
  22. 2 2
      src/views/gasManage3_0/student/useGas/useGasAdd.vue
  23. 2 2
      src/views/gasManage_syd/student/gasUseManage/gasUseManage.vue
  24. 2 2
      src/views/gasManage_syd/student/useGas/useGasAdd.vue
  25. 1 1
      src/views/hierarchicalControl/hierarchicalControl/gradeManageRecord/index.vue
  26. 300 0
      src/views/laboratoryManagement/personnelManage/major/index.vue
  27. 213 0
      src/views/laboratoryManagement/personnelManage/major/listPage.vue
  28. 0 13
      src/views/laboratoryManagement/personnelManage/student/index.vue
  29. 1088 0
      src/views/laboratoryManagement/personnelManage/studentInfo/addPage.vue
  30. 254 0
      src/views/laboratoryManagement/personnelManage/studentInfo/bindingCardPage.vue
  31. 78 0
      src/views/laboratoryManagement/personnelManage/studentInfo/differenceComponent/addPageSubPagePublic.vue
  32. 48 0
      src/views/laboratoryManagement/personnelManage/studentInfo/differenceComponent/addPageSubPageSZDX.vue
  33. 993 0
      src/views/laboratoryManagement/personnelManage/studentInfo/index.vue
  34. 85 697
      src/views/laboratoryManagement/personnelManage/teacherInfo/addPage.vue
  35. 29 19
      src/views/laboratoryManagement/personnelManage/teacherInfo/bindingCardPage.vue
  36. 0 103
      src/views/laboratoryManagement/personnelManage/teacherInfo/differenceComponent/addPageSubPagePublic.vue
  37. 0 79
      src/views/laboratoryManagement/personnelManage/teacherInfo/differenceComponent/addPageSubPageSZDX.vue
  38. 157 212
      src/views/laboratoryManagement/personnelManage/teacherInfo/index.vue
  39. 8 9
      src/views/laboratoryManagement/personnelManage/teacherInfo/userList.vue
  40. 1 1
      src/views/safetyEducationExam/safeLearning/el_resources/index.vue
  41. 1 1
      src/views/safetyEducationExam/securityExam/exam_my/index.vue
  42. 1 1
      src/views/secureAccess/approval/differenceComponent/addPageSubPagePublic.vue
  43. 1 1
      src/views/secureAccess/approval/infoPage.vue
  44. 1 1
      src/views/secureAccess/whitelist/addPage.vue
  45. 1 1
      src/views/secureAccess/whitelist/differenceComponent/addPageSubPagePublic.vue
  46. 1 1
      src/views/securityCheck/checkOption/index.vue
  47. 2 2
      src/views/securityCheck/checkRecord/CheckRecordInfo.vue
  48. 2 2
      src/views/securityCheck/checkRecord/verifyCheckInfo.vue
  49. 1 1
      src/views/systemManagement/dict/index.vue
  50. 1 1
      src/views/systemManagement/menu/index.vue
  51. 265 0
      src/views/systemManagement/parameterSetting/index.vue
  52. 1 1
      src/views/systemManagement/publicConfig/basicsConfig.vue
  53. 1 1
      src/views/systemManagement/publicConfig/homeConfig.vue
  54. 1 1
      src/views/systemManagement/publicConfig/integrationConfig.vue
  55. 1 1
      src/views/systemManagement/publicConfig/programConfig.vue
  56. 640 0
      src/views/systemManagement/systemUser/index.vue

+ 193 - 1
src/api/commonality/permission.js

@@ -77,6 +77,18 @@ export function getConfigByType(data) {
   })
 }
 
+/*                分类获取公共配置列表
+* category        1.系统参数 2.公共配置(系统参数页面 传1)
+* configType      1.基础配置 2.管控一体机 3.化学品终端 4.小程序配置 5.开发配置 6.首页配置(系统参数页面 传0)
+*/
+export function getConfigList(data) {
+  return request({
+    url: '/system/config/info/list',
+    method: 'post',
+    data: data
+  })
+}
+
 // 部门列表
 export function getDeptList(data) {
   return request({
@@ -86,7 +98,11 @@ export function getDeptList(data) {
   })
 }
 
-// 部门下拉列表
+/*                部门下拉列表
+* deptName        名称
+* level           查询级别
+* deptType        1.学院 0.非学院
+*/
 export function getDeptDropList(data) {
   return request({
     url: '/system/dept/dropList',
@@ -94,3 +110,179 @@ export function getDeptDropList(data) {
     data: data
   })
 }
+
+// 新增部门
+export function setDeptAdd(data) {
+  return request({
+    url: '/system/dept/add',
+    method: 'post',
+    data: data
+  })
+}
+
+// 编辑部门
+export function setDeptUpdate(data) {
+  return request({
+    url: '/system/dept/update',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除部门
+export function setDeptDelete(data) {
+  return request({
+    url: '/system/dept/delete',
+    method: 'post',
+    data: data
+  })
+}
+
+// 部门排序
+export function setDeptSort(data) {
+  return request({
+    url: '/system/dept/sort',
+    method: 'post',
+    data: data
+  })
+}
+
+// 获取用户列表 userType 0.系统 1.教职工 2.学生 3.大屏(暂无用处)
+export function systemUserList(data) {
+  return request({
+    url: '/system/user/list',
+    method: 'post',
+    data: data
+  })
+}
+
+//新增用户数据
+export function systemUserAdd(data) {
+  return request({
+    url: '/system/user/add',
+    method: 'post',
+    data: data
+  })
+}
+
+//编辑用户数据
+export function systemUserUpdate(data) {
+  return request({
+    url: '/system/user/update',
+    method: 'post',
+    data: data
+  })
+}
+
+//修改用户状态(启用/停用&在职/离职)
+export function systemUserEditState(data) {
+  return request({
+    url: '/system/user/editState',
+    method: 'post',
+    data: data
+  })
+}
+
+//修改密码
+export function systemUserEditPasswd(data) {
+  return request({
+    url: '/system/user/editPasswd',
+    method: 'post',
+    data: data
+  })
+}
+
+//删除用户
+export function systemUserDelete(data) {
+  return request({
+    url: '/system/user/delete',
+    method: 'post',
+    data: data
+  })
+}
+
+//获取用户详情
+export function systemUserDetail(query) {
+  return request({
+    url: '/system/user/detail',
+    method: 'get',
+    params: query
+  })
+}
+
+//获取个人信息
+export function systemUserProfile(query) {
+  return request({
+    url: '/system/user/profile',
+    method: 'get',
+    params: query
+  })
+}
+
+//重置密码
+export function systemUserResetPasswd(data) {
+  return request({
+    url: '/system/user/resetPasswd',
+    method: 'post',
+    data: data
+  })
+}
+
+
+/*                自定义用户查询
+* userType        0.系统用户 1.教职工 2.学生  (必传)
+* userName        用户名
+* mobile          手机号
+* cardNum         卡号
+* account         账号
+* userIds         用户IDS
+* pageSize        不传默认返回10条
+*/
+export function systemUserSelect(data) {
+  return request({
+    url: '/system/user/select',
+    method: 'post',
+    data: data
+  })
+}
+
+/*                自定义获取专业/班级下拉列表
+* type            1.专业 2.班级 (必传)
+* referId         父类ID(院系ID,专业ID)
+* name            名称
+* state           状态
+*/
+export function systemUserMajorSelect(data) {
+  return request({
+    url: '/system/user/major/select',
+    method: 'post',
+    data: data
+  })
+}
+
+//添加-更新人脸
+export function systemUserFaceAddOrUpdate(data) {
+  return request({
+    url: '/system/user/face/addOrUpdate',
+    method: 'post',
+    data: data
+  })
+}
+
+//检测人脸
+export function systemUserFaceCheckFace(data) {
+  return request({
+    url: '/system/user/face/checkFace',
+    method: 'post',
+    data: data
+  })
+}
+
+//人脸信息详情
+export function systemUserFaceAddOrInfo(query) {
+  return request({
+    url: '/system/user/face/info',
+    method: 'get',
+    params: query
+  })
+}

+ 30 - 12
src/api/laboratoryManagement/index.js

@@ -1,40 +1,58 @@
 import request from '@/utils/request'
 
+//获取专业/班级列表
+export function systemUserMajorList(data) {
+  return request({
+    url: '/system/user/major/list',
+    method: 'post',
+    data: data
+  })
+}
 
-// 新增部门
-export function setDeptAdd(data) {
+//新增专业/班级
+export function systemUserMajorAdd(data) {
   return request({
-    url: '/system/dept/add',
+    url: '/system/user/major/add',
     method: 'post',
     data: data
   })
 }
 
-// 编辑部门
-export function setDeptUpdate(data) {
+//专业/班级详情
+export function systemUserMajorDetail(query) {
   return request({
-    url: '/system/dept/update',
+    url: '/system/user/major/detail',
+    method: 'get',
+    params: query
+  })
+}
+
+//编辑专业/班级
+export function systemUserMajorUpdate(data) {
+  return request({
+    url: '/system/user/major/update',
     method: 'post',
     data: data
   })
 }
 
-// 删除部门
-export function setDeptDelete(data) {
+//删除专业/班级
+export function systemUserMajorDelete(data) {
   return request({
-    url: '/system/dept/delete',
+    url: '/system/user/major/delete',
     method: 'post',
     data: data
   })
 }
 
-// 部门排序
-export function setDeptSort(data) {
+//批量绑卡
+export function systemUserBatchBindCard(data) {
   return request({
-    url: '/system/dept/sort',
+    url: '/system/user/batchBindCard',
     method: 'post',
     data: data
   })
 }
 
 
+

+ 9 - 0
src/api/systemManagement/index.js

@@ -178,6 +178,15 @@ export function addUrlConfig(data) {
   })
 }
 
+// 删除系统配置
+export function systemConfigInfoDelete(data) {
+  return request({
+    url: '/system/config/info/delete',
+    method: 'post',
+    data: data
+  })
+}
+
 
 // 获取文件列表
 export function getFileList(data) {

BIN
src/assets/ZDimages/laboratoryManagement/tx_cion_one.png


+ 1 - 1
src/layout/components/AppMain.vue

@@ -124,7 +124,7 @@ export default {
           if(topic == this.mtopicTwo){
             //工作通知
             console.log("工作通知",data);
-            this.textWork = data.msg;
+            this.textWork = data.message;
             this.workType = data.type;
           }
         }

+ 2 - 1
src/store/modules/user.js

@@ -49,7 +49,8 @@ const user = {
             return
           }
           let data = res.data
-          let avatar = user.avatar == "" ? require("@/assets/ZDimages/basicsModules/tx_cion.png") : data.avatar;
+          console.log('loginData',data)
+          let avatar = data.avatar == "" ? require("@/assets/ZDimages/basicsModules/tx_cion.png") : data.avatar;
           commit('SET_NAME', data.userName)
           commit('SET_AVATAR', avatar)
           localStorage.setItem('userId',data.userId);

+ 1 - 1
src/utils/bigDataRequest.js

@@ -74,7 +74,7 @@ service.interceptors.response.use(res => {
     // 未设置状态码则默认成功状态
     const code = res.data.code || 200;
     // 获取错误信息
-    const msg = errorCode[code] || res.data.msg || errorCode['default']
+    const msg = errorCode[code] || res.data.message || errorCode['default']
     if (code == 401 || code == 403) {
       if(!localStorage.getItem('serviceType')){
         localStorage.setItem('serviceType','1')

+ 1 - 1
src/utils/request.js

@@ -145,7 +145,7 @@ service.interceptors.response.use(res => {
     if(loadingCount===0){
       loadingInstance.close();
     }
-    console.log('err' + error)
+    console.log('err++++++++' + error)
     let { message } = error;
     if (message == "Network Error") {
       if(potType){

+ 1 - 1
src/utils/ruoyi.js

@@ -163,7 +163,7 @@ export function download(fileName) {
 
 // 通用上传地址
 export function uploadUrl() {
-  return baseURL + "/base/file/upload";
+  return baseURL + "/system/file/upload";
 }
 
 // 字符串格式化(%s )

+ 6 - 6
src/views/basicsModules/login.vue

@@ -352,7 +352,7 @@ export default {
             }
             this.$store.dispatch("Login", this.loginForm).then((res) => {
               if(res.code != 200){
-                this.text = "*"+res.msg;
+                this.text = "*"+res.message;
                 if(res.code == 530){
                   this.userTypeCode = "4";
                 }else if(res.code == 503){
@@ -416,11 +416,11 @@ export default {
               this.loginFormTwo.authType = 'mobile'
               this.$store.dispatch("LoginPhone", this.loginFormTwo).then((res) => {
                 if(res.code != 200){
-                  this.textTwo = "*"+res.msg;
+                  this.textTwo = "*"+res.message;
                   if(res.code == 530){
-                    this.textTwo = "*"+res.msg;
+                    this.textTwo = "*"+res.message;
                   }else if(res.code == 503){
-                    this.textTwo = "*"+res.msg;
+                    this.textTwo = "*"+res.message;
                   }
                   this.loading = false;
                   return
@@ -501,9 +501,9 @@ export default {
         if(this.codeButtonType){
           sendCode(this.loginFormTwo.username).then(response => {
             if(response.code != 200){
-              this.textTwo = "*"+response.msg;
+              this.textTwo = "*"+response.message;
               if(response.code == 530){
-                this.textTwo = "*"+response.msg;
+                this.textTwo = "*"+response.message;
               }
             }else {
               this.textTwo = "";

+ 41 - 29
src/views/basicsModules/mine.vue

@@ -2,13 +2,13 @@
   <div class="mine">
     <!--<navbar />-->
     <div class="mine-page">
-      <div class="left-max-box scrollbar-box">
+      <div class="left-max-box scrollbar-box" v-if="user.userId">
         <p class="left-title">个人中心</p>
         <div class="left-user-img">
           <userAvatar :user="user" />
         </div>
-        <p class="left-name">{{user.nickName}}</p>
-        <p class="left-num">{{user.userType=='11'?'工号:':(user.userType=='22'?'学号:':'其他:')}}{{user.userName}}</p>
+        <p class="left-name">{{user.userName}}</p>
+        <p class="left-num">{{user.userType=='11'?'工号:':(user.userType=='22'?'学号:':'管理员:')}}{{user.account}}</p>
         <div class="left-text-max-box">
           <div class="left-text-big-box">
             <div class="left-text-big-box-left">
@@ -24,7 +24,7 @@
           </div>
           <div class="left-text-min-box">
             <img src="@/assets/ZDimages/basicsModules/icon_grzx_sjh.png">
-            <p>{{user.phonenumber?user.phonenumber:'未设置'}}</p>
+            <p>{{user.mobile?user.mobile:'未设置'}}</p>
           </div>
           <div class="left-text-min-box">
             <img src="@/assets/ZDimages/basicsModules/icon_grzx_yx.png">
@@ -38,7 +38,7 @@
         <div class="left-type-text-max-box">
           <div>
             <p>联系方式</p>
-            <p :class="user.phonenumber?'p-color-a':'p-color-b'">{{user.phonenumber?'已设置':'未设置'}}</p>
+            <p :class="user.mobile?'p-color-a':'p-color-b'">{{user.mobile?'已设置':'未设置'}}</p>
           </div>
           <div>
             <p>系统头像</p>
@@ -54,7 +54,7 @@
           </div>
         </div>
       </div>
-      <div class="right-max-box scrollbar-box">
+      <div class="right-max-box scrollbar-box" v-if="user.userId">
         <div class="right-title-box">
           <div class="title-button-min-box" @click="buttonTypeClick(1)">
             <p :class="buttonType == '1'?'bottomColor':''">基本资料</p>
@@ -70,10 +70,10 @@
         <div v-if="buttonType == 1">
           <el-form :model="userform" ref="userform" :rules="rules" :inline="true" >
             <div>
-              <el-form-item class="form-item-min input-number-none-box" label="联系方式:" prop="phonenumber" label-width="120px">
+              <el-form-item class="form-item-min input-number-none-box" label="联系方式:" prop="mobile" label-width="120px">
                 <el-input-number
                   :max="19999999999"
-                  v-model="userform.phonenumber"
+                  v-model="userform.mobile"
                   placeholder="请输入联系方式"
                   clearable/>
               </el-form-item>
@@ -87,9 +87,9 @@
                   size="small"
                 />
               </el-form-item>
-              <el-form-item class="form-item-min" label="出生年月:" prop="dateBirth" label-width="120px">
+              <el-form-item class="form-item-min" label="出生年月:" prop="birthday" label-width="120px">
                 <el-date-picker
-                  v-model="userform.dateBirth"
+                  v-model="userform.birthday"
                   value-format="yyyy-MM-dd"
                   type="date"
                   style="width:200px;"
@@ -232,6 +232,7 @@
         ref="faceUpLoad"
         class="position-button"
         :action="uploadImgUrl"
+        :data="upImportData"
         :show-file-list="false"
         :auto-upload="false"
         :on-change="faceChange"
@@ -259,6 +260,11 @@ import userAvatar from "./components/userAvatar";
 import { getUserProfile,updateUserPwd,changePhone,genSign,updateSignature,upDataProfile,fingerprintQuantity} from "@/api/basicsModules/index";
 import { getToken } from "@/utils/auth";
 import fingerprintSubPagePublic from './differenceComponent/fingerprintSubPagePublic.vue'
+
+//V3
+import { systemUserProfile } from "@/api/commonality/permission";
+
+
 export default {
   name: "mine",
   components: {
@@ -291,13 +297,18 @@ export default {
     };
     return{
       buttonType:'1',
-      uploadImgUrl: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/laboratory/studentinfo/commit/face", // 上传的图片服务器地址
+      uploadImgUrl: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/system/user/face/addOrUpdate", // 上传的图片服务器地址
       uploadImgUrlTwo: window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_API + "/file/upload", // 上传的图片服务器地址
       headers: {
-        Authorization: "Bearer " + getToken(),
+        Authorization: getToken(),
+      },
+      upImportData:{
+        userId:localStorage.getItem('userId'),
       },
       pageType:false,
-      user: {},
+      user: {
+        userId:"",
+      },
       roleGroup: {},
       postGroup: {},
       activeTab: "resetPwd",
@@ -329,7 +340,7 @@ export default {
           { required: true, validator: equalToPasswordTwo, trigger: "blur" },
           { required: true, message: "请输入8-16位密码,不能输入连续性和重复性的密码,密码中需要包含:大写字母、小写字符、数字和字符", validator: validatePass, trigger: "blur" }
         ],
-        phonenumber: [
+        mobile: [
           { required: true, message: "请输入11位手机号码", trigger: "blur" },
           { validator: this.checkPhone, trigger: 'blur' },
           // { min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
@@ -344,7 +355,7 @@ export default {
         //   { required: true, message: "请输入正确的邮箱地址", type: 'email'},
         //   { required: true, message: "请输入邮箱地址", validator: this.spaceJudgment, trigger: "blur" }
         // ],
-        // dateBirth: [
+        // birthday: [
         //   { required: true, message: "请选择出生日期", trigger: "blur" }
         // ],
       },
@@ -391,19 +402,19 @@ export default {
     upDataProfile(){
       this.$refs["userform"].validate(valid => {
         if (valid) {
-          if(!this.userform.phonenumber&&!this.userform.email&&!this.userform.dateBirth){
+          if(!this.userform.mobile&&!this.userform.email&&!this.userform.birthday){
             this.msgError('联系方式/邮箱/出生年月,请至少填写一项进行修改')
             return
           }
-          if((this.userform.phonenumber == this.userformData.phonenumber)&&
+          if((this.userform.mobile == this.userformData.mobile)&&
             (this.userform.email == this.userformData.email)&&
-            (this.userform.dateBirth == this.userformData.dateBirth)){
+            (this.userform.birthday == this.userformData.birthday)){
             this.msgError('联系方式/邮箱/出生年月,请至少修改一项再进行保存操作')
             return
           }
           // let obj = JSON.parse(JSON.stringify(this.userform));
           let obj = {};
-          obj.phonenumber = this.userform.phonenumber;
+          obj.mobile = this.userform.mobile;
           if(this.userform.email){
             let regex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
             if(!regex.test(this.userform.email)){
@@ -415,10 +426,10 @@ export default {
           }else {
             obj.email = '';
           }
-          if(this.userform.dateBirth){
-            obj.dateBirth = this.userform.dateBirth;
+          if(this.userform.birthday){
+            obj.birthday = this.userform.birthday;
           }else{
-            obj.dateBirth = '';
+            obj.birthday = '';
           }
           obj.userId = this.user.userId;
           upDataProfile(obj).then(response => {
@@ -493,14 +504,15 @@ export default {
     },
     //获取信息
     getUser() {
-      getUserProfile().then(response => {
-        this.user = response.data;
+      // getUserProfile().then(response => {
+      systemUserProfile().then(response => {
+        this.user = JSON.parse(JSON.stringify(response.data));
         this.roleGroup = response.roleGroup;
         this.postGroup = response.postGroup;
         let obj = {
-          phonenumber:response.data.phonenumber,
+          mobile:response.data.mobile,
           email:response.data.email,
-          dateBirth:response.data.dateBirth,
+          birthday:response.data.birthday,
         }
         this.$set(this,'userform',JSON.parse(JSON.stringify(obj)));
         this.$set(this,'userformData',JSON.parse(JSON.stringify(obj)));
@@ -554,7 +566,7 @@ export default {
           if(response.code == 200){
             this.signatureData = 'data:image/png;base64,'+response.data;
           } else {
-            this.msgError(response.msg)
+            this.msgError(response.message)
           }
         });
       })
@@ -585,10 +597,10 @@ export default {
         this.user.faceImg = res.data.cardUrl;
         this.upFaceOpen = false;
         this.getUser();
-        this.msgSuccess(res.msg)
+        this.msgSuccess(res.message)
         this.$forceUpdate()
       }else{
-        this.msgError(res.msg)
+        this.msgError(res.message)
       }
     },
     beforeAvatarUpload(file) {

+ 1 - 1
src/views/gasManage3_0/manage/infoRecord/detailsPage.vue

@@ -180,7 +180,7 @@
           type: "warning"
         }).then(function() {
           handle({id:self.propsInfoData.id}).then(response => {
-            self.msgSuccess(response.msg);
+            self.msgSuccess(response.message);
             self.$set(self.propsInfoData,'handlingStatus',2);
             self.$set(self.propsInfoData,'operate','已处理');
           })

+ 2 - 2
src/views/gasManage3_0/manage/qualificationApply/qualificationApplyAdd.vue

@@ -409,12 +409,12 @@ export default {
         _this.loading = true;
         if(_this.status==0){//新增
           qualificationApplyAdd(_this.form).then(res => {
-            this.msgSuccess(res.msg);
+            this.msgSuccess(res.message);
             _this.backPage();
           });
         }else if(_this.status==1){
           qualificationApplyAnew(_this.form).then(res => {
-            this.msgSuccess(res.msg);
+            this.msgSuccess(res.message);
             _this.backPage();
           });
         }

+ 2 - 2
src/views/gasManage3_0/manage/qualificationManage/qualificationManageCheck.vue

@@ -162,7 +162,7 @@ export default {
         if(response.code==200){
           this.$message({
             type: 'success',
-            message:response.msg,
+            message:response.message,
             duration:2000,
             onClose:function(){
               _this.backPage();
@@ -179,7 +179,7 @@ export default {
         if(response.code==200){
           this.$message({
             type: 'success',
-            message:response.msg,
+            message:response.message,
             duration:2000,
             onClose:function(){
               _this.backPage();

+ 2 - 2
src/views/gasManage3_0/manage/qualificationManage/qualificationManageDetail.vue

@@ -117,7 +117,7 @@ export default {
         if(response.code==200){
           this.$message({
             type: 'success',
-            message:response.msg,
+            message:response.message,
             duration:2000,
             onClose:function(){
               _this.backPage();
@@ -134,7 +134,7 @@ export default {
         if(response.code==200){
           this.$message({
             type: 'success',
-            message:response.msg,
+            message:response.message,
             duration:2000,
             onClose:function(){
               _this.backPage();

+ 1 - 1
src/views/gasManage3_0/manage/supplierManage/supplierManageCheck.vue

@@ -252,7 +252,7 @@ export default {
         if(response.code==200){
           this.$message({
             type: 'success',
-            message:response.msg,
+            message:response.message,
             duration:2000,
             onClose:function(){
               _this.backPage();

+ 1 - 1
src/views/gasManage3_0/manage/supplierManage/supplierPersonCarDetail.vue

@@ -229,7 +229,7 @@ export default {
         if(response.code==200){
           this.$message({
             type: 'success',
-            message:response.msg,
+            message:response.message,
             duration:2000,
             onClose:function(){
               _this.backPage();

+ 2 - 2
src/views/gasManage3_0/manage/useGas/useGasAdd.vue

@@ -327,12 +327,12 @@ export default {
       if(_this.status==0){//新增
 
         useAgsApplyAdd(_this.form).then(res => {
-          this.msgSuccess(res.msg);
+          this.msgSuccess(res.message);
           _this.backPage();
         });
       }else if(_this.status==1){
         useAgsApplyAnew(_this.form).then(res => {
-          this.msgSuccess(res.msg);
+          this.msgSuccess(res.message);
           _this.backPage();
         });
       }

+ 2 - 2
src/views/gasManage3_0/manage/useGasManage/useGasManageCheck.vue

@@ -156,7 +156,7 @@ export default {
         if(response.code==200){
           this.$message({
             type: 'success',
-            message:response.msg,
+            message:response.message,
             duration:2000,
             onClose:function(){
               _this.backPage();
@@ -173,7 +173,7 @@ export default {
         if(response.code==200){
           this.$message({
             type: 'success',
-            message:response.msg,
+            message:response.message,
             duration:2000,
             onClose:function(){
               _this.backPage();

+ 2 - 2
src/views/gasManage3_0/manage/useGasManage/useGasManageDetail.vue

@@ -110,7 +110,7 @@ export default {
         if(response.code==200){
           this.$message({
             type: 'success',
-            message:response.msg,
+            message:response.message,
             duration:2000,
             onClose:function(){
               _this.backPage();
@@ -127,7 +127,7 @@ export default {
         if(response.code==200){
           this.$message({
             type: 'success',
-            message:response.msg,
+            message:response.message,
             duration:2000,
             onClose:function(){
               _this.backPage();

+ 2 - 2
src/views/gasManage3_0/student/qualificationApply/qualificationApplyAdd.vue

@@ -411,12 +411,12 @@ export default {
         _this.loading = true;
         if(_this.status==0){//新增
           qualificationApplyAdd(_this.form).then(res => {
-            this.msgSuccess(res.msg);
+            this.msgSuccess(res.message);
             _this.backPage();
           });
         }else if(_this.status==1){
           qualificationApplyAnew(_this.form).then(res => {
-            this.msgSuccess(res.msg);
+            this.msgSuccess(res.message);
             _this.backPage();
           });
         }

+ 2 - 2
src/views/gasManage3_0/student/useGas/useGasAdd.vue

@@ -323,12 +323,12 @@ export default {
       _this.loading = true;
       if(_this.status==0){//新增
         useAgsApplyAdd(_this.form).then(res => {
-          this.msgSuccess(res.msg);
+          this.msgSuccess(res.message);
           _this.backPage();
         });
       }else if(_this.status==1){
         useAgsApplyAnew(_this.form).then(res => {
-          this.msgSuccess(res.msg);
+          this.msgSuccess(res.message);
           _this.backPage();
         });
       }

+ 2 - 2
src/views/gasManage_syd/student/gasUseManage/gasUseManage.vue

@@ -176,7 +176,7 @@ export default {
                 if(response.code==200){
                   _this.dialogVisible=false;
                   _this.getList()
-                  _this.msgSuccess(response.msg)
+                  _this.msgSuccess(response.message)
                 }
               });
             }else if(_this.activeName==2){//归还
@@ -186,7 +186,7 @@ export default {
                 if(response.code==200){
                   _this.dialogVisible=false;
                   _this.getList()
-                  _this.msgSuccess(response.msg)
+                  _this.msgSuccess(response.message)
 
                 }
               });

+ 2 - 2
src/views/gasManage_syd/student/useGas/useGasAdd.vue

@@ -271,12 +271,12 @@ export default {
       if(_this.status==0){//新增
 
         useAgsApplyAdd(_this.form).then(res => {
-          this.msgSuccess(res.msg);
+          this.msgSuccess(res.message);
           _this.backPage();
         });
       }else if(_this.status==1){
         useAgsApplyAnew(_this.form).then(res => {
-          this.msgSuccess(res.msg);
+          this.msgSuccess(res.message);
           _this.backPage();
         });
       }

+ 1 - 1
src/views/hierarchicalControl/hierarchicalControl/gradeManageRecord/index.vue

@@ -256,7 +256,7 @@ export default {
           gradeManageWorkInfo(row.id).then( response => {
             console.log('response',response)
             if (response.code == 504){
-              this.msgError(response.msg);
+              this.msgError(response.message);
             }else if (response.code == 200){
               this.recordId = row.id;
               this.pageType = 2;

+ 300 - 0
src/views/laboratoryManagement/personnelManage/major/index.vue

@@ -0,0 +1,300 @@
+<!--专业管理-->
+<template>
+  <div class="app-container major-page">
+    <div class="major-min-page" v-if="pageType == 1">
+      <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="80px">
+        <el-form-item label="关键字" prop="name">
+          <el-input
+            v-model="queryParams.name"
+            placeholder="专业名称/专业代码"
+            clearable
+            size="small"
+          />
+        </el-form-item>
+        <el-form-item style="float: right;">
+          <el-col :span="1.5">
+            <p class="add-button-one-90"
+               @click="handleAdd"
+               v-hasPermi="['system:major:add']"
+            >新增</p>
+          </el-col>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+      </el-form>
+      <el-table border v-loading="loading" :data="majorList">
+        <el-table-column label="学院名称" align="center" prop="referName" show-overflow-tooltip/>
+        <el-table-column label="专业代码" align="center" prop="code" show-overflow-tooltip/>
+        <el-table-column label="专业名称" align="center" prop="name" show-overflow-tooltip/>
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="220"
+                         v-if="tableButtonType">
+          <template slot-scope="scope">
+            <div class="table-button-box">
+              <p class="table-button-null"></p>
+              <p class="table-button-p"
+                 @click="tableButton(1,scope.row)"
+              >班级管理</p>
+              <p class="table-button-p"
+                 @click="tableButton(2,scope.row)"
+                 v-hasPermiAnd="['system:major:query','system:major:edit']"
+              >修改</p>
+              <p class="table-button-p"
+                 @click="tableButton(3,scope.row)"
+                 v-hasPermi="['system:major:remove']"
+              >删除</p>
+              <p class="table-button-null"></p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.page"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </div>
+    <list-page v-if="pageType == 2" :propsData="propsData"></list-page>
+    <!-- 添加或修改major对话框 -->
+    <el-dialog :title="title" v-if="open" :visible.sync="open" width="500px" append-to-body :close-on-click-modal="false">
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="专业名称" prop="name">
+          <el-input v-model="form.name" maxLength="20" style="width:340px;" placeholder="请输入专业名称"/>
+        </el-form-item>
+        <el-form-item label="专业代码" prop="code">
+          <el-input v-model="form.code" maxLength="20" style="width:340px;" placeholder="请输入专业代码"/>
+        </el-form-item>
+        <el-form-item label="学院选择" prop="referId">
+          <el-select v-model="form.referId" style="width:340px;" placeholder="请选择学院">
+            <el-option
+              v-for="item in deptOptions"
+              :key="item.deptId"
+              :label="item.deptName"
+              :value="item.deptId">
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="cancel">取 消</el-button>
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listMajor, getMajor, delMajor, addMajor, updateMajor } from '@/apiDemo/system/major'
+  import { treeselect } from '@/apiDemo/system/dept'
+  import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+  //V3
+  import { getDeptDropList } from '@/api/commonality/permission'
+  import { systemUserMajorList,systemUserMajorAdd,systemUserMajorDetail,
+    systemUserMajorUpdate,systemUserMajorDelete } from '@/api/laboratoryManagement/index'
+  import listPage from './listPage.vue'
+
+  export default {
+    name: 'Major',
+    components: {
+      listPage
+    },
+    data() {
+      return {
+        //页面状态
+        pageType:1,
+        propsData:{},
+        tableButtonType: this.hasPermiDom(['system:major:query', 'system:major:edit', 'system:major:remove']),
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 部门树选项
+        deptOptions: [],
+        // major表格数据
+        majorList: [],
+        // 弹出层标题
+        title: '',
+        // 是否显示弹出层
+        open: false,
+        // 查询参数
+        queryParams: {
+          page: 1,
+          pageSize: 20,
+          name: '',
+          type: 1
+        },
+        // 表单参数
+        form: {
+          name: null,
+          code: null,
+          referId: null,
+        },
+        // 表单校验
+        rules: {
+          name: [
+            { required: true, message: '请输入专业名称', trigger: 'blur' },
+            { required: true, message: '请输入专业名称', validator: this.spaceJudgment, trigger: 'blur' }
+          ],
+          code: [
+            { required: true, message: '请输入专业代码', trigger: 'blur' },
+            { required: true, message: '请输入专业代码', validator: this.spaceJudgment, trigger: 'blur' }
+          ],
+          referId: [
+            { required: true, message: '请选择学院', trigger: 'blur' }
+          ]
+        }
+      }
+    },
+    created() {
+      this.getList()
+    },
+    methods: {
+      /** 查询major列表 */
+      getList() {
+        this.loading = true
+        systemUserMajorList(this.queryParams).then(response => {
+          this.majorList = response.data.records
+          this.total = response.data.total
+          this.loading = false
+        })
+      },
+      /** 查询部门下拉树结构 */
+      getDeptDropList() {
+        getDeptDropList({ level: 2, deptType: 1 }).then(response => {
+          this.deptOptions = response.data
+        })
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false
+        this.reset()
+      },
+      // 表单重置
+      reset() {
+        this.$set(this,'form',{
+          name: null,
+          code: null,
+          referId: null,
+        });
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.page = 1
+        this.getList()
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        // this.resetForm("queryForm");
+        this.$set(this, 'queryParams', {
+          page: 1,
+          pageSize: 20,
+          type: 1,
+          name: ''
+        })
+        this.handleQuery()
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset()
+        this.getDeptDropList()
+        this.open = true
+        this.title = '添加专业'
+      },
+      deptSelect(item) {
+        this.form.deptName = item.label
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.$refs['form'].validate(valid => {
+          if (valid) {
+            let obj = JSON.parse(JSON.stringify(this.form))
+            if (obj.id) {
+              systemUserMajorUpdate(obj).then(response => {
+                this.msgSuccess('修改成功')
+                this.open = false
+                this.getList()
+              })
+            } else {
+              obj.type = 1;
+              systemUserMajorAdd(obj).then(response => {
+                this.msgSuccess('新增成功')
+                this.open = false
+                this.getList()
+              })
+            }
+          }
+        })
+      },
+      //列表按钮
+      tableButton(type,row){
+        if(type == 0){
+          this.$set(this,'pageType',1);
+        }else if(type == 1){
+          //班级管理
+          this.$set(this,'propsData',{
+            deptName:row.referName,
+            name:row.name,
+            id:row.id
+          });
+          this.$set(this,'pageType',2);
+        }else if(type == 2){
+          //编辑
+          this.reset()
+          this.getDeptDropList()
+          const id = row.id || this.ids
+          systemUserMajorDetail({id:id}).then(response => {
+            this.form = response.data
+            this.open = true
+            this.title = '修改专业'
+          })
+        }else if(type == 3){
+          //删除
+          const ids = row.id || this.ids
+          this.$confirm('是否确认删除?', '警告', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          }).then(function() {
+            return systemUserMajorDelete({id:ids})
+          }).then(() => {
+            this.getList()
+            this.msgSuccess('删除成功')
+          }).catch(() => {
+          })
+        }
+      },
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  .major-page {
+    display: flex!important;
+    flex-direction: column;
+    overflow: hidden!important;
+    .major-min-page{
+      flex:1;
+      display: flex;
+      flex-direction: column;
+      overflow: hidden!important;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px!important;
+      .button-box {
+        width: 190px;
+        display: flex;
+        margin: 0 auto;
+      }
+    }
+  }
+</style>

+ 213 - 0
src/views/laboratoryManagement/personnelManage/major/listPage.vue

@@ -0,0 +1,213 @@
+<template>
+  <div class="major-listPage">
+    <div class="major-listPage-title-box">
+      <p>{{propsData.deptName}}-{{propsData.name}}-班级管理</p>
+      <p class="add-button-one-90"
+         @click="addButton"
+      >新增</p>
+      <p class="reset-button-one" @click="outButton">返回</p>
+    </div>
+    <div class="major-listPage-box">
+      <el-table border v-loading="loading" :data="dataList">
+        <el-table-column label="班级名称" align="center" prop="name" show-overflow-tooltip/>
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="220">
+          <template slot-scope="scope">
+            <div class="table-button-box">
+              <p class="table-button-null"></p>
+              <p class="table-button-p"
+                 @click="tableButton(1,scope.row)"
+              >修改</p>
+              <p class="table-button-p"
+                 @click="tableButton(2,scope.row)"
+              >删除</p>
+              <p class="table-button-null"></p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.page"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </div>
+    <!-- 添加或修改major对话框 -->
+    <el-dialog :title="title" v-if="open" :visible.sync="open" width="500px" append-to-body :close-on-click-modal="false">
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-form-item label="班级名称" prop="name">
+          <el-input v-model="form.name" maxLength="20" style="width:340px;" placeholder="请输入专业名称"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="cancel">取 消</el-button>
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { systemUserMajorList,systemUserMajorAdd,systemUserMajorDetail,
+    systemUserMajorUpdate,systemUserMajorDelete } from '@/api/laboratoryManagement/index'
+  export default {
+    name: 'listPage',
+    props:{
+      propsData:{},
+
+    },
+    data(){
+      return{
+        loading:false,
+        queryParams:{
+          page: 1,
+          pageSize: 20,
+          type:2,
+        },
+        //数据列表
+        dataList:[],
+        // 总条数
+        total: 0,
+        //dialog相关
+        title:"",
+        open:false,
+        form:{
+          name:"",
+        },
+        // 表单校验
+        rules: {
+          name: [
+            { required: true, message: '请输入班级名称', trigger: 'blur' },
+            { required: true, message: '请输入班级名称', validator: this.spaceJudgment, trigger: 'blur' }
+          ],
+        }
+      }
+    },
+    created(){
+
+    },
+    mounted(){
+      this.getList();
+    },
+    methods:{
+      //返回按钮
+      outButton(){
+        this.$parent.tableButton(0);
+      },
+      //新增按钮
+      addButton(){
+        this.$set(this,'form',{
+          name: null,
+        });
+        this.$set(this,'title','新增班级');
+        this.$set(this,'open',true);
+
+      },
+      //列表按钮
+      tableButton(type,row){
+        if(type == 1){
+          this.$set(this,'form',{
+            id:row.id,
+            name:row.name
+          })
+          this.$set(this,'title','修改班级');
+          this.$set(this,'open',true);
+        }else if(type == 2){
+          //删除
+          const ids = row.id || this.ids
+          this.$confirm('是否确认删除?', '警告', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          }).then(function() {
+            return systemUserMajorDelete({id:ids})
+          }).then(() => {
+            this.getList()
+            this.msgSuccess('删除成功')
+          }).catch(() => {
+          })
+        }
+      },
+      //取消
+      cancel(){
+        this.$set(this,'open',false);
+      },
+      //提交
+      submitForm(){
+        this.$refs['form'].validate(valid => {
+          if (valid) {
+            let obj = JSON.parse(JSON.stringify(this.form))
+            if (obj.id) {
+              systemUserMajorUpdate(obj).then(response => {
+                this.msgSuccess('修改成功')
+                this.open = false
+                this.getList()
+              })
+            } else {
+              let obj = {
+                name:this.form.name,
+                referId:this.propsData.id,
+                type:2,
+              }
+              systemUserMajorAdd(obj).then(response => {
+                this.msgSuccess('新增成功')
+                this.open = false
+                this.getList()
+              })
+            }
+          }
+        })
+      },
+      //获取列表
+      getList(){
+        this.loading = true
+        let obj = JSON.parse(JSON.stringify(this.queryParams))
+        obj.referId = this.propsData.id;
+        systemUserMajorList(obj).then(response => {
+          this.dataList = response.data.records
+          this.total = response.data.total
+          this.loading = false
+        })
+      },
+    },
+  }
+</script>
+
+<style scoped lang="scss">
+  .major-listPage{
+    flex:1;
+    display: flex;
+    flex-direction: column;
+    overflow: hidden!important;
+    box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+    .major-listPage-title-box{
+      height:80px;
+      border-bottom:1px solid #dedede;
+      display: flex;
+      p:nth-child(1){
+        line-height:80px;
+        font-size:18px;
+        margin-left:24px;
+        color:#0045AF;
+        flex:1;
+      }
+      p:nth-child(2){
+        width:80px;
+        margin-top:20px;
+      }
+      p:nth-child(3){
+        width:80px;
+        margin:20px;
+      }
+    }
+    .major-listPage-box{
+      flex:1;
+      display: flex;
+      flex-direction: column;
+      overflow: hidden!important;
+      font-weight:500;
+      padding:20px!important;
+    }
+  }
+</style>

+ 0 - 13
src/views/laboratoryManagement/personnelManage/student/index.vue

@@ -1,13 +0,0 @@
-<template>
-  <div></div>
-</template>
-
-<script>
-  export default {
-    name: 'index'
-  }
-</script>
-
-<style scoped>
-
-</style>

Plik diff jest za duży
+ 1088 - 0
src/views/laboratoryManagement/personnelManage/studentInfo/addPage.vue


+ 254 - 0
src/views/laboratoryManagement/personnelManage/studentInfo/bindingCardPage.vue

@@ -0,0 +1,254 @@
+<template>
+    <div class="bindingCardPage">
+      <div class="title-box">
+        <p>批量绑定校园卡</p>
+      </div>
+      <div class="watch-head-box">
+        <p>姓名</p>
+        <p>学号</p>
+        <!--<p>学院</p>-->
+        <p>手机号码</p>
+        <p>校园卡号</p>
+      </div>
+      <div class="center-max-big-box scrollbar-box">
+        <div class="watch-data-list" v-for="(item,index) in watchList" :key="index">
+          <p>{{item.userName}}</p>
+          <p>{{item.account}}</p>
+          <!--<p>{{item.deptName}}</p>-->
+          <p>{{item.mobile}}</p>
+          <div class="input-big-box">
+            <el-input class="input-box" type="text"
+                      maxLength="30"
+                      v-model="item.cardNum"
+                      clearable
+                      placeholder="请输入或读取校园卡号"
+            />
+            <p class="input-msg-p">{{item.cardType==1?'卡号已存在':(item.cardType==2?'卡号重复':'')}}</p>
+          </div>
+        </div>
+      </div>
+      <div class="button-box">
+        <p></p>
+        <p class="reset-button-one" @click="outPageButton">返回</p>
+        <p class="add-button-one-90" @click="setButton">保存</p>
+      </div>
+    </div>
+</template>
+
+<script>
+  import { studentBatchSelect, studentUpdateCardNum } from "@/apiDemo/system/user_student";
+  //V3新
+  import { systemUserSelect } from "@/api/commonality/permission";
+  import { systemUserBatchBindCard } from "@/api/laboratoryManagement/index";
+  export default {
+    name: 'bindingCardPage',
+    props:{
+      ids:{},
+    },
+    data(){
+      return{
+        watchList:[],
+      }
+    },
+    created(){
+
+    },
+    mounted(){
+      this.systemUserSelect();
+    },
+    methods:{
+      //批量获取老师数据
+      systemUserSelect(){
+        let obj = {
+          userType:2,
+          pageSize:50,
+          userIds:this.ids
+        }
+        systemUserSelect(obj).then(response => {
+          this.watchList = response.data;
+          this.getInitialization();
+        })
+      },
+      //返回
+      outPageButton(){
+        this.$parent.outPage(1);
+      },
+      //提交
+      setButton(){
+        let self = this
+        if(this.setVerification()){
+          let list = [];
+          for(let i=0;i<self.watchList.length;i++){
+            if(self.watchList[i].cardNum){
+              let obj = {
+                userId:self.watchList[i].userId,
+                cardNum:self.watchList[i].cardNum,
+              }
+              list.push(obj);
+            }
+          }
+          // list = JSON.parse(JSON.stringify(list))
+          systemUserBatchBindCard(list).then(response => {
+            if(response.data){
+              this.repeatMark(response.data);
+            }else{
+              this.msgSuccess(response.message);
+              this.$parent.handleQuery();
+            }
+          })
+        }
+      },
+      //提交验证
+      setVerification(){
+        let self = this;
+        for(let i=0;i<self.watchList.length;i++){
+          self.watchList[i].cardType = 0;
+          if (self.watchList[i].cardNum){
+            self.watchList[i].cardNum = self.watchList[i].cardNum.replace(/^\s*|\s*$/g,"");
+          }
+        }
+        let num = 0;
+        for(let i=0;i<self.watchList.length;i++){
+          for(let o=0;o<self.watchList.length;o++){
+            if(self.watchList[i].cardNum == self.watchList[o].cardNum &&
+               self.watchList[i].userId != self.watchList[o].userId &&
+              self.watchList[i].cardNum && self.watchList[o].cardNum){
+              self.$set(self.watchList[i],'cardType',2);
+              self.$set(self.watchList[o],'cardType',2);
+              num++
+            }
+          }
+        }
+        this.$forceUpdate();
+        return num == 0;
+      },
+      //数据初始化
+      getInitialization(){
+        let self = this;
+        for(let i=0;i<self.watchList.length;i++){
+          self.watchList[i].cardType = 0;
+          self.watchList[i].cardNum = self.watchList[i].cardNumSimple;
+        }
+        this.$forceUpdate();
+      },
+      //重复标记
+      repeatMark(list){
+        let self = this;
+        for(let i=0;i<list.length;i++){
+          for(let o=0;o<self.watchList.length;o++){
+            if(list[i].cardNum == self.watchList[o].cardNum){
+              self.watchList[o].cardType = 1;
+            }
+          }
+        }
+        this.$forceUpdate();
+      },
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  *{
+    margin:0;
+    padding:0;
+    font-weight:500;
+    color:#333;
+  }
+  .bindingCardPage{
+    display: flex;
+    flex-direction: column;
+    flex:1;
+    overflow: hidden;
+    .title-box{
+      border-bottom:1px solid #E0E0E0;
+      p{
+        color:#0045AF;
+        line-height:60px;
+        margin-left:24px;
+        font-size:18px;
+      }
+    }
+    .watch-head-box{
+      padding:10px 40px 10px;
+      display: flex;
+      p{
+        line-height:40px;
+        font-size:16px;
+        font-weight: 600;
+      }
+      p:nth-child(1){
+        width:300px;
+      }
+      p:nth-child(2){
+        width:300px;
+      }
+      p:nth-child(3){
+        width:300px;
+      }
+      p:nth-child(4){
+        width:300px;
+      }
+      input{
+        width:300px;
+      }
+    }
+    .center-max-big-box{
+      flex:1;
+      padding:0 40px;
+      .watch-data-list{
+        display: flex;
+        margin-bottom:10px;
+        p{
+          line-height:40px;
+          font-size:16px;
+        }
+        p:nth-child(1){
+          width:300px;
+        }
+        p:nth-child(2){
+          width:300px;
+        }
+        p:nth-child(3){
+          width:300px;
+        }
+        p:nth-child(4){
+          width:300px;
+        }
+        .input-big-box{
+          display: flex;
+          flex:1;
+          .input-box{
+            width:300px;
+          }
+          .input-msg-p{
+            margin-left:20px;
+            width:100px;
+            color:#FF6666;
+            font-size:14px;
+          }
+        }
+      }
+    }
+    .button-box{
+      height:80px;
+      display: flex;
+      border-top:1px solid #E0E0E0;
+      p{
+        margin-top:20px;
+      }
+      p:nth-child(1){
+        flex:1;
+      }
+      p:nth-child(2){
+        width:80px;
+        margin-right:20px;
+        font-size:16px;
+      }
+      p:nth-child(3){
+        width:80px;
+        margin-right:20px;
+        font-size:16px;
+      }
+    }
+  }
+</style>

+ 78 - 0
src/views/laboratoryManagement/personnelManage/studentInfo/differenceComponent/addPageSubPagePublic.vue

@@ -0,0 +1,78 @@
+<template>
+  <p class="inquire-button-one" @click="upDataClick">提交</p>
+</template>
+
+<script>
+  import { addUserStudent,putUserStudent } from "@/apiDemo/system/user_student";
+  export default {
+    name: 'addPageSubPagePublic',
+    methods:{
+      upDataClick(){
+        this.$parent.upDataClick();
+        // let self = this;
+        // self.$parent.$refs["form"].validate(valid => {
+        //   if (valid) {
+        //     if(self.$parent.form.email){
+        //       let re = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
+        //       if(!re.test(self.$parent.form.email)){
+        //         self.msgError('请输入正确的邮箱地址')
+        //         return
+        //       }
+        //     }
+        //     let obj = JSON.parse(JSON.stringify(self.$parent.form));
+        //     // obj.position = obj.position+'';
+        //     if(self.$parent.propsData.userId){
+        //       //编辑
+        //       obj.userId = self.$parent.propsData.userId
+        //       obj.roleIds = self.$parent.form.position?self.$parent.form.roleIds:[];
+        //       putUserStudent(obj).then(response => {
+        //         if(response.code==200){
+        //           self.msgSuccess(response.message)
+        //           self.$parent.outPageButton()
+        //         }else if(response.code==205){
+        //           self.$confirm(response.message, "警告", {
+        //             confirmButtonText: "确定",
+        //             cancelButtonText: "取消",
+        //             type: "warning"
+        //           }).then(() => {
+        //             //  确定
+        //             self.$router.push({ path: '/comprehensive/laboratoryManagement/accessAuthorization' });
+        //           }).catch(function() {
+        //             //  取消
+        //             self.$parent.outPageButton();
+        //           });
+        //         }
+        //
+        //       });
+        //     }else{
+        //       //新增
+        //       addUserStudent(obj).then(response => {
+        //         if(response.code==200){
+        //           self.msgSuccess(response.message)
+        //           self.$parent.outPageButton()
+        //         }else if(response.code==205){
+        //           self.$confirm(response.message, "警告", {
+        //             confirmButtonText: "确定",
+        //             cancelButtonText: "取消",
+        //             type: "warning"
+        //           }).then(() => {
+        //             //  确定
+        //             self.$router.push({ path: '/comprehensive/laboratoryManagement/accessAuthorization' });
+        //           }).catch(function() {
+        //             //  取消
+        //             self.$parent.outPageButton();
+        //           });
+        //         }
+        //
+        //       });
+        //     }
+        //   }
+        // })
+      },
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 48 - 0
src/views/laboratoryManagement/personnelManage/studentInfo/differenceComponent/addPageSubPageSZDX.vue

@@ -0,0 +1,48 @@
+<template>
+  <p class="inquire-button-one" @click="upDataClick">提交</p>
+</template>
+
+<script>
+  import { addUserStudent,putUserStudent } from "@/apiDemo/system/user_student";
+  export default {
+    name: 'addPageSubPageSZDX',
+    methods:{
+      upDataClick(){
+        this.$parent.upDataClick();
+        // let self = this;
+        // self.$parent.$refs["form"].validate(valid => {
+        //   if (valid) {
+        //     if(self.$parent.form.email){
+        //       let re = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
+        //       if(!re.test(self.$parent.form.email)){
+        //         self.msgError('请输入正确的邮箱地址')
+        //         return
+        //       }
+        //     }
+        //     let obj = JSON.parse(JSON.stringify(self.$parent.form));
+        //     obj.roleIds = self.$parent.form.position?self.$parent.form.roleIds:[];
+        //     // obj.position = obj.position+'';
+        //     if(self.$parent.propsData.userId){
+        //       //编辑
+        //       obj.userId = self.$parent.propsData.userId
+        //       putUserStudent(self.$parent.form).then(response => {
+        //         self.msgSuccess(response.message)
+        //         self.$parent.outPageButton()
+        //       });
+        //     }else{
+        //       //新增
+        //       addUserStudent(obj).then(response => {
+        //         self.msgSuccess(response.message)
+        //         self.$parent.outPageButton()
+        //       });
+        //     }
+        //   }
+        // });
+      },
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 993 - 0
src/views/laboratoryManagement/personnelManage/studentInfo/index.vue

@@ -0,0 +1,993 @@
+<!--学生管理-->
+<template>
+  <div class="app-container student">
+    <div v-show="pageType == 1" class="student-one-box">
+      <el-form :model="queryParams" class="form-box" ref="queryForm" :inline="true" v-show="showSearch">
+        <!--v-hasPermi="['laboratory:plan:add']"-->
+        <el-form-item label="关键字" prop="searchValue" label-width="54px">
+          <el-input
+            maxLength="20"
+            v-model="queryParams.searchValue"
+            placeholder="姓名/学号/导师/手机号码"
+            clearable
+            style="width: 200px"
+          />
+        </el-form-item>
+        <el-form-item label="学院" prop="deptId">
+          <el-select v-model="queryParams.deptId" clearable placeholder="请选择学院">
+            <el-option
+              v-for="item in collegeOptions"
+              :key="item.deptId"
+              :label="item.deptName"
+              :value="item.deptId">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="状态" prop="status">
+          <el-select v-model="queryParams.state" clearable placeholder="请选择状态">
+            <el-option label="启用" :value="true"></el-option>
+            <el-option label="停用" :value="false"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="校园卡" prop="cardNumSimple">
+          <el-select v-model="queryParams.cardNumSimple" clearable placeholder="请选择">
+            <el-option
+              v-for="item in professionOptions"
+              :key="item.postId"
+              :label="item.postName"
+              :value="item.postId">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-dropdown @command="importButton" v-hasPermi="['system:user_student:import']">
+            <div class="form-dropdown-box">
+              <img src="@/assets/ZDimages/laboratoryManagement/icon_jzgxx_dr.png">
+              <p>导入</p>
+              <img src="@/assets/ZDimages/laboratoryManagement/icon_jzggl_xljt.png">
+            </div>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{command:1}" v-hasPermi="['system:user_student:exceltemplate']">下载模板</el-dropdown-item>
+              <el-dropdown-item style="margin:0 10px;color:#666;" :command="{command:2}">导入数据</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </el-form-item>
+        <el-form-item>
+          <el-dropdown @command="exportButton" v-hasPermi="['system:user_student:export']">
+            <div class="form-dropdown-box">
+              <img src="@/assets/ZDimages/laboratoryManagement/icon_jzgxx_sc.png">
+              <p>导出</p>
+              <img src="@/assets/ZDimages/laboratoryManagement/icon_jzggl_xljt.png">
+            </div>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;color:#333;" :command="{command:1}">导出全部数据</el-dropdown-item>
+              <el-dropdown-item style="margin:0 10px;color:#666;" :command="{command:2}">导出选中数据</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+        </el-form-item>
+        <el-form-item style="float: right;">
+          <el-col :span="1.5" v-hasPermi="['system:user_student:add']">
+            <p class="add-button-one-90"
+               @click="addButton"
+            ><i class="el-icon-plus"></i>新增</p>
+          </el-col>
+        </el-form-item>
+        <el-form-item style="float: right;">
+          <el-col :span="1.5" v-hasPermi="['system:user_student:check']">
+            <p class="add-button-one-90"
+               @click="bindingCard"
+            >批量绑卡</p>
+          </el-col>
+        </el-form-item>
+        <el-form-item>
+          <p class="inquire-button-one" @click="handleQuery">查询</p>
+          <p class="reset-button-one" @click="resetQuery">重置</p>
+        </el-form-item>
+      </el-form>
+      <el-table  border :data="userList" @selection-change="handleSelectionChange" ref="multipleTable" :row-key="getRowKeys">
+        <el-table-column type="selection" width="50" :reserve-selection="true" align="center"/>
+        <el-table-column label="序号"  width="50" align="center"  type="index"/>
+        <el-table-column label="姓名" align="left" prop="userName"/>
+        <el-table-column label="学号" align="left" prop="account" width="180">
+          <template slot-scope="scope">
+            <div style="display: flex">
+              <span style="flex:1;">{{scope.row.account}}</span>
+              <el-switch
+                @click.native="stateChange(scope.row)"
+                class="switch captcha-img"
+                :active-value="true"
+                :inactive-value="false"
+                active-color="#0183FA"
+                inactive-color="#999"
+                v-model="scope.row.state"
+                active-text="启用"
+                inactive-text="停用"
+                disabled
+              ></el-switch>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="手机号码" align="left" prop="mobile" show-overflow-tooltip width="162"/>
+        <el-table-column label="学院" align="left" prop="deptName" show-overflow-tooltip width="200"/>
+        <el-table-column label="专业" align="left" prop="major" show-overflow-tooltip width="180"/>
+        <el-table-column label="学生类别" align="left" prop="education" show-overflow-tooltip width="149">
+          <template slot-scope="scope">
+            <p v-for="item in educationOptions" v-if="item.itemId == scope.row.education">{{item.label}}</p>
+          </template>
+        </el-table-column>
+        <el-table-column label="班级" align="center" prop="gradeName" show-overflow-tooltip width="100"/>
+        <el-table-column label="导师" align="center" prop="tutorUserName" show-overflow-tooltip width="150"/>
+        <el-table-column label="操作" align="left" width="160" class-name="small-padding fixed-width" v-if="tableButtonType">
+          <template slot-scope="scope">
+            <div class="table-button-box">
+              <p class="table-button-null"></p>
+              <p class="table-button-p"
+                 v-hasPermi="['system:user_student:query']"
+                 @click="infoButton(scope.row)"
+              >详情</p>
+              <el-dropdown @command="moreClick" v-hasPermi="['system:user_student:query','system:user_student:edit','system:user_student:remove','system:user_student:resetpwd']">
+                <p class="table-button-p">更多>></p>
+                <el-dropdown-menu slot="dropdown">
+                  <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;" :command="{row:scope.row,command:1}"
+                                    v-hasPermiAnd="['system:user_student:query','system:user_student:edit']">编辑</el-dropdown-item>
+                  <el-dropdown-item style="border-bottom:1px solid #E0E0E0;margin:0 10px;" :command="{row:scope.row,command:2}"
+                                    v-hasPermi="['system:user_student:remove']">删除</el-dropdown-item>
+                  <el-dropdown-item style="margin:0 10px;" :command="{row:scope.row,command:3}"
+                                    v-hasPermi="['system:user_student:resetpwd']">重置密码</el-dropdown-item>
+                </el-dropdown-menu>
+              </el-dropdown>
+              <p class="table-button-null"></p>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="display: flex;height:32px;margin-top:15px;">
+        <!--<p style="flex:4;"></p>-->
+        <p style="text-align: left;margin:0;line-height:32px;margin-right:20px;font-size:14px;color:#999;">
+          <i class="el-icon-warning" style="color:#0183FA;"></i>
+          已选择 {{selectedNum}} 项
+        </p>
+        <div style="flex:5;">
+          <pagination :page-sizes="[20, 30, 40, 50]"
+            v-show="total>0"
+            :total="total"
+            style="margin:0;"
+            :page.sync="queryParams.page"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </div>
+      </div>
+    </div>
+    <add-page v-if="pageType == 2" :editType="editType" :propsData="propsData" :titleName="titleName"></add-page>
+    <binding-card-page v-if="pageType == 3" :ids="ids"></binding-card-page>
+    <!--重置密码-->
+    <el-dialog title="重置密码" :visible.sync="reviseOpen" width="600px" append-to-body class="teacher-revise-dialog-box">
+      <p class="teacher-text-p">确定要重置该账号的密码吗?</p>
+      <p class="teacher-text-p">确定操作后,该账号密码将重置为系统初始密码。</p>
+      <div slot="footer" class="teacher-revise-dialog-button-box">
+        <p class="reset-button-one" @click="offTeacherResetPwd">取消</p>
+        <p class="inquire-button-one" @click="teacherResetPwd">确定</p>
+      </div>
+    </el-dialog>
+    <!--导入窗口-->
+    <el-dialog title="导入数据" :visible.sync="importOpen" @close="importOpenOff" width="600px" append-to-body class="teacher-import-dialog-box">
+      <el-upload
+        class="teacher-import-dialog-upLoad-box"
+        :drag="true"
+        :data="upImportData"
+        :action="uploadImgUrl"
+        :show-file-list="false"
+        :on-success="handleAvatarSuccess"
+        :headers="headers"
+        :before-upload="beforeAvatarUpload">
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip" slot="tip">
+          <el-checkbox v-model="upImportData.upDate">是否更新已经存在的用户数据</el-checkbox>
+        </div>
+        <div class="el-upload__tip" slot="tip">仅允许导入xls、xlsx、格式文件。<span style="color:#0183FA;cursor: pointer" v-hasPermi="['system:user_student:exceltemplate']" @click="importTemplate">下载模板</span></div>
+        <div class="el-upload-text-box" slot="tip" v-if="getImportData.downFile">
+          <div class="img-text-box">
+            <img src="@/assets/ZDimages/laboratoryManagement/icon_dr_wj.png">
+            <p>{{getImportData.textName}}</p>
+          </div>
+          <p class="text-p">数据导入成功 <span style="color:#0183FA;">{{getImportData.successNum}}</span> 条,失败 <span style="color:#FF6464 ;">{{getImportData.failureNum}}</span> 条</p>
+          <div class="img-text-box">
+            <img src="@/assets/ZDimages/laboratoryManagement/icon_dr_sj.png">
+            <p style="color:#0183FA;cursor: pointer;" @click="failureExcel">点击下载失败数据报表</p>
+          </div>
+        </div>
+      </el-upload>
+      <div slot="footer" class="teacher-import-dialog-button-box">
+        <p class="inquire-button-one" @click="importOpenOff">确定</p>
+      </div>
+      <div class="teacher-import-dialog-position-box" v-if="loading"></div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { Message } from 'element-ui'
+import { listDepartments } from "@/apiDemo/system/dept";
+import { getAuthRole, updateAuthRole, resetUserPwd } from "@/apiDemo/system/user";
+import { listUser, getUser, delUser, addUser, updateUser, changeUserStatus,getListAll, putUserTeacher,putUserResetPwd,delUserInfo,getStudentInfo } from "@/apiDemo/system/user_student";
+import { optionUser } from "@/apiDemo/system/user_teacher";
+import { treeselect } from "@/apiDemo/system/dept";
+import {listMajorAll} from "@/apiDemo/system/major";
+
+import { getToken } from "@/utils/auth";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import addPage from "./addPage.vue"
+import bindingCardPage from "./bindingCardPage.vue"
+//V3新
+import { systemUserList,systemUserEditState,systemUserResetPasswd,
+  systemUserDelete,systemUserDetail,getDeptDropList  } from "@/api/commonality/permission";
+import { getDicts } from "@/api/commonality/noPermission";
+export default {
+  name: "User",
+  components: {
+    addPage,
+    bindingCardPage
+  },
+  data() {
+    return {
+      tableButtonType:this.hasPermiDom(['system:user_student:query','system:user_student:query','system:user_student:edit','system:user_student:remove','system:user_student:resetpwd']),
+      uploadImgUrl: window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/system/user/student/importData", // 上传地址
+      headers: {
+        Authorization: "Bearer " + getToken(),
+      },
+      //专业列表
+      majorList:[],
+      // 遮罩层
+      loading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      userList: [],
+      // 弹出层标题
+      title: "",
+      // 部门树选项
+      deptOptions: undefined,
+      //专业列表
+      professionOptions:[
+        {
+          postName:"未绑定",
+          postId:"0",
+        },
+        {
+          postName:"已绑定",
+          postId:"1",
+        },
+      ],
+      //学院列表
+      collegeOptions:[],
+      // 是否显示弹出层
+      open: false,
+      // 部门名称
+      deptName: undefined,
+      // 岗位选项
+      postOptions: [],
+      // 角色选项
+      roleOptions: [],
+      // 表单参数
+      form: {},
+      defaultProps: {
+        children: "children",
+        label: "label"
+      },
+      // 用户导入参数
+      upload: {
+        // 是否显示弹出层(用户导入)
+        open: false,
+        // 弹出层标题(用户导入)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/system/user/importData"
+      },
+      // 查询参数
+      queryParams: {
+        page: 1,
+        pageSize:20,
+        deptId:"",
+        searchValue: "",
+        state: "",
+        cardNumSimple: "",
+        userType:2,
+      },
+      // 列信息
+      columns: [
+        { key: 0, label: `用户编号`, visible: true },
+        { key: 1, label: `用户名称`, visible: true },
+        { key: 2, label: `用户昵称`, visible: true },
+        { key: 3, label: `部门`, visible: true },
+        { key: 4, label: `手机号码`, visible: true },
+        { key: 5, label: `状态`, visible: true },
+        { key: 6, label: `创建时间`, visible: true }
+      ],
+      //表格扩展选择器---需要在@selection-change绑定的方法内监控selection数组长度
+      selectedNum:0,
+      //页面选项
+      pageType:1,
+      editType:false,
+      //组件传参数据
+      propsData:{},
+      //弹窗状态
+      shadeType:1,
+      // 教师列表
+      teacherList: [],
+      //学院列表
+      deptList:[],
+      //类别列表
+      educationOptions:[],
+      // 新增学生开关
+      addStudentType:false,
+      addTitle:"",
+      addForm:{
+          tutorUserName:"",
+          tmpTutorUserId:"",
+      },
+      subForm:{
+          tutorUserName:""
+      },
+      //导入弹层开关
+      importOpen:false,
+      //导入数据
+      upImportData:{
+        sysUserEnable:true,
+        upDate:false,
+      },
+      getImportData:{
+        downFile:false,
+        successNum:0,
+        failureNum:0,
+        textName:"",
+      },
+      //重置密码id
+      reviseOpen:false,
+      userId:"",
+      currentDate:'',
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  created() {
+    this.getList();
+    this.getAll();
+    // this.getListAll();
+    // this.getDicts("sys_user_sex").then(response => {});
+    // this.getConfigKey("sys.user.initPassword").then(response => {});
+  },
+  methods: {
+    //批量绑卡页面跳转与数量检测
+    bindingCard(){
+      let self = this;
+      if(self.ids.length<1){
+        self.msgError('请先勾选人员')
+        return
+      }
+      if(self.ids.length>50){
+        self.msgError('批量绑卡最多只可选中50条数据,当前选中了'+self.ids.length+'条.')
+        return
+      }
+      this.pageType = 3;
+    },
+    offTeacherResetPwd(){
+      this.$set(this,'reviseOpen',false);
+    },
+    //重置密码
+    teacherResetPwd(){
+      let obj = {
+        userId:this.userId
+      }
+      systemUserResetPasswd(obj).then(response => {
+        this.reviseOpen = false;
+        this.msgSuccess(response.message);
+      });
+    },
+    //启用/停用
+    stateChange(row){
+      let text = row.state === "0" ? "启用" : "停用";
+      this.$confirm('确认要' + text + '"' + row.userName + '"?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function() {
+        return systemUserEditState({userId:row.userId, state:!row.state});
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("操作成功");
+      }).catch(function() {
+      });
+    },
+    //获取学院列表&学生类别查询
+    getAll(){
+      //获取学院列表
+      getDeptDropList({level:2,deptType:1}).then(response => {
+        this.collegeOptions = response.data;
+      });
+      //学生类别查询
+      getDicts('education').then(response => {
+        this.educationOptions = response.data;
+      });
+    },
+    outPage(){
+      this.pageType = 1;
+      this.getList();
+    },
+    //新增按钮
+    addButton(){
+      this.pageType = 2;
+      this.propsData = {};
+      this.titleName = '新增学生';
+      this.editType = false;
+    },
+    //详情按钮
+    infoButton(row){
+      systemUserDetail({userId:row.userId}).then(response => {
+        this.propsData = response.data;
+        this.titleName = '学生详情';
+        this.editType = true;
+        this.pageType = 2;
+      });
+    },
+    //更多选项
+    moreClick(item){
+      let self = this;
+      if(item.command == 1){
+        systemUserDetail({userId:item.row.userId}).then(response => {
+          this.titleName = '学生编辑';
+          this.propsData = response.data;
+          this.editType = false;
+          this.pageType = 2;
+        });
+      }else if(item.command == 2){
+        const userIds = item.row.userId || this.ids;
+        this.$confirm('确认删除"'+item.row.userName+'"?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return systemUserDelete({userId:userIds});
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(() => {});
+      }else if(item.command == 3){
+        this.reset();
+        this.title = "重置密码";
+        this.userId = item.row.userId;
+        this.reviseOpen = true;
+      }
+    },
+    //=========表格扩展选择器方法---开始=========
+    /*===记录勾选数据===
+      需要再el-table 添加  :row-key="getRowKeys"
+      需要在selection 添加 :reserve-selection="true"
+    */
+    getRowKeys(row) {
+      return row.userId
+    },
+    //=========表格扩展选择器方法---结束=========
+    /** 查询用户列表 */
+    getList() {
+      this.loading = true;
+      let obj = JSON.parse(JSON.stringify(this.queryParams))
+      systemUserList(obj).then(response => {
+          this.userList = response.data.records;
+          this.total = response.data.total;
+          this.loading = false;
+        }
+      );
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        userId: undefined,
+        deptId: undefined,
+        userName: undefined,
+        nickName: undefined,
+        password: undefined,
+        newPassword: undefined,
+        phonenumber: undefined,
+        email: undefined,
+        sex: undefined,
+        status: "0",
+        remark: undefined,
+        postIds: [],
+        roleIds: []
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.pageType = 1;
+      this.queryParams.page = 1;
+      this.$set(this,"selectedNum",0);
+      this.$refs.multipleTable.clearSelection()
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      // this.resetForm("queryForm");
+      this.$set(this,'queryParams',{
+        page: 1,
+        pageSize:20,
+        deptId:"",
+        searchValue: "",
+        state: "",
+        cardNumSimple: "",
+        userType:2,
+      });
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.selectedNum = selection.length;
+      this.ids = selection.map(item => item.userId);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const userId = row.userId || this.ids;
+      getUser(userId).then(response => {
+        this.form = response.data;
+        this.postOptions = response.posts;
+        this.roleOptions = response.roles;
+        this.form.postIds = response.postIds;
+        this.form.roleIds = response.roleIds;
+        this.open = true;
+        this.title = "修改用户";
+        this.form.password = "";
+      });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+        debugger
+      this.$refs["addForm"].validate(valid => {
+        if (valid) {
+          if (this.addForm.userId != undefined) {
+            console.log("this.addForm",this.addForm)
+            this.subForm=this.addForm;
+            if(!(!isNaN(this.addForm.tutorUserId) && typeof this.addForm.tutorUserId === 'number')){
+                this.subForm.tutorUserId=this.addForm.tmpTutorUserId;
+            }
+            updateUser(this.subForm).then(response => {
+              this.msgSuccess("修改成功");
+              this.addStudentType = false;
+              this.getList();
+            });
+          } else {
+            this.addForm.password = '123456';
+            addUser(this.addForm).then(response => {
+              this.msgSuccess("新增成功");
+              this.addStudentType = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    //导入页面关闭
+    importOpenOff(){
+      this.importOpen = false;
+      this.getImportData.downFile = false;
+      this.getImportData.successNum = 0;
+      this.getImportData.failureNum = 0;
+      this.getImportData.textName = "";
+    },
+    /** 导入按钮操作 */
+    importButton(item){
+      if(item.command == 1){
+        //  下载模板
+        this.download('/system/user/student/importTemplate', {}, `导入模板.xlsx`)
+      }else if(item.command == 2){
+        //  导入数据
+        console.log('导入数据');
+        this.importOpen = true;
+      }
+    },
+    /** 当前时间 */
+    getCurrentTime () {
+      const yy = new Date().getFullYear()
+      const mm = new Date().getMonth() + 1
+      const dd = new Date().getDate()
+      const hh = new Date().getHours()
+      const mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes()
+      const ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds()
+      return yy + '-' + mm + '-' + dd
+    },
+    /** 导出按钮操作 */
+    exportButton(item) {
+      let self = this;
+      this.currentDate=this.getCurrentTime()
+      if(item.command == 1){
+        self.$confirm(`确认导出全部数据?`, "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(async () => {
+          self.download('/system/user/student/export/', {...self.queryParams}, '学生信息-'+this.currentDate+'.xlsx')
+        }).catch(() => {})
+      }else if(item.command == 2){
+        if(self.ids.length>0) {
+          self.$confirm(`确认导出选中数据?`, "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(async () => {
+            let ids = self.ids.join(',');
+            let obj = {
+              ids :ids
+            }
+            self.download(`/system/user/student/export/`,obj, '学生信息-'+this.currentDate+'.xlsx')
+          }).catch(() => {})
+        }else {
+          Message({
+            message: "请选择要导出的数据",
+            type: 'error'
+          });
+        }
+      }
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download('/system/user/student/importTemplate', {}, `导入模板.xlsx`)
+    },
+    /*下载失败列表*/
+    failureExcel(){
+      this.download('/system/user/student/importErrorData', {}, `失败报表.xlsx`)
+    },
+    //****************************************导入功能**************************************
+    handleAvatarSuccess(res, file) {
+      if(res.code == 200){
+        this.getImportData.downFile = res.data.downFile
+        this.getImportData.successNum = res.data.successNum
+        this.getImportData.failureNum = res.data.failureNum
+        // this.importOpen = false;
+        // this.getList();
+      }else{
+        this.msgError(res.message);
+      }
+      this.loading = false;
+    },
+    beforeAvatarUpload(file) {
+      let type = false;
+      console.log('file',file);
+      if (file.type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' || file.type == 'application/vnd.ms-excel') {
+        this.getImportData.textName = file.name;
+        type = true;
+        this.loading = true;
+      }else{
+        this.$message.error('只能上传xls/xlsx格式文件');
+        type = false;
+      }
+      return type;
+    },
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  .student {
+    display: flex!important;
+    flex-direction: column;
+    overflow: hidden!important;
+    .sheet-expand-box{
+      height:40px;
+      display:flex;
+      background:rgba(1,131,250,0.1);
+      border-radius: 5px;
+      margin-bottom:18px;
+      font-size:14px;
+      i{
+        margin:10px 16px 0 14px;
+        height:20px;
+        width:20px;
+        font-size:20px;
+        display: block;
+      }
+      p{
+        margin:0;
+      }
+      p:nth-child(2){
+        width:132px;
+        font-size:14px;
+        height:40px;
+        line-height:40px;
+      }
+      p:nth-child(3){
+        width:60px;
+        font-size:14px;
+        height:40px;
+        line-height:40px;
+        margin-right:20px;
+      }
+      p:nth-child(4){
+        width:60px;
+        font-size:14px;
+        height:40px;
+        line-height:40px;
+        margin-right:20px;
+      }
+      p:nth-child(5){
+        font-size:14px;
+        line-height:30px;
+        width: 100px;
+        height: 30px;
+        border-radius: 6px;
+        text-align: center;
+        margin-top:5px;
+        margin-right:20px;
+      }
+      p:nth-child(6){
+        font-size:14px;
+        line-height:30px;
+        width: 100px;
+        height: 30px;
+        border-radius: 6px;
+        text-align: center;
+        margin-top:5px;
+      }
+    }
+    .button-box{
+      width:300px;
+      display: flex;
+    }
+    .data-max-box{
+      position:relative;
+      margin-top:-20px;
+      p{
+        margin:0;
+      }
+      .info-title-p{
+        line-height:80px;
+        font-size:18px;
+        padding-left:20px;
+        border-bottom:1px solid #E0E0E0;
+      }
+      .info-data-box{
+        height:100px;
+        display:flex;
+        padding-left:20px;
+        p{
+          width:270px;
+          line-height:60px;
+          font-size:16px;
+        }
+      }
+      .reset-button-p{
+        position: absolute;
+        right:0;
+        top:20px;
+        cursor: pointer;
+        text-align: center;
+        width: 70px;
+        height: 40px;
+        line-height: 40px;
+        border-radius: 6px;
+        font-size:14px;
+        border: 1px solid #DCDFE6;
+        color: #606266;
+        background: #ffffff;
+      }
+    }
+    .student-one-box{
+      flex:1;
+      display: flex;
+      flex-direction: column;
+      overflow: hidden!important;
+      box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+      padding:20px!important;
+      .top-max-box{
+        flex:1;
+        display: flex;
+        overflow: hidden!important;
+        .left-max-box{
+          width:250px;
+        }
+        .center-max-box{
+          border-right:2px dashed #E0E0E0;
+          margin-right:50px;
+          margin-top:20px;
+        }
+        .right-max-box{
+          flex:1;
+          display: flex;
+          flex-direction: column;
+          overflow: hidden!important;
+          .min-list-box{
+            flex: 1;
+            overflow: hidden!important;
+            display: flex;
+            margin-bottom:15px;
+          }
+        }
+      }
+      .bottom-max-box{
+        height:35px;
+      }
+      .form-box{
+        .form-dropdown-box{
+          display: flex;
+          margin:0;
+          padding:0 10px;
+          cursor: pointer;
+          height:40px;
+          img:nth-child(1){
+            width:16px;
+            height:16px;
+            margin-top:12px;
+          }
+          p{
+            width:47px;
+            text-align: center;
+            font-size:14px;
+            margin:0;
+            line-height:40px;
+          }
+          img:nth-child(3){
+            width:10px;
+            height:6px;
+            margin-top:17px;
+          }
+        }
+      }
+    }
+  }
+</style>
+<style lang="scss">
+  .teacher-revise-dialog-box{
+    .teacher-text-p{
+      margin-left:110px;
+      font-size:16px;
+    }
+    .teacher-revise-dialog-button-box{
+      display: flex;
+      width:190px;
+      margin:0 auto;
+      p{
+        margin:0;
+        width:70px;
+        height:30px;
+        line-height:30px;
+        font-size:14px;
+      }
+      p:nth-child(1){
+        margin-right:50px;
+      }
+    }
+  }
+  .teacher-import-dialog-box{
+    .teacher-import-dialog-upLoad-box{
+      .el-upload{
+        width:450px;
+        margin:0 55px;
+        .el-upload-dragger{
+          width:450px;
+          .el-icon-upload{
+            font-size:100px;
+            color:#CBE6FE;
+          }
+          .el-upload__text{
+            margin-top:20px;
+          }
+        }
+      }
+      .el-upload__tip{
+        margin-left:60px;
+        font-size:14px;
+        margin-top:10px;
+      }
+      .el-upload-text-box{
+        background: #F5F5F5;
+        border-radius: 10px;
+        margin:15px 30px 0;
+        padding:0 20px 15px;
+        overflow: hidden;
+        *{
+          margin:0;
+        }
+        .img-text-box{
+          display: flex;
+          margin-top:15px;
+          img{
+            width:16px;
+            height:16px;
+            margin-right:13px;
+          }
+          p{
+            height:16px;
+            line-height:16px;
+            font-size:12px;
+          }
+        }
+        .text-p{
+          margin-top:15px;
+          margin-left:29px;
+          height:16px;
+          line-height:16px;
+          font-size:12px;
+        }
+      }
+    }
+    .teacher-import-dialog-button-box{
+      display: flex;
+      width:190px;
+      margin:0 auto;
+      p{
+        width:70px;
+        height:30px;
+        line-height:30px;
+        font-size:14px;
+        margin:0 auto;
+      }
+    }
+    .teacher-import-dialog-position-box{
+      width:100%;
+      height:100%;
+      position: absolute;
+      top:0;
+      left:0;
+      z-index: 999;
+      background: rgba(255,255,255,0.4);
+      border-radius:20px;
+    }
+  }
+</style>
+<style lang="scss">
+  .student{
+    .student-one-box{
+      .switch .el-switch__label {
+        position: absolute;
+        display: none;
+        color: #fff !important;
+      }
+      .switch .el-switch__label--right {
+        z-index: 1;
+      }
+      .switch .el-switch__label--right span{
+        margin-left: 10px;
+      }
+      .switch .el-switch__label--left {
+        z-index: 1;
+      }
+      .switch .el-switch__label--left span{
+        margin-left: 24px;
+      }
+      .switch .el-switch__label.is-active {
+        display: block;
+      }
+      .switch.el-switch .el-switch__core,
+      .el-switch .el-switch__label {
+        width: 64px !important;
+        margin: 0;
+      }
+    }
+  }
+</style>

Plik diff jest za duży
+ 85 - 697
src/views/laboratoryManagement/personnelManage/teacherInfo/addPage.vue


+ 29 - 19
src/views/laboratoryManagement/personnelManage/teacherInfo/bindingCardPage.vue

@@ -6,16 +6,16 @@
       <div class="watch-head-box">
         <p>姓名</p>
         <p>工号</p>
-        <p>部门</p>
+        <!--<p>部门</p>-->
         <p>手机号码</p>
         <p>校园卡号</p>
       </div>
       <div class="center-max-big-box scrollbar-box">
         <div class="watch-data-list" v-for="(item,index) in watchList" :key="index">
-          <p>{{item.nickName}}</p>
           <p>{{item.userName}}</p>
-          <p>{{item.deptName}}</p>
-          <p>{{item.phonenumber}}</p>
+          <p>{{item.account}}</p>
+          <!--<p>{{item.deptName}}</p>-->
+          <p>{{item.mobile}}</p>
           <div class="input-big-box">
             <el-input class="input-box" type="text"
                       maxLength="30"
@@ -37,6 +37,9 @@
 
 <script>
   import { teacherBatchSelect, teacherUpdateCardNum } from "@/apiDemo/system/user_teacher";
+  //V3新
+  import { systemUserSelect } from "@/api/commonality/permission";
+  import { systemUserBatchBindCard } from "@/api/laboratoryManagement/index";
   export default {
     name: 'bindingCardPage',
     props:{
@@ -51,12 +54,17 @@
 
     },
     mounted(){
-      this.teacherBatchSelect();
+      this.systemUserSelect();
     },
     methods:{
       //批量获取老师数据
-      teacherBatchSelect(){
-        teacherBatchSelect(this.ids).then(response => {
+      systemUserSelect(){
+        let obj = {
+          userType:1,
+          pageSize:50,
+          userIds:this.ids
+        }
+        systemUserSelect(obj).then(response => {
           this.watchList = response.data;
           this.getInitialization();
         })
@@ -79,12 +87,13 @@
               list.push(obj);
             }
           }
-          teacherUpdateCardNum(list).then(response => {
-            if(response.data.repeatCard == 0){
-              this.msgSuccess(response.msg);
-              this.$parent.handleQuery();
+          // list = JSON.parse(JSON.stringify(list))
+          systemUserBatchBindCard(list).then(response => {
+            if(response.data){
+                this.repeatMark(response.data);
             }else{
-              this.repeatMark(response.data.repeatList);
+              this.msgSuccess(response.message);
+              this.$parent.handleQuery();
             }
           })
         }
@@ -118,6 +127,7 @@
         let self = this;
         for(let i=0;i<self.watchList.length;i++){
           self.watchList[i].cardType = 0;
+          self.watchList[i].cardNum = self.watchList[i].cardNumSimple;
         }
         this.$forceUpdate();
       },
@@ -126,7 +136,7 @@
         let self = this;
         for(let i=0;i<list.length;i++){
           for(let o=0;o<self.watchList.length;o++){
-            if(list[i] == self.watchList[o].cardNum){
+            if(list[i].cardNum == self.watchList[o].cardNum){
               self.watchList[o].cardType = 1;
             }
           }
@@ -167,13 +177,13 @@
         font-weight: 600;
       }
       p:nth-child(1){
-        width:200px;
+        width:300px;
       }
       p:nth-child(2){
-        width:200px;
+        width:300px;
       }
       p:nth-child(3){
-        width:200px;
+        width:300px;
       }
       p:nth-child(4){
         width:300px;
@@ -193,13 +203,13 @@
           font-size:16px;
         }
         p:nth-child(1){
-          width:200px;
+          width:300px;
         }
         p:nth-child(2){
-          width:200px;
+          width:300px;
         }
         p:nth-child(3){
-          width:200px;
+          width:300px;
         }
         p:nth-child(4){
           width:300px;

+ 0 - 103
src/views/laboratoryManagement/personnelManage/teacherInfo/differenceComponent/addPageSubPagePublic.vue

@@ -1,103 +0,0 @@
-<template>
-  <p class="inquire-button-one" @click="upDataButton">提交</p>
-</template>
-
-<script>
-  import { addUserTeacher, putUserTeacherNew } from "@/apiDemo/system/user_teacher";
-  export default {
-    name: 'addPageSubPagePublic',
-    methods:{
-      upDataButton(){
-        this.$parent.upDataButton();
-        // let self = this;
-        // self.$parent.$refs["form"].validate(valid => {
-        //   if (valid) {
-        //     if(self.$parent.form.email){
-        //       let re = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
-        //       if(!re.test(self.$parent.form.email)){
-        //         self.msgError('请输入正确的邮箱地址')
-        //         return
-        //       }
-        //     }
-        //     let list = self.$parent.toArray();
-        //     let obj = JSON.parse(JSON.stringify(self.$parent.form));
-        //     obj.roleIds = self.$parent.form.position?self.$parent.form.roleIds:[];
-        //     // obj.position = obj.position+'';
-        //     obj.permitMenus = [];
-        //     if(obj.status == 0){
-        //       for(let i=0;i<list.length;i++){
-        //         let minObj = {
-        //           menuId:list[i].menuId,
-        //         }
-        //         if(list[i].dataScope){
-        //           minObj.dataScope = list[i].dataScope
-        //           if(list[i].dataScope == 3){
-        //             minObj.deptIds = list[i].deptIds;
-        //             minObj.deptIdsList = list[i].deptIdsList;
-        //           }
-        //         }else{
-        //           minObj.dataScope = 0
-        //         }
-        //         obj.permitMenus.push(minObj)
-        //       }
-        //     }
-        //     if(self.$parent.propsData.userId){
-        //       //修改
-        //       obj.userId = self.$parent.propsData.userId;
-        //       self.putUserTeacherNew(obj);
-        //     }else{
-        //       //发布
-        //       self.addUserTeacher(obj);
-        //     }
-        //   }
-        // });
-      },
-      putUserTeacherNew(obj){
-        let self = this;
-        putUserTeacherNew(obj).then(response => {
-          if(response.code == 200){
-            self.msgSuccess(response.msg);
-            self.$parent.outPageButton();
-          }else if(response.code==205){
-            self.$confirm(response.msg, "警告", {
-              confirmButtonText: "确定",
-              cancelButtonText: "取消",
-              type: "warning"
-            }).then(() => {
-              //  确定
-              self.$router.push({ path: '/comprehensive/laboratoryManagement/accessAuthorization' });
-            }).catch(function() {
-              //  取消
-              self.$parent.outPageButton();
-            });
-          }
-        });
-      },
-      addUserTeacher(obj){
-        let self = this;
-        addUserTeacher(obj).then(response => {
-          if(response.code == 200){
-            self.msgSuccess(response.msg);
-            self.$parent.outPageButton();
-          }else if(response.code==205){
-            self.$confirm(response.msg, "警告", {
-              confirmButtonText: "确定",
-              cancelButtonText: "取消",
-              type: "warning"
-            }).then(() => {
-              //  确定
-              self.$router.push({ path: '/comprehensive/laboratoryManagement/accessAuthorization' });
-            }).catch(function() {
-              //  取消
-              self.$parent.outPageButton();
-            });
-          }
-        });
-      },
-    }
-  }
-</script>
-
-<style scoped>
-
-</style>

+ 0 - 79
src/views/laboratoryManagement/personnelManage/teacherInfo/differenceComponent/addPageSubPageSZDX.vue

@@ -1,79 +0,0 @@
-<template>
-  <p class="inquire-button-one" @click="upDataButton">提交</p>
-</template>
-
-<script>
-  import { addUserTeacher, putUserTeacherNew } from "@/apiDemo/system/user_teacher";
-  export default {
-    name: 'addPageSubPageSZDX',
-    methods:{
-      upDataButton(){
-        this.$parent.upDataButton();
-        // let self = this;
-        // self.$parent.$refs["form"].validate(valid => {
-        //   if (valid) {
-        //     if(self.$parent.form.email){
-        //       let re = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
-        //       if(!re.test(self.$parent.form.email)){
-        //         self.msgError('请输入正确的邮箱地址')
-        //         return
-        //       }
-        //     }
-        //     let list = self.$parent.toArray();
-        //     let obj = JSON.parse(JSON.stringify(self.$parent.form));
-        //     obj.roleIds = self.$parent.form.position?self.$parent.form.roleIds:[];
-        //     // obj.position = obj.position+'';
-        //     obj.permitMenus = [];
-        //     if(obj.status == 0){
-        //       for(let i=0;i<list.length;i++){
-        //         let minObj = {
-        //           menuId:list[i].menuId,
-        //         }
-        //         if(list[i].dataScope){
-        //           minObj.dataScope = list[i].dataScope
-        //           if(list[i].dataScope == 3){
-        //             minObj.deptIds = list[i].deptIds;
-        //             minObj.deptIdsList = list[i].deptIdsList;
-        //           }
-        //         }else{
-        //           minObj.dataScope = 0
-        //         }
-        //         obj.permitMenus.push(minObj)
-        //       }
-        //     }
-        //     if(self.$parent.propsData.userId){
-        //       //修改
-        //       obj.userId = self.$parent.propsData.userId;
-        //       self.putUserTeacherNew(obj);
-        //     }else{
-        //       //发布
-        //       self.addUserTeacher(obj);
-        //     }
-        //   }
-        // });
-      },
-      putUserTeacherNew(obj){
-        let self = this;
-        putUserTeacherNew(obj).then(response => {
-          if(response.code == 200){
-            self.msgSuccess(response.msg);
-            self.$parent.outPageButton();
-          }
-        });
-      },
-      addUserTeacher(obj){
-        let self = this;
-        addUserTeacher(obj).then(response => {
-          if(response.code == 200){
-            self.msgSuccess(response.msg);
-            self.$parent.outPageButton();
-          }
-        });
-      },
-    }
-  }
-</script>
-
-<style scoped>
-
-</style>

+ 157 - 212
src/views/laboratoryManagement/personnelManage/teacherInfo/index.vue

@@ -55,21 +55,20 @@
         <div class="center-max-box"></div>
         <div class="teacher-right-max-box">
           <el-form :model="queryParams" class="form-box" ref="queryForm" :inline="true" v-show="showSearch">
-            <!--v-hasPermi="['laboratory:plan:add']"-->
-
             <el-form-item label="关键字" prop="searchValue" label-width="54px">
               <el-input
                 maxLength="20"
                 v-model="queryParams.searchValue"
                 placeholder="姓名/工号/电话"
-                style="width: 130px"
+                style="width: 150px"
               />
             </el-form-item>
-            <el-form-item label="状态" prop="nature" label-width="40px">
+            <el-form-item label="状态" prop="userState" label-width="40px">
               <el-select
-                v-model="queryParams.nature"
+                v-model="queryParams.userState"
                 placeholder="请选择"
                 clearable
+                style="width: 150px"
               >
                 <el-option
                   v-for="dict in workClass"
@@ -79,25 +78,12 @@
                 />
               </el-select>
             </el-form-item>
-            <el-form-item label="检查者" prop="isCheck" label-width="54px">
-              <el-select
-                v-model="queryParams.isCheck"
-                placeholder="请选择"
-                clearable
-              >
-                <el-option
-                  v-for="dict in userTypeList"
-                  :key="dict.id"
-                  :label="dict.name"
-                  :value="dict.id"
-                />
-              </el-select>
-            </el-form-item>
             <el-form-item label="校园卡" prop="cardNumSimple" label-width="54px">
               <el-select
                 v-model="queryParams.cardNumSimple"
                 placeholder="请选择"
                 clearable
+                style="width: 150px"
               >
                 <el-option
                   v-for="dict in postionList"
@@ -156,25 +142,25 @@
             <el-table :data="userList" border @selection-change="handleSelectionChange" ref="multipleTable" :row-key="getRowKeys">
               <el-table-column type="selection" width="50" :reserve-selection="true" align="center"/>
               <el-table-column label="序号"  width="50" align="center"  type="index"/>
-              <el-table-column label="姓名" align="left"  prop="nickName" width="100" show-overflow-tooltip>
+              <el-table-column label="姓名" align="left"  prop="userName" show-overflow-tooltip>
               </el-table-column>
-              <el-table-column label="工号" align="left" prop="userName" width="180">
+              <el-table-column label="工号" align="left" prop="account" width="180">
                 <template slot-scope="scope">
                   <div style="display: flex">
-                    <el-tooltip class="item" effect="dark" :disabled="scope.row.userName.length>7?false:true" :content="scope.row.userName" placement="top">
+                    <el-tooltip class="item" effect="dark" :disabled="scope.row.account.length>7?false:true" :content="scope.row.account" placement="top">
                       <span style="height:23px;width:80px;margin-right:10px;overflow:hidden">
-                          {{scope.row.userName.length>7?scope.row.userName[0]+scope.row.userName[1]+scope.row.userName[2]+scope.row.userName[3]+scope.row.userName[4]+scope.row.userName[5]+scope.row.userName[6]+'...':scope.row.userName}}
+                          {{scope.row.account.length>7?scope.row.account[0]+scope.row.account[1]+scope.row.account[2]+scope.row.account[3]+scope.row.account[4]+scope.row.account[5]+scope.row.account[6]+'...':scope.row.account}}
                       </span>
                     </el-tooltip>
                     <el-switch
-                      v-if="scope.row.nature==0"
-                      @click.native="statusCaptcha(scope.row)"
+                      v-if="scope.row.userState"
+                      @click.native="stateChange(scope.row)"
                       class="switch captcha-img"
-                      active-value="0"
-                      inactive-value="1"
+                      :active-value="true"
+                      :inactive-value="false"
                       active-color="#0183FA"
                       inactive-color="#999"
-                      v-model="scope.row.status"
+                      v-model="scope.row.state"
                       active-text="启用"
                       inactive-text="停用"
                       disabled
@@ -182,21 +168,25 @@
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column label="手机号码" align="left" prop="phonenumber" width="130" show-overflow-tooltip/>
+              <el-table-column label="手机号码" align="left" prop="mobile" width="130" show-overflow-tooltip/>
               <el-table-column label="所在部门" align="left" prop="deptName" width="110" show-overflow-tooltip/>
               <el-table-column label="身份" align="left" prop="positionName" width="110" show-overflow-tooltip/>
-              <el-table-column label="创建时间" align="left" prop="createTimeStr" show-overflow-tooltip/>
+              <el-table-column label="创建时间" align="left" prop="createTime" width="160" show-overflow-tooltip>
+                <template slot-scope="scope">
+                  <span>{{ parseTime(scope.row.createTime) }}</span>
+                </template>
+              </el-table-column>
               <el-table-column label="在职状态" align="left" prop="userName" width="100">
                 <template slot-scope="scope">
                   <p style="width:64px;margin:0 auto;">
                     <el-switch
-                      @click.native="natureCaptcha(scope.row)"
+                      @click.native="userStateChange(scope.row)"
                       class="switch captcha-img"
-                      active-value="0"
-                      inactive-value="1"
+                      :active-value="true"
+                      :inactive-value="false"
                       active-color="#29B24D"
                       inactive-color="#999"
-                      v-model="scope.row.nature"
+                      v-model="scope.row.userState"
                       active-text="在职"
                       inactive-text="离职"
                       disabled
@@ -204,11 +194,6 @@
                   </p>
                 </template>
               </el-table-column>
-              <el-table-column label="检查者" align="center" prop="isCheck" width="70" show-overflow-tooltip>
-                <template slot-scope="scope">
-                  <span>{{scope.row.isCheck == 0?'否':(scope.row.isCheck == 1?'是':'')}}</span>
-                </template>
-              </el-table-column>
               <el-table-column label="操作" align="left" width="160" class-name="small-padding fixed-width" v-if="tableButtonType">
                 <template slot-scope="scope">
                   <div class="table-button-box">
@@ -244,7 +229,7 @@
                   v-show="total>0"
                   :total="total"
                   style="margin:0;"
-                  :page.sync="queryParams.pageNum"
+                  :page.sync="queryParams.page"
                   :limit.sync="queryParams.pageSize"
                   @pagination="getList"
                 />
@@ -392,8 +377,9 @@
   import addPage from "./addPage.vue"
   import bindingCardPage from "./bindingCardPage.vue"
   //V3新
-  import { setDeptAdd,setDeptUpdate,setDeptDelete,setDeptSort } from "@/api/laboratoryManagement/index";
-  import { getDeptList } from "@/api/commonality/permission";
+  import { setDeptAdd,setDeptUpdate,setDeptDelete,setDeptSort,getDeptList,
+    systemUserList,systemUserEditState,systemUserResetPasswd,systemUserDelete,
+    systemUserDetail,} from "@/api/commonality/permission";
 
   export default {
     name: "User",
@@ -461,8 +447,6 @@
         dateRange: [],
         // 职称字典
         professional: [],
-        // 工作性质字典
-        workClass:[],
         // 是否是检查者
         userTypeList:[
           {
@@ -488,12 +472,13 @@
         form: {},
         // 查询参数
         queryParams: {
-          pageNum: 1,
+          page: 1,
           pageSize:20,
+          deptId:"",
           searchValue: "",
+          userState: "",
           cardNumSimple: "",
-          nature: "",
-          isCheck: "",
+          userType:1,
         },
         // 列信息
         columns: [
@@ -557,6 +542,17 @@
         laboratoryList:[],
         //学院列表
         deptList:[],
+        // 工作性质字典
+        workClass:[
+          {
+            dictLabel:"离职",
+            dictValue:false,
+          },
+          {
+            dictLabel:"在职",
+            dictValue:true,
+          },
+        ],
         //职位列表
         postionList: [
           {
@@ -617,26 +613,7 @@
     },
     created() {
       this.getDeptList();
-      /*
       this.getList();
-      this.getTreeselect();
-      this.getDeptList();
-      //工作性质
-      this.getDicts("work_class").then(response => {
-        this.workClass = response.data;
-      });
-      //性别
-      this.getDicts("sys_user_sex").then(response => {
-        this.sexOptions = response.data;
-      });
-      //文化程度
-      this.getDicts("education").then(response => {
-        this.educationList = response.data;
-      });
-      this.getConfigKey("sys.user.initPassword").then(response => {
-        this.initPassword = response.msg;
-      });
-      */
     },
     methods: {
       /*===========V3开始===========*/
@@ -863,6 +840,42 @@
         }
         return list
       },
+      /** 查询用户列表 */
+      getList() {
+        this.loading = true;
+        let obj = JSON.parse(JSON.stringify(this.queryParams))
+        systemUserList(obj).then(response => {
+            this.userList = response.data.records;
+            this.total = response.data.total;
+            this.loading = false;
+          }
+        );
+      },
+      //操作启用停用开关
+      stateChange(row){
+        let text = row.state === "0" ? "启用" : "停用";
+        this.$confirm('确认要' + text + '"' + row.userName + '"?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return systemUserEditState({userId:row.userId, state:!row.state});
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("操作成功");
+        }).catch(function() {
+        });
+      },
+      //重置密码
+      teacherResetPwd(){
+        let obj = {
+          userId:this.userId
+        }
+        systemUserResetPasswd(obj).then(response => {
+          this.reviseOpen = false;
+          this.msgSuccess(response.message);
+        });
+      },
       /*===========V3结束===========*/
       //批量绑卡页面跳转与数量检测
       bindingCard(){
@@ -888,36 +901,26 @@
           list.push(obj);
         }
         editUserByDept(list).then(response => {
-          this.msgSuccess(response.msg)
+          this.msgSuccess(response.message)
           this.$refs.userOpen.show();
           this.getList();
           this.getTreeselect();
           this.delTreeForm();
         });
       },
-      //操作启用停用开关
-      statusCaptcha(row){
-        let obj = {
-          userId:row.userId,//用户id
-          userName:row.userName,//用户账户
-          status:row.status == 1?'0':'1',//账户启用停用,0是启用,1是停用
-        };
-        putUserTeacher(obj).then(response => {
-          row.status = row.status == 1?'0':'1';
-          this.msgSuccess(response.msg)
-        });
-      },
       //操作在职开关
-      natureCaptcha(row){
-        let obj = {
-          userId:row.userId,//用户id
-          userName:row.userName,//用户账户
-          nature:row.nature == 1?'0':'1',//账户启用停用,0是在职,1是离职
-        };
-        editNatureLinkage(obj).then(response => {
-          this.msgSuccess(response.msg)
+      userStateChange(row){
+        let text = row.state === "0" ? "启用" : "停用";
+        this.$confirm('确认要' + text + '"' + row.userName + '"?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return systemUserEditState({userId:row.userId, userState:!row.userState});
+        }).then(() => {
           this.getList();
-
+          this.msgSuccess("操作成功");
+        }).catch(function() {
         });
       },
       //****************************************导入功能**************************************
@@ -929,7 +932,7 @@
           // this.importOpen = false;
           // this.getList();
         }else{
-          this.msgError(res.msg);
+          this.msgError(res.message);
         }
         this.loading = false;
       },
@@ -946,19 +949,6 @@
         }
         return type;
       },
-      /** 查询职位列表 */
-      getPostionList() {
-        allListPost().then(response => {
-          console.log(",IIIIIIIIIIIIIIIIIIIIIIIII",response.data)
-          this.$set(this, 'postionList', response.data)
-        });
-      },
-      /** 查询学院列表 */
-      // getDeptList() {
-      //   listDepartments().then(response => {
-      //     this.$set(this, 'deptList', response.data)
-      //   });
-      // },
       outPage(){
         this.pageType = 1;
         this.getList();
@@ -972,7 +962,7 @@
       },
       //详情按钮
       infoButton(row){
-        getTeacherInfo(row.userId).then(response => {
+        systemUserDetail({userId:row.userId}).then(response => {
           this.propsData = response.data;
           this.titleName = '教职工详情';
           this.editType = true;
@@ -983,25 +973,24 @@
       moreClick(item){
         let self = this;
         if(item.command == 1){
-          getTeacherInfo(item.row.userId).then(response => {
+          systemUserDetail({userId:item.row.userId}).then(response => {
             this.titleName = '教职工编辑';
             this.propsData = response.data;
-            this.propsData.roleIds = response.roleIds;
             this.editType = false;
             this.pageType = 2;
           });
         }else if(item.command == 2){
-          this.$confirm('确认要删除吗?', "警告", {
+          const userIds = item.row.userId || this.ids;
+          this.$confirm('确认删除"'+item.row.userName+'"?', "警告", {
             confirmButtonText: "确定",
             cancelButtonText: "取消",
             type: "warning"
+          }).then(function() {
+            return systemUserDelete({userId:userIds});
           }).then(() => {
-            //  确定
-            delTeacher(item.row.userId).then(response => {
-              self.msgSuccess(response.msg);
-              self.getList();
-            });
-          }).catch(function() {});
+            this.getList();
+            this.msgSuccess("删除成功");
+          }).catch(() => {});
         }else if(item.command == 3){
           this.userId = item.row.userId;
           this.reset();
@@ -1012,15 +1001,6 @@
       offTeacherResetPwd(){
         this.$set(this,'reviseOpen',false);
       },
-      teacherResetPwd(){
-        let obj = {
-          userId:this.userId
-        }
-        teacherResetPwd(obj).then(response => {
-          this.reviseOpen = false;
-          this.msgSuccess(response.msg);
-        });
-      },
       /*===记录勾选数据===
         需要再el-table 添加  :row-key="getRowKeys"
         需要在selection 添加 :reserve-selection="true"
@@ -1029,16 +1009,6 @@
         return row.userId
       },
       //=========表格扩展选择器方法---结束=========
-      /** 查询用户列表 */
-      getList() {
-        this.loading = true;
-        listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
-            this.$set(this,'userList',response.rows);
-            this.total = response.total;
-            this.loading = false;
-          }
-        );
-      },
       /** 查询部门下拉树结构 */
       getTreeselect() {
         let obj = {
@@ -1053,21 +1023,6 @@
         this.open = false;
         // this.reset();
       },
-      addReset(){
-        this.addForm = {
-          userId: undefined,
-          nickName: undefined,
-          userName: undefined,
-          deptId: undefined,
-          sex: undefined,
-          phonenumber: undefined,
-          email: undefined,
-          major: undefined,
-          grade: undefined,
-          category: undefined,
-          tutorUserId: undefined,
-        };
-      },
       // 表单重置
       reset() {
         this.form = {
@@ -1089,7 +1044,7 @@
       /** 搜索按钮操作 */
       handleQuery() {
         this.pageType = 1;
-        this.queryParams.pageNum = 1;
+        this.queryParams.page = 1;
         this.$set(this,"selectedNum",0);
         this.$refs.multipleTable.clearSelection()
         this.getList();
@@ -1099,13 +1054,15 @@
         this.dateRange = [];
         // this.resetForm("queryForm");
         this.$set(this,'queryParams',{
-          pageNum: 1,
+          page: 1,
           pageSize:20,
+          deptId:"",
           searchValue: "",
+          userState: "",
           cardNumSimple: "",
-          nature: "",
-          isCheck: "",
+          userType:1,
         });
+        this.getDeptList();
         this.handleQuery();
       },
       // 多选框选中数据
@@ -1427,76 +1384,64 @@
         }
       }
     }
-  }
-</style>
-<style lang="scss">
-  .teacher-right-max-box{
-    .form-box{
-      .el-select{
-        width:90px !important;
-        > .el-input{
-          width:90px !important;
+    ::v-deep .teacher-right-max-box{
+      .form-box{
+        .form-dropdown-box{
+          display: flex;
+          margin:0;
+          padding:0 5px 0 0;
+          cursor: pointer;
+          height:40px;
+          img:nth-child(1){
+            width:16px;
+            height:16px;
+            margin-top:12px;
+          }
+          p{
+            width:47px;
+            text-align: center;
+            font-size:14px;
+            margin:0;
+            line-height:40px;
+          }
+          img:nth-child(3){
+            width:10px;
+            height:6px;
+            margin-top:17px;
+          }
         }
       }
-    }
-  }
-  .teacher-right-max-box{
-    .form-box{
-      .form-dropdown-box{
-        display: flex;
-        margin:0;
-        padding:0 5px 0 0;
-        cursor: pointer;
-        height:40px;
-        img:nth-child(1){
-          width:16px;
-          height:16px;
-          margin-top:12px;
+      .min-list-box{
+        .switch .el-switch__label {
+          position: absolute;
+          display: none;
+          color: #fff !important;
         }
-        p{
-          width:47px;
-          text-align: center;
-          font-size:14px;
-          margin:0;
-          line-height:40px;
+        .switch .el-switch__label--right {
+          z-index: 1;
         }
-        img:nth-child(3){
-          width:10px;
-          height:6px;
-          margin-top:17px;
+        .switch .el-switch__label--right span{
+          margin-left: 10px;
+        }
+        .switch .el-switch__label--left {
+          z-index: 1;
+        }
+        .switch .el-switch__label--left span{
+          margin-left: 24px;
+        }
+        .switch .el-switch__label.is-active {
+          display: block;
+        }
+        .switch.el-switch .el-switch__core,
+        .el-switch .el-switch__label {
+          width: 64px !important;
+          margin: 0;
         }
       }
     }
   }
-  .teacher-right-max-box{
-    .min-list-box{
-      .switch .el-switch__label {
-        position: absolute;
-        display: none;
-        color: #fff !important;
-      }
-      .switch .el-switch__label--right {
-        z-index: 1;
-      }
-      .switch .el-switch__label--right span{
-        margin-left: 10px;
-      }
-      .switch .el-switch__label--left {
-        z-index: 1;
-      }
-      .switch .el-switch__label--left span{
-        margin-left: 24px;
-      }
-      .switch .el-switch__label.is-active {
-        display: block;
-      }
-      .switch.el-switch .el-switch__core,
-      .el-switch .el-switch__label {
-        width: 64px !important;
-        margin: 0;
-      }
-    }
-  }
+</style>
+<style lang="scss">
   .teacher-revise-dialog-box{
     .teacher-text-p{
       margin-left:110px;

+ 8 - 9
src/views/laboratoryManagement/personnelManage/teacherInfo/userList.vue

@@ -134,15 +134,14 @@
     created(){
     },
     mounted(){
-      this.getDicts("work_class").then(response => {
-        this.workClass = response.data;
-      });
-      // this.getListClasstypeAll();
-      this.getListClassifiedAll();
-      this.listDepartments();
-      this.optionselect();
-      this.getList();
-      this.getTreeselect();
+      // this.getDicts("work_class").then(response => {
+      //   this.workClass = response.data;
+      // });
+      // this.getListClassifiedAll();
+      // this.listDepartments();
+      // this.optionselect();
+      // this.getList();
+      // this.getTreeselect();
     },
     methods:{
       deptAddSelect(){},

+ 1 - 1
src/views/safetyEducationExam/safeLearning/el_resources/index.vue

@@ -658,7 +658,7 @@ export default {
         this.getList();
       }else{
         this.loading = false;
-        this.msgError(res.msg);
+        this.msgError(res.message);
       }
     },
     //上传失败

+ 1 - 1
src/views/safetyEducationExam/securityExam/exam_my/index.vue

@@ -188,7 +188,7 @@ export default {
           createPaper({examId:item.id}).then(response => {
             if(response.code == 303){
               // 需要完成安全培训
-              this.$confirm(response.msg)
+              this.$confirm(response.message)
                 .then(_ => {
                   localStorage.setItem('startLearningInfoId',response.data.courseId);
                   this.$router.push({

+ 1 - 1
src/views/secureAccess/approval/differenceComponent/addPageSubPagePublic.vue

@@ -49,7 +49,7 @@
               self.$parent.$parent.tableClick(1);
             }
           }else if(response.code==205){
-            self.$confirm(response.msg, "警告", {
+            self.$confirm(response.message, "警告", {
               confirmButtonText: "确定",
               cancelButtonText: "取消",
               type: "warning"

+ 1 - 1
src/views/secureAccess/approval/infoPage.vue

@@ -274,7 +274,7 @@ export default {
           this.msgSuccess("操作成功");
           this.$parent.tableClick(1);
         }else if(response.code==205){
-          this.$confirm(response.msg, "警告", {
+          this.$confirm(response.message, "警告", {
             confirmButtonText: "确定",
             cancelButtonText: "取消",
             type: "warning"

+ 1 - 1
src/views/secureAccess/whitelist/addPage.vue

@@ -458,7 +458,7 @@ export default {
           this.msgSuccess("操作成功")
           this.backPage();
         }else if(response.code==205){
-          this.$confirm(response.msg, "警告", {
+          this.$confirm(response.message, "警告", {
             confirmButtonText: "确定",
             cancelButtonText: "取消",
             type: "warning"

+ 1 - 1
src/views/secureAccess/whitelist/differenceComponent/addPageSubPagePublic.vue

@@ -42,7 +42,7 @@
             self.msgSuccess("操作成功")
             self.$parent.$parent.backPage();
           }else if(response.code==205){
-            self.$confirm(response.msg, "警告", {
+            self.$confirm(response.message, "警告", {
               confirmButtonText: "确定",
               cancelButtonText: "取消",
               type: "warning"

+ 1 - 1
src/views/securityCheck/checkOption/index.vue

@@ -368,7 +368,7 @@ export default {
         this.importOpen = false;
         this.getList();
       }else{
-        this.msgError(res.msg);
+        this.msgError(res.message);
       }
     },
     beforeAvatarUpload(file) {

+ 2 - 2
src/views/securityCheck/checkRecord/CheckRecordInfo.vue

@@ -434,7 +434,7 @@
             if(response.code == 200){
               this.signatureData = 'data:image/png;base64,'+response.data;
             } else {
-              this.msgError(response.msg)
+              this.msgError(response.message)
             }
           });
         })
@@ -570,7 +570,7 @@
           yhZghImg:this.form.yhZghImg+'',
         }
         rectification(obj).then( response => {
-          this.msgSuccess(response.msg);
+          this.msgSuccess(response.message);
           this.backPage();
         })
       },

+ 2 - 2
src/views/securityCheck/checkRecord/verifyCheckInfo.vue

@@ -317,7 +317,7 @@
                 yhZghImg:this.form.yhZghImg+'',
               }
               editList(obj).then( response => {
-                this.msgSuccess(response.msg);
+                this.msgSuccess(response.message);
                 this.backPage();
               })
             }else if(type == 2){
@@ -329,7 +329,7 @@
                 yhZghImg:this.form.yhZghImg+'',
               }
               editList(obj).then( response => {
-                this.msgSuccess(response.msg);
+                this.msgSuccess(response.message);
                 this.backPage();
               })
             }

+ 1 - 1
src/views/systemManagement/dict/index.vue

@@ -260,7 +260,7 @@ export default {
     },
     /** 搜索按钮操作 */
     handleQuery() {
-      this.queryParams.pageNum = 1;
+      this.queryParams.page = 1;
       this.getList();
     },
     /** 重置按钮操作 */

+ 1 - 1
src/views/systemManagement/menu/index.vue

@@ -490,6 +490,6 @@ export default {
     display: flex!important;
     flex-direction: column;
     box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
-    padding:11px 20px 20px!important;
+    padding:20px!important;
   }
 </style>

+ 265 - 0
src/views/systemManagement/parameterSetting/index.vue

@@ -0,0 +1,265 @@
+<template>
+  <div class="app-container parameterSetting">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="关键字" prop="configName">
+        <el-input
+          v-model="queryParams.configName"
+          placeholder="参数名称"
+          clearable
+          size="small"
+          style="width: 240px"
+        />
+      </el-form-item>
+      <el-form-item label="创建时间">
+        <el-date-picker
+          :clearable="false"
+          v-model="dateRange"
+          size="small"
+          style="width: 240px"
+          value-format="yyyy-MM-dd"
+          type="daterange"
+          range-separator="-"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        ></el-date-picker>
+      </el-form-item>
+      <el-form-item style="float: right;">
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAdd"
+            v-hasPermi="['system:config:add']"
+          >新增</el-button>
+        </el-col>
+      </el-form-item>
+      <el-form-item>
+        <p class="inquire-button-one" @click="handleQuery">查询</p>
+        <p class="reset-button-one" @click="resetQuery">重置</p>
+      </el-form-item>
+    </el-form>
+    <el-table v-loading="loading" border :data="dataList">
+      <el-table-column label="参数名称" align="left" prop="configName" :show-overflow-tooltip="true" />
+      <el-table-column label="参数键名" align="left" prop="configKey" :show-overflow-tooltip="true" />
+      <el-table-column label="参数键值" align="left" prop="configValue" :show-overflow-tooltip="true"/>
+      <el-table-column label="备注" align="left" prop="remark" :show-overflow-tooltip="true" />
+      <el-table-column label="创建时间" align="left" prop="createTime" width="200">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="160" v-if="tableButtonType">
+        <template slot-scope="scope">
+          <div class="table-button-box">
+            <p class="table-button-null"></p>
+            <p class="table-button-p"
+               @click="handleUpdate(scope.row)"
+               v-hasPermi="['system:config:edit']"
+            >编辑</p>
+            <p class="table-button-p"
+               @click="handleDelete(scope.row)"
+               v-hasPermi="['system:config:remove']"
+            >删除</p>
+            <p class="table-button-null"></p>
+          </div>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination :page-sizes="[20, 30, 40, 50]"
+                v-show="total>0"
+                :total="total"
+                layout="total, prev, pager, next, sizes, jumper"
+                :page.sync="queryParams.page"
+                :limit.sync="queryParams.pageSize"
+                @pagination="getList"
+    />
+    <!-- 添加或修改参数配置对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body :close-on-click-modal="false">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="参数名称" prop="configName">
+          <el-input v-model="form.configName" placeholder="请输入参数名称" />
+        </el-form-item>
+        <el-form-item label="参数键名" prop="configKey">
+          <el-input v-model="form.configKey" placeholder="请输入参数键名" />
+        </el-form-item>
+        <el-form-item label="参数键值" prop="configValue">
+          <el-input v-model="form.configValue" placeholder="请输入参数键值" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" maxLength="50"
+                    resize="none" placeholder="请输入备注内容" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="cancel">取 消</el-button>
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { getConfigList } from "@/api/commonality/permission";
+  import { addOrUpdate,systemConfigInfoDelete } from "@/api/systemManagement/index";
+  export default {
+    name: 'parameterSetting',
+    data(){
+      return{
+        tableButtonType:this.hasPermiDom(['system:config:edit','system:config:remove']),
+        typeOptions:[{}],
+        loading:false,
+        // 查询参数
+        dateRange:[],
+        queryParams: {
+          page: 1,
+          pageSize:20,
+          category:1,
+          configType: 0,
+          configName:'',
+        },
+        dataList:[],
+        total:0,
+        //dialog参数
+        open:false,
+        form:{},
+        // 表单校验
+        rules: {
+          configName: [
+            { required: true, message: "请输入参数名称", trigger: "blur" },
+            { required: true, message: "请输入参数名称", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          configKey: [
+            { required: true, message: "请输入参数键名", trigger: "blur" },
+            { required: true, message: "请输入参数键名", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          configValue: [
+            { required: true, message: "请输入参数键值", trigger: "blur" },
+            { required: true, message: "请输入参数键值", validator: this.spaceJudgment, trigger: "blur" }
+          ]
+        }
+      }
+    },
+    created(){
+
+    },
+    mounted(){
+      this.getList();
+    },
+    methods:{
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.$set(this,'form',{
+          configName:'',
+          configKey:'',
+          configValue:'',
+          remark:'',
+        });
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.page = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.dateRange = [];
+        this.$set(this,'queryParams',{
+          page: 1,
+          pageSize:20,
+          category:1,
+          configType: 0,
+          configName:'',
+        });
+        this.handleQuery();
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.open = true;
+        this.title = "添加参数";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        this.$set(this,'form',{
+          id:row.id,
+          configName:row.configName,
+          configKey:row.configKey,
+          configValue:row.configValue,
+          remark:row.remark,
+        });
+        this.open = true;
+        this.title = "修改参数";
+      },
+      /** 提交按钮 */
+      submitForm: function() {
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            let obj = JSON.parse(JSON.stringify(this.form))
+            if (obj.id) {
+              obj.category = 1;
+              addOrUpdate(obj).then(response => {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              obj.category = 1;
+              addOrUpdate(obj).then(response => {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        this.$confirm('是否确认删除参数?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return systemConfigInfoDelete({id:row.id});
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(() => {});
+      },
+      //获取数据列表
+      getList(){
+        this.loading = true;
+        let obj = JSON.parse(JSON.stringify(this.queryParams))
+        if(this.dateRange[0]){
+          obj.startTime = this.dateRange[0]+'T00:00:00'
+          obj.endTime = this.dateRange[1]+'T23:59:59'
+        }else{
+          obj.startTime = "";
+          obj.endTime = "";
+        }
+        getConfigList(obj).then(response => {
+          this.dataList = response.data.records;
+          this.total = response.data.total;
+          this.loading = false;
+        });
+      },
+    },
+  }
+</script>
+
+<style scoped lang="scss">
+  .parameterSetting{
+    display: flex!important;
+    flex-direction: column;
+    box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+    padding:20px!important;
+  }
+</style>

+ 1 - 1
src/views/systemManagement/publicConfig/basicsConfig.vue

@@ -72,7 +72,7 @@
     name: "publicConfig",
     data() {
       return {
-        uploadImgUrl: window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/system/file/upload", // 上传地址
+        uploadImgUrl: this.uploadUrl(), // 上传的图片服务器地址
         headers: {
           Authorization:getToken(),
         },

+ 1 - 1
src/views/systemManagement/publicConfig/homeConfig.vue

@@ -336,7 +336,7 @@
     data(){
       return{
         //上传相关
-        uploadImgUrl: window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/system/file/upload", // 上传地址
+        uploadImgUrl: this.uploadUrl(), // 上传的图片服务器地址
         headers: {
           Authorization:getToken(),
         },

+ 1 - 1
src/views/systemManagement/publicConfig/integrationConfig.vue

@@ -70,7 +70,7 @@ export default {
   name: "publicConfig",
   data() {
     return {
-      uploadImgUrl: window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/system/file/upload", // 上传地址
+      uploadImgUrl: this.uploadUrl(), // 上传的图片服务器地址
       headers: {
         Authorization:getToken(),
       },

+ 1 - 1
src/views/systemManagement/publicConfig/programConfig.vue

@@ -62,7 +62,7 @@ export default {
   name: "publicConfig",
   data() {
     return {
-      uploadImgUrl: window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/system/file/upload", // 上传地址
+      uploadImgUrl: this.uploadUrl(), // 上传的图片服务器地址
       headers: {
         Authorization:getToken(),
       },

+ 640 - 0
src/views/systemManagement/systemUser/index.vue

@@ -0,0 +1,640 @@
+<!--系统用户管理-->
+<template>
+  <div class="app-container user user-page-admin">
+    <el-row :gutter="20" style="flex:1;display: flex">
+      <!--部门数据-->
+      <el-col :span="4" :xs="24" stlye="width:260px;">
+        <div class="head-container">
+          <el-tree
+            style="margin-right:20px;"
+            highlight-current
+            :data="deptOptions"
+            :props="defaultProps"
+            icon-class=""
+            :expand-on-click-node="false"
+            :filter-node-method="filterNode"
+            ref="tree"
+            default-expand-all
+            @node-click="handleNodeClick"
+          />
+        </div>
+      </el-col>
+      <!--用户数据-->
+      <el-col :span="20" :xs="24" style="flex:1;display: flex;flex-direction: column;">
+        <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch">
+          <el-form-item label="关键字" prop="searchValue" label-width="68px">
+            <el-input
+              v-model="queryParams.searchValue"
+              placeholder="用户名称/联系方式"
+              clearable
+              style="width: 240px"
+            />
+          </el-form-item>
+          <el-form-item label="状态" prop="state">
+            <el-select
+              v-model="queryParams.state"
+              placeholder="用户状态"
+              clearable
+              style="width: 240px"
+            >
+              <el-option
+                v-for="dict in stateOptions"
+                :key="dict.dictValue"
+                :label="dict.dictLabel"
+                :value="dict.dictValue"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="创建时间">
+            <el-date-picker
+              :clearable="false"
+              v-model="dateRange"
+              size="small"
+              style="width: 240px"
+              value-format="yyyy-MM-dd"
+              type="daterange"
+              range-separator="-"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+            ></el-date-picker>
+          </el-form-item>
+          <el-form-item style="float: right;">
+            <el-col :span="1.5">
+              <el-button
+                type="primary"
+                plain
+                icon="el-icon-plus"
+                size="mini"
+                @click="handleAdd"
+              >新增</el-button>
+            </el-col>
+          </el-form-item>
+          <el-form-item>
+            <p class="inquire-button-one" @click="handleQuery">查询</p>
+            <p class="reset-button-one" @click="resetQuery">重置</p>
+          </el-form-item>
+        </el-form>
+        <el-table v-loading="loading" border :data="userList" class="min-list-box">
+          <el-table-column label="账号" align="left" key="account" prop="account" show-overflow-tooltip/>
+          <el-table-column label="用户昵称" align="left" key="userName" prop="userName" show-overflow-tooltip/>
+          <el-table-column label="归属部门" align="left" key="deptName" prop="deptName" show-overflow-tooltip/>
+          <el-table-column label="联系方式" align="left" key="mobile" prop="mobile" width="200" show-overflow-tooltip />
+          <el-table-column label="状态" align="left" key="state" width="120" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <el-switch
+                @click.native="handleStatusChange(scope.row)"
+                class="switch captcha-img"
+                :active-value="true"
+                :inactive-value="false"
+                active-color="#0183FA"
+                inactive-color="#999"
+                v-model="scope.row.state"
+                active-text="启用"
+                inactive-text="停用"
+                disabled
+              ></el-switch>
+            </template>
+          </el-table-column>
+          <el-table-column label="创建时间" align="left" prop="createTime" width="160" show-overflow-tooltip>
+            <template slot-scope="scope">
+              <span>{{ parseTime(scope.row.createTime) }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="操作"
+            align="left"
+            width="220"
+            class-name="small-padding fixed-width"
+          >
+            <template slot-scope="scope">
+              <div class="table-button-box">
+                <p class="table-button-null"></p>
+                <p class="table-button-p"
+                   @click="handleUpdate(scope.row)"
+                >修改</p>
+                <p class="table-button-p"
+                   @click="handleDelete(scope.row)"
+                >删除</p>
+                <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)">
+                  <span class="table-button-p">更多>></span>
+                  <el-dropdown-menu slot="dropdown">
+                    <el-dropdown-item command="handleResetPwd">修改密码</el-dropdown-item>
+                  </el-dropdown-menu>
+                </el-dropdown>
+                <p class="table-button-null"></p>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination :page-sizes="[20, 30, 40, 50]"
+          v-show="total>0"
+          :total="total"
+          layout="total, prev, pager, next, sizes, jumper"
+          :page.sync="queryParams.page"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getList"
+        />
+      </el-col>
+    </el-row>
+
+    <!-- 添加或修改参数配置对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="630px" append-to-body :close-on-click-modal="false">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="用户名" prop="userName">
+              <el-input v-model="form.userName" placeholder="请输入用户名" maxlength="30" style="width:200px;" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="联系方式" prop="mobile">
+              <el-input v-model="form.mobile" placeholder="请输入联系方式" maxlength="11" style="width:200px;"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="归属部门" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions"
+                          :normalizer="normalizer" :show-count="true"
+                          placeholder="请选择上级部门" style="width:200px;"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="角色" prop="roleIds">
+              <!--<el-select v-model="form.roleIds" placeholder="请选择" style="width:200px;">-->
+              <el-select v-model="form.roleIds" multiple collapse-tags
+                         placeholder="请选择" style="width:200px;">
+                <el-option
+                  v-for="item in roleOptions"
+                  :key="item.roleId"
+                  :label="item.roleName"
+                  :value="item.roleId"
+                  :disabled="item.state == 1"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item v-if="!form.userId" label="账号" prop="account">
+              <el-input v-model="form.account" placeholder="请输入账号" maxlength="30" style="width:200px;"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item v-if="!form.userId" label="密码" prop="password">
+              <el-input v-model="form.password" placeholder="请输入密码" type="password" maxlength="20" show-password style="width:200px;"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="状态" prop="state">
+              <el-radio-group v-model="form.state" style="width:200px;">
+                <el-radio
+                  v-for="dict in stateOptions"
+                  :key="dict.dictValue"
+                  :label="dict.dictValue"
+                >{{dict.dictLabel}}</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="cancel">取 消</el-button>
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+      </div>
+    </el-dialog>
+    <!--修改密码-->
+    <el-dialog title="修改密码" :visible.sync="reviseOpen" width="600px" append-to-body class="teacher-revise-dialog-box">
+      <el-form :model="passwordForm" ref="passwordForm" :inline="true" :rules="rules" class="addCheckPage-min">
+        <el-form-item label="新密码" prop="password" label-width="110px" >
+          <el-input type="password" v-model="passwordForm.password" clearable maxlength="20" style="width:420px;" placeholder="请输入新密码"/>
+        </el-form-item>
+        <el-form-item label="确认新密码" prop="newPassword" label-width="110px">
+          <el-input type="password" v-model="passwordForm.newPassword" clearable maxlength="20" style="width:420px;" placeholder="请确认新密码"/>
+        </el-form-item>
+      </el-form>
+      <!--<p class="teacher-text-p">确定要重置该账号的密码吗?</p>-->
+      <!--<p class="teacher-text-p">确定操作后,该账号密码将重置为系统初始密码。</p>-->
+      <div slot="footer" class="teacher-revise-dialog-button-box">
+        <p class="reset-button-one" @click="reviseOpenOff">取消</p>
+        <p class="inquire-button-one" @click="putUserResetPwd">确定</p>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus } from "@/apiDemo/system/user";
+import { getToken } from "@/utils/auth";
+// import { treeselect } from "@/api/system/dept";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+//V3新
+import { getDeptList,systemUserList,systemUserAdd,systemUserDetail,
+  systemUserUpdate,systemUserEditState,systemUserDelete,systemUserEditPasswd } from "@/api/commonality/permission";
+
+export default {
+  name: "User",
+  components: { Treeselect },
+  data() {
+    const equalToPassword = (rule, value, callback) => {
+      if (this.passwordForm.password !== value) {
+        callback(new Error("两次输入的密码不一致"));
+      } else {
+        callback();
+      }
+    };
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      userList: null,
+      // 弹出层标题
+      title: "",
+      // 部门树选项
+      deptOptions: null,
+      normalizer(node){
+        //去掉children=[]的children属性
+        if(node.children && !node.children.length){
+          delete node.children;
+        }
+        return {
+          id: node.deptId,
+          parentId:node.parentId,
+          label:node.deptName,
+          deptNum:node.deptNum,
+          deptType:node.deptType,
+          children:node.child,
+        }
+      },
+      // 是否显示弹出层
+      open: false,
+      // 部门名称
+      deptName: undefined,
+      // 默认密码
+      initPassword: undefined,
+      // 日期范围
+      dateRange: [],
+      // 状态数据字典
+      stateOptions: [{dictValue:true,dictLabel:'启用'},{dictValue:false,dictLabel:'禁用'}],
+      // 性别状态字典
+      sexOptions: [],
+      // 岗位选项
+      postOptions: [],
+      // 角色选项
+      roleOptions: [{roleName:"本地测试数据1",roleId:999},{roleName:"本地测试数据2",roleId:9999},],
+      defaultProps: {
+        children: "child",
+        label: "deptName"
+      },
+      // 查询参数
+      queryParams: {
+        page:1,
+        pageSize:20,
+        userType:0,
+        deptId:null,
+        searchValue: null,
+        state: null,
+      },
+      // 表单参数
+      form: {
+        userName:"",
+        mobile:"",
+        deptId:null,
+        roleIds:[],
+        account:"",
+        password:"",
+        state:true,
+      },
+      // 表单校验
+      rules: {
+        account: [
+          { required: true, message: "请输入用户昵称", trigger: "blur" },
+          { required: true, message: "请输入用户昵称", validator: this.spaceJudgment, trigger: "blur" }
+        ],
+        deptId: [
+          { required: true, message: "请选择归属部门", trigger: "blur" },
+        ],
+        roleIds: [
+          { required: true, message: "请选择角色", trigger: "blur" },
+        ],
+        state: [
+          { required: true, message: "请选择状态", trigger: "blur" },
+        ],
+        userName: [
+          { required: true, message: "用户名不能为空", trigger: "blur" },
+          { required: true, message: "用户名不能为空", validator: this.spaceJudgment, trigger: "blur" }
+        ],
+        password: [
+          { required: true, message: "用户密码不能为空", trigger: "blur" },
+          { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' },
+          { required: true, message: "用户密码不能为空", validator: this.spaceJudgment, trigger: "blur" }
+        ],
+        newPassword: [
+          { required: true, message: "确认新密码不能为空", trigger: "blur" },
+          { min: 5, max: 20, message: '确认新密码长度必须介于 5 和 20 之间', trigger: 'blur' },
+          { required: true, validator: equalToPassword, trigger: "blur" }
+        ],
+        email: [
+          {
+            type: "email",
+            message: "'请输入正确的邮箱地址",
+            trigger: ["blur", "change"]
+          }
+        ],
+        mobile: [
+          { required: true, message: "请输入正确的联系方式", trigger: "blur" },
+          { required: true, message: "请输入正确的联系方式", validator: this.spaceJudgment, trigger: "blur" },
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的联系方式",
+            trigger: "blur"
+          }
+        ]
+      },
+      // 重置密码弹层开关
+      reviseOpen: false,
+      passwordForm:{
+        password:"",
+        newPassword:"",
+      },
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    // deptName(val) {
+    //   this.$refs.tree.filter(val);
+    // }
+  },
+  created() {
+    this.getDeptList();
+    this.getList();
+    // this.getList();
+    // this.getDeptList();
+    // this.getDicts("sys_normal_disable").then(response => {
+    //   this.stateOptions = response.data;
+    // });
+    // this.getDicts("sys_user_sex").then(response => {
+    //   this.sexOptions = response.data;
+    // });
+    // this.getConfigKey("sys.user.initPassword").then(response => {
+    //   this.initPassword = response.message;
+    // });
+  },
+  methods: {
+    /*===========V3开始===========*/
+    getDeptList(){
+      getDeptList({deptName:this.inputDeptName}).then(response => {
+        this.$set(this,'deptOptions',response.data);
+      });
+    },
+    /** 查询用户列表 */
+    getList() {
+      this.loading = true;
+      let obj = JSON.parse(JSON.stringify(this.queryParams))
+      if(this.dateRange[0]){
+        obj.startTime = this.dateRange[0]+'T00:00:00'
+        obj.endTime = this.dateRange[1]+'T23:59:59'
+      }else{
+        obj.startTime = "";
+        obj.endTime = "";
+      }
+      systemUserList(obj).then(response => {
+          this.userList = response.data.records;
+          this.total = response.data.total;
+          this.loading = false;
+        }
+      );
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      this.queryParams.deptId = data.deptId;
+      this.getList();
+    },
+    // 用户状态修改
+    handleStatusChange(row) {
+      let text = row.state === "0" ? "启用" : "停用";
+      this.$confirm('确认要' + text + '"' + row.userName + '"?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function() {
+        return systemUserEditState({userId:row.userId, state:!row.state});
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("操作成功");
+      }).catch(function() {
+      });
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加用户";
+      // getUser().then(response => {
+      //   this.postOptions = response.posts;
+      //   this.roleOptions = response.roles;
+      //   this.open = true;
+      //   this.title = "添加用户";
+      //   this.form.password = this.initPassword;
+      // });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const userIds = row.userId || this.ids;
+      this.$confirm('确认删除"'+row.userName+'"?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function() {
+        return systemUserDelete({userId:userIds});
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      systemUserDetail({userId:row.userId}).then(response => {
+        let obj = {
+          userId:response.data.userId,
+          userName:response.data.userName,
+          mobile:response.data.mobile,
+          deptId:response.data.deptId,
+          state:response.data.state,
+          // roleIds:obj.roleIds[0]?response.data.roleIds.split(','):[]
+          roleIds:response.data.roleIds
+        };
+
+        this.$set(this,'form',JSON.parse(JSON.stringify(obj)));
+        this.open = true;
+        this.title = "修改用户";
+      });
+
+      // const userId = row.userId || this.ids;
+      // getUser(userId).then(response => {
+      //   this.form = response.data;
+      //   this.postOptions = response.posts;
+      //   this.roleOptions = response.roles;
+      //   this.form.postIds = response.postIds;
+      //   this.form.roleIds = response.roleIds;
+      //   this.open = true;
+      //   this.title = "修改用户";
+      //   this.form.password = "";
+      // });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.userId) {
+            let obj = JSON.parse(JSON.stringify(this.form))
+            obj.roleIds = obj.roleIds + '';
+            systemUserUpdate(obj).then(response => {
+              this.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            let obj = JSON.parse(JSON.stringify(this.form))
+            obj.userType = 0;
+            obj.roleIds = obj.roleIds + '';
+            systemUserAdd(obj).then(response => {
+              this.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    //关闭重置密码页面
+    reviseOpenOff(){
+      this.reviseOpen = false;
+      this.resetPwdId = "";
+    },
+    //修改密码
+    putUserResetPwd(){
+      this.$refs["passwordForm"].validate(valid => {
+        if (valid) {
+          let obj = {
+            userId : this.resetPwdId,
+            password:this.passwordForm.password
+          };
+          systemUserEditPasswd(obj).then(response => {
+            this.reviseOpen = false;
+            this.msgSuccess("修改成功");
+          });
+        }
+      });
+    },
+    /*===========V3结束===========*/
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.$set(this,'form',{
+        userName:"",
+        mobile:"",
+        deptId:null,
+        roleIds:[],
+        account:"",
+        password:"",
+        state:true,
+      });
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.page = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.$set(this,'queryParams',{
+        page:1,
+        pageSize:20,
+        userType:0,
+        deptId:this.queryParams.deptId,
+        searchValue: null,
+        state: null,
+      });
+      this.handleQuery();
+    },
+    // 更多操作触发
+    handleCommand(command, row) {
+      switch (command) {
+        case "handleResetPwd":
+          this.reset();
+          this.title = "重置密码";
+          this.resetPwdId = row.userId;
+          this.reviseOpen = true;
+          break;
+        default:
+          break;
+      }
+    },
+  }
+};
+</script>
+
+<style scoped lang="scss">
+  .user {
+    display: flex!important;
+    flex-direction: column;
+    box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
+    padding:11px 20px 20px!important;
+  }
+  ::v-deep .min-list-box{
+    .switch .el-switch__label {
+      position: absolute;
+      display: none;
+      color: #fff !important;
+    }
+    .switch .el-switch__label--right {
+      z-index: 1;
+    }
+    .switch .el-switch__label--right span{
+      margin-left: 10px;
+    }
+    .switch .el-switch__label--left {
+      z-index: 1;
+    }
+    .switch .el-switch__label--left span{
+      margin-left: 24px;
+    }
+    .switch .el-switch__label.is-active {
+      display: block;
+    }
+    .switch.el-switch .el-switch__core,
+    .el-switch .el-switch__label {
+      width: 64px !important;
+      margin: 0;
+    }
+  }
+</style>