Jelajahi Sumber

Merge branch '11/24SAAS' into 03/03GRADE

mo 2 tahun lalu
induk
melakukan
68fe24662a

File diff ditekan karena terlalu besar
+ 0 - 0
dist/index.html


+ 1 - 1
dist/static/css/chunk-e7373cf0.0c4c43f5.css → dist/static/css/chunk-0f57c579.c104bb88.css

@@ -1 +1 @@
-.process[data-v-f049a426]{padding:10px;max-height:600px;overflow-y:auto}.dialog-footer[data-v-5b4bd763]{margin-top:20px;display:block;text-align:right}[data-v-bd4cdd6a] .el-button+.el-button{margin-left:0}.select[data-v-bd4cdd6a]{font-size:14px}.btnList[data-v-bd4cdd6a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.btnList .exportBtn[data-v-bd4cdd6a]{margin-left:15px}
+.process[data-v-f049a426]{padding:10px;max-height:600px;overflow-y:auto}.dialog-footer[data-v-5b4bd763]{margin-top:20px;display:block;text-align:right}[data-v-fb96cba8] .el-button+.el-button{margin-left:0}.select[data-v-fb96cba8]{font-size:14px}.btnList[data-v-fb96cba8]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.btnList .exportBtn[data-v-fb96cba8]{margin-left:15px}

+ 1 - 1
dist/static/css/chunk-35b1003e.0800925d.css → dist/static/css/chunk-5313d904.8b6ab930.css

@@ -1 +1 @@
-.dialog-footer[data-v-d04b6434]{margin-top:20px;display:block;text-align:right}.alert[data-v-d04b6434]{margin-bottom:10px}.dialog-footer[data-v-7c4b414d]{margin-top:20px;display:block;text-align:right}.alert[data-v-7c4b414d]{margin-bottom:10px}.dialog-footer[data-v-23a41d36]{margin-top:20px;display:block;text-align:right}.alert[data-v-23a41d36]{margin-bottom:10px}.dialog-footer[data-v-3c106ea0]{margin-top:20px;display:block;text-align:right}.alert[data-v-3c106ea0]{margin-bottom:10px}.dialog-footer.question[data-v-3c106ea0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}
+.dialog-footer[data-v-d04b6434]{margin-top:20px;display:block;text-align:right}.alert[data-v-d04b6434]{margin-bottom:10px}.dialog-footer[data-v-eaef067e]{margin-top:20px;display:block;text-align:right}.alert[data-v-eaef067e]{margin-bottom:10px}.dialog-footer[data-v-23a41d36]{margin-top:20px;display:block;text-align:right}.alert[data-v-23a41d36]{margin-bottom:10px}.dialog-footer[data-v-3c106ea0]{margin-top:20px;display:block;text-align:right}.alert[data-v-3c106ea0]{margin-bottom:10px}.dialog-footer.question[data-v-3c106ea0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}

File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/app.1fe90fb7.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/chunk-0f57c579.407f5b42.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/chunk-35b1003e.d20d78a5.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/chunk-5313d904.9cafa022.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/chunk-e7373cf0.d18e2305.js


+ 94 - 271
src/views/teamDetail/teamList.vue

@@ -3,155 +3,68 @@
     <h2>
       <div class="squrt"></div>
       乐团管理
-      <filter-search
-        @reload="reloadSearch"
-        :moreKeys="['organId']"
-        :keys="['searchType']"
-        v-if="permission('/teamList/abnormal')"
-      />
+      <filter-search @reload="reloadSearch" :moreKeys="['organId']" :keys="['searchType']"
+        v-if="permission('/teamList/abnormal')" />
     </h2>
     <div class="m-core">
       <div class="btnList" style="margin-bottom: 20px">
-        <el-button
-          type="primary"
-          v-if="permission('musicGroup/createGroup')"
-          @click="createNewTeam"
-          >申请乐团</el-button
-        >
+        <el-button type="primary" v-if="permission('musicGroup/createGroup')" @click="createNewTeam">申请乐团</el-button>
       </div>
-      <save-form
-        :inline="true"
-        @submit="search"
-        @reset="reset"
-        class="topForm"
-        ref="topForm"
-        :model="topForm"
-      >
+      <save-form :inline="true" @submit="search" @reset="reset" class="topForm" ref="topForm" :model="topForm">
         <el-form-item prop="search">
-          <el-input
-            v-model.trim="topForm.search"
-            clearable
-            @keyup.enter.native="
-              (e) => {
-                e.target.blur();
-                $refs.topForm.save();
-                search();
-              }
-            "
-            placeholder="请输入乐团名称"
-          ></el-input>
+          <el-input v-model.trim="topForm.search" clearable @keyup.enter.native="(e) => {
+            e.target.blur();
+            $refs.topForm.save();
+            search();
+          }
+            " placeholder="请输入乐团名称"></el-input>
         </el-form-item>
         <el-form-item prop="orgin">
