From 95b67942cd644e450aa71d1cf213565aec4663b7 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 7 Jun 2021 17:45:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_mini/app.json | 4 +- test_mini/images/bg.png | Bin 0 -> 14217 bytes test_mini/pages/admin/candidate/index.js | 98 ++++++++++++++++++ test_mini/pages/admin/candidate/index.json | 5 + test_mini/pages/admin/candidate/index.wxml | 31 ++++++ test_mini/pages/admin/candidate/index.wxss | 1 + test_mini/pages/admin/exam/detail.js | 6 ++ test_mini/pages/admin/exam/detail.wxml | 4 +- test_mini/pages/admin/index.wxml | 2 +- test_mini/pages/candidate/detail.js | 26 ++++- test_mini/pages/candidate/detail.wxml | 24 ++++- test_mini/pages/candidate/show.js | 69 ++++++++++++ test_mini/pages/candidate/show.json | 3 + test_mini/pages/candidate/show.wxml | 5 + test_mini/pages/candidate/show.wxss | 1 + .../migrations/0034_candidate_create_admin.py | 21 ++++ test_server/crm/models.py | 2 +- test_server/crm/serializers.py | 10 +- test_server/crm/templates/index.html | 45 ++++---- test_server/crm/urls.py | 6 +- test_server/crm/views.py | 57 +++++++++- test_server/examtest/views.py | 20 ++-- 22 files changed, 394 insertions(+), 46 deletions(-) create mode 100644 test_mini/images/bg.png create mode 100644 test_mini/pages/admin/candidate/index.js create mode 100644 test_mini/pages/admin/candidate/index.json create mode 100644 test_mini/pages/admin/candidate/index.wxml create mode 100644 test_mini/pages/admin/candidate/index.wxss create mode 100644 test_mini/pages/candidate/show.js create mode 100644 test_mini/pages/candidate/show.json create mode 100644 test_mini/pages/candidate/show.wxml create mode 100644 test_mini/pages/candidate/show.wxss create mode 100644 test_server/crm/migrations/0034_candidate_create_admin.py diff --git a/test_mini/app.json b/test_mini/app.json index fed93b2..cc2cd7f 100644 --- a/test_mini/app.json +++ b/test_mini/app.json @@ -36,7 +36,9 @@ "pages/admin/login", "pages/admin/exam/add", "pages/admin/exam/detail", - "pages/admin/exam/index" + "pages/admin/exam/index", + "pages/candidate/show", + "pages/admin/candidate/index" ], "window": { "backgroundTextStyle": "light", diff --git a/test_mini/images/bg.png b/test_mini/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5342e2dcdfa2da5c696b852012d0fa675f0460 GIT binary patch literal 14217 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 G^nU=dGKca2 literal 0 HcmV?d00001 diff --git a/test_mini/pages/admin/candidate/index.js b/test_mini/pages/admin/candidate/index.js new file mode 100644 index 0000000..5e8e427 --- /dev/null +++ b/test_mini/pages/admin/candidate/index.js @@ -0,0 +1,98 @@ +// pages/admin/exam/index.js +const api = require("../../../utils/request.js"); +Page({ + + /** + * 页面的初始数据 + */ + data: { + page:1, + isLoadedAll:false, + count:0, + results:[] + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + this.getList(1) + }, + getList: function(page) { + wx.showLoading({ + title: '正在加载...', + }) + api.requesta('/crm/candidate/', 'GET', {page:page}).then(res=>{ + wx.hideLoading() + let results = this.data.results + let isLoadedAll = false + if(res.data.results){ + if(page==1){results=res.data.results}else{ + results = results.concat(res.data.results) + } + } + if(!res.data.next){ + isLoadedAll = true + } + this.setData({ + count:res.data.count, + results:results, + page:page, + isLoadedAll: isLoadedAll + }) + }).catch( + wx.hideLoading() + ) + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + this.getList(1) + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + if(!this.data.isLoadedAll){ + this.data.page=this.data.page+1 + this.getList(this.data.page) + } + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/test_mini/pages/admin/candidate/index.json b/test_mini/pages/admin/candidate/index.json new file mode 100644 index 0000000..d0f935f --- /dev/null +++ b/test_mini/pages/admin/candidate/index.json @@ -0,0 +1,5 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "出征记录", + "enablePullDownRefresh":true +} \ No newline at end of file diff --git a/test_mini/pages/admin/candidate/index.wxml b/test_mini/pages/admin/candidate/index.wxml new file mode 100644 index 0000000..af3ddf4 --- /dev/null +++ b/test_mini/pages/admin/candidate/index.wxml @@ -0,0 +1,31 @@ + + + 已发布的证书,共{{count}}张 + + +

+ {{item.consumer_name}} + {{item.number}} +

+ + 身份证号:{{item.ID_number}} + + + 工作类别:{{item.workscope_name}} + + + 期限:{{item.start_date}}至{{item.end_date}} + +
+
+ + 到底了 + + +
+
\ No newline at end of file diff --git a/test_mini/pages/admin/candidate/index.wxss b/test_mini/pages/admin/candidate/index.wxss new file mode 100644 index 0000000..6837f53 --- /dev/null +++ b/test_mini/pages/admin/candidate/index.wxss @@ -0,0 +1 @@ +/* pages/admin/candidate/index.wxss */ \ No newline at end of file diff --git a/test_mini/pages/admin/exam/detail.js b/test_mini/pages/admin/exam/detail.js index 912872b..8b05368 100644 --- a/test_mini/pages/admin/exam/detail.js +++ b/test_mini/pages/admin/exam/detail.js @@ -102,5 +102,11 @@ Page({ wx.navigateTo({ url: '/pages/test/detail?id='+e.currentTarget.dataset.id, }) + }, + goCandidate:function(e){ + let candidate_ = e.currentTarget.dataset.candidate_; + wx.navigateTo({ + url: '/pages/candidate/show?number='+candidate_.number, + }) } }) \ No newline at end of file diff --git a/test_mini/pages/admin/exam/detail.wxml b/test_mini/pages/admin/exam/detail.wxml index dc2d019..4ca686b 100644 --- a/test_mini/pages/admin/exam/detail.wxml +++ b/test_mini/pages/admin/exam/detail.wxml @@ -22,7 +22,7 @@ - 共{{tests.length}}名人员参加考试 + 共{{tests.length}}次考试记录

