11wqe1 1 mēnesi atpakaļ
vecāks
revīzija
22584977eb

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 4 - 0
src/common/aws-sdk-2.235.1.min.js


+ 2 - 1
src/components/sidebarL.vue

@@ -343,10 +343,11 @@ import { myMixin } from "@/mixins/mixin.js"
             // 打开ai应用
             openNewWindow(val) {
                 console.log(val);
-                this.addOp3('1', "", {id :val.id,name:val.name ,type:this.prefixL + "appstoreOpen" }, "success")
                 
                 // // 基本用法:打开指定 URL
                 window.open(val.url, "_blank");
+                this.addOp3('1', "", {id :val.id,name:val.name ,type:this.prefixL + "appstoreOpen" }, "success")
+
             },
         },
        

+ 51 - 7
src/store/modules/user.js

@@ -159,8 +159,8 @@ const actions = {
           functionName: API_CONFIG.ajax_schoolPermission.functionName, // 调用存储过程的名称
           org: state.userinfo.org, //组织id
           oid: state.userinfo.organizeid, //学校id
-        }]
-      ;
+        }];
+
       console.log('params',params);
       // 获取学校权限与组织权限,优先使用学校权限,其次使用组织权限
       // 第一步
@@ -184,12 +184,39 @@ const actions = {
         i.argumentList = JSON.parse(i.argumentList);
       });
 
+      let params3 = [
+				{
+					functionName: "select_schUsuallyApp",
+					userid: "",
+					stand: "cn",
+				},
+			];
+			let res3 = await axios.post(API_CONFIG.baseUrl, params3)
+      
+
+			let _list = res3.data[0]
+
+			_list.forEach((i) => {
+				i.json = JSON.parse(i.json);
+			});
+
+			let appList = _list;
+
       // 第三步
