瀏覽代碼

Merge branch 'master' into zhaoj

ZhaoJing 1 年之前
父節點
當前提交
d9b3fe746d
共有 8 個文件被更改,包括 263 次插入16 次删除
  1. 3 1
      src/App.vue
  2. 二進制
      src/assets/index/wdkb.png
  3. 二進制
      src/assets/index/wdtdk.png
  4. 123 0
      src/components/RemoteList/index.vue
  5. 8 0
      src/pages/menuData.js
  6. 9 3
      src/pages/tdk/wdkb.vue
  7. 108 0
      src/pages/tdk/wdtdk.vue
  8. 12 12
      src/store/user.js

+ 3 - 1
src/App.vue

@@ -1,5 +1,7 @@
 <template>
   <main>
-    <RouterView style="background-color: white;min-height: 100vh;" />
+    <Suspense>
+      <RouterView style="background-color: white;min-height: 100vh;" />
+    </Suspense>
   </main>
 </template>

二進制
src/assets/index/wdkb.png


二進制
src/assets/index/wdtdk.png


+ 123 - 0
src/components/RemoteList/index.vue

@@ -0,0 +1,123 @@
+<script setup>
+const props = defineProps({
+  url: {
+    type: String,
+    required: true,
+  },
+  d: {
+    type: Object,
+    required: false,
+  },
+  k: {
+    type: String,
+    required: false,
+  },
+})
+
+let page = 1
+
+let loading = $ref(false)
+let error = $ref(false)
+let finished = $ref(false)
+let refreshing = $ref(false)
+
+let list = $ref([])
+
+// request({
+//   url: props.url,
+//   data: {
+//     page,
+//     ...props.d
+//   },
+// })
+
+function onLoad() {
+  loading = true
+  request({
+    url: props.url,
+    data: {
+      page,
+      ...props.d,
+    },
+  }).then((res) => {
+    if (res.code === '1') {
+      if (refreshing) {
+        list = []
+        refreshing = false
+      }
+      list = list.concat(res.data.page_data)
+      loading = false
+      page++
+      if (res.data.page_now === res.data.total_page)
+        finished = true
+    }
+    else {
+      error = true
+    }
+  }).catch((err) => {
+    console.log(err)
+  })
+}
+
+function onRefresh() {
+  finished = false
+  page = 1
+  refreshing = true
+  onLoad()
+}
+
+let timer
+
+onBeforeUnmount(() => {
+  timer && clearInterval(timer)
+})
+
+function debounce(fn, delay) {
+  return function () {
+    console.log('debounce')
+    const context = this
+    const args = arguments
+    clearTimeout(timer)
+    timer = setTimeout(() => {
+      fn.apply(context, args)
+    }, delay)
+  }
+}
+
+watch(
+  () => props.d,
+  debounce((val, oldVal) => {
+    // console.log('val : ', val)
+    if (props.k) {
+      if (val[props.k] === oldVal[props.k])
+        return
+    }
+
+    page = 1
+    refreshing = true
+    onLoad()
+  }, 400),
+  {
+    deep: true,
+  },
+)
+
+defineExpose({
+  refresh: () => {
+    onRefresh()
+  },
+})
+</script>
+
+<template>
+  <van-pull-refresh v-model="refreshing" @refresh="onRefresh">
+    <van-list
+      v-model:loading="loading" v-model:error="error" error-text="请求失败,点击重新加载" :finished="finished"
+      finished-text="没有更多了" @load="onLoad" @click.stop
+    >
+      <template v-for="item in list">
+        <slot :row="item" />
+      </template>
+    </van-list>
+  </van-pull-refresh>
+</template>

+ 8 - 0
src/pages/menuData.js

