mo 4 jaren geleden
bovenliggende
commit
ed46aed3f8
3 gewijzigde bestanden met toevoegingen van 165 en 57 verwijderingen
  1. 22 1
      src/api/buildTeam.js
  2. 34 12
      src/views/studentManager/components/studentLebao.vue
  3. 109 44
      src/views/studentManager/modals/addMusic.vue

+ 22 - 1
src/api/buildTeam.js

@@ -1481,7 +1481,6 @@ export function getStudentPaymentCalenders(data) {
 }
 
 // 跨团合并班级
-
 export function spanGroupMergeClassSplitClassAffirm(data) {
   return request2({
     url: api + `/classGroup/spanGroupMergeClassSplitClassAffirm`,
@@ -1490,3 +1489,25 @@ export function spanGroupMergeClassSplitClassAffirm(data) {
     data:data
   })
 }
+
+// 获取乐保列表
+export function getInstrument(data) {
+  return request2({
+    url: api + `/studentInstrument/getList`,
+    method: 'get',
+    params:data,
+    data:{}
+  })
+}
+
+// 新增乐保乐器
+
+export function addStudentInstrument(data) {
+  return request2({
+    url: api + `/studentInstrument/add`,
+    method: 'post',
+    params:{},
+    data:data,
+    requestType:'form'
+  })
+}

+ 34 - 12
src/views/studentManager/components/studentLebao.vue

@@ -8,12 +8,12 @@
       @reset="onReSet"
       save-key="studentDetail-studentLebao"
     >
-      <el-form-item>
+      <el-form-item prop="specification">
         <el-input
           placeholder="具体型号"
           clearable
           @keyup.enter.native="onSearch"
-          v-model.trim="searchForm.vipGroupName"
+          v-model.trim="searchForm.specification"
         ></el-input>
       </el-form-item>
       <el-form-item prop="goodsCategoryId">
@@ -30,9 +30,9 @@
           ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item>
+      <el-form-item prop="status">
         <el-select
-          v-model.trim="searchForm.attendanceStatus"
+          v-model.trim="searchForm.status"
           filterable
           clearable
           placeholder="是否乐保"
@@ -48,7 +48,7 @@
         <el-button type="primary" native-type="reset">重置</el-button>
       </el-form-item>
     </save-form>
-    <el-button @click="addMusicVisible = true" type="primary"
+    <el-button @click="addMusicVisible = true" type="primary" v-permission="'studentInstrument/add'"
       >新增乐器</el-button
     >
     <div class="tableWrap">
@@ -58,17 +58,25 @@
       >
         <el-table-column label="具体型号" align="center" prop="id">
           <template slot-scope="scope">
-            <copy-text>{{ scope.row.id }}</copy-text>
+            <copy-text>{{ scope.row.specification }}</copy-text>
           </template>
         </el-table-column>
         <el-table-column label="乐器分类" align="center" prop="name">
           <template slot-scope="scope">
-            <copy-text>{{ scope.row.name }}</copy-text>
+            <copy-text>{{ scope.row.goodsCategoryName }}</copy-text>
           </template>
         </el-table-column>
         <el-table-column label="是否乐保" align="center" prop="teacherName">
+           <template slot-scope="scope">
+            {{ scope.row.status?'是':'否' }}
+          </template>
         </el-table-column>
         <el-table-column label="乐保有效期" align="center" prop="studentNum">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.startTime|formatTimer}}~{{scope.row.endTime | formatTimer}}
+            </div>
+          </template>
         </el-table-column>
       </el-table>
       <pagination
@@ -87,7 +95,7 @@
       :visible.sync="addMusicVisible"
       v-if="addMusicVisible"
     >
-      <addMusic />
+      <addMusic :categoryList='categoryList' ref='addMusic' @getList='getList'/>
       <span slot="footer" class="dialog-footer">
         <el-button @click="addMusicVisible = false">取 消</el-button>
         <el-button type="primary" @click="addMusicSubmit">确 定</el-button>
@@ -98,7 +106,7 @@
 <script>
 import pagination from "@/components/Pagination/index";
 import addMusic from "../modals/addMusic";