+      perData.desktop.list.forEach((i, index) => {
+				let _index = toolList.findIndex((i2) => i == i2.id);
+				if (_index != -1) {
+					perData.desktop.list[index] = toolList[_index];
+				} else {
+					console.log("无工具", i);
+				}
+			});
+      
       if (perData.admin.cocoFlow) {
 				perData.admin.cocoFlow.forEach((i, index) => {
-					let _index = toolList.findIndex((i2) => i.id == i2.id);
+					let _index = appList.findIndex((i2) => i.id == i2.id);
 					if (_index != -1) {
-						let _setData = toolList[_index];
+						let _setData = appList[_index];
 						_setData.setIcon = i.setIcon;
 						perData.admin.cocoFlow[index] = _setData;
 					} else {
@@ -197,11 +224,12 @@ const actions = {
 					}
 				});
 			}
+
       if (perData.admin.cocoFlow2) {
         perData.admin.cocoFlow2.forEach((i, index) => {
-          let _index = toolList.findIndex((i2) => i.id == i2.id);
+          let _index = appList.findIndex((i2) => i.id == i2.id);
           if (_index != -1) {
-          let _setData = toolList[_index];
+          let _setData = appList[_index];
           _setData.setIcon = i.setIcon;
           perData.admin.cocoFlow2[index] = _setData;
         } else {
@@ -209,6 +237,23 @@ const actions = {
         }
         });
       }
+
+
+      if (perData.admin.CampusF && perData.admin.CampusF.appList) {
+				perData.admin.CampusF.appList.forEach((i, index) => {
+					let _index = appList.findIndex((i2) => i.id == i2.id);
+          
+					if (_index != -1) {
+						let _setData = appList[_index];
+						_setData.setIcon = i.setIcon;
+						perData.admin.CampusF.appList[index] = _setData;
+					} else {
+						console.log("无应用", i);
+					}
+				});
+			}
+
+
 			perData.admin.index.list.forEach((i, index) => {
 				let _index = toolList.findIndex((i2) => i == i2.id);
 				if (_index != -1) {
@@ -218,7 +263,6 @@ const actions = {
 					console.log("无工具", i);
 				}
 			});
-
 			perData.admin.sidebar.list.forEach((i, index) => {
 				if (i.children) {
 					i.children.forEach((i2, index2) => {

+ 37 - 9
src/views/HomeView.vue

@@ -239,6 +239,8 @@ export default {
 					lim: 9999999,
 				},
 			];
+			
+
 			let res2 = await this.$ajax.post(API_CONFIG.baseUrl, params2);
 			let toolList = res2.data[0];
 			toolList.forEach((i) => {
@@ -247,13 +249,38 @@ export default {
 				i.argumentList = JSON.parse(i.argumentList);
 			});
 
-			// 第三步
+			let params3 = [
+				{
+					functionName: "select_schUsuallyApp",
+					userid: "",
+					stand: "cn",
+				},
+			];
+
+			let res3 = await this.$ajax.post(API_CONFIG.baseUrl, params3)
+
+			let _list = res3.data[0]
+
+			_list.forEach((i) => {
+				i.json = JSON.parse(i.json);
+			});
 
+			let appList = _list;
+
+			// 第三步
+			perData.desktop.list.forEach((i, index) => {
+				let _index = toolList.findIndex((i2) => i == i2.id);
+				if (_index != -1) {
+					perData.desktop.list[index] = toolList[_index];
+				} else {
+					console.log("无工具", i);
+				}
+			});
 			if (perData.admin.cocoFlow) {
 				perData.admin.cocoFlow.forEach((i, index) => {
-					let _index = toolList.findIndex((i2) => i.id == i2.id);
+					let _index = appList.findIndex((i2) => i.id == i2.id);
 					if (_index != -1) {
-						let _setData = toolList[_index];
+						let _setData = appList[_index];
 						_setData.setIcon = i.setIcon;
 						perData.admin.cocoFlow[index] = _setData;
 					} else {
@@ -263,9 +290,9 @@ export default {
 			}
 			if (perData.admin.cocoFlow2) {
 				perData.admin.cocoFlow2.forEach((i, index) => {
-					let _index = toolList.findIndex((i2) => i.id == i2.id);
+					let _index = appList.findIndex((i2) => i.id == i2.id);
 					if (_index != -1) {
-						let _setData = toolList[_index];
+						let _setData = appList[_index];
 						_setData.setIcon = i.setIcon;
 						perData.admin.cocoFlow2[index] = _setData;
 					} else {
@@ -273,18 +300,19 @@ export default {
 					}
 				});
 			}
-			if (perData.admin.CampusF.appList) {
+			if (perData.admin.CampusF && perData.admin.CampusF.appList) {
 				perData.admin.CampusF.appList.forEach((i, index) => {
-					let _index = toolList.findIndex((i2) => i.id == i2.id);
+					let _index = appList.findIndex((i2) => i.id == i2.id);
 					if (_index != -1) {
-						let _setData = toolList[_index];
+						let _setData = appList[_index];
 						_setData.setIcon = i.setIcon;
-						perData.admin.CampusF.toolList[index] = _setData;
+						perData.admin.CampusF.perData[index] = _setData;
 					} else {
 						console.log("无应用", i);
 					}
 				});
 			}
+
 			perData.admin.index.list.forEach((i, index) => {
 				let _index = toolList.findIndex((i2) => i == i2.id);
 				if (_index != -1) {

+ 635 - 68
src/views/kanBan/components/AschoolFeature.vue

@@ -1,5 +1,6 @@
 <template>
     <div style="display: flex;flex-direction: column;gap: 20px;height: 100%;">
+
         <div class="top">
             <div class="topTit">
                 <div>
@@ -7,13 +8,17 @@
                     <div style="height: 4px;background-color: #0663FE;width: 2rem;margin-top: 6px;"></div>
                 </div>
                 <div>
-                    <img src="../../../assets/img/bianji.svg" alt="">
+                    <img v-if="userinfo.role == 1 && userinfo.type == 1" 
+                    class="topTitEdit" 
+                    @click="editregion(0)"
+                    src="../../../assets/img/bianji.svg" alt="">
                 </div>
             </div>
             <div class="Topbri">
-                {{ fromL.admin.CampusF.GroupBri }}
+                {{ fromL.admin.CampusF ? fromL.admin.CampusF.GroupBri : '' }}
             </div>
         </div>
+
         <div class="feature">
             <div class="topTit">
                 <div>
@@ -21,16 +26,25 @@
                     <div style="height: 4px;background-color: #0663FE;width: 2rem;margin-top: 6px;"></div>
                 </div>
                 <div>
-                    <img src="../../../assets/img/bianji.svg" alt="">
+                    <img v-if="userinfo.role == 1 && userinfo.type == 1" 
+                    class="topTitEdit" 
+                    @click="editregion(1)"
+                    src="../../../assets/img/bianji.svg" alt="">
                 </div>
             </div>
 
-            <div style="display: flex;justify-content: space-between;">
-                <div class="featureCon" v-for="(i, index) in featureList" :key="index">
-                    <img style="width: 24px;" src="../../../assets/img/tese.svg" alt="">
-                    <div class="featureConTit">{{ i.name }}</div>
-                    <div class="Topbri">{{ i.bri }}</div>
-                </div>
+            <div  class="featureAll">
+                <template v-if="featureList.length">
+                    <div class="featureCon" v-for="(i, index) in featureList" :key="index">
+                        <img style="width: 34px;height: 34px;object-fit: contain;" :src="i.icon" alt="">
+                        <div class="featureConTit">{{ i.name }}</div>
+
+                        <el-tooltip class="item" effect="dark" :content="i.bri" placement="bottom">
+                            <div class="Topbri2">{{ i.bri }}</div>
+                        </el-tooltip>
+
+                    </div>
+                </template>
             </div>
         </div>
 
@@ -41,14 +55,22 @@
                     <div style="height: 4px;background-color: #0663FE;width: 2rem;margin-top: 6px;"></div>
                 </div>
                 <div>
-                    <img src="../../../assets/img/bianji.svg" alt="">
+                    <img v-if="userinfo.role == 1 && userinfo.type == 1" 
+                    class="topTitEdit" 
+                    @click="editregion(2)"
+                    src="../../../assets/img/bianji.svg" alt="">
                 </div>
             </div>
             <div class="Topbri">
-                {{ fromL.admin.CampusF.GroupBri }}
+                <el-tooltip class="item" effect="dark" :content="fromL.admin.CampusF ? fromL.admin.CampusF.teacherN.teaBri : ''" placement="bottom">
+                    <span>
+                        {{ fromL.admin.CampusF ? fromL.admin.CampusF.teacherN.teaBri : ''}}
+                    </span>
+                </el-tooltip>
+               
             </div>
 
-            <div style="display: flex;justify-content: space-between;">
+            <div class="featureAll">
                 <div class="featureCon2" v-for="(i, index) in teaData" :key="index">
                     <div class="featureConTit2">{{ i.bri }}</div>
                     <div class="Topbri">{{ i.name }}</div>
@@ -63,84 +85,542 @@
                     <div style="height: 4px;background-color: #0663FE;width: 2rem;margin-top: 6px;"></div>
                 </div>
                 <div>
-                    <img src="../../../assets/img/bianji.svg" alt="">
+                    <img v-if="userinfo.role == 1 && userinfo.type == 1" 
+                    class="topTitEdit" 
+                    src="../../../assets/img/bianji.svg" alt="">
                 </div>
             </div>
 
             <div class="AppStoreList">
-                <div class="AppStore" v-for="(i,index) in featureApp" :key="index">
-                    <img style="width: 24px;" src="../../../assets/img/bianji.svg" alt="">
-                    <div class="AppStoreCon">
-                        <img style="width: 18px;margin-bottom: 10px;" src="../../../assets/img/tese.svg" alt="">
-                        <div class="AppStoreConTit">{{i.name}}</div>
-                        <div class="AppStoreConBri">{{i.detail}}</div>
+                <template v-if="fromL.admin.CampusF">
+                    <div class="AppStore" v-for="(i,index) in fromL.admin.CampusF.appList" :key="index">
+                        <!-- <img style="width: 24px;" src="../../../assets/img/bianji.svg" alt=""> -->
+                        <div class="AppStoreCon">
+                            <img style="width: 32px;height: 32px;margin-bottom: 10px;object-fit: contain;" 
+                            :src="i.setIcon ? i.setIcon : i.json.icon" alt="">
+                            <div class="AppStoreConTit">{{i.name}}</div>
+                            <el-tooltip class="item" effect="dark" :content="i.detail" placement="bottom">
+                                <div class="AppStoreConBri">{{i.detail}}</div>
+                            </el-tooltip>
+                        </div>
                     </div>
-                </div>
+                </template>
+               
 
-                <div class="AppStore">
-                    <div style="height: 24px;"></div>
+                <div class="AppStore" 
+                v-if="userinfo.role == 1 && userinfo.type == 1 && fromL.admin.CampusF && fromL.admin.CampusF.appList.length < 8" 
+                @click="editregion(3)">
+                    <!-- <div style="height: 24px;"></div> -->
                     <div class="AppAdd">
                         <img src="../../../assets/img/add.svg" alt="">
                     </div>
-                    <div>
-
-                    </div>
                 </div>
             </div>
 
         </div>
+
+
+        <!-- 修改校区特色弹框 -->
+        <el-dialog
+        title="添加"
+        :visible.sync="editVisible"
+        close-on-click-modal
+        class="Fedialog"
+        :before-close="handleClose">
+
+            <el-input
+                v-if="isBtn === 0"
+                type="textarea"
+                :rows="4"
+                placeholder="请输入内容"
+                v-model="CampusF.GroupBri">
+            </el-input>
+        
+            <el-table
+                :data="CampusF.feature"
+                v-if="isBtn === 1"
+                stripe
+                border
+                style="width: 100%"
+            >
+                <el-table-column
+                    label="icon"
+                    min-width="200"
+                    show-overflow-tooltip
+                >
+                    <template slot-scope="scope">
+                        <img style="height: 30px;width: 30px;object-fit: cover;" :src="scope.row.icon" alt="">
+                    </template>
+                </el-table-column>
+
+                <el-table-column
+                    label="标题"
+                    min-width="200"
+                    show-overflow-tooltip
+                >
+                    <template slot-scope="scope">{{
+                        scope.row.name ? scope.row.name : "-"
+                    }}</template>
+                </el-table-column>
+
+                <el-table-column
+                    label="简介"
+                    min-width="200"
+                    show-overflow-tooltip
+                >
+                    <template slot-scope="scope">{{
+                        scope.row.bri ? scope.row.bri : "-"
+                    }}</template>
+                </el-table-column>
+
+                <el-table-column
+                    label="修改"
+                    min-width="200"
+                    show-overflow-tooltip
+                >
+                    <template  slot-scope="scope">
+                        <button
+                            @click="editRunS(scope.$index,scope.row,0)"
+                            style="
+                                color: #308fff;
+                                background: none;
+                                border: none;
+                                cursor: pointer;
+                                margin-left: 25px;
+                            "
+                        >
+                            修改
+                        </button>
+                        <button
+                            v-if="CampusF.feature.length > 1"
+                            @click="delFe(scope.$index,0)"
+                            style="
+                                color: red;
+                                background: none;
+                                border: none;
+                                cursor: pointer;
+                                margin-left: 25px;
+                            "
+                        >
+                            删除
+                        </button>
+                        <button
+                            v-if="scope.$index == CampusF.feature.length - 1"
+                            @click="add1(scope.$index)"
+                            style="
+                                color: #308fff;
+                                background: none;
+                                border: none;
+                                cursor: pointer;
+                                margin-left: 25px;
+                            "
+                        >
+                            添加
+                        </button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            
+            <div class="ea_appList"  v-if="isBtn === 2">
+                <el-input
+                    style="margin-bottom: 10px;"
+                    type="textarea"
+                    :rows="2"
+                    resize="none"
+                    placeholder="请输入描述"
+                    v-model="CampusF.teacherN.teaBri">
+                </el-input>
+                <el-table
+                    :data="CampusF.teacherN.list"
+                    stripe
+                    border
+                    style="width: 100%"
+                >
+                    <el-table-column
+                        label="标题"
+                        min-width="200"
+                        show-overflow-tooltip
+                    >
+                        <template slot-scope="scope">
+                            {{ scope.row.name ? scope.row.name : "-" }}
+                        </template>
+                    </el-table-column>
+
+                    <el-table-column
+                        label="简介"
+                        min-width="200"
+                        show-overflow-tooltip
+                    >
+                        <template slot-scope="scope">{{
+                            scope.row.bri ? scope.row.bri : "-"
+                        }}</template>
+                    </el-table-column>
+
+                    <el-table-column
+                        label="修改"
+                        min-width="200"
+                        show-overflow-tooltip
+                    >
+                        <template  slot-scope="scope">
+                            <button
+                                @click="editRunS(scope.$index,scope.row,1)"
+                                style="
+                                    color: #308fff;
+                                    background: none;
+                                    border: none;
+                                    cursor: pointer;
+                                    margin-left: 25px;
+                                "
+                            >
+                                修改
+                            </button>
+
+                            <button
+                                v-if="CampusF.teacherN.list.length > 1"
+                                @click="delFe(scope.$index,1)"
+                                style="
+                                    color: red;
+                                    background: none;
+                                    border: none;
+                                    cursor: pointer;
+                                    margin-left: 25px;
+                                "
+                            >
+                                删除
+                            </button>
+
+                            <button
+                                v-if="scope.$index == CampusF.teacherN.list.length - 1"
+                                @click="add2(scope.$index,scope.row,0)"
+                                style="
+                                    color: #308fff;
+                                    background: none;
+                                    border: none;
+                                    cursor: pointer;
+                                    margin-left: 25px;
+                                "
+                            >
+                                添加
+                            </button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </div>
+
+            <div class="ea_appList" v-if="isBtn === 3">
+                <div style="display: grid;grid-template-columns: repeat(3, minmax(0, 1fr));gap: 20px;">
+                        <div
+                            class="appItem"
+                            v-for="(item, index) in CampusF.appList"
+                            :key="item.id"
+                        >
+                            <div class="ai_left">
+                                <el-image
+                                    style="width: 100%; height: 100%; cursor: pointer"
+                                    :src="item.setIcon ? item.setIcon : item.json.icon"
+                                    fit="cover"
+                                    @click="updateIconCocoFLow(index)"
+                                ></el-image>
+                            </div>
+                            <div class="ai_right">
+                                <div>{{ item.name }}</div>
+                                <div class="ai_r_btn">
+                                    <!-- <span  @click="moveApp(item.id, 0)">上</span>
+                                    <span  @click="moveApp(item.id, 1)">下</span> -->
+                                </div>
+                                <span>{{ item.detail }}</span>
+                            </div>
+                        </div>
+                </div>
+            </div>
+
+
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="handleClose">取 消</el-button>
+                <el-button type="primary" @click="setJson">确 定</el-button>
+            </span>
+        </el-dialog>
+
+		<addCampusDialog ref="addCampusDialogRef" @success="addCampusSuccess" />
+
     </div>
 </template>
 
 <script>
 import { mapGetters } from 'vuex';
 import { API_CONFIG } from '../../../common/apiConfig.js';
+import addCampusDialog from "./addCampusDialog";
+import { myMixin } from "@/mixins/mixin.js"
+
+import axios from '@/common/axios.config'; // 引入 axios 配置实例
+import store from '../../../store'
+
 export default {
+    mixins: [ myMixin ],
+
+	components: {
+        addCampusDialog
+    },
     data() {
         return {
-            featureApp:[]
+            featureApp:[],
+            // 判断弹框是添加还是编辑
+            editTtype:0,
+            // 添加与编辑弹框显示
+            editVisible:false,
+
+            loading:false,
+
+            // 判断点击的哪个部分的编辑按钮 
+            isBtn:-1,
+
+            // 所有应用列表
+            appList:[],
+
+            // 页面校区特色数据
+            CampusF:[],
+
+
+
+            // 修改校区特色信息
+            CampusData:'',
+            CampusType:0,
+            // 0 办学特色 1 师资力量
+            CampusNum:0,
         }
     },
     computed: {
-        ...mapGetters(['fromL']),
+        ...mapGetters(['fromL','userinfo']),
         featureList() {
-            return this.fromL.admin.CampusF.feature; // 从 Vuex 的 fromL 中获取 featureList
+            if (this.fromL.admin.CampusF) {
+                return this.fromL.admin.CampusF.feature; // 从 Vuex 的 fromL 中获取 featureList
+            }
+            else{
+                return []
+            }
         },
         teaData() {
-            return this.fromL.admin.CampusF.teacherN.list; // 从 Vuex 的 fromL 中获取 teaData
+            if (this.fromL.admin.CampusF) {
+                return this.fromL.admin.CampusF.teacherN.list; // 从 Vuex 的 fromL 中获取 teaData
+            }else{
+                return []
+            }
         },
     },
     methods: {
-        // 获取cocoFlow2应用
-        getData() {
-            let cocoFlowCopy = []
-            if (this.fromL.admin.cocoFlow2 && this.fromL.admin.cocoFlow2.length) {
-                cocoFlowCopy = this.fromL.admin.cocoFlow2.map(item => item.id);
-            } else {
-                return
+       
+        // 点击区块编辑
+        async editregion(type){
+            if (type == 3) this.getAppData()
+            this.isBtn = type
+            this.editVisible = true
+        },
+        handleClose(){
+            this.editVisible = false
+            this.isBtn = -1
+            this.appList = []
+
+            // 修改校区特色信息
+            this.CampusData=''
+            this.CampusType=0
+            // 0 办学特色 1 师资力量
+            this.CampusNum=0
+
+            if (this.fromL.admin.CampusF) {
+                this.CampusF = JSON.parse(JSON.stringify(this.fromL.admin.CampusF))
             }
 
-            let params = [
-                {
-                    functionName: API_CONFIG.ajax_AdminApp.functionName,
-                    con: cocoFlowCopy.join(','),
-                },
-            ];
-
-            this.$ajax
-                .post(API_CONFIG.baseUrl, params)
-                .then((res) => {
-                    this.featureApp = res.data[0]
-                    // console.log("后端传的数据", this.featureApp);
-                    
-                })
-                .catch((err) => {
-                    console.log(err);
-                });
         },
+        // 添加办学特色
+        add1(){
+			this.CampusNum = this.CampusF.feature.length
+            this.CampusType = 0
+
+            // this.CampusF.feature.push({bri:'',icon:'',name:''})
+			this.$refs.addCampusDialogRef.open({bri:'',icon:'',name:''}, 0);
+
+        },
+        // 添加师资力量
+        add2(){
+			this.CampusNum = this.CampusF.teacherN.list.length
+            this.CampusType = 1
+			this.$refs.addCampusDialogRef.open({bri:'',name:''}, 1);
+
+            // this.CampusF.teacherN.list.push()
+        },
+        // 修改办学特色
+        editRunS(index,val,type){
+            this.CampusData = val
+			this.CampusType = type
+			this.CampusNum = index
+			this.$refs.addCampusDialogRef.open(val, type);
+        },
+         //修改 0 办学特色 1 师资力量
+         addCampusSuccess(val){
+            console.log('val',val);
+            console.log('CampusType',this.CampusType);
+            
+            
+            if (this.CampusType == 0) {
+				this.CampusF.feature.splice(this.CampusNum,1,val.item)
+			}else{
+				this.CampusF.teacherN.list.splice(this.CampusNum,1,val.item)
+			}
+        },
+        // 删除办学特色
+        delFe(index,type){
+            if (type == 0) {
+                this.CampusF.feature.splice(index,1)
+            }else{
+                this.CampusF.teacherN.list.splice(index,1)
+            }
+        },
+        moveApp(){
+
+        },
+        getAppData() {
+			return new Promise((resolve) => {
+				let params = [
+					{
+						functionName: "select_schUsuallyApp",
+						userid: "",
+						stand: "cn",
+					},
+				];
+				this.loading = true;
+				this.$ajax
+					.post(API_CONFIG.baseUrl, params)
+					.then((res) => {
+						let _data = res.data;
+						let _list = _data[0];
+						_list.forEach((i) => {
+							i.json = JSON.parse(i.json);
+						});
+						this.appList = _list;
+						// this.loading = false;
+						resolve(_list);
+					})
+					.catch((err) => {
+						console.log(err);
+						// this.loading = false;
+						this.$message.error("获取应用数据失败");
+						// this.close();
+					});
+			});
+		},
+        // 提交
+        setJson() {
+			this.loading = true;
+            
+			let _form = JSON.parse(JSON.stringify(this.fromL));
+
+			_form.desktop.list = _form.desktop.list.map((i) => i.id);
+
+			_form.admin.index.list = _form.admin.index.list.map((i) => i.id);
+
+			_form.admin.sidebar.list.forEach((i, index) => {
+				if (i.children) {
+					_form.admin.sidebar.list[index].children = i.children.map(
+						(i) => i.id
+					);
+				} else {
+					_form.admin.sidebar.list[index] = i.id;
+				}
+			});
+
+			_form.admin.cocoFlow = _form.admin.cocoFlow
+				? _form.admin.cocoFlow.map((i) => {
+						return { id: i.id, setIcon: i.setIcon }})
+				: [];
+
+            _form.admin.cocoFlow2 = _form.admin.cocoFlow2
+            ? _form.admin.cocoFlow2.map((i) => {
+                    return { id: i.id, setIcon: i.setIcon }})
+            : [];
+
+
+            _form.admin.CampusF  = this.CampusF
+
+            _form.admin.CampusF.appList  = this.CampusF.appList
+            ? this.CampusF.appList.map((i) => {
+                    return { id: i.id, setIcon: i.setIcon }})
+            : [];
+
+			let params = [
+				{
+					functionName: "update_orgOroid_json_byId",
+					id: this.userinfo.organizeid,
+					ujson: JSON.stringify(_form),
+					type: 'school',
+				},
+			];
+            console.log('params',params);
+            
+			console.log('_form',_form);
+
+			axios.post(API_CONFIG.baseUrl, params)
+				.then(async (res) => {
+					let _data = res.data;
+					if (_data == 1) {
+						this.$message.success("修改权限成功");
+						// this.$emit("getData");
+                        
+                        await store.dispatch('user/getschPerInfo')
+
+						// await addOp({
+						// 	uid: this.userid,
+						// 	cid: this.data.id,
+						// 	type: "user_op",
+						// 	content: `修改了${this.data.name}的权限设置`,
+						// });
+						this.handleClose();
+
+                        this.addOp3('1', "", {
+							uid: this.userinfo.userid,
+							cid: this.userinfo.organizeid,
+							type: "user_op",
+							content: `修改了${this.userinfo.schoolName}的权限设置`,
+						}, "success")
+
+					} else {
+						this.$message.error("修改权限失败");
+					}
+					this.loading = false;
+				})
+				.catch((err) => {
+
+					console.log(err);
+					this.loading = false;
+					this.$message.error("修改权限失败");
+
+                    this.addOp3('1', "", {
+                        uid: this.userid,
+                        cid: this.data.id,
+                        type: "user_op",
+                        content: `修改了${this.data.name}的权限设置`,
+                    }, err)
+				});
+		},
     },
     mounted() {
-        this.getData()
+        if (this.fromL.admin.CampusF) {
+            this.CampusF = JSON.parse(JSON.stringify(this.fromL.admin.CampusF))
+        }else {
+            this.CampusF = {
+                    GroupBri:'暂无简介',
+                    feature:[
+                        {bri:'暂无简介',icon:'https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/tese1745913146000.svg',name:'默认标题'}
+                    ],
+                    teacherN:{
+                        teaBri:'暂无简介',
+                        list: [
+                            {bri:'默认标题',name:'暂无数据'}
+                        ],
+                    },
+                    appList: [],
+                }
+        }
     }
 }
 </script>
@@ -160,24 +640,34 @@ export default {
 .topTit {
     font-family: PingFang SC;
     font-weight: 600;
-    font-size: 20px;
+    font-size: 18px;
     line-height: 22px;
     color: #0663FE;
     display: flex;
     height: 36px;
     justify-content: space-between;
 }
-.topTit img{
+.topTit .topTitEdit{
     cursor: pointer;
 }
 .Topbri{
     font-family: PingFang SC;
     font-weight: 400;
-    font-size: 12px;
+    font-size: 14px;
     line-height: 22px;
     color: #000;
 }
-
+.Topbri2{
+    font-family: PingFang SC;
+    font-weight: 400;
+    font-size: 14px;
+    color: #000;
+    display: -webkit-box;
+    -webkit-line-clamp: 2; 
+    -webkit-box-orient: vertical; 
+    overflow: hidden; 
+    text-overflow: ellipsis;
+}
 .feature {
     width: 100%;
     padding: 36px 27px;
@@ -192,8 +682,8 @@ export default {
 
 .featureCon {
     background: #FFFFFF;
-    width: 24%;
-    height: 206px;
+    width: 100%;
+    height: 211px;
     display: flex;
     flex-direction: column;
     justify-content: center;
@@ -203,10 +693,14 @@ export default {
     box-sizing: border-box;
     gap: 18px;
 }
-
+.featureAll{
+    grid-template-columns: repeat(4, 1fr);
+    display: grid;
+    gap: 20px;
+}
 .featureCon2 {
     background: #FFFFFF;
-    width: 24%;
+    width: 100%;
     height: 94px;
     display: flex;
     flex-direction: column;
@@ -221,7 +715,7 @@ export default {
 .featureConTit {
     font-family: PingFang SC;
     font-weight: 600;
-    font-size: 20px;
+    font-size: 18px;
     line-height: 22px;
     color: #000;
 }
@@ -235,27 +729,29 @@ export default {
 }
 
 .AppStoreList {
-    display: flex;
+    display: grid;
+    grid-template-columns: repeat(4, 1fr);
     gap: 20px;
 }
 
 .AppStore {
-    width: 33%;
     display: flex;
     flex-direction: column;
     gap: 10px;
+    min-height: 171px;
+    min-width: 197px;
 }
 
 .AppStoreCon {
-    height: 122px;
     border-radius: 10px;
     padding: 17px 17px;
+    height: 100%;
     box-sizing: border-box;
     background: #fff;
 }
 
 .AppAdd {
-    height: 122px;
+    height: 100%;
     border-radius: 10px;
     padding: 17px 17px;
     box-sizing: border-box;
@@ -271,12 +767,17 @@ export default {
     font-weight: 500;
     font-size: 16px;
     margin-bottom: 5px;
+    display: -webkit-box; 
+    -webkit-line-clamp: 2; 
+    -webkit-box-orient: vertical; 
+    overflow: hidden; 
+    text-overflow: ellipsis;
 }
 
 .AppStoreConBri {
     font-family: PingFang SC;
     font-weight: 300;
-    font-size: 12px;
+    font-size: 14px;
     color: #969BA3;
     display: -webkit-box; 
     -webkit-line-clamp: 2; 
@@ -290,4 +791,70 @@ export default {
     font-size: 10px;
     color: #969BA3;
 }
+.appItem {
+	height: 100px;
+	background-color: white;
+	box-sizing: border-box;
+	border: solid 1px #f3f4f6;
+	padding: 10px;
+	border-radius: 8px;
+	cursor: pointer;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	transition: 0.3s;
+}
+
+.appActive {
+	border-color: #409eff;
+	box-shadow: 0px 6px 30px 5px #00000015;
+}
+
+.appItem:hover {
+	box-shadow: 0px 6px 30px 5px #00000015;
+}
+.ai_left {
+	width: 80px;
+	height: 80px;
+	box-sizing: border-box;
+	padding: 10px;
+	margin-right: 10px;
+}
+
+.ai_right {
+	width: calc(100% - 80px - 10px);
+	position: relative;
+}
+
+.ai_right > div {
+	max-width: calc(100% - 50px);
+	font-weight: bold;
+	overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis;
+	font-size: 16px;
+	color: #000;
+	margin-bottom: 10px;
+}
+.ai_right > span {
+	font-size: 14px;
+	color: #00000099;
+	display: -webkit-box;
+	-webkit-box-orient: vertical;
+	-webkit-line-clamp: 2;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+.Fedialog >>> .el-dialog{
+    width: 60% !important;
+    min-width: 1000px;
+}
+.Fedialog >>> .el-dialog__header {
+	padding: 15px 20px;
+	background: #454545;
+}
+
+.Fedialog >>> .el-dialog__title {
+	color: #fff;
+}
 </style>

+ 186 - 0
src/views/kanBan/components/addCampusDialog.vue

@@ -0,0 +1,186 @@
+<template>
+	<div>
+		<el-dialog
+			:title="type == 'edit' ? '编辑办学特色' : '编辑师资力量'"
+			class="table"
+			:visible.sync="show"
+			:close-on-click-modal="false"
+			width="800px"
+			top="8vh"
+		>
+			<div v-loading="loading">
+				<el-image
+					style="
+						width: 50px;
+						height: 50px;
+						cursor: pointer;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+					"
+					:src="form.icon"
+					fit="cover"
+					v-if="this.type == 0"
+					@click="addUrlIcon()"
+				>
+					<div slot="error" class="image-slot" @click="addUrlIcon()">
+						<i class="el-icon-picture-outline"></i>
+					</div>
+				</el-image>
+
+				<div>
+					<div class="Tit">标题</div>
+					<div>
+						<el-input v-model="form.name" placeholder="请输入内容"></el-input>
+					</div>
+				</div>
+
+				<div>
+					<div class="Tit">描述</div>
+					<div>
+                        <el-input
+                            type="textarea"
+                            :rows="3"
+                            resize="none"
+                            placeholder="请输入描述"
+                            v-model="form.bri">
+                        </el-input>
+					</div>
+				</div>
+			</div>
+			<!-- 按钮区域 -->
+			<div slot="footer" class="el-dialog__footer">
+				<el-button @click="close()">取 消</el-button>
+				<el-button type="primary" @click="submit()">确认</el-button>
+			</div>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+import "@/common/aws-sdk-2.235.1.min.js";
+export default {
+	data() {
+		return {
+			show: false,
+			loading: false,
+			form: {
+				name: "",
+				icon: "",
+				bri: "",
+			},
+			type: null,
+		};
+	},
+	methods: {
+		open(data, type) {
+			this.form = JSON.parse(JSON.stringify(data));
+			console.log('type',type);
+			
+			this.type = type;
+			this.show = true;
+		},
+		close() {
+			this.show = false;
+			this.init();
+		},
+		init() {
+			this.form = {
+				name: "",
+				icon: "",
+				bri: "",
+			};
+		},
+		submit() {
+			if (this.type == 0) {
+				if (!this.form.name || !this.form.icon || !this.form.bri)
+					return this.$message.error("请完善表单");
+			} else {
+				if (!this.form.name || !this.form.bri)
+					return this.$message.error("请完善表单");
+			}
+			this.$emit("success", { item: this.form });
+            this.close()
+		},
+		async addUrlIcon() {
+			let _url = await this.uploadFile("image/*");
+			console.log("addUrlIcon", _url);
+
+			if (_url) {
+				this.form.icon = _url;
+			} else {
+				return console.log("无图片");
+			}
+		},
+		uploadFile(accept = "*") {
+			return new Promise((resolve) => {
+				const input = document.createElement("input");
+				input.type = "file";
+				input.accept = accept;
+				input.onchange = (event) => {
+					const file = event.target.files[0];
+					if (file) {
+						let credentials = {
+							accessKeyId: "AKIATLPEDU37QV5CHLMH",
+							secretAccessKey: "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",
+						}; //秘钥形式的登录上传
+						window.AWS.config.update(credentials);
+						window.AWS.config.region = "cn-northwest-1"; //设置区域
+						let bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
+						// let _name = file.name;
+						// let size = file.size;
+						let params = {
+							Key:
+								file.name.split(".")[0] +
+								new Date().getTime() +
+								"." +
+								file.name.split(".")[file.name.split(".").length - 1],
+							ContentType: file.type,
+							Body: file,
+							"Access-Control-Allow-Credentials": "*",
+							ACL: "public-read",
+						}; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
+						let options = {
+							partSize: 2048 * 1024 * 1024,
+							queueSize: 2,
+							leavePartsOnError: true,
+						};
+
+						bucket
+							.upload(params, options)
+							.on("httpUploadProgress", (evt) => {
+								console.log(evt);
+							})
+							.send((err, data) => {
+								if (err) {
+									this.$message.error("上传失败");
+									return resolve("");
+								} else {
+									return resolve(data.Location);
+								}
+							});
+					} else {
+						resolve("");
+					}
+				};
+				input.click();
+			});
+		},
+	},
+};
+</script>
+
+<style scoped>
+.table >>> .el-dialog__header {
+	padding: 15px 20px;
+	background: #454545;
+}
+
+.table >>> .el-dialog__title {
+	color: #fff;
+}
+.Tit{
+    padding: 15px 0;
+    font-size: 14px;
+}
+</style>

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels