|
@@ -2,7 +2,7 @@ import { defineComponent, onMounted, reactive, watch } from "vue";
|
|
import styles from "./index.module.less";
|
|
import styles from "./index.module.less";
|
|
import { api_musicSheetPage } from "../../api";
|
|
import { api_musicSheetPage } from "../../api";
|
|
import state, { togglePlay } from "/src/state";
|
|
import state, { togglePlay } from "/src/state";
|
|
-import { List, Image, Field } from "vant";
|
|
|
|
|
|
+import { List, Image, Field, DropdownMenu, DropdownItem } from "vant";
|
|
import { postMessage } from "/src/utils/native-message";
|
|
import { postMessage } from "/src/utils/native-message";
|
|
import qs from "query-string";
|
|
import qs from "query-string";
|
|
import searImg from "./imgs/searImg.png"
|
|
import searImg from "./imgs/searImg.png"
|
|
@@ -25,6 +25,7 @@ export default defineComponent({
|
|
musicSheetCategoriesId: state.bizMusicCategoryId,
|
|
musicSheetCategoriesId: state.bizMusicCategoryId,
|
|
recentFlag: props.recentFlag ? true : null,
|
|
recentFlag: props.recentFlag ? true : null,
|
|
excludeMusicId: props.recentFlag ? null : state.examSongId,
|
|
excludeMusicId: props.recentFlag ? null : state.examSongId,
|
|
|
|
+ audioPlayTypes:""
|
|
});
|
|
});
|
|
const data = reactive({
|
|
const data = reactive({
|
|
isFocus: false,
|
|
isFocus: false,
|
|
@@ -33,12 +34,21 @@ export default defineComponent({
|
|
loading: false,
|
|
loading: false,
|
|
hasNext: true,
|
|
hasNext: true,
|
|
});
|
|
});
|
|
|
|
+ const audioPlayTypesOption = [
|
|
|
|
+ { text: '全部场景', value: "" },
|
|
|
|
+ { text: '演奏', value: "PLAY" },
|
|
|
|
+ { text: '演唱', value: "SING" },
|
|
|
|
+ { text: '演奏+演唱', value: "PLAY,SING" },
|
|
|
|
+ ]
|
|
const getList = async () => {
|
|
const getList = async () => {
|
|
if (!data.hasNext) return;
|
|
if (!data.hasNext) return;
|
|
data.loading = true;
|
|
data.loading = true;
|
|
try {
|
|
try {
|
|
const res = await api_musicSheetPage({
|
|
const res = await api_musicSheetPage({
|
|
...forms,
|
|
...forms,
|
|
|
|
+ ...{
|
|
|
|
+ audioPlayTypes: forms.audioPlayTypes ? forms.audioPlayTypes.split(",") : []
|
|
|
|
+ }
|
|
});
|
|
});
|
|
if (res?.code === 200 && Array.isArray(res.data?.rows)) {
|
|
if (res?.code === 200 && Array.isArray(res.data?.rows)) {
|
|
data.list = [...data.list, ...res.data.rows];
|
|
data.list = [...data.list, ...res.data.rows];
|
|
@@ -93,6 +103,9 @@ export default defineComponent({
|
|
return () => (
|
|
return () => (
|
|
<div class={styles.wrap}>
|
|
<div class={styles.wrap}>
|
|
<div class={[styles.searchBox,data.isFocus && styles.isFocus]}>
|
|
<div class={[styles.searchBox,data.isFocus && styles.isFocus]}>
|
|
|
|
+ <DropdownMenu class={[styles.dropdownMenu]} overlay={false}>
|
|
|
|
+ <DropdownItem onChange={handleQuery} v-model={forms.audioPlayTypes} options={audioPlayTypesOption}/>
|
|
|
|
+ </DropdownMenu>
|
|
<img src={searImg} />
|
|
<img src={searImg} />
|
|
<Field placeholder="请输入曲目名称" v-model={forms.name} autocomplete="off" onFocus={()=>{ data.isFocus = true }} onBlur={()=>{ data.isFocus = false }} />
|
|
<Field placeholder="请输入曲目名称" v-model={forms.name} autocomplete="off" onFocus={()=>{ data.isFocus = true }} onBlur={()=>{ data.isFocus = false }} />
|
|
<div class={styles.searchBtn} onClick={handleQuery}>搜索</div>
|
|
<div class={styles.searchBtn} onClick={handleQuery}>搜索</div>
|
|
@@ -117,6 +130,11 @@ export default defineComponent({
|
|
<p class={styles.name}>{item.musicSheetName}</p>
|
|
<p class={styles.name}>{item.musicSheetName}</p>
|
|
<div class={styles.detail}>
|
|
<div class={styles.detail}>
|
|
{item.usedNum && <div class={styles.usedNum}><img src={huoimg}/><div>{item.usedNum}</div></div>}
|
|
{item.usedNum && <div class={styles.usedNum}><img src={huoimg}/><div>{item.usedNum}</div></div>}
|
|
|
|
+ {
|
|
|
|
+ item.audioPlayTypes && item.audioPlayTypes.split(",").sort().map((type:"PLAY"|"SING")=>{
|
|
|
|
+ return <div class={type==="PLAY"?styles.playType:styles.singType}>{type==="PLAY"?"演奏":"演唱"}</div>
|
|
|
|
+ })
|
|
|
|
+ }
|
|
{item.composer && <p class={styles.author}>{item.composer}</p>}
|
|
{item.composer && <p class={styles.author}>{item.composer}</p>}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|