diff --git a/test_client/package-lock.json b/test_client/package-lock.json index 0e758f9..0dc7a66 100644 --- a/test_client/package-lock.json +++ b/test_client/package-lock.json @@ -875,75 +875,6 @@ "to-fast-properties": "^2.0.0" } }, - "@ckeditor/ckeditor5-build-classic": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-classic/-/ckeditor5-build-classic-18.0.0.tgz", - "integrity": "sha512-7nyaDU5sUSl+7wXPwr0d5bOlO2e0LRQh2iJJCJfAjjuUESwtiBGoFC+Ql5dEht0xlfARoSWQMlkUvGuHOVja7A==" - }, - "@ckeditor/ckeditor5-core": { - "version": "18.0.0", - "resolved": "https://registry.npm.taobao.org/@ckeditor/ckeditor5-core/download/@ckeditor/ckeditor5-core-18.0.0.tgz", - "integrity": "sha1-71NcvrPEgY1GPkXnhEY/k3vy1js=", - "requires": { - "@ckeditor/ckeditor5-engine": "^18.0.0", - "@ckeditor/ckeditor5-utils": "^18.0.0", - "lodash-es": "^4.17.10" - } - }, - "@ckeditor/ckeditor5-editor-classic": { - "version": "18.0.0", - "resolved": "https://registry.npm.taobao.org/@ckeditor/ckeditor5-editor-classic/download/@ckeditor/ckeditor5-editor-classic-18.0.0.tgz", - "integrity": "sha1-YquzsVFShohUzoJJ/8MKRT8k/ek=", - "requires": { - "@ckeditor/ckeditor5-core": "^18.0.0", - "@ckeditor/ckeditor5-engine": "^18.0.0", - "@ckeditor/ckeditor5-ui": "^18.0.0", - "@ckeditor/ckeditor5-utils": "^18.0.0", - "lodash-es": "^4.17.10" - } - }, - "@ckeditor/ckeditor5-engine": { - "version": "18.0.0", - "resolved": "https://registry.npm.taobao.org/@ckeditor/ckeditor5-engine/download/@ckeditor/ckeditor5-engine-18.0.0.tgz", - "integrity": "sha1-iKtK8/zggGuQ/drZjJDRYkFlst4=", - "requires": { - "@ckeditor/ckeditor5-utils": "^18.0.0", - "lodash-es": "^4.17.10" - } - }, - "@ckeditor/ckeditor5-ui": { - "version": "18.0.0", - "resolved": "https://registry.npm.taobao.org/@ckeditor/ckeditor5-ui/download/@ckeditor/ckeditor5-ui-18.0.0.tgz", - "integrity": "sha1-GSlSk6IwAR3tU/5OYgQFppwMsRU=", - "requires": { - "@ckeditor/ckeditor5-core": "^18.0.0", - "@ckeditor/ckeditor5-utils": "^18.0.0", - "lodash-es": "^4.17.10" - } - }, - "@ckeditor/ckeditor5-upload": { - "version": "18.0.0", - "resolved": "https://registry.npm.taobao.org/@ckeditor/ckeditor5-upload/download/@ckeditor/ckeditor5-upload-18.0.0.tgz", - "integrity": "sha1-ay1FTh3+rcKQQW7UrkJNGGQktfo=", - "requires": { - "@ckeditor/ckeditor5-core": "^18.0.0", - "@ckeditor/ckeditor5-ui": "^18.0.0", - "@ckeditor/ckeditor5-utils": "^18.0.0" - } - }, - "@ckeditor/ckeditor5-utils": { - "version": "18.0.0", - "resolved": "https://registry.npm.taobao.org/@ckeditor/ckeditor5-utils/download/@ckeditor/ckeditor5-utils-18.0.0.tgz", - "integrity": "sha1-lc1mYcAA6RV+u3BSoUKp2qNLU4g=", - "requires": { - "lodash-es": "^4.17.10" - } - }, - "@ckeditor/ckeditor5-vue": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-vue/-/ckeditor5-vue-1.0.1.tgz", - "integrity": "sha512-4MaQwZ04cWwqYW0732sg2aqx9ILeHIP0LSLKUuLCLR21qYONZPvxY/V/czh1DH99toaL/iwPvEoJtO2ldriPaA==" - }, "@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Faddress%2Fdownload%2F%40hapi%2Faddress-2.1.4.tgz", @@ -3485,12 +3416,11 @@ "dev": true }, "cfb": { - "version": "1.1.3", - "resolved": "https://registry.npm.taobao.org/cfb/download/cfb-1.1.3.tgz", - "integrity": "sha1-Bd5oFiWcjovDJxOrqQVgjuOF32Y=", + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/cfb/download/cfb-1.2.0.tgz", + "integrity": "sha1-ak0IcrUl7WA0nh71H7Swv3Psqag=", "requires": { "adler-32": "~1.2.0", - "commander": "^2.16.0", "crc-32": "~1.2.0", "printj": "~1.1.2" } @@ -3577,14 +3507,6 @@ "dev": true, "optional": true }, - "ckeditor4-vue": { - "version": "0.2.0", - "resolved": "https://registry.npm.taobao.org/ckeditor4-vue/download/ckeditor4-vue-0.2.0.tgz", - "integrity": "sha1-blzFN9dsQEm31CPYapeqFBivUQA=", - "requires": { - "load-script": "^1.0.0" - } - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz", @@ -3735,7 +3657,7 @@ "dependencies": { "commander": { "version": "2.14.1", - "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.14.1.tgz?cache=0&sync_timestamp=1580710597193&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.14.1.tgz", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.14.1.tgz?cache=0&sync_timestamp=1598576046744&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.14.1.tgz", "integrity": "sha1-IjUSPjevjKPGXfRbAm29NXsBuao=" } } @@ -3797,7 +3719,8 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz", - "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=" + "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", + "dev": true }, "commondir": { "version": "1.0.1", @@ -9860,11 +9783,6 @@ } } }, - "load-script": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz", - "integrity": "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=" - }, "loader-fs-cache": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.2.tgz", @@ -9966,11 +9884,6 @@ "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=", "dev": true }, - "lodash-es": { - "version": "4.17.15", - "resolved": "https://registry.npm.taobao.org/lodash-es/download/lodash-es-4.17.15.tgz", - "integrity": "sha1-Ib2Wg5NUQS8j16EDQOXqxu5FXXg=" - }, "lodash.defaultsdeep": { "version": "4.6.1", "resolved": "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz?cache=0&sync_timestamp=1562718178896&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash.defaultsdeep%2Fdownload%2Flodash.defaultsdeep-4.6.1.tgz", @@ -13930,9 +13843,9 @@ "dev": true }, "ssf": { - "version": "0.10.2", - "resolved": "https://registry.npm.taobao.org/ssf/download/ssf-0.10.2.tgz", - "integrity": "sha1-ZbK0/N/ZZ7yOg4OkE0kAmJMRWXY=", + "version": "0.10.3", + "resolved": "https://registry.npm.taobao.org/ssf/download/ssf-0.10.3.tgz?cache=0&sync_timestamp=1593298770773&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssf%2Fdownload%2Fssf-0.10.3.tgz", + "integrity": "sha1-jq4fwpyQpVLnkhII+BiS1vd6yys=", "requires": { "frac": "~1.1.2" } @@ -16124,6 +16037,11 @@ "string-width": "^1.0.2 || 2" } }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/wmf/download/wmf-1.0.2.tgz", + "integrity": "sha1-fRnWIQcaCMK9xrfmiKnENSmMwto=" + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz", @@ -16229,22 +16147,23 @@ } }, "xlsx": { - "version": "0.15.5", - "resolved": "https://registry.npm.taobao.org/xlsx/download/xlsx-0.15.5.tgz?cache=0&sync_timestamp=1580176264177&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxlsx%2Fdownload%2Fxlsx-0.15.5.tgz", - "integrity": "sha1-N9W7gHbeczfluwdps61V0Y1o6uw=", + "version": "0.15.6", + "resolved": "https://registry.npm.taobao.org/xlsx/download/xlsx-0.15.6.tgz", + "integrity": "sha1-Rh+EHW2eoag3XizSRr8jrs4IodU=", "requires": { "adler-32": "~1.2.0", - "cfb": "^1.1.3", + "cfb": "^1.1.4", "codepage": "~1.14.0", "commander": "~2.17.1", "crc-32": "~1.2.0", "exit-on-epipe": "~1.0.1", - "ssf": "~0.10.2" + "ssf": "~0.10.3", + "wmf": "~1.0.1" }, "dependencies": { "commander": { "version": "2.17.1", - "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1580710597193&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1598576046744&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz", "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=" } } diff --git a/test_client/package.json b/test_client/package.json index c47aa17..aa72f68 100644 --- a/test_client/package.json +++ b/test_client/package.json @@ -27,7 +27,7 @@ "vue-count-to": "^1.0.13", "vue-router": "3.0.6", "vuex": "3.1.0", - "xlsx": "^0.15.5" + "xlsx": "^0.15.6" }, "devDependencies": { "@babel/core": "7.0.0", diff --git a/test_client/src/api/analyse.js b/test_client/src/api/analyse.js index 6e85016..4df08ac 100644 --- a/test_client/src/api/analyse.js +++ b/test_client/src/api/analyse.js @@ -7,3 +7,10 @@ export function getBasicCount() { }) } +export function searchCandidates(data) { + return request({ + url: '/analyse/searchcandidates/', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/test_client/src/router/index.js b/test_client/src/router/index.js index 0934cd0..74c1f4f 100644 --- a/test_client/src/router/index.js +++ b/test_client/src/router/index.js @@ -126,7 +126,7 @@ export const asyncRoutes = [ path: 'candidate', name: 'Candidate', component: () => import('@/views/analyse/candidate.vue'), - meta: { title: '成绩单查询', icon: '', perms: ['candidate_view'] } + meta: { title: '报告单查询', icon: '', perms: ['candidate_search'] } }, { path: 'consumerrule', diff --git a/test_client/src/styles/index.scss b/test_client/src/styles/index.scss index 3b4da51..4a25b38 100644 --- a/test_client/src/styles/index.scss +++ b/test_client/src/styles/index.scss @@ -61,5 +61,12 @@ div:focus { // main-container global css .app-container { - padding: 20px; + padding: 10px; } + +.el-card__body { + padding: 6px; +} +.el-card__header { + padding: 6px; +} \ No newline at end of file diff --git a/test_client/src/views/analyse/candidate.vue b/test_client/src/views/analyse/candidate.vue index 0a320d6..238ae53 100644 --- a/test_client/src/views/analyse/candidate.vue +++ b/test_client/src/views/analyse/candidate.vue @@ -1,14 +1,101 @@ + + + + + 查询报告单 + + + 可从excel复制过来,手动输入用回车间隔 + + + + + + + + + + + + + + 开始查询 + + + + + + + + + 查询结果 + + 导出结果 + + + + {{ scope.row.name }} + + + {{ scope.row.ID_number }} + + + + {{ scope.row.report_number }} + + + + {{ scope.row.issue_date }} + + + + {{ scope.row.url }} + + + + + + + + + diff --git a/test_server/analyse/urls.py b/test_server/analyse/urls.py index 04fa966..a249cd2 100644 --- a/test_server/analyse/urls.py +++ b/test_server/analyse/urls.py @@ -6,5 +6,6 @@ from .views import * urlpatterns = [ path('basic/', BasicCount.as_view()), - path('quota/', Quota.as_view()) + path('quota/', Quota.as_view()), + path('searchcandidates/', SearchCandidates.as_view()) ] diff --git a/test_server/analyse/views.py b/test_server/analyse/views.py index 7d2db71..0e4798c 100644 --- a/test_server/analyse/views.py +++ b/test_server/analyse/views.py @@ -1,4 +1,5 @@ from django.shortcuts import render +from requests.api import request from rest_framework.views import APIView from rest_framework.response import Response @@ -7,6 +8,8 @@ from examtest.models import ExamTest from question.models import Question import pickle +import requests +from lxml import etree # Create your views here. class BasicCount(APIView): @@ -29,3 +32,48 @@ class Quota(APIView): with open('quota.dat','rb') as f: data = pickle.load(f) return Response(data) + +class SearchCandidates(APIView): + perms_map = [ + {'post': 'candidate_search'}] + def post(self, request, *args, **kwargs): + names = request.data['names'] + numbers = request.data['numbers'] + names_ = names.split('\n') + numbers_ = numbers.split('\n') + names_l = [i.replace(' ', '') for i in names_ if i!=''] + numbers_l = [i.replace(' ', '') for i in numbers_ if i!=''] + candidates = [] + if len(names_l)>60: + return Response({'error':'单次批量查询不允许超过60'}) + if len(names_l) == len(numbers_l): + for i in range(len(names_l)): + payload = {'IndexModel[name]': names_l[i], 'IndexModel[identityNumber]': numbers_l[i], 'IndexModel[certNumber]':'', 'IndexModel[candidateNumber]':''} + try: + r = requests.post('https://fushe.chinansc.cn/open/candidate-list',data=payload, timeout=5) + r.raise_for_status() + r.close() + html = etree.HTML(r.text) + results = html.xpath("//table[@class='cert-table']") + try: + for i in results: + url = i.xpath('tr/td/a/@href') + name = i.xpath('tr[1]/td[1]/text()') + ID_number = i.xpath('tr[1]/td[2]/text()') + report_number = i.xpath('tr[2]/td[1]/text()') + issue_date = i.xpath('tr[2]/td[2]/text()') + jsondata = { + 'name':name[0], + 'ID_number':ID_number[0], + 'report_number':report_number[0], + 'issue_date':issue_date[0], + 'url':'https://fushe.chinansc.cn'+ url[0] + } + candidates.append(jsondata) + except: + pass + except: + pass + return Response(candidates) + else: + return Response({'error':'姓名列和身份证列不匹配!'}) \ No newline at end of file diff --git a/test_server/quota.dat b/test_server/quota.dat new file mode 100644 index 0000000..e116e6a Binary files /dev/null and b/test_server/quota.dat differ