diff --git a/admin/src/pages/course/subject/index.tsx b/admin/src/pages/course/subject/index.tsx index 6a1a358..f5848e2 100644 --- a/admin/src/pages/course/subject/index.tsx +++ b/admin/src/pages/course/subject/index.tsx @@ -44,7 +44,7 @@ const chapterColumns: ProColumns[] = [ { title: '课程', valueType: 'select', - dataIndex: 'course_ids', + dataIndex: 'course_names', sorter: false, hideInTable: false, hideInForm: false, diff --git a/admin/src/pages/dashboard/analysis/components/CourseRow.tsx b/admin/src/pages/dashboard/analysis/components/CourseRow.tsx index 7074a8e..7417fd8 100644 --- a/admin/src/pages/dashboard/analysis/components/CourseRow.tsx +++ b/admin/src/pages/dashboard/analysis/components/CourseRow.tsx @@ -27,11 +27,11 @@ const TrainingRow = () => {
-
111 +
{ formatter: (name, value: number) => { // const {name, value} = args; console.log('args', name) - return { name: '浏览量', value: value }; + return { name: '浏览量', value: name.browse_times }; } }} xAxis={{ @@ -49,7 +49,7 @@ const TrainingRow = () => { visible: false, }, label: { - interval: 0,//横轴信息全部显示 + interval: 0,//横轴信息全部显示 rotate: 0.3, autoEllipsis: true, style: { diff --git a/admin/src/pages/dashboard/analysis/components/IntroduceRow.tsx b/admin/src/pages/dashboard/analysis/components/IntroduceRow.tsx index c7a9efa..de091ff 100644 --- a/admin/src/pages/dashboard/analysis/components/IntroduceRow.tsx +++ b/admin/src/pages/dashboard/analysis/components/IntroduceRow.tsx @@ -60,7 +60,8 @@ const IntroduceRow = () => { formatter: (name, value: number) => { // const {name, value} = args; console.log('args', name) - return { name: '关联培训数量', value: value }; + console.log('value', value) + return { name: '关联培训数量', value: name.train_number}; } }} xAxis={{ @@ -70,7 +71,7 @@ const IntroduceRow = () => { visible: false, }, label: { - interval: 0,//横轴信息全部显示 + interval: 0,//横轴信息全部显示 rotate: 0.3,//-30度角倾斜显示 \ autoEllipsis: true, style: { diff --git a/admin/src/pages/examinationrules/components/QuestionSelector.tsx b/admin/src/pages/examinationrules/components/QuestionSelector.tsx index 1f5c651..dfa97ad 100644 --- a/admin/src/pages/examinationrules/components/QuestionSelector.tsx +++ b/admin/src/pages/examinationrules/components/QuestionSelector.tsx @@ -12,7 +12,7 @@ import styles from '../style.less'; import { forwardRef, ReactText, useEffect, useImperativeHandle, useRef, useState } from 'react'; //import { PlusOutlined, DeleteOutlined, DownloadOutlined, UploadOutlined, EditOutlined, EyeOutlined, EyeInvisibleOutlined, DownOutlined } from '@ant-design/icons'; import { useParams, useRequest, history, useRouteMatch } from 'umi'; -import { queryCourseView } from '@/pages/course/option/service'; +import { queryCourseView, queryTagList } from '@/pages/course/option/service'; import { queryQuestionList, queryQuestionType } from '@/pages/questionbank/service'; //import ProForm, { ProFormSelect } from '@ant-design/pro-form'; import type { ActionType, ProColumns } from '@ant-design/pro-table'; @@ -78,6 +78,14 @@ const QuestionSelector = (props: any, ref: any) => { hideInTable: true, hideInForm: true, hideInSearch: false, + request: async () => { + const { data: Items } = await queryTagList({}); + const tags = [] + for (let i = 0; i < Items.length; i++) { + tags.push({ label: Items[i].tag_name, value: Items[i].tag_id }) + } + return tags; + }, }, { title: '课程', diff --git a/admin/src/pages/examinationrules/normal/components/AutoSelector.tsx b/admin/src/pages/examinationrules/normal/components/AutoSelector.tsx index da15405..529d902 100644 --- a/admin/src/pages/examinationrules/normal/components/AutoSelector.tsx +++ b/admin/src/pages/examinationrules/normal/components/AutoSelector.tsx @@ -111,6 +111,7 @@ const AutoSelector = (props: any, ref: any) => { headerTitle={false} columns={columns} rowKey="id" + key="id" // value={dataSource} request={async (value) => { const { data } = await queryListChapterBySubject({ diff --git a/admin/src/pages/examinationrules/normal/step/index.tsx b/admin/src/pages/examinationrules/normal/step/index.tsx index 4bb6c38..16657db 100644 --- a/admin/src/pages/examinationrules/normal/step/index.tsx +++ b/admin/src/pages/examinationrules/normal/step/index.tsx @@ -5,11 +5,11 @@ import { ModalForm } from '@ant-design/pro-form'; import { ProFormRadio } from '@ant-design/pro-form'; import ProForm, {StepsForm, ProFormText, ProFormDatePicker, ProFormSelect, ProFormTextArea, ProFormCheckbox, ProFormDateRangePicker,} from '@ant-design/pro-form'; import ProCard from '@ant-design/pro-card'; -import { Button, Checkbox, Col, Divider, Dropdown, Form, Input, List, Menu, message, Modal, Radio, Row, Space, Table, Typography, Upload, Empty } from 'antd'; +import { Button, Checkbox, Col, Divider, Dropdown, Form, Input, List, Menu, message, Modal, Radio, Row, Space, Table, Typography, Upload, Empty, Tooltip, Popconfirm } from 'antd'; import { PageContainer } from '@ant-design/pro-layout'; import ProDescriptions from '@ant-design/pro-descriptions'; import styles from './index.less' -import { saveRules, querySubjectList, queryRulesView, queryTempQuestionList, saveQuestionTypeScore, queryRulesPaper, updateScore } from '../../service'; +import { saveRules, querySubjectList, queryRulesView, queryTempQuestionList, saveQuestionTypeScore, queryRulesPaper, updateScore, delTempQuestion, exchangeSortNum } from '../../service'; import { queryCourseView } from '@/pages/course/option/service'; import { queryQuestionList, queryQuestionById, queryQuestionType } from '@/pages/questionbank/service'; import { PlusOutlined, DownOutlined, DeleteOutlined, DownloadOutlined, UploadOutlined, EyeInvisibleOutlined, EyeOutlined, EditOutlined, ArrowDownOutlined, ArrowUpOutlined } from '@ant-design/icons'; @@ -79,6 +79,62 @@ const handleUpdatePaper = async (rules_id: number, paper_uuid: number, paper_id: } }; +/** + * 删除临时表试题(接口不支持批量) + * 参数为记录数组 + * @param ids + */ + const handleRemoveTempQuestion = async (paper_uuid: number, question_ids: [{question_id: number}]) => { + const hide = message.loading('正在删除'); + console.log('uuidPaper', paper_uuid) + if (!question_ids || !paper_uuid) return true; + try { + const {code, msg} = await delTempQuestion({ + paper_uuid: paper_uuid, + question_ids: JSON.stringify(question_ids) + }); + hide(); + if(code === 2000 ){ + message.success('删除成功,即将刷新'); + }else{ + message.warning(msg); + } + return true; + } catch (error) { + hide(); + message.error('删除失败,请重试'); + return false; + } +}; + +/** + * 组卷交换临时表试题顺序 + * @param paper_uuid + * @param question_ids + * @param rules_id + * @returns bool + */ +const handleExchangeSortNum = async (paper_uuid: number, question_ids: string, rules_id: number) => { + const hide = message.loading('正在保存修改'); + try { + const data = { + rules_id: Number(rules_id), + paper_uuid: paper_uuid, + question_ids: question_ids + } + const success = await exchangeSortNum(data); + hide(); + if(success){ + message.success('修改成功'); + } + return true; + } catch (error) { + hide(); + message.error('修改失败请重试!'); + return false; + } +}; + const labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] // 模拟考试规则维护 export default () => { @@ -284,10 +340,11 @@ export default () => { // value="锦书" // disabled /> - +{console.log(1111)} { return querySubjectList().then(({ data }) => { console.log(data, 'querySubjectList') @@ -342,7 +399,7 @@ export default () => { )} - +{console.log(2222)} { ))}
} -
- +
+ + + { + const success = await handleRemoveTempQuestion(uuidPaper, [{ question_id: item?.id }]); // 调用批量删除函数(如果接口不支持批量需要在service中处理) + if (success) { + run({ + paper_uuid: uuidPaper, + page_size: 1000, + page_number: 1 + }); // 获取当前选题列表 + } + }} + > + +
))} @@ -470,12 +560,14 @@ export default () => { console.log('typeQuestionCount', typeQuestionCount); handleScoreModalVisible(true) }}>批量设置分值 - + 请选择试题组卷并设置分值后保存} placement="bottom" color='#108ee9'> + +
@@ -563,17 +655,16 @@ export default () => { { // 需要处理 //console.log('111') - //const values = autoRef?.current?.getData() - //console.log('2222') - const values = [{"question_type":0,"chapter_list": [{ "chapter_id":76, "count":1 },{ "chapter_id":77, "count":1 }]}] - const {code, data: paper, msg} = await autoPaper({rules_id: Number(params?.id), auto_param: JSON.stringify(values)}) + const values = autoRef?.current?.getData() + console.log('values ', values ) + //const values = [{"question_type":0,"chapter_list": [{ "chapter_id":76, "count":1 },{ "chapter_id":77, "count":1 }]}] + //const {code, data: paper, msg} = await autoPaper({rules_id: Number(params?.id), auto_param: JSON.stringify(values)}) //console.log('paper', paper) //setUuidPaper(paper?.paper_uuid) // message.success('提交成功'); diff --git a/admin/src/pages/examinationrules/service.ts b/admin/src/pages/examinationrules/service.ts index 55fc54c..ee1546c 100644 --- a/admin/src/pages/examinationrules/service.ts +++ b/admin/src/pages/examinationrules/service.ts @@ -150,6 +150,7 @@ export async function queryTempQuestionList( /** 19 组卷,删除临时表数据 */ export async function delTempQuestion(data: Record, options?: Record) { + return request('/dsideal_yy/zygh/training/rules/delTempQuestion', { data, method: 'POST', diff --git a/admin/src/pages/history/analysis/components/IntroduceRow.tsx b/admin/src/pages/history/analysis/components/IntroduceRow.tsx index 5b97d7b..7aa76a7 100644 --- a/admin/src/pages/history/analysis/components/IntroduceRow.tsx +++ b/admin/src/pages/history/analysis/components/IntroduceRow.tsx @@ -36,14 +36,15 @@ let school=0; const IntroduceRow = ({ loading, visitData }: { loading: boolean; visitData: DataItem[] }) => { const [provinceId, setProvinceId] = useState(cookie.load('background_province_id') ) const [cityList, setCityList] = useState([]); - const [areaList, setAreaList] = useState([]); + const [areaList, setAreaList] = useState([{id:0,name:'全部'}]); const [schoolList, setSchoolList] = useState([]); + const [area, setArea] = useState(0); const [options, setOptions] = useState([]); const [fetching, setFetching] = useState(false); const fetchRef = useRef(0); - + console.log('areaareaarea',area) const { loading: courseBrowseTimesLoading, data: eduUnitList = null } = useRequest(() => getEduUnitList({ random_num: 277470, area_id: provinceId, @@ -114,7 +115,10 @@ const IntroduceRow = ({ loading, visitData }: { loading: boolean; visitData: Dat get_next: 1 }); form.setFieldsValue({ area: 0 }) - setAreaList(areaData || []); + const list=[{id:0,name:'全部'}]; + const areaList=list.concat(areaData); + setAreaList(areaList); + console.log('areaareaListareaListareaListList',areaList) run() } @@ -200,7 +204,18 @@ const IntroduceRow = ({ loading, visitData }: { loading: boolean; visitData: Dat defaultValue={0} onChange={(id) => { city_id=id; - getAreaData(id) + if(id!==0){ + getAreaData(id) + }else { + area_id=0; + setArea(0) + setAreaList([{id:0,name:'全部'}]) + run(); + + console.log('area-----',area); + console.log('areaList-----',areaList); + } + }} // defaultValue={provinceId} @@ -215,16 +230,20 @@ const IntroduceRow = ({ loading, visitData }: { loading: boolean; visitData: Dat + {console.log('')}