-          <el-select
-            class="multiple"
-            v-model.trim="topForm.orgin"
-            filterable
-            multiple
-            collapse-tags
-            clearable
-            placeholder="请选择分部"
-            @change="onBranchChange"
-          >
-            <el-option
-              v-for="(item, index) in organList"
-              :key="index"
-              :label="item.name"
-              :value="item.id"
-            ></el-option>
+          <el-select class="multiple" v-model.trim="topForm.orgin" filterable multiple collapse-tags clearable
+            placeholder="请选择分部" @change="onBranchChange">
+            <el-option v-for="(item, index) in organList" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item prop="cooperationOrganId">
-          <el-select
-            class="multiple"
-            :disabled="!topForm.orgin.length > 0"
-            v-model.trim="topForm.cooperationOrganId"
-            filterable
-            clearable
-            placeholder="请选择合作单位"
-          >
-            <el-option
-              v-for="(item, index) in cooperationList"
-              :key="index"
-              :label="item.name"
-              :value="item.id"
-            ></el-option>
+          <el-select class="multiple" :disabled="!topForm.orgin.length > 0" v-model.trim="topForm.cooperationOrganId"
+            filterable clearable placeholder="请选择合作单位">
+            <el-option v-for="(item, index) in cooperationList" :key="index" :label="item.name"
+              :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item prop="status">
-          <el-select
-            class="multiple"
-            v-model.trim="topForm.status"
-            filterable
-            clearable
-            placeholder="请选择乐团状态"
-          >
-            <el-option
-              v-for="(item, index) in nowStatus"
-              :key="index"
-              :label="item.label"
-              :value="item.value"
-            ></el-option>
+          <el-select class="multiple" v-model.trim="topForm.status" filterable clearable placeholder="请选择乐团状态">
+            <el-option v-for="(item, index) in nowStatus" :key="index" :label="item.label"
+              :value="item.value"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item prop="educationalTeacherId">
-          <remote-search
-            :commit="'setEducations'"
-            v-model="topForm.educationalTeacherId"
-          />
+          <remote-search :commit="'setEducations'" v-model="topForm.educationalTeacherId" />
         </el-form-item>
         <el-form-item prop="isStartedCourse">
-          <el-select
-            v-model.trim="topForm.isStartedCourse"
-            filterable
-            placeholder="是否开课"
-            clearable
-          >
+          <el-select v-model.trim="topForm.isStartedCourse" filterable placeholder="是否开课" clearable>
             <el-option label="是" :value="true"></el-option>
             <el-option label="否" :value="false"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item prop="courseViewType">
-          <el-select
-            v-model.trim="topForm.courseViewType"
-            filterable
-            placeholder="请选择收费模式"
-            clearable
-          >
-            <el-option
-              :label="item.label"
-              :value="item.value"
-              v-for="item in courseViewTypeList"
-              :key="item.value"
-            ></el-option>
+          <el-select v-model.trim="topForm.courseViewType" filterable placeholder="请选择收费模式" clearable>
+            <el-option :label="item.label" :value="item.value" v-for="item in courseViewTypeList"
+              :key="item.value"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item prop="createTimer">
-          <el-date-picker
-            v-model.trim="topForm.createTimer"
-            style="width: 420px"
-            type="daterange"
-            value-format="yyyy-MM-dd"
-            range-separator="至"
-            start-placeholder="申请开始日期"
-            end-placeholder="申请结束日期"
+          <el-date-picker v-model.trim="topForm.createTimer" style="width: 420px" type="daterange"
+            value-format="yyyy-MM-dd" range-separator="至" start-placeholder="申请开始日期" end-placeholder="申请结束日期"
             :picker-options="{
               firstDayOfWeek: 1,
-            }"
-          ></el-date-picker>
+            }"></el-date-picker>
         </el-form-item>
         <el-form-item prop="billTimer">
-          <el-date-picker
-            v-model.trim="topForm.billTimer"
-            style="width: 420px"
-            type="daterange"
-            value-format="yyyy-MM-dd"
-            range-separator="至"
-            start-placeholder="成团开始日期"
-            end-placeholder="成团结束日期"
-            :picker-options="{
+          <el-date-picker v-model.trim="topForm.billTimer" style="width: 420px" type="daterange" value-format="yyyy-MM-dd"
+            range-separator="至" start-placeholder="成团开始日期" end-placeholder="成团结束日期" :picker-options="{
               firstDayOfWeek: 1,
-            }"
-          ></el-date-picker>
+            }"></el-date-picker>
         </el-form-item>
         <el-form-item>
           <el-button type="danger" native-type="submit">搜索</el-button>
@@ -160,27 +73,17 @@
           <el-button type="primary" native-type="reset">重置</el-button>
         </el-form-item>
         <el-form-item>
-          <el-button type="primary" v-permission="'export/musicGroup'" @click="onExport"
-            >导出</el-button
-          >
+          <el-button type="primary" v-permission="'export/musicGroup'" @click="onExport">导出</el-button>
         </el-form-item>
       </save-form>
       <div class="tableWrap">
-        <el-table
-          style="width: 100%"
-          @selection-change="handleSelectionChange"
-          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
-          :data="tableData"
-        >
+        <el-table style="width: 100%" @selection-change="handleSelectionChange"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }" :data="tableData">
           <!-- <el-table-column type="selection"
                            :selectable="checkSelectable"
                            width="50">
           </el-table-column> -->
-          <el-table-column
-            prop="organName"
-            align="center"
-            label="所属分部"
-          ></el-table-column>
+          <el-table-column prop="organName" align="center" label="所属分部"></el-table-column>
           <el-table-column prop="id" width="100" align="center" label="乐团编号">
             <template slot-scope="scope">
               <copy-text>
@@ -195,13 +98,7 @@
               </p>
             </template>
           </el-table-column>
-          <el-table-column
-            align="center"
-            width="200px"
-            prop="cooperationOrganName"
-            max-width="274"
-            label="合作单位"
-          >
+          <el-table-column align="center" width="200px" prop="cooperationOrganName" max-width="274" label="合作单位">
           </el-table-column>
           <el-table-column prop="status" align="center" label="乐团状态">
             <template slot-scope="scope">
@@ -231,12 +128,7 @@
               </div>
             </template>
           </el-table-column>
-          <el-table-column
-            prop="createTime"
-            width="100px"
-            align="center"
-            label="申请时间"
-          >
+          <el-table-column prop="createTime" width="100px" align="center" label="申请时间">
             <template slot-scope="scope">
               <div>
                 {{ scope.row.createTime | formatTimer }}
@@ -268,56 +160,28 @@
             <template slot-scope="scope">
               <div>
                 <!-- 审核中 编辑 -->
