skyblued 2 gadi atpakaļ
vecāks
revīzija
ad1c229704

+ 90 - 81
src/school/approval-manage/agency/index.tsx

@@ -1,11 +1,12 @@
 import { Cell, Grid, GridItem } from 'vant'
-import { defineComponent, onMounted, reactive } from 'vue'
+import { defineComponent, onMounted, reactive, ref } from 'vue'
 import styles from '../index.module.less'
 import iconSubsidy from '../images/icon-subsidy.png'
 import iconNews from '../images/icon-news.png'
 import iconPhoto from '../images/icon-photo.png'
 import request from '@/helpers/request'
 import { state } from '@/state'
+import OFullRefresh from '@/components/o-full-refresh'
 
 interface ISalaryRecord {
   /**学校补助确认记录ID */
@@ -59,101 +60,109 @@ export default defineComponent({
         expectNewsNum: 0
       }
     })
+    const refreshing = ref(false)
     const getData = async () => {
       try {
         const res: any = await request.post(`${state.platformApi}/schoolWeekSalaryRecord/manage`)
       } catch (error) {}
+      refreshing.value = false
     }
     onMounted(() => {
       getData()
     })
     return () => (
-      <div>
-        {data.salaryRecordList.map((item: ISalaryRecord) => {
-          return (
-            <div class={styles.item}>
-              <Cell
-                center
-                label={`${item.startDate} 至 ${item.endDate}`}
-                isLink
-                to={'/approval-manage-subsidy?salaryId=' + (item.id || '')}
-              >
-                {{
-                  title: () => (
-                    <div class={styles.itemTitle}>
-                      <img class={styles.titleIcon} src={iconSubsidy} />
-                      <span>补助确认</span>
+      <OFullRefresh
+        v-model:modelValue={refreshing.value}
+        onRefresh={getData}
+        style="min-height: calc(100vh - var(--van-nav-bar-height) - var(--header-height))"
+      >
+        <div class={styles.wrap}>
+          {data.salaryRecordList.map((item: ISalaryRecord) => {
+            return (
+              <div class={styles.item} style={{ marginTop: 0 }}>
+                <Cell
+                  center
+                  label={`${item.startDate} 至 ${item.endDate}`}
+                  isLink
+                  to={'/approval-manage-subsidy?salaryId=' + (item.id || '')}
+                >
+                  {{
+                    title: () => (
+                      <div class={styles.itemTitle}>
+                        <img class={styles.titleIcon} src={iconSubsidy} />
+                        <span>补助确认</span>
+                      </div>
+                    )
+                  }}
+                </Cell>
+                <Grid class={styles.grid} columnNum={3} border={false}>
+                  <GridItem>
+                    <div class={styles.gridItem}>
+                      <div class={styles.gridItemTop}>
+                        <span class={styles.topNum}>{item.manageSalary}</span>元
+                      </div>
+                      <div>管理补助</div>
                     </div>
-                  )
-                }}
-              </Cell>
-              <Grid class={styles.grid} columnNum={3} border={false}>
-                <GridItem>
-                  <div class={styles.gridItem}>
-                    <div class={styles.gridItemTop}>
-                      <span class={styles.topNum}>{item.manageSalary}</span>元
+                  </GridItem>
+                  <GridItem>
+                    <div class={styles.gridItem}>
+                      <div class={styles.gridItemTop}>
+                        <span class={styles.topNum}>{item.courseSalary}</span>元
+                      </div>
+                      <div>训练补助</div>
                     </div>
-                    <div>管理补助</div>
-                  </div>
-                </GridItem>
-                <GridItem>
-                  <div class={styles.gridItem}>
-                    <div class={styles.gridItemTop}>
-                      <span class={styles.topNum}>{item.courseSalary}</span>元
+                  </GridItem>
+                  <GridItem>
+                    <div class={styles.gridItem}>
+                      <div class={styles.gridItemTop}>
+                        <span class={styles.topNum}>{item.trainingSalary}</span>元
+                      </div>
+                      <div>练习奖励</div>
                     </div>
-                    <div>训练补助</div>
+                  </GridItem>
+                </Grid>
+              </div>
+            )
+          })}
+
+          <div class={styles.item}>
+            <Cell
+              style={{ '--van-cell-value-color': '#333' }}
+              center
+              label={`${data.schoolWeekPhoto.startDate} 至 ${data.schoolWeekPhoto.endDate}`}
+              value={data.schoolWeekPhoto.photoNum + '/' + data.schoolWeekPhoto.expectPhotoNum}
+              isLink
+            >
+              {{
+                title: () => (
+                  <div class={styles.itemTitle}>
+                    <img class={styles.titleIcon} src={iconNews} />
+                    <span>训练照片</span>
                   </div>
-                </GridItem>
-                <GridItem>
-                  <div class={styles.gridItem}>
-                    <div class={styles.gridItemTop}>
-                      <span class={styles.topNum}>{item.trainingSalary}</span>元
-                    </div>
-                    <div>练习奖励</div>
+                )
+              }}
+            </Cell>
+          </div>
+          <div class={styles.item}>
+            <Cell
+              style={{ '--van-cell-value-color': '#333' }}
+              center
+              label={`${data.schoolWeekNews.startDate} 至 ${data.schoolWeekNews.endDate}`}
+              value={data.schoolWeekNews.newsNum + '/' + data.schoolWeekNews.expectNewsNum}
+              isLink
+            >
+              {{
+                title: () => (
+                  <div class={styles.itemTitle}>
+                    <img class={styles.titleIcon} src={iconPhoto} />
+                    <span>乐团资讯</span>
                   </div>
-                </GridItem>
-              </Grid>
-            </div>
-          )
-        })}
-
-        <div class={styles.item}>
-          <Cell
-            style={{ '--van-cell-value-color': '#333' }}
-            center
-            label={`${data.schoolWeekPhoto.startDate} 至 ${data.schoolWeekPhoto.endDate}`}
-            value={data.schoolWeekPhoto.photoNum + '/' + data.schoolWeekPhoto.expectPhotoNum}
-            isLink
-          >
-            {{
-              title: () => (
-                <div class={styles.itemTitle}>
-                  <img class={styles.titleIcon} src={iconNews} />
-                  <span>训练照片</span>
-                </div>
-              )
-            }}
-          </Cell>
-        </div>
-        <div class={styles.item}>
-          <Cell
-            style={{ '--van-cell-value-color': '#333' }}
-            center
-            label={`${data.schoolWeekNews.startDate} 至 ${data.schoolWeekNews.endDate}`}
-            value={data.schoolWeekNews.newsNum + '/' + data.schoolWeekNews.expectNewsNum}
-            isLink
-          >
-            {{
-              title: () => (
-                <div class={styles.itemTitle}>
-                  <img class={styles.titleIcon} src={iconPhoto} />
-                  <span>乐团资讯</span>
-                </div>
-              )
-            }}
-          </Cell>
+                )
+              }}
+            </Cell>
+          </div>
         </div>
-      </div>
+      </OFullRefresh>
     )
   }
 })

