فهرست منبع

提交一下啊

1
mo 4 سال پیش
والد
کامیت
9dfd43d778

+ 1 - 0
src/permission.js

@@ -21,6 +21,7 @@ router.onError((error) => {
       isOpen = true
       //  (router.app.$confirm)
       // router.push({ path: "/403", query: { path: targetPath } })
+      console.log(error)
       router.app.$confirm("网站有更新请点击确定刷新页面?", "更新提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",

+ 32 - 25
src/views/categroyManager/insideSetting/branchManager.vue

@@ -85,12 +85,12 @@
           </el-table-column>
           <el-table-column align="center" prop="realName" label="乐团主管">
           </el-table-column>
-          <el-table-column align="center" prop="linkman" label="联系人">
+          <!-- <el-table-column align="center" prop="linkman" label="联系人">
           </el-table-column>
           <el-table-column align="center" prop="job" label="职位">
           </el-table-column>
           <el-table-column align="center" prop="mobileNo" label="手机号">
-          </el-table-column>
+          </el-table-column> -->
           <el-table-column align="center" label="是否全职资源">
             <template slot-scope="scope">
               {{ scope.row.fullJobResource ? "是" : "否" }}
@@ -104,11 +104,9 @@
             </template>
           </el-table-column>
 
-          <el-table-column align="center" label="操作" width="100">
+          <el-table-column align="center" label="操作" width="140px">
             <template slot-scope="scope">
-              <el-button
-                @click="openTeaching('look',scope.row)"
-                type="text"
+              <el-button @click="openTeaching('look', scope.row)" type="text"
                 >查看</el-button
               >
               <el-button
@@ -186,7 +184,7 @@
           >
             <el-select
               style="width: 180px !important"
-              :disabled="!form.organId|| basdisabled"
+              :disabled="!form.organId || basdisabled"
               v-model.trim="form.educationUserId"
               filterable
               clearable
@@ -210,7 +208,7 @@
             :label-width="formLabelWidth"
           >
             <el-select
-            :disabled="basdisabled"
+              :disabled="basdisabled"
               v-model.trim="form.isEnable"
               filterable
               clearable
@@ -226,7 +224,7 @@
             :label-width="formLabelWidth"
           >
             <el-select
-            :disabled="basdisabled"
+              :disabled="basdisabled"
               v-model.trim="form.fullJobResource"
               style="width: 180px !important"
             >
@@ -248,7 +246,7 @@
             :label-width="formLabelWidth"
           >
             <el-input
-            :disabled="basdisabled"
+              :disabled="basdisabled"
               v-model.trim="item.linkman"
               autocomplete="off"
               style="width: 180px !important"
@@ -263,7 +261,7 @@
             :label-width="formLabelWidth"
           >
             <el-input
-            :disabled="basdisabled"
+              :disabled="basdisabled"
               v-model.trim="item.job"
               autocomplete="off"
               style="width: 180px !important"
@@ -284,7 +282,7 @@
             :label-width="formLabelWidth"
           >
             <el-input
-            :disabled="basdisabled"
+              :disabled="basdisabled"
               v-model.trim="item.mobileNo"
               autocomplete="off"
               style="width: 180px !important"
@@ -366,7 +364,7 @@ export default {
       formTitle: {
         create: "添加合作单位",
         update: "修改合作单位",
-        look:"查看合作单位"
+        look: "查看合作单位",
       },
       formLabelWidth: "120px",
       form: {
@@ -520,15 +518,23 @@ export default {
           fullJobResource: rows.fullJobResource,
           isEnable: rows.isEnable,
           educationUserId: rows.educationUserId,
-          cooperationOrganLinkmanList:rows.cooperationOrganLinkmanList.length>0?rows.cooperationOrganLinkmanList: [
-          { cooperationOrganId: rows.id, job: "", linkman: "", mobileNo: "" },
-        ]
+          cooperationOrganLinkmanList:
+            rows.cooperationOrganLinkmanList.length > 0
+              ? rows.cooperationOrganLinkmanList
+              : [
+                  {
+                    cooperationOrganId: rows.id,
+                    job: "",
+                    linkman: "",
+                    mobileNo: "",
+                  },
+                ],
         };
-              this.basdisabled = false
-      } else if(type == 'look'){
+        this.basdisabled = false;
+      } else if (type == "look") {
         this.changeOrgan(rows.organId);
         this.actionRow = rows;
-            this.form = {
+        this.form = {
           id: rows.id,
           name: rows.name, // 教学点名称
           linkman: rows.linkman, // 来源
@@ -539,13 +545,12 @@ export default {
           fullJobResource: rows.fullJobResource,
           isEnable: rows.isEnable,
           educationUserId: rows.educationUserId,
-          cooperationOrganLinkmanList:rows.cooperationOrganLinkmanList
+          cooperationOrganLinkmanList: rows.cooperationOrganLinkmanList,
         };
-        this.basdisabled = true
+        this.basdisabled = true;
         // 查看
-      }
-      else {
-        this.basdisabled = false
+      } else {
+        this.basdisabled = false;
         this.actionRow = null;
       }
     },
@@ -562,6 +567,9 @@ export default {
         organId: null,
         isEnable: null,
         educationUserId: null,
+        cooperationOrganLinkmanList: [
+          { cooperationOrganId: "", job: "", linkman: "", mobileNo: "" },
+        ],
       };
       this.$refs[formName].resetFields();
     },
@@ -603,7 +611,6 @@ export default {
         });
       }
     },
-
   },
 };
 </script>

+ 0 - 2
src/views/main/baseinfo/index.vue

@@ -230,8 +230,6 @@ export default {
         }
         this.dataInfo[item] = data[item];
       }
-
-      // console.log(this.dataInfo)
       this.dataInfo = { ...this.dataInfo };
     },
   },

+ 2 - 3
src/views/main/baseinfo/modals/searchHeader.vue

@@ -147,8 +147,7 @@ export default {
   display: flex;
   flex-direction: row;
   justify-content: space-between;
-  .right {
-    margin-top: 15px;
-  }
+  align-items: center;
+  height: 55px;
 }
 </style>

+ 70 - 0
src/views/resetTeaming/components/archicesComponents/api.js

