|
@@ -1,148 +1,56 @@
|
|
|
<template>
|
|
|
<div class="export-paper">
|
|
|
- <Row :gutter="20" type="flex">
|
|
|
- <Col span="12">
|
|
|
- <div class="part-box">
|
|
|
- <div class="part-title">
|
|
|
- <h2>分数图片导出</h2>
|
|
|
- </div>
|
|
|
- <Form :model="scoreFilter" ref="scoreForm" :label-width="120">
|
|
|
- <FormItem prop="imageType" label="图片类型:">
|
|
|
- <RadioGroup v-model="scoreFilter.imageType">
|
|
|
- <Radio
|
|
|
- size="large"
|
|
|
- v-for="(val, key) in IMAGE_TYPE"
|
|
|
- :key="key"
|
|
|
- :label="key * 1"
|
|
|
- >{{ val }}</Radio
|
|
|
- >
|
|
|
- </RadioGroup>
|
|
|
- </FormItem>
|
|
|
- <FormItem prop="isWatermark" label="是否分数水印:">
|
|
|
- <RadioGroup v-model="scoreFilter.isWatermark">
|
|
|
- <Radio
|
|
|
- size="large"
|
|
|
- v-for="(val, key) in BOOLEAN_TYPE"
|
|
|
- :key="key"
|
|
|
- :label="key * 1"
|
|
|
- >{{ val }}</Radio
|
|
|
- >
|
|
|
- </RadioGroup>
|
|
|
- </FormItem>
|
|
|
- <FormItem prop="isResume" label="是否续传:">
|
|
|
- <RadioGroup v-model="scoreFilter.isResume">
|
|
|
- <Radio
|
|
|
- size="large"
|
|
|
- v-for="(val, key) in BOOLEAN_TYPE"
|
|
|
- :key="key"
|
|
|
- :label="key * 1"
|
|
|
- >{{ val }}</Radio
|
|
|
- >
|
|
|
- </RadioGroup>
|
|
|
- </FormItem>
|
|
|
- <FormItem prop="nameRule" label="图片命名规则:">
|
|
|
- <RadioGroup v-model="scoreFilter.nameRule">
|
|
|
- <Radio
|
|
|
- size="large"
|
|
|
- v-for="(val, key) in EXPORT_IMAGE_NAME_TYPE"
|
|
|
- :key="key"
|
|
|
- :label="key * 1"
|
|
|
- >{{ val }}</Radio
|
|
|
- >
|
|
|
- </RadioGroup>
|
|
|
- </FormItem>
|
|
|
- <FormItem label="分数段:">
|
|
|
- <InputNumber
|
|
|
- v-model="scoreFilter.startScore"
|
|
|
- :min="1"
|
|
|
- :max="1000"
|
|
|
- :precision="0"
|
|
|
- placeholder="输入起始分数"
|
|
|
- clearable
|
|
|
- ></InputNumber>
|
|
|
- <span style="margin: 0 10px;"></span>
|
|
|
- <InputNumber
|
|
|
- v-model="scoreFilter.endScore"
|
|
|
- :min="scoreFilter.startScore"
|
|
|
- :max="1000"
|
|
|
- :precision="0"
|
|
|
- :active-change="false"
|
|
|
- placeholder="输入终止分数"
|
|
|
- clearable
|
|
|
- ></InputNumber>
|
|
|
- </FormItem>
|
|
|
- <FormItem label="文档路径:">
|
|
|
- <Input
|
|
|
- v-model="scoreFilter.savePath"
|
|
|
- placeholder="自定义文档名称及路径:例如\\考区代码\\学校\\科目\\分数段"
|
|
|
- clearable
|
|
|
- ></Input>
|
|
|
- </FormItem>
|
|
|
- </Form>
|
|
|
-
|
|
|
- <Button
|
|
|
- class="export-paper-btn"
|
|
|
- type="primary"
|
|
|
- shape="circle"
|
|
|
- @click="toExportScore"
|
|
|
- >导出</Button
|
|
|
- >
|
|
|
- </div>
|
|
|
- </Col>
|
|
|
- <Col span="12">
|
|
|
- <div class="part-box">
|
|
|
- <div class="part-title">
|
|
|
- <h2>图片解密、重命名导出</h2>
|
|
|
- </div>
|
|
|
- <Form
|
|
|
- :rules="decryptRules"
|
|
|
- :model="decryptFilter"
|
|
|
- label-position="left"
|
|
|
- inline
|
|
|
- ref="decryptForm"
|
|
|
- >
|
|
|
- <FormItem prop="imageType">
|
|
|
- <Select v-model="decryptFilter.imageType" placeholder="图片类型">
|
|
|
- <Option
|
|
|
- v-for="(val, key) in IMAGE_TYPE"
|
|
|
- :key="key"
|
|
|
- :value="key * 1"
|
|
|
- >{{ val }}</Option
|
|
|
- >
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- <FormItem prop="areaId">
|
|
|
- <Select v-model="decryptFilter.areaId" placeholder="考点">
|
|
|
- <Option
|
|
|
- v-for="area in cascadeList"
|
|
|
- :key="area.areaCode"
|
|
|
- :value="area.areaCode"
|
|
|
- :label="area.areaName"
|
|
|
- ></Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- <FormItem prop="subject">
|
|
|
- <Select v-model="decryptFilter.subject" placeholder="科目">
|
|
|
- <Option
|
|
|
- v-for="(subject, index) in subjects"
|
|
|
- :key="index"
|
|
|
- :value="subject.subject"
|
|
|
- :label="subject.name"
|
|
|
- ></Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- <br />
|
|
|
- </Form>
|
|
|
- <Button
|
|
|
- class="export-paper-btn"
|
|
|
- type="primary"
|
|
|
- shape="circle"
|
|
|
- @click="toExportDecrypt"
|
|
|
- >导出</Button
|
|
|
- >
|
|
|
- </div>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
+ <div class="part-box">
|
|
|
+ <div class="part-title">
|
|
|
+ <h2>图片解密、重命名导出</h2>
|
|
|
+ </div>
|
|
|
+ <Form
|
|
|
+ :rules="decryptRules"
|
|
|
+ :model="decryptFilter"
|
|
|
+ label-position="left"
|
|
|
+ inline
|
|
|
+ ref="decryptForm"
|
|
|
+ >
|
|
|
+ <FormItem prop="imageType">
|
|
|
+ <Select v-model="decryptFilter.imageType" placeholder="图片类型">
|
|
|
+ <Option
|
|
|
+ v-for="(val, key) in IMAGE_TYPE"
|
|
|
+ :key="key"
|
|
|
+ :value="key * 1"
|
|
|
+ >{{ val }}</Option
|
|
|
+ >
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem prop="areaId">
|
|
|
+ <Select v-model="decryptFilter.areaId" placeholder="考点">
|
|
|
+ <Option
|
|
|
+ v-for="area in cascadeList"
|
|
|
+ :key="area.areaCode"
|
|
|
+ :value="area.areaCode"
|
|
|
+ :label="area.areaName"
|
|
|
+ ></Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem prop="subject">
|
|
|
+ <Select v-model="decryptFilter.subject" placeholder="科目">
|
|
|
+ <Option
|
|
|
+ v-for="(subject, index) in subjects"
|
|
|
+ :key="index"
|
|
|
+ :value="subject.subject"
|
|
|
+ :label="subject.name"
|
|
|
+ ></Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ <br />
|
|
|
+ </Form>
|
|
|
+ <Button
|
|
|
+ class="export-paper-btn"
|
|
|
+ type="primary"
|
|
|
+ shape="circle"
|
|
|
+ @click="toExportDecrypt"
|
|
|
+ >导出</Button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -150,14 +58,9 @@
|
|
|
import {
|
|
|
subjectList,
|
|
|
areaSchoolRoomCascadeList,
|
|
|
- exportScorePictures,
|
|
|
exportDecryptPictures
|
|
|
} from "@/api";
|
|
|
-import {
|
|
|
- IMAGE_TYPE,
|
|
|
- EXPORT_IMAGE_NAME_TYPE,
|
|
|
- BOOLEAN_TYPE
|
|
|
-} from "@/constants/enumerate";
|
|
|
+import { IMAGE_TYPE } from "@/constants/enumerate";
|
|
|
import { requiredValid } from "@/plugins/formRules";
|
|
|
|
|
|
export default {
|
|
@@ -165,15 +68,6 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
workId: this.$route.params.workId,
|
|
|
- scoreFilter: {
|
|
|
- imageType: 1,
|
|
|
- isWatermark: 1,
|
|
|
- isResume: 1,
|
|
|
- nameRule: 1,
|
|
|
- startScore: null,
|
|
|
- endScore: null,
|
|
|
- savePath: ""
|
|
|
- },
|
|
|
decryptFilter: {
|
|
|
imageType: "",
|
|
|
areaId: "",
|
|
@@ -185,8 +79,6 @@ export default {
|
|
|
subject: requiredValid("请选择科目")
|
|
|
},
|
|
|
IMAGE_TYPE,
|
|
|
- EXPORT_IMAGE_NAME_TYPE,
|
|
|
- BOOLEAN_TYPE,
|
|
|
subjects: [],
|
|
|
cascadeList: [],
|
|
|
schools: [],
|
|
@@ -205,36 +97,6 @@ export default {
|
|
|
const data = await subjectList(this.workId);
|
|
|
this.subjects = data.filter(item => item.enable);
|
|
|
},
|
|
|
- areaChange() {
|
|
|
- const curArea = this.cascadeList.find(
|
|
|
- item => item.areaCode === this.scoreFilter.areaId
|
|
|
- );
|
|
|
- this.schools = curArea ? curArea.schools : [];
|
|
|
- this.rooms = [];
|
|
|
- this.scoreFilter.examRoom = null;
|
|
|
- this.scoreFilter.school = null;
|
|
|
- if (curArea && curArea.schools.length === 1) {
|
|
|
- this.scoreFilter.school = curArea.schools[0].school;
|
|
|
- this.schoolChange();
|
|
|
- }
|
|
|
- },
|
|
|
- schoolChange() {
|
|
|
- const curSchool = this.schools.find(
|
|
|
- item => item.school === this.scoreFilter.school
|
|
|
- );
|
|
|
- this.rooms = curSchool ? curSchool.rooms : [];
|
|
|
- this.scoreFilter.examRoom = null;
|
|
|
- if (curSchool && curSchool.rooms.length === 1) {
|
|
|
- this.scoreFilter.examRoom = curSchool.rooms[0];
|
|
|
- }
|
|
|
- },
|
|
|
- async toExportScore() {
|
|
|
- const valid = await this.$refs.scoreForm.validate();
|
|
|
- if (!valid) return;
|
|
|
-
|
|
|
- await exportScorePictures({ ...this.scoreFilter, workId: this.workId });
|
|
|
- this.$Message.success("操作成功,后台正在导出!");
|
|
|
- },
|
|
|
async toExportDecrypt() {
|
|
|
const valid = await this.$refs.decryptForm.validate();
|
|
|
if (!valid) return;
|