From 0a9bc85fb3cd90bc77a410062d23821515f9e924 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sat, 4 Apr 2020 13:46:53 +0800 Subject: [PATCH] monitest jianquan --- test_client/package-lock.json | 2 +- test_client/src/api/examtest.js | 6 +++++ test_client/src/views/dashboard/index.vue | 2 +- test_client/src/views/examtest/paper.vue | 19 ++++++++++++- test_client/src/views/question/question.vue | 3 ++- test_mini/app.js | 10 ++++--- test_mini/pages/collect/main.js | 1 - test_mini/pages/cuoti/index.js | 4 +-- test_mini/pages/main/main.js | 25 ++++++++++++++---- test_mini/pages/moni/index.js | 3 --- test_mini/pages/moni/note.js | 2 +- test_mini/pages/test/test.js | 2 ++ test_mini/pages/yati/index.js | 5 +++- test_mini/project.config.json | 2 +- test_mini/utils/request.js | 16 +++++------ test_server/examtest/views.py | 8 ++++-- .../2fc12afa-761b-11ea-8aa0-1063c8f02116.xlsx | Bin 0 -> 10747 bytes .../4b03b64c-761b-11ea-a6ef-1063c8f02116.xlsx | Bin 0 -> 10770 bytes 18 files changed, 78 insertions(+), 32 deletions(-) create mode 100644 test_server/media/20200404/2fc12afa-761b-11ea-8aa0-1063c8f02116.xlsx create mode 100644 test_server/media/20200404/4b03b64c-761b-11ea-a6ef-1063c8f02116.xlsx diff --git a/test_client/package-lock.json b/test_client/package-lock.json index c843a54..51bdcc7 100644 --- a/test_client/package-lock.json +++ b/test_client/package-lock.json @@ -4974,7 +4974,7 @@ }, "echarts": { "version": "4.7.0", - "resolved": "https://registry.npm.taobao.org/echarts/download/echarts-4.7.0.tgz?cache=0&sync_timestamp=1584522755461&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fecharts%2Fdownload%2Fecharts-4.7.0.tgz", + "resolved": "https://registry.npm.taobao.org/echarts/download/echarts-4.7.0.tgz", "integrity": "sha1-Wzh1pML5HjkpQl+rq56s5+QJiz8=", "requires": { "zrender": "4.3.0" diff --git a/test_client/src/api/examtest.js b/test_client/src/api/examtest.js index c106f9c..1b58d07 100644 --- a/test_client/src/api/examtest.js +++ b/test_client/src/api/examtest.js @@ -111,4 +111,10 @@ export function updatePaper(id, data) { method: 'put', data }) +} +export function deletePaper(id) { + return request({ + url: `/examtest/paper/${id}/`, + method: 'delete', + }) } \ No newline at end of file diff --git a/test_client/src/views/dashboard/index.vue b/test_client/src/views/dashboard/index.vue index 28c544e..2da6dc6 100644 --- a/test_client/src/views/dashboard/index.vue +++ b/test_client/src/views/dashboard/index.vue @@ -39,7 +39,7 @@ export default { }, data() { return { - lineChartData: lineChartData.newVisitis + lineChartData: lineChartData.注册用户 } }, methods: { diff --git a/test_client/src/views/examtest/paper.vue b/test_client/src/views/examtest/paper.vue index 74240de..0d63e86 100644 --- a/test_client/src/views/examtest/paper.vue +++ b/test_client/src/views/examtest/paper.vue @@ -75,7 +75,7 @@ diff --git a/test_client/src/views/question/question.vue b/test_client/src/views/question/question.vue index e61c172..0bfa3f2 100644 --- a/test_client/src/views/question/question.vue +++ b/test_client/src/views/question/question.vue @@ -43,6 +43,7 @@ @click="resetFilter" >刷新重置
+ 新增 上传导入
- 新增 + Excel导入 diff --git a/test_mini/app.js b/test_mini/app.js index 97d8a49..d0a0567 100644 --- a/test_mini/app.js +++ b/test_mini/app.js @@ -8,10 +8,15 @@ App({ wx.setStorageSync('logs', logs) // 登录 + wx.showLoading({ + title: '', + mask:true + }) wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId api.request('/crm/consumer/mplogin/','POST', {code:res.code}).then(res=>{ + wx.hideLoading() if(res.code==200){ this.globalData.token = res.data.token this.globalData.userinfo = res.data.userinfo @@ -48,11 +53,10 @@ App({ globalData: { userInfo: null, userinfo: null, // 服务器传回的消费者信息 - // host: 'https://apitest.ctcshe.com', + host: 'https://apitest.ctcshe.com', mediahost: 'https://apitest.ctcshe.com', - host: 'http://127.0.0.1:8000', + // host: 'http://127.0.0.1:8000', // mediahost: 'http://127.0.0.1:8000', token : '', - subject:null, } }) \ No newline at end of file diff --git a/test_mini/pages/collect/main.js b/test_mini/pages/collect/main.js index 2e89be4..92d5f97 100644 --- a/test_mini/pages/collect/main.js +++ b/test_mini/pages/collect/main.js @@ -29,7 +29,6 @@ Page({ */ onLoad: function () { var that = this - wx.showLoading({}) api.request('/crm/consumer/collects/', 'GET').then(res => { that.data.sctms = res.data that.setData({ diff --git a/test_mini/pages/cuoti/index.js b/test_mini/pages/cuoti/index.js index 3f01ce3..9f3901a 100644 --- a/test_mini/pages/cuoti/index.js +++ b/test_mini/pages/cuoti/index.js @@ -29,7 +29,6 @@ Page({ */ onLoad: function () { var that = this - wx.showLoading({}) try { var value = wx.getStorageSync('ctms') if (value) { @@ -38,8 +37,7 @@ Page({ tmtotal: value.length }) } - wx.hideLoading() - } catch (e) { wx.hideLoading()} + } catch (e) { } try { const res = wx.getSystemInfoSync() that.setData({ diff --git a/test_mini/pages/main/main.js b/test_mini/pages/main/main.js index 20f76ec..09d40e6 100644 --- a/test_mini/pages/main/main.js +++ b/test_mini/pages/main/main.js @@ -113,10 +113,9 @@ Page({ } }, goMoni: function () { - if (getApp().globalData.userinfo.workscope) { - wx.navigateTo({ - url: '/pages/moni/index', - }) + const workscope = getApp().globalData.userinfo.workscope + if (workscope) { + this.genPaper(workscope) } else { wx.showToast({ title: '未开通权限\r\n请联系课程顾问', @@ -142,5 +141,21 @@ Page({ wx.navigateTo({ url: '/pages/test/list', }) - } + }, + genPaper: function (workId) { + wx.showLoading({ + title: '正在生成试卷', + mask:true + }) + api.request('/examtest/workscope/' + workId + '/monitest', 'GET').then(res => { + wx.hideLoading() + try { + wx.setStorageSync('examtest', res.data) + } catch (e) { } + wx.navigateTo({ + url: '/pages/moni/note', + }) + }) + + }, }) \ No newline at end of file diff --git a/test_mini/pages/moni/index.js b/test_mini/pages/moni/index.js index f0c855d..2aa2c22 100644 --- a/test_mini/pages/moni/index.js +++ b/test_mini/pages/moni/index.js @@ -74,9 +74,6 @@ Page({ }, genPaper: function () { - wx.showLoading({ - title: '正在生成试卷', - }) api.request('/examtest/workscope/' + this.data.workId + '/monitest', 'GET').then(res => { try { wx.setStorageSync('examtest', res.data) diff --git a/test_mini/pages/moni/note.js b/test_mini/pages/moni/note.js index 0f7a41f..aa421da 100644 --- a/test_mini/pages/moni/note.js +++ b/test_mini/pages/moni/note.js @@ -70,7 +70,7 @@ Page({ }, startTest: function () { - wx.redirectTo({ + wx.reLaunch({ url: '/pages/test/test', }) }, diff --git a/test_mini/pages/test/test.js b/test_mini/pages/test/test.js index 127e6eb..97c542d 100644 --- a/test_mini/pages/test/test.js +++ b/test_mini/pages/test/test.js @@ -256,6 +256,7 @@ Page({ that.data.examtest.end_time = util.formatTime(new Date()) that.data.examtest.took = Math.floor(((new Date()).getTime() - this.data.starttimes) / 1000) api.request('/examtest/examtest/', 'POST', that.data.examtest).then(res => { + wx.hideLoading() getApp().globalData.testData = res.data try { wx.removeStorageSync('examtest') @@ -264,6 +265,7 @@ Page({ wx.redirectTo({ url: 'result', }) + }) } }) \ No newline at end of file diff --git a/test_mini/pages/yati/index.js b/test_mini/pages/yati/index.js index 1bc06b3..927b1b6 100644 --- a/test_mini/pages/yati/index.js +++ b/test_mini/pages/yati/index.js @@ -111,14 +111,17 @@ Page({ startYati: function (e) { wx.showLoading({ title: '正在准备考试', + mask:true }) api.request('/examtest/paper/' + e.currentTarget.id +'/monitest/', 'GET').then(res => { + wx.hideLoading() try { wx.setStorageSync('examtest', res.data) } catch (e) { } - wx.redirectTo({ + wx.navigateTo({ url: '/pages/moni/note', }) + }) }, }) \ No newline at end of file diff --git a/test_mini/project.config.json b/test_mini/project.config.json index 8b6c1e8..465536f 100644 --- a/test_mini/project.config.json +++ b/test_mini/project.config.json @@ -4,7 +4,7 @@ "ignore": [] }, "setting": { - "urlCheck": false, + "urlCheck": true, "es6": true, "postcss": true, "minified": true, diff --git a/test_mini/utils/request.js b/test_mini/utils/request.js index 8eefb46..724b149 100644 --- a/test_mini/utils/request.js +++ b/test_mini/utils/request.js @@ -1,9 +1,6 @@ function request(url, method, data) { let promise = new Promise((resolve, reject) => { - wx.showLoading({ - title: '加载中', - mask:true - }) + wx.showNavigationBarLoading(); wx.request({ url: getApp().globalData.host + url, method: method, @@ -12,7 +9,6 @@ function request(url, method, data) { 'Authorization': 'JWT ' + getApp().globalData.token }, success: (res => { - wx.hideLoading(); if (res.data.code >= 200 && res.data.code < 400) { resolve(res.data); }else if(res.data.code == 401){ @@ -28,14 +24,18 @@ function request(url, method, data) { }), fail: (res => { - wx.hideLoading(); wx.showToast({ - title: '网络出错', + title: '请求出错', icon: 'none', duration: 1500 }) + console.log(res) reject('网络出错'); - }) + }), + complete: function () { + wx.hideNavigationBarLoading(); + } + }) }) return promise; diff --git a/test_server/examtest/views.py b/test_server/examtest/views.py index 1b82cd8..379e96d 100644 --- a/test_server/examtest/views.py +++ b/test_server/examtest/views.py @@ -56,7 +56,9 @@ class WorkScopeViewSet(ModelViewSet): filterset_fields = ['subject'] search_fields = ('^name',) - @action(methods=['get'], detail=True,url_path='monitest', url_name='gen_monitest', perms_map=[{'get':'gen_monitest'}]) + @action(methods=['get'], detail=True,url_path='monitest', url_name='gen_monitest', + authentication_classes=[],permission_classes=[], + perms_map=[{'get':'gen_monitest'}]) def monitest(self, request, pk=None): ''' 生成自助模拟考试 @@ -280,7 +282,9 @@ class PaperViewSet(ModelViewSet): else: return Response({'error':'不存在题库'}) - @action(methods=['get'], detail=True, url_path='monitest', url_name='gen_monitest', perms_map=[{'get':'gen_monitest'}]) + @action(methods=['get'], detail=True, url_path='monitest', url_name='gen_monitest', + authentication_classes=[],permission_classes=[], + perms_map=[{'get':'gen_monitest'}]) def monitest(self, request, pk=None): ''' 生成押卷模拟考试 diff --git a/test_server/media/20200404/2fc12afa-761b-11ea-8aa0-1063c8f02116.xlsx b/test_server/media/20200404/2fc12afa-761b-11ea-8aa0-1063c8f02116.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..00acacf0055e723f089ba483a650476a93a4aa54 GIT binary patch literal 10747 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 E4?~NPHUIzs literal 0 HcmV?d00001 diff --git a/test_server/media/20200404/4b03b64c-761b-11ea-a6ef-1063c8f02116.xlsx b/test_server/media/20200404/4b03b64c-761b-11ea-a6ef-1063c8f02116.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6a088380ef3c7b346514a717562772baca91f26e GIT binary patch literal 10770 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 literal 0 HcmV?d00001