-                <el-button
-                  type="text"
-                  v-if="
-                    scope.row.status == 'AUDIT' && permission('musicGroup/auditSuccess')
-                  "
-                  @click="lookTeamDetail(scope.row)"
-                  >审核</el-button
-                >
-                <el-button
-                  type="text"
-                  v-if="scope.row.status == 'DRAFT' && permission('musicGroup/update')"
-                  @click="lookTeamDetail(scope.row)"
-                  >编辑</el-button
-                >
+                <el-button type="text" v-if="scope.row.status == 'AUDIT' && permission('musicGroup/auditSuccess')
+                  " @click="lookTeamDetail(scope.row)">审核</el-button>
+                <el-button type="text" v-if="scope.row.status == 'DRAFT' && permission('musicGroup/update')"
+                  @click="lookTeamDetail(scope.row)">编辑</el-button>
                 <!-- 审核失败 编辑 -->
-                <el-button
-                  type="text"
-                  v-if="
-                    scope.row.status == 'AUDIT_FAILED' && permission('musicGroup/update')
-                  "
-                  @click="lookTeamDetail(scope.row)"
-                  >编辑</el-button
-                >
-                <el-button
-                  type="text"
-                  v-if="
-                    scope.row.status == 'FEE_AUDIT_FAILED' &&
-                    permission('musicGroup/update')
-                  "
-                  @click="lookTeamDetail(scope.row)"
-                  >编辑</el-button
-                >
+                <el-button type="text" v-if="scope.row.status == 'AUDIT_FAILED' && permission('musicGroup/update')
+                  " @click="lookTeamDetail(scope.row)">编辑</el-button>
+                <el-button type="text" v-if="scope.row.status == 'FEE_AUDIT_FAILED' &&
+                  permission('musicGroup/update')
+                  " @click="lookTeamDetail(scope.row)">编辑</el-button>
                 <!-- 报名中缴费中筹备中查看乐团 -->
-                <el-button
-                  type="text"
-                  v-if="
-                    (scope.row.status == 'PRE_APPLY' ||
-                      scope.row.status == 'PAUSE' ||
-                      scope.row.status == 'PROGRESS' ||
-                      scope.row.status == 'CANCELED' ||
-                      scope.row.status == 'APPLY' ||
-                      scope.row.status == 'PAY' ||
-                      scope.row.status == 'PREPARE' ||
-                      scope.row.status == 'CLOSE' ||
-                      scope.row.status == 'FEE_AUDIT') &&
-                    permission('/resetTeaming')
-                  "
-                  @click="lookTeamDetail(scope.row)"
-                  >详情</el-button
-                >
+                <el-button type="text" v-if="(scope.row.status == 'PRE_APPLY' ||
+                  scope.row.status == 'PAUSE' ||
+                  scope.row.status == 'PROGRESS' ||
+                  scope.row.status == 'CANCELED' ||
+                  scope.row.status == 'APPLY' ||
+                  scope.row.status == 'PAY' ||
+                  scope.row.status == 'PREPARE' ||
+                  scope.row.status == 'CLOSE' ||
+                  scope.row.status == 'FEE_AUDIT') &&
+                  permission('/resetTeaming')
+                  " @click="lookTeamDetail(scope.row)">详情</el-button>
                 <!-- <el-button
                   v-if="permission('recharge/findAll')"
                   type="text"
@@ -325,15 +189,9 @@
                   >乐团日志</el-button
                 > -->
                 <!-- 进行中 关闭 -->
-                <el-button
-                  type="text"
-                  v-if="
-                    scope.row.status == 'PROGRESS' &&
-                    permission('musicGroup/closeMusicGroup')
-                  "
-                  @click="closeTeamDetail(scope.row)"
-                  >关闭</el-button
-                >
+                <el-button type="text" v-if="scope.row.status == 'PROGRESS' &&
+                  permission('musicGroup/closeMusicGroup')
+                  " @click="closeTeamDetail(scope.row)">关闭</el-button>
                 <!-- 进行中 查看 -->
                 <!-- <el-button
                   type="text"
@@ -344,73 +202,39 @@
                   >查看</el-button
                 > -->
 
-                <el-button
-                  type="text"
-                  v-if="
-                    (scope.row.status == 'DRAFT' ||
-                      scope.row.status == 'AUDIT' ||
-                      scope.row.status == 'FEE_AUDIT' ||
-                      scope.row.status == 'APPLY' ||
-                      scope.row.status == 'PAY' ||
-                      scope.row.status == 'PRE_APPLY' ||
-                      scope.row.status == 'DRAFT') &&
-                    permission('musicGroup/cancelMusicGroup')
-                  "
-                  @click="stopTeam(scope.row)"
-                  >取消乐团</el-button
-                >
+                <el-button type="text" v-if="(scope.row.status == 'DRAFT' ||
+                  scope.row.status == 'AUDIT' ||
+                  scope.row.status == 'FEE_AUDIT' ||
+                  scope.row.status == 'APPLY' ||
+                  scope.row.status == 'PAY' ||
+                  scope.row.status == 'PRE_APPLY' ||
+                  scope.row.status == 'DRAFT') &&
+                  permission('musicGroup/cancelMusicGroup')
+                  " @click="stopTeam(scope.row)">取消乐团</el-button>
 
-                <el-button
-                  v-if="scope.row.status == 'PREPARE' && permission('musicGroup/action')"
-                  @click="startTeam(scope.row)"
-                  type="text"
-                  >确认成团</el-button
-                >
+                <el-button v-if="scope.row.status == 'PREPARE' && permission('musicGroup/action')"
+                  @click="startTeam(scope.row)" type="text">确认成团</el-button>
                 <!-- <el-button type="text"
                            v-if="scope.row.status == 'AUDIT' && permission('musicGroup/cancelMusicGroup')"
                            @click="stopTeam(scope.row)">取消乐团</el-button> -->
