zhuf 1 рік тому
батько
коміт
7d073d99b1
2 змінених файлів з 281 додано та 61 видалено
  1. 279 59
      src/pages/tdk/wdtdk.vue
  2. 2 2
      src/styles/main.scss

+ 279 - 59
src/pages/tdk/wdtdk.vue

@@ -1,10 +1,15 @@
 <script setup lang='ts'>
+import { reactive } from 'vue'
+import { userInfo as user } from '~/store/user'
+
 const fieldValue = ref()
 const WeekMap = '一二三四五六日'
 
+let Team_name
 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
+  Team_name = team_name
   return team_id
 })
 
@@ -24,79 +29,294 @@ function onConfirm({ selectedOptions }) {
 
   // queryApi2()
 }
+
+const showDialog = ref(false)
+let dialogForm_Data = $ref({
+  xtw_tklx: '1',
+  id_old: undefined,
+  id_new: undefined,
+  xtw_hdkjsxm: '',
+  xtw_hdkjs_user_id: '',
+  xtw_tkyy: '',
+})
+
+const dialogForm_Data_show = reactive({
+  id_old: '',
+  id_new: '',
+})
+function clearDialogData() {
+  dialogForm_Data = {
+    xtw_tklx: '1',
+    id_old: undefined,
+    id_new: undefined,
+    xtw_hdkjsxm: '',
+    xtw_hdkjs_user_id: '',
+    xtw_tkyy: '',
+  }
+  dialogForm_Data_show.id_old = ''
+  dialogForm_Data_show.id_new = ''
+}
+
+function handleDo() {
+  clearDialogData()
+  showDialog.value = true
+}
+
+const showPicker1 = ref(false)
+const showPicker2 = ref(false)
+const showPicker3 = ref(false)
+
+const pickerLoading1 = ref(false)
+const pickerLoading2 = ref(false)
+const pickerLoading3 = ref(false)
+
+function onConfirm1({ selectedOptions }) {
+  showPicker1.value = false
+  dialogForm_Data_show.id_old = selectedOptions[0].text
+  dialogForm_Data.id_old = selectedOptions[0].value
+
+  const item = selectedOptions[0].item
+
+  dialogForm_Data.xtw_jsxm = item.xjj_xm
+  dialogForm_Data.xtw_tkzc = item.skzc
+  dialogForm_Data.xtw_tkjc = item.skjc
+  dialogForm_Data.xtw_tkxq = item.skxq
+  dialogForm_Data.xtw_tkmc = item.subject_name
+}
+function onConfirm2({ selectedOptions }) {
+  showPicker2.value = false
+  dialogForm_Data_show.id_new = selectedOptions[0].text
+  dialogForm_Data.id_new = selectedOptions[0].value
+
+  const item = selectedOptions[0].item
+  dialogForm_Data.xtw_hdkjsxm = item.xjj_xm
+  dialogForm_Data.xtw_hdkzc = item.skzc
+  dialogForm_Data.xtw_hdkjc = item.skjc
+  dialogForm_Data.xtw_hdkxq = item.skxq
+  dialogForm_Data.xtw_hdkmc = item.subject_name
+}
+function onConfirm3({ selectedOptions }) {
+  showPicker3.value = false
+  dialogForm_Data.xtw_hdkjsxm = selectedOptions[0].text
+  dialogForm_Data.xtw_hdkjs_user_id = selectedOptions[0].value
+}
+
+const columns1 = ref([])
+const columns2 = ref([])
+const columns3 = ref([])
+
+function getLabel({ xjj_xm, skzc, skxq, skjc, subject_name }: any) {
+  return `${xjj_xm} / 第${skzc}周 周${WeekMap[skxq - 1]} 第${skjc}节 / ${subject_name}`
+}
+
+function queryPicker1() {
+  pickerLoading1.value = true
+  request({
+    url: '/xdjx/kbgl_jskbmx/index',
+    data: {
+      xjj_xm: user.user_realname,
+      tkzt: '1,4',
+      team_id,
+      limit: 1000,
+    },
+  }).then((res) => {
+    const d = res.data.page_data
+    columns1.value = d.map((el: any) => ({ text: getLabel(el), value: el.id, item: el }))
+  }).catch((err) => {
+    console.error(err)
+  }).finally(() => {
+    pickerLoading1.value = false
+  })
+}
+queryPicker1()
+
+function queryPicker2() {
+  pickerLoading2.value = true
+  request({
+    url: '/xdjx/kbgl_jskbmx/index',
+    data: {
+      tkzt: '1,4',
+      not_in: user.user_realname,
+      team_id,
+      limit: 1000,
+    },
+  }).then((res) => {
+    const d = res.data.page_data
+    columns2.value = d.map((el: any) => ({ text: getLabel(el), value: el.id, item: el }))
+  }).catch((err) => {
+    console.error(err)
+  }).finally(() => {
+    pickerLoading2.value = false
+  })
+}
+queryPicker2()
+
+function queryPicker3() {
+  pickerLoading3.value = true
+  request({
+    url: '/user/main/index',
+    data: {
+      not_in: user.user_no,
+      user_role_id: '7',
+      dept_id: user.dept_id,
+      limit: 1000,
+    },
+  }).then((res) => {
+    const d = res.data.page_data
+    columns3.value = d.map((el: any) => ({ text: el.user_realname, value: el.user_no }))
+  }).catch((err) => {
+    console.error(err)
+  }).finally(() => {
+    pickerLoading3.value = false
+  })
+}
+queryPicker3()
+
+const listRef = ref()
+function handleConfirmDialog() {
+  request({
+    url: '/xdjx/tdkgl_wdtdk/add',
+    data: {
+      xdjx_tdkgl_wdtdk: {
+        ...dialogForm_Data,
+        team_id,
+        team_name: Team_name,
+        xtw_shzt: '3',
+      },
+    },
+  }).then((res) => {
+    if (res.code === '1') {
+      clearDialogData()
+      showDialog.value = false
+      listRef.value?.refresh()
+    }
+  }).catch((err) => {
+    console.error(err)
+  })
+}
 </script>
 
 <template>
