tdksh.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. <script setup lang="ts">
  2. import { ref, getCurrentInstance, reactive } from "vue";
  3. import { useRouter } from "vue-router";
  4. import request, { download } from '~/utils/request';
  5. import { pick } from 'lodash-es';
  6. import { ElMessage } from 'element-plus'
  7. import type { FormInstance, FormRules } from 'element-plus'
  8. import type { AxiosRequestConfig } from 'axios'
  9. // #region (constant)
  10. const TABLE_KEY = 'xtw_id'
  11. const URL_CUT = '/xdjx/tdkgl_wdtdk'
  12. const URL_CUT_REF = ref(URL_CUT)
  13. const URL_SUBMIT_KEY = URL_CUT.split('/').join('_').slice(1)
  14. const instance = getCurrentInstance()
  15. const router = useRouter()
  16. // #endregion
  17. // #region (variable)
  18. const loading_table = ref(true)
  19. let whichDialogSubmit: 'add' | 'edit'
  20. // #endregion
  21. const WeekMap = '一二三四五六日'
  22. // #region (type)
  23. type TYPE_TABLE_FIELD = {
  24. [TABLE_KEY]: string;
  25. 'xtw_jsxm': string; // 申请教师姓名
  26. 'xtw_jsxm_user_id': string; // 申请教师用户编号
  27. 'team_id': string; // 学期编号
  28. 'team_name': string; // 学期名称
  29. 'xtw_tkzc': string; // 调课周次
  30. 'xtw_zcsj': string; // 调课周次时间
  31. 'xtw_tkjc': string; // 调课节次
  32. 'xtw_tkxq': string; // 调课星期
  33. 'xtw_tkmc': string; // 调课名称
  34. 'xtw_tkyy': string; // 调课原因
  35. 'xtw_tklx': string; // 调课类型
  36. 'xtw_hdkjc': string; // 换代课节次
  37. 'xtw_hdkjs_user_id': string; // 换代课教师用户编号
  38. 'xtw_hdkxq': string; // 换代课星期
  39. 'xtw_hdkmc': string; // 换代课名称
  40. 'xtw_hdkjsxm': string; // 换代课教师姓名
  41. 'xtw_hdkzc': string; // 换代课周次
  42. 'xtw_hdkzcsj': string; // 换代课周次时间
  43. 'xtw_shzt': string; // 审核状态
  44. 'id_old': string; //
  45. 'id_new': string; //
  46. }
  47. // #endregion
  48. // #region (props)
  49. // #endregion
  50. // #region (query row)
  51. const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
  52. const handleQueryFormBtn_search = () => {
  53. queryApi()
  54. }
  55. const handleQueryFormBtn_clear = () => {
  56. queryForm_Data.value = {}
  57. }
  58. // #endregion
  59. // #region (table selection)
  60. const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
  61. const handleSelectionChange = (val: TYPE_TABLE_FIELD[]) => {
  62. multipleSelection.value = val
  63. }
  64. // #endregion
  65. // #region (table row)
  66. const handleTableRowBtn_import = async ({ file }: { file: File }) => {
  67. const res = await API_MAP['import']({ file })
  68. if (res.code === '1') {
  69. queryApi()
  70. ElMessage.success(res.msg)
  71. }
  72. }
  73. const handleTableRowBtn_export = () => {
  74. if (multipleSelection.value.length === 0) return ElMessage.info('请先勾选导出文件'); exportApi({ [TABLE_KEY]: multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY])?.join() })
  75. }
  76. const handleTableRowBtn_add = () => {
  77. whichDialogSubmit = 'add'
  78. dialogForm_Data.value = {}
  79. dialogVisible_addOrEdit.value = true
  80. }
  81. const handleTableRowBtn_delete = async () => {
  82. if (multipleSelection.value.length === 0) return ElMessage.info('请先勾选文件'); const resp = await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY])); if (resp.code !== '1') return; ElMessage.success('删除成功');
  83. queryApi()
  84. }
  85. // #endregion
  86. // #region (table body)
  87. const tableData = ref<TYPE_TABLE_FIELD[]>([])
  88. const DetailName = '-TDKGL-WDTDK'
  89. const DetailParam = 'aid'
  90. const handleTableColBtn_edit = async (scope: { row: TYPE_TABLE_FIELD }) => {
  91. whichDialogSubmit = 'edit'
  92. const res = await detailApi(scope.row[TABLE_KEY])
  93. dialogForm_Data.value = (res.data.one_info)
  94. dialogVisible_addOrEdit.value = true
  95. }
  96. const handleTableColBtn_audit = (scope: { row: TYPE_TABLE_FIELD }) => {
  97. whichDialogSubmit = 'edit'
  98. dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
  99. dialogVisible_audit.value = true
  100. }
  101. const handleTableColBtn_detail = (scope: { row: TYPE_TABLE_FIELD }) => {
  102. router.push({ name: DetailName, params: { [DetailParam]: scope.row[TABLE_KEY] } })
  103. }
  104. const handleTableColBtn_delete = async (scope: { row: TYPE_TABLE_FIELD }) => {
  105. const resp = await deleteApi(scope.row[TABLE_KEY]); if (resp.code !== '1') return; ElMessage.success('删除成功');
  106. queryApi()
  107. }
  108. // #endregion
  109. // #region (pagination)
  110. const total = ref(0)
  111. const limit = ref(10)
  112. const currentPage = ref(1)
  113. function handleCurrentChange() {
  114. queryApi()
  115. }
  116. // #endregion
  117. // #region (dialog base)
  118. const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
  119. const handleDialogFormBtn_submit = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
  120. const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
  121. if (isValid) {
  122. const resp = await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({ ...dialogForm_Data.value, ...extendData }))
  123. if (resp.code !== '1') return; ElMessage.success('操作成功'); handleDialogFormBtn_cancel()
  124. queryApi()
  125. if (formRefKey === 'dialogForm_Ref_audit') {
  126. ElMessage.success('已提醒相关老师')
  127. }
  128. }
  129. }
  130. const handleTableColBtn_audit1 = async (scope: { row: TYPE_TABLE_FIELD }) => {
  131. const resp = await editApi({ [TABLE_KEY]: scope.row[TABLE_KEY], xtw_shzt: '1' })
  132. if (resp.code !== '1') return;
  133. queryApi()
  134. ElMessage.success('已提醒相关老师')
  135. }
  136. const handleTableColBtn_audit2 = async (scope: { row: TYPE_TABLE_FIELD }) => {
  137. const resp = await editApi({ [TABLE_KEY]: scope.row[TABLE_KEY], xtw_shzt: '2' })
  138. if (resp.code !== '1') return;
  139. queryApi()
  140. ElMessage.success('已提醒相关老师')
  141. }
  142. const handleDialogFormBtn_cancel = (formRefKey?: string) => {
  143. dialogVisible_addOrEdit.value = false
  144. dialogVisible_audit.value = false
  145. }
  146. // #endregion
  147. // #region (dialog add/edit)
  148. const dialogVisible_addOrEdit = ref<boolean>(false)
  149. const dialogForm_Ref_addOrEdit = ref<FormInstance>()
  150. const dialogForm_Rules_addOrEdit = reactive({
  151. // 'xtw_jsxm': { required: true, message: '申请教师姓名不能为空', trigger: 'submit' },
  152. // 'xtw_jsxm_user_id': { required: true, message: '申请教师用户编号不能为空', trigger: 'submit' },
  153. // 'team_id': { required: true, message: '学期编号不能为空', trigger: 'submit' },
  154. // 'team_name': { required: true, message: '学期名称不能为空', trigger: 'submit' },
  155. // 'xtw_tkzc': { required: true, message: '调课周次不能为空', trigger: 'submit' },
  156. // 'xtw_zcsj': { required: true, message: '调课周次时间不能为空', trigger: 'submit' },
  157. // 'xtw_tkjc': { required: true, message: '调课节次不能为空', trigger: 'submit' },
  158. // 'xtw_tkxq': { required: true, message: '调课星期不能为空', trigger: 'submit' },
  159. // 'xtw_tkmc': { required: true, message: '调课名称不能为空', trigger: 'submit' },
  160. // 'xtw_tkyy': { required: true, message: '调课原因不能为空', trigger: 'submit' },
  161. // 'xtw_tklx': { required: true, message: '调课类型不能为空', trigger: 'submit' },
  162. // 'xtw_hdkjc': { required: true, message: '换代课节次不能为空', trigger: 'submit' },
  163. // 'xtw_hdkjs_user_id': { required: true, message: '换代课教师用户编号不能为空', trigger: 'submit' },
  164. // 'xtw_hdkxq': { required: true, message: '换代课星期不能为空', trigger: 'submit' },
  165. // 'xtw_hdkmc': { required: true, message: '换代课名称不能为空', trigger: 'submit' },
  166. // 'xtw_hdkjsxm': { required: true, message: '换代课教师姓名不能为空', trigger: 'submit' },
  167. // 'xtw_hdkzc': { required: true, message: '换代课周次不能为空', trigger: 'submit' },
  168. // 'xtw_hdkzcsj': { required: true, message: '换代课周次时间不能为空', trigger: 'submit' },
  169. 'xtw_shzt': { required: true, message: '审核状态不能为空', trigger: 'submit' },
  170. })
  171. // #endregion
  172. // #region (dialog audit)
  173. const dialogVisible_audit = ref<boolean>(false)
  174. const dialogForm_Field_audit = reactive<{
  175. FLAG: keyof TYPE_TABLE_FIELD,
  176. REASON?: keyof TYPE_TABLE_FIELD
  177. }>({
  178. FLAG: 'xtw_shzt',
  179. })
  180. const dialogForm_Ref_audit = ref<FormInstance>()
  181. const dialogForm_Rules_audit = reactive<FormRules>({
  182. 'xtw_jsxm': { required: true, message: '申请教师姓名不能为空', trigger: 'submit' },
  183. 'xtw_jsxm_user_id': { required: true, message: '申请教师用户编号不能为空', trigger: 'submit' },
  184. 'team_id': { required: true, message: '学期编号不能为空', trigger: 'submit' },
  185. 'team_name': { required: true, message: '学期名称不能为空', trigger: 'submit' },
  186. 'xtw_tkzc': { required: true, message: '调课周次不能为空', trigger: 'submit' },
  187. 'xtw_zcsj': { required: true, message: '调课周次时间不能为空', trigger: 'submit' },
  188. 'xtw_tkjc': { required: true, message: '调课节次不能为空', trigger: 'submit' },
  189. 'xtw_tkxq': { required: true, message: '调课星期不能为空', trigger: 'submit' },
  190. 'xtw_tkmc': { required: true, message: '调课名称不能为空', trigger: 'submit' },
  191. 'xtw_tkyy': { required: true, message: '调课原因不能为空', trigger: 'submit' },
  192. 'xtw_tklx': { required: true, message: '调课类型不能为空', trigger: 'submit' },
  193. 'xtw_hdkjc': { required: true, message: '换代课节次不能为空', trigger: 'submit' },
  194. 'xtw_hdkjs_user_id': { required: true, message: '换代课教师用户编号不能为空', trigger: 'submit' },
  195. 'xtw_hdkxq': { required: true, message: '换代课星期不能为空', trigger: 'submit' },
  196. 'xtw_hdkmc': { required: true, message: '换代课名称不能为空', trigger: 'submit' },
  197. 'xtw_hdkjsxm': { required: true, message: '换代课教师姓名不能为空', trigger: 'submit' },
  198. 'xtw_hdkzc': { required: true, message: '换代课周次不能为空', trigger: 'submit' },
  199. 'xtw_hdkzcsj': { required: true, message: '换代课周次时间不能为空', trigger: 'submit' },
  200. 'xtw_shzt': { required: true, message: '审核状态不能为空', trigger: 'submit' },
  201. })
  202. // #endregion
  203. // #region (request api):
  204. function queryApi() {
  205. loading_table.value = true
  206. return request({
  207. url: URL_CUT + '/index',
  208. data: {
  209. ...queryForm_Data.value,
  210. limit: limit.value,
  211. page: currentPage.value
  212. }
  213. }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
  214. const { data } = response
  215. total.value = parseInt(data.total_rows)
  216. tableData.value = data.page_data
  217. return response
  218. }).then(() => {
  219. loading_table.value = false
  220. })
  221. }
  222. function addApi(data: TYPE_TABLE_FIELD) {
  223. return request({
  224. url: URL_CUT + '/add',
  225. data: {
  226. [URL_SUBMIT_KEY]: data,
  227. }
  228. })
  229. }
  230. function editApi(data: Partial<TYPE_TABLE_FIELD>) {
  231. return request({
  232. url: URL_CUT + '/edit',
  233. data: {
  234. [TABLE_KEY]: data[TABLE_KEY],
  235. [URL_SUBMIT_KEY]: pick(data, ['xtw_jsxm', 'xtw_jsxm_user_id', 'team_id', 'team_name', 'xtw_tkzc', 'xtw_zcsj', 'xtw_tkjc', 'xtw_tkxq', 'xtw_tkmc', 'xtw_tkyy', 'xtw_tklx', 'xtw_hdkjc', 'xtw_hdkjs_user_id', 'xtw_hdkxq', 'xtw_hdkmc', 'xtw_hdkjsxm', 'xtw_hdkzc', 'xtw_hdkzcsj', 'xtw_shzt', 'id_old', 'id_new',]),
  236. }
  237. })
  238. }
  239. function deleteApi(id: string | string[]) {
  240. return request({
  241. url: URL_CUT + '/delete',
  242. data: {
  243. [TABLE_KEY]: id,
  244. }
  245. })
  246. }
  247. function detailApi(id: string) {
  248. return request({
  249. url: URL_CUT + '/detail',
  250. data: {
  251. [TABLE_KEY]: id,
  252. }
  253. })
  254. }
  255. function importApi(data: { file: File }) {
  256. return request({
  257. $type: 'import',
  258. url: URL_CUT + '/import',
  259. data
  260. } as AxiosRequestConfig)
  261. }
  262. function exportApi(d) {
  263. return download(URL_CUT + '/index', { ...queryForm_Data.value, ...d })
  264. }
  265. const API_MAP = {
  266. query: queryApi,
  267. add: addApi,
  268. edit: editApi,
  269. delete: deleteApi,
  270. detail: detailApi,
  271. import: importApi,
  272. export: exportApi,
  273. }
  274. // #endregion
  275. // #region (page init)
  276. function init() {
  277. queryApi()
  278. }
  279. init()
  280. // #endregion
  281. </script>
  282. <template>
  283. <div class="card flex-grow flex flex-col">
  284. <el-form inline :model="queryForm_Data">
  285. <el-form-item label="申请教师姓名">
  286. <el-input v-model="queryForm_Data.xtw_jsxm" clearable />
  287. </el-form-item>
  288. <!-- <el-form-item label="申请教师用户编号"><el-input v-model="queryForm_Data.xtw_jsxm_user_id" clearable /></el-form-item>
  289. <el-form-item label="学期编号"><el-input v-model="queryForm_Data.team_id" clearable /></el-form-item> -->
  290. <!-- <el-form-item label="学期名称"><el-input v-model="queryForm_Data.team_name" clearable /></el-form-item> -->
  291. <!-- <el-form-item label="调课周次"><el-input v-model="queryForm_Data.xtw_tkzc" clearable /></el-form-item>
  292. <el-form-item label="调课周次时间"><el-input v-model="queryForm_Data.xtw_zcsj" clearable /></el-form-item>
  293. <el-form-item label="调课节次"><el-input v-model="queryForm_Data.xtw_tkjc" clearable /></el-form-item>
  294. <el-form-item label="调课星期"><el-input v-model="queryForm_Data.xtw_tkxq" clearable /></el-form-item>
  295. <el-form-item label="调课名称"><el-input v-model="queryForm_Data.xtw_tkmc" clearable /></el-form-item>
  296. <el-form-item label="调课原因"><el-input v-model="queryForm_Data.xtw_tkyy" type="textarea" /></el-form-item>
  297. <el-form-item label="调课类型"><el-select v-model="queryForm_Data.xtw_tklx" clearable ><el-option label="调代课" value="1" /><el-option label="调换课" value="2" /></el-select></el-form-item>
  298. <el-form-item label="换代课节次"><el-input v-model="queryForm_Data.xtw_hdkjc" clearable /></el-form-item>
  299. <el-form-item label="换代课教师用户编号"><el-input v-model="queryForm_Data.xtw_hdkjs_user_id" clearable /></el-form-item>
  300. <el-form-item label="换代课星期"><el-input v-model="queryForm_Data.xtw_hdkxq" clearable /></el-form-item>
  301. <el-form-item label="换代课名称"><el-input v-model="queryForm_Data.xtw_hdkmc" clearable /></el-form-item>
  302. <el-form-item label="换代课教师姓名"><el-input v-model="queryForm_Data.xtw_hdkjsxm" clearable /></el-form-item>
  303. <el-form-item label="换代课周次"><el-input v-model="queryForm_Data.xtw_hdkzc" clearable /></el-form-item>
  304. <el-form-item label="换代课周次时间"><el-input v-model="queryForm_Data.xtw_hdkzcsj" clearable /></el-form-item>
  305. <el-form-item label="审核状态"><el-select v-model="queryForm_Data.xtw_shzt" clearable ><el-option label="通过" value="1" /><el-option label="不通过" value="2" /></el-select></el-form-item> -->
  306. <el-form-item>
  307. <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
  308. <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
  309. </el-form-item>
  310. </el-form>
  311. <!--<div class="divider"></div>
  312. <div>
  313. <!~~ <import-button @success="queryApi" :url="URL_CUT_REF"></import-button> ~~>
  314. <el-button @click="handleTableRowBtn_export" type="success">导出</el-button>
  315. <!~~ <el-button @click="handleTableRowBtn_add" type="primary">新增</el-button>
  316. <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button> ~~>
  317. </div>-->
  318. <div class="divider"></div>
  319. <div class="flex-auto">
  320. <el-table :data="tableData" @selection-change="handleSelectionChange" v-loading="loading_table"
  321. element-loading-background="#ffffff70">
  322. <!-- <el-table-column type="selection"></el-table-column> -->
  323. <el-table-column type="index" label="序号" width="60" :index="(i: number) => (currentPage - 1) * limit + i + 1" />
  324. <el-table-column prop="xtw_jsxm" label="申请教师" width="120" show-overflow-tooltip></el-table-column>
  325. <!-- <el-table-column prop="xtw_jsxm_user_id" label="申请教师用户编号" width="auto" show-overflow-tooltip></el-table-column> -->
  326. <!-- <el-table-column prop="team_id" label="学期编号" width="auto" show-overflow-tooltip></el-table-column> -->
  327. <el-table-column prop="team_name" label="学期" width="140" show-overflow-tooltip></el-table-column>
  328. <!-- <el-table-column label="调课" width="500" show-overflow-tooltip>
  329. <template #default="{ row: { xtw_jsxm, xtw_tkzc, xtw_zcsj, xtw_tkjc, xtw_tkxq, xtw_tkmc } }">
  330. {{ xtw_jsxm }}-{{ xtw_tkzc }}-{{ xtw_zcsj }}-{{ xtw_tkjc }}-{{ xtw_tkxq }}-{{ xtw_tkmc }}
  331. </template>
  332. </el-table-column> -->
  333. <el-table-column label="调课前" width="auto" show-overflow-tooltip>
  334. <template
  335. #default="{ row: { 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 } }">
  336. <template v-if="xtw_tklx_option_k === '1'">
  337. {{ xtw_jsxm }} / 第{{ xtw_tkzc }}周 星期{{ WeekMap[xtw_tkxq - 1] }} 第{{ xtw_tkjc }}节 / {{ xtw_tkmc }}
  338. </template>
  339. <template v-else>
  340. <div>
  341. {{ xtw_jsxm }} / 第{{ xtw_tkzc }}周 星期{{ WeekMap[xtw_tkxq - 1] }} 第{{ xtw_tkjc }}节 / {{ xtw_tkmc }}
  342. </div>
  343. <div>
  344. {{ xtw_hdkjsxm }} / 第{{ xtw_hdkzc }}周 星期{{ WeekMap[xtw_hdkxq - 1] }} 第{{ xtw_hdkjc }}节 / {{
  345. xtw_hdkmc
  346. }}
  347. </div>
  348. </template>
  349. </template>
  350. </el-table-column>
  351. <el-table-column label="调课后" width="auto" show-overflow-tooltip>
  352. <template
  353. #default="{ row: { xtw_tklx_option_k, xtw_hdkjsxm, xtw_hdkzc, xtw_hdkzcsj, xtw_hdkjc, xtw_hdkxq, xtw_hdkmc, xtw_jsxm, xtw_tkzc, xtw_zcsj, xtw_tkjc, xtw_tkxq, xtw_tkmc } }">
  354. <template v-if="xtw_tklx_option_k === '1'">
  355. {{ xtw_hdkjsxm }} / 第{{ xtw_tkzc }}周 星期{{ WeekMap[xtw_tkxq - 1] }} 第{{ xtw_tkjc }}节 / {{ xtw_tkmc }}
  356. </template>
  357. <template v-else>
  358. <div>
  359. {{ xtw_hdkjsxm }} / 第{{ xtw_tkzc }}周 星期{{ WeekMap[xtw_tkxq - 1] }} 第{{ xtw_tkjc }}节 / {{ xtw_hdkmc }}
  360. </div>
  361. <div>
  362. {{ xtw_jsxm }} / 第{{ xtw_hdkzc }}周 星期{{ WeekMap[xtw_hdkxq - 1] }} 第{{ xtw_hdkjc }}节 / {{
  363. xtw_tkmc
  364. }}
  365. </div>
  366. </template>
  367. </template>
  368. </el-table-column>
  369. <!-- <el-table-column prop="xtw_hdkjs_user_id" label="换代课教师用户编号" width="auto" show-overflow-tooltip></el-table-column>
  370. <el-table-column prop="xtw_hdkjc" label="换代课节次" width="auto" show-overflow-tooltip></el-table-column>
  371. <el-table-column prop="xtw_hdkxq" label="换代课星期" width="auto" show-overflow-tooltip></el-table-column>
  372. <el-table-column prop="xtw_hdkmc" label="换代课名称" width="auto" show-overflow-tooltip></el-table-column>
  373. <el-table-column prop="xtw_hdkjsxm" label="换代课教师姓名" width="auto" show-overflow-tooltip></el-table-column>
  374. <el-table-column prop="xtw_hdkzc" label="换代课周次" width="auto" show-overflow-tooltip></el-table-column>
  375. <el-table-column prop="xtw_hdkzcsj" label="换代课周次时间" width="auto" show-overflow-tooltip></el-table-column> -->
  376. <el-table-column prop="xtw_tklx" label="调课类型" width="100" show-overflow-tooltip></el-table-column>
  377. <el-table-column prop="xtw_tkyy" label="调课原因" width="120" show-overflow-tooltip></el-table-column>
  378. <el-table-column prop="xtw_shzt" label="审核状态" width="100" show-overflow-tooltip>
  379. <template #default="scope">
  380. <span v-if="scope.row.xtw_shzt === '3'">待审核</span>
  381. <span v-else>{{ scope.row.xtw_shzt }}</span>
  382. </template>
  383. </el-table-column>
  384. <el-table-column label="操作" fixed="right">
  385. <template #default="scope">
  386. <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary" >编辑</el-button> -->
  387. <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary"
  388. :disabled="scope.row.xtw_shzt !== '3'">审核
  389. </el-button> -->
  390. <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit1(scope)" type="primary"
  391. :disabled="scope.row.xtw_shzt !== '3'">通过
  392. </el-button>
  393. <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit2(scope)" type="primary"
  394. :disabled="scope.row.xtw_shzt !== '3'">不通过
  395. </el-button>
  396. <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button> -->
  397. <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除</el-button> -->
  398. </template>
  399. </el-table-column>
  400. </el-table>
  401. </div>
  402. <div class="flex justify-end mt-10 py-4">
  403. <el-pagination :page-size="limit" v-model:current-page="currentPage" @current-change="handleCurrentChange"
  404. background layout="total, prev, pager, next" :total="total" />
  405. </div>
  406. </div>
  407. <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
  408. <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit"
  409. label-width="120px">
  410. <el-form-item label="申请教师姓名" prop="xtw_jsxm">
  411. <el-input v-model="dialogForm_Data.xtw_jsxm" clearable />
  412. </el-form-item>
  413. <el-form-item label="申请教师用户编号" prop="xtw_jsxm_user_id">
  414. <el-input v-model="dialogForm_Data.xtw_jsxm_user_id" clearable />
  415. </el-form-item>
  416. <el-form-item label="学期编号" prop="team_id">
  417. <el-input v-model="dialogForm_Data.team_id" clearable />
  418. </el-form-item>
  419. <el-form-item label="学期名称" prop="team_name">
  420. <el-input v-model="dialogForm_Data.team_name" clearable />
  421. </el-form-item>
  422. <el-form-item label="调课周次" prop="xtw_tkzc">
  423. <el-input v-model="dialogForm_Data.xtw_tkzc" clearable />
  424. </el-form-item>
  425. <el-form-item label="调课周次时间" prop="xtw_zcsj">
  426. <el-input v-model="dialogForm_Data.xtw_zcsj" clearable />
  427. </el-form-item>
  428. <el-form-item label="调课节次" prop="xtw_tkjc">
  429. <el-input v-model="dialogForm_Data.xtw_tkjc" clearable />
  430. </el-form-item>
  431. <el-form-item label="调课星期" prop="xtw_tkxq">
  432. <el-input v-model="dialogForm_Data.xtw_tkxq" clearable />
  433. </el-form-item>
  434. <el-form-item label="调课名称" prop="xtw_tkmc">
  435. <el-input v-model="dialogForm_Data.xtw_tkmc" clearable />
  436. </el-form-item>
  437. <el-form-item label="调课原因" prop="xtw_tkyy">
  438. <el-input v-model="dialogForm_Data.xtw_tkyy" type="textarea" />
  439. </el-form-item>
  440. <el-form-item label="调课类型" prop="xtw_tklx">
  441. <el-radio-group v-model="dialogForm_Data.xtw_tklx">
  442. <el-radio label="1">调代课</el-radio>
  443. <el-radio label="2">调换课</el-radio>
  444. </el-radio-group>
  445. </el-form-item>
  446. <el-form-item label="换代课节次" prop="xtw_hdkjc">
  447. <el-input v-model="dialogForm_Data.xtw_hdkjc" clearable />
  448. </el-form-item>
  449. <el-form-item label="换代课教师用户编号" prop="xtw_hdkjs_user_id">
  450. <el-input v-model="dialogForm_Data.xtw_hdkjs_user_id" clearable />
  451. </el-form-item>
  452. <el-form-item label="换代课星期" prop="xtw_hdkxq">
  453. <el-input v-model="dialogForm_Data.xtw_hdkxq" clearable />
  454. </el-form-item>
  455. <el-form-item label="换代课名称" prop="xtw_hdkmc">
  456. <el-input v-model="dialogForm_Data.xtw_hdkmc" clearable />
  457. </el-form-item>
  458. <el-form-item label="换代课教师姓名" prop="xtw_hdkjsxm">
  459. <el-input v-model="dialogForm_Data.xtw_hdkjsxm" clearable />
  460. </el-form-item>
  461. <el-form-item label="换代课周次" prop="xtw_hdkzc">
  462. <el-input v-model="dialogForm_Data.xtw_hdkzc" clearable />
  463. </el-form-item>
  464. <el-form-item label="换代课周次时间" prop="xtw_hdkzcsj">
  465. <el-input v-model="dialogForm_Data.xtw_hdkzcsj" clearable />
  466. </el-form-item>
  467. <el-form-item label="审核状态" prop="xtw_shzt">
  468. <el-radio-group v-model="dialogForm_Data.xtw_shzt">
  469. <el-radio label="1">通过</el-radio>
  470. <el-radio label="2">不通过</el-radio>
  471. </el-radio-group>
  472. </el-form-item>
  473. <div class="flex justify-center">
  474. <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
  475. <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>
  476. </div>
  477. </el-form>
  478. </el-dialog>
  479. <el-dialog v-model="dialogVisible_audit" append-to-body destroy-on-close>
  480. <el-form :model="dialogForm_Data" ref="dialogForm_Ref_audit" :rules="dialogForm_Rules_audit" label-width="120px">
  481. <el-form-item label="状态">
  482. <el-radio-group v-model="dialogForm_Data[dialogForm_Field_audit.FLAG]">
  483. <el-radio label="1">通过</el-radio>
  484. <el-radio label="2">未通过</el-radio>
  485. </el-radio-group>
  486. </el-form-item>
  487. <!-- <el-form-item label="原因" v-show="dialogForm_Data[dialogForm_Field_audit.FLAG] === '1'">
  488. <el-input type="textarea" v-model="dialogForm_Data[dialogForm_Field_audit.REASON]" :rows="5" />
  489. </el-form-item> -->
  490. <div class="flex justify-center">
  491. <el-button
  492. @click="handleDialogFormBtn_submit('dialogForm_Ref_audit', { xtw_tklx: (dialogForm_Data as any).xtw_tklx_option_k })"
  493. type="primary">提交</el-button>
  494. <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_audit')" type="default">取消</el-button>
  495. </div>
  496. </el-form>
  497. </el-dialog>
  498. </template>