-                <el-button
-                  v-if="
-                    (scope.row.status == 'PAUSE' || scope.row.status == 'CLOSE') &&
-                    permission('musicGroup/resumeMusicGroup')
-                  "
-                  @click="onTeamOpeation('start', scope.row)"
-                  type="text"
-                  >启动</el-button
-                >
-                <el-button
-                  v-if="
-                    scope.row.status == 'PROGRESS' &&
-                    permission('musicGroup/pauseMusicGroup')
-                  "
-                  @click="onTeamOpeation('pause', scope.row)"
-                  type="text"
-                  >暂停</el-button
-                >
+                <el-button v-if="(scope.row.status == 'PAUSE' || scope.row.status == 'CLOSE') &&
+                  permission('musicGroup/resumeMusicGroup')
+                  " @click="onTeamOpeation('start', scope.row)" type="text">启动</el-button>
+                <el-button v-if="scope.row.status == 'PROGRESS' &&
+                  permission('musicGroup/pauseMusicGroup')
+                  " @click="onTeamOpeation('pause', scope.row)" type="text">暂停</el-button>
 
-                <el-button
-                  v-if="
-                    scope.row.status == 'CANCELED' &&
-                    permission('musicGroup/deleteMusicGroup')
-                  "
-                  @click="deteleTeaming(scope.row)"
-                  type="text"
-                  >删除</el-button
-                >
+                <el-button v-if="scope.row.status == 'CANCELED' &&
+                  permission('musicGroup/deleteMusicGroup')
+                  " @click="deteleTeaming(scope.row)" type="text">删除</el-button>
               </div>
             </template>
           </el-table-column>
         </el-table>
         <!-- 分页器 -->
         <!-- 分页 -->
-        <pagination
-          sync
-          :total.sync="rules.total"
-          :page.sync="rules.page"
-          :limit.sync="rules.limit"
-          :page-sizes="rules.page_size"
-          @pagination="getList"
-        />
+        <pagination sync :total.sync="rules.total" :page.sync="rules.page" :limit.sync="rules.limit"
+          :page-sizes="rules.page_size" @pagination="getList" />
       </div>
       <el-dialog :visible.sync="showSteam" width="500px" title="乐团流程">
         <teamSteam :activeId="activeId" />
@@ -419,12 +243,7 @@
         </div>
       </el-dialog>
       <el-dialog :visible.sync="closeVisible" title="确认学员" width="800px">
-        <closeStudens
-          v-if="closeVisible"
-          :detail="closeDetail"
-          @close="closeVisible = false"
-          @submited="getList"
-        />
+        <closeStudens v-if="closeVisible" :detail="closeDetail" @close="closeVisible = false" @submited="getList" />
       </el-dialog>
     </div>
   </div>
@@ -545,13 +364,14 @@ export default {
     },
     getList() {
       let { createTimer, billTimer, ...reset } = this.topForm;
+      console.log(this.topForm, '11212')
       getTeamList({
         rows: this.rules.limit,
         page: this.rules.page,
         organId: this.topForm.orgin.join(","),
         search: this.topForm.search || null,
         musicGroupStatus: this.topForm.status || null,
-        courseViewType: this.topForm.courseViewType || null,
+        courseViewType: this.topForm.courseViewType,
         cooperationOrganId: this.topForm.cooperationOrganId || null,
         searchType: this.$route.query.searchType,
         isStartedCourse: this.topForm.isStartedCourse,
@@ -682,7 +502,7 @@ export default {
               }
             });
           })
-          .catch(() => {});
+          .catch(() => { });
       } else if (type == "pause") {
         this.$confirm("是否确定暂停乐团?", "提示", {
           confirmButtonText: "确定",
@@ -699,7 +519,7 @@ export default {
               }
             });
           })
-          .catch(() => {});
+          .catch(() => { });
       }
     },
     gotoSearch() {
@@ -1059,7 +879,7 @@ export default {
             }
           });
         })
-        .catch(() => {});
+        .catch(() => { });
     },
     // 确认成团
     startTeam(row) {
@@ -1076,7 +896,7 @@ export default {
             }
           });
         })
-        .catch(() => {});
+        .catch(() => { });
     },
     deteleTeaming(row) {
       this.$confirm("您确定删除该乐团?", "提示", {
@@ -1094,7 +914,7 @@ export default {
             }
           });
         })