@@ -86,3 +86,73 @@ export const getStudentAndTeacher = data => request2({
   requestType:'form'
 
 })
+
+// 获取作业情况
+export const getHomeworkStat = data => request2({
+  url: '/api-web/exercisesSituation/musicGroupHomeworkStat',
+  data ,
+  params:data,
+  method: 'get',
+  requestType:'form'
+
+})
+
+// 查询乐团资讯
+export const getMusicGroupNews = data => request2({
+  url: '/api-web/musicGroupNews/queryPage',
+  data ,
+  params:data,
+  method: 'get',
+  requestType:'form'
+
+})
+
+// 新增乐团资讯
+export const addMusicGroupNews = data => request2({
+  url: '/api-web/musicGroupNews/add',
+  data: data,
+  params: {},
+  method: 'post',
+  requestType:'form'
+
+})
+
+// 修改乐团资讯
+export const resetMusicGroupNews = data => request2({
+  url: '/api-web/musicGroupNews/update',
+  data: data,
+  params: {},
+  method: 'post',
+  requestType:'form'
+
+})
+
+// 删除乐团资讯
+export const delMusicGroupNews = data => request2({
+  url: '/api-web/musicGroupNews/del',
+  data: data,
+  params: {},
+  method: 'post',
+  requestType:'form'
+
+})
+
+// 查询问卷调查
+export const getMusicGroupQuestionnaire = data => request2({
+  url: '/api-web/musicGroupQuestionnaire/queryPage',
+  data ,
+  params:data,
+  method: 'get',
+  requestType:'form'
+
+})
+
+// 获取调查问卷题目详情
+export const getQuestionDetail = data => request2({
+  url: '/api-web/musicGroupQuestionnaire/getQuestionDetail',
+  data ,
+  params:data,
+  method: 'get',
+  requestType:'form'
+
+})

+ 64 - 12
src/views/resetTeaming/components/archicesComponents/baseInfo.vue

@@ -1,10 +1,19 @@
 <template>
   <div>
-    <el-alert title="基础信息" :closable="false" class="alert" type="info" />
+    <el-alert :closable="false" class="alert" type="info">
+      <template slot="title">
+        <div class="shapeWrap">
+          <span class="shape"></span>
+          <p>基本信息</p>
+        </div>
+      </template>
+    </el-alert>
     <descriptions :column="3" class="marginBtm22">
       <descriptions-item label="乐团编号:">
-        <overflow-text :text="baseInfo.id" width="100%"></overflow-text
-      ></descriptions-item>
+        <div v-if="baseInfo && baseInfo.id">
+          <overflow-text :text="baseInfo.id || ''" width="100%"></overflow-text>
+        </div>
+      </descriptions-item>
       <descriptions-item label="申请时间:">
         {{ baseInfo.createTime | formatTimer }}</descriptions-item
       >
@@ -24,19 +33,35 @@
         >{{ baseInfo.schoolName }}
       </descriptions-item>
       <descriptions-item label="衔接老师:">
-       {{baseInfo.transactionTeacherName}}</descriptions-item
+        {{ baseInfo.transactionTeacherName }}</descriptions-item
+      >
+      <descriptions-item label="乐队指导:"
+        >{{ baseInfo.directorUserName }}
+      </descriptions-item>
+      <descriptions-item label="乐团主管:">
+        {{ baseInfo.educationalTeacherName }}</descriptions-item
       >
     </descriptions>
-    <el-alert title="联系人" :closable="false" class="alert" type="info" />
+    <el-alert :closable="false" class="alert" type="info">
+      <div class="shapeWrap">
+        <span class="shape"></span>
+        联系人
+      </div>
+    </el-alert>
 
     <descriptions :column="3">
-      <descriptions-item label="联系人:"> </descriptions-item>
-      <descriptions-item label="职位:"> 2021-07-09</descriptions-item>
-      <descriptions-item label="手机号:"> 2021-07-09</descriptions-item>
-      <descriptions-item label="乐队指导:">{{baseInfo.directorUserName}} </descriptions-item>
-      <descriptions-item label="乐团主管:"> {{baseInfo.educationalTeacherName}}</descriptions-item>
+      <template
+        v-for="(item, index) in baseInfo.cooperationOrganLinkmanList"
+      >
+        <descriptions-item label="联系人:" :key="index">
+          {{ item.linkman }}</descriptions-item
+        >
+        <descriptions-item label="职位:" :key="index"> {{ item.job }}</descriptions-item>
+        <descriptions-item label="手机号:" :key="index">
+          {{ item.mobileNo }}</descriptions-item
+        >
+      </template>
     </descriptions>
-
   </div>
 </template>
 <script>
@@ -44,7 +69,18 @@ import { getBasicInfo } from "./api";
 export default {
   data() {
     return {
-      baseInfo: null,
+      baseInfo: {
+        id: "",
+        createTime: "",
+        billStartDate: "",
+        courseViewType: "",
+        chargeTypeName: "",
+        cooperationOrganName: "",
+        transactionTeacherName: "",
+        directorUserName: "",
+        educationalTeacherName: "",
+        cooperationOrganLinkmanList: [],
+      },
     };
   },
   async mounted() {
@@ -62,4 +98,20 @@ export default {
 .marginBtm22 {
   margin-bottom: 22px;
 }
+.shapeWrap {
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-start;
+  align-items: center;
+  .shape {
+    position: relative;
+    top: -1px;
+    display: block;
+    margin-right: 10px;
+    height: 14px;
+    width: 4px;
+    background-color: #14928a;
+    z-index: 500;
+  }
+}
 </style>

+ 162 - 0
src/views/resetTeaming/components/archicesComponents/modals/studentMaster.vue

@@ -0,0 +1,162 @@
+<template>
+  <div>
+    <save-form
+      ref="searchForm"
+      :inline="true"
+      save-key="studentMaster"
+      class="searchForm"
+      @submit="search"
+      @reset="onReSet"
+      :model="searchForm"
+    >
+      <el-form-item prop="search">
+        <el-input
+          v-model.trim="searchForm.search"
+          clearable
+          placeholder="学生姓名或电话"
+          @keyup.enter.native="search"
+        ></el-input>
+      </el-form-item>
+      <el-form-item prop="major">
+        <el-select
+          v-model.trim="searchForm.subjectId"
+          clearable
+          filterable
+          placeholder="请选择声部"
+        >
+          <el-option
+            v-for="(item, index) in soundList"
+            :key="index"
+            :value="item.id"
+            :label="item.name"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+
+      <el-form-item prop="currentGrade">
+        <el-select
+          v-model.trim="searchForm.currentGrade"
+          filterable
+          clearable
+          placeholder="请选择年级"
+        >
+          <el-option
+            v-for="(item, index) in gradeList"
+            :key="index"
+            :label="item.label"
+            :value="item.label"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item prop="oweFlag">
+        <el-select
+          v-model.trim="searchForm.oweFlag"
+          clearable
+          filterable
+          placeholder="是否购买月保"
+        >
+          <el-option label="否" value="0"></el-option>
+          <el-option label="是" value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button native-type="submit" type="danger">搜索</el-button>
+        <el-button type="primary" native-type="reset">重置</el-button>
+        <el-button
+          type="primary"
+          v-permission="'export/musicGroupStudent'"
+          @click="onMusicGroupExport"
+          >导出</el-button
+        >
+      </el-form-item>
+    </save-form>
+    <el-table
+      :data="tableList"
+      :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+    >
+      <el-table-column label="学员编号" width="120px;" prop="userId">
+      </el-table-column>
+      <el-table-column label="学员姓名" width="120px;" prop="realName">
+      </el-table-column>
+      <el-table-column align="center" prop="phone" label="联系电话">
+        <template slot-scope="scope">
+          <copy-text>
+            {{ scope.row.phone }}
+          </copy-text>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="声部" prop="subjectName">
+        <template slot-scope="scope">
+          <copy-text>
+            {{ scope.row.regSubjectName }}
+          </copy-text>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="年级">
+        <template slot-scope="scope">
+          <div>{{ scope.row.currentGrade + scope.row.currentClass }}</div>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="乐器品牌">
+        <template slot-scope="scope">
+          <div>{{ scope.row.paymentStatus | paymentStatus }}</div>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="乐器型号">
+        <template slot-scope="scope">
+          <div>{{ scope.row.paymentStatus | paymentStatus }}</div>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="购买日期">
+        <template slot-scope="scope">
+          <div>{{ scope.row.paymentStatus | paymentStatus }}</div>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="是否购买月保">
+        <template slot-scope="scope">
+          <div>{{ scope.row.isActive ? "是" : "否" }}</div>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="月保有效期">
+        <template slot-scope="scope">
+          <div>{{ scope.row.hasCourse ? "是" : "否" }}</div>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      save-key="studentMaster"
+      sync
+      :total.sync="rules.total"
+      :page.sync="rules.page"
+      :limit.sync="rules.limit"
+      :page-sizes="rules.page_size"
+      @pagination="getList"
+    />
+  </div>
+</template>
+<script>
+import pagination from "@/components/Pagination/index";
+export default {
+  props: ["searchForm", "soundList", "gradeList"],
+  components:{pagination},
+  data() {
+    return {
+      tableList: [],
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+    };
+  },
+  mounted() {},
+  methods: {
+       getList(){},
+    onMusicGroupExport() {},
+    search() {},
+    onReSet() {},
+  },
+};
+</script>

+ 258 - 0
src/views/resetTeaming/components/archicesComponents/modals/studentWork.vue

@@ -0,0 +1,258 @@
+<template
+>
+  <el-card header="">
+    <div slot="header" class="clearfix">
+      <searchHeader
+        v-if="mdate.length > 0"
+        :dates="mdate"
+        :title="'作业情况'"
+        :isShowQuert="false"
+        @changeValue="changeValue"
+      />
+    </div>
+
+    <div class="wall" style="height:68px;" v-if="JSON.stringify(items) == '{}'"></div>
+    <statistic class="statistic" :cols="0">
+      <statistic-item
+        v-for="(item, key) in items"
+        :key="key"
+        :class="{ active: active === key }"
+        @click="active = key"
+      >
+        <span v-if="item.title">
+          {{ item.title+'(%)'}}
+          <el-tooltip
+            v-if="item.desc"
+            :content="item.desc"
+            :open-delay="0.3"
+            placement="top"
+          >
+            <i
+              style="margin-left: 5px; cursor: pointer"
+              class="el-icon-warning-outline"
+            />
+          </el-tooltip>
+        </span>
+        <span> <count-to :endVal="item.percent" :decimals="2" /></span>
+      </statistic-item>
+    </statistic>
+    <!--   :data-zoom="dataZoom" -->
+    <ve-line
+      style="width: 100%"
+      height="350px"
+      :data="chartData"
+      :data-empty="dataEmpty"
+      :extend="chartExtend"
+      :legend="legend"
+    ></ve-line>
+  </el-card>
+</template>
+<script>
+import "v-charts/lib/style.css";
+import "echarts/lib/component/dataZoom";
+import countTo from "vue-count-to";
+import veLine from "v-charts/lib/line.common";
+import searchHeader from "@/views/main/baseinfo/modals/searchHeader";
+import { getTimes } from "@/utils";
+import { getHomeworkStat } from "../api";
+// import { descs, chioseNum } from "../constant";
+import { getNowDateAndSunday, getNowDateAndMonday } from "@/utils/date";
+export default {
+  props: ["data", "search"],
+  components: {
+    "count-to": countTo,
+    "ve-line": veLine,
+    searchHeader,
+  },
+  computed: {
+    legend() {
+      return {
+        left: "10px",
+      };
+    },
+    items() {
+      let obj = {}
+      let arr = ["HOMEWORK_CREATE_RATE","HOMEWORK_SUBMIT_RATE","HOMEWORK_COMMENT_RATE"]
+      arr.forEach(str=>{
+        if(this.data[str]){
+          obj[str]=this.data[str]
+        }else{
+          obj[str]={
+            title:""
+          }
+        }
+      })
+      /**
+       *  {
+        HOMEWORK_CREATE_RATE:this.data["HOMEWORK_CREATE_RATE"] || {},
+        HOMEWORK_SUBMIT_RATE: this.data["HOMEWORK_SUBMIT_RATE"] || {},
+        HOMEWORK_COMMENT_RATE: this.data["HOMEWORK_COMMENT_RATE"] || {},
+      };
+       */
+      return obj
+    },
+    chartExtend() {
+      return {
+        series: {
+           type: 'line',
+          smooth: false,
+        },
+        yAxis: {
+          //纵轴标尺固定
+          minInterval: 1,
+          type: "value",
+          scale: true,
+          min: 0,
+          max: 100,
+          axisLabel: {
+            formatter: "{value}%",
+          },
+        },
+        tooltip: {
+          axisPointer: {
+            type: "shadow",
+            shadowStyle: {
+              color: "rgba(150,150,150,0.2)",
+            },
+          },
+
+          formatter: (item) => {
+            return [
+              item[0].axisValueLabel,
+              ...item.map(
+                (d) => `<br/>${d.marker}${d.seriesName}: ${d.value[1]} %`
+              ),
+            ].join("");
+          },
+        },
+      };
+    },
+    dataZoom() {
+      return [
+        {
+          grid: {
+            left: "0%",
+          },
+          type: "slider",
+          start: 40,
+          end: 100,
+        },
+      ];
+    },
+    chartData() {
+      const values = Object.values(this.items);
+      const months = {};
+      for (const item of values) {
+        for (const row of item.indexMonthData || []) {
+          const key = this.$helpers.dayjs(row.month).format("YYYY-MM-DD");
+          if (!months[key]) {
+            months[key] = {
+              日期: key + "/" + getNowDateAndSunday(key),
+            };
+          }
+          months[key][item.title] = row.percent;
+        }
+      }
+
+      return {
+        columns: [
+          "日期",
+          ...values.map((item) => {
+            return item.title;
+          }),
+        ],
+        rows: Object.values(months),
+      };
+    },
+    dataEmpty() {
+      return !this.chartData.rows.length;
+    },
+  },
+  data() {
+    return {
+      active: "ACTIVATION_RATE",
+      mdate: [],
+      loading: false,
+    };
+  },
+  mounted() {
+    this.init()
+  },
+  methods: {
+    init() {
+      let nowTiem = this.$helpers.dayjs(new Date()).format("YYYY-MM-DD");
+      let startTime = this.$helpers
+        .dayjs(getNowDateAndMonday(nowTiem))
+        .subtract(49, "day")
+        .format("YYYY-MM-DD");
+      let endTime = getNowDateAndSunday(nowTiem);
+      this.mdate = [startTime, endTime];
+      this.FetchDetail();
+    },
+    changeValue(date) {
+      // 请求更改数据
+      this.mdate = date;
+      //  this.isDayOrMoth(date)
+      this.FetchDetail();
+    },
+    async FetchDetail() {
+      this.loading = true;
+      let data = [];
+      try {
+
+        const res = await getHomeworkStat({
+          musicGroupId:this.$route.query.musicGroupId,
+          ...getTimes(this.mdate, ["startDay", "endDay"]),
+        });
+        //       desc: descs[item.dataType],
+        for (const item of res.data) {
+          // 再循环一遍
+          for (const key in this.items) {
+            if (item.dataType == key) {
+              data[item.dataType] = {
+                ...item,
+
+              };
+            }
+          }
+        }
+      } catch (error) {
+        console.log(error);
+      }
+          this.dataInfo = data;
+      this.loading = false;
+      this.$emit('resetDate',data)
+
+
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+// .statistic{
+//   /deep/ .statistic-content{
+//     cursor: pointer;
+//     &.active > span{
+//       color: #14928a !important;
+//     }
+//   }
+// }
+
+/deep/.el-card__header {
+    padding: 0 20px !important;
+}
+  .shape {
+    margin-right: 10px;
+    height: 18px;
+    width: 4px;
+    background-color: #14928a;
+  }
+.chioseBox {
+  position: absolute;
+  right: 20px;
+  z-index: 1000;
+}
+.wrap {
+  position: relative;
+}
+</style>

+ 153 - 0
src/views/resetTeaming/components/archicesComponents/modals/surveyMask.vue

@@ -0,0 +1,153 @@
+<template>
+  <div>
+    <el-form :inline="true" :model.sync="form" ref="form" label-width="80px">
+      <el-alert
+        :closable="false"
+        title="基本信息"
+        class="alert marginBtm22"
+        type="info"
+      >
+      </el-alert>
+      <el-row>
+        <el-form-item prop="title" label="调查乐团">
+          {{ $route.query.name }}
+        </el-form-item>
+      </el-row>
+      <el-row>
+        <el-form-item
+          prop="questionTime"
+          label="调查时间"
+          :rules="[{ required: true, message: '请选择调查时间' }]"
+        >
+          <el-date-picker
+            style="width: 200px !important"
+            value-format="yyyy-MM-dd"
+            v-model.trim="form.questionTime"
+            type="date"
+            :picker-options="{ firstDayOfWeek: 1 }"
+            placeholder="请选择调查时间"
+          >
+          </el-date-picker>
+          <!-- <el-input v-model="form.author"></el-input> -->
+        </el-form-item>
+
+        <el-form-item
+          prop="target"
+          label="调查对象"
+          :rules="[{ required: true, message: '请填写调查对象' }]"
+        >
+          <el-input
+            style="width: 200px !important"
+            v-model="form.target"
+          ></el-input>
+        </el-form-item>
+      </el-row>
+      <el-alert
+        :closable="false"
+        title="问卷信息"
+        class="alert marginBtm22"
+        type="info"
+      />
+
+      <el-row
+        v-for="(item, index) in form.questionnaireUserResult"
+        :key="index"
+      >
+        <!--  :rules="[{ required: item.isRequire, message: '请选择问卷信息' }]" -->
+        <el-form-item
+          :prop="
+            'questionnaireUserResult.' +
+            index +
+            '.questionnaireQuestionItemIdList'
+          "
+        >
+          <p>{{ index + 1 }}{{ item.content }}</p>
+          <el-select
+            v-if="item.type == 'radio'"
+            v-model="item.questionnaireQuestionItemIdList"
+            placeholder="请选择答案"
+            @change="changeSelect"
+          >
+            <el-option
+              :label="subject.answerValue"
+              :value="String(subject.id)"
+              v-for="(subject, index) in item.questionnaireQuestionItemList"
+              :key="index"
+            ></el-option>
+          </el-select>
+          <el-select
+            v-else-if="item.type == 'checkbox'"
+            v-model="item.questionnaireQuestionItemIdList"
+            placeholder="请选择答案"
+            multiple
+            @change="changeSelect"
+          >
+            <el-option
+              :label="subject.answerValue"
+              :value="String(subject.id)"
+              v-for="(subject, index) in item.questionnaireQuestionItemList"
+              :key="index"
+            ></el-option>
+          </el-select>
+          <el-input
+            v-else-if="item.type == 'textarea'"
+            type="textarea"
+            style="border: 0"
+            :autosize="{ minRows: 3, maxRows: 6 }"
+            placeholder="请输入其它意见"
+            v-model="item.questionnaireQuestionItemIdList"
+            @input="setTextarea"
+          >
+          </el-input>
+        </el-form-item>
+      </el-row>
+    </el-form>
+  </div>
+</template>
+<script>
+export default {
+  props: ["form"],
+  data() {
+    return {};
+  },
+  mounted() {},
+  methods: {
+    submitSurvey() {
+      let flag = true;
+      let str;
+      for (let quests in this.form.questionnaireUserResult) {
+        let quest = this.form.questionnaireUserResult[quests];
+        if (
+          !(
+            quest.isRequire &&
+            quest.questionnaireQuestionItemIdList &&
+            quest.questionnaireQuestionItemIdList.length > 0
+          )
+        ) {
+          flag = false;
+          str = "请填写" + quest.content;
+          break;
+        }
+      }
+
+      if (!flag) {
+        this.$message.error(str);
+        return;
+      }
+      console.log(this.form);
+    },
+    changeSelect() {
+      this.$forceUpdate();
+    },
+    setTextarea(event, val) {
+      this.$forceUpdate();
+    },
+  },
+  watch: {},
+};
+</script>
+<style lang="scss" scoped>
+.marginBtm22 {
+  margin-bottom: 22px;
+}
+</style>

+ 119 - 23
src/views/resetTeaming/components/archicesComponents/studentAndTeacher.vue

@@ -1,14 +1,10 @@
 <template>
   <div>
-    <el-alert
-      title=""
-      :closable="false"
-      class="alert marginBtm22"
-      type="info"
-    >
+    <el-alert title="" :closable="false" class="alert marginBtm22" type="info">
       <template slot="title">
-        <div>
-          学员分布
+        <div class="shapeWrap">
+          <span class="shape"></span>
+          <p style="margin-right:5px">学员分布</p>
           <span style="color: red; font-weight: bold"
             >该乐团当前有 8 名学员在毕业年级</span
           >
@@ -19,9 +15,16 @@
     <el-divider class="divider"></el-divider>
     <div>
       <el-row class="row">
-        <el-col class="col" :span="6" v-for="(item, index) in subject" :key="index">
+        <el-col
+          class="col"
+          :span="6"
+          v-for="(item, index) in subject"
+          :key="index"
+        >
           <span class="col-title">{{ item.key }}:</span>
-          <span class="col-value">{{ item.value }}人</span>
+          <span class="col-value" @click="getSoundInfo(item.value)"
+            >{{ item.value }}人</span
+          >
         </el-col>
       </el-row>
     </div>
@@ -29,15 +32,18 @@
     <el-divider class="divider"></el-divider>
     <el-row class="row">
       <el-col class="col" :span="6" v-for="(item, index) in grade" :key="index">
-        <span  class="col-title">{{ item.key }}:</span>
-        <span class="col-value">{{ item.value }}人</span>
+        <span class="col-title">{{ item.key }}:</span>
+        <span class="col-value" @click="getGradeInfo(item.key)"
+          >{{ item.value }}人</span
+        >
       </el-col>
     </el-row>
 
     <el-alert :closable="false" class="alert marginBtm22" type="info">
       <template slot="title">
-        <div>
-          师资安排
+        <div class="shapeWrap">
+          <span class="shape"></span>
+          <p style="margin-right:5px">师资安排</p>
           <el-tooltip placement="top" popper-class="mTooltip">
             <div slot="content">师资安排中第一位为主教老师</div>
             <i
@@ -50,24 +56,76 @@
       </template>
     </el-alert>
     <el-row class="row">
-      <el-col class="col" :span="6" v-for="(item, index) in teacher" :key="index">
-        <span  class="col-title">{{ item.key }}:</span>
-        <span >{{ item.value }}</span>
+      <el-col
+        class="col"
+        :span="6"
+        v-for="(item, index) in teacher"
+        :key="index"
+      >
+        <span class="col-title">{{ item.key }}:</span>
+        <span>{{ item.value }}</span>
       </el-col>
     </el-row>
+    <!-- studentMaster -->
+    <el-dialog
+      width="1200px"
+      title="学员列表"
+      :visible.sync="studentVisible"
+      v-if="studentVisible"
+    >
+      <studentMaster
+        :searchForm="searchForm"
+        :soundList="soundList"
+        :gradeList="gradeList"
+      />
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="studentVisible = false"
+          >确 定</el-button
+        >
+      </div>
+    </el-dialog>
   </div>
 </template>
 <script>
 import { getStudentAndTeacher } from "./api";
+import studentMaster from "./modals/studentMaster";
+import { getMusicGroupGradeList, findSound } from "@/api/buildTeam";
 export default {
+  components: { studentMaster },
   data() {
     return {
       grade: [],
       subject: [],
       teacher: [],
+      studentVisible: false,
+      searchForm: {
+        search: "",
+        subjectId: "",
+        currentGrade: "",
+        oweFlag: "",
+      },
+      teamid: this.$route.query.id,
+      soundList: [],
+      gradeList: [],
     };
   },
   async mounted() {
+    findSound({ musicGroupId: this.teamid }).then((res) => {
+      if (res.code == 200) {
+        this.soundList = res.data;
+      }
+    });
+    getMusicGroupGradeList({ musicGroupId: this.teamid }).then((res) => {
+      let result = res.data;
+      if (res.code == 200 && result) {
+        for (let i in result) {
+          this.gradeList.push({
+            value: i,
+            label: result[i],
+          });
+        }
+      }
+    });
     try {
       const res = await getStudentAndTeacher({
         musicGroupId: this.$route.query.id,
@@ -75,7 +133,29 @@ export default {
       this.grade = res.data.grade;
       this.subject = res.data.subject;
       this.teacher = res.data.teacher;
-    } catch (e) {}
+    } catch (e) {
+      console.log(e);
+    }
+  },
+  methods: {
+    getSoundInfo(val) {
+      this.searchForm = {
+        search: "",
+        subjectId: val,
+        currentGrade: "",
+        oweFlag: "",
+      };
+      this.studentVisible = true;
+    },
+    getGradeInfo(val) {
+      this.searchForm = {
+        search: "",
+        subjectId: "",
+        currentGrade: val,
+        oweFlag: "",
+      };
+      this.studentVisible = true;
+    },
   },
 };
 </script>
@@ -96,13 +176,29 @@ export default {
     margin-bottom: 20px;
     .col-title {
       display: inline-block;
-      width: 120px;
+      width: 150px;
       text-align: right;
     }
-   .col-value{
-     color: #14928a;
-     cursor: pointer;
-   }
+    .col-value {
+      color: #14928a;
+      cursor: pointer;
+    }
+  }
+}
+.shapeWrap {
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-start;
+  align-items: center;
+  .shape {
+    position: relative;
+    top: -1px;
+    display: block;
+    margin-right: 10px;
+    height: 14px;
+    width: 4px;
+    background-color: #14928a;
+    z-index: 500;
   }
 }
 </style>

+ 188 - 1
src/views/resetTeaming/components/archicesComponents/survey.vue

@@ -1,5 +1,192 @@
 <template>
   <div>
-    满意度调查
+    <el-alert :closable="false" class="alert marginBtm22" type="info">
+      <template slot="title">
+        <div class="alerTitle">
+          <div class="shapeWrap">
+            <span class="shape"></span>
+            <p style="margin-right: 5px">满意度调查</p>
+          </div>
+
+          <el-button type="text" @click="addSurvey">+新增满意度调查</el-button>
+        </div>
+      </template>
+    </el-alert>
+
+    <el-table
+      :data="tableList"
+      :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+    >
+      <el-table-column align="center" prop="title" label="调查时间">
+      </el-table-column>
+      <el-table-column align="center" prop="author" label="调查对象">
+      </el-table-column>
+      <el-table-column align="center" prop="linkUrl" label="调查人">
+      </el-table-column>
+      <el-table-column align="center" prop="id" label="操作">
+        <template slot-scope="scope">
+          <div>
+            <el-button type="text" @click="lookSurvey(scope.row)"
+              >详情</el-button
+            >
+            <el-button type="text" @click="resetSurvey(scope.row)"
+              >修改</el-button
+            >
+            <el-button type="text" @click="deleteSurvey(scope.row)"
+              >删除</el-button
+            >
+          </div>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      save-key="team-survey"
+      sync
+      :total.sync="rules.total"
+      :page.sync="rules.page"
+      :limit.sync="rules.limit"
+      :page-sizes="rules.page_size"
+      @pagination="getList"
+    />
+
+    <el-dialog
+      :title="surveyTitle"
+      :visible.sync="surveyVisible"
+      width="800px"
+      v-if="surveyVisible"
+    >
+
+      <surveyMask :form="form"  ref="surveyMask"/>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="surveyVisible = false">取 消</el-button>
+        <el-button type="primary" @click="submitSurvey">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
+<script>
+import { getMusicGroupQuestionnaire, getQuestionDetail } from "./api";
+import surveyMask from "./modals/surveyMask";
+import pagination from "@/components/Pagination/index";
+export default {
+  components: { surveyMask, pagination },
+  data() {
+    return {
+      tableList: [],
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 1, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      surveyVisible: false,
+      surveyTitle: "新增满意度调查",
+      activeRow: null,
+      questionList: null,
+      form: {
+        questionTime: "",
+        target: "",
+        musicGroupId:'',
+        questionnaireUserResult:[]
+      },
+    };
+  },
+  async mounted() {
+    this.getList();
+    this.setQuestion()
+  },
+  methods: {
+    async setQuestion() {
+      try {
+        const res = await getQuestionDetail();
+        this.questionList = res.data;
+        this.form.musicGroupId = this.$route.query.id;
+
+        let questionnaireUserResult=
+          this.questionList.questionnaireQuestionList.map((item) => {
+            if (item.type == "radio") {
+              item.questionnaireQuestionItemIdList = null;
+            }
+            if (item.type == "checkbox") {
+              item.questionnaireQuestionItemIdList = [];
+            }
+            if (item.type == "textarea") {
+              item.questionnaireQuestionItemIdList = null;
+            }
+            return item;
+          });
+
+          this.$set(this.form, 'questionnaireUserResult',questionnaireUserResult)
+      } catch (e) {}
+    },
+    async getList() {
+      try {
+        const res = await getMusicGroupQuestionnaire({
+          page: this.rules.page,
+          rows: this.rules.limit,
+          search: this.$route.query.id,
+        });
+        this.tableList = res.data.rows;
+        this.rules.total = res.data.total;
+      } catch (e) {
+        console.log(e);
+      }
+    },
+    lookSurvey(row) {},
+    resetSurvey(row) {},
+    deleteSurvey(row) {},
+    addSurvey() {
+      (this.activeRow = null), (this.surveyTitle = "新增满意度调查");
+      this.surveyVisible = true;
+    },
+    submitSurvey() {
+      this.$refs.surveyMask.submitSurvey()
+    },
+       changeSelect(){
+
+      this.$forceUpdate()
+    }
+  },
+};
+</script>
+<style lang="scss" scoped>
+/deep/.el-alert__content {
+  width: 100%;
+}
+.alerTitle {
+  width: 100%;
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+  .el-button {
+    padding: 0 20px !important;
+  }
+}
+.title {
+  padding: 8px 16px;
+}
+.divider {
+  margin-top: 0 !important;
+}
+.marginBtm22 {
+  margin-bottom: 22px;
+}
+.shapeWrap {
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-start;
+  align-items: center;
+  .shape {
+    position: relative;
+    top: -1px;
+    display: block;
+    margin-right: 10px;
+    height: 14px;
+    width: 4px;
+    background-color: #14928a;
+    z-index: 500;
+  }
+}
+</style>

+ 236 - 1
src/views/resetTeaming/components/archicesComponents/teamInfo.vue

@@ -1,5 +1,240 @@
 <template>
   <div>
-    乐团资讯
+    <el-alert :closable="false" class="alert marginBtm22" type="info">
+      <template slot="title">
+        <div class="alerTitle">
+          <div class="shapeWrap">
+            <span class="shape"></span>
+            <p style="margin-right: 5px">乐团资讯</p>
+          </div>
+
+          <el-button type="text" @click="addInfo">+新增乐团资讯</el-button>
+        </div>
+      </template>
+    </el-alert>
+    <el-table
+      :data="tableList"
+      :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+    >
+      <el-table-column align="center" prop="title" label="资讯标题">
+      </el-table-column>
+      <el-table-column align="center" prop="author" label="作者">
+      </el-table-column>
+      <el-table-column align="center" prop="linkUrl" label="资讯链接">
+      </el-table-column>
+      <el-table-column align="center" prop="id" label="添加时间">
+        <template slot-scope="scope">
+          <div>
+            {{ scope.row.createTime | formatTimer }}
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" prop="operatorId" label="添加人">
+      </el-table-column>
+      <el-table-column align="center" prop="id" label="操作">
+        <template slot-scope="scope">
+          <div>
+            <el-button type="text" @click="resetInfo(scope.row)">修改</el-button>
+            <el-button type="text" @click="deleteInfo(scope.row)">删除</el-button>
+          </div>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      save-key="team-teamInfo"
+      sync
+      :total.sync="rules.total"
+      :page.sync="rules.page"
+      :limit.sync="rules.limit"
+      :page-sizes="rules.page_size"
+      @pagination="getList"
+    />
+
+    <el-dialog
+      :title="infoTitle"
+      :visible.sync="infoVisible"
+      width="600px"
+      v-if="infoVisible"
+    >
+      <el-form :inline="true" :model.sync="form" ref="form" label-width="80px">
+        <el-form-item
+          prop="title"
+          label="资讯标题"
+          :rules="[{ required: true, message: '请输入资讯标题' }]"
+        >
+          <el-input
+            style="width: 400px !important"
+            v-model="form.title"
+          ></el-input>
+        </el-form-item>
+        <el-form-item
+          prop="author"
+          label="作者"
+          :rules="[{ required: true, message: '请输入作者名称' }]"
+        >
+          <el-input
+            style="width: 400px !important"
+            v-model="form.author"
+          ></el-input>
+        </el-form-item>
+        <el-form-item
+          prop="linkUrl"
+          label="资讯链接"
+          :rules="[{ required: true, message: '请输入资讯链接' }]"
+        >
+          <el-input
+            style="width: 400px !important"
+            v-model="form.linkUrl"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="infoVisible = false">取 消</el-button>
+        <el-button type="primary" @click="submitInfo">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
+
+<script>
+import { getMusicGroupNews, addMusicGroupNews,resetMusicGroupNews,delMusicGroupNews } from "./api";
+import pagination from "@/components/Pagination/index";
+export default {
+  components: {
+    pagination,
+  },
+  data() {
+    return {
+      tableList: [],
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 1, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      infoVisible: false,
+      infoTitle: "新增资讯",
+      form: {
+        author: "",
+        linkUrl: "",
+        title: "",
+      },
+      activeRow:null
+    };
+  },
+  mounted() {
+    this.getList();
+  },
+  methods: {
+    addInfo() {
+      this.infoTitle = "新增资讯";
+      this.infoVisible = true;
+    },
+    async getList() {
+      try {
+        const res = await getMusicGroupNews({
+          rows: this.rules.limit,
+          page: this.rules.page,
+          search: this.$route.query.id,
+        });
+        this.tableList = res.data.rows;
+        this.rules.total = res.data.total;
+      } catch (e) {}
+    },
+    resetInfo(row){
+       this.infoTitle = "修改资讯";
+      this.activeRow = row
+      this.form = {...row}
+      this.infoVisible = true
+    },
+    deleteInfo(row){
+
+           this.$confirm("确定删除?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          delMusicGroupNews({ id: row.id }).then((res) => {
+            if (res.code === 200) {
+              this.$message.success("删除成功");
+              this.getList();
+              // this.routeOrderStatus = false;
+            }
+          });
+        })
+        .catch();
+    },
+    submitInfo() {
+      this.$refs.form.validate(async (flag) => {
+        if (flag) {
+          if (this.activeRow) {
+            try{
+            const res = await resetMusicGroupNews({...this.form})
+                this.$message.success("修改成功");
+              this.infoVisible = false;
+              this.getList();
+            }catch(e){
+              console.log(e)
+            }
+            // 修改
+          } else {
+            try {
+              const res = await addMusicGroupNews({
+                ...this.form,
+                musicGroupId: this.$route.query.id,
+              });
+              this.$message.success("新增成功");
+              this.infoVisible = false;
+              this.getList();
+            } catch (e) {
+              console.log(e);
+            }
+          }
+        }
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+/deep/.el-alert__content {
+  width: 100%;
+}
+.alerTitle {
+  width: 100%;
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+  .el-button {
+    padding: 0 20px !important;
+  }
+}
+.title {
+  padding: 8px 16px;
+}
+.divider {
+  margin-top: 0 !important;
+}
+.marginBtm22 {
+  margin-bottom: 22px;
+}
+.shapeWrap {
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-start;
+  align-items: center;
+  .shape {
+    position: relative;
+    top: -1px;
+    display: block;
+    margin-right: 10px;
+    height: 14px;
+    width: 4px;
+    background-color: #14928a;
+    z-index: 500;
+  }
+}
+</style>
+

+ 28 - 9
src/views/resetTeaming/components/archicesComponents/trainPlan.vue

@@ -8,12 +8,14 @@
     >
       <template slot="title">
         <div class="alerTitle">
-          <p>
-            师资安排
-            <span style="color: red; font-weight: bold"
-              >该乐团声部课剩余 2 课时、合奏课 4 课时未进行教学规划</span
+          <div class="shapeWrap">
+            <span class="shape"></span>
+            <p style="margin-right: 5px">师资安排</p>
+            <span style="color: red; font-weight: bold">
+              该乐团声部课剩余 2 课时、合奏课 4 课时未进行教学规划</span
             >
-          </p>
+          </div>
+
           <el-button type="text" @click="addPlan">+新增训练规划</el-button>
         </div>
       </template>
@@ -163,7 +165,7 @@ import {
   getPlanCourseNum,
   getMusicGroupTrainPlan,
   deteleMusicGroupTrainPlan,
-  getExceptionPlan
+  getExceptionPlan,
 } from "./api";
 import { filterCourseType } from "@/constant/index";
 import addplan from "./modals/addPlan";
@@ -364,9 +366,8 @@ export default {
       }
 
       try {
-      const res = await getExceptionPlan(obj)
-
-      }catch(e){}
+        const res = await getExceptionPlan(obj);
+      } catch (e) {}
     },
     // 删除尚未接完
     detelePlan(item) {
@@ -505,10 +506,28 @@ export default {
     padding: 0 20px !important;
   }
 }
+.shapeWrap {
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-start;
+  align-items: center;
+  .shape {
+    position: relative;
+    top: -1px;
+    display: block;
+    margin-right: 10px;
+    height: 14px;
+    width: 4px;
+    background-color: #14928a;
+    z-index: 500;
+  }
+}
 /deep/.el-alert__content {
   flex: 1;
 }
 .searchForm {
   padding: 0 16px;
 }
+
+
 </style>

+ 85 - 14
src/views/resetTeaming/components/archicesComponents/trainTimer.vue

@@ -2,8 +2,9 @@
   <div>
     <el-alert title="" :closable="false" class="alert marginBtm22" type="info">
       <template slot="title">
-        <div>
-          训练时长
+        <div class="shapeWrap">
+          <span class="shape"></span>
+          <p style="margin-right:5px">训练时长</p>
           <el-tooltip placement="top" popper-class="mTooltip">
             <div slot="content">师资安排中第一位为主教老师</div>
             <i
@@ -50,10 +51,30 @@
         </el-select>
       </el-form-item>
     </save-form>
+    <div v-if="dataList.length > 0">
+      <el-row class="row">
+        <el-col
+          class="col"
+          :span="6"
+          v-for="(item, index) in dataList"
+          :key="index"
+        >
+        <!--  {{ item.name }}{{item.type | classType}}: -->
+          <span class="col-title">
+             <overflow-text :text="item.name+':'" width="100%"></overflow-text
+      >
+           </span>
+          <span> {{ item.currentClassTimes }}/{{item.totalClassTimes}}课时</span>
+        </el-col>
+      </el-row>
+    </div>
+    <div v-else>
+        <empty desc="暂无数据" />
+    </div>
   </div>
 </template>
 <script>
-import {getPlanCourseNum} from './api'
+import { getPlanCourseNum } from "./api";
 export default {
   data() {
     return {
@@ -61,6 +82,7 @@ export default {
         year: "",
         term: "",
       },
+      dataList: [],
     };
   },
   created() {
@@ -75,24 +97,73 @@ export default {
     }
   },
   mounted() {
-    this.getList()
+    this.getList();
   },
   methods: {
-    changeYear(val) {},
-    changeTerm(val) {},
-  async getList(){
-    try{
-      const res = await  getPlanCourseNum({musicGroupId:this.$route.query.id,year:this.searchForm.year,term:this.searchForm.term})
-    }catch(e){
-
-    }
-
-    }
+    changeYear(val) {
+      this.getList()
+    },
+    changeTerm(val) {
+       this.getList()
+    },
+    async getList() {
+      try {
+        const res = await getPlanCourseNum({
+          musicGroupId: this.$route.query.id,
+          year: this.searchForm.year,
+          term: this.searchForm.term,
+        });
+        this.dataList = res.data;
+      } catch (e) {}
+    },
   },
 };
 </script>
 <style lang="scss" scoped>
+.divider {
+  margin-top: 0 !important;
+}
 .marginBtm22 {
   margin-bottom: 22px;
 }
+.row {
+  padding: 8px 16px;
+  margin-bottom: 30px;
+  .col {
+    margin-bottom: 20px;
+    line-height: 20px;
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    .col-title {
+      display: inline-block;
+      width: 150px;
+      text-align: right;
+      text-overflow: ellipsis;
+      white-space: nowrap;
+      overflow: hidden;
+    }
+    .col-value {
+        display: inline-block;
+      // color: #14928a;
+      // cursor: pointer;
+    }
+  }
+}
+.shapeWrap {
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-start;
+  align-items: center;
+  .shape {
+    position: relative;
+    top: -1px;
+    display: block;
+    margin-right: 10px;
+    height: 14px;
+    width: 4px;
+    background-color: #14928a;
+    z-index: 500;
+  }
+}
 </style>

+ 20 - 1
src/views/resetTeaming/components/archicesComponents/workStatus.vue

@@ -1,5 +1,24 @@
 <template>
   <div>
-    作业情况
+    <business ref="business" :data="dataInfo" @resetDate="resetDate"/>
   </div>
 </template>
+<script>
+// ./business
+import business from "./modals/studentWork";
+export default {
+  components: { business },
+  data() {
+    return {
+      dataInfo:{}
+    };
+  },
+  methods: {
+    resetDate(data) {
+      this.dataInfo = { ...data };
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 1 - 1
src/views/teamDetail/components/studentList.vue

@@ -60,7 +60,7 @@
           v-model.trim="searchForm.currentGrade"
           filterable
           clearable
-          placeholder="请输入年级"
+          placeholder="请选择年级"
         >
           <el-option
             v-for="(item, index) in gradeList"