-import { getSoundTree } from "@/api/buildTeam";
+import { getInstrument } from "@/api/buildTeam";
 import { categoryListTree } from "@/api/businessManager";
 export default {
   components: { pagination, addMusic },
@@ -107,7 +115,9 @@ export default {
       soundLists: [],
       tableList: [],
       searchForm: {
+        specification:'',
         goodsCategoryId: "",
+        studentId:this.$route.query.userId
       },
       pageInfo: {
         // 分页规则
@@ -122,13 +132,25 @@ export default {
   },
   mounted() {
     this.getCategory();
+    this.getList()
   },
   methods: {
-    onSearch() {},
+    onSearch() {
+      this.pageInfo.page = 1;
+      this.getList()
+    },
     onReSet() {},
-    getList() {},
+   async getList() {
+     try{
+       const res = await getInstrument({...this.searchForm,rows:this.pageInfo.limit,page:this.pageInfo.page})
+        this.tableList = res.data.rows
+     }catch(e){
+       console.log(e)
+     }
+
+    },
     addMusicSubmit() {
-      this.addMusicVisible = false;
+      this.$refs.addMusic.addMusicSubmit()
     },
     getCategory() {
       let params = {

+ 109 - 44
src/views/studentManager/modals/addMusic.vue

@@ -1,79 +1,144 @@
 <template>
   <div>
-    <el-form :model="musicForm">
+    <el-form :model="musicForm" label-width="100px" ref="form">
       <el-form-item
-        label="乐器种类"
-        prop="memo"
-        :rules="[{ required: true, message: '请选择乐器种类', trigger: 'blur' }]"
+        label="乐器分类"
+        prop="goodsCategoryId"
+        :rules="[
+          { required: true, message: '请选择乐器分类', trigger: 'blur' },
+        ]"
       >
         <el-form-item>
-        <el-select
-         style="width: 400px !important;"
-          v-model.trim="musicForm.attendanceStatus"
-          filterable
-          clearable
-          placeholder="乐器种类"
-        >
-          <el-option
-            v-for="(item, index) in typeList"
-            :key="index"
-            :label="item.label"
-            :value="item.value"
-          ></el-option>
-        </el-select>
-      </el-form-item>
+          <el-select
+            style="width: 400px !important"
+            v-model.trim="musicForm.goodsCategoryId"
+            filterable
+            clearable
+            @change="changeCategory"
+            placeholder="乐器分类"
+          >
+            <el-option
+              v-for="(item, index) in typeList"
+              :key="index"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
       </el-form-item>
-         <el-form-item
+      <el-form-item
         label="乐器名称"
-        prop="memo"
-        :rules="[{ required: true, message: '请输入乐器名称', trigger: 'blur' }]"
+        prop="goodsId"
+        :rules="[
+          { required: true, message: '请选择乐器名称', trigger: 'blur' },
+        ]"
       >
         <el-select
-           style="width: 400px !important;"
-          v-model.trim="musicForm.attendanceStatus"
+          style="width: 400px !important"
+          :disabled="!musicForm.goodsCategoryId"
+          v-model.trim="musicForm.goodsId"
           filterable
           clearable
-          placeholder="乐器种类"
+          placeholder="乐器名称"
         >
           <el-option
-            v-for="(item, index) in typeList"
+            v-for="(item, index) in musicList"
             :key="index"
-            :label="item.label"
-            :value="item.value"
+            :label="item.name"
+            :value="item.id"
           ></el-option>
         </el-select>
       </el-form-item>
-            <el-form-item
+      <el-form-item
         label="是否乐保"
-        prop="memo"
-        :rules="[{ required: true, message: '请选择乐保状态', trigger: 'blur' }]"
+        prop="status"
+        :rules="[
+          { required: true, message: '请选择是否乐保', trigger: 'blur' },
+        ]"
       >
-       <el-select
-        style="width: 400px !important;"
-          v-model.trim="musicForm.attendanceStatus"
-          filterable
+        <el-select
+          style="width: 400px !important"
+          v-model.trim="musicForm.status"
           clearable
-          placeholder="乐器种类"
+          placeholder="是否乐保"
         >
-          <el-option
-            v-for="(item, index) in typeList"
-            :key="index"
-            :label="item.label"
-            :value="item.value"
-          ></el-option>
+          <el-option value="0" label="否"></el-option>
+          <el-option value="1" label="是"></el-option>
         </el-select>
       </el-form-item>
+      <el-form-item
+        label="乐保有效期"
+        :rules="[
+          { required: true, message: '请选择乐保有效期', trigger: 'blur' },
+        ]"
+        v-if="musicForm.status == 1"
+        prop="date"
+      >
+        <el-date-picker
+          style="width: 400px"
+          v-model="musicForm.date"
+          :clearable="false"
+          type="daterange"
+          value-format="yyyy-MM-dd"
+          range-separator="至"
+          :picker-options="{ firstDayOfWeek: 1 }"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        >
+        </el-date-picker>
+      </el-form-item>
     </el-form>
   </div>
 </template>
 <script>
+import { goodsQuery } from "@/api/businessManager";
+import { addStudentInstrument } from "@/api/buildTeam";
+import { getTimes } from "@/utils";
 export default {
+  props: ["categoryList"],
   data() {
     return {
-      musicForm:{},
-      typeList:[]
+      musicForm: {
+        studentId: this.$route.query.userId,
+        goodsId: "",
+        goodsCategoryId: "",
+        status: "",
+        date: [],
+      },
+      typeList: this.categoryList,
+      musicList: [],
     };
   },
+  methods: {
+    changeCategory(val) {
+      this.musicForm.goodsName = "";
+      if (val) {
+        goodsQuery({ goodsCategoryId: val, rows: 99999 }).then((res) => {
+          if (res.code == 200 && res.data) {
+            this.musicList = res.data.rows;
+          }
+        });
+      }
+    },
+    addMusicSubmit() {
+      this.$refs.form.validate(async (res) => {
+        if (res) {
+          try {
+            const { date, ...rest } = this.musicForm;
+            let obj = {
+              ...rest,
+              ...getTimes(date, ["startTime", "endTime"]),
+            };
+            const res = await addStudentInstrument(obj);
+            this.$message.success('添加成功')
+            this.$emit('getList')
+          } catch (e) {
+            console.log(e);
+          }
+        }
+      });
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>