|
@@ -114,7 +114,7 @@
|
|
|
<a-button
|
|
|
type="primary"
|
|
|
class="tw-flex tw-items-center operation-button"
|
|
|
- @click="downloadPaperStruct"
|
|
|
+ @click="showExportModal = true"
|
|
|
>
|
|
|
<!-- <template #icon>-->
|
|
|
<!-- <UploadOutlined />-->
|
|
@@ -238,6 +238,50 @@
|
|
|
</a-form-item>
|
|
|
</a-form>
|
|
|
</a-modal>
|
|
|
+
|
|
|
+ <a-modal
|
|
|
+ v-model:visible="showExportModal"
|
|
|
+ :maskClosable="false"
|
|
|
+ :title="`导出`"
|
|
|
+ okText="确认导出"
|
|
|
+ cancelText="取消"
|
|
|
+ @ok="downloadPaperStruct"
|
|
|
+ >
|
|
|
+ <a-form
|
|
|
+ :labelCol="{ span: 6 }"
|
|
|
+ :model="exportParams"
|
|
|
+ :rules="exportRules"
|
|
|
+ ref="exportRef"
|
|
|
+ >
|
|
|
+ <a-form-item label="学校名称" name="schoolId">
|
|
|
+ <a-select
|
|
|
+ v-model:value="exportParams.schoolId"
|
|
|
+ show-search
|
|
|
+ placeholder="学校名称"
|
|
|
+ :options="uploadQuery.schoolTableData.result"
|
|
|
+ :fieldNames="{ label: 'name', value: 'id' }"
|
|
|
+ optionFilterProp="name"
|
|
|
+ >
|
|
|
+ </a-select>
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="考试批次" name="examId">
|
|
|
+ <a-select
|
|
|
+ v-model:value="exportParams.examId"
|
|
|
+ :filterOption="false"
|
|
|
+ show-search
|
|
|
+ @search="(name:string) => queryExamList(name, 'export')"
|
|
|
+ placeholder="考试批次"
|
|
|
+ >
|
|
|
+ <a-select-option
|
|
|
+ v-for="exam in uploadQuery.examTableData.result"
|
|
|
+ :key="exam.id"
|
|
|
+ :value="`${exam.id}`"
|
|
|
+ >{{ exam.name }}</a-select-option
|
|
|
+ >
|
|
|
+ </a-select>
|
|
|
+ </a-form-item>
|
|
|
+ </a-form>
|
|
|
+ </a-modal>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -275,6 +319,11 @@ const showImportModal = ref(false);
|
|
|
|
|
|
const tableLoading = ref(false);
|
|
|
|
|
|
+const exportParams = reactive<any>({
|
|
|
+ schoolId: "",
|
|
|
+ examId: "",
|
|
|
+});
|
|
|
+
|
|
|
const ImportDownloadApi: Record<
|
|
|
ImportType,
|
|
|
{
|
|
@@ -316,6 +365,10 @@ const uploadRules = {
|
|
|
{ required: true, type: "array", len: 1, message: "请选择导入文件" },
|
|
|
],
|
|
|
};
|
|
|
+const exportRules = {
|
|
|
+ schoolId: [{ required: true, message: "请选择学校" }],
|
|
|
+ examId: [{ required: true, message: "请选择考试批次" }],
|
|
|
+};
|
|
|
|
|
|
const { validate, validateInfos, resetFields } = Form.useForm(
|
|
|
uploadQuery,
|
|
@@ -344,6 +397,16 @@ const query = reactive<
|
|
|
pageNumber: 1,
|
|
|
});
|
|
|
|
|
|
+const showExportModal = ref(false);
|
|
|
+watch(showExportModal, (val: any) => {
|
|
|
+ if (val) {
|
|
|
+ exportParams.schoolId = query.schoolId;
|
|
|
+ exportParams.examId = query.examId;
|
|
|
+ querySchoolList("", "form");
|
|
|
+ } else {
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
/** table配置 */
|
|
|
const columns: TableColumnType[] = [
|
|
|
{ title: "序号", dataIndex: "index", align: "center", width: 60 },
|
|
@@ -407,10 +470,14 @@ const querySchoolList = throttle(
|
|
|
|
|
|
/** 查询考试列表 */
|
|
|
const queryExamList = throttle(
|
|
|
- async (name: string = "", type: "list" | "form" = "list") => {
|
|
|
+ async (name: string = "", type: "list" | "form" | "export" = "list") => {
|
|
|
try {
|
|
|
const isList = type === "list";
|
|
|
- const schoolId = isList ? query.schoolId : uploadQuery.schoolId;
|
|
|
+ const schoolId = isList
|
|
|
+ ? query.schoolId
|
|
|
+ : type === "form"
|
|
|
+ ? uploadQuery.schoolId
|
|
|
+ : exportParams.schoolId;
|
|
|
if (!schoolId) {
|
|
|
return Promise.reject(`schoolId got : ${schoolId}`);
|
|
|
}
|
|
@@ -482,6 +549,17 @@ watch(
|
|
|
}
|
|
|
);
|
|
|
|
|
|
+watch(
|
|
|
+ () => exportParams.schoolId,
|
|
|
+ () => {
|
|
|
+ exportParams.examId = void 0;
|
|
|
+ Object.assign(uploadQuery.examTableData, { result: [], totalCount: 0 });
|
|
|
+ if (exportParams.schoolId) {
|
|
|
+ queryExamList("", "export");
|
|
|
+ }
|
|
|
+ }
|
|
|
+);
|
|
|
+
|
|
|
const currentPageChange = ({
|
|
|
current,
|
|
|
pageSize,
|
|
@@ -494,15 +572,22 @@ const currentPageChange = ({
|
|
|
query.pageSize = pageSize;
|
|
|
};
|
|
|
|
|
|
+const exportRef = ref();
|
|
|
/** 导出主观题 */
|
|
|
const downloadPaperStruct = async () => {
|
|
|
try {
|
|
|
- await downloadPaperStructHttp({
|
|
|
- ...query,
|
|
|
- groupFinish: [void 0, true, false][query.groupFinish],
|
|
|
- });
|
|
|
- } catch (error) {
|
|
|
- return Promise.reject(error);
|
|
|
+ await exportRef.value.validateFields();
|
|
|
+ try {
|
|
|
+ await downloadPaperStructHttp({
|
|
|
+ ...query,
|
|
|
+ groupFinish: [void 0, true, false][query.groupFinish],
|
|
|
+ ...exportParams,
|
|
|
+ });
|
|
|
+ } catch (error) {
|
|
|
+ return Promise.reject(error);
|
|
|
+ }
|
|
|
+ } catch (errorInfo) {
|
|
|
+ console.log("Failed:", errorInfo);
|
|
|
}
|
|
|
};
|
|
|
|