-        .catch(() => {});
+        .catch(() => { });
     },
     lookSteam(row) {
       this.activeId = row.id;
@@ -1156,17 +976,20 @@ export default {
 };
 </script>
 <style lang="scss" scoped>
-::v-deep .el-button + .el-button {
+::v-deep .el-button+.el-button {
   margin-left: 0px;
 }
+
 .select {
   font-size: 14px;
 }
+
 .btnList {
   display: flex;
   flex-direction: row;
   justify-content: flex-start;
   align-items: center;
+
   .exportBtn {
     margin-left: 15px;
   }

+ 23 - 18
src/views/workBenchManager/journal/index.vue

@@ -4,23 +4,28 @@
       <div class="squrt"></div>系统消息
     </h2>
     <div class="m-core">
-        <tab-router v-model="activeIndex" type="card" >
-          <el-tab-pane label="系统通知" lazy v-if="permissionList.journalItem" name="SYSTEM">
-            <list :type="activeIndex" v-if="activeIndex == 'SYSTEM'" saveKey="journal-system" permissionStr="journalItem/look" />
-          </el-tab-pane>
-          <el-tab-pane label="学生申诉" lazy v-if="permissionList.studentComplain" name="STUDENT">
-            <list :type="activeIndex" v-if="activeIndex == 'STUDENT'" saveKey="journal-student" permissionStr="courseSchedule/queryCourseScheduleComplaintsDetail/look" />
-          </el-tab-pane>
-          <el-tab-pane label="退团退课" lazy v-if="permissionList.musicGroupCourse" name="MUSICGROUP">
-            <list :type="activeIndex" v-if="activeIndex == 'MUSICGROUP'" saveKey="journal-musicGroup" permissionStr="musicGroupQuit/query" />
-          </el-tab-pane>
-          <el-tab-pane label="请假处理" lazy v-if="permissionList.leaveOperation" name="LEAVE">
-            <list :type="activeIndex" v-if="activeIndex == 'LEAVE'" saveKey="journal-leave" permissionStr="teacherLeaveRecord/queryDetail" />
-          </el-tab-pane>
-          <el-tab-pane label="VIP申请审核" lazy v-if="permissionList.vipApply" name="VIPAPPLY">
-            <list :type="activeIndex" v-if="activeIndex == 'VIPAPPLY'" saveKey="journal-vipApply" permissionStr="vipGroupManage/getVipGroupDetailForAudit" />
-          </el-tab-pane>
-        </tab-router>
+      <tab-router v-model="activeIndex" type="card">
+        <el-tab-pane label="系统通知" lazy v-if="permissionList.journalItem" name="SYSTEM">
+          <list :type="activeIndex" v-if="activeIndex == 'SYSTEM'" saveKey="journal-system"
+            permissionStr="journalItem/look" />
+        </el-tab-pane>
+        <el-tab-pane label="学生申诉" lazy v-if="permissionList.studentComplain" name="STUDENT">
+          <list :type="activeIndex" v-if="activeIndex == 'STUDENT'" saveKey="journal-student"
+            permissionStr="courseSchedule/queryCourseScheduleComplaintsDetail/look" />
+        </el-tab-pane>
+        <el-tab-pane label="退团退课" lazy v-if="permissionList.musicGroupCourse" name="MUSICGROUP">
+          <list :type="activeIndex" v-if="activeIndex == 'MUSICGROUP'" saveKey="journal-musicGroup"
+            permissionStr="musicGroupQuit/query" />
+        </el-tab-pane>
+        <el-tab-pane label="请假处理" lazy v-if="permissionList.leaveOperation" name="LEAVE">
+          <list :type="activeIndex" v-if="activeIndex == 'LEAVE'" saveKey="journal-leave"
+            permissionStr="teacherLeaveRecord/queryDetail" />
+        </el-tab-pane>
+        <el-tab-pane label="VIP申请审核" lazy v-if="permissionList.vipApply" name="VIPAPPLY">
+          <list :type="activeIndex" v-if="activeIndex == 'VIPAPPLY'" saveKey="journal-vipApply"
+            permissionStr="vipGroupManage/getVipGroupDetailForAudit" />
+        </el-tab-pane>
+      </tab-router>
     </div>
   </div>
 </template>
@@ -30,7 +35,7 @@ import List from './model/list'
 export default {
   name: 'journal',
   components: { List },
-  data () {
+  data() {
     const query = this.$route.query;
     return {
       activeIndex: query.opt || 'SYSTEM',

+ 116 - 143
src/views/workBenchManager/journal/leaveOperation.vue

@@ -1,57 +1,36 @@
 <template>
   <div class='infoWrap'>
     <div class="left">
-      <div class="unread"
-           @click="onLookMessage('all')">全部</div>
-      <div class="unread"
-           @click="onLookMessage('0')"> <img :src="img.boxicon"
-             alt=""> 未读消息
-        <div class="count"
-             v-if="noReadMessage >= 1">{{ noReadMessage }}</div>
+      <div class="unread" @click="onLookMessage('all')">全部</div>
+      <div class="unread" @click="onLookMessage('0')"> <img :src="img.boxicon" alt=""> 未读消息
+        <div class="count" v-if="noReadMessage >= 1">{{ noReadMessage }}</div>
+      </div>
+      <div class="read" @click="onLookMessage('1')">
+        <img :src="img.bookicon" alt="">
+        已读消息
       </div>
-      <div class="read"
-           @click="onLookMessage('1')">
-        <img :src="img.bookicon"
-             alt="">
-        已读消息</div>
     </div>
     <div class="middle">
-      <div class="msgItem"
-           :class="[isCheckMessage == item.id ? 'active' : '']"
-           @click="onClickRead(item)"
-           v-for="(item, index) in dataList"
-           :key="index">
+      <div class="msgItem" :class="[isCheckMessage == item.id ? 'active' : '']" @click="onClickRead(item)"
+        v-for="(item, index) in dataList" :key="index">
         <!-- <h6 class="type"></h6> -->
-        <h4 class="name">请假处理<span class='time'>{{ item.createOn|dateForMinFormat }}</span>
-          <div class="dot"
-               v-if="item.readStatus == 0"></div>
+        <h4 class="name">请假处理<span class='time'>{{ item.createOn | dateForMinFormat }}</span>
+          <div class="dot" v-if="item.readStatus == 0"></div>
         </h4>
         <p class='msg'>{{ item.content }}</p>
       </div>
-      <el-pagination style="text-align: right"
-                     small
-                     v-if="dataList.length > 0"
-                     @current-change="onChange"
-                     :hide-on-single-page="pageInfo.isSinglePage"
-                     layout="prev, pager, next"
-                     :total="pageInfo.total">
+      <el-pagination style="text-align: right" small v-if="dataList.length > 0" @current-change="onChange"
+        :hide-on-single-page="pageInfo.isSinglePage" layout="prev, pager, next" :total="pageInfo.total">
       </el-pagination>
     </div>
-    <div class="right"
-         v-if="showRight">
+    <div class="right" v-if="showRight">
       <div class="rightWrap">
-        <img src="@/assets/images/base/placehorder-icon.png"
-             class="header"
-             alt="">
+        <img src="@/assets/images/base/placehorder-icon.png" class="header" alt="">
         <div class="info">
           <h2>{{ showMessage.user.username }}
             <!-- <span class="phone">【{{ showMessage.user.phone }}】</span> -->
-            <el-tag v-if="showMessage.status == 'PASS'"
-                    type="success"
-                    effect="plain">已处理</el-tag>
-            <el-tag v-if="showMessage.status == 'REJECT'"
-                    type="danger"
-                    effect="plain">已拒绝</el-tag>
+            <el-tag v-if="showMessage.status == 'PASS'" type="success" effect="plain">已处理</el-tag>
+            <el-tag v-if="showMessage.status == 'REJECT'" type="danger" effect="plain">已拒绝</el-tag>
           </h2>
           <p class="subMsg">发至 <span class='san'></span> <span style="margin-left:30px">我</span></p>
           <div class="textWrap">
@@ -60,20 +39,15 @@
             <p>结束时间: {{ showMessage.endTime | dateForMinFormat }}</p>
             <p>备注: {{ showMessage.remark }}</p>
           </div>
-          <div class="leaverecord"
-               v-if="showMessage.vipCourse.length > 0">
-            <el-table :data="showMessage.vipCourse"
-                      style="width: 100%"
-                      :header-cell-style="{background:'#EDEEF0',color:'#444'}">
-              <el-table-column label="类型"
-                               width="100px">
+          <div class="leaverecord" v-if="showMessage.vipCourse.length > 0">
+            <el-table :data="showMessage.vipCourse" style="width: 100%"
+              :header-cell-style="{ background: '#EDEEF0', color: '#444' }">
+              <el-table-column label="类型" width="100px">
                 <template slot-scope="scope">
                   {{ scope.row.before.type == "VIP" ? 'VIP课' : '乐团课' }}
                 </template>
               </el-table-column>
-              <el-table-column prop="before.name"
-                               label="班名"
-                               width="140px">
+              <el-table-column prop="before.name" label="班名" width="140px">
               </el-table-column>
               <el-table-column label="调整前日期">
                 <template slot-scope="scope">
@@ -86,37 +60,28 @@
                 </template>
               </el-table-column>
               <el-table-column label="调整后日期">
-                <template slot-scope="scope"
-                          v-if="scope.row.before.type == 'VIP'">
+                <template slot-scope="scope" v-if="scope.row.before.type == 'VIP'">
                   {{ scope.row.after.classDate | formatTimer }}
                 </template>
               </el-table-column>
               <el-table-column label="调整后时间">
-                <template slot-scope="scope"
-                          v-if="scope.row.before.type == 'VIP'">
+                <template slot-scope="scope" v-if="scope.row.before.type == 'VIP'">
                   {{ scope.row.after.startClassTime | getFormatTime(scope.row.after.endClassTime) }}
                 </template>
               </el-table-column>
             </el-table>
           </div>
-          <div class="leaverecord"
-               v-if="showMessage.musicGroupCourse.length > 0">
-            <el-table :data="showMessage.musicGroupCourse"
-                      style="width: 100%; padding-top: 10px;"
-                      :header-cell-style="{background:'#EDEEF0',color:'#444'}">
-              <el-table-column label="乐团编号"
-                               prop="before.musicGroupId"
-                               width="100px">
+          <div class="leaverecord" v-if="showMessage.musicGroupCourse.length > 0">
+            <el-table :data="showMessage.musicGroupCourse" style="width: 100%; padding-top: 10px;"
+              :header-cell-style="{ background: '#EDEEF0', color: '#444' }">
+              <el-table-column label="乐团编号" prop="before.musicGroupId" width="100px">
               </el-table-column>
-              <el-table-column label="类型"
-                               width="100px">
+              <el-table-column label="类型" width="100px">
                 <template slot-scope="scope">
                   {{ scope.row.before.type == "VIP" ? 'VIP课' : '乐团课' }}
                 </template>
               </el-table-column>
-              <el-table-column prop="before.name"
-                               label="班名"
-                               width="140px">
+              <el-table-column prop="before.name" label="班名" width="140px">
               </el-table-column>
               <el-table-column label="调整前日期">
                 <template slot-scope="scope">
@@ -138,78 +103,48 @@
 
         </div>
       </div>
-      <div v-permission="'teacherLeaveRecord/approve'"
-           class="infoFoot"
-           v-if="showMessage.status == 'ING'">
-        <div class="noBtn"
-             @click="onSubmit(showMessage, 'REJECT')">拒绝</div>
-        <div class="yesBtn"
-             @click="onSubmit(showMessage, 'PASS')">同意</div>
+      <div v-permission="'teacherLeaveRecord/approve'" class="infoFoot" v-if="showMessage.status == 'ING'">
+        <div class="noBtn" @click="onSubmit(showMessage, 'REJECT')">拒绝</div>
+        <div class="yesBtn" @click="onSubmit(showMessage, 'PASS')">同意</div>
       </div>
     </div>
 
-    <el-dialog title="课程调整"
-               width="400px"
-               :before-close="handleClose"
-               :visible.sync="dialogVisible">
-      <el-form :model="maskForm"
-               ref="maskForm"
-               :rules="maskRules"
-               label-position="right"
-               label-width="80px;"
-               :inline="true">
-        <el-form-item label="主教老师"
-                      prop="teacher">
-          <el-select v-model.trim="maskForm.teacher"
-                     clearable
-                     filterable>
-            <el-option v-for="(item,index) in teacherList"
-                       :key="index"
-                       :value="item.id"
-                       :label="item.realName"></el-option>
+    <el-dialog title="课程调整" width="400px" :before-close="handleClose" :visible.sync="dialogVisible">
+      <el-form :model="maskForm" ref="maskForm" :rules="maskRules" label-position="right" label-width="80px;"
+        :inline="true">
+        <el-form-item label="主教老师" prop="teacher">
+          <el-select v-model.trim="maskForm.teacher" clearable filterable>
+            <el-option v-for="(item, index) in teacherList" :key="index" :value="item.id"
+              :label="item.realName"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="上课日期"
-                      prop="date">
-          <el-date-picker v-model.trim="maskForm.date"
-                          type="date"
-                          :picker-options="{
-                            firstDayOfWeek:1
-                          }"
-                          value-format="yyyy-MM-dd"
-                          placeholder="选择日期">
+        <el-form-item label="上课日期" prop="date">
+          <el-date-picker v-model.trim="maskForm.date" type="date" :picker-options="{
+            firstDayOfWeek: 1
+          }" value-format="yyyy-MM-dd" placeholder="选择日期">
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="开始时间"
-                      prop="startTime">
-          <el-time-select placeholder="起始时间"
-                          @change="changeStartTime"
-                          v-model.trim="maskForm.startTime"
-                          :picker-options="{
-                            start: '04:30',
-                            step: '00:05',
-                            end: '23:30'
-                            }">
+        <el-form-item label="开始时间" prop="startTime">
+          <el-time-select placeholder="起始时间" @change="changeStartTime" v-model.trim="maskForm.startTime" :picker-options="{
+            start: '04:30',
+            step: '00:05',
+            end: '23:30'
+          }">
           </el-time-select>
         </el-form-item>
-        <el-form-item label="结束时间"
-                      prop="endTime">
-          <el-time-select placeholder="结束时间"
-                          v-model.trim="maskForm.endTime"
-                          :picker-options="{
-                            start: '04:30',
-                            step: '00:05',
-                            end: '23:30',
-                            minTime: maskForm.startTime
-                          }">
+        <el-form-item label="结束时间" prop="endTime">
+          <el-time-select placeholder="结束时间" v-model.trim="maskForm.endTime" :picker-options="{
+            start: '04:30',
+            step: '00:05',
+            end: '23:30',
+            minTime: maskForm.startTime
+          }">
           </el-time-select>
         </el-form-item>
       </el-form>
-      <div slot="footer"
-           class="dialog-footer">
+      <div slot="footer" class="dialog-footer">
         <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary"
-                   @click="submitResetClass">确 定</el-button>
+        <el-button type="primary" @click="submitResetClass">确 定</el-button>
       </div>
     </el-dialog>
   </div>
@@ -219,7 +154,7 @@ import { queryCountOfUnread, sysMessageList, leaveQueryDetail, setRead, approve
 import { resetCourse, getTeacher } from '@/api/buildTeam'
 export default {
   name: 'leaveOperation',
-  data () {
+  data() {
     return {
       img: {
         bookicon: require('@/assets/images/base/bookicon.png'),
@@ -260,12 +195,12 @@ export default {
       showMessage: {}
     }
   },
-  mounted () {
+  mounted() {
     this.__init()
     this.sysMessageList()
   },
   methods: {
-    __init () {
+    __init() {
       // 未读消息
       queryCountOfUnread().then(res => {
         if (res.code == 200) {
@@ -281,11 +216,11 @@ export default {
         }
       })
     },
-    handleClose () {
+    handleClose() {
       this.dialogVisible = false;
       this.$refs['maskForm'].resetFields()
     },
-    submitResetClass () {
+    submitResetClass() {
       this.$confirm('是否确定?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
@@ -307,7 +242,7 @@ export default {
       }).catch(() => { })
 
     },
-    onSubmit (showMessage, type) {
+    onSubmit(showMessage, type) {
       let params = {
         id: showMessage.id,
         status: type,
@@ -322,7 +257,7 @@ export default {
         }
       })
     },
-    getFormatDate (data) {
+    getFormatDate(data) {
       let tempDate = new Date(data)
       let month = (tempDate.getMonth() + 1) >= 10 ? (tempDate.getMonth() + 1) : '0' + (tempDate.getMonth() + 1)
       let day = tempDate.getDate() >= 10 ? tempDate.getDate() : '0' + tempDate.getDate()
@@ -331,7 +266,7 @@ export default {
       let min = tempDate.getMinutes() >= 10 ? tempDate.getMinutes() : '0' + tempDate.getMinutes()
       return tDate + ' ' + hours + ':' + min + ':00'
     },
-    getDateInfo (value) {
+    getDateInfo(value) {
       let tempValue = value
       if (typeof value !== 'object') {
         tempValue = value.replace(/-/ig, '/')
@@ -341,7 +276,7 @@ export default {
       let minute = d.getMinutes() >= 10 ? d.getMinutes() : '0' + d.getMinutes()
       return hour + ':' + minute + ':00'
     },
-    onClssTime (row) {
+    onClssTime(row) {
       this.dialogVisible = true
       this.maskForm = {
         teacher: row.before.actualTeacherId,
@@ -351,7 +286,7 @@ export default {
         id: row.before.id
       }
     },
-    sysMessageList () { // 列表
+    sysMessageList() { // 列表
       sysMessageList({
         group: 'LEAVE',
         rows: this.pageInfo.limit,
@@ -364,7 +299,7 @@ export default {
         }
       })
     },
-    onLookMessage (type) { // 查看对应的数据
+    onLookMessage(type) { // 查看对应的数据
       if (type == "all") {
         this.pageInfo.readStatus = null
       } else {
@@ -376,11 +311,11 @@ export default {
       this.isCheckMessage = null
       this.sysMessageList()
     },
-    onChange (page) { // 分页
+    onChange(page) { // 分页
       this.pageInfo.page = page
       this.sysMessageList()
     },
-    onClickRead (item) {
+    onClickRead(item) {
       this.isCheckMessage = item.id
       if (item.readStatus == 1) {
         this.getLeaveItem(item.memo)
@@ -396,7 +331,7 @@ export default {
         })
       }
     },
-    getLeaveItem (memo) {
+    getLeaveItem(memo) {
       memo = JSON.parse(memo)
       leaveQueryDetail({ id: memo.leaveRecordId }).then(res => {
         if (res.code == 200) {
@@ -422,12 +357,12 @@ export default {
         }
       })
     },
-    changeStartTime () {
+    changeStartTime() {
       this.maskForm.endTime = '';
     }
   },
   filters: {
-    getFormatTime (tempA, tempB) {
+    getFormatTime(tempA, tempB) {
       tempA = new Date(tempA.replace(/-/g, "/")),
         tempB = new Date(tempB.replace(/-/g, "/"))
       let hours = Number(tempA.getHours()) >= 10 ? tempA.getHours() : '0' + tempA.getHours()
@@ -447,31 +382,38 @@ export default {
   justify-content: flex-start;
   height: calc(100vh - 266px);
   overflow: auto;
+
   .left {
     padding-top: 24px;
     display: flex;
     flex-direction: column;
     align-items: left;
-    > div {
+
+    >div {
       height: 26px;
       line-height: 26px;
       margin-top: 26px;
+
       img {
         position: relative;
         top: 6px;
       }
     }
+
     .unread,
     .read,
     .recovery {
       cursor: pointer;
     }
+
     .unread {
       position: relative;
+
       img {
         width: 26px;
         height: 25px;
       }
+
       .count {
         position: absolute;
         width: 38px;
@@ -486,12 +428,14 @@ export default {
         top: 8px;
       }
     }
+
     .read {
       img {
         width: 20px;
         height: 26px;
       }
     }
+
     .recovery {
       img {
         width: 19px;
@@ -499,31 +443,37 @@ export default {
       }
     }
   }
+
   .middle {
     width: 25%;
     margin-left: 76px;
     padding-top: 50px;
     overflow: auto;
+
     .msgItem {
       padding: 16px 18px 23px 30px;
       border-bottom: 1px solid #ccc;
+
       .type {
         font-size: 14px;
         color: #777;
         font-weight: 400;
         padding-bottom: 4px;
       }
+
       .name {
         position: relative;
         color: #444;
         font-size: 16px;
         padding-bottom: 9px;
         clear: both;
+
         .time {
           font-weight: 400;
           color: #aaa;
           float: right;
         }
+
         .dot {
           width: 7px;
           height: 7px;
@@ -534,6 +484,7 @@ export default {
           top: 4px;
         }
       }
+
       .msg {
         color: #444;
         font-size: 14px;
@@ -546,14 +497,17 @@ export default {
         -webkit-box-orient: vertical;
       }
     }
+
     .msgItem.active {
       background-color: #f3f4f8;
       border-radius: 5px;
+
       .msg {
         color: #aaa;
       }
     }
   }
+
   .right {
     flex-direction: column;
     justify-content: space-between;
@@ -562,6 +516,7 @@ export default {
     position: relative;
     overflow: auto;
     width: 50%;
+
     .rightWrap {
       // overflow: auto;
       display: flex;
@@ -569,6 +524,7 @@ export default {
       flex-direction: row;
       justify-content: flex-start;
       box-sizing: border-box;
+
       .header {
         width: 30px;
         height: 30px;
@@ -577,23 +533,28 @@ export default {
         border-radius: 50%;
         margin-right: 12px;
       }
+
       .info {
         position: relative;
         width: 100%;
+
         h2 {
           color: #212223;
           font-size: 16px;
           margin-bottom: 0px;
+
           .phone {
             font-size: 12px;
             color: #444;
           }
         }
+
         .subMsg {
           position: relative;
           font-size: 12px;
           color: #444;
           margin-bottom: 12px;
+
           .san {
             // margin-left: 110px;
             float: left;
@@ -604,10 +565,12 @@ export default {
             border-width: 5px;
             border-style: solid;
             border-color: transparent #909191 transparent transparent;
-            transform: rotate(180deg); /*顺时针旋转90°*/
+            transform: rotate(180deg);
+            /*顺时针旋转90°*/
             margin: 0 8px;
           }
         }
+
         .textWrap {
           width: 316px;
           line-height: 21px;
@@ -615,33 +578,40 @@ export default {
           color: #212223;
           margin: 12px 0 34px;
         }
+
         .dot {
           width: 20px;
           height: 20px;
         }
+
         .timeMsg {
           position: relative;
           top: 5px;
           margin-left: 20px;
+
           .name {
             font-size: #444;
             font-size: 16px;
             margin-bottom: 3px;
             font-weight: 600;
           }
+
           .status {
             font-size: 14px;
             color: #62a070;
           }
+
           .status.waring {
             color: #f97215;
           }
+
           .status.end {
             color: #aaaaaa;
           }
         }
       }
     }
+
     .infoFoot {
       min-height: 60px;
       height: 60px;
@@ -652,6 +622,7 @@ export default {
       flex-direction: row;
       justify-content: flex-start;
       align-items: center;
+
       .noBtn {
         cursor: pointer;
         width: 100px;
@@ -663,6 +634,7 @@ export default {
         text-align: center;
         margin-left: 70px;
       }
+
       .yesBtn {
         cursor: pointer;
         margin-left: 15px;
@@ -674,8 +646,9 @@ export default {
         border-radius: 3px;
         color: #fff;
       }
+
       // width: 570px;
     }
   }
 }
-</style>
+</style>

+ 10 - 2
src/views/workBenchManager/journal/model/leave.vue

@@ -20,7 +20,7 @@
       <el-table-column label="编号" width="100px" prop="before.id"></el-table-column>
       <el-table-column label="类型" width="100px">
         <template slot-scope="scope">
-          {{ scope.row.before.type == "VIP" ? 'VIP课' : '乐团课' }}
+          {{ scope.row.before.type | formatCourseType }}
         </template>
       </el-table-column>
       <el-table-column label="班名" width="140px">
@@ -62,7 +62,7 @@
       </el-table-column>
       <el-table-column label="类型">
         <template slot-scope="scope">
-          {{ scope.row.before.type == "VIP" ? 'VIP课' : scope.row.before.type == 'LIVE' ? '直播课' : '乐团课' }}
+          {{ scope.row.before.type | formatCourseType }}
         </template>
       </el-table-column>
       <el-table-column label="班名">
@@ -164,6 +164,14 @@ export default {
   filters: {
     getFormatTime(tempA, tempB) {
       return dayjs(tempA).format('HH') + ':' + dayjs(tempA).format('mm') + '-' + dayjs(tempB).format('HH') + ':' + dayjs(tempB).format('mm')
+    },
+    formatCourseType(value) {
+      let template = {
+        VIP: "VIP课",
+        PRACTICE: "网管课",
+        LIVE: '直播课'
+      };
+      return template[value] || '乐团课';
     }
   }
 }

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini