wolyshaw 4 years ago
parent
commit
3c44396548

+ 8 - 1
src/api/buildTeam.js

@@ -1289,7 +1289,6 @@ export function getStudentOriginal(data) {
   })
 }
 
-
 export function getSubjectGoodsAndInfo(data) {
   return request({
     url:  api + '/subjectChange/getSubjectGoodsAndInfo',
@@ -1298,6 +1297,14 @@ export function getSubjectGoodsAndInfo(data) {
   })
 }
 
+export function getChangeInfo(data) {
+  return request({
+    url:  api + '/subjectChange/getChangeInfo',
+    method: 'get',
+    params: data
+  })
+}
+
 export function subjectChangeAdd (data) {
   return request({
     url: api + '/subjectChange/add',

+ 2 - 0
src/views/teamBuild/modals/accessories.vue

@@ -62,6 +62,8 @@
               formatids = formatids.concat((goodsList || []).map(goods => goods.id))
             }
           }
+        } else {
+          formatids = [...vals]
         }
         this.$listeners.change(formatids, selectMoney)
       }

+ 33 - 27
src/views/teamBuild/modals/change-voice.vue

@@ -17,7 +17,7 @@
           placeholder="请选择声部"
         >
           <el-option
-            v-for="item in voiceList"
+            v-for="item in filterVoiceList"
             :key="item.subjectId"
             :label="item.subjectName"
             :value="item.subjectId">
@@ -36,12 +36,12 @@
         >
           <el-option
             v-for="item in musicalGoods"
-            :key="item.id"
+            :key="item.goodsIdList"
             :label="item.name"
-            :value="item.id">
+            :value="item.goodsIdList">
           </el-option>
         </el-select>
-        <span v-else-if="detail.subjectChange.changeAccessoriesGoods">{{detail.subjectChange.changeAccessoriesGoods.name}}</span>
+        <span v-else-if="item.changeMusicalGoods">{{item.changeMusicalGoods.name}}</span>
       </el-form-item>
       <el-form-item v-if="(activeAccessories.length || groupList.length) || detail.subjectChange" label="更换教辅" prop="name">
         <accessories
@@ -50,7 +50,7 @@
           @change="accessoriesChange"
           v-if="!detail.subjectChange"
         />
-        <span v-else-if="detail.subjectChange.changeAccessoriesGoods">{{changeAccessoriesGoods}}</span>
+        <span v-else-if="detail.subjectChange">{{changeAccessoriesGoods}}</span>
         <!-- <el-select style="width: 100%" v-model="form.accessories" clearable placeholder="请选择教辅">
           <el-option
             v-for="item in accessories"
@@ -89,7 +89,7 @@
   </div>
 </template>
 <script>
-import { getStudentOriginal, getSubjectGoodsAndInfo, subjectChangeAdd, subjectChangeCancel } from '@/api/buildTeam'
+import { getStudentOriginal, getSubjectGoodsAndInfo, subjectChangeAdd, subjectChangeCancel, getChangeInfo } from '@/api/buildTeam'
 import accessories from './accessories'
 
 const formatAllGoods = (data, kitGroupPurchaseType) => {
@@ -129,14 +129,14 @@ const formatAllGoods = (data, kitGroupPurchaseType) => {
             kitGroupPurchaseTypePrice: json[kitGroupPurchaseType]
           }
           musicalGoods.push(_item)
-          musicalGoodsById[item.id] = _item
+          musicalGoodsById[item.goodsIdList] = _item
           if (!types.ACCESSORIES) {
-            if (!accessoriesByGoods[item.id]) {
-              accessoriesByGoods[item.id] = []
+            if (!accessoriesByGoods[item.goodsIdList]) {
+              accessoriesByGoods[item.goodsIdList] = []
             }
             const acs = item.goodsList[0].goodsList ? item.goodsList[0].goodsList : []
             for (const goods of acs) {
-              accessoriesByGoods[item.id].push(goods)
+              accessoriesByGoods[item.goodsIdList].push(goods)
               accessoriesById[goods.id] = goods
             }
           }
@@ -196,25 +196,22 @@ export default {
   watch: {
     detail() {
       if (this.detail) {
-        console.log(this.detail, this.voiceList)
+        // console.log(this.detail, this.voiceList)
         this.fetchDetail()
       }
     },
   },
   computed: {
+    filterVoiceList() {
+      return this.voiceList.filter(item => item.subjectId !== this.detail.actualSubjectId)
+    },
     activeAccessories() {
       const { musicalGoods } = this.form
       return musicalGoods ? this.accessoriesByGoods[musicalGoods] || [] : []
     },
     changeAccessoriesGoods() {
-      let names = []
-      const { subjectChange } = this.detail
-      if (subjectChange && subjectChange.changeAccessoriesGoods && subjectChange.changeAccessoriesGoods.goodsList) {
-        for (const item of subjectChange.changeAccessoriesGoods.goodsList) {
-          names.push(item.name)
-        }
-      }
-      return names.join(',')
+      const subjectChange = this.item
+      return (subjectChange.changeAccessoriesGoods || []).map(item => item.name).join(',')
     },
     editSpread() {
       const data = this.item
@@ -240,11 +237,7 @@ export default {
   },
   methods: {
     fetchDetail() {
-      getStudentOriginal({
-        musicGroupId: this.musicGroupId,
-        studentId: this.detail.studentId,
-      })
-      .then(res => {
+      const setRes = res => {
         const { data } = res
         this.item = data
         if (data) {
@@ -254,7 +247,19 @@ export default {
           this.originalMusicalGoods = data.originalMusicalGoods && data.originalMusicalGoods.name
           this.originalAccessoriesGoods = (data.originalAccessoriesGoods || []).map(item => item.name).join()
         }
-      })
+      }
+      if (this.detail.subjectChange) {
+        getChangeInfo({
+          id: this.detail.subjectChange.id
+        })
+        .then(setRes)
+      } else {
+        getStudentOriginal({
+          musicGroupId: this.musicGroupId,
+          studentId: this.detail.studentId,
+        })
+        .then(setRes)
+      }
     },
     subjectChange(id) {
       this.$set(this.form, 'musicalGoods', '')
@@ -275,12 +280,10 @@ export default {
     },
     musicalGoodsChange(val) {
       const item = this.musicalGoodsById[val]
-      console.log(item)
       this.musicalPrice = this.numFormat(item.price)
       this.kitGroupPurchaseTypePrice = this.numFormat(item.kitGroupPurchaseTypePrice)
     },
     accessoriesChange(ids, money) {
-      console.log(ids, money)
       this.selectAccessories = ids
       this.selectAccessoriesMoney = money
     },
@@ -314,6 +317,7 @@ export default {
       })
         .then(res => {
           this.$listeners.close()
+          this.$listeners.submited()
           this.$message.success('提交成功!')
         })
     },
@@ -328,6 +332,8 @@ export default {
           id: this.detail.subjectChange.id
         })
         .then(res => {
+          this.$listeners.close()
+          this.$listeners.submited()
           this.$message.success('取消成功!')
         })
       })

+ 1 - 1
src/views/teamBuild/signupList.vue

@@ -518,7 +518,7 @@
     >
       <changeVoice
         @close="closeChangeVoice"
-        @submited="closeChangeVoice"
+        @submited="getList"
         :detail.sync="rowDetail"
         :musicGroupId="id"
         :voiceList="leftList"