|  | @@ -0,0 +1,679 @@
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +  <div>
 | 
	
		
			
				|  |  | +    <el-steps
 | 
	
		
			
				|  |  | +      :space="200"
 | 
	
		
			
				|  |  | +      :active="currentStep"
 | 
	
		
			
				|  |  | +      simple
 | 
	
		
			
				|  |  | +      finish-status="success"
 | 
	
		
			
				|  |  | +      style="margin-bottom: 12px"
 | 
	
		
			
				|  |  | +    >
 | 
	
		
			
				|  |  | +      <el-step title="选择曲目"></el-step>
 | 
	
		
			
				|  |  | +      <el-step title="设置曲目信息"></el-step>
 | 
	
		
			
				|  |  | +    </el-steps>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <div v-if="currentStep === 0">
 | 
	
		
			
				|  |  | +      <el-form
 | 
	
		
			
				|  |  | +        ref="form"
 | 
	
		
			
				|  |  | +        :model="searchForm"
 | 
	
		
			
				|  |  | +        :inline="true"
 | 
	
		
			
				|  |  | +        class="system-menu-search"
 | 
	
		
			
				|  |  | +      >
 | 
	
		
			
				|  |  | +        <el-form-item prop="keyword">
 | 
	
		
			
				|  |  | +          <el-input
 | 
	
		
			
				|  |  | +            v-model="searchForm.keyword"
 | 
	
		
			
				|  |  | +            @submit="onSearch"
 | 
	
		
			
				|  |  | +            @reset="onReSet"
 | 
	
		
			
				|  |  | +            @keyup.enter.native="
 | 
	
		
			
				|  |  | +              e => {
 | 
	
		
			
				|  |  | +                e.target.blur();
 | 
	
		
			
				|  |  | +                $refs.form.save();
 | 
	
		
			
				|  |  | +                onSearch();
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            "
 | 
	
		
			
				|  |  | +            clearable
 | 
	
		
			
				|  |  | +            placeholder="关键词"
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +        <!-- <el-form-item prop="musicSheetType">
 | 
	
		
			
				|  |  | +          <el-select
 | 
	
		
			
				|  |  | +            v-model="searchForm.musicSheetType"
 | 
	
		
			
				|  |  | +            clearable
 | 
	
		
			
				|  |  | +            filterable
 | 
	
		
			
				|  |  | +            placeholder="多声轨渲染"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            <el-option label="是" value="CONCERT"></el-option>
 | 
	
		
			
				|  |  | +            <el-option label="否" value="SINGLE"></el-option>
 | 
	
		
			
				|  |  | +          </el-select>
 | 
	
		
			
				|  |  | +        </el-form-item> -->
 | 
	
		
			
				|  |  | +        <el-form-item prop="subjectId">
 | 
	
		
			
				|  |  | +          <el-select
 | 
	
		
			
				|  |  | +            v-model="searchForm.subjectId"
 | 
	
		
			
				|  |  | +            clearable
 | 
	
		
			
				|  |  | +            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="composer">
 | 
	
		
			
				|  |  | +          <el-input
 | 
	
		
			
				|  |  | +            v-model="searchForm.composer"
 | 
	
		
			
				|  |  | +            @submit="onSearch"
 | 
	
		
			
				|  |  | +            @reset="onReSet"
 | 
	
		
			
				|  |  | +            @keyup.enter.native="
 | 
	
		
			
				|  |  | +              e => {
 | 
	
		
			
				|  |  | +                e.target.blur();
 | 
	
		
			
				|  |  | +                $refs.searchForm.save();
 | 
	
		
			
				|  |  | +                onSearch();
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            "
 | 
	
		
			
				|  |  | +            clearable
 | 
	
		
			
				|  |  | +            placeholder="音乐人"
 | 
	
		
			
				|  |  | +          />
 | 
	
		
			
				|  |  | +          <!-- @submit="submit" -->
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +        <el-form-item>
 | 
	
		
			
				|  |  | +          <el-button
 | 
	
		
			
				|  |  | +            size="default"
 | 
	
		
			
				|  |  | +            type="primary"
 | 
	
		
			
				|  |  | +            class="ml10"
 | 
	
		
			
				|  |  | +            @click="onSearch"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            查询
 | 
	
		
			
				|  |  | +          </el-button>
 | 
	
		
			
				|  |  | +          <el-button class="ml10" @click="onReSet"> 重置</el-button>
 | 
	
		
			
				|  |  | +        </el-form-item>
 | 
	
		
			
				|  |  | +      </el-form>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      <p style="padding-bottom: 12px">
 | 
	
		
			
				|  |  | +        你选择了<span style="color: red; padding: 0 8px">{{
 | 
	
		
			
				|  |  | +          chioseIdList.length
 | 
	
		
			
				|  |  | +        }}</span>
 | 
	
		
			
				|  |  | +        条曲目
 | 
	
		
			
				|  |  | +      </p>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      <!--         @selection-change="handleSelectionChange"
 | 
	
		
			
				|  |  | +        @select="onTableSelect" -->
 | 
	
		
			
				|  |  | +      <el-table
 | 
	
		
			
				|  |  | +        :data="tableList"
 | 
	
		
			
				|  |  | +        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
 | 
	
		
			
				|  |  | +        @select-all="handleSelectionChange"
 | 
	
		
			
				|  |  | +        @select="onTableSelect"
 | 
	
		
			
				|  |  | +        ref="multipleSelection"
 | 
	
		
			
				|  |  | +        key="tableList"
 | 
	
		
			
				|  |  | +      >
 | 
	
		
			
				|  |  | +        <el-table-column type="selection" width="55" />
 | 
	
		
			
				|  |  | +        <!-- <el-table-column prop="id" label="曲目编号" /> -->
 | 
	
		
			
				|  |  | +        <el-table-column
 | 
	
		
			
				|  |  | +          prop="name"
 | 
	
		
			
				|  |  | +          label="曲目名称(编号)"
 | 
	
		
			
				|  |  | +          width="180"
 | 
	
		
			
				|  |  | +          show-overflow-tooltip
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +          <template #default="scope">
 | 
	
		
			
				|  |  | +            <div>
 | 
	
		
			
				|  |  | +              {{ scope.row.name }}
 | 
	
		
			
				|  |  | +              <p>({{ scope.row.id }})</p>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column label="曲目封面">
 | 
	
		
			
				|  |  | +          <template #default="scope">
 | 
	
		
			
				|  |  | +            <el-image
 | 
	
		
			
				|  |  | +              style="width: 50px; height: 50px"
 | 
	
		
			
				|  |  | +              :src="scope.row.musicCover"
 | 
	
		
			
				|  |  | +              fit="cover"
 | 
	
		
			
				|  |  | +              :preview-src-list="[scope.row.musicCover]"
 | 
	
		
			
				|  |  | +            />
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column
 | 
	
		
			
				|  |  | +          prop="subjectNames"
 | 
	
		
			
				|  |  | +          label="可用声部"
 | 
	
		
			
				|  |  | +          show-overflow-tooltip
 | 
	
		
			
				|  |  | +        ></el-table-column>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-table-column
 | 
	
		
			
				|  |  | +          prop="composer"
 | 
	
		
			
				|  |  | +          label="音乐人"
 | 
	
		
			
				|  |  | +          show-overflow-tooltip
 | 
	
		
			
				|  |  | +        ></el-table-column>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <!-- <el-table-column
 | 
	
		
			
				|  |  | +          prop="musicSheetType"
 | 
	
		
			
				|  |  | +          label="多声轨渲染"
 | 
	
		
			
				|  |  | +          show-overflow-tooltip
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +          <template #default="scope">
 | 
	
		
			
				|  |  | +            <div>
 | 
	
		
			
				|  |  | +              {{ scope.row.musicSheetType === "SINGLE" ? "否" : "是" }}
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column> -->
 | 
	
		
			
				|  |  | +      </el-table>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      <pagination
 | 
	
		
			
				|  |  | +        save-key="accompaniment-edit-music"
 | 
	
		
			
				|  |  | +        sync
 | 
	
		
			
				|  |  | +        :total.sync="pageInfo.total"
 | 
	
		
			
				|  |  | +        :page.sync="pageInfo.page"
 | 
	
		
			
				|  |  | +        :limit.sync="pageInfo.limit"
 | 
	
		
			
				|  |  | +        :page-sizes="pageInfo.page_size"
 | 
	
		
			
				|  |  | +        @pagination="getList"
 | 
	
		
			
				|  |  | +      />
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <div v-if="currentStep === 1">
 | 
	
		
			
				|  |  | +      <el-table
 | 
	
		
			
				|  |  | +        :data="formLists"
 | 
	
		
			
				|  |  | +        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
 | 
	
		
			
				|  |  | +        style="margin-bottom: 12px;"
 | 
	
		
			
				|  |  | +        key="formLists"
 | 
	
		
			
				|  |  | +      >
 | 
	
		
			
				|  |  | +        <el-table-column prop="name" label="曲目名称(编号)" width="180">
 | 
	
		
			
				|  |  | +          <template #default="scope">
 | 
	
		
			
				|  |  | +            <div>
 | 
	
		
			
				|  |  | +              {{ scope.row.name }}
 | 
	
		
			
				|  |  | +              <p>({{ scope.row.id }})</p>
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column label="曲目封面" width="150">
 | 
	
		
			
				|  |  | +          <template #default="scope">
 | 
	
		
			
				|  |  | +            <el-image
 | 
	
		
			
				|  |  | +              style="width: 50px; height: 50px"
 | 
	
		
			
				|  |  | +              :src="scope.row.musicCover"
 | 
	
		
			
				|  |  | +              fit="cover"
 | 
	
		
			
				|  |  | +              :preview-src-list="[scope.row.musicCover]"
 | 
	
		
			
				|  |  | +            />
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column
 | 
	
		
			
				|  |  | +          prop="subjectNames"
 | 
	
		
			
				|  |  | +          label="可用声部"
 | 
	
		
			
				|  |  | +          show-overflow-tooltip
 | 
	
		
			
				|  |  | +          width="150"
 | 
	
		
			
				|  |  | +        ></el-table-column>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-table-column
 | 
	
		
			
				|  |  | +          prop="composer"
 | 
	
		
			
				|  |  | +          label="音乐人"
 | 
	
		
			
				|  |  | +          show-overflow-tooltip
 | 
	
		
			
				|  |  | +        ></el-table-column>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <!-- <el-table-column
 | 
	
		
			
				|  |  | +          prop="musicSheetType"
 | 
	
		
			
				|  |  | +          label="多声轨渲染"
 | 
	
		
			
				|  |  | +          width="150"
 | 
	
		
			
				|  |  | +          show-overflow-tooltip
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +          <template #default="scope">
 | 
	
		
			
				|  |  | +            <div>
 | 
	
		
			
				|  |  | +              {{ scope.row.musicSheetType === "SINGLE" ? "否" : "是" }}
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column> -->
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-table-column prop="musicSheetCategoryId" width="180">
 | 
	
		
			
				|  |  | +          <template #header>
 | 
	
		
			
				|  |  | +            曲谱分类
 | 
	
		
			
				|  |  | +            <i
 | 
	
		
			
				|  |  | +              class="el-icon-edit"
 | 
	
		
			
				|  |  | +              style="cursor: pointer"
 | 
	
		
			
				|  |  | +              @click="onDialogEdit('musicSheetCategoryId')"
 | 
	
		
			
				|  |  | +            ></i>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template #default="scope">
 | 
	
		
			
				|  |  | +            <!-- <el-form-item label-width="auto" :show-message="false"> -->
 | 
	
		
			
				|  |  | +            <!-- <el-select
 | 
	
		
			
				|  |  | +              v-model="formLists[scope.$index].musicSheetCategoryId"
 | 
	
		
			
				|  |  | +              placeholder="请选择曲谱分类"
 | 
	
		
			
				|  |  | +              clearable
 | 
	
		
			
				|  |  | +              filterable
 | 
	
		
			
				|  |  | +              style="width:150px !important"
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +              <el-option
 | 
	
		
			
				|  |  | +                v-for="option in tree"
 | 
	
		
			
				|  |  | +                :key="option.id"
 | 
	
		
			
				|  |  | +                :label="option.name"
 | 
	
		
			
				|  |  | +                :value="option.id"
 | 
	
		
			
				|  |  | +              ></el-option>
 | 
	
		
			
				|  |  | +            </el-select> -->
 | 
	
		
			
				|  |  | +            <el-cascader
 | 
	
		
			
				|  |  | +              popper-class="myCascader"
 | 
	
		
			
				|  |  | +              v-model="formLists[scope.$index].musicSheetCategoryId"
 | 
	
		
			
				|  |  | +              placeholder="请选择曲谱分类"
 | 
	
		
			
				|  |  | +              filterable
 | 
	
		
			
				|  |  | +              style="width:150px !important"
 | 
	
		
			
				|  |  | +              clearable
 | 
	
		
			
				|  |  | +              :options="tree"
 | 
	
		
			
				|  |  | +              :props="treeProps"
 | 
	
		
			
				|  |  | +            ></el-cascader>
 | 
	
		
			
				|  |  | +            <!-- </el-form-item> -->
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-table-column prop="rankType" width="180">
 | 
	
		
			
				|  |  | +          <template #header>
 | 
	
		
			
				|  |  | +            收费方式
 | 
	
		
			
				|  |  | +            <i
 | 
	
		
			
				|  |  | +              class="el-icon-edit"
 | 
	
		
			
				|  |  | +              style="cursor: pointer"
 | 
	
		
			
				|  |  | +              @click="onDialogEdit('rankType')"
 | 
	
		
			
				|  |  | +            ></i>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template #default="scope">
 | 
	
		
			
				|  |  | +            <!-- <el-form-item label-width="auto" :show-message="false"> -->
 | 
	
		
			
				|  |  | +            <el-select
 | 
	
		
			
				|  |  | +              v-model="formLists[scope.$index].rankType"
 | 
	
		
			
				|  |  | +              clearable
 | 
	
		
			
				|  |  | +              filterable
 | 
	
		
			
				|  |  | +              placeholder="请选择是否收费"
 | 
	
		
			
				|  |  | +              style="width:150px !important"
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +              <el-option value="0" label="免费"></el-option>
 | 
	
		
			
				|  |  | +              <el-option value="1" label="收费"></el-option>
 | 
	
		
			
				|  |  | +            </el-select>
 | 
	
		
			
				|  |  | +            <!-- </el-form-item> -->
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +        <el-table-column prop="sortNumber" width="180">
 | 
	
		
			
				|  |  | +          <template #header>
 | 
	
		
			
				|  |  | +            排序
 | 
	
		
			
				|  |  | +            <i
 | 
	
		
			
				|  |  | +              class="el-icon-edit"
 | 
	
		
			
				|  |  | +              style="cursor: pointer"
 | 
	
		
			
				|  |  | +              @click="onDialogEdit('sortNumber')"
 | 
	
		
			
				|  |  | +            ></i>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template #default="scope">
 | 
	
		
			
				|  |  | +            <!-- <el-form-item label-width="auto" :show-message="false"> -->
 | 
	
		
			
				|  |  | +            <el-input-number
 | 
	
		
			
				|  |  | +              style="width:150px !important"
 | 
	
		
			
				|  |  | +              v-model="formLists[scope.$index].sortNumber"
 | 
	
		
			
				|  |  | +              :min="0"
 | 
	
		
			
				|  |  | +              :max="9999"
 | 
	
		
			
				|  |  | +              placeholder="请输入排序"
 | 
	
		
			
				|  |  | +              :controls="false"
 | 
	
		
			
				|  |  | +              clearable
 | 
	
		
			
				|  |  | +            />
 | 
	
		
			
				|  |  | +            <!-- </el-form-item> -->
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        <el-table-column label="操作" width="100" center>
 | 
	
		
			
				|  |  | +          <template #default="scope">
 | 
	
		
			
				|  |  | +            <el-button
 | 
	
		
			
				|  |  | +              size="small"
 | 
	
		
			
				|  |  | +              type="text"
 | 
	
		
			
				|  |  | +              @click="onRemoveMusic(scope.row)"
 | 
	
		
			
				|  |  | +              >移除</el-button
 | 
	
		
			
				|  |  | +            ></template
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +        </el-table-column>
 | 
	
		
			
				|  |  | +      </el-table>
 | 
	
		
			
				|  |  | +      <!-- </el-form> -->
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <div class="dialog-footer">
 | 
	
		
			
				|  |  | +      <el-button @click="onCancel">
 | 
	
		
			
				|  |  | +        {{ currentStep === 0 ? "取消" : "上一步" }}
 | 
	
		
			
				|  |  | +      </el-button>
 | 
	
		
			
				|  |  | +      <el-button type="primary" @click="onSubmit" v-preventReClick>
 | 
	
		
			
				|  |  | +        {{ currentStep === 1 ? "确定" : "下一步" }}</el-button
 | 
	
		
			
				|  |  | +      >
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <el-dialog
 | 
	
		
			
				|  |  | +      :title="dialogTitle"
 | 
	
		
			
				|  |  | +      :visible.sync="dialogVisible"
 | 
	
		
			
				|  |  | +      width="450px"
 | 
	
		
			
				|  |  | +      append-to-body
 | 
	
		
			
				|  |  | +    >
 | 
	
		
			
				|  |  | +      <div v-if="dialogType === 'musicSheetCategoryId'">
 | 
	
		
			
				|  |  | +        <el-cascader
 | 
	
		
			
				|  |  | +          popper-class="myCascader"
 | 
	
		
			
				|  |  | +          v-model="dialogForms.musicSheetCategoryId"
 | 
	
		
			
				|  |  | +          placeholder="请选择曲谱分类"
 | 
	
		
			
				|  |  | +          filterable
 | 
	
		
			
				|  |  | +          style="width: 100% !important"
 | 
	
		
			
				|  |  | +          clearable
 | 
	
		
			
				|  |  | +          :options="tree"
 | 
	
		
			
				|  |  | +          :props="treeProps"
 | 
	
		
			
				|  |  | +        ></el-cascader>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +      <div v-if="dialogType === 'rankType'">
 | 
	
		
			
				|  |  | +        <el-select
 | 
	
		
			
				|  |  | +          v-model="dialogForms.rankType"
 | 
	
		
			
				|  |  | +          clearable
 | 
	
		
			
				|  |  | +          filterable
 | 
	
		
			
				|  |  | +          placeholder="请选择是否收费"
 | 
	
		
			
				|  |  | +          style="width: 100% !important"
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +          <el-option value="0" label="免费"></el-option>
 | 
	
		
			
				|  |  | +          <el-option value="1" label="收费"></el-option>
 | 
	
		
			
				|  |  | +        </el-select>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +      <div v-if="dialogType === 'sortNumber'">
 | 
	
		
			
				|  |  | +        <el-input-number
 | 
	
		
			
				|  |  | +          placeholder="请输入排序值"
 | 
	
		
			
				|  |  | +          v-model="dialogForms.sortNumber"
 | 
	
		
			
				|  |  | +          :min="0"
 | 
	
		
			
				|  |  | +          :max="9999"
 | 
	
		
			
				|  |  | +          :controls="false"
 | 
	
		
			
				|  |  | +          style="width: 100% !important"
 | 
	
		
			
				|  |  | +        />
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +      <template #footer>
 | 
	
		
			
				|  |  | +        <span class="dialog-footer">
 | 
	
		
			
				|  |  | +          <el-button @click="dialogVisible = false"> 取消 </el-button>
 | 
	
		
			
				|  |  | +          <el-button type="primary" @click="onDialogConfirm" v-preventReClick>
 | 
	
		
			
				|  |  | +            确定</el-button
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +        </span>
 | 
	
		
			
				|  |  | +      </template>
 | 
	
		
			
				|  |  | +    </el-dialog>
 | 
	
		
			
				|  |  | +  </div>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +import pagination from "@/components/Pagination/index";
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  api_pageByApplication,
 | 
	
		
			
				|  |  | +  musicSheetApplicationExtendSaveBatch
 | 
	
		
			
				|  |  | +} from "../api";
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  name: "edit-music",
 | 
	
		
			
				|  |  | +  props: ["tree"],
 | 
	
		
			
				|  |  | +  components: {
 | 
	
		
			
				|  |  | +    pagination
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      currentStep: 0,
 | 
	
		
			
				|  |  | +      chioseIdList: [], // 选中的数据
 | 
	
		
			
				|  |  | +      searchForm: {
 | 
	
		
			
				|  |  | +        keyword: "",
 | 
	
		
			
				|  |  | +        // musicSheetType: "",
 | 
	
		
			
				|  |  | +        subjectId: null,
 | 
	
		
			
				|  |  | +        composer: null
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      pageInfo: {
 | 
	
		
			
				|  |  | +        // 分页规则
 | 
	
		
			
				|  |  | +        limit: 10, // 限制显示条数
 | 
	
		
			
				|  |  | +        page: 1, // 当前页
 | 
	
		
			
				|  |  | +        total: 0, // 总条数
 | 
	
		
			
				|  |  | +        page_size: [10, 20, 40, 50] // 选择限制显示条数
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      dialogTitle: "",
 | 
	
		
			
				|  |  | +      dialogType: "musicSheetCategoryId",
 | 
	
		
			
				|  |  | +      dialogForms: {
 | 
	
		
			
				|  |  | +        musicSheetCategoryId: null,
 | 
	
		
			
				|  |  | +        rankType: null,
 | 
	
		
			
				|  |  | +        sortNumber: null
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      dialogVisible: false,
 | 
	
		
			
				|  |  | +      tableList: [],
 | 
	
		
			
				|  |  | +      formLists: [],
 | 
	
		
			
				|  |  | +      treeProps: {
 | 
	
		
			
				|  |  | +        value: "id",
 | 
	
		
			
				|  |  | +        label: "name",
 | 
	
		
			
				|  |  | +        children: "sysMusicScoreCategoriesList",
 | 
	
		
			
				|  |  | +        // checkStrictly: true,
 | 
	
		
			
				|  |  | +        expandTrigger: "hover"
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  mounted() {
 | 
	
		
			
				|  |  | +    this.$store.dispatch("setSubjects");
 | 
	
		
			
				|  |  | +    this.getList();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    console.log(this.tree, "tree");
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods: {
 | 
	
		
			
				|  |  | +    onSearch() {
 | 
	
		
			
				|  |  | +      this.$set(this.pageInfo, "page", 1);
 | 
	
		
			
				|  |  | +      this.$refs.form.validate(valid => {
 | 
	
		
			
				|  |  | +        if (valid) {
 | 
	
		
			
				|  |  | +          this.getList();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    onReSet() {
 | 
	
		
			
				|  |  | +      this.$refs.form.resetFields();
 | 
	
		
			
				|  |  | +      this.getList();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    async getList() {
 | 
	
		
			
				|  |  | +      const { data } = await api_pageByApplication({
 | 
	
		
			
				|  |  | +        page: this.pageInfo.page,
 | 
	
		
			
				|  |  | +        rows: this.pageInfo.limit,
 | 
	
		
			
				|  |  | +        ...this.searchForm
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      const rows = data.rows || [];
 | 
	
		
			
				|  |  | +      rows.forEach(row => {
 | 
	
		
			
				|  |  | +        row.currentPage = this.pageInfo.page;
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      this.tableList = rows || [];
 | 
	
		
			
				|  |  | +      this.pageInfo.total = data.total;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      let idList = this.chioseIdList.map(music => {
 | 
	
		
			
				|  |  | +        return music.id;
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      // this.isNewPage = true
 | 
	
		
			
				|  |  | +      this.$nextTick(() => {
 | 
	
		
			
				|  |  | +        this.tableList.forEach(course => {
 | 
	
		
			
				|  |  | +          if (idList.indexOf(course.id) != -1) {
 | 
	
		
			
				|  |  | +            multipleSelection.value.toggleRowSelection(course, true);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        // this.isNewPage = false
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      console.log(this.pageInfo, "pageInfo");
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    onFormatSelectData(arr, row) {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        let currentPageList = [];
 | 
	
		
			
				|  |  | +        const otherPageList = [];
 | 
	
		
			
				|  |  | +        this.chioseIdList.forEach(item => {
 | 
	
		
			
				|  |  | +          if (item.currentPage == this.pageInfo.page) {
 | 
	
		
			
				|  |  | +            currentPageList.push(item);
 | 
	
		
			
				|  |  | +          } else {
 | 
	
		
			
				|  |  | +            otherPageList.push(item);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const lastPage = [];
 | 
	
		
			
				|  |  | +        if (row && row.id) {
 | 
	
		
			
				|  |  | +          const index = currentPageList.findIndex(child => child.id === row.id);
 | 
	
		
			
				|  |  | +          if (index === -1) {
 | 
	
		
			
				|  |  | +            lastPage.push(row);
 | 
	
		
			
				|  |  | +          } else {
 | 
	
		
			
				|  |  | +            currentPageList.splice(index, 1);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          if (arr.length > 0) {
 | 
	
		
			
				|  |  | +            arr.forEach(item => {
 | 
	
		
			
				|  |  | +              const index = currentPageList.findIndex(
 | 
	
		
			
				|  |  | +                child => child.id === item.id
 | 
	
		
			
				|  |  | +              );
 | 
	
		
			
				|  |  | +              if (index === -1) {
 | 
	
		
			
				|  |  | +                lastPage.push(item);
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          } else {
 | 
	
		
			
				|  |  | +            currentPageList = [];
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        this.chioseIdList = [
 | 
	
		
			
				|  |  | +          ...lastPage,
 | 
	
		
			
				|  |  | +          ...otherPageList,
 | 
	
		
			
				|  |  | +          ...currentPageList
 | 
	
		
			
				|  |  | +        ].sort((a, b) => a.id - b.id);
 | 
	
		
			
				|  |  | +      } catch (e) {}
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    handleSelectionChange(arr) {
 | 
	
		
			
				|  |  | +      this.onFormatSelectData(arr);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    onTableSelect(arr, row) {
 | 
	
		
			
				|  |  | +      this.onFormatSelectData(arr, row);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    onCancel() {
 | 
	
		
			
				|  |  | +      //
 | 
	
		
			
				|  |  | +      if (this.currentStep === 0) {
 | 
	
		
			
				|  |  | +        this.$listeners.close();
 | 
	
		
			
				|  |  | +      } else if (this.currentStep === 1) {
 | 
	
		
			
				|  |  | +        this.currentStep = 0;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    async onSubmit() {
 | 
	
		
			
				|  |  | +      if (this.currentStep === 0) {
 | 
	
		
			
				|  |  | +        if (this.chioseIdList.length <= 0) {
 | 
	
		
			
				|  |  | +          this.$message.warning("请选择曲目");
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.currentStep = 1;
 | 
	
		
			
				|  |  | +        const tempList = [];
 | 
	
		
			
				|  |  | +        this.chioseIdList.forEach(item => {
 | 
	
		
			
				|  |  | +          tempList.push({
 | 
	
		
			
				|  |  | +            id: item.id,
 | 
	
		
			
				|  |  | +            name: item.name,
 | 
	
		
			
				|  |  | +            musicCover: item.musicCover,
 | 
	
		
			
				|  |  | +            subjectNames: item.subjectNames,
 | 
	
		
			
				|  |  | +            composer: item.composer,
 | 
	
		
			
				|  |  | +            sourceType: item.sourceType,
 | 
	
		
			
				|  |  | +            musicSheetCategoryId: null,
 | 
	
		
			
				|  |  | +            rankType: null,
 | 
	
		
			
				|  |  | +            sortNumber: null
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        this.formLists = tempList;
 | 
	
		
			
				|  |  | +        console.log(this.formLists, "formLists");
 | 
	
		
			
				|  |  | +      } else if (this.currentStep === 1) {
 | 
	
		
			
				|  |  | +        // 提交数据
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +          const params = [];
 | 
	
		
			
				|  |  | +          for (let i = 0; i < this.formLists.length; i++) {
 | 
	
		
			
				|  |  | +            const item = this.formLists[i];
 | 
	
		
			
				|  |  | +            if (
 | 
	
		
			
				|  |  | +              !item.musicSheetCategoryId ||
 | 
	
		
			
				|  |  | +              item.musicSheetCategoryId.length == 0
 | 
	
		
			
				|  |  | +            ) {
 | 
	
		
			
				|  |  | +              this.$message.error("曲目标签不能为空");
 | 
	
		
			
				|  |  | +              return;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (!item.rankType) {
 | 
	
		
			
				|  |  | +              this.$message.error("收费方式不能为空");
 | 
	
		
			
				|  |  | +              return;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (
 | 
	
		
			
				|  |  | +              item.sortNumber === null ||
 | 
	
		
			
				|  |  | +              item.sortNumber === undefined ||
 | 
	
		
			
				|  |  | +              item.sortNumber === ""
 | 
	
		
			
				|  |  | +            ) {
 | 
	
		
			
				|  |  | +              this.$message.error("排序不能为空");
 | 
	
		
			
				|  |  | +              return;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            params.push({
 | 
	
		
			
				|  |  | +              ...item,
 | 
	
		
			
				|  |  | +              musicSheetId: item.id,
 | 
	
		
			
				|  |  | +              musicSheetCategoryId:
 | 
	
		
			
				|  |  | +                item.musicSheetCategoryId.length > 0
 | 
	
		
			
				|  |  | +                  ? item.musicSheetCategoryId[
 | 
	
		
			
				|  |  | +                      item.musicSheetCategoryId.length - 1
 | 
	
		
			
				|  |  | +                    ]
 | 
	
		
			
				|  |  | +                  : null,
 | 
	
		
			
				|  |  | +              id: null
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          await musicSheetApplicationExtendSaveBatch(params);
 | 
	
		
			
				|  |  | +          this.$message.success(`添加成功`);
 | 
	
		
			
				|  |  | +          this.$emit("getList");
 | 
	
		
			
				|  |  | +          this.$emit("close");
 | 
	
		
			
				|  |  | +        } catch (e) {
 | 
	
		
			
				|  |  | +          //
 | 
	
		
			
				|  |  | +          console.log(e, "e");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    onDialogEdit(type, index = 0) {
 | 
	
		
			
				|  |  | +      console.log(type, "type");
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        if (type === "musicSheetCategoryId") {
 | 
	
		
			
				|  |  | +          this.dialogTitle = "曲谱分类";
 | 
	
		
			
				|  |  | +        } else if (type === "rankType") {
 | 
	
		
			
				|  |  | +          this.dialogTitle = "收费方式";
 | 
	
		
			
				|  |  | +        } else if (type === "sortNumber") {
 | 
	
		
			
				|  |  | +          this.dialogTitle = "排序";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.dialogForms.musicSheetCategoryId = null;
 | 
	
		
			
				|  |  | +        this.dialogForms.rankType = null;
 | 
	
		
			
				|  |  | +        this.dialogForms.sortNumber = null;
 | 
	
		
			
				|  |  | +        this.dialogVisible = true;
 | 
	
		
			
				|  |  | +        this.dialogType = type;
 | 
	
		
			
				|  |  | +      } catch (e) {
 | 
	
		
			
				|  |  | +        cosnole.log(e, "e");
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 确认修改 */
 | 
	
		
			
				|  |  | +    onDialogConfirm() {
 | 
	
		
			
				|  |  | +      this.formLists.forEach(item => {
 | 
	
		
			
				|  |  | +        if (this.dialogType === "musicSheetCategoryId") {
 | 
	
		
			
				|  |  | +          item.musicSheetCategoryId = this.dialogForms.musicSheetCategoryId;
 | 
	
		
			
				|  |  | +        } else if (this.dialogType === "rankType") {
 | 
	
		
			
				|  |  | +          item.rankType = this.dialogForms.rankType;
 | 
	
		
			
				|  |  | +        } else if (this.dialogType === "sortNumber") {
 | 
	
		
			
				|  |  | +          item.sortNumber = this.dialogForms.sortNumber;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      this.dialogVisible = false;
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    onRemoveMusic(row) {
 | 
	
		
			
				|  |  | +      this.$confirm(`是否删除该数据?`, "提示", {
 | 
	
		
			
				|  |  | +        confirmButtonText: "确定",
 | 
	
		
			
				|  |  | +        cancelButtonText: "取消",
 | 
	
		
			
				|  |  | +        type: "warning"
 | 
	
		
			
				|  |  | +      }).then(async () => {
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +          const index = this.formLists.findIndex(item => {
 | 
	
		
			
				|  |  | +            if (item.id == row.id) {
 | 
	
		
			
				|  |  | +              return true;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +          if (index > -1) {
 | 
	
		
			
				|  |  | +            this.formLists.splice(index, 1);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +          const index1 = this.chioseIdList.findIndex(item => {
 | 
	
		
			
				|  |  | +            if (item.id == row.id) {
 | 
	
		
			
				|  |  | +              return true;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +          if (index1 > -1) {
 | 
	
		
			
				|  |  | +            this.chioseIdList.splice(index, 1);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          console.log(this.chioseIdList, "chioseIdList");
 | 
	
		
			
				|  |  | +        } catch {}
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<style lang="less" scoped>
 | 
	
		
			
				|  |  | +.dialog-footer {
 | 
	
		
			
				|  |  | +  text-align: right;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +.numberInput {
 | 
	
		
			
				|  |  | +  width: 100%;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +/deep/ .el-input-number {
 | 
	
		
			
				|  |  | +  .el-input__inner {
 | 
	
		
			
				|  |  | +    text-align: left !important;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</style>
 |