lex 2 лет назад
Родитель
Сommit
859707926c

+ 7 - 0
src/views/mine-orchestra/my-photo/index.module.less

@@ -1,3 +1,6 @@
+.phoneDetail {
+  overflow: hidden;
+}
 .photoWrap {
   display: flex;
   flex-wrap: wrap;
@@ -40,3 +43,7 @@
     font-size: 12px;
   }
 }
+.cellGroup {
+  width: calc(100% - 26px);
+  margin: 12px 13px 0;
+}

+ 83 - 18
src/views/mine-orchestra/my-photo/index.tsx

@@ -2,7 +2,18 @@ import OEmpty from '@/components/o-empty'
 import OHeader from '@/components/o-header'
 import request from '@/helpers/request'
 import { state } from '@/state'
-import { Grid, GridItem, Image, List, Loading, showImagePreview } from 'vant'
+import {
+  Cell,
+  CellGroup,
+  Grid,
+  GridItem,
+  Image,
+  List,
+  Loading,
+  Picker,
+  Popup,
+  showImagePreview
+} from 'vant'
 import { defineComponent, onMounted, reactive, watch } from 'vue'
 import { useRoute, useRouter } from 'vue-router'
 import styles from './index.module.less'
@@ -25,7 +36,10 @@ export default defineComponent({
         page: 1,
         rows: 20
       },
-      list: [] as any[]
+      list: [] as any[],
+      schoolStatus: false,
+      schoolList: [],
+      school: {} as any
     })
 
     const getList = async () => {
@@ -34,7 +48,7 @@ export default defineComponent({
         const res = await request.post(`${state.platformApi}/orchestraPhotoAlbum/page`, {
           data: {
             ...data.pages,
-            orchestraId: props.orchestraId
+            orchestraId: data.school.id
           },
           hideLoading: true
         })
@@ -50,15 +64,29 @@ export default defineComponent({
       }
       data.loading = false
     }
-    watch(
-      () => props.orchestraId,
-      () => {
-        data.pages.page = 1
-        data.list = []
-        data.finished = false
-        getList()
+
+    const getSchoolList = async () => {
+      try {
+        const res = await request.post('/api-teacher/school/teacherSchoolPage', {
+          data: {
+            teacherId: state.user.data.id,
+            page: 1,
+            rows: 999
+          }
+        })
+        if (Array.isArray(res.data?.rows)) {
+          data.schoolList = res.data.rows.map((n: any) => {
+            return {
+              name: n.schoolName || '',
+              id: n.schoolId || ''
+            }
+          })
+          data.school = data.schoolList[0] || {}
+        }
+      } catch {
+        //
       }
-    )
+    }
 
     // 预览图片
     const onShowImage = (index: number) => {
@@ -73,16 +101,22 @@ export default defineComponent({
       })
     }
 
-    onMounted(() => {
-      getList()
+    onMounted(async () => {
+      await getSchoolList()
+      await getList()
       document.title = (route.query.name as any) || ''
     })
 
     return () => (
-      <div
-        class={[styles.phoneDetail, !data.list.length && 'emptyRootContainer']}
-        // style={{ height: '100%', minHeight: 'auto' }}
-      >
+      <div class={[styles.phoneDetail]}>
+        <CellGroup inset class={styles.cellGroup}>
+          <Cell class={styles.select} center isLink onClick={() => (data.schoolStatus = true)}>
+            {{
+              // icon: () => <img class={styles.icon} src={iconOrchestra} />,
+              title: () => <div class="van-ellipsis">{data.school.name}</div>
+            }}
+          </Cell>
+        </CellGroup>
         {!data.loading && !!data.list.length && (
           <List
             // v-model:loading={data.loading}
@@ -120,7 +154,38 @@ export default defineComponent({
             </div>
           </List>
         )}
-        {!data.loading && !data.list.length && <OEmpty btnStatus={false} tips="暂无相册" />}
+        {!data.loading && !data.list.length && (
+          <div
+            class="emptyRootContainer"
+            style={{
+              minHeight: 'calc(100vh - 1.22667rem)'
+            }}
+          >
+            <OEmpty btnStatus={false} tips="暂无相册" />
+          </div>
+        )}
+
+        <Popup v-model:show={data.schoolStatus} position="bottom" round>
+          <Picker
+            columns={data.schoolList}
+            columnsFieldNames={{ text: 'name', value: 'id' }}
+            onCancel={() => (data.schoolStatus = false)}
+            onConfirm={({ selectedValues }: any) => {
+              const val = selectedValues[0] || ''
+              data.schoolStatus = false
+              if (val == data.school?.id) {
+                return
+              }
+              const active = data.schoolList.find((n: any) => n.id == val) || {}
+              data.school = active
+
+              data.pages.page = 1
+              data.list = []
+              data.finished = false
+              getList()
+            }}
+          />
+        </Popup>
       </div>
     )
   }