diff --git a/admin/src/pages/course/option/index.tsx b/admin/src/pages/course/option/index.tsx index 4cd3dc0..0db2bb8 100644 --- a/admin/src/pages/course/option/index.tsx +++ b/admin/src/pages/course/option/index.tsx @@ -149,6 +149,7 @@ const CourseList: React.FC = () => { hideInTable: false, hideInForm: false, hideInSearch: true, + width: 100, renderText: (val: string) => `${val}`, formItemProps: { // 参照 https://ant.design/components/form-cn/#Rule @@ -284,6 +285,7 @@ const CourseList: React.FC = () => { sorter: false, hideInForm: true, hideInSearch: true, + width: 100, renderText: (val: string) => `${val}M`, formItemProps: { // 参照 https://ant.design/components/form-cn/#Rule @@ -309,6 +311,7 @@ const CourseList: React.FC = () => { title: '操作', dataIndex: 'option', valueType: 'option', + width: 150, render: (_dom: any, record: React.SetStateAction) => [ , options?: Record) { - return request('/dsideal_yy/ypt/careerTraining/course/view', { - data, - method: 'POST', - requestType: 'form', - ...(options || {}), +export async function queryCourseView(params: { + course_id: number; + //count: number; +}): Promise<{ data: { list: any } }> { + return request('/dsideal_yy/ypt/careerTraining/course/view', { + params, }); } - - /** 新建/修改主题 POST /dsideal_yy/ypt/careerTraining/subject/saveSubject */ export async function saveSubject(data: Record, options?: Record) { return request('/dsideal_yy/ypt/careerTraining/subject/saveSubject', { diff --git a/admin/src/pages/course/option/style.less b/admin/src/pages/course/option/style.less index bc81bea..8a49af0 100644 --- a/admin/src/pages/course/option/style.less +++ b/admin/src/pages/course/option/style.less @@ -6,6 +6,7 @@ } .edit-tag { user-select: none; + margin: 2px; } .tag-input { width: 78px; diff --git a/admin/src/pages/course/subject/components/ProFormRichEdit.tsx b/admin/src/pages/course/subject/components/ProFormRichEdit.tsx index 884efac..2bbd605 100644 --- a/admin/src/pages/course/subject/components/ProFormRichEdit.tsx +++ b/admin/src/pages/course/subject/components/ProFormRichEdit.tsx @@ -3,7 +3,7 @@ import React from 'react'; import ReactQuill from 'react-quill'; import 'react-quill/dist/quill.snow.css' -const ProFormRichEdit = (props) => { +const ProFormRichEdit = (props: any) => { return ( diff --git a/admin/src/pages/course/subject/index.tsx b/admin/src/pages/course/subject/index.tsx index 48c1986..aaf5596 100644 --- a/admin/src/pages/course/subject/index.tsx +++ b/admin/src/pages/course/subject/index.tsx @@ -1,5 +1,5 @@ import { PlusOutlined } from '@ant-design/icons'; -import { Button, message, Input, Drawer } from 'antd'; +import { Button, message, Image, Modal, } from 'antd'; import React, { useState, useRef } from 'react'; import { history } from 'umi'; import { PageContainer, FooterToolbar } from '@ant-design/pro-layout'; @@ -10,14 +10,79 @@ import type { ProDescriptionsItemProps } from '@ant-design/pro-descriptions'; import ProDescriptions from '@ant-design/pro-descriptions'; import type { FormValueType } from './components/UpdateForm'; import UpdateForm from './components/UpdateForm'; -import { copySubject, addSubject, updateSubject, removeSubject, querySubjectList } from './service'; +import { copySubject, addSubject, updateSubject, removeSubject, querySubjectList, queryListChapterBySubject } from './service'; import type { TableListItem, TableListPagination } from './data'; +import { queryCourseListByTag } from '../option/service'; + +/** 章节列表项定义 */ +const chapterColumns: ProColumns[] = [ + { + title: '序号', + key: 'index', + valueType: 'indexBorder', + width: 48, + }, + { + title: '章节名称', + dataIndex: 'chapter_name', + valueType: 'text', + hideInTable: false, + hideInDescriptions: false, + hideInForm: false, + hideInSearch: true, + }, + { + title: '简介', + dataIndex: 'chapter_describe', + valueType: 'textarea', + sorter: false, + hideInTable: false, + hideInForm: false, + hideInSearch: true, + renderText: (val: string) => (
), + }, + { + title: '课程', + valueType: 'select', + dataIndex: 'course_ids', + sorter: false, + hideInTable: false, + hideInForm: false, + hideInSearch: true, + fieldProps: { + mode: "multiple" + }, + renderText: (val: string) => `${val}`, + request: async (params) => { + const {tags} = params; + const { data: Items } = await queryCourseListByTag({tag_ids: tags?.toString()}); + console.log('queryCourseListByTag...') + const courses = [] + for (let i = 0; i < Items?.length; i++) { + courses.push({ label: Items[i]?.course_name, value: Items[i]?.course_id }) + } + console.log(courses, 'courses:::'); + return courses; + }, + + }, + { + title: '学时', + dataIndex: 'course_minutes', + valueType: 'text', + sorter: false, + hideInTable: false, + hideInForm: true, + hideInSearch: true, + renderText: (val: string) => `${val}`, + }, +]; + /** * 添加节点 * * @param fields */ - const handleAdd = async (fields: TableListItem) => { const hide = message.loading('正在添加'); @@ -81,14 +146,14 @@ const handleRemove = async (selectedRows: TableListItem[]) => { const TableList: React.FC = () => { /** 新建窗口的弹窗 */ const [createModalVisible, handleModalVisible] = useState(false); - /** 分布更新窗口的弹窗 */ - const [updateModalVisible, handleUpdateModalVisible] = useState(false); - const [showDetail, setShowDetail] = useState(false); + const [detailModalVisible, handleDetailModalVisible] = useState(false); + const actionRef = useRef(); + const actionChapterRef = useRef(); + const [currentRow, setCurrentRow] = useState(); const [selectedRowsState, setSelectedRows] = useState([]); - /** 国际化配置 */ const columns: ProColumns[] = [ { @@ -108,7 +173,12 @@ const TableList: React.FC = () => { render: (dom, entity) => { // console.log(entity, 'entity') return ( - + ); }, }, @@ -126,7 +196,7 @@ const TableList: React.FC = () => { dataIndex: 'subject_describe', valueType: 'textarea', hideInSearch: true, - width: "60%", + width: "*", render: (dom, entity) => { return ( @@ -141,10 +211,14 @@ const TableList: React.FC = () => { }, { title: '信息', - dataIndex: 'total_course_minutes', - sorter: true, + dataIndex: 'total_course_minutes', + sorter: false, hideInSearch: true, + width: 200, render: (dom, entity) => { + if(entity.b_use === 0){ + return '待发布' + } return ( @@ -168,9 +242,22 @@ const TableList: React.FC = () => { title: '操作', dataIndex: 'option', valueType: 'option', + width: 200, render: (_, record) => [ { + setCurrentRow(record); + if (actionChapterRef.current) { + actionChapterRef.current.reload(); + } + handleDetailModalVisible(true); + }} + > + 查看 + , + { history.push(`/course/subject/step/update/${record.subject_id}`) }} @@ -180,9 +267,11 @@ const TableList: React.FC = () => { { + const hide = message.loading('正在复制'); // console.log(e, record, 'copy') const success = await copySubject({ subject_id: record.subject_id }); if (success) { + hide(); // handleModalVisible(false); if (actionRef.current) { actionRef.current.reload(); @@ -307,6 +396,69 @@ const TableList: React.FC = () => { /> + { + setCurrentRow(undefined); // 设置当前行 + handleDetailModalVisible(false); + }} + footer={null} + centered + > + {currentRow?.subject_id && ( + <> + { + console.log('step2 主题信息') + return Promise.resolve({ + success: true, + data: { id: '这是一段文本', object: '', date: '2020-07-30 08:00', duration: '', grade: 100, through: '>60', learn: '>20 min', times: 2 }, + }); + }}*/ + extra={false} + > + + {currentRow?.subject_name} + +
+ + + + + headerTitle={false} + actionRef={actionChapterRef} + rowKey="chapter_id" + options={false} + search={false} + toolBarRender={false} + request={async (value) => { + const { data } = await queryListChapterBySubject({ + subject_id: currentRow?.subject_id, + page_number: value?.current || 1, + page_size: value?.pageSize, + }); + return { + current: data?.page_number, + data: data?.list, + pageSize: data?.page_size, + success: true, + total: data?.total_row || 0, + }; + }} + // dataSource={list} + columns={chapterColumns} + rowSelection={false} + /> + + )} + { const success = await handleUpdate(value, currentRow); diff --git a/admin/src/pages/course/subject/service.ts b/admin/src/pages/course/subject/service.ts index ae9596d..e4a392c 100644 --- a/admin/src/pages/course/subject/service.ts +++ b/admin/src/pages/course/subject/service.ts @@ -123,7 +123,9 @@ export async function querySubjectList(params: { } /** - * 新建/修改章节 POST /dsideal_yy/ypt/careerTraining/course/save */ + * 新建/修改章节 POST /dsideal_yy/ypt/careerTraining/course/save + * + */ export async function saveChapter(data: Record, options?: Record) { return request('/dsideal_yy/ypt/careerTraining/subject/saveChapter', { data, @@ -132,3 +134,16 @@ export async function saveChapter(data: Record, options?: Record, options?: Record) { + return request('/dsideal_yy/ypt/careerTraining/subject/commitSubject', { + data, + method: 'POST', + requestType: 'form', + ...(options || {}), + }); +} diff --git a/admin/src/pages/course/subject/step/index.tsx b/admin/src/pages/course/subject/step/index.tsx index 1dc53e6..2b4254e 100644 --- a/admin/src/pages/course/subject/step/index.tsx +++ b/admin/src/pages/course/subject/step/index.tsx @@ -24,7 +24,7 @@ import type { ActionType, ProColumns } from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table'; import type { TableListItem, TableListPagination } from '../../option/data'; import { queryCourseList, queryCourseListByTag, queryTagList, saveSubject } from '../../option/service'; -import { getSubjectInfo, queryListChapterBySubject, saveChapter } from '../service'; +import { commitSubject, getSubjectInfo, queryListChapterBySubject, saveChapter } from '../service'; import { v4 as uuidv4 } from 'uuid'; @@ -241,17 +241,27 @@ export default () => { console.log('url', subjectInfo?.attachment_json?.url); // 编辑场景下需要使用formMapRef循环设置formData formMapRef.current.forEach((formInstanceRef) => { - formInstanceRef.current?.setFieldsValue({ + let fieldsValue; + const subjectValue = { subject_name:subjectInfo?.subject_name, subject_describe:subjectInfo?.subject_describe, - upload:[ - { - name: subjectInfo?.attachment_json?.name, - status: 'done', - url: `/dsideal_yy/html/${subjectInfo?.attachment_json?.url}` - } - ] - }); + } + if(params?.id && subjectInfo?.attachment_json?.url){ + fieldsValue = { + ...subjectValue, + upload:[ + { + name: subjectInfo?.attachment_json?.name, + status: 'done', + url: `/dsideal_yy/html/${subjectInfo?.attachment_json?.url}` + } + ] + } + }else{ + // 无附件 + fieldsValue = subjectValue; + } + formInstanceRef.current?.setFieldsValue(fieldsValue); }); }, [subjectInfo]); @@ -264,8 +274,8 @@ export default () => { }> formMapRef={formMapRef} formRef={formRef} - onFinish={async () => { - + onFinish={async (values) => { + console.log('values::', values) message.success('提交成功'); }} formProps={{ @@ -298,18 +308,14 @@ export default () => { console.log(value, "vvvvv"); const url = value?.upload[0]?.url?.replace('/dsideal_yy/html/','') || value?.upload[0]?.response?.url; - const _data = await saveSubject({ + const { data } = await saveSubject({ ...value, subject_id: params?.id, attachment_json: `{ "url": "${url}"}` }); - setSubjectIntro({subject_name:value?.subject_name, subject_describe:value?.subject_describe}); - return { - current: _data?.page_number, - data: _data?.data?.list, - pageSize: _data?.page_size, - total: _data?.total_row || 0, - }; + setSubjectIntro({subject_id:data?.subject_id, subject_name: value?.subject_name, subject_describe:value?.subject_describe}); + + return true; }} > @@ -320,7 +326,7 @@ export default () => { width="xl" // tooltip="最长为 6 位汉字,需要与考生身份证一致" placeholder="请输入名称" - // rules={[{ required: true }]} + rules={[{ required: true }]} // value="锦书" // disabled /> @@ -330,7 +336,7 @@ export default () => { width="xl" // tooltip="最长为 6 位汉字,需要与考生身份证一致" placeholder="请输入介绍" - // rules={[{ required: true }]} + rules={[{ required: true }]} // value="锦书" // disabled @@ -359,6 +365,7 @@ export default () => { key: `down/Syzx/${uuid?.substr(0, 2)}/${uuid}.${uploadFileExt}` } }} + rules={[{ required: true }]} action="/dsideal_yy/res/plupload/" extra="" /> @@ -412,7 +419,7 @@ export default () => { }}*/ extra={false} > - + {subjectIntro?.subject_name}
@@ -422,7 +429,7 @@ export default () => { headerTitle={false} actionRef={actionRef} - rowKey="course_id" + rowKey="chapter_id" options={false} search={false} toolBarRender={() => [ @@ -506,7 +513,9 @@ export default () => { stepProps={{ description: false, }} - onFinish={async () => { + onFinish={async (values) => { + console.log('subject_id:', subjectIntro?.subject_id); + await commitSubject({subject_id: subjectIntro?.subject_id}); console.log(formRef.current?.getFieldsValue()); // 跳转到指定路由 history.push('/course/subject'); @@ -521,7 +530,7 @@ export default () => { status="success" title={
- 主题 {subjectIntro?.subject_name} 创建/修改完成成功 + 主题 {subjectIntro?.subject_name} 创建/修改成功
} subTitle="点击提交将设置为发布状态。" diff --git a/admin/src/pages/examination/certificate/index.tsx b/admin/src/pages/examination/certificate/index.tsx index 5786e21..90e9f21 100644 --- a/admin/src/pages/examination/certificate/index.tsx +++ b/admin/src/pages/examination/certificate/index.tsx @@ -213,7 +213,7 @@ const CourseList: React.FC = () => { render: (_dom: any, record: React.SetStateAction) => [
{ handleUpdateModalVisible(true); setCurrentRow(record); diff --git a/admin/src/pages/questionbank/normal/index.tsx b/admin/src/pages/questionbank/normal/index.tsx index 6b3cba8..40e158c 100644 --- a/admin/src/pages/questionbank/normal/index.tsx +++ b/admin/src/pages/questionbank/normal/index.tsx @@ -1,6 +1,6 @@ /** 资质考试 */ //import { AlignLeftOutlined, PlusOutlined } from '@ant-design/icons'; -import { Switch, Button, Card, Col, List, Menu, Progress, Row, Typography, Space, Divider, Radio, Checkbox, Tag, Dropdown } from 'antd'; +import { Switch, Button, Card, Col, List, Menu, Progress, Row, Typography, Space, Divider, Radio, Checkbox, Tag, Dropdown, Upload } from 'antd'; import { PageContainer } from '@ant-design/pro-layout'; //import { useRequest } from 'umi'; //import { queryFakeList } from './service'; @@ -9,62 +9,38 @@ import styles from './style.less'; //import SubMenu from 'antd/lib/menu/SubMenu'; //import ProCard from '@ant-design/pro-card'; import ProList from '@ant-design/pro-list'; -import { ReactText, useState } from 'react'; +import { ReactText, useEffect, useState } from 'react'; import { PlusOutlined, DeleteOutlined, DownloadOutlined, UploadOutlined, EditOutlined, EyeOutlined, EyeInvisibleOutlined, DownOutlined } from '@ant-design/icons'; +import { exportQuestionTemplate, queryQuestionList, queryQuestionType } from './service'; +import { useRequest } from 'umi'; +import { queryCourseView } from '@/pages/course/option/service'; //const { Paragraph } = Typography; const QuestionBank = () => { + + const [questionType, setQuestionType] = useState([]); const [selectedRowsState, setSelectedRows] = useState([]); const [expandedDescRowKeys, setExpandedDescRowKeys] = useState([]); // 展开解析设置 const [addType, setAddType] = useState(0); - const numbers = []; - for(let i=0;i<50;i++){ - numbers.push({id: `${i}`}) - } - const dataSource = [ - { - id: 1, - name: '下面哪个词语能体现未来思维?', - type: '单选', - options: [ - {label: '井底之蛙', value: 'A'}, - {label: '鼠目寸光', value: 'B'}, - {label: '未雨绸缪', value: 'C'}, - {label: '即时行乐', value: 'D'}, - ], - - time: '2022/12/12', - tag: '生涯理论', - course: '特质因素理论', + const labels = ['A','B','C','D','E'] + + /** 获取题型 */ + const { data } = useRequest(() => { + return queryQuestionType(); + },{ + formatResult: (result) => { + return result.list; + } + }); +/* + const { data: template } = useRequest(() => { + return exportQuestionTemplate(); + }); + */ + useEffect(() => { + setQuestionType(data || []); + }, [data]); - answer:'C', - desc: '该成语意思是天还没有下雨,先把门窗绑牢。比喻事先做好准备工作。该成语意思是天还没有下雨,先把门窗绑牢。比喻事先做好准备工作。该成语意思是天还没有下雨,先把门窗绑牢。比喻事先做好准备工作。该成语意思是天还没有下雨,先把门窗绑牢。比喻事先做好准备工作。', - }, - { - id: 2, - name: 'Ant Design', - type: '多选', - image: - 'https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg', - desc: '我是一条测试的描述', - }, - { - id: 3, - name: '蚂蚁金服体验科技', - type: '判断', - image: - 'https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg', - desc: '我是一条测试的描述', - }, - { - id: 4, - name: 'TechUI', - type: '单选', - image: - 'https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg', - desc: '我是一条测试的描述', - }, - ]; return ( @@ -76,12 +52,18 @@ const QuestionBank = () => { showSizeChanger: false, }} toolBarRender={() => { - const menu = ( + const menuItems = []; + console.log('toolBarRender', questionType); + if(questionType?.length > 0){ + console.log('push'); + questionType.forEach((item: {code: number, name: string})=>{ + menuItems.push({item?.name}) + }) + } + const menu = ( setAddType(value)}> - 单选 - 多选 - 判断 - + {menuItems} + ); return [ @@ -92,15 +74,27 @@ const QuestionBank = () => { , - , - , + + + , ]; }} onRow={(record: any) => { + /* return { onMouseEnter: () => { console.log(record); @@ -108,12 +102,45 @@ const QuestionBank = () => { onClick: () => { console.log(record); }, - }; + };*/ }} rowKey="id" headerTitle={false} tooltip={false} - dataSource={dataSource} + request={async (value) => { + console.log('value', value) + /* + const { create_time } = value; + if (create_time) { + value.begin_time = create_time[0] + value.end_time = create_time[1] + }*/ + + const questions = await queryQuestionList({ + ...value, + type: 0, + page_number: value?.current || 1, + page_size: value?.pageSize, + }); + // 课程名称及课程标签 + console.log('data',questions); + const data = [] + for(let i=0; i { setSelectedRows(selectedRows); @@ -124,29 +151,42 @@ const QuestionBank = () => { showExtra="always" metas={{ title: { - dataIndex: 'name', + dataIndex: 'question_stem', render: (text: React.ReactNode, record: T, index: number) => `1. ${text}`, }, avatar: { - dataIndex: 'type', + dataIndex: 'question_type', valueType: 'text', - render: (text: React.ReactNode, record: T, index: number) => `[${record.type}]`, + render: (text: React.ReactNode, record: T, index: number) => { + const type = questionType?.filter((item, idx, self)=>{ + console.log('FFFF', item, idx, self); + return item?.code === record.question_type + }); + console.log('type', type?.name); + console.log('type', type?.name); + console.log('questionType::::',questionType); + return `[${type[0]?.name}]` + }, }, description: { - dataIndex: 'options', + dataIndex: 'answers', valueType: 'checkbox', render: (text: React.ReactNode, record: T, index: number) => { + console.log('description answers', record) return ( ( - - {`${item?.value}. ${item?.label}`} - - )} + dataSource={record.answers || []} + rowKey='id' + renderItem={ (item, key) => { + console.log('item', item); + return ( + + {`${(record?.question_type === 2) ? ['T','F'][key] : labels[key]}. ${item?.answer}`} + ) + }} /> ); }, @@ -154,24 +194,57 @@ const QuestionBank = () => { subTitle: { }, content: { render: (text: React.ReactNode, record: T, index: number) => { - return ( - - 正确答案:{record.answer} - 解析:{record.desc} - - ); + let answer = ''; + const answertrue = record?.answertrue?.split(','); + console.log('answertrue', answertrue) + /** 题型 */ + switch(record?.question_type){ + case 0: // 单选 + case 1: // 多选 + answer = labels?.filter((x, idx, self)=>answertrue[idx] === `${idx}`).toString() + break; + case 2: // 判断 + answer = ['T', 'F']?.filter((x, idx, self)=>answertrue[idx] === `${idx}`).toString() + break; + } + console.log('expandedDescRowKeys', expandedDescRowKeys) + if(expandedDescRowKeys?.indexOf(record.id) > -1){ + return ( + + 正确答案: + {answer} + + 解析:{record.desc} + + ); + }else{ + return ( + + 正确答案: + {answer} + + + ) + } + }, }, actions: { cardActionProps: 'extra', render: (text: React.ReactNode, record: T, _index: number) => { + let eye + if(expandedDescRowKeys?.indexOf(record.id) > -1){ + eye = <> 隐藏解析 + }else{ + eye = <> 查看解析 + } return( - 创建时间:{record.time} - 标签:{record.tag} - 所属课程:{record.course} + 创建时间:{record?.create_time} + 标签:{record?.tag_name} + 所属课程:{record?.course_name} @@ -179,18 +252,27 @@ const QuestionBank = () => { 编辑 - + 删除 { - setExpandedDescRowKeys([...expandedDescRowKeys, record.id]); + if(expandedDescRowKeys?.indexOf(record.id) > -1){ + const descRowKeys = expandedDescRowKeys?.filter((item, idx, self)=>{ + console.log('FFFF', item, idx, self); + return item !== record.id + }); + setExpandedDescRowKeys([...descRowKeys]); + }else{ + setExpandedDescRowKeys([...expandedDescRowKeys, record.id]); + } + console.log('record id:', record.id); - console.log('expandedDescRowKeys', expandedDescRowKeys) + console.log('expandedDescRowKeys......', expandedDescRowKeys) }} > - 查看解析 + {eye} diff --git a/admin/src/pages/questionbank/normal/service.ts b/admin/src/pages/questionbank/normal/service.ts index fee9a31..5b366ce 100644 --- a/admin/src/pages/questionbank/normal/service.ts +++ b/admin/src/pages/questionbank/normal/service.ts @@ -8,3 +8,68 @@ export async function queryFakeList(params: { params, }); } + +/** + * 获取题型 + * @param params + * @returns + */ + export async function queryQuestionType(): Promise<{ list: any } > { + return request('/dsideal_yy/newUniversityExamination/base/getDicItem', { + method: 'GET', + params: { + kind: 'ZYGH_TRAINING_QUESTION_TYPE' + }, + }); +} + +/** + * 下载模板 + * @param params + * @returns + */ + export async function exportQuestionTemplate(): Promise<{ list: any } > { + return request('/dsideal_yy/zygh/training/exportQuestionTemplate', { + method: 'GET', + params: { + + }, + }); +} + +/** 新建/修改试题 */ +export async function saveQuestion(data: Record, options?: Record) { + return request('/dsideal_yy/zygh/training/updateQuestion', { + data, + method: 'POST', + requestType: 'form', + ...(options || {}), + }); +} + + +/** + * 获取试题列表 + * @param params + * @returns + */ +export async function queryQuestionList(params: { + count: number; +}): Promise<{ data: { list: CardListItemDataType[] } }> { + return request('/dsideal_yy/zygh/training/getQuestionList', { + params, + }); +} + +/** + * 获取试题详情 + * @param params + * @returns + */ +export async function queryQuestionById(params: { + count: number; +}): Promise<{ data: { list: CardListItemDataType[] } }> { + return request('/dsideal_yy/zygh/training/getQuestionById', { + params, + }); +} diff --git a/admin/src/pages/training/option/index.tsx b/admin/src/pages/training/option/index.tsx index 37bcda7..1f4a56c 100644 --- a/admin/src/pages/training/option/index.tsx +++ b/admin/src/pages/training/option/index.tsx @@ -211,7 +211,7 @@ const TableList: React.FC = () => { valueType: 'option', render: (_, record) => [ { handleUpdateModalVisible(true); setCurrentRow(record); @@ -241,6 +241,7 @@ const TableList: React.FC = () => { headerTitle={false} actionRef={actionRef} rowKey="train_id" + options={false} search={{ labelWidth: 120, }}