+ 1 - 1
src/school/approval-manage/components/end-approval.tsx

@@ -74,7 +74,7 @@ export default defineComponent({
             <OFullRefresh
               v-model:modelValue={refreshing.value}
               onRefresh={onRefresh}
-              style="min-height: calc(100vh - 2.50666rem);"
+              style="min-height: calc(100vh - var(--van-tabs-line-height) - var(--header-height) - 1.33333rem);"
             >
               <List
                 loading-text=" "

+ 1 - 1
src/school/approval-manage/components/wait-approval.tsx

@@ -74,7 +74,7 @@ export default defineComponent({
           <OFullRefresh
             v-model:modelValue={refreshing.value}
             onRefresh={onRefresh}
-            style="min-height: calc(100vh - 2.50666rem);"
+            style="min-height: calc(100vh - var(--van-tabs-line-height) - var(--header-height) - 1.33333rem);"
           >
             {showContact.value ? (
               <List

+ 4 - 1
src/school/approval-manage/index.module.less

@@ -36,9 +36,12 @@
     }
   }
 }
+.wrap{
+  padding: 12px 0;
+}
 .item {
   border-radius: 10px;
-  margin: 12px 13px;
+  margin: 0 13px 12px 13px;
   overflow: hidden;
   background: #fff;
   :global {

+ 20 - 4
src/school/approval-manage/index.tsx

@@ -4,16 +4,32 @@ import styles from './index.module.less'
 import { useRouter } from 'vue-router'
 import MyApproval from './MyApproval'
 import Agency from './agency'
+import OSticky from '@/components/o-sticky'
+import OHeader from '@/components/o-header'
 const activeName = ref('wait')
 export default defineComponent({
   name: 'approval-manage',
   setup() {
     const router = useRouter()
     const state = reactive({})
-
+    const headerHeight = ref(0)
     return () => (
-      <>
-        <Tabs v-model:active={activeName.value} class={styles.approvalTab} animated sticky>
+      <div>
+        <OSticky
+          onGetHeight={(height: number) => {
+            headerHeight.value = height
+            document.documentElement.style.setProperty('--header-height', height + 'px')
+          }}
+        >
+          <OHeader />
+        </OSticky>
+        <Tabs
+          v-model:active={activeName.value}
+          class={styles.approvalTab}
+          animated
+          sticky
+          offsetTop={headerHeight.value}
+        >
           <Tab name="wait" title="处理事项">
             <Agency />
           </Tab>
@@ -21,7 +37,7 @@ export default defineComponent({
             <MyApproval />
           </Tab>
         </Tabs>
-      </>
+      </div>
     )
   }
 })

+ 1 - 1
src/school/approval-manage/subsidy/details.tsx

@@ -19,7 +19,7 @@ export default defineComponent({
     console.log("🚀 ~ props", props)
     const item = (props?.item || {}) as ICourseSalaryRecordDetailItem
     return () => (
-      <div>
+      <div class={styles.wrap}>
         <div class={[styles.item, styles.listItem]}>
           <Cell border={false} center class={styles.listItem} title="补助标准" value={`${item.standardSalary}元/天`} />
           <Cell

+ 72 - 60
src/school/approval-manage/subsidy/exercise-detail.tsx

@@ -8,6 +8,7 @@ import { state } from '@/state'
 import OFullRefresh from '@/components/o-full-refresh'
 import Details from './details'
 import OHeader from '@/components/o-header'
+import OSticky from '@/components/o-sticky'
 
 export default defineComponent({
   name: 'subsidy-exercise-detail',
@@ -21,7 +22,9 @@ export default defineComponent({
     const data = reactive({
       /**补助明细 */
       record: {
-        courseSalaryRecordDetailList: [{courseScheduleTeacherAttendanceList: [{}]}] as ICourseSalaryRecordDetailItem[]
+        courseSalaryRecordDetailList: [
+          { courseScheduleTeacherAttendanceList: [{}] }
+        ] as ICourseSalaryRecordDetailItem[]
       } as ICourseSalaryRecordDetail
     })
     const getData = () => {
@@ -44,80 +47,89 @@ export default defineComponent({
     })
     return () => (
       <div>
+        <OSticky
+          onGetHeight={(height: number) => {
+            document.documentElement.style.setProperty('--header-height', height + 'px')
+          }}
+        >
+          <OHeader></OHeader>
+        </OSticky>
         <OFullRefresh
           v-model:modelValue={refreshing.value}
           onRefresh={getData}
-          style="min-height: 100vh"
+          style="min-height: calc(100vh - var(--header-height))"
         >
-          <div class={styles.item}>
-            <Cell center class={styles.rewardItem}>
-              {{
-                icon: () => <img class={styles.itemPicture} src={iconA} />,
-                title: () => (
-                  <div class={styles.itemTitle}>
-                    <span>邓同学</span>
-                  </div>
-                ),
-                value: () => (
-                  <div class={styles.gridItem}>
-                    <div class={styles.gridItemTop}>
-                      <span class={styles.topNum}>{data.record.actualSalary}</span>元
-                    </div>
-                    <div class={styles.valeLabel}>实际补助</div>
-                  </div>
-                )
-              }}
-            </Cell>
-          </div>
-
-          {data.record.courseSalaryRecordDetailList.map((item: ICourseSalaryRecordDetailItem) => (
+          <div class={styles.wrap}>
             <div class={styles.item}>
-              <Cell
-                center
-                value={`${item.days}天`}
-                isLink
-                onClick={() => {
-                  modelData.show = true
-                  modelData.row = item
-                }}
-              >
+              <Cell center class={styles.rewardItem}>
                 {{
+                  icon: () => <img class={styles.itemPicture} src={iconA} />,
                   title: () => (
                     <div class={styles.itemTitle}>
-                      <div class={styles.titleLine}></div>
-                      <span>长笛单技训练</span>
+                      <span>邓同学</span>
+                    </div>
+                  ),
+                  value: () => (
+                    <div class={styles.gridItem}>
+                      <div class={styles.gridItemTop}>
+                        <span class={styles.topNum}>{data.record.actualSalary}</span>元
+                      </div>
+                      <div class={styles.valeLabel}>实际补助</div>
                     </div>
                   )
                 }}
               </Cell>
-              <Grid class={styles.grid} columnNum={3} border={false}>
-                <GridItem>
-                  <div class={styles.gridItem}>
-                    <div class={styles.gridItemTop}>
-                      <span class={styles.topNum}>{item.expectSalary || 0}</span>元
+            </div>
+
+            {data.record.courseSalaryRecordDetailList.map((item: ICourseSalaryRecordDetailItem) => (
+              <div class={styles.item}>
+                <Cell
+                  center
+                  value={`${item.days}天`}
+                  isLink
+                  onClick={() => {
+                    modelData.show = true
+                    modelData.row = item
+                  }}
+                >
+                  {{
+                    title: () => (
+                      <div class={styles.itemTitle}>
+                        <div class={styles.titleLine}></div>
+                        <span>长笛单技训练</span>
+                      </div>
+                    )
+                  }}
+                </Cell>
+                <Grid class={styles.grid} columnNum={3} border={false}>
+                  <GridItem>
+                    <div class={styles.gridItem}>
+                      <div class={styles.gridItemTop}>
+                        <span class={styles.topNum}>{item.expectSalary || 0}</span>元
+                      </div>
+                      <div>预计补助</div>
                     </div>
-                    <div>预计补助</div>
-                  </div>
-                </GridItem>
-                <GridItem>
-                  <div class={styles.gridItem}>
-                    <div class={styles.gridItemTop}>
-                      <span class={styles.topNum}>{item.reduceSalary || 0}</span>元
+                  </GridItem>
+                  <GridItem>
+                    <div class={styles.gridItem}>
+                      <div class={styles.gridItemTop}>
+                        <span class={styles.topNum}>{item.reduceSalary || 0}</span>元
+                      </div>
+                      <div>考勤扣款</div>
                     </div>
-                    <div>考勤扣款</div>
-                  </div>
-                </GridItem>
-                <GridItem>
-                  <div class={styles.gridItem}>
-                    <div class={styles.gridItemTop}>
-                      <span class={styles.topNum}>{item.actualSalary || 0}</span>课元
+                  </GridItem>
+                  <GridItem>
+                    <div class={styles.gridItem}>
+                      <div class={styles.gridItemTop}>
+                        <span class={styles.topNum}>{item.actualSalary || 0}</span>课元
+                      </div>
+                      <div>实际补助</div>
                     </div>
-                    <div>实际补助</div>
-                  </div>
-                </GridItem>
-              </Grid>
-            </div>
-          ))}
+                  </GridItem>
+                </Grid>
+              </div>
+            ))}
+          </div>
         </OFullRefresh>
         <Popup
           v-model:show={modelData.show}

+ 80 - 67
src/school/approval-manage/subsidy/grant-detail.tsx

@@ -7,6 +7,7 @@ import request from '@/helpers/request'
 import { state } from '@/state'
 import OFullRefresh from '@/components/o-full-refresh'
 import OHeader from '@/components/o-header'
+import OSticky from '@/components/o-sticky'
 
 export default defineComponent({
   name: 'subsidy-grant-detail',
@@ -48,85 +49,96 @@ export default defineComponent({
       getData()
     })
     return () => (
-      <OFullRefresh
-        v-model:modelValue={refreshing.value}
-        onRefresh={getData}
-        style="min-height: 100vh"
-      >
-        <Sticky>
+      <div>
+        <OSticky
+          onGetHeight={(height: number) => {
+            document.documentElement.style.setProperty('--header-height', height + 'px')
+          }}
+        >
           <OHeader
             class={styles.rightTip}
             rightText="?"
             onClickRight={() => (dialog.value = true)}
           ></OHeader>
-        </Sticky>
-        <div class={styles.item}>
-          <Cell center value={`${data.manageSalary.photoNum}/${data.manageSalary.expectPhotoNum}`}>
-            {{
-              title: () => (
-                <div class={styles.itemTitle}>
-                  <div class={styles.titleLine}></div>
-                  <span>管理补助</span>
-                </div>
-              )
-            }}
-          </Cell>
-          <Grid class={styles.grid} columnNum={3} border={false}>
-            <GridItem>
-              <div class={styles.gridItem}>
-                <div class={styles.gridItemTop}>
-                  <span class={styles.topNum} style={{ color: '#333' }}>
-                    {data.manageSalary.standardSalary || 0}
-                  </span>
-                  元/周
-                </div>
-                <div>补助标准</div>
-              </div>
-            </GridItem>
-            <GridItem>
-              <div class={styles.gridItem}>
-                <div class={styles.gridItemTop}>
-                  <span class={styles.topNum} style={{ color: '#333' }}>
-                    {data.manageSalary.coursewareNum || 0}
-                  </span>
-                  课时
-                </div>
-                <div>本周课时数</div>
-              </div>
-            </GridItem>
-            <GridItem>
-              <div class={styles.gridItem}>
-                <div class={styles.gridItemTop}>
-                  <span class={styles.topNum}>{data.manageSalary.actualSalary || 0}</span>元
-                </div>
-                <div>实际补助</div>
-              </div>
-            </GridItem>
-          </Grid>
-        </div>
-
-        {data.rows.map((item: ICourseSchedule) => {
-          return () => (
+        </OSticky>
+        <OFullRefresh
+          v-model:modelValue={refreshing.value}
+          onRefresh={getData}
+          style="min-height: calc(100vh - var(--header-height))"
+        >
+          <div class={styles.wrap}>
             <div class={styles.item}>
-              <Cell center>
+              <Cell
+                center
+                value={`${data.manageSalary.photoNum}/${data.manageSalary.expectPhotoNum}`}
+              >
                 {{
                   title: () => (
                     <div class={styles.itemTitle}>
-                      <img class={styles.titleIcon} src={iconTime} />
-                      <span>{item.startTime}</span>
+                      <div class={styles.titleLine}></div>
+                      <span>管理补助</span>
                     </div>
                   )
                 }}
               </Cell>
-              <div class={styles.itemContent}>
-                <div class={styles.itemContentTitle}>
-                  {item.className}-{item.teacherName}
-                </div>
-                <div class={styles.itemContentLabel}>{item.orchestraName}</div>
-              </div>
+              <Grid class={styles.grid} columnNum={3} border={false}>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum} style={{ color: '#333' }}>
+                        {data.manageSalary.standardSalary || 0}
+                      </span>
+                      元/周
+                    </div>
+                    <div>补助标准</div>
+                  </div>
+                </GridItem>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum} style={{ color: '#333' }}>
+                        {data.manageSalary.coursewareNum || 0}
+                      </span>
+                      课时
+                    </div>
+                    <div>本周课时数</div>
+                  </div>
+                </GridItem>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>{data.manageSalary.actualSalary || 0}</span>元
+                    </div>
+                    <div>实际补助</div>
+                  </div>
+                </GridItem>
+              </Grid>
             </div>
-          )
-        })}
+
+            {data.rows.map((item: ICourseSchedule) => {
+              return () => (
+                <div class={styles.item}>
+                  <Cell center>
+                    {{
+                      title: () => (
+                        <div class={styles.itemTitle}>
+                          <img class={styles.titleIcon} src={iconTime} />
+                          <span>{item.startTime}</span>
+                        </div>
+                      )
+                    }}
+                  </Cell>
+                  <div class={styles.itemContent}>
+                    <div class={styles.itemContentTitle}>
+                      {item.className}-{item.teacherName}
+                    </div>
+                    <div class={styles.itemContentLabel}>{item.orchestraName}</div>
+                  </div>
+                </div>
+              )
+            })}
+          </div>
+        </OFullRefresh>
         <Dialog v-model:show={dialog.value} confirmButtonText="我知道了">
           <div class={[styles.item, styles.tipItem]}>
             <Cell center border={false}>
@@ -140,12 +152,13 @@ export default defineComponent({
               }}
             </Cell>
             <div class={styles.tipContent}>
-              1、若未在学期时间内发布不少于2篇乐团资讯,则下一学期管理补助按标准金额的80%发放<br />
+              1、若未在学期时间内发布不少于2篇乐团资讯,则下一学期管理补助按标准金额的80%发放
+              <br />
               2、如该学期管理补助是按标准金额的80%发放,只要该学期完成不少于2篇乐团资讯推送,则下学期恢复正常管理补助标准
             </div>
           </div>
         </Dialog>
-      </OFullRefresh>
+      </div>
     )
   }
 })

+ 209 - 187
src/school/approval-manage/subsidy/index.tsx

@@ -7,6 +7,7 @@ import { state } from '@/state'
 import { useRoute } from 'vue-router'
 import OFullRefresh from '@/components/o-full-refresh'
 import OHeader from '@/components/o-header'
+import OSticky from '@/components/o-sticky'
 
 export default defineComponent({
   name: 'approval-manage-subsidy',
@@ -40,210 +41,228 @@ export default defineComponent({
     })
     return () => (
       <div>
+        <OSticky
+          onGetHeight={(height: number) => {
+            document.documentElement.style.setProperty('--header-height', height + 'px')
+          }}
+        >
+          <OHeader
+            class={styles.rightTip}
+            rightText="?"
+            onClickRight={() => (dialog.value = true)}
+          ></OHeader>
+        </OSticky>
         <OFullRefresh
           v-model:modelValue={refreshing.value}
           onRefresh={getData}
-          style="min-height: 100vh"
+          style="min-height: calc(100vh - var(--header-height))"
         >
-          <Sticky>
-            <OHeader
-              class={styles.rightTip}
-              rightText="?"
-              onClickRight={() => (dialog.value = true)}
-            ></OHeader>
-          </Sticky>
-
-          <div class={styles.item}>
-            <Cell center isLink>
-              {{
-                title: () => (
-                  <div class={styles.itemTitle}>
-                    <span>
-                      {data.startDate} 至 {data.endDate}
-                    </span>
-                    <span class={styles.itemTag}>补助周期</span>
+          <div class={styles.wrap}>
+            <div class={styles.item}>
+              <Cell center isLink>
+                {{
+                  title: () => (
+                    <div class={styles.itemTitle}>
+                      <span>
+                        {data.startDate} 至 {data.endDate}
+                      </span>
+                      <span class={styles.itemTag}>补助周期</span>
+                    </div>
+                  )
+                }}
+              </Cell>
+              <Grid class={styles.grid} columnNum={3} border={false}>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>{data.manageSalary || 0}</span>元
+                    </div>
+                    <div>管理补助</div>
                   </div>
-                )
-              }}
-            </Cell>
-            <Grid class={styles.grid} columnNum={3} border={false}>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>{data.manageSalary || 0}</span>元
-                  </div>
-                  <div>管理补助</div>
-                </div>
-              </GridItem>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>{data.courseSalary || 0}</span>元
+                </GridItem>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>{data.courseSalary || 0}</span>元
+                    </div>
+                    <div>训练补助</div>
                   </div>
-                  <div>训练补助</div>
-                </div>
-              </GridItem>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>{data.practiceSalary || 0}</span>元
+                </GridItem>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>{data.practiceSalary || 0}</span>元
+                    </div>
+                    <div>练习奖励</div>
                   </div>
-                  <div>练习奖励</div>
-                </div>
-              </GridItem>
-            </Grid>
-          </div>
+                </GridItem>
+              </Grid>
+            </div>
 
-          <div class={styles.item}>
-            <Cell
-              style={{ '--van-cell-value-color': '#F44541' }}
-              center
-              value={`${data.manageSalaryInfo.expectPhotoNum}/${data.manageSalaryInfo.photoNum}`}
-              isLink
-              to={'/subsidy-grant-detail?id=' + (data.manageSalaryInfo.id || '')}
-            >
-              {{
-                title: () => (
-                  <div class={styles.itemTitle}>
-                    <div class={styles.titleLine}></div>
-                    <span>管理补助</span>
-                  </div>
-                )
-              }}
-            </Cell>
-            <Grid class={styles.grid} columnNum={3} border={false}>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum} style={{ color: '#333' }}>
-                      {data.manageSalaryInfo.standardSalary || 0}
-                    </span>
-                    元/周
+            <div class={styles.item}>
+              <Cell
+                style={{ '--van-cell-value-color': '#F44541' }}
+                center
+                value={`${data.manageSalaryInfo.expectPhotoNum}/${data.manageSalaryInfo.photoNum}`}
+                isLink
+                to={'/subsidy-grant-detail?id=' + (data.manageSalaryInfo.id || '')}
+              >
+                {{
+                  title: () => (
+                    <div class={styles.itemTitle}>
+                      <div class={styles.titleLine}></div>
+                      <span>管理补助</span>
+                    </div>
+                  )
+                }}
+              </Cell>
+              <Grid class={styles.grid} columnNum={3} border={false}>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum} style={{ color: '#333' }}>
+                        {data.manageSalaryInfo.standardSalary || 0}
+                      </span>
+                      元/周
+                    </div>
+                    <div>补助标准</div>
                   </div>
-                  <div>补助标准</div>
-                </div>
-              </GridItem>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum} style={{ color: '#333' }}>
-                      {data.manageSalaryInfo.standardSalary || 0}
-                    </span>
-                    课时
+                </GridItem>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum} style={{ color: '#333' }}>
+                        {data.manageSalaryInfo.standardSalary || 0}
+                      </span>
+                      课时
+                    </div>
+                    <div>本周课时数</div>
                   </div>
-                  <div>本周课时数</div>
-                </div>
-              </GridItem>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>{data.manageSalaryInfo.actualSalary || 0}</span>元
+                </GridItem>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>{data.manageSalaryInfo.actualSalary || 0}</span>元
+                    </div>
+                    <div>实际补助</div>
                   </div>
-                  <div>实际补助</div>
-                </div>
-              </GridItem>
-            </Grid>
-          </div>
+                </GridItem>
+              </Grid>
+            </div>
 
-          <div class={styles.item}>
-            <Cell center isLink to={'/subsidy-reward-detail'}>
-              {{
-                title: () => (
-                  <div class={styles.itemTitle}>
-                    <div class={styles.titleLine}></div>
-                    <span>练习奖励</span>
-                  </div>
-                )
-              }}
-            </Cell>
-            <Grid class={styles.grid} columnNum={3} border={false}>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>{data.practiceSalaryInfo.standardSalary || 0}</span>元/人
+            <div class={styles.item}>
+              <Cell center isLink to={'/subsidy-reward-detail'}>
+                {{
+                  title: () => (
+                    <div class={styles.itemTitle}>
+                      <div class={styles.titleLine}></div>
+                      <span>练习奖励</span>
+                    </div>
+                  )
+                }}
+              </Cell>
+              <Grid class={styles.grid} columnNum={3} border={false}>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>
+                        {data.practiceSalaryInfo.standardSalary || 0}
+                      </span>
+                      元/人
+                    </div>
+                    <div>补助标准</div>
                   </div>
-                  <div>补助标准</div>
-                </div>
-              </GridItem>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>{data.practiceSalaryInfo.targetNum || 0}</span>人
+                </GridItem>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>{data.practiceSalaryInfo.targetNum || 0}</span>人
+                    </div>
+                    <div>练习达标人数</div>
                   </div>
-                  <div>练习达标人数</div>
-                </div>
-              </GridItem>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>{data.practiceSalaryInfo.actualSalary || 0}</span>元
+                </GridItem>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>{data.practiceSalaryInfo.actualSalary || 0}</span>
+                      元
+                    </div>
+                    <div>实际奖励</div>
                   </div>
-                  <div>实际奖励</div>
-                </div>
-              </GridItem>
-            </Grid>
-          </div>
+                </GridItem>
+              </Grid>
+            </div>
 
-          <div class={styles.item}>
-            <Cell center to={'/subsidy-exercise-detail'}>
-              {{
-                title: () => (
-                  <div class={styles.itemTitle}>
-                    <div class={styles.titleLine}></div>
-                    <span>训练补助</span>
-                  </div>
-                )
-              }}
-            </Cell>
-            <Grid class={styles.grid} columnNum={3} border={false}>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>{data.courseSalaryInfo.singleSubsidyStandard || 0}</span>
-                    元/人
+            <div class={styles.item}>
+              <Cell center to={'/subsidy-exercise-detail'}>
+                {{
+                  title: () => (
+                    <div class={styles.itemTitle}>
+                      <div class={styles.titleLine}></div>
+                      <span>训练补助</span>
+                    </div>
+                  )
+                }}
+              </Cell>
+              <Grid class={styles.grid} columnNum={3} border={false}>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>
+                        {data.courseSalaryInfo.singleSubsidyStandard || 0}
+                      </span>
+                      元/人
+                    </div>
+                    <div>单技补助标准</div>
                   </div>
-                  <div>单技补助标准</div>
-                </div>
-              </GridItem>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>{data.courseSalaryInfo.musicSubsidyStandard || 0}</span>
-                    元/天
+                </GridItem>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>
+                        {data.courseSalaryInfo.musicSubsidyStandard || 0}
+                      </span>
+                      元/天
+                    </div>
+                    <div>乐理补助标准</div>
                   </div>
-                  <div>乐理补助标准</div>
-                </div>
-              </GridItem>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>
-                      {data.courseSalaryInfo.ensembleSubsidyStandard || 0}
-                    </span>
-                    
+                </GridItem>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>
+                        {data.courseSalaryInfo.ensembleSubsidyStandard || 0}
+                      </span>
+                      
+                    </div>
+                    <div>合奏补助标准</div>
                   </div>
-                  <div>合奏补助标准</div>
-                </div>
-              </GridItem>
-            </Grid>
-            {Array.isArray(data.courseSalaryInfo.salaryRecordDetailItemList) &&
-              data.courseSalaryInfo.salaryRecordDetailItemList.map((teacher: any) => {
-                return (
-                  <Cell center title={teacher.userName} isLink to={'/subsidy-exercise-detail?id='}>
-                    {{
-                      icon: () => <img class={styles.itemPicture} src={teacher.avatar} />,
-                      value: () => (
-                        <div class={styles.gridItem}>
-                          <div class={styles.gridItemTop}>
-                            <span class={styles.topNum}>{teacher.salary || 0}</span>元
+                </GridItem>
+              </Grid>
+              {Array.isArray(data.courseSalaryInfo.salaryRecordDetailItemList) &&
+                data.courseSalaryInfo.salaryRecordDetailItemList.map((teacher: any) => {
+                  return (
+                    <Cell
+                      center
+                      title={teacher.userName}
+                      isLink
+                      to={'/subsidy-exercise-detail?id='}
+                    >
+                      {{
+                        icon: () => <img class={styles.itemPicture} src={teacher.avatar} />,
+                        value: () => (
+                          <div class={styles.gridItem}>
+                            <div class={styles.gridItemTop}>
+                              <span class={styles.topNum}>{teacher.salary || 0}</span>元
+                            </div>
+                            <div class={styles.valeLabel}>实际奖励</div>
                           </div>
-                          <div class={styles.valeLabel}>实际奖励</div>
-                        </div>
-                      )
-                    }}
-                  </Cell>
-                )
-              })}
+                        )
+                      }}
+                    </Cell>
+                  )
+                })}
+            </div>
           </div>
         </OFullRefresh>
         <Dialog v-model:show={dialog.value} confirmButtonText="我知道了">
@@ -259,9 +278,12 @@ export default defineComponent({
               }}
             </Cell>
             <div class={styles.tipContent}>
-              1、每周一上午10点生成上一周实际补助数据<br />
-              2、每周一24点前完成补助确认,则该补助将会在当周周五发放<br />
-              3、超过周一24点确认,则延后到下周周五发放 4、如遇法定节假日,则统一延后到下一周五发放<br />
+              1、每周一上午10点生成上一周实际补助数据
+              <br />
+              2、每周一24点前完成补助确认,则该补助将会在当周周五发放
+              <br />
+              3、超过周一24点确认,则延后到下周周五发放 4、如遇法定节假日,则统一延后到下一周五发放
+              <br />
               5、未绑定银行卡造成无法发放时,在绑定银行卡后的下一周五一次性将已确认且未发放的金额一次性发放
             </div>
           </div>

+ 81 - 69
src/school/approval-manage/subsidy/reward-detail.tsx

@@ -8,6 +8,8 @@ import { useRoute } from 'vue-router'
 import request from '@/helpers/request'
 import { state } from '@/state'
 import OEmpty from '@/components/o-empty'
+import OSticky from '@/components/o-sticky'
+import OHeader from '@/components/o-header'
 
 export default defineComponent({
   name: 'subsidy-reward-detail',
@@ -83,86 +85,96 @@ export default defineComponent({
     const show = ref(false)
     return () => (
       <div>
+        <OSticky
+          onGetHeight={(height: number) => {
+            document.documentElement.style.setProperty('--header-height', height + 'px')
+          }}
+        >
+          <OHeader></OHeader>
+        </OSticky>
         <OFullRefresh
           v-model:modelValue={refreshing.value}
           onRefresh={getData}
-          style="min-height: 100vh"
+          style="min-height: calc(100vh - var(--header-height))"
         >
-          <div class={styles.item}>
-            <Cell center>
-              {{
-                title: () => (
-                  <div class={styles.itemTitle}>
-                    <div class={styles.titleLine}></div>
-                    <span>练习奖励</span>
-                  </div>
-                )
-              }}
-            </Cell>
-            <Grid class={styles.grid} columnNum={3} border={false}>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>{data.manageSalary.standardSalary || 0}</span>元/人
+          <div class={styles.wrap}>
+            <div class={styles.item}>
+              <Cell center>
+                {{
+                  title: () => (
+                    <div class={styles.itemTitle}>
+                      <div class={styles.titleLine}></div>
+                      <span>练习奖励</span>
+                    </div>
+                  )
+                }}
+              </Cell>
+              <Grid class={styles.grid} columnNum={3} border={false}>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>{data.manageSalary.standardSalary || 0}</span>
+                      元/人
+                    </div>
+                    <div>补助标准</div>
                   </div>
-                  <div>补助标准</div>
-                </div>
-              </GridItem>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>{data.manageSalary.targetNum || 0}</span>人
+                </GridItem>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>{data.manageSalary.targetNum || 0}</span>人
+                    </div>
+                    <div>练习达标人数</div>
                   </div>
-                  <div>练习达标人数</div>
-                </div>
-              </GridItem>
-              <GridItem>
-                <div class={styles.gridItem}>
-                  <div class={styles.gridItemTop}>
-                    <span class={styles.topNum}>{data.manageSalary.actualSalary || 0}</span>元
+                </GridItem>
+                <GridItem>
+                  <div class={styles.gridItem}>
+                    <div class={styles.gridItemTop}>
+                      <span class={styles.topNum}>{data.manageSalary.actualSalary || 0}</span>元
+                    </div>
+                    <div>实际奖励</div>
                   </div>
-                  <div>实际奖励</div>
-                </div>
-              </GridItem>
-            </Grid>
-          </div>
+                </GridItem>
+              </Grid>
+            </div>
 
-          <div class={styles.itemSelect}>
-            <div class={styles.select} onClick={() => (show.value = true)}>
-              <span>{activeName.value}</span>
-              <img src={iconArrow} />
+            <div class={styles.itemSelect}>
+              <div class={styles.select} onClick={() => (show.value = true)}>
+                <span>{activeName.value}</span>
+                <img src={iconArrow} />
+              </div>
             </div>
-          </div>
 
-          {data.rows.length ? (
-            <div class={styles.item}>
-              {data.rows.map((item: IStudent) => {
-                return (
-                  <Cell center>
-                    {{
-                      icon: () => <img class={styles.itemPicture} src={item.avatar} />,
-                      title: () => (
-                        <div class={styles.itemTitle}>
-                          <span>{item.nickname}</span>
-                        </div>
-                      ),
-                      label: () => <span class={styles.itemTag}>{item.subjectNames}</span>,
-                      value: () => (
-                        <div class={styles.gridItem}>
-                          <div class={styles.gridItemTop}>
-                            <span class={styles.topNum}>{item.practiceTimes}</span>分钟
+            {data.rows.length ? (
+              <div class={styles.item}>
+                {data.rows.map((item: IStudent) => {
+                  return (
+                    <Cell center>
+                      {{
+                        icon: () => <img class={styles.itemPicture} src={item.avatar} />,
+                        title: () => (
+                          <div class={styles.itemTitle}>
+                            <span>{item.nickname}</span>
                           </div>
-                          <div class={styles.valeLabel}>练习时长</div>
-                        </div>
-                      )
-                    }}
-                  </Cell>
-                )
-              })}
-            </div>
-          ) : (
-            <OEmpty tips="暂无学生练习" />
-          )}
+                        ),
+                        label: () => <span class={styles.itemTag}>{item.subjectNames}</span>,
+                        value: () => (
+                          <div class={styles.gridItem}>
+                            <div class={styles.gridItemTop}>
+                              <span class={styles.topNum}>{item.practiceTimes}</span>分钟
+                            </div>
+                            <div class={styles.valeLabel}>练习时长</div>
+                          </div>
+                        )
+                      }}
+                    </Cell>
+                  )
+                })}
+              </div>
+            ) : (
+              <OEmpty tips="暂无学生练习" />
+            )}
+          </div>
         </OFullRefresh>
         <ActionSheet
           teleport="body"