diff --git a/admin/config/config.ts b/admin/config/config.ts index 133171c..9e06a27 100644 --- a/admin/config/config.ts +++ b/admin/config/config.ts @@ -176,6 +176,13 @@ export default defineConfig({ component: './examinationrules/attestation/step', hideInMenu: true, }, + { + name: '修改资质考试规则维护', + icon: 'smile', + path: '/examinationrules/attestation/step/:id', + component: './examinationrules/attestation/step', + hideInMenu: true, + }, ], }, { diff --git a/admin/src/pages/examination/option/index.tsx b/admin/src/pages/examination/option/index.tsx index 3d0f1ef..4350c66 100644 --- a/admin/src/pages/examination/option/index.tsx +++ b/admin/src/pages/examination/option/index.tsx @@ -11,9 +11,9 @@ 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 { queryTagList, saveExamination, removeExamination, queryExaminationList } from '../service'; +import { querySubjectList, saveExamination, removeExamination, queryExaminationList } from '../service'; import type { TableListItem, TableListPagination } from './data'; -import { DataItem } from '@antv/data-set/lib/transform/tag-cloud'; +import type { DataItem } from '@antv/data-set/lib/transform/tag-cloud'; import RegistrationList from '../registration'; /** @@ -89,7 +89,7 @@ const ExaminationList: React.FC = () => { const [detailModalVisible, handleDetailModalVisible] = useState(false); const [updateModalVisible, handleUpdateModalVisible] = useState(false); //const [registrationModalVisible, handleRegistrationModalVisible] = useState(false); - + const actionRef = useRef(); const [currentRow, setCurrentRow] = useState(); const [selectedRowsState, setSelectedRows] = useState([]); @@ -99,7 +99,7 @@ const ExaminationList: React.FC = () => { { title: '序号', key: 'index', - valueType: 'indexBorder', + valueType: 'indexBorder', width: 48, }, { @@ -108,37 +108,63 @@ const ExaminationList: React.FC = () => { valueType: 'text', hideInTable: false, hideInForm: false, - hideInSearch: true, + hideInSearch: false, }, { title: '创建日期', dataIndex: 'create_time', - valueType: 'text', + valueType: 'text', sorter: false, hideInTable: false, - hideInForm: false, + hideInForm: true, hideInSearch: true, renderText: (val: string) => `${val}`, }, { - title: '报名开始日期', + title: '报名日期', dataIndex: 'apply_start_time', - valueType: 'text', + valueType: 'datetimeRange', sorter: false, hideInTable: false, hideInForm: false, hideInSearch: true, - renderText: (val: string) => `${val}`, + render: (dom, entity) => { + return entity.apply_start_time + " - " + entity.apply_end_time; + }, }, { - title: '考试开始时间', - valueType: 'text', + title: '考试时间', + valueType: 'datetimeRange', dataIndex: 'examination_start_time', sorter: false, hideInTable: false, hideInForm: false, hideInSearch: true, - renderText: (val: string) => `${val}`, + render: (dom, entity) => { + return entity.examination_start_time + " - " + entity.examination_end_time; + }, + }, + + { + title: '关联1主题', + dataIndex: 'subject_id', + valueType: 'text', + hideInTable: true, + hideInForm: false, + hideInSearch: true, + request: async () => { + const { data: Items } = await querySubjectList({}); + // console.log(Items, ')))'); + + const sinfo = [] + for (let i = 0; i < Items.list.length; i++) { + // console.log(Items.list[i], ">>>") + sinfo.push({ label: Items.list[i].subject_name, value: Items.list[i].subject_id }) + } + console.log(sinfo, 'sinfo'); + + return sinfo; + }, }, { title: '试卷数量', @@ -227,12 +253,26 @@ const ExaminationList: React.FC = () => { , ]} request={async (value) => { - const _data = await queryExaminationList(value); + const { create_time } = value; + if (create_time) { + value.start_time = create_time[0] + value.end_time = create_time[1] + } + + + const _data = await queryExaminationList( + { + ...value, + page_number: value.current, + page_size: value.pageSize + } + ); + console.log(_data, 'form _data') return { - current: _data?.page_number, - data: _data?.data?.list, - pageSize: _data?.page_size, - total: _data?.total_row || 0, + current: _data?.pageNumber, + data: _data?.table_List, + pageSize: _data?.pageSize, + total: _data?.totalRow || 0, }; }} // dataSource={list} @@ -277,16 +317,36 @@ const ExaminationList: React.FC = () => { }} footer={null} centered - >{ console.log('currentRow',currentRow)} + >{console.log('currentRow', currentRow)} {currentRow?.name && ( column={2} /* title={currentRow?.name} */ dataSource={currentRow} - /* - request={async () => ({ - data: currentRow || {}, - })}*/ + request={async (value) => { + console.log(value, 'form value') + const { create_time } = value; + if (create_time) { + value.start_time = create_time[0] + value.end_time = create_time[1] + } + const _data = await getExaminationList( + { + ...value, + rules_type: 0, + + page_number: value.current, + page_size: value.pageSize + } + ); + + return { + current: _data?.pageNumber, + data: _data?.table_List, + pageSize: _data?.pageSize, + total: _data?.totalRow || 0, + }; + }} params={{ id: currentRow?.examination_id, }} diff --git a/admin/src/pages/examination/service.ts b/admin/src/pages/examination/service.ts index b5f0a6e..aa34b5d 100644 --- a/admin/src/pages/examination/service.ts +++ b/admin/src/pages/examination/service.ts @@ -19,7 +19,7 @@ export async function queryExaminationList( /** 页面的容量 */ page_size?: number; success?: boolean; - }>('/api/zygh/training/examination/getExaminationList', { + }>('/dsideal_yy/zygh/training/examination/getExaminationList', { method: 'GET', params: { ...params, @@ -28,6 +28,22 @@ export async function queryExaminationList( }); } + +/** + * 获取主题列表 + * http://10.10.14.252:8080/workspace/myWorkspace.do?projectId=382#6426 + * @param params + * @returns + */ +export async function querySubjectList(params: { + page_size: number; + //count: number; +}): Promise<{ data: { list: CardListItemDataType[] } }> { + return request('/dsideal_yy/ypt/careerTraining/subject/listSubject', { + params, + }); +} + /** 获取证书列表 GET /dsideal_yy/zygh/training/examination/getExaminationList */ export async function queryCertificateList( params: { diff --git a/admin/src/pages/examinationrules/attestation/index.tsx b/admin/src/pages/examinationrules/attestation/index.tsx index 99483ab..67a96b6 100644 --- a/admin/src/pages/examinationrules/attestation/index.tsx +++ b/admin/src/pages/examinationrules/attestation/index.tsx @@ -10,8 +10,7 @@ import { BetaSchemaForm, ModalForm, ProFormText, ProFormTextArea } from '@ant-de 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 { queryTagList, saveExamination, removeExamination, queryRulesList } from '../service'; +import { querySubjectList, saveExamination, removeExamination, queryRulesList } from '../service'; import type { TableListItem, TableListPagination } from './data'; import type { DataItem } from '@antv/data-set/lib/transform/tag-cloud'; @@ -111,12 +110,12 @@ const ExaminationRules: React.FC = () => { width: 48, }, { - title: '考试名称', - dataIndex: 'subject_name', + title: '规则名称', + dataIndex: 'rules_name', valueType: 'text', hideInTable: false, hideInForm: false, - hideInSearch: false, + hideInSearch: true, }, { title: '考试时长', @@ -135,16 +134,40 @@ const ExaminationRules: React.FC = () => { hideInTable: false, hideInForm: false, hideInSearch: true, + + }, + { + title: '关联主题', + dataIndex: 'subject_id', + valueType: 'text', + hideInTable: true, + hideInForm: false, + hideInSearch: false, + request: async () => { + const { data: Items } = await querySubjectList({}); + // console.log(Items, ')))'); + + const sinfo = [] + for (let i = 0; i < Items.list.length; i++) { + // console.log(Items.list[i], ">>>") + sinfo.push({ label: Items.list[i].subject_name, value: Items.list[i].subject_id }) + } + console.log(sinfo, 'sinfo'); + + return sinfo; + }, }, { title: '创建日期', dataIndex: 'create_time', - valueType: 'text', + valueType: 'dateRange', sorter: false, hideInTable: false, hideInForm: false, hideInSearch: false, - // renderText: (val: string) => `${val}`, + render: (dom, entity) => { + return entity.create_time + }, }, { @@ -185,8 +208,7 @@ const ExaminationRules: React.FC = () => { { - handleUpdateModalVisible(true); - setCurrentRow(record); + history.push('/examinationrules/attestation/step/' + record.id) }} > 编辑 @@ -226,10 +248,15 @@ const ExaminationRules: React.FC = () => { history.push('/examinationrules/attestation/step') }} > - 新建考试 + 新建考试规则 , ]} request={async (value) => { + const { create_time } = value; + if (create_time) { + value.start_time = create_time[0] + value.end_time = create_time[1] + } const _data = await queryRulesList( { ...value, diff --git a/admin/src/pages/examinationrules/attestation/step/index.tsx b/admin/src/pages/examinationrules/attestation/step/index.tsx index 5f134d8..241cb84 100644 --- a/admin/src/pages/examinationrules/attestation/step/index.tsx +++ b/admin/src/pages/examinationrules/attestation/step/index.tsx @@ -1,5 +1,5 @@ import React, { useRef } from 'react'; -import { history, useParams } from 'umi'; +import { history, useParams, useRequest } from 'umi'; import type { ProFormInstance } from '@ant-design/pro-form'; import { ProFormRadio } from '@ant-design/pro-form'; import ProForm, { @@ -16,7 +16,7 @@ import { Button, Checkbox, Col, Divider, List, Menu, message, Radio, Row, Space, import { PageContainer } from '@ant-design/pro-layout'; import ProDescriptions from '@ant-design/pro-descriptions'; import styles from './index.less' -import { queryProvince, querySubjectList } from '../service'; +import { saveRules, querySubjectList, queryRulesView } from '../../service'; const waitTime = (time: number = 100) => { @@ -34,6 +34,18 @@ export default () => { const formRef = useRef(); const params = useParams(); console.log(params, 'params'); + let ruleData = {} + if (params.id) { + console.log(JSON.stringify(params), "878"); + + const { data } = useRequest(async () => { + const { bean } = await queryRulesView(params); + return { data: bean } + }); + ruleData = data + } + console.log(ruleData, 'ruleData'); + return ( @@ -63,47 +75,74 @@ export default () => { stepProps={{ description: false, }} - onFinish={async () => { - console.log(formRef.current?.getFieldsValue()); - await waitTime(2000); + onFinish={async (fileds) => { + if (params.id) { + fileds = { ...fileds, id: params.id } + } + console.log(fileds, 'fileds', params); + // return false + await saveRules({ + ...fileds, + b_use: 0, + rules_type: 1, + start_time: fileds.dateRange[0], + end_time: fileds.dateRange[1] + }); + + // await waitTime(2000); return true; + }} > - - - + - request={async () => { - return querySubjectList().then(({ data }) => { - console.log(data) - return data.list.map((item) => { - return { - label: item.subject_name, - value: item.subject_id, - }; - }); - }); - }} - rules={[{ required: true, message: '请选择主题' }]} - name="unusedMode" - label="关联主题" - /> - + { + return querySubjectList().then(({ data }) => { + console.log(data, 'querySubjectList') + return data.list.map((item) => { + return { + label: item.subject_name, + value: item.subject_id, + }; + }); + }); + }} + rules={[{ required: true, message: '请选择主题' }]} + name="subject_id" + label="关联主题" + /> + + + + + + )} diff --git a/admin/src/pages/examinationrules/normal/index.tsx b/admin/src/pages/examinationrules/normal/index.tsx index 6436c7c..26cf245 100644 --- a/admin/src/pages/examinationrules/normal/index.tsx +++ b/admin/src/pages/examinationrules/normal/index.tsx @@ -11,7 +11,7 @@ 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 { queryTagList, saveExamination, removeExamination, queryRulesList } from '../service'; +import { querySubjectList, saveExamination, removeExamination, queryRulesList } from '../service'; import type { TableListItem, TableListPagination } from './data'; import type { DataItem } from '@antv/data-set/lib/transform/tag-cloud'; @@ -116,7 +116,7 @@ const ExaminationRules: React.FC = () => { valueType: 'text', hideInTable: false, hideInForm: false, - hideInSearch: false, + hideInSearch: true, }, { title: '考试时长', @@ -135,6 +135,28 @@ const ExaminationRules: React.FC = () => { hideInTable: false, hideInForm: false, hideInSearch: true, + + }, + { + title: '关联主题', + dataIndex: 'subject_id', + valueType: 'text', + hideInTable: true, + hideInForm: false, + hideInSearch: false, + request: async () => { + const { data: Items } = await querySubjectList({}); + // console.log(Items, ')))'); + + const sinfo = [] + for (let i = 0; i < Items.list.length; i++) { + // console.log(Items.list[i], ">>>") + sinfo.push({ label: Items.list[i].subject_name, value: Items.list[i].subject_id }) + } + console.log(sinfo, 'sinfo'); + + return sinfo; + }, }, { title: '创建日期', @@ -144,7 +166,9 @@ const ExaminationRules: React.FC = () => { hideInTable: false, hideInForm: false, hideInSearch: false, - renderText: (val: string) => `${val}`, + render: (dom, entity) => { + return entity.create_time + }, }, { @@ -170,7 +194,6 @@ const ExaminationRules: React.FC = () => { dataIndex: 'option', valueType: 'option', render: (_dom: any, record: React.SetStateAction) => { - console.log(record, 'record') return [ // { , ]} request={async (value) => { + console.log(value, 'form value') + const { create_time } = value; + if (create_time) { + value.start_time = create_time[0] + value.end_time = create_time[1] + } const _data = await queryRulesList( { ...value, rules_type: 0, + page_number: value.current, page_size: value.pageSize }