Przeglądaj źródła

Merge branch '01/21VipReset' into online

wolyshaw 4 lat temu
rodzic
commit
ff9a12263d

+ 0 - 1
src/permission.js

@@ -84,7 +84,6 @@ router.beforeEach(async (to, from, next) => {
     }
   } else {
     /* has no token*/
-
     if (whiteList.indexOf(to.path) !== -1) {
       // in the free login whitelist, go directly
       next()

+ 2 - 0
src/router/index.js

@@ -376,6 +376,8 @@ export const asyncRoutes = {
   scheduleDetail:()=>import('@/views/main/teamSchedule/scheduleDetail'),
   // 乐团班级列表
   WithdrawalApplication:()=>import('@/views/withdrawal-application'),
+  // 欠费学员列表
+  ArrearageStudents: () => import('@/views/arrearage-students'),
 }
 
 export default router

+ 1 - 0
src/router/notKeepAliveList.js

@@ -87,4 +87,5 @@ export default [
   '/main/scheduleDetail',
   '/business/WithdrawalApplication', // 退团申请
   '/business/teacherDetail',
+  '/arrearage-students',
 ]

+ 18 - 0
src/views/arrearage-students/api.js

@@ -0,0 +1,18 @@
+import request from '@/utils/request2'
+
+// 欠费学员列表
+export const queryArrearageStudents = data => {
+  return request({
+    url: '/api-web/musicGroupPaymentCalenderDetail/queryArrearageStudents',
+    params: data,
+  })
+}
+
+// 获取未缴费学员关联乐团列表
+export const getNoPaymentStudentMusicGroups = data => {
+  return request({
+    url: '/api-web/musicGroupPaymentCalenderDetail/getNoPaymentStudentMusicGroups',
+    params: data,
+  })
+}
+

+ 214 - 0
src/views/arrearage-students/index.vue

@@ -0,0 +1,214 @@
+<template>
+  <div class="m-container">
+    <h2>
+      <div class="squrt"></div>欠费学员列表 <filter-search @reload="FetchList" :keys="['visitFlag']"/>
+    </h2>
+    <div class="m-core">
+      <save-form
+        :inline="true"
+        @submit="submit"
+        @reset="onReSet"
+        ref="searchForm"
+        :model.sync="searchForm"
+      >
+        <el-form-item>
+          <el-input
+            v-model.trim="searchForm.search"
+            clearable
+            placeholder="学员(乐团)编号"
+          ></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-select
+            v-model.trim="searchForm.organId"
+            clearable
+            filterable
+            placeholder="请选择所属分部"
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select
+            v-model.trim="searchForm.schoolId"
+            clearable
+            filterable
+            placeholder="请选择教学点"
+          >
+            <el-option
+              v-for="(item, index) in selects.schools"
+              :key="index"
+              :value="item.id"
+              :label="item.name"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <remote-search
+            :commit="'setEducations'"
+            v-model="searchForm.eduTeacherId"
+          />
+        </el-form-item>
+        <el-form-item>
+          <el-button native-type="submit" type="danger">搜索</el-button>
+          <el-button native-type="reset" type="primary">重置</el-button>
+        </el-form-item>
+      </save-form>
+      <el-table
+        :data="list"
+        style="width: 100%"
+        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+      >
+        <el-table-column
+          prop="userId"
+          label="学员编号"
+        >
+          <copy-text slot-scope="scope">{{scope.row.userId}}</copy-text>
+        </el-table-column>
+        <el-table-column
+          prop="studentName"
+          label="学员姓名"
+        >
+          <copy-text slot-scope="scope">{{scope.row.studentName}}</copy-text>
+        </el-table-column>
+        <el-table-column
+          prop="organName"
+          label="所属分部"
+        >
+          <copy-text slot-scope="scope">{{scope.row.organName}}</copy-text>
+        </el-table-column>
+        <el-table-column
+          prop="cooperationName"
+          label="合作单位"
+        >
+          <copy-text slot-scope="scope">{{scope.row.cooperationName}}</copy-text>
+        </el-table-column>
+        <el-table-column
+          prop="musicGroupName"
+          label="所在乐团"
+        >
+          <copy-text slot-scope="scope">{{scope.row.musicGroupName}}</copy-text>
+        </el-table-column>
+        <el-table-column
+          prop="eduTeacherName"
+          label="乐团主管"
+        >
+          <copy-text slot-scope="scope">{{scope.row.eduTeacherName}}</copy-text>
+        </el-table-column>
+        <el-table-column
+          prop="subjectName"
+          label="声部"
+        >
+          <copy-text slot-scope="scope">{{scope.row.subjectName}}</copy-text>
+        </el-table-column>
+        <el-table-column
+          prop="gender"
+          label="性别"
+        >
+          <span slot-scope="scope">{{scope.row.gender | sex}}</span>
+        </el-table-column>
+        <el-table-column
+          prop="parentName"
+          label="家长姓名"
+        >
+          <copy-text slot-scope="scope">{{scope.row.parentName}}</copy-text>
+        </el-table-column>
+        <el-table-column
+          prop="phone"
+          label="家长联系电话"
+        >
+          <copy-text slot-scope="scope">{{scope.row.phone}}</copy-text>
+        </el-table-column>
+        <el-table-column
+          prop="noPaymentAmount"
+          label="欠费金额"
+        >
+          <span style="color: red;" slot-scope="scope">{{scope.row.noPaymentAmount | moneyFormat}}</span>
+        </el-table-column>
+        <el-table-column
+          prop="ctrls"
+          label="操作"
+          fixed="right"
+        >
+          <el-button type="text" @click="view">查看</el-button>
+        </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="FetchList"
+      />
+    </div>
+  </div>
+</template>
+
+<script>
+import pagination from "@/components/Pagination/index";
+import { permission } from '@/utils/directivePage'
+import { queryArrearageStudents } from './api'
+const initSearch = {
+  search: '',
+  eduTeacherId: null,
+  organId: null,
+  branchs: null,
+}
+export default {
+  components: {
+    pagination,
+  },
+  data() {
+    return {
+      list: [],
+      searchForm: {
+        search: null,
+      },
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+    }
+  },
+  mounted() {
+    this.$store.dispatch('setBranchs')
+    this.$store.dispatch('setSchools')
+    this.FetchList()
+  },
+  methods: {
+    permission,
+    async FetchList() {
+      try {
+        const res = await queryArrearageStudents({
+          page: this.rules.page,
+          rows: this.rules.limit,
+          ...this.searchForm,
+        })
+
+        this.rules.total = res.data.total;
+        this.list = res.data.rows
+      } catch (error) {
+        console.log(error)
+      }
+    },
+    submit() {
+      this.rules.page = 1
+      this.FetchList()
+    },
+    onReSet() {
+      this.searchForm = {...initSearch}
+      this.submit();
+    },
+    view() {},
+  }
+}
+</script>

+ 3 - 2
src/views/main/abnormal/index.vue

@@ -6,6 +6,7 @@
           clearable
           filterable
           v-model="search.organId"
+          placeholder="请选择分部"
         >
           <el-option v-for="(item,index) in selects.branchs"
             :key="index"
@@ -36,6 +37,7 @@
           ...item[0].query,
           tag: $route.query.tag,
           filter_type: item[0].errorType,
+          organId: search.organId || undefined,
           [item[0].resultKey]: item[0].resultKey ? (item[0].result || []).join(',') : undefined
         }
       })"