@@ -124,6 +124,14 @@ export const menuList = [
     ],
   },
   {
+    tag: 'tdk',
+    title: '调代课',
+    list: [
+      { icon: getAssetsImages('index/wdkb.png'), menuName: '我的课表', path: '/tdk/wdkb' },
+      { icon: getAssetsImages('index/wdtdk.png'), menuName: '我的调代课', path: '/tdk/wdtdk' },
+    ],
+  },
+  {
     tag: 'zyyy',
     title: '资源预约',
     list: [

+ 9 - 3
src/pages/tdk/wdkb.vue

@@ -1,6 +1,12 @@
 <script setup lang='ts'>
 import { user } from '~/store/user'
 
+const team_id = await request({ url: '/jcxx/team/index', data: { team_current: '1' } }).then((res) => {
+  const { team_id, team_name } = res.data.page_data[0]
+  return team_id
+})
+console.log('team_id : ', team_id)
+
 const skzc = ref(1)
 
 const WeekMap = '一二三四五六日'
@@ -12,7 +18,7 @@ async function queryApi2() {
   tableData2.value = {}
   await request({
     url: '/xdjx/kbgl_jskbmx/index',
-    data: { limit: 100, xjj_xm: user.real_name, skzc: skzc.value },
+    data: { limit: 100, xjj_xm: user.real_name, skzc: skzc.value, team_id },
   }).then((res) => {
     const d = res.data.page_data
     // tableData2.value = (Array.from({ length: 8 }).map((_, i) => Array.from({ length: 7 }).map((_, j) => (null))))
@@ -48,7 +54,7 @@ function onConfirm({ selectedOptions }) {
 
 <template>
   <div class="px-2px mb-32px">
-    <van-field v-model="fieldValue" is-link readonly label="周次" placeholder="选择城市" @click="showPicker = true" />
+    <van-field v-model="fieldValue" is-link readonly label="周次" placeholder="选择周次" @click="showPicker = true" />
   </div>
 
   <van-popup v-model:show="showPicker" round position="bottom">
@@ -65,7 +71,7 @@ function onConfirm({ selectedOptions }) {
       </div>
     </div>
 
-    <div v-loading="loading_table2" class="tbody">
+    <div class="tbody">
       <div v-for="(i) in 8" :key="i" class="trow divide-x divide-hex-ccc">
         <div v-for="j in 8" :key="j" class="tcell h-full">
           <div v-if="j === 1" class="w-full h-full flex_center">

+ 108 - 0
src/pages/tdk/wdtdk.vue

@@ -0,0 +1,108 @@
+<script setup lang='ts'>
+const fieldValue = ref()
+const WeekMap = '一二三四五六日'
+
+const team_id = await request({ url: '/jcxx/team/index', data: { team_current: '1' } }).then((res) => {
+  const { team_id, team_name } = res.data.page_data[0]
+  fieldValue.value = team_name
+  return team_id
+})
+
+const form_team_id = ref(team_id)
+
+const columns = await request({ url: '/jcxx/team/index', data: { limit: 100 } }).then((res) => {
+  const d = res.data.page_data
+  return d.map((el: any) => ({ text: el.team_name, value: el.team_id }))
+})
+
+const showPicker = ref(false)
+
+function onConfirm({ selectedOptions }) {
+  showPicker.value = false
+  fieldValue.value = selectedOptions[0].text
+  form_team_id.value = selectedOptions[0].value
+
+  // queryApi2()
+}
+</script>
+
+<template>
+  <div class="px-2px">
+    <van-field v-model="fieldValue" is-link readonly label="学期" placeholder="选择学期" @click="showPicker = true" />
+  </div>
+
+  <van-popup v-model:show="showPicker" round position="bottom">
+    <van-picker :columns="columns" @cancel="showPicker = false" @confirm="onConfirm" />
+  </van-popup>
+  <!-- <div class="flex_center py-4">
+    <van-loading />
+  </div> -->
+
+  <remote-list
+    url="/xdjx/tdkgl_wdtdk/index" :d="{
+      team_id: form_team_id,
+    }" class="text-16px space-x-2 p-4px"
+    k="team_id"
+  >
+    <template
+      #default="{ row: { xtw_tklx, xtw_shzt, xtw_tklx_option_k, xtw_jsxm, xtw_tkzc, xtw_zcsj, xtw_tkjc, xtw_tkxq, xtw_tkmc, xtw_hdkjsxm, xtw_hdkzc, xtw_hdkzcsj, xtw_hdkjc, xtw_hdkxq, xtw_hdkmc } }"
+    >
+      <div class="px-18px py-12px bg-white rounded text-12px mb-8px">
+        <div class="flex justify-between mb-10px">
+          <div class="text-14px font-bold">
+            {{ xtw_tklx }}申请
+          </div>
+          <van-tag type="primary">
+            {{ xtw_shzt === '3' ? '待审核' : xtw_shzt }}
+          </van-tag>
+        </div>
+        <div class="flex justify-between px-4px">
+          <div class="w-4/9">
+            <div class="mb-4px font-bold">
+              调课前:
+            </div>
+            <template v-if="xtw_tklx_option_k === '1'">
+              <div>{{ xtw_jsxm }}/第{{ xtw_tkzc }}周 周{{ WeekMap[xtw_tkxq] }} 第{{ xtw_tkjc }}节/{{ xtw_tkmc }}</div>
+            </template>
+            <template v-else>
+              <div class="mb-2px">
+                {{ xtw_jsxm }}/第{{ xtw_tkzc }}周 周{{ WeekMap[xtw_tkxq ] }} 第{{ xtw_tkjc }}节/{{ xtw_tkmc }}
+              </div>
+              <div>
+                {{ xtw_hdkjsxm }}/第{{ xtw_hdkzc }}周 周{{ WeekMap[xtw_hdkxq] }} 第{{ xtw_hdkjc }}节/{{
+                  xtw_hdkmc
+                }}
+              </div>
+            </template>
+          </div>
+          <div class="w-4/9">
+            <div class="mb-4px font-bold">
+              调课后:
+            </div>
+            <template v-if="xtw_tklx_option_k === '1'">
+              <div>{{ xtw_hdkjsxm }}/第{{ xtw_tkzc }}周 周{{ WeekMap[xtw_tkxq] }} 第{{ xtw_tkjc }}节/{{ xtw_tkmc }}</div>
+            </template>
+            <template v-else>
+              <div class="mb-2px">
+                {{ xtw_hdkjsxm }}/第{{ xtw_tkzc }}周 周{{ WeekMap[xtw_tkxq] }} 第{{ xtw_tkjc }}节/{{ xtw_hdkmc }}
+              </div>
+              <div>
+                {{ xtw_jsxm }}/第{{ xtw_hdkzc }}周 周{{ WeekMap[xtw_hdkxq] }} 第{{ xtw_hdkjc }}节/{{
+                  xtw_tkmc
+                }}
+              </div>
+            </template>
+          </div>
+        </div>
+      </div>
+    </template>
+  </remote-list>
+</template>
+
+<style lang="scss" scoped>
+.flex_center {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+</style>

+ 12 - 12
src/store/user.js

@@ -1,11 +1,11 @@
 import { defineStore } from 'pinia'
 
-import produ from './produ/la'
+// import produ from './produ/la'
 
-localStorage.setItem(
-  'userInfo',
-  JSON.stringify(produ),
-)
+// localStorage.setItem(
+//   'userInfo',
+//   JSON.stringify(produ),
+// )
 
 // const RoleMap = {
 //   JLD: [1, 2, 3],
@@ -28,7 +28,7 @@ export const userInfo = JSON.parse(localStorage.getItem('userInfo'))
 // } = userInfo
 
 export const user = {
-  userInfo: userInfo,
+  userInfo,
   token: userInfo?.token,
   // role: org_info.dept_role.role_id * 1,
   real_name: userInfo?.user_realname,
@@ -38,12 +38,12 @@ export const user = {
   //     RoleMap[k].includes(org_info.dept_role.role_id * 1)
   //   ) || 'None',
   power: userInfo?.power,
-  dept_ids:  userInfo?.dept_ids,
-  dept_id:  userInfo?.dept_id,
-  uo_id:  userInfo?.uo_id,
-  uo_name:  userInfo?.uo_name,
-  user_id:  userInfo?.user_id,
-  user_org:  userInfo?.user_org,
+  dept_ids: userInfo?.dept_ids,
+  dept_id: userInfo?.dept_id,
+  uo_id: userInfo?.uo_id,
+  uo_name: userInfo?.uo_name,
+  user_id: userInfo?.user_id,
+  user_org: userInfo?.user_org,
 }
 export const useUserStore = defineStore('user', {
   state: () => user,