GenPaper.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759
  1. <template>
  2. <section class="content">
  3. <div v-show="isClear == 1">
  4. <LinkTitlesCustom :currentPaths="['题库管理 ', '考试试卷管理']" />
  5. </div>
  6. <div class="box-body">
  7. <el-form
  8. :inline="true"
  9. :model="formSearch"
  10. label-position="right"
  11. label-width="70px"
  12. >
  13. <el-row>
  14. <el-col :span="6">
  15. <el-form-item label="课程名称">
  16. <el-select
  17. class="search_width"
  18. v-model="formSearch.courseNo"
  19. filterable
  20. :remote-method="getCourses"
  21. remote
  22. clearable
  23. placeholder="全部"
  24. size="small"
  25. >
  26. <el-option
  27. v-for="item in courseInfoSelect"
  28. :label="item.courseInfo"
  29. :value="item.courseNo"
  30. :key="item.courseNo"
  31. >
  32. </el-option>
  33. </el-select>
  34. </el-form-item>
  35. </el-col>
  36. <el-col :span="6">
  37. <el-form-item label="试卷名称">
  38. <el-input
  39. class="search_width"
  40. v-model="formSearch.name"
  41. placeholder="试卷名称"
  42. size="small"
  43. ></el-input>
  44. </el-form-item>
  45. </el-col>
  46. <el-col :span="6">
  47. <el-form-item label="层次">
  48. <el-select
  49. class="search_width"
  50. v-model="formSearch.level"
  51. clearable
  52. placeholder="请选择"
  53. size="small"
  54. >
  55. <el-option
  56. v-for="item in levelList"
  57. :label="item.label"
  58. :value="item.value"
  59. :key="item.value"
  60. >
  61. </el-option>
  62. </el-select>
  63. </el-form-item>
  64. </el-col>
  65. <el-col :span="6">
  66. <div class="search_down">
  67. <el-button size="small" type="primary" @click="searchGenPaper"
  68. ><i class="el-icon-search"></i> 查询</el-button
  69. >
  70. <el-button size="small" @click="resetForm"
  71. ><i class="el-icon-refresh"></i> 重 置</el-button
  72. >
  73. <el-button size="small" type="primary" @click="genPaperDetail"
  74. ><i class="el-icon-plus"></i> 组卷</el-button
  75. >
  76. </div>
  77. </el-col>
  78. </el-row>
  79. <div
  80. style="width: 100%; border-bottom: 1px solid #ddd; margin: 10px 0;"
  81. ></div>
  82. <el-row>
  83. <el-form-item>
  84. <span>批量操作:</span>
  85. <el-button
  86. size="small"
  87. type="primary"
  88. @click="openBatchExportPaperDialog"
  89. ><i class="el-icon-download"></i> 下载成卷</el-button
  90. >
  91. <el-button size="small" type="danger" @click="batchDeleteGenPaper">
  92. <i class="el-icon-delete"></i> 删除成卷
  93. </el-button>
  94. </el-form-item>
  95. </el-row>
  96. </el-form>
  97. <div style="width: 100%;margin-bottom: 10px;"></div>
  98. <el-table
  99. v-loading="loading"
  100. element-loading-text="拼命加载中"
  101. :data="tableData"
  102. border
  103. style="width: 100%"
  104. @selection-change="selectChange"
  105. >
  106. <el-table-column type="selection" width="35"></el-table-column>
  107. <el-table-column label="课程名称" width="180">
  108. <template slot-scope="scope">
  109. <span>{{ scope.row.course.name }}</span>
  110. </template>
  111. </el-table-column>
  112. <el-table-column label="课程代码" width="80">
  113. <template slot-scope="scope">
  114. <span>{{ scope.row.course.code }}</span>
  115. </template>
  116. </el-table-column>
  117. <el-table-column label="试卷名称" width="180">
  118. <template slot-scope="scope">
  119. <span>{{ scope.row.name }}</span>
  120. </template>
  121. </el-table-column>
  122. <el-table-column label="试卷总分" width="80">
  123. <template slot-scope="scope">
  124. <span>{{ scope.row.totalScore }}</span>
  125. </template>
  126. </el-table-column>
  127. <el-table-column label="试卷难度" width="80">
  128. <template slot-scope="scope">
  129. <span>{{ scope.row.difficultyDegree }}</span>
  130. </template>
  131. </el-table-column>
  132. <el-table-column label="大题数量" width="80">
  133. <template slot-scope="scope">
  134. <span>{{ scope.row.paperDetailCount }}</span>
  135. </template>
  136. </el-table-column>
  137. <el-table-column label="录入员" width="150">
  138. <template slot-scope="scope">
  139. <span>{{ scope.row.creator }}</span>
  140. </template>
  141. </el-table-column>
  142. <el-table-column label="创建时间" width="153">
  143. <template slot-scope="scope">
  144. <span>{{ scope.row.createTime }}</span>
  145. </template>
  146. </el-table-column>
  147. <el-table-column label="修改人" width="150">
  148. <template slot-scope="scope">
  149. <span>{{ scope.row.lastModifyName }}</span>
  150. </template>
  151. </el-table-column>
  152. <el-table-column label="操作" width="180" fixed="right">
  153. <template slot-scope="scope">
  154. <div class="operate_left">
  155. <el-button
  156. size="mini"
  157. type="primary"
  158. @click="editGenPaper(scope.row)"
  159. plain
  160. ><i class="el-icon-edit"></i>编辑</el-button
  161. >
  162. <el-dropdown class="button_left">
  163. <el-button type="primary" size="mini">
  164. 更多 <i class="el-icon-arrow-down el-icon--right"></i>
  165. </el-button>
  166. <el-dropdown-menu slot="dropdown">
  167. <el-dropdown-item>
  168. <el-button
  169. size="mini"
  170. type="primary"
  171. @click="openExportDialog(scope.row)"
  172. plain
  173. ><i class="el-icon-download"></i> 下载</el-button
  174. >
  175. </el-dropdown-item>
  176. <el-dropdown-item>
  177. <el-button
  178. size="mini"
  179. type="primary"
  180. @click="previewPDF2(scope.row)"
  181. plain
  182. ><i class="el-icon-zoom-in"></i> 预览</el-button
  183. >
  184. </el-dropdown-item>
  185. <el-dropdown-item>
  186. <el-button
  187. size="mini"
  188. type="primary"
  189. @click="openPrint(scope.row)"
  190. plain
  191. ><i class="el-icon-share"></i> 发送</el-button
  192. >
  193. </el-dropdown-item>
  194. <el-dropdown-item>
  195. <el-button
  196. size="mini"
  197. type="danger"
  198. @click="deleteGenPaper(scope.row)"
  199. ><i class="el-icon-delete"></i> 删除</el-button
  200. >
  201. </el-dropdown-item>
  202. </el-dropdown-menu>
  203. </el-dropdown>
  204. </div>
  205. </template>
  206. </el-table-column>
  207. </el-table>
  208. <div class="page pull-right">
  209. <el-pagination
  210. @current-change="handleCurrentChange"
  211. :current-page="currentPage"
  212. :page-size="pageSize"
  213. layout="total, prev, pager, next, jumper"
  214. :total="total"
  215. >
  216. </el-pagination>
  217. </div>
  218. </div>
  219. <el-dialog title="导出" :visible.sync="exportDialog">
  220. <el-form :model="exportModel" label-position="right" label-width="80px">
  221. <el-row v-if="isShow">
  222. <el-col :md="12">
  223. <el-form-item label="课程名称">
  224. {{ exportModel.courseName }}
  225. </el-form-item>
  226. </el-col>
  227. </el-row>
  228. <el-row v-if="isShow">
  229. <el-col :md="12">
  230. <el-form-item label="课程代码">
  231. {{ exportModel.courseCode }}
  232. </el-form-item>
  233. </el-col>
  234. </el-row>
  235. <el-row>
  236. <el-col :md="24">
  237. <el-form-item label="导出内容">
  238. <el-checkbox-group v-model="exportModel.exportContentList">
  239. <el-checkbox label="PAPER">试卷</el-checkbox>
  240. <el-checkbox label="ANSWER">答案</el-checkbox>
  241. <el-checkbox label="COMPUTERTEST_PACKAGE"
  242. >机考数据包</el-checkbox
  243. >
  244. <el-checkbox
  245. v-if="isShowPrintExamPackage"
  246. label="PRINT_EXAM_PACKAGE"
  247. >分布式印刷数据包
  248. </el-checkbox>
  249. <el-input
  250. v-if="isShowPrintExamPackagePassword"
  251. v-model="printExamPackagePassword"
  252. placeholder="加密密码 (可选)"
  253. type="password"
  254. style="width: 150px"
  255. ></el-input>
  256. </el-checkbox-group>
  257. </el-form-item>
  258. </el-col>
  259. </el-row>
  260. <el-row>
  261. <el-col :md="24" class="text-center">
  262. <el-button type="primary" @click="exportPaperInfo"
  263. >开始导出</el-button
  264. >
  265. </el-col>
  266. </el-row>
  267. </el-form>
  268. </el-dialog>
  269. <el-dialog title="传送印刷平台" :visible.sync="dialogModel" width="500px">
  270. <el-form
  271. :model="printFrom"
  272. ref="printFrom"
  273. :rules="rules"
  274. label-position="right"
  275. label-width="120px"
  276. inline-message
  277. >
  278. <el-row>
  279. <el-form-item label="学校名称">
  280. <el-input
  281. class="dialog_input_width"
  282. v-model="this.Org.name"
  283. :disabled="true"
  284. ></el-input>
  285. </el-form-item>
  286. </el-row>
  287. <el-row>
  288. <el-form-item label="考试名称" prop="examId">
  289. <el-select
  290. class="dialog_input_width"
  291. v-model="printFrom.examId"
  292. filterable
  293. clearable
  294. :remote-method="getExams"
  295. remote
  296. placeholder="请选择"
  297. >
  298. <el-option
  299. v-for="item in examList"
  300. :label="item.name"
  301. :value="item.id"
  302. :key="item.id"
  303. ></el-option>
  304. </el-select>
  305. </el-form-item>
  306. </el-row>
  307. <el-row class="margin_top_10 margin_left_120">
  308. <el-button type="primary" @click="sendPrint('printFrom')"
  309. >保 存</el-button
  310. >
  311. <el-button @click="resetForm2('printFrom')"
  312. ><i class="el-icon-refresh"></i> 重 置</el-button
  313. >
  314. <el-button @click="cancel('printFrom')" type="primary"
  315. ><i class="el-icon-arrow-left"></i> 返 回</el-button
  316. >
  317. </el-row>
  318. </el-form>
  319. </el-dialog>
  320. </section>
  321. </template>
  322. <script>
  323. import { CORE_API, QUESTION_API, EXAM_WORK_API } from "@/constants/constants";
  324. import { LEVEL_TYPE } from "../constants/constants";
  325. import { mapState } from "vuex";
  326. import LinkTitlesCustom from "@/components/LinkTitlesCustom.vue";
  327. export default {
  328. components: { LinkTitlesCustom },
  329. data() {
  330. return {
  331. isClear: 0,
  332. courseLoading: false,
  333. formSearch: {
  334. courseNo: "",
  335. courseName: "",
  336. level: "",
  337. name: ""
  338. },
  339. tableData: [],
  340. currentPage: 1,
  341. pageSize: 10,
  342. total: 0,
  343. loading: false,
  344. courseList: [],
  345. levelList: LEVEL_TYPE,
  346. dialogVisible: false,
  347. selectedPaperIds: [],
  348. fileList: [],
  349. uploadAction: "",
  350. formUpload: {
  351. paperName: ""
  352. },
  353. uploadData: {},
  354. fileLoading: false,
  355. exportDialog: false,
  356. exportModel: {
  357. id: "",
  358. courseCode: "",
  359. courseName: "",
  360. exportContentList: []
  361. },
  362. isShow: true,
  363. examList: [],
  364. Org: {},
  365. dialogModel: false,
  366. rowId: "",
  367. isShowPrintExamPackage: false,
  368. isShowPrintExamPackagePassword: false,
  369. printExamPackagePassword: "",
  370. printFrom: {
  371. examId: ""
  372. },
  373. rules: {
  374. examId: [{ required: true, message: "请输入名称", trigger: "change" }]
  375. }
  376. };
  377. },
  378. methods: {
  379. resetForm() {
  380. this.formSearch = {
  381. courseNo: "",
  382. courseName: "",
  383. level: "",
  384. name: ""
  385. };
  386. },
  387. searchGenPaper() {
  388. this.loading = true;
  389. var url =
  390. QUESTION_API + "/genPaper/" + this.currentPage + "/" + this.pageSize;
  391. this.$http.get(url, { params: this.formSearch }).then(response => {
  392. this.tableData = response.data.content;
  393. this.total = response.data.totalElements;
  394. });
  395. this.loading = false;
  396. },
  397. genPaperDetail() {
  398. var courseNo = this.formSearch.courseNo;
  399. this.getCourseName(courseNo);
  400. var level = this.formSearch.level;
  401. if (!courseNo) {
  402. this.$notify({
  403. message: "请选择课程",
  404. type: "error"
  405. });
  406. } else {
  407. sessionStorage.setItem("gen_paper", JSON.stringify(this.formSearch));
  408. sessionStorage.setItem("gen_paper_currentPage", this.currentPage);
  409. this.$router.push({
  410. path: "/questions/gen_paper_detail/" + courseNo + "/" + level
  411. });
  412. }
  413. },
  414. handleCurrentChange(val) {
  415. this.currentPage = val;
  416. this.searchGenPaper();
  417. },
  418. getCourseName(courseNo) {
  419. for (let course of this.courseList) {
  420. if (course.code == courseNo) {
  421. this.formSearch.courseName = course.name;
  422. this.formSearch.level = course.level;
  423. }
  424. }
  425. },
  426. exportGenPaper(row) {
  427. window.open(
  428. QUESTION_API + "/paper/export/" + row.id + "/" + this.user.rootOrgName
  429. );
  430. },
  431. editGenPaper(row) {
  432. sessionStorage.setItem("gen_paper", JSON.stringify(this.formSearch));
  433. sessionStorage.setItem("gen_paper_currentPage", this.currentPage);
  434. this.$router.push({
  435. path: "/edit_paper/" + row.id + "/gen_paper"
  436. });
  437. },
  438. deleteGenPaper(row) {
  439. this.$confirm("确认删除试卷吗?", "提示", {
  440. type: "warning"
  441. }).then(() => {
  442. this.loading = true;
  443. this.$http.delete(QUESTION_API + "/paper/" + row.id).then(
  444. () => {
  445. this.$notify({
  446. message: "删除成功",
  447. type: "success"
  448. });
  449. this.searchGenPaper();
  450. },
  451. response => {
  452. this.$notify({
  453. message: response.data.msg,
  454. type: "error"
  455. });
  456. this.loading = false;
  457. }
  458. );
  459. });
  460. },
  461. selectChange(row) {
  462. this.selectedPaperIds = [];
  463. row.forEach(element => {
  464. this.selectedPaperIds.push(element.id);
  465. });
  466. },
  467. batchDeleteGenPaper() {
  468. var paperIds = this.paperIds;
  469. console.log("试卷id:", paperIds);
  470. if (this.selectedPaperIds.length != 0) {
  471. this.$confirm("确认删除试卷吗?", "提示", {
  472. type: "warning"
  473. }).then(() => {
  474. this.loading = true;
  475. this.$http.delete(QUESTION_API + "/paper/" + paperIds).then(
  476. () => {
  477. this.$notify({
  478. message: "删除成功",
  479. type: "success"
  480. });
  481. this.searchGenPaper();
  482. this.selectedPaperIds = [];
  483. },
  484. response => {
  485. this.$notify({
  486. message: response.data.msg,
  487. type: "error"
  488. });
  489. this.loading = false;
  490. }
  491. );
  492. });
  493. } else {
  494. this.$notify({
  495. message: "请勾选删除的数据",
  496. type: "warning"
  497. });
  498. }
  499. },
  500. //查询所有课程
  501. getCourses(query) {
  502. query = query.trim();
  503. if (query) {
  504. if (!(query.indexOf("(") > -1 && query.indexOf(")") > -1)) {
  505. this.courseLoading = true;
  506. this.$http
  507. .get(CORE_API + "/course/query?name=" + query + "&enable=true")
  508. .then(response => {
  509. this.courseList = response.data;
  510. this.courseLoading = false;
  511. });
  512. }
  513. } else {
  514. this.courseList = [];
  515. }
  516. },
  517. //打开导出弹框
  518. openExportDialog(row) {
  519. this.isShow = true;
  520. this.isShow = true;
  521. this.exportDialog = true;
  522. this.exportModel.id = row.id;
  523. this.exportModel.courseCode = row.course.code;
  524. this.exportModel.courseName = row.course.name;
  525. this.exportModel.exportContentList = [];
  526. /* 分布式印刷数据包设置 */
  527. this.isShowPrintExamPackage = true;
  528. this.isShowPrintExamPackagePassword = false;
  529. this.printExamPackagePassword = "";
  530. },
  531. //打开批量弹出框
  532. openBatchExportPaperDialog() {
  533. if (this.selectedPaperIds.length != 0) {
  534. this.exportDialog = true;
  535. this.isShow = false;
  536. this.isShow = false;
  537. this.exportModel.exportContentList = [];
  538. } else {
  539. this.$notify({
  540. message: "请勾选导出的数据",
  541. type: "warning"
  542. });
  543. }
  544. /* 分布式印刷数据包设置 */
  545. this.isShowPrintExamPackage = false;
  546. this.isShowPrintExamPackagePassword = false;
  547. this.printExamPackagePassword = "";
  548. },
  549. //导出试卷,答案,机考数据包
  550. exportPaperInfo() {
  551. if (this.exportModel.exportContentList.length == 0) {
  552. this.$notify({
  553. message: "请选择导出内容",
  554. type: "error"
  555. });
  556. return false;
  557. }
  558. if (this.printExamPackagePassword.length > 0) {
  559. var reg = /^[0-9A-Za-z]{6,12}$/;
  560. if (!reg.test(this.printExamPackagePassword)) {
  561. this.$notify({
  562. message: "加密密码请输入6至12位的数字或字母!",
  563. type: "error"
  564. });
  565. return false;
  566. }
  567. }
  568. var key = this.user.key;
  569. var token = this.user.token;
  570. if (this.isShow) {
  571. console.log("单个导出");
  572. window.location.href =
  573. QUESTION_API +
  574. "/paper/export/" +
  575. this.exportModel.id +
  576. "/" +
  577. this.exportModel.exportContentList +
  578. "/" +
  579. this.user.rootOrgName +
  580. "/" +
  581. this.user.displayName +
  582. "/onLine" +
  583. "?psw=" +
  584. this.printExamPackagePassword +
  585. "&$key=" +
  586. key +
  587. "&$token=" +
  588. token;
  589. this.exportDialog = false;
  590. } else {
  591. console.log("批量导出");
  592. var paperIds = this.paperIds;
  593. console.log(paperIds);
  594. window.location.href =
  595. QUESTION_API +
  596. "/paper/batch_export/" +
  597. paperIds +
  598. "/" +
  599. this.exportModel.exportContentList +
  600. "/" +
  601. this.user.rootOrgName +
  602. "/" +
  603. this.user.displayName +
  604. "/onLine" +
  605. "?$key=" +
  606. key +
  607. "&$token=" +
  608. token;
  609. this.exportDialog = false;
  610. console.log(paperIds);
  611. }
  612. },
  613. removeItem() {
  614. sessionStorage.removeItem("gen_paper");
  615. sessionStorage.removeItem("gen_paper_currentPage");
  616. },
  617. previewPDF2(row) {
  618. window.open(QUESTION_API + "/paper/pdf/" + row.id);
  619. },
  620. openPrint(row) {
  621. this.dialogModel = true;
  622. this.printFrom.examId = "";
  623. this.rowId = row.id;
  624. console.log("this.examList:", this.examList);
  625. },
  626. cancel(formData) {
  627. this.resetForm2(formData);
  628. this.dialogModel = false;
  629. },
  630. resetForm2(formData) {
  631. this.printFrom.examId = "";
  632. this.$refs[formData].clearValidate();
  633. },
  634. //传至印刷模块
  635. sendPrint(formData) {
  636. this.$refs[formData].validate(valid => {
  637. if (valid) {
  638. var orgId = "";
  639. for (let exam of this.examList) {
  640. if ((exam.id = this.printFrom.examId)) {
  641. orgId = exam.rootOrgId;
  642. }
  643. }
  644. if (orgId != "") {
  645. this.$http.get(
  646. QUESTION_API +
  647. "/sendPrint/" +
  648. this.rowId +
  649. "/" +
  650. this.printFrom.examId +
  651. "/" +
  652. orgId
  653. );
  654. this.$notify({
  655. message: "已推送",
  656. type: "success"
  657. });
  658. this.dialogModel = false;
  659. }
  660. } else {
  661. return false;
  662. }
  663. });
  664. },
  665. //查询考试
  666. getExams(query) {
  667. query = query.trim();
  668. this.$http
  669. .get(
  670. EXAM_WORK_API + "/exam/queryByNameLike?name=" + query + "&enable=true"
  671. )
  672. .then(response => {
  673. this.examList = response.data;
  674. });
  675. },
  676. searchExamList() {
  677. //查询所有考试
  678. this.$http
  679. .get(EXAM_WORK_API + "/exam/queryByNameLike?name=&enable=true")
  680. .then(response => {
  681. var list = response.data;
  682. for (var i = 0; i < list.length; i++) {
  683. if (list[i].examType == "TRADITION") {
  684. this.examList.push(list[i]);
  685. }
  686. }
  687. });
  688. },
  689. //根据orgId查询学校名称
  690. searchOrgName() {
  691. this.$http
  692. .get(CORE_API + "/org/rootOrg/" + this.user.rootOrgId)
  693. .then(response => {
  694. this.Org = response.data;
  695. });
  696. },
  697. initVue() {
  698. this.isClear = this.$route.params.isClear;
  699. if (this.isClear == 0 || !this.isClear) {
  700. this.removeItem();
  701. this.formSearch = {
  702. courseNo: "",
  703. courseName: "",
  704. level: "",
  705. name: ""
  706. };
  707. } else {
  708. this.formSearch = JSON.parse(sessionStorage.getItem("gen_paper"));
  709. this.currentPage =
  710. sessionStorage.getItem("gen_paper_currentPage") == null
  711. ? 1
  712. : parseInt(sessionStorage.getItem("gen_paper_currentPage"));
  713. }
  714. this.getCourses(this.formSearch.courseNo);
  715. this.searchGenPaper();
  716. }
  717. },
  718. computed: {
  719. paperIds() {
  720. var paperIds = "";
  721. for (let paperId of this.selectedPaperIds) {
  722. if (!paperIds) {
  723. paperIds += paperId;
  724. } else {
  725. paperIds += "," + paperId;
  726. }
  727. }
  728. return paperIds;
  729. },
  730. courseInfoSelect() {
  731. var courseList = [];
  732. for (let course of this.courseList) {
  733. var courseInfo = course.name + "(" + course.code + ")";
  734. var courseNo = course.code;
  735. var courseName = course.name;
  736. courseList.push({
  737. courseNo: courseNo,
  738. courseInfo: courseInfo,
  739. courseName: courseName
  740. });
  741. }
  742. return courseList;
  743. },
  744. ...mapState({ user: state => state.user })
  745. },
  746. watch: {
  747. $route: "initVue"
  748. },
  749. created() {
  750. this.initVue();
  751. this.searchExamList();
  752. this.searchOrgName();
  753. }
  754. };
  755. </script>
  756. <style scoped src="../styles/Common.css"></style>