@@ -43,14 +45,13 @@
       v-else
       v-for="(item, index) in activeList"
       :key="index"
-      :disabled="(item[0].result && !item[0].result.length) || (!item[0].always && !item[0].num)" type="text"
+      :disabled="(item[0].result && !item[0].result.length) || (!item[0].num)" type="text"
     >
       <title-item
         :type="item[0].isError ? 'error' : 'warning'"
         :data="item.map(title => ({name: title.desc, num: title.num}))"
       >
         <span
-          v-if="item[0].url && item[0].result || item[0].always"
           style="color: #14928A;"
         >立即处理<i class="el-icon-d-arrow-right"/></span>
       </title-item>

+ 9 - 8
src/views/main/constant.js

@@ -29,6 +29,11 @@ export const descs = {
   FINANCE_AMOUNT: '筛选时间段内现金收入总和', // 现金收入
 }
 
+const dates = {
+  start: dayjs().subtract(2, 'month').set('date', 1).format('YYYY-MM-DD'),
+  end: dayjs().format('YYYY-MM-DD'),
+}
+
 export const errorType = {
   MUSIC_PATROL_ITEM: {
     name: '乐团巡查事项异常',
@@ -79,8 +84,7 @@ export const errorType = {
     query: {
       visitFlag: '0',
       status: 'TRUANT',
-      start: '2020-12-01',
-      end: dayjs().format('YYYY-MM-DD'),
+      ...dates,
     }
   },
   COURSE_LEAVE_STUDENT_NUM: {
@@ -91,8 +95,7 @@ export const errorType = {
     query: {
       visitFlag: 0,
       status: 'LEAVE',
-      start: '2020-12-01',
-      end: dayjs().format('YYYY-MM-DD'),
+      ...dates,
     }
   },
   TEACHER_EXCEPTION_ATTENDANCE: {
@@ -103,8 +106,7 @@ export const errorType = {
     query: {
       attendanceStatus: 'ERR_ATTENDANCE',
       visitFlag: 0,
-      start: '2020-12-01',
-      end: dayjs().format('YYYY-MM-DD'),
+      ...dates,
     },
   },
   TEACHER_NOT_A_CLASS: {
@@ -115,8 +117,7 @@ export const errorType = {
     query: {
       attendanceStatus: 'NO_ATTENDANCE',
       visitFlag: 0,
-      start: '2020-12-01',
-      end: dayjs().format('YYYY-MM-DD'),
+      ...dates,
     },
   },
   TEACHER_LEAVE: {

+ 1 - 0
src/views/main/reminders/index.vue

@@ -5,6 +5,7 @@
         <el-select
           clearable
           filterable
+          placeholder="请选择分部"
           v-model="search.organId"
         >
           <el-option v-for="(item,index) in selects.branchs"

+ 4 - 0
src/views/main/teamSchedule/index.vue

@@ -182,6 +182,10 @@ export default {
     };
   },
   mounted() {
+    const { query } = this.$route
+    if (query.organId) {
+      this.searchForm.organId = query.organId
+    }
     this.$store.dispatch("setBranchs");
     this.getList();
   },

+ 4 - 0
src/views/musicInspection/index.vue

@@ -246,6 +246,10 @@ export default {
         };
     },
     async mounted () {
+        const { query } = this.$route
+        if (query.organId) {
+          this.searchForm.organId = query.organId
+        }
         this.getList()
         // 分部
         await this.$store.dispatch('setBranchs')

+ 4 - 1
src/views/operationalEarly/operationalList.vue

@@ -206,7 +206,10 @@ export default {
     //     this.organList = res.data;
     //   }
     // })
-    const { lowSalary } = this.$route.query
+    const { lowSalary, organId } = this.$route.query
+    if (organId) {
+      this.searchForm.organId = organId
+    }
     let string = lowSalary == 1 || lowSalary == 0 ? String(lowSalary) : ''
     if (string) {
       this.$set(this.searchForm, 'lowSalary', string)

+ 3 - 0
src/views/recodeManager/recodeList.vue

@@ -368,6 +368,9 @@ export default {
     // });
     const { query } = this.$route
     this.$store.dispatch("setBranchs");
+    if (query.organId) {
+      this.searchForm.organId = query.organId
+    }
     if (query.start || query.end) {
       this.courseTime = [query.start, query.end]
     } else {

+ 6 - 2
src/views/teamDetail/teamClassList.vue

@@ -248,8 +248,12 @@ export default {
   created() {},
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {
-    if (this.$route.query.type) {
-      this.searchForm.type = this.$route.query.type
+    const { query } = this.$route
+    if (query.type) {
+      this.searchForm.type = query.type
+    }
+    if (query.organId) {
+      this.searchForm.organIdList = [Number(query.organId)]
     }
     // 获取分部
     this.$store.dispatch("setBranchs");