lex-xin 4 vuotta sitten
vanhempi
commit
9bb5e73033

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/css/chunk-3410d6fa.204827ca.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 0
dist/static/css/chunk-46dda22c.98d7edce.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/css/chunk-57849352.a43f3d78.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/app.c5e4f12b.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/chunk-3365492b.40edd67f.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/chunk-46dda22c.24d3d068.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/static/js/chunk-57849352.570583c9.js


+ 4 - 2
src/router/index.js

@@ -208,7 +208,7 @@ export const asyncRoutes = {
   shopCategory: () => import('@/views/businessManager/shopManager/shopCategory'),
   // 报表中心
   reportForm: () => import('@/views/reportForm/index'),
-  musicalManager: () => import('@/views/categroyManager/specialSetup/musicalManager'),
+  // musicalManager: () => import('@/views/categroyManager/specialSetup/musicalManager'),
   // 系统管理
   specialSetup: () => import('@/views/categroyManager/specialSetup/index'),
   // 类型管理
@@ -386,7 +386,9 @@ export const asyncRoutes = {
   // 乐器维护
   musicalManager:()=>import('@/views/musicalManager'),
   // 服务指标明细
-  serverDetail:()=>import('@/views/serverDetail')
+  serverDetail:()=>import('@/views/serverDetail'),
+  // 未在班级学员
+  notClassStudent:()=>import('@/views/main/notClassStudent')
 }
 
 export default router

+ 1 - 0
src/router/notKeepAliveList.js

@@ -13,6 +13,7 @@ export default [
   '/vipClassSet/vipActiveList', // VIP活动方案
   '/vipClassSet/vipNewActive', // VIP活动方案修改
   '/main/main', // 首页
+  '/main/notClassStudent', // 未在班级学员
   '/journal/journal', // 系统日志
   '/business/accompany', // 网管课管理
   '/business/accompanys', // 网管课详情

+ 13 - 4
src/views/main/abnormal/index.vue

@@ -40,11 +40,16 @@
     >
       <title-item
         :type="item[0].isError ? 'error' : 'warning'"
-        :data="item.map(title => ({name: title.desc, num: title.num,errorType:title.errorType}))"
+        :data="item.map(title => ({name: title.desc, num: title.num, num2: title.num2, errorType:title.errorType}))"
       >
-        <span
-          style="color: #14928A;"
-        >立即处理<i class="el-icon-d-arrow-right"/></span>
+        <span style="color: #14928A;" v-if='errorType == "NO_CLASS_MUSIC_GROUP_STUDENT_INFO"'>
+          <template v-if="permission('/notClassStudent')">
+            立即处理<i class="el-icon-d-arrow-right"/>
+          </template>
+        </span>
+        <span style="color: #14928A;" v-else>
+          立即处理<i class="el-icon-d-arrow-right"/>
+        </span>
       </title-item>
     </el-button>
     <!-- <title-item
@@ -150,6 +155,10 @@ export default {
   methods: {
     permission,
     handle(item) {
+      console.log(item)
+      if(item[0].errorType == "NO_CLASS_MUSIC_GROUP_STUDENT_INFO" && !this.permission('/notClassStudent')) {
+        return
+      }
       new Searchs().removeByKey(item[0].url)
       this.$router.push({
         path: item[0].url,

+ 20 - 6
src/views/main/abnormal/title.vue

@@ -2,7 +2,7 @@
   <div class="title" :class="{error: type === 'error', warning: type === 'warning'}">
     <div>
       <span v-for="(item, index) in data" :key="index">
-        <span>{{item.name}}</span>
+        <span v-html=titleFilter(item)></span>
               <el-tooltip
             v-if="descs[item.errorType]"
             :content="descs[item.errorType]"
@@ -15,7 +15,7 @@
                 style="font-size: 14px; "
             />
           </el-tooltip>
-        <b>{{item.num}}</b>
+        <b v-if="!(ignore.includes(item.errorType))">{{item.num}}</b>
       </span>
 
     </div>
@@ -37,10 +37,24 @@ export default {
   },
   data(){
     return{
-     descs
+     descs,
+     ignore: ['NO_CLASS_MUSIC_GROUP_STUDENT_INFO'] // // 忽略类型
     }
   },
   mounted(){
+  },
+  methods: {
+    titleFilter(item) {
+      
+      if(this.ignore.includes(item.errorType)) {
+        let tempName = item.name
+        tempName = tempName.replace('{0}', `<b>${item.num}</b>`)
+        tempName = tempName.replace('{1}', `<b>${item.num2}</b>`)
+        return tempName
+      } else {
+        return item.name
+      }
+    }
   }
 }
 </script>
@@ -56,14 +70,14 @@ export default {
   font-weight: bold;
   transition: all .3s;
   width: 100%;
-  b{
+  /deep/b {
     font-size: 18px;
   }
   &:hover{
     background-color: rgba(0, 0, 0, .06);
   }
   &.error {
-    b{
+    /deep/b{
       color: #ED6F62;
     }
     &:before{
@@ -71,7 +85,7 @@ export default {
     }
   }
   &.warning {
-    b{
+    /deep/b{
       color: #F2A24A;
     }
     &:before{

+ 7 - 0
src/views/main/api.js

@@ -111,3 +111,10 @@ export const hasIndexErrData = () => request2({
   method: 'get',
   loading: false,
 })
+
+// 查询乐团中未加入班级学员信息
+export const queryNoClassMusicStudentInfo = (data) => request2({
+  url: '/api-web/studentRegistration/queryNoClassMusicStudentInfo',
+  method: 'get',
+  params: data
+})

+ 6 - 0
src/views/main/constant.js

@@ -73,6 +73,12 @@ export const errorType = {
       lessThenThreeHighOnline: '1',
     },
   },
+  NO_CLASS_MUSIC_GROUP_STUDENT_INFO: {
+    name: '当前有{0}个乐团共{1}名学员未加入任何班级',
+    isError: true,
+    url: '/main/notClassStudent',
+    always: true,
+  },
   STUDENT_NOT_PAYMENT: {
     name: '未缴费学员数',
     isError: true,

+ 172 - 0
src/views/main/notClassStudent.vue

@@ -0,0 +1,172 @@
+<!--  -->
+<template>
+    <div class="m-container">
+        <h2>
+            <div class="squrt"></div>
+            未在班级学员
+        </h2>
+        <div class="m-core">
+            <save-form
+                :inline="true"
+                @submit="search"
+                @reset="onReSet"
+                ref="searchFrom"
+                :model="searchForm"
+            >
+                <el-form-item prop="musicGroupSearch">
+                    <el-input
+                        v-model.trim="searchForm.musicGroupSearch"
+                        clearable
+                        @keyup.enter.native="search"
+                        placeholder="乐团名称/编号"
+                    ></el-input>
+                </el-form-item>
+                <el-form-item prop="studentSearch">
+                    <el-input
+                        v-model.trim="searchForm.studentSearch"
+                        clearable
+                        @keyup.enter.native="search"
+                        placeholder="学员姓名/编号"
+                    ></el-input>
+                </el-form-item>
+                <el-form-item prop="organIds">
+                    <el-select
+                        placeholder="请选择分部"
+                        v-model="searchForm.organIds"
+                        clearable
+                    >
+                        <el-option
+                        v-for="(item, index) in selects.branchs"
+                        :label="item.name"
+                        :value="item.id"
+                        :key="index"
+                        ></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="danger" native-type="submit">搜索</el-button>
+                    <el-button native-type="reset" type="primary">重置</el-button>
+                </el-form-item>
+            </save-form>
+            <div class="tableWrap">
+                <el-table
+                style="width: 100%"
+                :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+                :data="tableList"
+                >
+                <el-table-column align="center" label="分部">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.organName }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="乐团编号">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.groupId }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="乐团名称">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.groupName }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="学员编号">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.studentId }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="学员姓名">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.studentName }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="学员声部" prop="subjectName">
+                </el-table-column>
+                <el-table-column align="center" label="操作">
+                    <template slot-scope="scope">
+                        <auth :auths="['notClassStudent/nowLook', '/resetTeaming', '/resetTeaming/resetClass']" mulit>
+                            <el-button type="text" @click="showDetail(scope.row)">立即处理</el-button>
+                        </auth>
+                    </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"
+                />
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import pagination from "@/components/Pagination/index";
+import { queryNoClassMusicStudentInfo } from './api.js'
+export default {
+    components: { pagination },
+    data() {
+        return {
+            searchForm: {
+                musicGroupSearch: null,
+                studentSearch: null,
+                organIds: null,
+            },
+            rules: {
+                // 分页规则
+                limit: 10, // 限制显示条数
+                page: 1, // 当前页
+                total: 0, // 总条数
+                page_size: [10, 20, 40, 50], // 选择限制显示条数
+            },
+            tableList: []
+        };
+    },
+    //生命周期 - 挂载完成(可以访问DOM元素)
+    mounted() {
+        this.$store.dispatch("setBranchs");
+
+        this.getList()
+    },
+    methods: {
+        search() {
+            this.rules.page = 1;
+            this.getList();
+        },
+        onReSet() {
+            this.$refs['searchFrom'].resetFields()
+            this.getList()
+        },
+        async getList() {
+            try {
+                const { ...search } = this.searchForm
+                const params = {
+                    ...search,
+                    page: this.rules.page,
+                    rows: this.rules.limit
+                }
+                let res = await queryNoClassMusicStudentInfo(params)
+                this.tableList = res.data.rows;
+                this.rules.total = res.data.total;
+            } catch (err) {
+                // 
+            }
+        },
+        showDetail(item) {
+            this.$router.push({
+                path: '/business/resetTeaming',
+                query: {
+                    type: 'resetTeam',
+                    id: item.groupId,
+                    tabrouter: 'resetClass'
+                }
+            })
+        }
+    },
+};
+</script>
+<style lang='scss' scoped>
+
+</style>

+ 11 - 11
src/views/resetTeaming/index.vue

@@ -13,8 +13,8 @@
         <el-tab-pane label="基本信息"
         lazy
                      v-if="permission('/resetTeaming/teamBaseInfo')"
-                     name="1">
-          <teamBaseInfo v-if="activeIndex == 1"
+                     name="teamBaseInfo">
+          <teamBaseInfo v-if="activeIndex == 'teamBaseInfo'"
                         @getBaseInfo="getBaseInfo"
                         :baseInfo="baseInfo"
                         @getName='getName' />
@@ -22,8 +22,8 @@
         <el-tab-pane label="声部设置"
         lazy
                      v-if="permission('/resetTeaming/resetSound')"
-                     name="2">
-          <resetSound v-if="activeIndex == 2" />
+                     name="resetSound">
+          <resetSound v-if="activeIndex == 'resetSound'" />
         </el-tab-pane>
         <!-- <el-tab-pane label="学员缴费设置"
                      v-if="permission('/resetTeaming/studentPayBase')"
@@ -33,25 +33,25 @@
         <el-tab-pane label="学员缴费设置"
         lazy
                      v-if="permission('/resetTeaming/resetPayList')"
-                     name="3">
+                     name="resetPayList">
           <resetPayList :baseInfo="baseInfo"
-                        v-if="activeIndex == 3&&baseInfo"
+                        v-if="activeIndex == 'resetPayList'&&baseInfo"
                         @changeActive="handleClick" />
         </el-tab-pane>
         <el-tab-pane label="学校缴费设置"
         lazy
                      v-if="permission('/resetTeaming/resetPayList')"
-                     name="6">
+                     name="resetPayListSchool">
           <resetPayListSchool :baseInfo="baseInfo"
-                              v-if="activeIndex == 6&&baseInfo"
+                              v-if="activeIndex == 'resetPayListSchool'&&baseInfo"
                               @changeActive="handleClick" />
         </el-tab-pane>
 
         <el-tab-pane label="班级调整"
         lazy
                      v-if="permission('/resetTeaming/resetClass')"
-                     name="5">
-          <resetClass v-if="activeIndex == 5&&musicGroupInfo"  :musicGroupInfo='musicGroupInfo'/>
+                     name="resetClass">
+          <resetClass v-if="activeIndex == 'resetClass'&&musicGroupInfo"  :musicGroupInfo='musicGroupInfo'/>
         </el-tab-pane>
         <!-- <el-tab-pane label="新增排课"
                      v-if="permission('/resetTeaming/coursePlan')"
@@ -126,7 +126,7 @@ export default {
     __init () {
       // this.activeIndex = sessionStorage.getItem('resetCode') || '1';
       this.teamid = this.$route.query.id;
-      if(this.$route.query.tabrouter !=1){
+      if(this.$route.query.tabrouter != 'teamBaseInfo'){
         getTeamBaseInfo({ musicGroupId: this.teamid }).then(res=>{
           if(res.code == 200){
            this.getBaseInfo(res.data)

+ 2 - 1
src/views/teamDetail/componentCourse/studentRollCall.vue

@@ -31,7 +31,8 @@
           <template slot-scope="scope">
             <div>
               {{scope.row.username}}
-               <span style="color: #f56c6c">({{scope.row.userId}})</span>
+               <span >({{scope.row.userId}})</span>
+               <!-- style="color: #f56c6c" -->
             </div>
           </template>
         </el-table-column>

+ 1 - 1
src/views/teamDetail/componentCourse/teacherList.vue

@@ -9,7 +9,7 @@
         <template slot-scope="scope">
           <div>
             <span>{{scope.row.teacherName}}</span><br/>
-             <span style="color: #f56c6c">(<copy-text>{{scope.row.teacherId}}</copy-text>)</span>
+             <span>(<copy-text>{{scope.row.teacherId}}</copy-text>)</span><!-- style="color: #f56c6c"-->
           </div>
         </template>
       </el-table-column>

+ 6 - 0
src/views/teamDetail/teamCourseList.vue

@@ -525,6 +525,12 @@
             </el-tooltip>
           </div>
         </el-form-item>
+        <el-form-item label="学员考勤" v-if="maskForm.status != 'NOT_START'">
+          <div class="inputStyle" :class="maskForm.isCallNames != 1 ? 'red' : null">{{ maskForm.isCallNames == 1 ? '正常' : '异常' }}</div>
+        </el-form-item>
+        <el-form-item label="老师考勤" v-if="maskForm.status != 'NOT_START'">
+          <div class="inputStyle" :class="maskForm.signInStatusEnum == 1 && maskForm.signOutStatusEnum == 1? null : 'red'">{{ maskForm.signInStatusEnum == 1 && maskForm.signOutStatusEnum == 1 ? '正常' : '异常' }}</div>
+        </el-form-item>
         <el-form-item v-if="maskForm.school" label="教学点">
           {{ maskForm.school.name }}
           <el-tooltip content="查看教学点" :open-delay="0.5">

+ 4 - 4
vue.config.js

@@ -20,8 +20,8 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // let target = 'http://192.168.3.139:8000' // 箭河
 // let target = 'http://192.168.3.38:8000' //邹璇
 // let target = 'http://192.168.3.57:8000' //勇哥
-// let target = 'http://dev.dayaedu.com' // 测试服
-let target = 'https://test.dayaedu.com' //开发环境
+let target = 'http://dev.dayaedu.com' // 测试服
+// let target = 'https://test.dayaedu.com' //开发环境
 // let target = 'http://192.168.3.134' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {
@@ -55,7 +55,7 @@ module.exports = {
     //   warnings: false,
     //   errors: true
     // },
-    https: true,
+    https: false,
     proxy: {
       // change xxx-api/login => mock/login
       // detail: https://cli.vuejs.org/config/#devserver-proxy
@@ -64,7 +64,7 @@ module.exports = {
       // http://192.168.3.134
       // http://47.114.176.40:8000
       '/api-auth': {
-        target: 'https://test.dayaedu.com',
+        target: 'http://dev.dayaedu.com',
         changeOrigin: true,
         pathRewrite: {
           '^api-auth': ''

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä