소스 검색

修复群聊管理

1
mo 3 년 전
부모
커밋
3a60813de2

+ 8 - 0
src/components/select-all/index.vue

@@ -23,6 +23,7 @@
         v-bind="{ ...$attrs, ...$props }"
         v-bind="{ ...$attrs, ...$props }"
         v-on:input="(value) => $emit('input', value)"
         v-on:input="(value) => $emit('input', value)"
         @change="onChange"
         @change="onChange"
+        @remove-tag="onRemoveTag"
         ref="select"
         ref="select"
       >
       >
         <slot />
         <slot />
@@ -104,6 +105,10 @@ export default {
       this.$emit("change", val);
       this.$emit("change", val);
       this.setHeight()
       this.setHeight()
     },
     },
+    onRemoveTag(val){
+       this.$emit("removeTag", val);
+      this.setHeight()
+    },
     setHeight() {
     setHeight() {
       setTimeout(() => {
       setTimeout(() => {
         this.btnheight = this.$refs?.select.$el.offsetHeight;
         this.btnheight = this.$refs?.select.$el.offsetHeight;
@@ -129,7 +134,9 @@ export default {
   align-items: center;
   align-items: center;
   .select {
   .select {
     flex: 1;
     flex: 1;
+
     /deep/ .el-input__inner {
     /deep/ .el-input__inner {
+        min-height: 37px!important;
       border-radius: 4px 0 0 4px;
       border-radius: 4px 0 0 4px;
     }
     }
   }
   }
@@ -140,6 +147,7 @@ export default {
   border-left: none;
   border-left: none;
   border-radius: 0 4px 4px 0;
   border-radius: 0 4px 4px 0;
   // height: 40px;
   // height: 40px;
+  min-height: 37px;
 }
 }
 .item {
 .item {
   width: 100%;
   width: 100%;

+ 2 - 1
src/constant/index.js

@@ -476,7 +476,8 @@ export const catgGoupType = {
   HIGH_ONLINE:'线上基础技能班',
   HIGH_ONLINE:'线上基础技能班',
   MUSIC_NETWORK:'乐团网管课',
   MUSIC_NETWORK:'乐团网管课',
   PARENT_MEETING:'家长会',
   PARENT_MEETING:'家长会',
-  TRAINING:'训练营'
+  TRAINING:'训练营',
+  REPERTOIRE_PLAY:'曲目演奏课',
 }
 }
 
 
 export const catType = {
 export const catType = {

+ 18 - 0
src/views/baseRulesManager/components/otherRules.vue

@@ -207,6 +207,24 @@
             网络教室自动关闭。
             网络教室自动关闭。
           </el-form-item>
           </el-form-item>
         </el-row>
         </el-row>
+        <el-row>
+
+          <el-form-item
+            prop="232"
+            :rules="[
+              {
+                required: true,
+                message: '请输入系统消息用户编号',
+              },
+            ]"
+          >
+              系统消息用户编号:
+            <el-input class="marginLR5"  style="width: 180px"  v-model="form['232']" placeholder="请输入系统消息用户编号">
+
+            </el-input>。
+
+          </el-form-item>
+        </el-row>
       </el-form>
       </el-form>
       <el-button
       <el-button
         type="primary"
         type="primary"

+ 8 - 11
src/views/groupChatManager/chatDetail.vue

@@ -14,7 +14,10 @@
           </div>
           </div>
         </descriptions-item>
         </descriptions-item>
         <descriptions-item label="所属乐团:">
         <descriptions-item label="所属乐团:">
-          {{ detail.tags || "--" }}
+          <div class="flexBox">
+            {{ detail.tags || "--" }}
+            <i class="el-icon-edit" @click="reseDetail('tags')"></i>
+          </div>
         </descriptions-item>
         </descriptions-item>
 
 
         <descriptions-item label="群聊类型:">
         <descriptions-item label="群聊类型:">
@@ -63,7 +66,7 @@
         <auth auths="imGroupMember/addGroupMember">
         <auth auths="imGroupMember/addGroupMember">
           <el-button type="primary" @click="addMembers">添加成员</el-button>
           <el-button type="primary" @click="addMembers">添加成员</el-button>
         </auth>
         </auth>
-        <auth auths="imGroup/quitGroup" style="margin-left:10px;">
+        <auth auths="imGroup/quitGroup" style="margin-left: 10px">
           <el-button type="danger" @click="deteleMembers">移除成员</el-button>
           <el-button type="danger" @click="deteleMembers">移除成员</el-button>
         </auth>
         </auth>
       </div>
       </div>
@@ -103,18 +106,12 @@
           <el-table-column align="center" prop="roleType" label="操作">
           <el-table-column align="center" prop="roleType" label="操作">
             <template slot-scope="scope">
             <template slot-scope="scope">
               <div>
               <div>
-                <auth
-                  auths="imGroup/updateRoleType"
-                  v-if="scope.row.roleType"
-                >
+                <auth auths="imGroup/updateRoleType" v-if="scope.row.roleType">
                   <el-button type="text" @click="resetroleType(scope.row)"
                   <el-button type="text" @click="resetroleType(scope.row)"
                     >修改角色</el-button
                     >修改角色</el-button
                   >
                   >
                 </auth>
                 </auth>
-                <auth
-                  auths="imGroup/quitGroup"
-                  v-if="!scope.row.sendFlag"
-                >
+                <auth auths="imGroup/quitGroup" v-if="!scope.row.sendFlag">
                   <el-button type="text" @click="deleteStudent(scope.row)"
                   <el-button type="text" @click="deleteStudent(scope.row)"
                     >移除成员</el-button
                     >移除成员</el-button
                   >
                   >
@@ -133,7 +130,7 @@
         />
         />
       </div>
       </div>
     </div>
     </div>
-    <eidtCatInfo ref="eidtCatInfo" @getList="getList" />
+    <eidtCatInfo ref="eidtCatInfo" @getList="getDetail" />
     <addMember ref="addMember" @getList="getList" />
     <addMember ref="addMember" @getList="getList" />
     <resetRoleType ref="resetRoleType" @getList="getList" />
     <resetRoleType ref="resetRoleType" @getList="getList" />
   </div>
   </div>

+ 16 - 5
src/views/groupChatManager/model/eidtCatInfo.vue

@@ -36,6 +36,14 @@
             ></el-option>
             ></el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
+        <el-form-item
+          v-if="type == 'tags'"
+          label="群聊标签"
+          :rules="[{ required: true, message: '请输入群聊标签' }]"
+          prop="tags"
+        >
+          <el-input class="w100" v-model="formes.tags"></el-input>
+        </el-form-item>
       </el-form>
       </el-form>
       <div slot="footer" class="dialog-footer">
       <div slot="footer" class="dialog-footer">
         <el-button @click="onClose">取 消</el-button>
         <el-button @click="onClose">取 消</el-button>
@@ -55,13 +63,14 @@ export default {
         id: "",
         id: "",
         name: "",
         name: "",
         groupType: "",
         groupType: "",
+        tags: "",
       },
       },
       catgGoupTypeList,
       catgGoupTypeList,
       lookVisible: false,
       lookVisible: false,
       chioseIdList: null,
       chioseIdList: null,
       activeRow: null,
       activeRow: null,
       type: "",
       type: "",
-      title:''
+      title: "",
     };
     };
   },
   },
 
 
@@ -76,10 +85,12 @@ export default {
     },
     },
     openResetDioag(row, type) {
     openResetDioag(row, type) {
       this.type = type;
       this.type = type;
-      if(type == 'name'){
-        this.title = '修改群聊名称'
-      }else{
-         this.title = '修改群聊类型'
+      if (type == "name") {
+        this.title = "修改群聊名称";
+      } else if (type == "type") {
+        this.title = "修改群聊类型";
+      } else {
+        this.title = "修改群聊标签";
       }
       }
       // this.activeRow = row;
       // this.activeRow = row;
       this.formes = { ...row };
       this.formes = { ...row };

+ 1 - 1
src/views/liveClassManager/index.vue

@@ -325,7 +325,7 @@ export default {
     resetLive(row) {
     resetLive(row) {
       let params = {
       let params = {
         path: "/business/createLiveClass",
         path: "/business/createLiveClass",
-        query: { ...row },
+        query: { id:row.id,roomUid:row.roomUid},
       };
       };
       this.$router.push(params, (route) => {
       this.$router.push(params, (route) => {
         route.meta.title = "修改直播课";
         route.meta.title = "修改直播课";

+ 241 - 154
src/views/liveClassManager/newLiveClass.vue

@@ -3,7 +3,7 @@
     <h2>
     <h2>
       <el-page-header @back="onCancel" :content="name"></el-page-header>
       <el-page-header @back="onCancel" :content="name"></el-page-header>
     </h2>
     </h2>
-    <div class="m-core">
+    <div class="m-core" v-show="activeType == 1">
       <el-form
       <el-form
         :model="form"
         :model="form"
         ref="form"
         ref="form"
@@ -176,89 +176,12 @@
               <el-radio label="ORGAN">分部</el-radio>
               <el-radio label="ORGAN">分部</el-radio>
               <el-radio label="SCHOOL">合作单位</el-radio>
               <el-radio label="SCHOOL">合作单位</el-radio>
               <el-radio label="TEAM">乐团</el-radio>
               <el-radio label="TEAM">乐团</el-radio>
-              <el-radio label="CAT">群聊</el-radio>
+              <el-radio label="GROUP">群聊</el-radio>
               <el-radio label="STUDENT">学生</el-radio>
               <el-radio label="STUDENT">学生</el-radio>
             </el-radio-group>
             </el-radio-group>
           </el-form-item>
           </el-form-item>
         </el-row>
         </el-row>
-        <el-row class="row">
-          <el-form-item
-            v-if="
-              form.popularizeType == 'SCHOOL' ||
-              form.popularizeType == 'ORGAN' ||
-              form.popularizeType == 'TEAM'
-            "
-            label="分部"
-            prop="organIds"
-            :rules="[{ required: true, message: '请选择分部' }]"
-          >
-            <select-all
-              v-model.trim="form.organIds"
-              filterable
-              clearable
-              :isCollapseTags ="false"
-              placeholder="请选择分部"
-              @change="changeSection"
-            >
-              <el-option
-                v-for="(item, index) in selects.branchs"
-                :key="index"
-                :label="item.name"
-                :value="item.id"
-              ></el-option>
-            </select-all>
-          </el-form-item>
-        </el-row>
-        <el-row class="row">
-          <el-form-item
-            v-if="form.popularizeType == 'SCHOOL'"
-            label="合作单位"
-            prop="schoolIds"
-            :rules="[{ required: true, message: '请选择合作单位' }]"
-          >
-            <select-all
-              v-model.trim="form.schoolIds"
-              :disabled="form.organIds.length <= 0"
-              filterable
-              clearable
-              multiple
 
 
-            >
-              <el-option
-                v-for="(item, index) in cooperationList"
-                :key="index"
-                :label="item.name"
-                :value="item.id"
-              ></el-option>
-            </select-all>
-          </el-form-item>
-        </el-row>
-        <el-row class="row">
-          <el-form-item
-            v-if="form.popularizeType == 'TEAM'"
-            label="乐团"
-            prop="teamIds"
-            :rules="[{ required: true, message: '请选择乐团' }]"
-          >
-            <select-all
-              v-model.trim="form.teamIds"
-              :disabled="form.organIds.length <= 0"
-              filterable
-              clearable
-              multiple
-            >
-              <el-option
-                v-for="(item, index) in teamList"
-                :key="index"
-                :label="item.name"
-                :value="item.id"
-              ></el-option>
-            </select-all>
-          </el-form-item>
-        </el-row>
-        <el-row>
-
-        </el-row>
         <el-alert
         <el-alert
           title="直播间信息"
           title="直播间信息"
           type="info"
           type="info"
@@ -341,7 +264,114 @@
         <el-button type="primary" @click="submit">提交</el-button>
         <el-button type="primary" @click="submit">提交</el-button>
       </el-row>
       </el-row>
     </div>
     </div>
+    <div class="m-core" v-show="activeType == 2">
+      <el-alert
+        title="观看权限详情"
+        type="info"
+        :closable="false"
+        style="margin-bottom: 20px"
+      ></el-alert>
+      <el-form
+        :model="form"
+        ref="form"
+        label-width="300px"
+        :inline="true"
+        label-position="left"
+      >
+        <el-row class="row">
+          <el-form-item
+            v-if="
+              form.popularizeType == 'SCHOOL' ||
+              form.popularizeType == 'ORGAN' ||
+              form.popularizeType == 'TEAM'
+            "
+            label="分部"
+            prop="organIds"
+            :rules="[{ required: true, message: '请选择分部' }]"
+          >
+            <select-all
+              v-model.trim="form.organIds"
+              filterable
+              clearable
+              :isCollapseTags="false"
+              placeholder="请选择分部"
+              @change="changeSection"
+              @clearable="clearSection"
+              @removeTag="removetagSection"
+            >
+              <el-option
+                v-for="(item, index) in selects.branchs"
+                :key="index"
+                :label="item.name"
+                :value="item.id"
+              ></el-option>
+            </select-all>
+          </el-form-item>
+        </el-row>
+        <el-row class="row">
+          <el-form-item
+            v-if="form.popularizeType == 'SCHOOL'"
+            label="合作单位"
+            prop="schoolIds"
+            :rules="[{ required: true, message: '请选择合作单位' }]"
+          >
+            <select-all
+              v-model.trim="form.schoolIds"
+              :disabled="form.organIds.length <= 0"
+              :isCollapseTags="false"
+              filterable
+              clearable
+              multiple
+            >
+              <el-option
+                v-for="(item, index) in cooperationList"
+                :key="index"
+                :label="item.name"
+                :value="item.id"
+              ></el-option>
+            </select-all>
+          </el-form-item>
+        </el-row>
+        <el-row class="row">
+          <el-form-item
+            v-if="form.popularizeType == 'TEAM'"
+            label="乐团"
+            prop="teamIds"
+            :rules="[{ required: true, message: '请选择乐团' }]"
+          >
+            <select-all
+              v-model.trim="form.teamIds"
+              :disabled="form.organIds.length <= 0"
+              :isCollapseTags="false"
+              filterable
+              clearable
+              multiple
+            >
+              <el-option
+                v-for="(item, index) in teamList"
+                :key="index"
+                :label="item.name"
+                :value="item.id"
+              ></el-option>
+            </select-all>
+          </el-form-item>
+        </el-row>
 
 
+        <el-row> </el-row>
+      </el-form>
+      <el-row class="row">
+        <el-button
+          type="primary"
+          @click="
+            () => {
+              activeType--;
+            }
+          "
+          >上一页</el-button
+        >
+        <el-button type="primary" @click="submit">提交</el-button>
+      </el-row>
+    </div>
     <el-dialog
     <el-dialog
       title="预览"
       title="预览"
       width="415px"
       width="415px"
@@ -357,12 +387,16 @@
 import preview from "./modals/preview.vue";
 import preview from "./modals/preview.vue";
 import axios from "axios";
 import axios from "axios";
 import { getToken, getTenantId } from "@/utils/auth";
 import { getToken, getTenantId } from "@/utils/auth";
-import { createLiveBroadcast, resetLiveBroadcastRoomList } from "./api";
+import {
+  createLiveBroadcast,
+  resetLiveBroadcastRoomList,
+  getRoomInfo,
+} from "./api";
 import { queryByOrganId } from "@/api/systemManage";
 import { queryByOrganId } from "@/api/systemManage";
 import { getTeamList } from "@/api/teamServer";
 import { getTeamList } from "@/api/teamServer";
-import addStudentList from './modals/addStudentList'
+import addStudentList from "./modals/addStudentList";
 export default {
 export default {
-  components: { preview,addStudentList },
+  components: { preview, addStudentList },
   data() {
   data() {
     return {
     return {
       name: "新建直播课",
       name: "新建直播课",
@@ -394,52 +428,61 @@ export default {
       cooperationList: [],
       cooperationList: [],
       teamList: [],
       teamList: [],
       isinit: true,
       isinit: true,
+      activeType: 1,
     };
     };
   },
   },
   mounted() {
   mounted() {
     this.$store.dispatch("setBranchs");
     this.$store.dispatch("setBranchs");
     if (this.$route.query.id) {
     if (this.$route.query.id) {
-      this.name = "修改直播间";
-      // console.log()
-      this.form = {
-        ...this.$route.query,
-        organIds: [],
-        schoolIds: [],
-        teamIds: [],
-        catIds: [],
-        studentIds: [],
-      };
-      this.form.roomConfig = JSON.parse(this.$route.query.roomConfig);
-      if (this.$route.query.popularizeOrgIds) {
-        this.form.organIds = this.$route.query.popularizeOrgIds
-          .split(",")
-          .map((item) => {
-            return item * 1;
-          });
-      }
+      this.getDetail();
+    }
+  },
+  methods: {
+    async getDetail() {
+      try {
+        const res = await getRoomInfo({ roomUid: this.$route.query.roomUid });
+        this.name = "修改直播间";
+        // console.log()
+        this.form = {
+          ...res.data,
+          organIds: [],
+          schoolIds: [],
+          teamIds: [],
+          catIds: [],
+          studentIds: [],
+        };
+        this.form.roomConfig = JSON.parse(res.data.roomConfig);
+        if (res.data.popularizeOrgIds) {
+          this.form.organIds = res.data.popularizeOrgIds
+            .split(",")
+            .map((item) => {
+              return item * 1;
+            });
+        }
 
 
-      if (this.$route.query.popularizeSchoolIds) {
-        this.form.schoolIds = this.$route.query.popularizeSchoolIds
-          .split(",")
-          .map((item) => {
-            return item * 1;
-          });
-      }
+        if (res.data.popularizeSchoolIds) {
+          this.form.schoolIds = res.data.popularizeSchoolIds
+            .split(",")
+            .map((item) => {
+              return item * 1;
+            });
+        }
 
 
-      if (this.$route.query.popularizeTeamIds) {
-        let arr = this.$route.query.popularizeTeamIds.split(",");
-        this.$set(this.form, "teamIds", arr);
-      }
+        if (res.data.popularizeTeamIds) {
+          let arr = res.data.popularizeTeamIds.split(",");
+          this.$set(this.form, "teamIds", arr);
+        }
 
 
-      // this.form.popularizeType = "SCHOOL";
-      this.changeSection(this.form.organIds);
-      this.remoteMethod(this.$route.query.speakerName);
+        // this.form.popularizeType = "SCHOOL";
+        this.changeSection(this.form.organIds);
+        this.remoteMethod(res.data.speakerName);
 
 
-      this.checkList.push(this.form.preTemplate * 1);
-      this.isinit = false;
-    }
-  },
-  methods: {
+        this.checkList.push(this.form.preTemplate * 1);
+        this.isinit = false;
+      } catch (e) {
+        console.log(e);
+      }
+    },
     onCancel() {
     onCancel() {
       this.$store.dispatch("delVisitedViews", this.$route);
       this.$store.dispatch("delVisitedViews", this.$route);
       this.$router.push("/liveClassManager");
       this.$router.push("/liveClassManager");
@@ -532,17 +575,22 @@ export default {
       this.$set(this.form, "preTemplate", this.checkList[0] || null);
       this.$set(this.form, "preTemplate", this.checkList[0] || null);
     },
     },
     async submit() {
     async submit() {
-      this.form.popularizeOrgIds = this.form.organIds.join(",");
-      this.form.popularizeSchoolIds = this.form.schoolIds.join(",");
-      this.form.popularizeTeamIds = this.form.teamIds.join(",");
+      // this.form.popularizeOrgIds = this.form.organIds.join(",");
+      // this.form.popularizeSchoolIds = this.form.schoolIds.join(",");
+      // this.form.popularizeTeamIds = this.form.teamIds.join(",");
 
 
       if (this.$route.query.id) {
       if (this.$route.query.id) {
         // 修改
         // 修改
+
         try {
         try {
-          const res = await resetLiveBroadcastRoomList(this.form);
-          this.$message.success("修改成功");
-          this.$store.dispatch("delVisitedViews", this.$route);
-          this.$router.push("/liveClassManager");
+          if (this.form.popularizeType == "ALL") {
+            const res = await resetLiveBroadcastRoomList(this.form);
+            this.$message.success("修改成功");
+            this.$store.dispatch("delVisitedViews", this.$route);
+            this.$router.push("/liveClassManager");
+          } else {
+            this.activeType++;
+          }
         } catch (e) {
         } catch (e) {
           console.log(e);
           console.log(e);
         }
         }
@@ -550,8 +598,12 @@ export default {
         try {
         try {
           const res = await createLiveBroadcast(this.form);
           const res = await createLiveBroadcast(this.form);
           this.$message.success("创建成功");
           this.$message.success("创建成功");
-          this.$store.dispatch("delVisitedViews", this.$route);
-          this.$router.push("/liveClassManager");
+          if (this.form.popularizeType == "ALL") {
+            this.$store.dispatch("delVisitedViews", this.$route);
+            this.$router.push("/liveClassManager");
+          } else {
+            this.activeType++;
+          }
         } catch (e) {
         } catch (e) {
           console.log(e);
           console.log(e);
         }
         }
@@ -563,35 +615,70 @@ export default {
       this.$set(this.form, "schoolIds", []);
       this.$set(this.form, "schoolIds", []);
       this.$set(this.form, "teamIds", []);
       this.$set(this.form, "teamIds", []);
     },
     },
-    async changeSection(val) {
-      if (!this.isinit) {
-        this.form.schoolIds = [];
-        this.form.teamIds = [];
+    clearSection() {
+      this.form.schoolIds = [];
+      this.form.teamIds = [];
+    },
+    removetagSection(val) {
+      console.log("removetagSection");
+      if (this.form.popularizeType == "SCHOOL") {
+        let arr = [];
+        let chioseIdArr = [];
+        this.cooperationList.forEach((item) => {
+          if (item.organId == val) {
+            arr.push(item.id);
+          }
+        });
+        this.form.schoolIds.forEach((item) => {
+          if (arr.indexOf(item) == -1) {
+            chioseIdArr.push(item);
+          }
+        });
+        this.$set(this.form, "schoolIds", chioseIdArr);
+      } else if (this.form.popularizeType == "TEAM") {
+        let arr = [];
+        let chioseIdArr = [];
+        this.teamList.forEach((item) => {
+          if (item.organId == val) {
+            arr.push(item.id);
+          }
+        });
+        this.form.teamIds.forEach((item) => {
+          if (arr.indexOf(item) == -1) {
+            chioseIdArr.push(item);
+          }
+        });
+        this.$set(this.form, "teamIds", chioseIdArr);
       }
       }
-      if (this.form.popularizeType == "SCHOOL" && (val && val.length > 0)) {
-        let organId = val.join(",");
-        try {
-          await queryByOrganId({ organId }).then((res) => {
-            if (res.code == 200) {
-              this.cooperationList = res.data;
-            }
-          });
-        } catch (e) {
-          console.log(e);
+    },
+    async changeSection(val) {
+      this.$nextTick(async () => {
+        console.log("changeSection");
+        if (this.form.popularizeType == "SCHOOL" && val && val.length > 0) {
+          let organId = val.join(",");
+          try {
+            await queryByOrganId({ organId }).then((res) => {
+              if (res.code == 200) {
+                this.cooperationList = res.data;
+              }
+            });
+          } catch (e) {
+            console.log(e);
+          }
         }
         }
-      }
-      if (this.form.popularizeType == "TEAM" && (val && val.length > 0)) {
-        let organId = val.join(",");
-        try {
-          await getTeamList({ organId, page: 1, rows: 9999 }).then((res) => {
-            if (res.code == 200) {
-              this.teamList = res.data.rows;
-            }
-          });
-        } catch (e) {
-          console.log(e);
+        if (this.form.popularizeType == "TEAM" && val && val.length > 0) {
+          let organId = val.join(",");
+          try {
+            await getTeamList({ organId, page: 1, rows: 9999 }).then((res) => {
+              if (res.code == 200) {
+                this.teamList = res.data.rows;
+              }
+            });
+          } catch (e) {
+            console.log(e);
+          }
         }
         }
-      }
+      });
     },
     },
   },
   },
 };
 };