MarkSettingWork.vue 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. <template lang="html">
  2. <div>
  3. <section class="content">
  4. <div class="box box-info">
  5. <div class="box-body">
  6. <el-form
  7. :inline="true"
  8. :model="formSearch"
  9. label-position="right"
  10. label-width="100px"
  11. >
  12. <el-form-item label="评卷工作名称" class="pull-left">
  13. <el-input
  14. placeholder="评卷工作名称"
  15. v-model="formSearch.name"
  16. @keyup.native="searchMarkWork"
  17. ></el-input>
  18. </el-form-item>
  19. <!-- <el-form-item class="pull-right"> -->
  20. <!--
  21. <el-button type="primary" icon="search" @click="searchMarkWork">查询</el-button>
  22. -->
  23. <!-- </el-form-item> -->
  24. </el-form>
  25. <el-table
  26. stripe
  27. v-loading="loading"
  28. element-loading-text="拼命加载中"
  29. :data="tableData"
  30. border
  31. style="width: 100%"
  32. >
  33. <el-table-column label="评卷工作名称" width="250" prop="name">
  34. </el-table-column>
  35. <el-table-column label="考试批次" width="250" prop="examName">
  36. </el-table-column>
  37. <el-table-column label="考试类型" width="100">
  38. <template slot-scope="scope">
  39. <div>
  40. <span>{{ scope.row.examType | examTypeFilter }}</span>
  41. </div>
  42. </template>
  43. </el-table-column>
  44. <el-table-column label="进度" width="100">
  45. <template slot-scope="scope">
  46. <div>
  47. <span>{{ Number.parseFloat(scope.row.progress) }}%</span>
  48. </div>
  49. </template>
  50. </el-table-column>
  51. <el-table-column label="备注" width="100" prop="remark">
  52. </el-table-column>
  53. <el-table-column :context="_self" label="操作">
  54. <template slot-scope="scope">
  55. <div class="pull-left">
  56. <span v-if="isAdmin">
  57. <span v-if="routeType == 'overview'">
  58. <el-button
  59. @click="markWorkOverview(scope.row)"
  60. type="primary"
  61. size="mini"
  62. plain
  63. >评卷进度</el-button
  64. >
  65. </span>
  66. <span v-if="routeType == 'marker'">
  67. <el-button
  68. @click="marker(scope.row)"
  69. type="primary"
  70. size="mini"
  71. plain
  72. >评卷员一览</el-button
  73. >
  74. </span>
  75. <span v-if="routeType == 'setting'">
  76. <el-button
  77. @click="settingMarkWork(scope.row)"
  78. type="primary"
  79. size="mini"
  80. plain
  81. >评卷设置</el-button
  82. >
  83. </span>
  84. <span v-if="routeType == 'checking'">
  85. <el-button
  86. @click="paperCheck(scope.row)"
  87. type="primary"
  88. size="mini"
  89. plain
  90. >试卷检查</el-button
  91. >
  92. </span>
  93. <span v-if="routeType == 'grade'">
  94. <el-button
  95. @click="viewGrade(scope.row)"
  96. type="primary"
  97. size="mini"
  98. plain
  99. >成绩查询</el-button
  100. >
  101. </span>
  102. </span>
  103. <span v-if="isMarker && routeType == 'marking'">
  104. <el-button
  105. @click="marking(scope.row)"
  106. type="primary"
  107. size="mini"
  108. plain
  109. >评阅试卷</el-button
  110. >
  111. </span>
  112. </div>
  113. </template>
  114. </el-table-column>
  115. </el-table>
  116. <div class="page pull-right">
  117. <el-pagination
  118. background
  119. @current-change="handleCurrentChange"
  120. @size-change="handleSizeChange"
  121. :current-page="currentPage"
  122. :page-size="pageSize"
  123. :page-sizes="[10, 20, 50, 100]"
  124. layout="total, sizes, prev, pager, next, jumper"
  125. :total="total"
  126. >
  127. </el-pagination>
  128. </div>
  129. </div>
  130. </div>
  131. </section>
  132. </div>
  133. </template>
  134. <script>
  135. import { DATA_PROCESS_API } from "@/constants/constants";
  136. import { mapState } from "vuex";
  137. export default {
  138. data() {
  139. return {
  140. formSearch: {
  141. name: ""
  142. },
  143. tableData: [],
  144. totalTableData: [],
  145. currentPage: 1,
  146. pageSize: 10,
  147. total: 0,
  148. markWorkId: "",
  149. loading: false,
  150. isMarkingView: true
  151. };
  152. },
  153. methods: {
  154. initMarkWork() {
  155. this.loading = true;
  156. if (this.isAdmin) {
  157. this.$http.get(DATA_PROCESS_API + "/markWorks").then(response => {
  158. this.totalTableData = response.data;
  159. this.total = response.data.length;
  160. this.filterMarkWork();
  161. this.paging();
  162. this.loading = false;
  163. });
  164. } else {
  165. this.$http
  166. .get(DATA_PROCESS_API + "/markWorks?userId=" + this.user.userId)
  167. .then(response => {
  168. this.totalTableData = response.data;
  169. this.total = response.data.length;
  170. this.filterMarkWork();
  171. this.paging();
  172. this.loading = false;
  173. });
  174. }
  175. },
  176. searchMarkWork() {
  177. this.filterMarkWork();
  178. this.paging();
  179. },
  180. filterMarkWork() {
  181. var tempData = this.totalTableData.filter(element => {
  182. if (this.formSearch.name) {
  183. return element.name.includes(this.formSearch.name);
  184. } else {
  185. return true;
  186. }
  187. });
  188. this.tableData = tempData;
  189. this.total = tempData.length;
  190. },
  191. handleCurrentChange(val) {
  192. this.currentPage = val;
  193. this.filterMarkWork();
  194. this.paging();
  195. //this.searchMarkWork()
  196. },
  197. handleSizeChange(val) {
  198. this.pageSize = val;
  199. this.filterMarkWork();
  200. this.paging();
  201. //this.searchMarkWork()
  202. },
  203. paging() {
  204. var start = (this.currentPage - 1) * this.pageSize;
  205. var end =
  206. this.currentPage * this.pageSize < this.total
  207. ? this.currentPage * this.pageSize
  208. : this.total;
  209. var tempData = [];
  210. console.log(`当前页: ${this.currentPage},开始:${start},结束:${end}`);
  211. for (let i = start; i < end; i++) {
  212. tempData.push(this.tableData[i]);
  213. }
  214. console.log(tempData);
  215. this.tableData = tempData;
  216. },
  217. settingMarkWork(row) {
  218. var url =
  219. "/marking/mark_setting_main/" +
  220. row.id +
  221. "/" +
  222. row.examId +
  223. "/" +
  224. row.name;
  225. this.$router.push({
  226. path: url
  227. });
  228. },
  229. markWorkOverview(row) {
  230. var url =
  231. "/marking/mark_work_overview/" +
  232. row.id +
  233. "/" +
  234. row.examId +
  235. "/" +
  236. row.name;
  237. this.$router.push({
  238. path: url
  239. });
  240. },
  241. marker(row) {
  242. var url = "/marking/marker/" + row.id + "/" + row.examId + "/" + row.name;
  243. this.$router.push({
  244. path: url
  245. });
  246. },
  247. paperCheck(row) {
  248. var url =
  249. "/marking/mark_paper_check/" +
  250. row.id +
  251. "/" +
  252. row.examId +
  253. "/" +
  254. row.examType;
  255. this.$router.push({
  256. path: url
  257. });
  258. },
  259. viewGrade(row) {
  260. var url = "/marking/mark_grade_main/" + row.examId;
  261. this.$router.push({
  262. path: url
  263. });
  264. },
  265. marking(row) {
  266. var userId = this.user.userId;
  267. var self = this;
  268. var url = "/marking/" + row.id + "/" + row.examType;
  269. self.$http
  270. .get(
  271. DATA_PROCESS_API + "/markTasks?workId=" + row.id + "&userId=" + userId
  272. )
  273. .then(response => {
  274. console.log(response);
  275. if (response.data.length > 0) {
  276. self.$router.push({
  277. path: url
  278. });
  279. } else {
  280. self.$notify({
  281. message: "没有评卷任务",
  282. type: "warning"
  283. });
  284. }
  285. });
  286. }
  287. },
  288. computed: {
  289. routeType() {
  290. return this.$route.params.type;
  291. },
  292. ...mapState({ user: state => state.user }),
  293. isAdmin() {
  294. if (sessionStorage.getItem("AdminButtonShow")) {
  295. return true;
  296. }
  297. return false;
  298. },
  299. isMarker() {
  300. if (sessionStorage.getItem("MarkButtonShow")) {
  301. return true;
  302. }
  303. return false;
  304. }
  305. },
  306. created() {
  307. this.initMarkWork();
  308. }
  309. };
  310. </script>