|
@@ -5,6 +5,9 @@ import {
|
|
|
NDataTable,
|
|
|
NForm,
|
|
|
NFormItem,
|
|
|
+ NInput,
|
|
|
+ NInputGroup,
|
|
|
+ NInputNumber,
|
|
|
NModal,
|
|
|
NNumberAnimation,
|
|
|
NSpace,
|
|
@@ -25,6 +28,9 @@ import TheEmpty from '/src/components/TheEmpty';
|
|
|
import { initCache, setCache } from '/src/hooks/use-async';
|
|
|
import { iframeDislableKeyboard } from '/src/utils';
|
|
|
import { modalClickMask } from '/src/state';
|
|
|
+// import SearchInput from '/src/components/searchInput';
|
|
|
+import CSelect from '/src/components/CSelect';
|
|
|
+import { evaluateDifficultArray } from '/src/utils/searchArray';
|
|
|
export default defineComponent({
|
|
|
name: 'student-practiceData',
|
|
|
props: {
|
|
@@ -40,8 +46,8 @@ export default defineComponent({
|
|
|
setup(props) {
|
|
|
const userStore = useUserStore();
|
|
|
const chartRef = ref<HTMLDivElement | null>(null);
|
|
|
- const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
|
|
|
- const practiceFlag = ref(true);
|
|
|
+ // const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>);
|
|
|
+ // const practiceFlag = ref(true);
|
|
|
const payForm = reactive({
|
|
|
height: '360px',
|
|
|
width: '100%',
|
|
@@ -60,6 +66,14 @@ export default defineComponent({
|
|
|
rows: 10,
|
|
|
pageTotal: 4
|
|
|
},
|
|
|
+ searchForm: {
|
|
|
+ musicSheetName: '',
|
|
|
+ heardLevel: null, //
|
|
|
+ userMusicFlag: null, // 是否生成作品
|
|
|
+ minScore: null,
|
|
|
+ maxScore: null,
|
|
|
+ musicStartTime: []
|
|
|
+ },
|
|
|
tableList: [] as any,
|
|
|
goCourseVisiable: false
|
|
|
});
|
|
@@ -130,6 +144,20 @@ export default defineComponent({
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
+ title: '生成作品',
|
|
|
+ key: 'integrity',
|
|
|
+ render(row: any) {
|
|
|
+ return <span>{row.userMusicFlag ? '是' : '否'}</span>;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '生成时间',
|
|
|
+ key: 'userMusicTime',
|
|
|
+ render(row: any) {
|
|
|
+ return <span>{row.userMusicTime || '--'}</span>;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
title: '操作',
|
|
|
key: 'id',
|
|
|
render(row: any) {
|
|
@@ -148,9 +176,16 @@ export default defineComponent({
|
|
|
];
|
|
|
};
|
|
|
const getList = async () => {
|
|
|
+ const { musicStartTime, ...temp } = state.searchForm;
|
|
|
const res = await getPracticeRecordList({
|
|
|
userId: props.studentId,
|
|
|
...state.pagination,
|
|
|
+ ...temp,
|
|
|
+ ...getTimes(
|
|
|
+ musicStartTime,
|
|
|
+ ['userMusicStartTime', 'userMusicEndTime'],
|
|
|
+ 'YYYY-MM-DD'
|
|
|
+ ),
|
|
|
classGroupId: props.classGroupId,
|
|
|
feature: 'EVALUATION',
|
|
|
...getTimes(timer.value, ['startTime', 'endTime'], 'YYYY-MM-DD')
|
|
@@ -159,7 +194,6 @@ export default defineComponent({
|
|
|
state.pagination.pageTotal = res.data.total;
|
|
|
};
|
|
|
const gotoRecode = (row: any) => {
|
|
|
- console.log(row.id, 'gotoRecode');
|
|
|
const tockn = userStore.getToken;
|
|
|
reportSrc.value =
|
|
|
vaildMusicScoreUrl() +
|
|
@@ -181,6 +215,14 @@ export default defineComponent({
|
|
|
getNowDateAndMonday(new Date().getTime()),
|
|
|
getNowDateAndSunday(new Date().getTime())
|
|
|
];
|
|
|
+ state.searchForm = {
|
|
|
+ musicSheetName: '',
|
|
|
+ heardLevel: null, //
|
|
|
+ userMusicFlag: null, // 是否生成作品
|
|
|
+ minScore: null,
|
|
|
+ maxScore: null,
|
|
|
+ musicStartTime: []
|
|
|
+ };
|
|
|
search();
|
|
|
setCache({
|
|
|
current: { timer: timer.value },
|
|
@@ -197,18 +239,89 @@ export default defineComponent({
|
|
|
const iframeRef = ref();
|
|
|
onMounted(() => {
|
|
|
getList();
|
|
|
- console.log(props.studentId);
|
|
|
});
|
|
|
return () => (
|
|
|
<>
|
|
|
- <NForm label-placement="left" inline>
|
|
|
+ <NForm label-placement="left" inline style="flex-wrap: wrap;">
|
|
|
<NFormItem>
|
|
|
<CDatePicker
|
|
|
v-model:value={timer.value}
|
|
|
separator={'至'}
|
|
|
type="daterange"
|
|
|
+ class={styles.datePicker}
|
|
|
+ startPlaceholder="评测开始时间"
|
|
|
+ endPlaceholder="评测结束时间"
|
|
|
timerValue={timer.value}></CDatePicker>
|
|
|
</NFormItem>
|
|
|
+ <NFormItem>
|
|
|
+ <NInput
|
|
|
+ placeholder="请输入曲目名称"
|
|
|
+ v-model:value={state.searchForm.musicSheetName}
|
|
|
+ />
|
|
|
+ {/* v-model:value={state.searchForm.keyword} */}
|
|
|
+ {/* <SearchInput
|
|
|
+ {...{ placeholder: '请输入曲目名称' }}
|
|
|
+ class={styles.searchInput}
|
|
|
+ style={{ width: '160px' }}
|
|
|
+ // searchWord={state.searchForm.keyword}
|
|
|
+ // onChangeValue={(val: string) =>
|
|
|
+ // (state.searchForm.keyword = val)
|
|
|
+ // }
|
|
|
+ ></SearchInput> */}
|
|
|
+ </NFormItem>
|
|
|
+
|
|
|
+ <NFormItem>
|
|
|
+ <CSelect
|
|
|
+ {...({
|
|
|
+ options: evaluateDifficultArray,
|
|
|
+ placeholder: '请输入评测难度',
|
|
|
+ clearable: true,
|
|
|
+ inline: true
|
|
|
+ } as any)}
|
|
|
+ v-model:value={state.searchForm.heardLevel}></CSelect>
|
|
|
+ </NFormItem>
|
|
|
+ <NFormItem>
|
|
|
+ <div class={styles.inputRangeSection}>
|
|
|
+ <NInputNumber
|
|
|
+ placeholder="最小分值"
|
|
|
+ min={0}
|
|
|
+ max={state.searchForm.maxScore || 100}
|
|
|
+ showButton={false}
|
|
|
+ v-model:value={state.searchForm.minScore}></NInputNumber>
|
|
|
+ <span class={styles.pair}>-</span>
|
|
|
+ <NInputNumber
|
|
|
+ placeholder="最大分值"
|
|
|
+ min={state.searchForm.minScore || 0}
|
|
|
+ max={100}
|
|
|
+ showButton={false}
|
|
|
+ v-model:value={state.searchForm.maxScore}></NInputNumber>
|
|
|
+ </div>
|
|
|
+ </NFormItem>
|
|
|
+
|
|
|
+ <NFormItem>
|
|
|
+ <CSelect
|
|
|
+ {...({
|
|
|
+ options: [
|
|
|
+ { label: '是', value: true },
|
|
|
+ { label: '否', value: false }
|
|
|
+ ],
|
|
|
+ placeholder: '请选择是否生成作品',
|
|
|
+ clearable: true,
|
|
|
+ inline: true
|
|
|
+ } as any)}
|
|
|
+ v-model:value={state.searchForm.userMusicFlag}></CSelect>
|
|
|
+ </NFormItem>
|
|
|
+
|
|
|
+ <NFormItem>
|
|
|
+ <CDatePicker
|
|
|
+ v-model:value={state.searchForm.musicStartTime}
|
|
|
+ separator={'至'}
|
|
|
+ class={styles.datePicker}
|
|
|
+ type="daterange"
|
|
|
+ startPlaceholder="生成开始时间"
|
|
|
+ endPlaceholder="生成结束时间"
|
|
|
+ timerValue={state.searchForm.musicStartTime}></CDatePicker>
|
|
|
+ </NFormItem>
|
|
|
|
|
|
<NFormItem>
|
|
|
<NSpace justify="end">
|