@@ -47,7 +47,7 @@ {{item.candidate_.number}} - + diff --git a/test_mini/pages/admin/index.wxml b/test_mini/pages/admin/index.wxml index d95310b..c41a3d2 100644 --- a/test_mini/pages/admin/index.wxml +++ b/test_mini/pages/admin/index.wxml @@ -42,7 +42,7 @@ 考试记录 - + diff --git a/test_mini/pages/candidate/detail.js b/test_mini/pages/candidate/detail.js index 10f1bc4..2e35dc8 100644 --- a/test_mini/pages/candidate/detail.js +++ b/test_mini/pages/candidate/detail.js @@ -1,4 +1,5 @@ // pages/candidate/detail.js +const api = require("../../utils/request.js"); Page({ /** @@ -12,12 +13,16 @@ Page({ * 生命周期函数--监听页面加载 */ onLoad: function (options) { - console.log(getApp().globalData.candidate_url) - this.setData({ - url:getApp().globalData.candidate_url + let id = options.id + this.getDetail(id) + }, + getDetail: function(id){ + api.request(`/crm/candidate/${id}/`, 'GET').then(res=>{ + this.setData({ + candidate:res.data + }) }) }, - /** * 生命周期函数--监听页面初次渲染完成 */ @@ -65,5 +70,18 @@ Page({ */ onShareAppMessage: function () { + }, + godetail: function(e){ + wx.navigateTo({ + url: '/pages/test/detail?id='+this.data.candidate.examtest, + }) + }, + goCandidate:function(e){ + wx.navigateTo({ + url: '/pages/candidate/show?number='+this.data.candidate.number, + }) + }, + downDoc: function(e){ + } }) \ No newline at end of file diff --git a/test_mini/pages/candidate/detail.wxml b/test_mini/pages/candidate/detail.wxml index 8813a3f..eb9d0ec 100644 --- a/test_mini/pages/candidate/detail.wxml +++ b/test_mini/pages/candidate/detail.wxml @@ -1,2 +1,24 @@ - + + + + + +

+ {{candidate.consumer_name}} + {{candidate.number}} +

