ソースを参照

提交测试

1
mo 4 年 前
コミット
ae737d56c7
2 ファイル変更133 行追加86 行削除
  1. 40 5
      src/views/main/baseinfo/curriculum.vue
  2. 93 81
      src/views/studentManager/studentList.vue

+ 40 - 5
src/views/main/baseinfo/curriculum.vue

@@ -105,7 +105,6 @@ export default {
           months[key][item.title] = row.percent;
         }
       }
-      console.log(months)
       return {
         columns: ["日期", ...values.map((item) => item.title)],
         rows: Object.values(months),
@@ -164,13 +163,49 @@ export default {
             },
           },
           formatter: (item) => {
-            console.log(this.items['VIP_GROUP_COURSE']['indexMonthData'][item[0].dataIndex].extendInfo)
-            return [
-              item[0].axisValueLabel,
+            let str = "";
+            let strArr = [];
+            let dotStr =
+              '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;opacity:0;"></span>';
+            let array = [
               ...item.map(
                 (d) => `<br/>${d.marker}${d.seriesName}: ${d.value[1]}节`
               ),
-            ].join("");
+            ];
+            if (
+              this.items["VIP_GROUP_COURSE"]["indexMonthData"][
+                item[0].dataIndex
+              ]?.extendInfo
+            ) {
+              str = this.items["VIP_GROUP_COURSE"]["indexMonthData"][
+                item[0].dataIndex
+              ]?.extendInfo;
+              str.replace("/", "");
+              try {
+                let strObj = JSON.parse(str);
+                for (let item in strObj) {
+                  strArr.push({ name: item, num: strObj[item] });
+                }
+                // console.log(strArr)
+              } catch (e) {
+                console.log(e);
+                str = "";
+              }
+              // console.log(lodash.valuesIn(str))
+
+              let vipIndex = 0;
+              item.forEach((i, indx) => {
+                if (i.seriesName == "VIP课") {
+                  vipIndex = indx;
+                }
+              });
+              array.splice(
+                vipIndex + 1,
+                0,
+                ...strArr.map((d) => `<br/>${dotStr}${d.name}: ${d.num}节`)
+              );
+            }
+            return [item[0].axisValueLabel, ...array].join("");
           },
         },
       };

+ 93 - 81
src/views/studentManager/studentList.vue

@@ -22,7 +22,8 @@
         :model.sync="searchForm"
       >
         <el-form-item>
-          <el-input clearable
+          <el-input
+            clearable
             placeholder="学生姓名或电话"
             @keyup.enter.native="onSearch"
             v-model.trim="searchForm.search"
@@ -46,7 +47,10 @@
         </el-form-item>
 
         <el-form-item>
-            <remote-search :commit="'setTeachers'" v-model="searchForm.teacherId" />
+          <remote-search
+            :commit="'setTeachers'"
+            v-model="searchForm.teacherId"
+          />
           <!-- <el-select
             placeholder="指导老师"
             v-model="searchForm.teacherId"
@@ -136,44 +140,33 @@
           :data="tableList"
           :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
         >
-          <el-table-column
-            align="center"
-            prop="userId"
-            label="学员编号"
-          >
-             <template slot-scope="scope">
+          <el-table-column align="center" prop="userId" label="学员编号">
+            <template slot-scope="scope">
               <copy-text>{{ scope.row.userId }}</copy-text>
             </template>
           </el-table-column>
-          <el-table-column
-            align="center"
-            prop="username"
-            label="学员姓名"
-          >
-           <template slot-scope="scope">
+          <el-table-column align="center" prop="username" label="学员姓名">
+            <template slot-scope="scope">
               <copy-text>{{ scope.row.username }}</copy-text>
             </template>
           </el-table-column>
-          <el-table-column
-            align="center"
-            prop="organName"
-            label="所属分部"
-          >
-          <template slot-scope="scope">
+          <el-table-column align="center" prop="organName" label="所属分部">
+            <template slot-scope="scope">
               <copy-text>{{ scope.row.organName }}</copy-text>
             </template>
           </el-table-column>
           <el-table-column
             align="center"
-            prop="subjectName"
-            label="声部"
+            prop="cooperationOrganName"
+            label="所属学校"
           ></el-table-column>
           <el-table-column
             align="center"
-            prop="teacherName"
-            label="指导老师"
-          >
-             <template slot-scope="scope">
+            prop="subjectName"
+            label="声部"
+          ></el-table-column>
+          <el-table-column align="center" prop="teacherName" label="指导老师">
+            <template slot-scope="scope">
               <copy-text>{{ scope.row.teacherName }}</copy-text>
             </template>
           </el-table-column>
@@ -193,14 +186,12 @@
             prop="parentsPhone"
             label="家长联系电话"
           ></el-table-column>