-  <div class="px-2px">
-    <van-field v-model="fieldValue" is-link readonly label="学期" placeholder="选择学期" @click="showPicker = true" />
-  </div>
+  <div class="flex flex-col h-100vh">
+    <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-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 } }"
+    <remote-list
+      ref="listRef" url="/xdjx/tdkgl_wdtdk/index" :d="{
+        team_id: form_team_id,
+        xtw_jsxm: user.user_realname,
+      }" class="text-16px space-x-2 p-4px flex-auto  bg-hex-f2f2f2" k="team_id"
     >
-      <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">
-              调课前:
+      <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>
-            <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>
+            <van-tag type="primary">
+              {{ xtw_shzt === '3' ? '待审核' : xtw_shzt }}
+            </van-tag>
           </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 class="flex justify-between px-4px">
+            <div class="w-4/9">
+              <div class="mb-4px font-bold">
+                调课前:
               </div>
-              <div>
-                {{ xtw_jsxm }}/第{{ xtw_hdkzc }}周 周{{ WeekMap[xtw_hdkxq] }} 第{{ xtw_hdkjc }}节/{{
-                  xtw_tkmc
-                }}
+              <template v-if="xtw_tklx_option_k === '1'">
+                <div>{{ xtw_jsxm }}/第{{ xtw_tkzc }}周 周{{ WeekMap[xtw_tkxq - 1] }} 第{{ xtw_tkjc }}节/{{ xtw_tkmc }}</div>
+              </template>
+              <template v-else>
+                <div class="mb-2px">
+                  {{ xtw_jsxm }}/第{{ xtw_tkzc }}周 周{{ WeekMap[xtw_tkxq - 1] }} 第{{ xtw_tkjc }}节/{{ xtw_tkmc }}
+                </div>
+                <div>
+                  {{ xtw_hdkjsxm }}/第{{ xtw_hdkzc }}周 周{{ WeekMap[xtw_hdkxq - 1] }} 第{{ xtw_hdkjc }}节/{{
+                    xtw_hdkmc
+                  }}
+                </div>
+              </template>
+            </div>
+            <div class="w-4/9">
+              <div class="mb-4px font-bold">
+                调课后:
               </div>