+ + {{candidate.ID_number}} + + + {{candidate.workscope_name}} + + + {{candidate.start_date}}至{{candidate.end_date}} + +
+
+查看证书 +答题信息 +下载完整文档 diff --git a/test_mini/pages/candidate/show.js b/test_mini/pages/candidate/show.js new file mode 100644 index 0000000..e7c1b7b --- /dev/null +++ b/test_mini/pages/candidate/show.js @@ -0,0 +1,69 @@ +// pages/candidate/show.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + let number = options.number; + this.setData({ + url:getApp().globalData.host+'/crm/candidate/img/'+number+'/' + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/test_mini/pages/candidate/show.json b/test_mini/pages/candidate/show.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/test_mini/pages/candidate/show.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/test_mini/pages/candidate/show.wxml b/test_mini/pages/candidate/show.wxml new file mode 100644 index 0000000..029c6e5 --- /dev/null +++ b/test_mini/pages/candidate/show.wxml @@ -0,0 +1,5 @@ + + + + + diff --git a/test_mini/pages/candidate/show.wxss b/test_mini/pages/candidate/show.wxss new file mode 100644 index 0000000..0c1e445 --- /dev/null +++ b/test_mini/pages/candidate/show.wxss @@ -0,0 +1 @@ +/* pages/candidate/show.wxss */ \ No newline at end of file diff --git a/test_server/crm/migrations/0034_candidate_create_admin.py b/test_server/crm/migrations/0034_candidate_create_admin.py new file mode 100644 index 0000000..9ab195f --- /dev/null +++ b/test_server/crm/migrations/0034_candidate_create_admin.py @@ -0,0 +1,21 @@ +# Generated by Django 3.0.4 on 2021-06-07 05:44 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('crm', '0033_auto_20210606_2209'), + ] + + operations = [ + migrations.AddField( + model_name='candidate', + name='create_admin', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='创建管理员'), + ), + ] diff --git a/test_server/crm/models.py b/test_server/crm/models.py index 856d105..b712860 100644 --- a/test_server/crm/models.py +++ b/test_server/crm/models.py @@ -120,7 +120,7 @@ class Candidate(CommonModel): start_date = models.DateField('有效期始', null=True, blank=True) end_date = models.DateField('有效期止', null=True, blank=True) examtest = models.OneToOneField(to='examtest.examtest', verbose_name='关联考试', null=True, blank=True, on_delete=models.DO_NOTHING) - + create_admin = models.ForeignKey(UserProfile, verbose_name="创建管理员", null=True, blank=True, on_delete=models.SET_NULL) class Meta: verbose_name = '证书' verbose_name_plural = verbose_name diff --git a/test_server/crm/serializers.py b/test_server/crm/serializers.py index 1283c54..e5be1dd 100644 --- a/test_server/crm/serializers.py +++ b/test_server/crm/serializers.py @@ -1,5 +1,5 @@ from rest_framework import serializers -from .models import Company, Consumer, PaySubject, ConsumerPerm, ConsumerRole +from .models import Candidate, Company, Consumer, PaySubject, ConsumerPerm, ConsumerRole from question.models import Question, Questioncat from .permission import get_consumerperm_list from rbac.serializers.user_serializer import UserListSerializer @@ -72,4 +72,10 @@ class ConsumerDetailSerializer(serializers.ModelSerializer): return queryset def get_perms(self,obj): - return get_consumerperm_list(obj) \ No newline at end of file + return get_consumerperm_list(obj) + + +class CandidateSerializer(serializers.ModelSerializer): + class Meta: + model = Candidate + fields = '__all__' \ No newline at end of file diff --git a/test_server/crm/templates/index.html b/test_server/crm/templates/index.html index bb8ebe9..ad74072 100644 --- a/test_server/crm/templates/index.html +++ b/test_server/crm/templates/index.html @@ -21,7 +21,7 @@ justify-content: center; } - + .toolbar { position: fixed; top: 0; @@ -120,20 +120,22 @@ draggable="true">
高彩眉1994年03月04日生,身份证342921199403040528,于202101月参加 医学其他 辐射安全与防护考核,成绩合格。
+ data-tag="name">{{candidate.consumer_name}}, + + 身份证{{candidate.ID_number}},于 + + {{candidate.examtest.start_time|date}}参加  + {{candidate.workscope_name}} 辐射安全与防护考核,成绩合格。
编号:FS21ZJ0000070  + contenteditable="false" class="inner-cell" data-tag="certnumber">{{candidate.number}} 
-
+
+
@@ -154,30 +158,35 @@ draggable="true">
2026年01月27日{{candidate.end_date}}2021年01月27日 + style="position: absolute; width: 32mm; text-decoration: unset; font-style: normal; color: rgb(0, 0, 0); top: 91mm; left: 107.7mm; font-size: 12pt;">{{candidate.start_date}} - +