-          <el-table-column align="center" >
+          <el-table-column align="center">
             <template slot="header">
               <p style="position: relative">
                 是否激活
                 <el-tooltip placement="top" popper-class="mTooltip">
-                  <div slot="content">
-                    学员是否设置密码
-                  </div>
+                  <div slot="content">学员是否设置密码</div>
                   <i
                     class="el-icon-question"
                     style="font-size: 18px; color: #f56c6c"
@@ -265,19 +256,15 @@
               </div>
             </template>
           </el-table-column>
-          <el-table-column
-            align="center"
-            prop="carePackage"
-            label="关心包"
-          >
-            <template slot-scope="scope">{{ scope.row.carePackage | studentPackage }}</template>
+          <el-table-column align="center" prop="carePackage" label="关心包">
+            <template slot-scope="scope">{{
+              scope.row.carePackage | studentPackage
+            }}</template>
           </el-table-column>
-          <el-table-column
-            align="center"
-            prop="comeOnPackage"
-            label="加油包"
-          >
-            <template slot-scope="scope">{{ scope.row.comeOnPackage | studentPackage }}</template>
+          <el-table-column align="center" prop="comeOnPackage" label="加油包">
+            <template slot-scope="scope">{{
+              scope.row.comeOnPackage | studentPackage
+            }}</template>
           </el-table-column>
           <el-table-column
             align="center"
@@ -293,10 +280,11 @@
                   path: `/studentManager/studentDetail`,
                   query: { ...scope.row },
                 }"
-                >查看</router-link>
+                >查看</router-link
+              >
               <el-button
                 type="text"
-                style="padding-left: 10px;"
+                style="padding-left: 10px"
                 v-permission="'studentManage/studentUpdate'"
                 @click="resetStudent(scope.row)"
                 >修改</el-button
@@ -309,7 +297,7 @@
                 >修改密码</el-button
               >
               <el-button
-              v-if="scope.row.isSignedContract"
+                v-if="scope.row.isSignedContract"
                 type="text"
                 @click="lookContracts(scope.row)"
                 v-permission="'sysUserContracts/getLatest'"
@@ -349,7 +337,7 @@
           title="课程信息"
           type="info"
           :closable="false"
-          style="margin-bottom: 15px;"
+          style="margin-bottom: 15px"
         ></el-alert>
         <el-form-item label="学生姓名" prop="name">
           <el-input v-model.trim="studentForm.name"></el-input>
@@ -425,6 +413,7 @@
             clearable
             placeholder="请选择分部"
             @change="changeStudentOrgan"
+
           >
             <el-option
               v-for="(item, index) in selects.branchs"
@@ -434,6 +423,17 @@
             ></el-option>
           </el-select>
         </el-form-item>
+        <el-form-item prop="school" label="所属学校">
+          <el-select v-model.trim="studentForm.school" filterable clearable  :disabled='!studentForm.organId'>
+            <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 label="指导老师" prop="teacherId">
           <el-select
             class="multiple"
@@ -453,7 +453,7 @@
           title="课程信息"
           type="info"
           :closable="false"
-          style="margin-bottom: 15px;"
+          style="margin-bottom: 15px"
         ></el-alert>
         <el-form-item label="是否运营" prop="operatingTag">
           <el-select
@@ -559,14 +559,14 @@
             },
           ]"
         >
-          <copy-text>{{passwrodForm.phone}}</copy-text>
+          <copy-text>{{ passwrodForm.phone }}</copy-text>
         </el-form-item>
         <el-form-item
           label="输入密码"
           prop="password"
           label-width="120px"
           :rules="[