-            </template>
+              <template v-if="xtw_tklx_option_k === '1'">
+                <div>{{ xtw_hdkjsxm }}/第{{ xtw_tkzc }}周 周{{ WeekMap[xtw_tkxq - 1] }} 第{{ xtw_tkjc }}节/{{ xtw_tkmc }}</div>
+              </template>
+              <template v-else>
+                <div class="mb-2px">
+                  {{ xtw_hdkjsxm }}/第{{ xtw_tkzc }}周 周{{ WeekMap[xtw_tkxq - 1] }} 第{{ xtw_tkjc }}节/{{ xtw_hdkmc }}
+                </div>
+                <div>
+                  {{ xtw_jsxm }}/第{{ xtw_hdkzc }}周 周{{ WeekMap[xtw_hdkxq - 1] }} 第{{ xtw_hdkjc }}节/{{
+                    xtw_tkmc
+                  }}
+                </div>
+              </template>
+            </div>
           </div>
         </div>
-      </div>
-    </template>
-  </remote-list>
+      </template>
+    </remote-list>
+    <div class="flex">
+      <van-button type="primary" square class="w-full" @click="handleDo">
+        申请调代课
+      </van-button>
+    </div>
+  </div>
+
+  <van-dialog v-model:show="showDialog" title="申请调代课" show-cancel-button width="90vw" @confirm="handleConfirmDialog">
+    <van-form>
+      <van-cell-group inset>
+        <van-field
+          v-model="dialogForm_Data_show.id_old" is-link readonly name="id_old" label="调课名称"
+          placeholder="点击选择调课名称" @click="showPicker1 = true"
+        />
+
+        <van-field name="xtw_tklx" label="调课类型">
+          <template #input>
+            <van-radio-group v-model="dialogForm_Data.xtw_tklx" direction="horizontal">
+              <van-radio name="1">
+                调代课
+              </van-radio>
+              <van-radio name="2">
+                调换课
+              </van-radio>
+            </van-radio-group>
+          </template>
+        </van-field>
+
+        <van-field
+          v-show="dialogForm_Data.xtw_tklx === '2'" v-model="dialogForm_Data_show.id_new" is-link readonly
+          name="id_new" label="换课名称" placeholder="点击选择换课名称" @click="showPicker2 = true"
+        />
+
+        <van-field
+          v-show="dialogForm_Data.xtw_tklx === '1'" v-model="dialogForm_Data.xtw_hdkjsxm" is-link readonly
+          name="xtw_hdkjsxm" label="代课教师" placeholder="点击选择代课教师" @click="showPicker3 = true"
+        />
+
+        <van-field v-model="dialogForm_Data.xtw_tkyy" name="xtw_tkyy" label="调课原因" type="textarea" autosize />
+      </van-cell-group>
+    </van-form>
+  </van-dialog>
+  <van-popup v-model:show="showPicker1" position="bottom">
+    <van-picker :columns="columns1" :loading="pickerLoading1" @confirm="onConfirm1" @cancel="showPicker1 = false" />
+  </van-popup> <van-popup v-model:show="showPicker2" position="bottom">
+    <van-picker :columns="columns2" :loading="pickerLoading2" @confirm="onConfirm2" @cancel="showPicker2 = false" />
+  </van-popup><van-popup v-model:show="showPicker3" position="bottom">
+    <van-picker :columns="columns3" :loading="pickerLoading3" @confirm="onConfirm3" @cancel="showPicker3 = false" />
+  </van-popup>
 </template>
 
 <style lang="scss" scoped>

+ 2 - 2
src/styles/main.scss

@@ -9,7 +9,7 @@ body,
 }
 
 body {
-  padding-top: 1vh;
+  // padding-top: 1vh;
   background-color: #f2f2f2;
 }
 
@@ -24,5 +24,5 @@ html.dark {
 
 // 解决苹果手机点击input框放大的问题
 input {
-  font-size: 16px !important;
+  font-size: 14px !important;
 }