|
@@ -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>
|