| 
					
				 | 
			
			
				@@ -0,0 +1,242 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { defineComponent, reactive, Ref, ref } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Sticky, List, Popup, Field, Button, Toast } from 'vant' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import Search from '@/components/col-search' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import request from '@/helpers/request' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import Item, { auditStatus, auditStatusColor } from './item' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// import SelectTag from '../search/select-tag' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useRoute, useRouter } from 'vue-router' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ColResult from '@/components/col-result' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import styles from '../../student/music/list/index.module.less' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { getRandomKey, musicBuy } from '../../student/music/music' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const noop = () => {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  name: 'ReviewList', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  props: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    hideSearch: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: Boolean, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      default: false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    defauleParams: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: Object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      default: () => ({}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onItemClick: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: Function, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      default: noop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    teacherId: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: String || Number, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      default: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  setup({ hideSearch, defauleParams, onItemClick, teacherId }, { expose }) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    localStorage.setItem('behaviorId', getRandomKey()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const route = useRoute() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const router = useRouter() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const tempParams: any = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const query = route.query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (query.version) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      tempParams.version = query.version || '' // 处理ios审核版本 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const params = reactive({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      search: (route.query.search as string) || '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      musicTagIds: route.query.tagids || '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      page: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ...tempParams, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ...defauleParams 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const data = ref<any>(null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const loading = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const finished = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const isError = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const tagVisibility = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const onSearch = (value: string) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      params.page = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      params.search = value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      data.value = null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      FetchList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const FetchList = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (loading.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      loading.value = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      isError.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const res = await request.post('/api-admin/music/sheet/audit/list', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          data: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ...params 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (data.value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          let result = (data.value?.rows || []).concat(res.data.rows || []) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          data.value.rows = result 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        data.value = data.value || res.data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        params.page = res.data.pageNo + 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        finished.value = res.data.pageNo >= res.data.totalPage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        isError.value = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      loading.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const onComfirm = tags => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const d = Object.values(tags).flat().filter(Boolean).join(',') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      params.musicTagIds = d 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      params.page = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      data.value = null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      FetchList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      tagVisibility.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    expose({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      onSearch, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      onComfirm 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const message = ref('') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const detail: Ref<any> = ref(null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const visivle = ref(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const submit = async (data: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await request.post('/api-admin/music/sheet/audit', { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          body: data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Toast.success('提交成功') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        visivle.value = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        message.value = '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        onSearch(params.search) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch (error) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <List 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          loading={loading.value} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          finished={finished.value} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          finished-text={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data.value && data.value.rows.length ? '没有更多了' : '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          onLoad={FetchList} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          error={isError.value} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          {!hideSearch && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <Sticky class={styles.sticky}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <Search onSearch={onSearch} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </Sticky> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          {data.value && data.value.rows.length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ? data.value.rows.map(item => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <Item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  data={item} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  onClick={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    detail.value = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      ...item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    visivle.value = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    console.log(item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // router.push({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //   path: '/review/' + item.musicSheetId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //   state: item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              )) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            : !loading.value && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <ColResult 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  tips="暂无曲目" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  classImgSize="SMALL" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  btnStatus={false} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </List> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <Popup 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          position="bottom" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          closeable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          style={{ minHeight: '30%' }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          show={!!detail.value && visivle.value} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          onClosed={() => (detail.value = null)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          onClose={() => (visivle.value = false)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          teleport="body" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <Field 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            label="曲目名称" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            readonly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            modelValue={detail.value?.musicSheetName} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <Field 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            label="曲谱检查" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            readonly 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            isLink 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            modelValue="立即查看" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            onClick={() => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              musicBuy({ id: detail.value?.musicSheetId }, undefined, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                client: 'teacher' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          {detail.value?.auditStatus === 'DOING' ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <Field 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                readonly={detail.value?.auditStatus !== 'DOING'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                v-model={message.value} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rows="3" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                clearable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                autosize 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                label="审核理由" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                type="textarea" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                placeholder="请输入审核理由" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                required={detail.value?.auditStatus === 'DOING'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                style={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  display: 'flex' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <Button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  disabled={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    !message.value && detail.value?.auditStatus === 'DOING' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  block 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  type="danger" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  onClick={() => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    submit({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      musicSheetId: detail.value?.musicSheetId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      authStatus: 'UNPASS', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      remark: message.value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  拒绝 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </Button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <Button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  disabled={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    !message.value && detail.value?.auditStatus === 'DOING' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  block 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  type="primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  onClick={() => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    submit({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      musicSheetId: detail.value?.musicSheetId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      authStatus: 'PASS', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      remark: message.value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  同意 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </Button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ) : null} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </Popup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}) 
			 |