Parcourir la source

Merge branch 'master' of https://git.cocorobo.cn/CocoRoboLabs/pbl_admin_table

lsc il y a 1 mois
Parent
commit
bb1978d630

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
dist/css/app.1b88a36c.css


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
dist/css/app.bafe326b.css


+ 0 - 5
dist/img/schlit.0430def2.svg

@@ -1,5 +0,0 @@
-<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M9.99996 9.16667C10.4602 9.16667 10.8333 8.79357 10.8333 8.33333C10.8333 7.8731 10.4602 7.5 9.99996 7.5C9.53972 7.5 9.16663 7.8731 9.16663 8.33333C9.16663 8.79357 9.53972 9.16667 9.99996 9.16667Z" stroke="black" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M4.99996 14.1667V14.175M4.99996 10.8333V10.8417M15 14.1667V14.175M15 10.8333V10.8417M18.3333 16.6667V6.66668H15L9.99996 3.33334L4.99996 6.66668H1.66663V16.6667C1.66663 17.1087 1.84222 17.5326 2.15478 17.8452C2.46734 18.1577 2.89127 18.3333 3.33329 18.3333H16.6666C17.1087 18.3333 17.5326 18.1577 17.8451 17.8452C18.1577 17.5326 18.3333 17.1087 18.3333 16.6667Z" stroke="black" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M11.6666 18.3333V14.1667C11.6666 13.7246 11.491 13.3007 11.1784 12.9882C10.8659 12.6756 10.4419 12.5 9.99992 12.5C9.55789 12.5 9.13397 12.6756 8.82141 12.9882C8.50885 13.3007 8.33325 13.7246 8.33325 14.1667V18.3333" stroke="black" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
-</svg>

+ 0 - 4
dist/img/star.c176d642.svg

@@ -1,4 +0,0 @@
-<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M15.4025 13.9725C14.2635 14.246 13.0744 14.2327 11.9418 13.9339C10.8091 13.6351 9.76827 13.06 8.9124 12.2602C8.05654 11.4604 7.41238 10.4609 7.03763 9.35103C6.66287 8.24119 6.56921 7.05574 6.76503 5.90082C6.7357 5.93007 6.70422 5.95708 6.67087 5.98165C6.43753 6.15915 6.14587 6.22498 5.56253 6.35665L5.03337 6.47665C2.98337 6.94082 1.95837 7.17248 1.7142 7.95665C1.47087 8.73998 2.1692 9.55748 3.5667 11.1917L3.92837 11.6142C4.32503 12.0783 4.5242 12.3108 4.61337 12.5975C4.70253 12.885 4.67253 13.195 4.61253 13.8142L4.55753 14.3783C4.3467 16.5592 4.24087 17.6492 4.8792 18.1333C5.51753 18.6175 6.47753 18.1767 8.39587 17.2925L8.89337 17.0642C9.43837 16.8125 9.71087 16.6875 10 16.6875C10.2892 16.6875 10.5617 16.8125 11.1075 17.0642L11.6034 17.2925C13.5225 18.1758 14.4825 18.6175 15.12 18.1342C15.7592 17.6492 15.6534 16.5592 15.4425 14.3783L15.4025 13.9725Z" fill="#0354D7"/>
-<path d="M7.62749 4.50669L7.35416 4.99669C7.05416 5.53502 6.90416 5.80419 6.67083 5.98169C6.70416 5.95669 6.73555 5.92974 6.76499 5.90085C6.56912 7.05586 6.66278 8.24142 7.03757 9.35134C7.41237 10.4613 8.0566 11.4609 8.91258 12.2607C9.76855 13.0605 10.8095 13.6356 11.9423 13.9343C13.0751 14.2331 14.2642 14.2462 15.4033 13.9725L15.3867 13.8142C15.3275 13.195 15.2975 12.885 15.3867 12.5975C15.4758 12.3109 15.6742 12.0784 16.0717 11.6142L16.4333 11.1917C17.8308 9.55835 18.5292 8.74085 18.285 7.95669C18.0417 7.17252 17.0167 6.94002 14.9667 6.47669L14.4367 6.35669C13.8542 6.22502 13.5625 6.15919 13.3283 5.98169C13.095 5.80419 12.945 5.53502 12.645 4.99669L12.3725 4.50669C11.3167 2.61335 10.7892 1.66669 9.99999 1.66669C9.21083 1.66669 8.68333 2.61335 7.62749 4.50669Z" fill="black"/>
-</svg>

BIN
dist/img/toux.bb7c0407.png


BIN
dist/img/toux2.071bb4e3.png


+ 0 - 0
dist/img/wechat.d3d8349b.svg → dist/img/wechat.0277f1a9.svg


+ 1 - 1
dist/index.html

@@ -36,7 +36,7 @@
         width: 100%;
         background: #e6eaf0;
         font-family: '黑体';
