xkqk.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  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 = 'xsxx_id'
  11. const URL_CUT = '/xdjx/stxkgl_xktj_xkqk'
  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. // #region (type)
  22. type TYPE_TABLE_FIELD = {
  23. [TABLE_KEY]: string;
  24. 'xsxx_xsxm': string; // 学生姓名
  25. 'xsxx_xsxh': string; // 学生学号
  26. 'grade_id': string; // 年级编号
  27. 'grade_name': string; // 年级名称
  28. 'class_id': string; // 班级编号
  29. 'class_name': string; // 班级名称
  30. 'xsxx_xzkc': string; // 选择课程
  31. 'xsxx_rkjs': string; // 任课教师
  32. 'xsxx_sksj': string; // 上课时间
  33. 'xsxk_id': string; // 所属课程编号
  34. }
  35. // #endregion
  36. // #region (props)
  37. const props = defineProps<{
  38. aid: string,
  39. }>()
  40. // #endregion
  41. // #region (query row)
  42. const queryForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
  43. const handleQueryFormBtn_search = () => {
  44. queryApi()
  45. }
  46. const handleQueryFormBtn_clear = () => {
  47. queryForm_Data.value = {}
  48. }
  49. // #endregion
  50. // #region (table selection)
  51. const multipleSelection = ref<TYPE_TABLE_FIELD[]>([])
  52. const handleSelectionChange = (val: TYPE_TABLE_FIELD[]) => {
  53. multipleSelection.value = val
  54. }
  55. // #endregion
  56. // #region (table row)
  57. const handleTableRowBtn_import = async ({ file }: { file: File }) => {
  58. const res = await API_MAP['import']({ file })
  59. if (res.code === '1') {
  60. queryApi()
  61. ElMessage.success(res.msg)
  62. }
  63. }
  64. const handleTableRowBtn_export = () => {
  65. exportApi()
  66. }
  67. const handleTableRowBtn_add = () => {
  68. whichDialogSubmit = 'add'
  69. dialogForm_Data.value = {}
  70. dialogVisible_addOrEdit.value = true
  71. }
  72. const handleTableRowBtn_delete = async () => {
  73. await deleteApi(multipleSelection.value.map((item: TYPE_TABLE_FIELD) => item[TABLE_KEY]))
  74. queryApi()
  75. }
  76. // #endregion
  77. // #region (table body)
  78. const tableData = ref<TYPE_TABLE_FIELD[]>([])
  79. const DetailName = '-STXKGL-XKTJ-XKQK'
  80. const DetailParam = 'aid'
  81. const handleTableColBtn_edit = async (scope: { row: TYPE_TABLE_FIELD }) => {
  82. whichDialogSubmit = 'edit'
  83. const res = await detailApi(scope.row[TABLE_KEY])
  84. dialogForm_Data.value = (res.data.one_info)
  85. dialogVisible_addOrEdit.value = true
  86. }
  87. const handleTableColBtn_audit = (scope: { row: TYPE_TABLE_FIELD }) => {
  88. whichDialogSubmit = 'edit'
  89. dialogForm_Data.value = pick(scope.row, [`${TABLE_KEY}`, ...Object.keys(dialogForm_Rules_audit)])
  90. dialogVisible_audit.value = true
  91. }
  92. const handleTableColBtn_detail = (scope: { row: TYPE_TABLE_FIELD }) => {
  93. router.push({ name: DetailName, params: { [DetailParam]: scope.row[TABLE_KEY] } })
  94. }
  95. const handleTableColBtn_delete = async (scope: { row: TYPE_TABLE_FIELD }) => {
  96. await deleteApi(scope.row[TABLE_KEY])
  97. queryApi()
  98. }
  99. // #endregion
  100. // #region (pagination)
  101. const total = ref(0)
  102. const limit = ref(10)
  103. const currentPage = ref(1)
  104. function handleCurrentChange() {
  105. queryApi()
  106. }
  107. // #endregion
  108. // #region (dialog base)
  109. const dialogForm_Data = ref<Partial<TYPE_TABLE_FIELD> & { keyword?: string }>({})
  110. const handleDialogFormBtn_submit = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
  111. const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
  112. if (isValid) {
  113. await API_MAP[whichDialogSubmit](<TYPE_TABLE_FIELD>({ ...dialogForm_Data.value, ...extendData }))
  114. handleDialogFormBtn_cancel()
  115. queryApi()
  116. }
  117. }
  118. const handleDialogFormBtn_cancel = (formRefKey?: string) => {
  119. dialogVisible_addOrEdit.value = false
  120. dialogVisible_audit.value = false
  121. dialogVisible_move.value = false
  122. }
  123. // #endregion
  124. // #region (dialog add/edit)
  125. const dialogVisible_addOrEdit = ref<boolean>(false)
  126. const dialogForm_Ref_addOrEdit = ref<FormInstance>()
  127. const dialogForm_Rules_addOrEdit = reactive({
  128. 'xsxx_xsxm': { required: true, message: '学生姓名不能为空', trigger: 'submit' },
  129. 'grade_id': { required: true, message: '年级编号不能为空', trigger: 'submit' },
  130. 'grade_name': { required: true, message: '年级名称不能为空', trigger: 'submit' },
  131. 'class_id': { required: true, message: '班级编号不能为空', trigger: 'submit' },
  132. 'class_name': { required: true, message: '班级名称不能为空', trigger: 'submit' },
  133. 'xsxx_xzkc': { required: true, message: '选择课程不能为空', trigger: 'submit' },
  134. 'xsxx_rkjs': { required: true, message: '任课教师不能为空', trigger: 'submit' },
  135. 'xsxx_sksj': { required: true, message: '上课时间不能为空', trigger: 'submit' },
  136. 'xsxk_id': { required: true, message: '所属课程编号不能为空', trigger: 'submit' },
  137. })
  138. // #endregion
  139. // #region (dialog audit)
  140. const dialogVisible_audit = ref<boolean>(false)
  141. const dialogForm_Field_audit = reactive<{
  142. FLAG: keyof TYPE_TABLE_FIELD,
  143. REASON?: keyof TYPE_TABLE_FIELD
  144. }>({
  145. FLAG: 'xsxx_id',
  146. REASON: 'xsxx_id'
  147. })
  148. const dialogForm_Ref_audit = ref<FormInstance>()
  149. const dialogForm_Rules_audit = reactive<FormRules>({
  150. 'xsxx_xsxm': { required: true, message: '学生姓名不能为空', trigger: 'submit' },
  151. 'grade_id': { required: true, message: '年级编号不能为空', trigger: 'submit' },
  152. 'grade_name': { required: true, message: '年级名称不能为空', trigger: 'submit' },
  153. 'class_id': { required: true, message: '班级编号不能为空', trigger: 'submit' },
  154. 'class_name': { required: true, message: '班级名称不能为空', trigger: 'submit' },
  155. 'xsxx_xzkc': { required: true, message: '选择课程不能为空', trigger: 'submit' },
  156. 'xsxx_rkjs': { required: true, message: '任课教师不能为空', trigger: 'submit' },
  157. 'xsxx_sksj': { required: true, message: '上课时间不能为空', trigger: 'submit' },
  158. 'xsxk_id': { required: true, message: '所属课程编号不能为空', trigger: 'submit' },
  159. })
  160. // #endregion
  161. // #region (request api):
  162. function queryApi() {
  163. loading_table.value = true
  164. return request({
  165. url: URL_CUT + '/index',
  166. data: {
  167. ...queryForm_Data.value,
  168. limit: limit.value,
  169. page: currentPage.value,
  170. xsxk_id: props.aid
  171. }
  172. }).then((response: { data: { total_rows: string, page_data: TYPE_TABLE_FIELD[] } }) => {
  173. const { data } = response
  174. total.value = parseInt(data.total_rows)
  175. tableData.value = data.page_data
  176. return response
  177. }).then(() => {
  178. loading_table.value = false
  179. })
  180. }
  181. function addApi(data: TYPE_TABLE_FIELD) {
  182. return request({
  183. url: URL_CUT + '/add',
  184. data: {
  185. [URL_SUBMIT_KEY]: data,
  186. }
  187. })
  188. }
  189. function editApi(data: Partial<TYPE_TABLE_FIELD>) {
  190. return request({
  191. url: URL_CUT + '/edit',
  192. data: {
  193. [TABLE_KEY]: data[TABLE_KEY],
  194. [URL_SUBMIT_KEY]: pick(data, ['xsxx_xsxm', 'xsxx_xsxh', 'grade_id', 'grade_name', 'class_id', 'class_name', 'xsxx_xzkc', 'xsxx_rkjs', 'xsxx_sksj', 'xsxk_id',]),
  195. }
  196. })
  197. }
  198. function deleteApi(id: string | string[]) {
  199. return request({
  200. url: URL_CUT + '/delete',
  201. data: {
  202. [TABLE_KEY]: id,
  203. }
  204. })
  205. }
  206. function detailApi(id: string) {
  207. return request({
  208. url: URL_CUT + '/detail',
  209. data: {
  210. [TABLE_KEY]: id,
  211. }
  212. })
  213. }
  214. function importApi(data: { file: File }) {
  215. return request({
  216. $type: 'import',
  217. url: URL_CUT + '/import',
  218. data
  219. } as AxiosRequestConfig)
  220. }
  221. function exportApi() {
  222. return download(URL_CUT + '/index', queryForm_Data.value)
  223. }
  224. const API_MAP = {
  225. query: queryApi,
  226. add: addApi,
  227. edit: editApi,
  228. delete: deleteApi,
  229. detail: detailApi,
  230. import: importApi,
  231. export: exportApi,
  232. }
  233. // #endregion
  234. // #region (page init)
  235. function init() {
  236. queryApi()
  237. }
  238. init()
  239. // #endregion
  240. // #region (dialog move)
  241. const handleTableColBtn_move = (scope: { row: TYPE_TABLE_FIELD }) => {
  242. dialogForm_Data_move.value = {
  243. xsxt_xsxm: scope.row.xsxx_xsxm,
  244. xsxt_xsxh: scope.row.xsxx_xsxh,
  245. // team_id:scope.row.team_id,
  246. // team_name:scope.row.team_name,
  247. grade_id: scope.row.grade_id,
  248. grade_name: scope.row.grade_name,
  249. class_id: scope.row.class_id,
  250. class_name: scope.row.class_name,
  251. xsxk_id: scope.row.xsxk_id,
  252. xsxx_id: scope.row.xsxx_id,
  253. }
  254. dialogVisible_move.value = true
  255. }
  256. type TYPE_TABLE_FIELD_MOVE = {
  257. 'xsxt_id': string;
  258. 'xsxt_xsxm': string; // 学生姓名
  259. 'xsxt_xsxh': string; // 学生学号
  260. 'team_id': string; // 学期编号
  261. 'team_name': string; // 学期编号
  262. 'grade_id': string; // 年级编号
  263. 'grade_name': string; // 年级名称
  264. 'class_id': string; // 班级编号
  265. 'class_name': string; // 班级名称
  266. 'xsxt_sqkc': string; // 申请课程
  267. 'xsxt_rkjs': string; // 任课教师
  268. 'xsxt_sksj': string; // 上课时间
  269. 'xsxt_shzt': string; // 审核状态
  270. 'xsxk_id': string; // 所属课程编号
  271. 'xjj_zgbh': string // 职工编号
  272. 'xsxx_id': string
  273. }
  274. const dialogVisible_move = ref<boolean>(false)
  275. const dialogForm_Data_move = ref<Partial<TYPE_TABLE_FIELD_MOVE>>({})
  276. const dialogForm_Ref_move = ref<FormInstance>()
  277. const dialogForm_Rules_move = reactive<FormRules>({
  278. 'xsxt_xsxm': { required: true, message: '学生姓名不能为空', trigger: 'submit' },
  279. 'team_id': { required: true, message: '学期编号不能为空', trigger: 'submit' },
  280. 'team_name': { required: true, message: '学期编号不能为空', trigger: 'submit' },
  281. 'grade_id': { required: true, message: '年级编号不能为空', trigger: 'submit' },
  282. 'grade_name': { required: true, message: '年级名称不能为空', trigger: 'submit' },
  283. 'class_id': { required: true, message: '班级编号不能为空', trigger: 'submit' },
  284. 'class_name': { required: true, message: '班级名称不能为空', trigger: 'submit' },
  285. 'xsxt_sqkc': { required: true, message: '申请课程不能为空', trigger: 'submit' },
  286. 'xsxt_rkjs': { required: true, message: '任课教师不能为空', trigger: 'submit' },
  287. 'xsxt_sksj': { required: true, message: '上课时间不能为空', trigger: 'submit' },
  288. 'xsxt_shzt': { required: true, message: '审核状态不能为空', trigger: 'submit' },
  289. 'xsxk_id': { required: true, message: '所属课程编号不能为空', trigger: 'submit' },
  290. })
  291. const handleDialogFormBtn_submit_move = async (formRefKey: string, extendData?: Partial<TYPE_TABLE_FIELD>) => {
  292. const isValid = await (instance?.refs[formRefKey] as FormInstance).validate((valid: boolean) => valid)
  293. if (isValid) {
  294. console.log('dialogForm_Data_move.value :>> ', dialogForm_Data_move.value);
  295. await request({
  296. url: '/xdjx/stxkgl_xktj_tjsh/add',
  297. data: {
  298. xdjx_stxkgl_xktj_tjsh: dialogForm_Data_move.value,
  299. }
  300. })
  301. handleDialogFormBtn_cancel()
  302. queryApi()
  303. }
  304. }
  305. const handleMoveChange = (item: Partial<{
  306. 'xsxk_id': string;
  307. 'xsxk_kcmc': string; // 课程名称
  308. 'xsxk_kclx': string; // 课程类型
  309. 'xsxk_rkjs': string; // 任课教师
  310. 'team_id': string; // 学期编号
  311. 'team_name': string; // 学期名称
  312. 'grade_id': string; // 年级编号
  313. 'grade_name': string; // 年级名称
  314. 'xsxk_xkzt': string; // 选课状态
  315. 'xsxk_kcsm': string; // 课程说明
  316. 'xsxk_kcfm': string; // 课程封面
  317. 'xsxk_kksj': string; // 开课时间
  318. 'xsxk_jksj': string; // 结课时间
  319. 'xsxk_kbrs': string; // 开班人数
  320. 'xsxk_xkkssj': string; // 选课开始时间
  321. 'xsxk_xkjssj': string; // 选课结束时间
  322. 'xjj_zgbh': string // 职工编号
  323. }>) => {
  324. console.log('item :>> ', item);
  325. dialogForm_Data_move.value['xsxt_sqkc'] = item.xsxk_kcmc
  326. dialogForm_Data_move.value['xsxt_rkjs'] = item.xsxk_rkjs
  327. dialogForm_Data_move.value['xsxt_sksj'] = item.xsxk_kksj
  328. dialogForm_Data_move.value['xsxk_id'] = item.xsxk_id
  329. dialogForm_Data_move.value['xjj_zgbh'] = item.xjj_zgbh
  330. }
  331. // #endregion
  332. </script>
  333. <template>
  334. <div class="card flex-grow flex flex-col">
  335. <el-form inline :model="queryForm_Data">
  336. <el-form-item label="关键字">
  337. <el-input v-model="queryForm_Data.keyword" clearable />
  338. </el-form-item>
  339. <!-- <el-form-item label="学生姓名">
  340. <el-input v-model="queryForm_Data.xsxx_xsxm" clearable />
  341. </el-form-item> -->
  342. <!-- <el-form-item label="年级编号"><el-input v-model="queryForm_Data.grade_id" clearable /></el-form-item> -->
  343. <!-- <el-form-item label="年级名称">
  344. <el-input v-model="queryForm_Data.grade_name" clearable />
  345. <remote-select to="grade" v-model="queryForm_Data.grade_id" v-model:modelName="queryForm_Data.grade_name"></remote-select>
  346. </el-form-item> -->
  347. <!-- <el-form-item label="班级编号"><el-input v-model="queryForm_Data.class_id" clearable /></el-form-item> -->
  348. <el-form-item label="班级名称">
  349. <!-- <el-input v-model="queryForm_Data.class_name" clearable /> -->
  350. <remote-cascader-class v-model="queryForm_Data.class_id" v-model:modelName="queryForm_Data.class_name">
  351. </remote-cascader-class>
  352. </el-form-item>
  353. <!-- <el-form-item label="选择课程">
  354. <remote-select url="/xdjx/stxkgl_kcxkgl/index" :fields="['xsxk_id', 'xsxk_kcmc']"
  355. v-model="queryForm_Data.xsxk_id"></remote-select>
  356. </el-form-item> -->
  357. <!-- <el-form-item label="任课教师">
  358. <el-input v-model="queryForm_Data.xsxx_rkjs" clearable />
  359. </el-form-item> -->
  360. <!-- <el-form-item label="上课时间"><el-input v-model="queryForm_Data.xsxx_sksj" clearable /></el-form-item> -->
  361. <!-- <el-form-item label="所属课程编号"><el-input v-model="queryForm_Data.xsxk_id" clearable /></el-form-item> -->
  362. <el-form-item>
  363. <el-button @click="handleQueryFormBtn_search" type="primary">搜索</el-button>
  364. <el-button @click="handleQueryFormBtn_clear" type="warning">清空</el-button>
  365. </el-form-item>
  366. </el-form>
  367. <div class="divider"></div>
  368. <div>
  369. <import-button :url="URL_CUT_REF" :importKey="('xsxk_id='+aid)" @success="queryApi"></import-button>
  370. <el-button @click="handleTableRowBtn_export" type="success">导出打印</el-button>
  371. <!-- <el-button @click="handleTableRowBtn_add" type="primary">dev:新增</el-button> -->
  372. <!-- <el-button @click="handleTableRowBtn_delete" type="danger">删除</el-button> -->
  373. </div>
  374. <div class="divider"></div>
  375. <div class="flex-auto">
  376. <el-table :data="tableData" @selection-change="handleSelectionChange" v-loading="loading_table"
  377. element-loading-background="#ffffff70">
  378. <el-table-column type="selection"></el-table-column>
  379. <el-table-column type="index" label="序号" width="60" :index="(i: number) => (currentPage - 1) * limit + i + 1" />
  380. <el-table-column prop="xsxx_xsxm" label="学生姓名" width="auto" show-overflow-tooltip></el-table-column>
  381. <!-- <el-table-column prop="grade_id" label="年级编号" width="auto" show-overflow-tooltip></el-table-column> -->
  382. <el-table-column prop="grade_name" label="年级名称" width="auto" show-overflow-tooltip></el-table-column>
  383. <!-- <el-table-column prop="class_id" label="班级编号" width="auto" show-overflow-tooltip></el-table-column> -->
  384. <el-table-column prop="class_name" label="班级名称" width="auto" show-overflow-tooltip></el-table-column>
  385. <!-- <el-table-column prop="xsxx_xzkc" label="选择课程" width="auto" show-overflow-tooltip></el-table-column>
  386. <el-table-column prop="xsxx_rkjs" label="任课教师" width="auto" show-overflow-tooltip></el-table-column>
  387. <el-table-column prop="xsxx_sksj" label="上课时间" width="auto" show-overflow-tooltip></el-table-column> -->
  388. <!-- <el-table-column prop="xsxk_id" label="所属课程编号" width="auto" show-overflow-tooltip></el-table-column> -->
  389. <el-table-column label="操作" fixed="right">
  390. <template #default="scope">
  391. <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_edit(scope)" type="primary">dev:编辑
  392. </el-button> -->
  393. <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_audit(scope)" type="primary" >审核</el-button>
  394. <el-button link :auto-insert-space="false" @click="handleTableColBtn_detail(scope)" type="primary" >详情</el-button> -->
  395. <!-- <el-button link :auto-insert-space="false" @click="handleTableColBtn_delete(scope)" type="primary" >删除
  396. </el-button> -->
  397. <el-button link :auto-insert-space="false" @click="handleTableColBtn_move(scope)" type="primary">调剂
  398. </el-button>
  399. </template>
  400. </el-table-column>
  401. </el-table>
  402. </div>
  403. <div class="flex justify-end mt-10 py-4">
  404. <el-pagination :page-size="limit" v-model:current-page="currentPage" @current-change="handleCurrentChange"
  405. background layout="total, prev, pager, next" :total="total" />
  406. </div>
  407. </div>
  408. <el-dialog v-model="dialogVisible_addOrEdit" append-to-body destroy-on-close>
  409. <el-form :model="dialogForm_Data" ref="dialogForm_Ref_addOrEdit" :rules="dialogForm_Rules_addOrEdit"
  410. label-width="120px">
  411. <el-form-item label="学生姓名" prop="xsxx_xsxm">
  412. <!-- <el-input v-model="dialogForm_Data.xsxx_xsxm" clearable /> -->
  413. <remote-select v-model="dialogForm_Data.xsxx_xsxh" v-model:modelName="dialogForm_Data.xsxx_xsxm"
  414. url="/user/main/index" :fields="['user_no', 'user_realname']" :d="{ user_role_id: '8' }">
  415. </remote-select>
  416. </el-form-item>
  417. <!-- <el-form-item label="年级编号" prop="grade_id">
  418. <el-input v-model="dialogForm_Data.grade_id" clearable />
  419. </el-form-item> -->
  420. <!-- <el-form-item label="年级名称" prop="grade_name">
  421. <el-input v-model="dialogForm_Data.grade_name" clearable />
  422. <remote-select to="grade" v-model="dialogForm_Data.grade_id" v-model:modelName="dialogForm_Data.grade_name"></remote-select>
  423. </el-form-item> -->
  424. <!-- <el-form-item label="班级编号" prop="class_id">
  425. <el-input v-model="dialogForm_Data.class_id" clearable />
  426. </el-form-item> -->
  427. <el-form-item label="班级名称" prop="class_name">
  428. <!-- <el-input v-model="dialogForm_Data.class_name" clearable /> -->
  429. <remote-cascader-class v-model="dialogForm_Data.class_id" v-model:modelName="dialogForm_Data.class_name"
  430. v-model:gradeId="dialogForm_Data.grade_id" v-model:gradeName="dialogForm_Data.grade_name">
  431. </remote-cascader-class>
  432. </el-form-item>
  433. <!-- <el-form-item label="所属课程编号" prop="xsxk_id">
  434. <el-input v-model="dialogForm_Data.xsxk_id" clearable />
  435. </el-form-item> -->
  436. <el-form-item label="选择课程" prop="xsxx_xzkc">
  437. <!-- <el-input v-model="dialogForm_Data.xsxx_xzkc" clearable /> -->
  438. <remote-select url="/xdjx/stxkgl_kcxkgl/index" :fields="['xsxk_id', 'xsxk_kcmc']"
  439. v-model="dialogForm_Data.xsxk_id" v-model:modelName="dialogForm_Data.xsxx_xzkc"></remote-select>
  440. </el-form-item>
  441. <el-form-item label="任课教师" prop="xsxx_rkjs">
  442. <el-input v-model="dialogForm_Data.xsxx_rkjs" clearable />
  443. </el-form-item>
  444. <el-form-item label="上课时间" prop="xsxx_sksj">
  445. <el-input v-model="dialogForm_Data.xsxx_sksj" clearable />
  446. </el-form-item>
  447. <div class="flex justify-center">
  448. <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_addOrEdit')" type="primary">提交</el-button>
  449. <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_addOrEdit')" type="default">取消</el-button>
  450. </div>
  451. </el-form>
  452. </el-dialog>
  453. <el-dialog v-model="dialogVisible_audit" append-to-body destroy-on-close>
  454. <el-form :model="dialogForm_Data" ref="dialogForm_Ref_audit" :rules="dialogForm_Rules_audit" label-width="120px">
  455. <el-form-item label="状态">
  456. <el-radio-group v-model="dialogForm_Data[dialogForm_Field_audit.FLAG]">
  457. <el-radio label="1">通过</el-radio>
  458. <el-radio label="2">未通过</el-radio>
  459. </el-radio-group>
  460. </el-form-item>
  461. <!-- <el-form-item label="原因" v-show="dialogForm_Data[dialogForm_Field_audit.FLAG] === '1'">
  462. <el-input type="textarea" v-model="dialogForm_Data[dialogForm_Field_audit.REASON]" :rows="5" />
  463. </el-form-item> -->
  464. <div class="flex justify-center">
  465. <el-button @click="handleDialogFormBtn_submit('dialogForm_Ref_audit')" type="primary">提交</el-button>
  466. <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_audit')" type="default">取消</el-button>
  467. </div>
  468. </el-form>
  469. </el-dialog>
  470. <el-dialog v-model="dialogVisible_move" append-to-body destroy-on-close>
  471. <el-form :model="dialogForm_Data_move" ref="dialogForm_Ref_move" :rules="dialogForm_Rules_move" label-width="120px">
  472. <el-form-item label="调剂课程" prop="xsxt_sqkc">
  473. <remote-select url="/xdjx/stxkgl_kcxkgl/index" :fields="['xsxk_id', 'xsxk_kcmc']" :change="handleMoveChange">
  474. </remote-select>
  475. </el-form-item>
  476. <div class="flex justify-center">
  477. <el-button @click="handleDialogFormBtn_submit_move('dialogForm_Ref_move')" type="primary">提交</el-button>
  478. <el-button @click="handleDialogFormBtn_cancel('dialogForm_Ref_move')" type="default">取消</el-button>
  479. </div>
  480. </el-form>
  481. </el-dialog>
  482. </template>