| 
					
				 | 
			
			
				@@ -2,45 +2,98 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   <div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <el-form ref="form" :model="form" label-width="100px"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-form-item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        prop="name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        label="伴奏名称" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        :rules="[{required: true, message: '请输入伴奏名称'}]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        prop="sysMusicScore.name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label="曲名" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :rules="[{required: true, message: '请输入曲名'}]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-input placeholder="请输入伴奏名称" v-model="form.name"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-input placeholder="请输入曲名" v-model="form.sysMusicScore.name"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-form-item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        prop="subjectIds" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        label="伴奏声部" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        :rules="[{required: true, message: '请选择伴奏声部'}]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        prop="sysMusicScore.musicScoreCategoriesId" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label="分类" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :rules="[{required: true, message: '请选择分类'}]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-select style="width: 100%!important;" collapse-tags multiple v-model="form.subjectIds" placeholder="请选择伴奏声部"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <el-option v-for="item in selects.subjects" :value="String(item.id)" :label="item.name" :key="item.id"></el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-cascader v-model="form.sysMusicScore.musicScoreCategoriesId" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    style="width:100%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    :options="tree" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     placeholder="请选择分类" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    :props="treeProps"></el-cascader> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!-- <el-select style="width: 100%!important;" v-model="form.sysMusicScore.musicScoreCategoriesId" placeholder="请选择声部"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-for="item in selects.subjects" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :value="item.id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :label="item.name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :key="item.id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ></el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-select> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-form-item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        prop="speed" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        label="伴奏速度" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        :rules="[{required: true, message: '请输入伴奏速度'}]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label="原音" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        prop="sysMusicScore.url" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-input type="number" placeholder="请输入伴奏速度" v-model="form.speed"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <el-form-item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        label="伴奏文件" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        prop="url" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        :rules="[{required: true, message: '请选择伴奏文件'}]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <el-upload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          action="/api-web/uploadFile" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          :headers="headers" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          :on-success="success" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          :on-remove="remove" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          :limit="1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          :file-list="filelist" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          accept=".mp3, .aac"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <el-button size="small" type="primary" plain>点击上传</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <div slot="tip" class="el-upload__tip">仅支持上传 mp3/aac 格式音频文件</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </el-upload> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <singe-file-upload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          tips="仅支持上传 mp3/aac 格式音频文件" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          accept=".mp3, .aac" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-model="form.sysMusicScore.url" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class="files" v-for="(song, index) in form.sysMusicScoreAccompaniments" :key="index"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-row> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="12"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :prop="`sysMusicScoreAccompaniments.${index}.subjectId`" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              label="声部" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :rules="[{required: true, message: '请选择声部'}]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-select style="width: 100%!important;" v-model="song.subjectId" placeholder="请选择声部"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <el-option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  v-for="item in selects.subjects" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :value="item.id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :label="item.name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :key="item.id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  :disabled="hasSubjectId(item.id)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ></el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="12"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :prop="`sysMusicScoreAccompaniments.${index}.speed`" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              label="速度" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :rules="[{required: true, message: '请输入速度'}]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-input type="number" placeholder="请输入速度" v-model="song.speed"/> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="12"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              label="mp3文件" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :prop="`sysMusicScoreAccompaniments.${index}.mp3Url`" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <singe-file-upload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                tips="仅支持上传 mp3/aac 格式音频文件" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                accept=".mp3, .aac" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-model="song.mp3Url" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-col :span="12"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <el-form-item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              label="MusicXML" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :prop="`sysMusicScoreAccompaniments.${index}.xmlUrl`" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :rules="[{required: true, message: '请选择MusicXML文件'}]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <singe-file-upload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                tips="仅支持上传 xml 格式文件" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                accept=".xml" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-model="song.xmlUrl" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-row> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button class="file-remove" type="text" @click="removeSys(index)" :disabled="form.sysMusicScoreAccompaniments.length == 1">删除</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-button @click="createSys" type="info" style="width: 100%;margin-bottom: 20px;" plain>添加伴奏</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <div class="btns"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <el-button type="primary" @click="submit">提交</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <el-button @click="$listeners.close">取消</el-button> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -49,57 +102,101 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { getToken } from "@/utils/auth" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { Add, Update } from '../api' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Add, Update, queryPageSysExam, queryTree } from '../api' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   props: ['detail', 'type'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      headers: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Authorization: getToken() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      filelist: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      tree: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       form: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        name: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        subjectIds: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        speed: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        url: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sysMusicScore: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          name: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          url: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          musicScoreCategoriesId: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sysMusicScoreAccompaniments: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            subjectId: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            speed: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            mp3Url: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            xmlUrl: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        delExamSongAccompanimentIds: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      treeProps: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        value: 'id', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label: 'name', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        children: 'sysMusicScoreCategoriesList', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  mounted() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async mounted() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     this.$store.dispatch('setSubjects') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await this.FetchTree() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (this.detail) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      for (const key in this.form) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (this.form.hasOwnProperty(key)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          if (key === 'subjectIds') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.$set(this.form, 'subjectIds', (this.detail[key] || '').split(',')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.$set(this.form, key, this.detail[key]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.filelist = [{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        name: this.detail.url, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$set(this.form, 'sysMusicScore', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        name: this.detail.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         url: this.detail.url, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        musicScoreCategoriesId: this.detail.categoriesId ? this.formatParentId(this.detail.categoriesId, this.tree) : [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.FeatchDetailList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    remove() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.filelist = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.$set(this.form, 'url', '') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    formatParentId(id, list, ids = []) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (const item of list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (item.sysMusicScoreCategoriesList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return this.formatParentId(id, item.sysMusicScoreCategoriesList, [...ids, item.id]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (item.id === id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return [...ids, id] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return ids 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async FetchTree() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const res = await queryTree() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.tree = res.data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(error) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async FeatchDetailList() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const res = await queryPageSysExam({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          sysMusicScoreId: this.detail.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$set(this.form, 'sysMusicScoreAccompaniments', res.data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch (error) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    createSys() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.form.sysMusicScoreAccompaniments.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        subjectId: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        speed: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        mp3Url: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        xmlUrl: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async removeSys(index) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await this.$confirm('是否确认删除此伴奏?', '提示', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type: 'warning' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (this.form.sysMusicScoreAccompaniments[index]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.form.delExamSongAccompanimentIds.push(this.form.sysMusicScoreAccompaniments[index].id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.form.sysMusicScoreAccompaniments.splice(index, 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch (error) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    success(res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (res.code == 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.filelist = [{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          name: res.data.url, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          url: res.data.url, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.$set(this.form, 'url', res.data.url) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.$message.error(res.msg || '上传失败') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    hasSubjectId(id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const ids = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (const item of this.form.sysMusicScoreAccompaniments) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ids.push(item.subjectId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return ids.includes(id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     async submit() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       this.$refs.form.validate(async (valid) => { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -107,16 +204,22 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if (!this.detail) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             await Add({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               ...this.form, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              subjectIds: this.form.subjectIds.join(','), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              type: 'COMMON', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              sysMusicScore: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ...this.form.sysMusicScore, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                type: 'COMMON', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                musicScoreCategoriesId: (this.form.sysMusicScore.musicScoreCategoriesId || []).pop(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.$message.success('提交成功') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             await Update({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               ...this.form, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              subjectIds: this.form.subjectIds.join(','), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              type: this.detail.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              id: this.detail.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              sysMusicScore: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ...this.form.sysMusicScore, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                type: 'COMMON', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                id: this.detail.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                musicScoreCategoriesId: (this.form.sysMusicScore.musicScoreCategoriesId || []).pop(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.$message.success('修改成功') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -132,4 +235,17 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   .btns{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     text-align: right; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .files{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    background-color: #f8f8f8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    padding: 20px 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    padding-right: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-bottom: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    border-radius: 5px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    .file-remove{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      right: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      bottom: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </style> 
			 |