Browse Source

添加管理端学校相册

lex 2 years ago
parent
commit
1b428aaad2

+ 6 - 0
src/school/orchestra/compontent/photo.module.less

@@ -1,6 +1,12 @@
 .phone {
   overflow: hidden;
   padding: 0 13px 0;
+
+  .select {
+    margin-top: 12px;
+    border-radius: 10px;
+    overflow: hidden;
+  }
 }
 .addPhone {
   margin-top: 12px;

+ 59 - 4
src/school/orchestra/compontent/photo.tsx

@@ -3,10 +3,13 @@ import request from '@/helpers/request'
 import {
   ActionSheet,
   Button,
+  Cell,
+  CellGroup,
   Dialog,
   Field,
   Image,
   List,
+  Picker,
   Popover,
   Popup,
   showConfirmDialog,
@@ -45,7 +48,10 @@ export default defineComponent({
         rows: 20
       },
       selectItem: {} as any,
-      selectType: 'add'
+      selectType: 'add',
+      schoolStatus: false,
+      schoolList: [],
+      school: {} as any
     })
 
     const onAddPhoto = async () => {
@@ -111,7 +117,7 @@ export default defineComponent({
         const res = await request.post('/api-school/orchestraPhotoAlbum/page', {
           data: {
             ...state.params,
-            orchestraId: route.query.id
+            schoolId: state.school.id
           }
         })
         state.listState.loading = false
@@ -133,6 +139,29 @@ export default defineComponent({
       }
     }
 
+    const getSchoolList = async () => {
+      try {
+        const res = await request.post('/api-school/school/page', {
+          data: {
+            page: 1,
+            rows: 999
+          }
+        })
+        if (Array.isArray(res.data?.rows)) {
+          state.schoolList = res.data.rows.map((n: any) => {
+            return {
+              name: n.name || '',
+              id: n.id || ''
+            }
+          })
+          const tmpSchool = sessionStorage.getItem('school-photo')
+          state.school = tmpSchool ? JSON.parse(tmpSchool) : state.schoolList[0] || {}
+        }
+      } catch {
+        //
+      }
+    }
+
     const onDetail = (item: any) => {
       sessionStorage.setItem('orchestra-detail-tab', 'photo')
       router.push({
@@ -182,8 +211,9 @@ export default defineComponent({
       })
     }
 
-    onMounted(() => {
-      getList()
+    onMounted(async () => {
+      await getSchoolList()
+      await getList()
     })
     return () => (
       <div
@@ -191,6 +221,12 @@ export default defineComponent({
         style={{ minHeight: `calc(100vh - ${props.height}px)` }}
       >
         <Sticky position="top" offsetTop={props.height} style={{ width: '100%' }}>
+          <Cell class={styles.select} center isLink onClick={() => (state.schoolStatus = true)}>
+            {{
+              // icon: () => <img class={styles.icon} src={iconOrchestra} />,
+              title: () => <div class="van-ellipsis">{state.school.name}</div>
+            }}
+          </Cell>
           <Button
             icon="plus"
             block
@@ -287,6 +323,25 @@ export default defineComponent({
             { name: '删除', color: '#F44541', callback: () => onRemove() }
           ]}
         />
+
+        <Popup v-model:show={state.schoolStatus} position="bottom" round>
+          <Picker
+            columns={state.schoolList}
+            columnsFieldNames={{ text: 'name', value: 'id' }}
+            onCancel={() => (state.schoolStatus = false)}
+            onConfirm={({ selectedValues }: any) => {
+              const val = selectedValues[0] || ''
+              state.schoolStatus = false
+              if (val == state.school?.id) {
+                return
+              }
+              const active = state.schoolList.find((n: any) => n.id == val) || {}
+              state.school = active
+              sessionStorage.setItem('school-photo', JSON.stringify(active))
+              onSearch()
+            }}
+          />
+        </Popup>
       </div>
     )
   }