-      }</style><script defer="defer" src="/js/chunk-vendors.7cdade31.js"></script><script defer="defer" src="/js/app.b8033a48.js"></script><link href="/css/chunk-vendors.7cfe4581.css" rel="stylesheet"><link href="/css/app.1b88a36c.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but pblAdminTable doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html><script>function stopSafari() {
+      }</style><script defer="defer" src="/js/chunk-vendors.50f469f2.js"></script><script defer="defer" src="/js/app.4b83b5e3.js"></script><link href="/css/chunk-vendors.7cfe4581.css" rel="stylesheet"><link href="/css/app.bafe326b.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but pblAdminTable doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
dist/js/app.4b83b5e3.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
dist/js/app.4b83b5e3.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
dist/js/app.b8033a48.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
dist/js/app.b8033a48.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
dist/js/chunk-vendors.50f469f2.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
dist/js/chunk-vendors.50f469f2.js.map


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
dist/js/chunk-vendors.7cdade31.js.map


BIN
src/assets/img/toux2.png


+ 17 - 18
src/components/schoolArea.vue

@@ -4,31 +4,27 @@
             <div class="allView_icon"></div>
             <div>总览</div>
         </div>
-        <div class="priSchBox">
-            <div class="primarySch" :class="{ active: activeSchool === 'primarySch' }" >
-                <img src="../assets/img/schlit.svg" style="margin-right: 8px;" alt="">
-                <div>小学部</div>
-            </div>
-            <div class="priSchArea">
-                <div class="schArea" v-for="(item, index) in priSchList" :key="index"
-                    :class="{ active: activeSchool === item }" >{{ item }}
+
+        <div v-if="fromL.admin.school">
+            <div class="priSchBox" v-for="(i,index) in fromL.admin.school.list" :key="index+'a'">
+                <div class="primarySch" :class="{ active: activeSchool === 'primarySch' }" >
+                    <img :src="i.menuIcon" style="margin-right: 8px;" alt="">
+                    <div>{{ i.menuName }}</div>
                 </div>
-            </div>
-        </div>
-        <div class="midSchBox">
-            <div class="primarySch" :class="{ active: activeSchool === 'primarySch' }">
-                <img src="../assets/img/star.svg" style="margin-right: 8px;" alt="">
-                <div>初中部</div>
-            </div>
-            <div class="priSchArea">
-                <div class="schArea" v-for="(item, index) in midList" :key="index"
-                    :class="{ active: activeSchool === item }">{{ item }}
+                <div class="priSchArea">
+                    <div class="schArea" v-for="(item, index) in i.children" :key="index"
+                        :class="{ active: activeSchool === item }" >
+                        {{ item.name }}
+                    </div>
                 </div>
             </div>
         </div>
+
     </div>
 </template>
 <script>