-             { required: true, message: '密码不能为空', trigger: 'blur' },
+            { required: true, message: '密码不能为空', trigger: 'blur' },
             {
               pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/,
               message: '密码为6-20位数字和字母组合',
@@ -598,11 +598,7 @@
       </span>
     </el-dialog>
 
-    <el-dialog
-      title="协议下载"
-      :visible.sync="protocolVisible"
-      width="600px"
-    >
+    <el-dialog title="协议下载" :visible.sync="protocolVisible" width="600px">
       <div v-if="protocolVisible">
         <!-- <el-alert
           title="点击下载"
@@ -619,18 +615,19 @@
         >
           <el-table-column align="center" prop="studentId" label="协议名称">
             <template slot-scope="scope">
-              产品与服务协议{{ scope.row.version == 2 ? "(含课程)" : "(含系统)" }}
+              产品与服务协议{{
+                scope.row.version == 2 ? "(含课程)" : "(含系统)"
+              }}
             </template>
           </el-table-column>
           <el-table-column align="center" label="签署时间" prop="createTime">
           </el-table-column>
-          <el-table-column align="center"
-                           width="150px"
-                           label="操作">
+          <el-table-column align="center" width="150px" label="操作">
             <template slot-scope="scope">
               <div>
-                <el-button type="text"
-                           @click="onDownloadProtocol(scope.row)">下载</el-button>
+                <el-button type="text" @click="onDownloadProtocol(scope.row)"
+                  >下载</el-button
+                >
               </div>
             </template>
           </el-table-column>
@@ -652,14 +649,15 @@ import {
   studentHasCourse,
   getLatest,
 } from "@/api/studentManager";
-import qrCode from '@/components/QrCode/index';
+import { queryByOrganId } from "@/api/systemManage";
+import qrCode from "@/components/QrCode/index";
 import cleanDeep from "clean-deep";
 import { vaildStudentUrl } from "@/utils/validate";
 import { getEmployeeOrgan, resetPassword2, getTeacher } from "@/api/buildTeam";
 import { subjectListTree } from "@/api/specialSetting";
 import axios from "axios";
 import qs from "qs";
-import { packageStatus } from '@/constant/index'
+import { packageStatus } from "@/constant/index";
 import { getToken } from "@/utils/auth";
 import load from "@/utils/loading";
 import { permission } from "@/utils/directivePage";
@@ -710,10 +708,11 @@ export default {
         isNewUser: null,
         carePackage: 0,
         comeOnPackage: 0,
+        school:null
       },
       studentUpdatePackage: {
         carePackage: 0,
-        comeOnPackage: 0
+        comeOnPackage: 0,
       },
       studentRules: {
         name: [{ required: true, message: "请输入学生姓名" }],
@@ -740,7 +739,8 @@ export default {
       },
       activatedRow: null,
       protocolVisible: false,
-      protocolVersions: []
+      protocolVersions: [],
+      cooperationList: [],
     };
   },
   mounted() {
@@ -756,7 +756,7 @@ export default {
     onCreateQRCode() {
       // 生成报名二维码
       this.qrcodeStatus = true;
-      this.qrcodeUrl = vaildStudentUrl() + `/#/queryStudentPer`
+      this.qrcodeUrl = vaildStudentUrl() + `/#/queryStudentPer`;
     },
     getList() {
       let params = this.searchForm;
@@ -783,7 +783,7 @@ export default {
         serviceTag: null,
         teacherId: null,
       };
-      this.getList()
+      this.getList();
     },
     downLoadStudent() {
       let url = "/api-web/export/studentHasCourse";
@@ -896,7 +896,8 @@ export default {
             isNewUser: studentForm.isNewUser,
             subjectIdList: studentForm.subjectIdList,
             carePackage: studentForm.carePackage,
-            comeOnPackage: studentForm.comeOnPackage
+            comeOnPackage: studentForm.comeOnPackage,
+            cooperationOrganId:studentForm.school
           };
           registerStudent(obj).then((res) => {
             if (res.code == 200) {
@@ -927,7 +928,8 @@ export default {
             isNewUser: studentForm.isNewUser,
             subjectIdList: studentForm.subjectIdList,
             carePackage: studentForm.carePackage,
-            comeOnPackage: studentForm.comeOnPackage
+            comeOnPackage: studentForm.comeOnPackage,
+              cooperationOrganId:studentForm.school
           };
           updateStudent(obj).then((res) => {
             if (res.code == 200) {
@@ -994,12 +996,13 @@ export default {
           isNewUser: row.isNewUser,
           subjectIdList: Number(row.subjectIdList) || null,
           carePackage: row.carePackage,
-          comeOnPackage: row.comeOnPackage
+          comeOnPackage: row.comeOnPackage,
+          school:row.cooperationOrganId
         };
         this.studentUpdatePackage = {
           carePackage: row.carePackage,
-          comeOnPackage: row.comeOnPackage
-        }
+          comeOnPackage: row.comeOnPackage,
+        };
       });
     },
     onMaskClose(formName) {
@@ -1044,25 +1047,34 @@ export default {
     },
     async changeStudentOrgan(val) {
       this.studentForm.teacherId = null;
-      await getTeacher({ organId: val }).then((res) => {
-        if (res.code == 200) {
-          this.maskTeacherList = res.data;
-        }
-      });
+      if (val) {
+        await getTeacher({ organId: val }).then((res) => {
+          if (res.code == 200) {
+            this.maskTeacherList = res.data;
+          }
+        });
+        queryByOrganId({ organId: val }).then((res) => {
+          if (res.code == 200) {
+            this.cooperationList = res.data;
+          }
+        });
+      } else {
+        this.maskTeacherList = [];
+      }
     },
     async lookContracts(row) {
       await getLatest({ userId: row.userId }).then((res) => {
         if (res.code == 200) {
-          if(res.data) {
-            this.protocolVersions = res.data
-            this.protocolVisible = true
+          if (res.data) {
+            this.protocolVersions = res.data;
+            this.protocolVisible = true;
           }
         }
       });
     },
     onDownloadProtocol(item) {
-      window.location.href = item.url
-    }
+      window.location.href = item.url;
+    },
   },
 };
 </script>