+import { mapGetters } from 'vuex';
+
 export default {
     data() {
         return {
@@ -46,6 +42,9 @@ export default {
             ]
         }
     },
+    computed: {
+        ...mapGetters(['fromL']),
+    },
     methods: {
         setActive(school) {
             this.activeSchool = school  // 切换高亮状态

+ 4 - 1
src/components/sidebarL.vue

@@ -156,7 +156,10 @@ import { API_CONFIG } from "@/common/apiConfig";
                 logout: 'user/logout'
             }),
             // 跳转到看板
-            gotoKanban(){
+            async gotoKanban(){
+                // 重新获取基础数据
+                await store.dispatch('user/getschPerInfo')
+
                 let num = this.userinfo.type == 1 && this.userinfo.role == 1 && this.userinfo.rrole == 1 ? 1 : 2
                 this.$router.push({
                     path: '/KanBan',

+ 3 - 0
src/permission.js

@@ -31,6 +31,9 @@ router.beforeEach(async (to, from, next) => {
           const data = await store.dispatch('user/getInfo')
           await store.commit('user/SET_USERINFO', data)
 
+          await store.dispatch('user/getschPerInfo')
+
+
           if(data.type == 1 && data.role == 1 && data.rrole == 1){
             next({ path:'/KanBan', replace: true })
           }else {

+ 73 - 0
src/store/modules/user.js

@@ -1,6 +1,8 @@
 // import { user_info, login } from '@/api/user'
 import { eduGet, getUser } from "@/api/user";
 import { getToken, removeToken, setToken } from "@/utils/auth";
+import { API_CONFIG } from "@/common/apiConfig";
+import axios from '@/common/axios.config'; // 引入 axios 配置实例
 
 // import { Message } from 'element-ui'
 // import { loginOut } from '@/api/user';
@@ -151,6 +153,77 @@ const actions = {
     });
   },
 
+  async getschPerInfo({ commit,state }) {
+      let params = [{
+          functionName: API_CONFIG.ajax_schoolPermission.functionName, // 调用存储过程的名称
+          org: state.userinfo.org, //组织id
+          oid: state.userinfo.organizeid, //学校id
+        }]
+      ;
+      console.log('params',params);
+      // 获取学校权限与组织权限,优先使用学校权限,其次使用组织权限
+      // 第一步
+      let res = await axios.post(API_CONFIG.baseUrl, params)
+      let perData= JSON.parse(res.data[0][0].json)
+
+      // 第二步
+      let params2 = [
+				{
+					functionName: "select_desktopToolByPage",
+					status: "",
+					page: 1,
+					lim: 9999999,
+				},
+			];
+      let res2 = await axios.post(API_CONFIG.baseUrl, params2)
+      let toolList = res2.data[0];
+      toolList.forEach((i) => {
+        i.url = JSON.parse(i.url);
+        i.json = JSON.parse(i.json);
+        i.argumentList = JSON.parse(i.argumentList);
+      });
+
+      // 第三步
+			perData.admin.index.list.forEach((i, index) => {
+				let _index = toolList.findIndex((i2) => i == i2.id);
+				if (_index != -1) {
+					perData.admin.index.list[index] = toolList[_index];
+          perData.admin.index.list[index].hovered = false
+				} else {
+					console.log("无工具", i);
+				}
+			});
+
+			perData.admin.sidebar.list.forEach((i, index) => {
+				if (i.children) {
+					i.children.forEach((i2, index2) => {
+						let _toolList = JSON.parse(JSON.stringify(toolList))
+						let _index = _toolList.findIndex((i3) => i2 == i3.id);
+						
+						if (_index != -1) {
+							perData.admin.sidebar.list[index].children[index2] = _toolList[_index];
+							perData.admin.sidebar.list[index].children[index2].typeId = perData.admin.sidebar.list[index].typeId + "," +_toolList[_index].id;
+						} else {
+							console.log("无工具", i);
+						}
+					});
+				} else {
+					let _toolList = JSON.parse(JSON.stringify(toolList))
+					let _index = _toolList.findIndex((i2) => i == i2.id);
+					if (_index != -1) {
+						perData.admin.sidebar.list[index] = _toolList[_index];
+						perData.admin.sidebar.list[index].typeId =
+            perData.admin.sidebar.list[index].id;
+					} else {
+						console.log("无工具", i);
+					} 
+				}
+			});
+
+      commit('SET_FROM', perData)
+      console.log('state.fromL',state.fromL);
+  },
+
   logout({ commit }) {
     return new Promise((resolve) => {
       commit("SET_TOKEN", "");

+ 3 - 4
src/views/HomeView.vue

@@ -19,7 +19,7 @@
                 <img
                  @click="openData()"
                 style="width: 40px;height: 40px;object-fit: cover;border-radius: 50%; cursor: pointer;" 
-                :src="roleUser.headportrait ? roleUser.headportrait : require('../assets/img/toux.png')" alt="">
+                :src="roleUser.headportrait ? roleUser.headportrait : require('../assets/img/toux2.png')" alt="">
                 <div class="personInfo">
                   <div class="personInfoTit">
                     {{  roleUser.username }}
@@ -200,9 +200,6 @@ export default {
           // console.log('data', data)
           this.perData= JSON.parse(data[0].json)
           this.getToolData()
-
-
-
         })
         .catch((err) => {
           console.error("请求失败,错误信息:", err);
@@ -344,6 +341,8 @@ export default {
   display: flex;
   flex-direction: column;
   justify-content: space-between;
+  padding: 1px 0 2px;
+  box-sizing: border-box;
 }
 .personInfoTit{
   font-family: PingFang SC;

+ 27 - 16
src/views/kanBan/components/AquickEntrance.vue

@@ -4,12 +4,17 @@
             <!-- <div style="text-align: center;margin-bottom: 60px;">
                 小学部
             </div> -->
-            <div class="EntBloConList">
+            <div v-if="CampusList.length" class="EntBloConList">
                 <div class="EntBloCon" @click="loginLiyuan(i)" v-for="(i,index) in CampusList" :key="index">
                     <img style="width: 26px;margin-bottom: 10px;" :src="JSON.parse(i.json).basics.logo" alt="">
                     <div>{{ i.name }}</div>
                 </div>
             </div>
+
+            <div v-else class="EntBloCon2" @click="loginBen()">
+                <img style="width: 26px;margin-bottom: 10px;" :src="fromL.basics.logo ? fromL.basics.logo : require('../../../assets/img/moren.png')" alt="">
+                <div>{{ fromL.basics.title }}</div>
+            </div>
         </div>
 
         <!-- <div class="EntBlo">
@@ -33,22 +38,23 @@ import store from '../../../store'
 import { addrrole } from "@/api/user";
 
     export default {
-        
         data(){
             return{
                 CampusList:[],
-                uCode :{},
                 loading:false
             }
         },
         computed: {
-            ...mapGetters(['userinfo','userinfo2']),
+            ...mapGetters(['userinfo','fromL']),
         },
         methods:{
+            // 跳转本校校区
+            loginBen(){
+                this.$router.push('/');
+            },
+            // 跳转校区
             async loginLiyuan(val){
                 this.loading = true
-                
-                // this.uCode = val 
                 try{
                     let email = ''
                     let userName = JSON.parse(JSON.stringify(this.userinfo.accountNumber))
@@ -78,7 +84,6 @@ import { addrrole } from "@/api/user";
                         await store.commit('user/SET_USERINFO2', res.data[0][0])
                         this.loading = false
 
-                        console.log('this.userinfo2',this.userinfo2);
                         this.$router.push('/');
                     }else{
                         this.addRoleZh(email, val)
@@ -89,8 +94,8 @@ import { addrrole } from "@/api/user";
                     console.error("请求失败,错误信息:", err);
                 }
             },
+            // 创建校区管理员账号
             async addRoleZh(email, school){
-
                 let params = {
                         username: email,
                         userpassword: 'Coco1234',
@@ -104,19 +109,16 @@ import { addrrole } from "@/api/user";
                         rol: 1
                     }
 
-                console.log('params',params);
-                
 
                 let res = await addrrole(params)
-                console.log(res);
                 if (res.data.success != 1) {
                     this.$message.error('创建账号失败')
                 }else{
                     this.loginLiyuan(school)
                 }
                 this.loading = false
-
             },
+            // 获取校区数据
             getData(){
                 this.loading = true
                 let params = [
@@ -131,17 +133,15 @@ import { addrrole } from "@/api/user";
                     .post(API_CONFIG.baseUrl, params)
                     .then((res) => {
                         let data = res.data[0]
+                        console.log(data);
+                        
                         this.CampusList = data
                         this.loading = false
-
-                        console.log('data', data)
                     })
                     .catch((err) => {
                         this.loading = false
-
                         console.error("请求失败,错误信息:", err);
                     });
-                
             }
         },
         mounted(){
@@ -172,5 +172,16 @@ import { addrrole } from "@/api/user";
     flex-direction: column;
     align-items: center;
 }
+.EntBloCon2{
+    cursor: pointer;
+    padding: 40px 20px;
+    background: #fff;
+    border-radius: 10px;
+    display: flex;
+    width: 200px;
+    flex-direction: column;
+    align-items: center;
+    margin: auto;
+}
 
 </style>

+ 8 - 8
src/views/kanBan/index.vue

@@ -12,7 +12,7 @@
                 <img
                  @click="openData()"
                 style="width: 40px;height: 40px;object-fit: cover;border-radius: 50%; cursor: pointer;" 
-                :src="userinfo.headportrait ? userinfo.headportrait : require('../../assets/img/toux.png')" alt="">
+                :src="userinfo.headportrait ? userinfo.headportrait : require('../../assets/img/toux2.png')" alt="">
                 <div class="personInfo">
                   <div class="personInfoTit">
                     {{  userinfo.username }}
@@ -81,7 +81,7 @@ export default {
         AschoolFeature
     },
     computed: {
-    ...mapGetters(['userinfo','userinfo2','appSign']),
+    ...mapGetters(['userinfo','userinfo2','fromL','appSign']),
     userSuffix(){
       return function(val) {
         let userName = JSON.parse(JSON.stringify(val))
@@ -97,9 +97,6 @@ export default {
         return userName
       }
     },
-    roleUser(){
-        return this.userinfo.type == 1 && this.userinfo.role == 1 && this.userinfo.rrole == 1 ? this.userinfo2 : this.userinfo
-    }
   },
     data() {
         return {
@@ -108,6 +105,10 @@ export default {
         }
     },
     methods: {
+        ...mapActions({
+            logout: 'user/logout'
+        }),
+        // 返回首页
         gotoli(){
             this.$router.push('/homepageL');
         },
@@ -133,9 +134,6 @@ export default {
                 // 取消操作
             });
         },
-        ...mapActions({
-            logout: 'user/logout'
-        }),
         setActive(Index) {
             this.isActive = Index; // 设置激活的按钮
         }
@@ -195,6 +193,8 @@ export default {
   display: flex;
   flex-direction: column;
   justify-content: space-between;
+  padding: 1px 0 2px;
+  box-sizing: border-box;
 }
 .personInfoTit{
   font-family: PingFang SC;

+ 1 - 1
src/views/login/loginPage.vue

@@ -808,7 +808,7 @@ export default {
 .lp_r_b_line > div {
 	width: calc(100% / 2 - 70px);
 	height: 1px;
-	background-color: rgba(0, 0, 0, 0.3);
+	background-color: #e7e7e7;
 }
 
 .lp_r_b_line > span {

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff