Django项目:CRM(客户关系管理系统)--79--69PerfectCRM实现CRM业务流程(bpm)学生讲师分页
- 1 # student_views.py
- 2 # ————————60PerfectCRM实现CRM学生上课记录————————
- 3 from django.shortcuts import render #页面返回
- 4 from crm import models #数据库
- 5 from django.contrib.auth.decorators import login_required # 登陆后页面才能访问
- 6
- 7 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 8 from bpm.bpm_auxiliary.pagination import Page #分页
- 9 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 10
- 11 #学生报名的课程
- 12 @login_required # 登陆后页面才能访问
- 13 def student_course(request):
- 14 if request.user.stu_account:
- 15 enrollmentlist=request.user.stu_account.enrollment_set.all()#根据账号表关联的ID获取06学员报名信息表
- 16
- 17 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 18 page = Page(request.GET.get(\'p\', 1), len(enrollmentlist)) #当前页数 默认为1 #总数量
- 19 enrollmentlist = enrollmentlist[page.start:page.end] # 切片取当前页的数据
- 20 page_str = page.page_str(\'/bpm/student_course/\') #总页数 传入url
- 21 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 22
- 23 return render(request, \'bpm_student/student_course.html\', locals())
- 24
- 25 #学生上课记录列表
- 26 @login_required # 登陆后页面才能访问
- 27 def studyrecords(request,enroll_obj_id):
- 28 enroll_obj=models.Enrollment.objects.get(id=enroll_obj_id)#根据ID获取06学员报名信息表
- 29 studyrecordlist=enroll_obj.studyrecord_set.all()#根据06学员报名信息表的ID获取09学习纪录
- 30
- 31 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 32 page = Page(request.GET.get(\'p\', 1), len(studyrecordlist)) #当前页数 默认为1 #总数量
- 33 studyrecordlist = studyrecordlist[page.start:page.end] # 切片取当前页的数据
- 34 page_str = page.page_str(\'/bpm/studyrecords/%s/\'%enroll_obj_id) #总页数 传入url
- 35 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 36
- 37 return render(request,\'bpm_student/studyrecords.html\',locals())
- 38
- 39 # ————————60PerfectCRM实现CRM学生上课记录————————
- 40
- 41 # ————————61PerfectCRM实现CRM学生上传作业————————
- 42 from django.contrib.auth.decorators import login_required #登陆才能访问
- 43 from PerfectCRM import settings #静态配置文件 #作业上传 # 上传路径
- 44 import os,json,time #系统操作
- 45 from django.shortcuts import HttpResponse #页面返回
- 46 from django.shortcuts import redirect #页面返回
- 47 #作业详情
- 48 @login_required#登陆才能访问
- 49 def homework_detail(request,enroll_obj_id,studyrecord_id):
- 50 studyrecord_obj=models.StudyRecord.objects.get(id=studyrecord_id)#取学习记录 对象
- 51 enroll_obj=models.Enrollment.objects.get(id=enroll_obj_id)#取班级对象
- 52
- 53 # 作业根目录 班级ID 上课记录ID 学习记录ID
- 54 homework_path="{base_dir}/{class_id}/{course_record_id}/{studyercord_id}/".format(
- 55 base_dir=settings.HOMEWORK_DATA, #静态配置文件
- 56 class_id=studyrecord_obj.student.enrolled_class_id,#09学习纪录#学生名字#所报班级ID号
- 57 course_record_id=studyrecord_obj.course_record_id,#09学习纪录#每节课上课纪录表
- 58 studyercord_id=studyrecord_obj.id##09学习纪录
- 59 )
- 60 print(\'homework_path路径:\',studyrecord_obj.student.enrolled_class_id,studyrecord_obj.course_record_id,studyrecord_obj.id)
- 61
- 62 if os.path.exists(homework_path):#判断目录是否存在
- 63 file_lists = [] # 已经上传的文件列表
- 64 for file_name in os.listdir( homework_path ):
- 65 f_path = \'%s/%s\' % (homework_path, file_name) # 文件名字
- 66 modify_time = time.strftime( "%Y-%m-%d %H:%M:%S", time.gmtime( os.stat( f_path ).st_mtime ) ) # 文件上传时间
- 67 file_lists.append( [file_name, os.stat( f_path ).st_size, modify_time] ) # 添加到文件列表#文件名字#文件大小文件上传时间
- 68
- 69
- 70 if request.method=="POST":#上传
- 71 ret=False
- 72 data=request.POST.get(\'data\') #ajax
- 73 if data:#如果有删除动作
- 74 del_f_path="%s/%s"%(homework_path,data)#文件路径
- 75 print(\'删除文件,路径:\',del_f_path)
- 76 os.remove(del_f_path) #删除
- 77 ret=True
- 78 return HttpResponse(json.dumps(ret))#ret=False
- 79 if request.is_ajax(): # ajax上传图片 #异步提交
- 80 print("POST",request.POST)
- 81 if not os.path.isdir( homework_path ): # 没有目录 #isdir返回true,如果路径名是指现有的目录。
- 82 os.makedirs( homework_path, exist_ok=True ) # 创建目录
- 83 for k,v in request.FILES.items():#上传的文件
- 84 with open(\'%s/%s\'%(homework_path,v.name),\'wb\') as f:#chunk 写入文件
- 85 for chunk in v.chunks(): #循环写文件
- 86 f.write(chunk)
- 87 return HttpResponse( json.dumps( {"status": 0, \'mag\': "上传完成!", \'file_lists\': file_lists} ) ) # 上传文件返回
- 88
- 89 if request.method=="POST":#上传
- 90 link = request.POST.get( \'link\' ) # 让页面POST提交的值,在页面GET后仍然存在显示
- 91 if link:
- 92 homework_link=models.StudyRecord.objects.filter( id=studyrecord_id ).update(homework_link=link)
- 93 return redirect(\'/bpm/homework_detail/%s/%s/\' %(enroll_obj_id,studyrecord_id) )#跳转到enrollment_rejection
- 94 return render(request,\'bpm_student/homework_detail.html\',locals())
- 95 # ————————61PerfectCRM实现CRM学生上传作业————————
# student_views.py
- 1 {#student_course.html#}
- 2 {## ————————60PerfectCRM实现CRM学生上课记录————————#}
- 3 {% extends \'bpm_master/bpm_sample.html\' %}
- 4 {% load bpm_tags %}
- 5 {% block right-container-content %} {#自定义内容开始 右边页面内容#}
- 6 <div class="panel-default">
- 7 <div class="panel-body">
- 8 <h4>当前用户: {{ request.user }} | 学员名字:{{ request.user.stu_account.name }} |
- 9 学员QQ:{{ request.user.stu_account }}</h4>
- 10 <ol class="breadcrumb">
- 11 <li><a href="/bpm/student_course/">我的课程</a></li>
- 12 </ol>
- 13 <table class="table table-striped table-responsive">
- 14 <thead>
- 15 <tr>
- 16 <th>校区班级</th>
- 17 <th>班级类型</th>
- 18 <th>课程进度</th>
- 19 <th>课程成绩</th>
- 20 <th>开课日期</th>
- 21 <th>结业日期</th>
- 22 </tr>
- 23 </thead>
- 24
- 25
- 26 <tbody>
- 27 {% for enroll_obj in enrollmentlist %}
- 28 <tr>
- 29 <td>{{ enroll_obj.enrolled_class }}</td>
- 30 {#校区班级#}
- 31 <td>{{ enroll_obj.enrolled_class.get_class_type_display }}</td>
- 32 {#班级类型#}
- 33 <td>
- 34 <a href="{% url \'studyrecords\' enroll_obj.id %}">已上: {{ enroll_obj.enrolled_class.courserecord_set.all.count }}节</a>
- 35 </td>
- 36 {#课程进度#}
- 37 <td>
- 38 {% get_score enroll_obj request.user.stu_account as score_data %}{{ score_data.score__sum }}</td>
- 39 {#课程成绩#}
- 40 <td>{{ enroll_obj.enrolled_class.start_date }}</td>
- 41 {#开课日期#}
- 42 <td>{{ enroll_obj.enrolled_class.end_date }}</td>
- 43 {#结业日期#}
- 44 </tr>
- 45 {% endfor %}
- 46 </tbody>
- 47 </table>
- 48
- 49 {## ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————#}
- 50 {% include \'bpm_components/page_str.html\' %}
- 51 {## ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————#}
- 52
- 53 </div>
- 54 </div>
- 55 {% endblock %}
- 56 {## ————————60PerfectCRM实现CRM学生上课记录————————#}
{#student_course.html#}
- 1 {#studyrecords.html#}
- 2 {## ————————60PerfectCRM实现CRM学生上课记录————————#}
- 3 {% extends \'bpm_master/bpm_sample.html\' %}
- 4 {% load bpm_tags %}
- 5 {% block right-container-content %} {#自定义内容开始 右边页面内容#}
- 6 <div class="panel-default">
- 7 <div class="panel-body">
- 8 <h4>当前用户: {{ request.user }} | 学员名字:{{ request.user.stu_account.name }} |
- 9 学员QQ:{{ request.user.stu_account }}</h4>
- 10 <ol class="breadcrumb">
- 11 <li><a href="/bpm/student_course/">我的课程</a></li>
- 12 <li><a href="/bpm/studyrecords/{{ enroll_obj.id }}/">{{ enroll_obj.enrolled_class }}</a></li>
- 13 </ol>
- 14
- 15 <table class="table table-striped table-responsive ">
- 16 <thead>
- 17 <tr>
- 18 <th>课程节次</th>
- 19 <th>签到状态</th>
- 20 <th>本节作业</th>
- 21 <th>本节成绩</th>
- 22 <th>本节讲师</th>
- 23 <th>上课日期</th>
- 24 <th>本节大纲</th>
- 25 <th>作业标题</th>
- 26 <th>作业要求</th>
- 27 </tr>
- 28 </thead>
- 29
- 30
- 31 <tbody>
- 32 {% for studyrecord in studyrecordlist %}
- 33 <tr>
- 34 <td>{{ studyrecord.course_record.day_num }}</td>
- 35 {#课程节次#}
- 36 <td>{{ studyrecord.get_attendance_display }}</td>
- 37 {#签到状态#}
- 38 <td>
- 39 <a href="{% url \'homework_detail\' enroll_obj.id studyrecord.id %}">
- 40 {{ studyrecord.course_record.has_homework }}
- 41 </a>
- 42 </td>
- 43 {#本节作业#}
- 44 <td>{{ studyrecord.get_score_display }}</td>
- 45 {#本节成绩#}
- 46 <td>{{ studyrecord.course_record.teacher }}</td>
- 47 {#本节讲师#}
- 48 <td>{{ studyrecord.course_record.date }}</td>
- 49 {#上课日期#}
- 50 <td>
- 51 <pre style="width: 240px;height: 60px">{{ studyrecord.course_record.outline }}</pre>
- 52 {#本节大纲#}
- 53 </td>
- 54 <td>
- 55 <pre style="width: 240px;height: 60px">{{ studyrecord.course_record.homework_title }}</pre>
- 56 {#作业标题#}
- 57 </td>
- 58 <td>
- 59 <pre style="width: 240px;height: 60px">{{ studyrecord.course_record.homework_content }}</pre>
- 60 {#作业要求#}
- 61 </td>
- 62 </tr>
- 63 {% endfor %}
- 64 </tbody>
- 65 </table>
- 66
- 67 {## ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————#}
- 68 {% include \'bpm_components/page_str.html\' %}
- 69 {## ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————#}
- 70
- 71 </div>
- 72 </div>
- 73 {% endblock %}
- 74 {## ————————60PerfectCRM实现CRM学生上课记录————————#}
{#studyrecords.html#}
- 1 # teacher_views.py
- 2 # ————————62PerfectCRM实现CRM讲师讲课记录————————
- 3 from django.contrib.auth.decorators import login_required # 登陆后页面才能访问
- 4 from django.shortcuts import render #页面返回
- 5
- 6 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 7 from bpm.bpm_auxiliary.pagination import Page #分页
- 8 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 9
- 10 # 讲师班级
- 11 @login_required # 登陆后页面才能访问
- 12 def teacher_class(request):
- 13 # user_id=request.user.id #当前登陆的ID
- 14 # classlist=models.UserProfile.objects.get(id=user_id).classlist_set.all()#讲师所教班级
- 15 classes_obj = request.user.classlist_set.all() # 根据 登陆的ID 获取02班级表
- 16
- 17 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 18 page = Page(request.GET.get(\'p\', 1), len(classes_obj)) #当前页数 默认为1 #总数量
- 19 classes_obj = classes_obj[page.start:page.end] # 切片取当前页的数据
- 20 page_str = page.page_str(\'/bpm/teacher_class/\') #总页数 传入url
- 21 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 22
- 23 return render( request, \'bpm_teacher/teacher_class.html\', locals() )
- 24
- 25 # 讲师班级课节详情
- 26 @login_required # 登陆后页面才能访问
- 27 def teacher_class_detail(request, class_id):
- 28 # user_id=request.user.id #当前登陆的ID
- 29 # classes_obj=models.UserProfile.objects.get(id=user_id).classlist_set.get(id=class_id)#所选的班级
- 30 classes_obj = request.user.classlist_set.get( id=class_id ) # 根据 登陆的ID 获取02班级表
- 31 courserecordlist = classes_obj.courserecord_set.all() # 根据 02班级表的ID 获取09学习纪录
- 32
- 33 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 34 page = Page( request.GET.get( \'p\', 1 ), len( courserecordlist ) ) # 当前页数 默认为1 #总数量
- 35 courserecordlist = courserecordlist[page.start:page.end] # 切片取当前页的数据
- 36 page_str = page.page_str(\'/bpm/teacher_class_detail/%s/\'%class_id) #总页数 传入url
- 37 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 38
- 39 return render( request, \'bpm_teacher/teacher_classes_detail.html\', locals() )
- 40 # ————————62PerfectCRM实现CRM讲师讲课记录————————
- 41
- 42 # ————————63PerfectCRM实现CRM讲师下载作业————————
- 43 from PerfectCRM import settings # 系统配置
- 44 import os # 系统操作
- 45 # 本节课的学员
- 46 @login_required # 登陆后页面才能访问
- 47 def teacher_lesson_detail(request, class_id, courserecord_id):
- 48 # classes_obj=models.UserProfile.objects.get(id=request.user.id).classlist_set.get(id=class_id)#所选的班级
- 49 classes_obj = request.user.classlist_set.get( id=class_id ) # 根据 登陆的ID 获取02班级表
- 50 courserecordlist = classes_obj.courserecord_set.get( id=courserecord_id ) # 根据 前端的ID 获取08每节课上课纪录表
- 51
- 52 # studyrecord_list=models.CourseRecord.objects.get(id=courserecord_id).studyrecord_set.all()#取本节课所有学员
- 53 studyrecord_list = courserecordlist.studyrecord_set.all() # 根据08每节课上课纪录表 #获取09学习纪录 #取本节课所有学员
- 54
- 55 for i in studyrecord_list: # 循环本节课所有学员 交作业的状态
- 56 studyrecord_id = i.id # 获取本节课所有学员的ID
- 57 if studyrecord_id: # 有获取到ID
- 58 HOMEWORK_path = \'%s/%s/%s/%s/\' % (settings.HOMEWORK_DATA, class_id, courserecord_id, studyrecord_id) # 作业目录
- 59 if os.path.exists( HOMEWORK_path ): # 判断目录是否存在
- 60 try:#防止后台误删文件
- 61 file_list = os.listdir( HOMEWORK_path ) # 取目录 下的文件
- 62 isfile = os.path.isfile( \'%s%s\' % (HOMEWORK_path, file_list[0]) ) # 判断是不是文件
- 63 studyrecord_list.filter( id=studyrecord_id ).update( delivery=isfile ) # 更新交付作业状态
- 64 except:
- 65 studyrecord_list.filter( id=studyrecord_id ).update( delivery=False ) # file_list 出错# 更新交付作业状态
- 66 else:
- 67 studyrecord_list.filter( id=studyrecord_id ).update( delivery=False )# 更新交付作业状态
- 68
- 69 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 70 page = Page( request.GET.get( \'p\', 1 ), len( studyrecord_list ) ) # 当前页数 默认为1 #总数量
- 71 studyrecord_list = studyrecord_list[page.start:page.end] # 切片取当前页的数据
- 72 page_str = page.page_str(\'/bpm/teacher_lesson_detail/%s/%s/\'%(class_id,courserecord_id)) # 总页数 传入url
- 73 # ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————
- 74
- 75 return render( request, \'bpm_teacher/teacher_lesson_detail.html\', locals() )
- 76
- 77 from django.http import StreamingHttpResponse #页面返回
- 78 from crm import models #数据库
- 79 from django.shortcuts import redirect #页面返回
- 80 # 学员作业下载
- 81 @login_required # 登陆后页面才能访问
- 82 def howk_down(request, class_id, courserecord_id, studyrecord_id):
- 83 HOMEWORK_path = \'%s/%s/%s/%s/\' % (settings.HOMEWORK_DATA, class_id, courserecord_id, studyrecord_id) # 作业目录
- 84 print( \'下载作业目录:\', HOMEWORK_path )
- 85
- 86 def file_iterator(file_path, chunk_size=512): # 获取文件 #chunk_size每次读取的大小 #文件迭代器
- 87 with open( file_path, \'rb\', ) as f: # 循环打开 文件#以二进制读模式打开
- 88 while True: # 如果有文件
- 89 byte = f.read( chunk_size ) # read读最多大小字节,作为字节返回。#获取文件大小
- 90 if byte:
- 91 yield byte # 返回 yield 后的值作为第一次迭代的返回值. 循环下一次,再返回,直到没有可以返回的。
- 92 else:
- 93 break # 没有字节就中止
- 94
- 95 if os.path.exists( HOMEWORK_path ): # 判断目录是否存在
- 96 try:#防止后台误删文件
- 97 file_list = os.listdir( HOMEWORK_path ) # 取目录 下的文件
- 98 print( \'文件名:\', file_list, type( file_list ) )
- 99 file_path = \'%s%s\' % (HOMEWORK_path, file_list[0]) # 下载文件路径
- 100 print( \'下载文件路径:\', file_path )
- 101 response = StreamingHttpResponse( file_iterator( file_path ) ) # StreamingHttpResponse是将文件内容进行流式传输
- 102 response[\'Content-Type\'] = \'application/octet-stream\' # 文件类型 #应用程序/octet-stream.*( 二进制流,不知道下载文件类型)
- 103 file_name = \'attachment;filename=%s\' % file_list[0] # 文件名字# 支持中文
- 104 response[\'Content-Disposition\'] = file_name.encode() # 支持中文#编码默认encoding=\'utf-8\'
- 105 return response # 返回下载 请求的内容
- 106 except:
- 107 models.StudyRecord.objects.get( id=studyrecord_id ).update( delivery=False ) # 更新交付作业状态 # file_list 出错
- 108 return redirect( \'/bpm/teacher_lesson_detail/%s/%s/\' % (class_id, courserecord_id) ) # 返回##本节课的学员
- 109 # ————————63PerfectCRM实现CRM讲师下载作业————————
# teacher_views.py
- 1 {#teacher_class.html#}
- 2 {## ————————62PerfectCRM实现CRM讲师讲课记录————————#}
- 3 {% extends \'bpm_master/bpm_sample.html\' %}
- 4 {% block right-container-content %} {#自定义内容开始 右边页面内容#}
- 5 <div class="panel-default">
- 6 <div class="panel-body">
- 7 <h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} |
- 8 讲师QQ:{{ request.user.stu_account }}</h4>
- 9 <ol class="breadcrumb">
- 10 <li><a href="/bpm/teacher_class/">我的班级</a></li>
- 11 </ol>
- 12 <table class="table table-striped table-responsive">
- 13 <thead>
- 14 <tr>
- 15 <th><a target="_blank" href="/king_admin/crm/classlist/add/">校区班级</a></th>
- 16 <th>班级类型</th>
- 17 <th><a target="_blank" href="/king_admin/crm/courserecord/add/">课程进度</a></th>
- 18 <th><a target="_blank" href="/king_admin/crm/customer/">学员数量</a></th>
- 19 <th>开课日期</th>
- 20 <th>结业日期</th>
- 21 </tr>
- 22 </thead>
- 23 <tbody>
- 24 {% for class in classes_obj %}
- 25 <tr>
- 26 <td>
- 27 {## ————————64PerfectCRM实现CRM课程排名详情————————#}
- 28 <a href="{% url \'coursetop_details\' class.id %}">
- 29 {## ————————64PerfectCRM实现CRM课程排名详情————————#}
- 30 {{ class }}
- 31 </a>
- 32 </td>
- 33 <td>{{ class.get_class_type_display }}</td>
- 34 <td>
- 35 <a href="{% url \'teacher_class_detail\' class.id %}">
- 36 已上: {{ class.courserecord_set.all.count }}节
- 37 </a>
- 38 </td>
- 39 <td>{{ class.enrollment_set.select_related.count }}</td>
- 40 <td>{{ class.start_date }}</td>
- 41 <td>{{ class.end_date }}</td>
- 42 </tr>
- 43 {% endfor %}
- 44 </tbody>
- 45 </table>
- 46
- 47 {## ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————#}
- 48 {% include \'bpm_components/page_str.html\' %}
- 49 {## ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————#}
- 50
- 51 </div>
- 52 </div>
- 53 {% endblock %}
- 54 {## ————————62PerfectCRM实现CRM讲师讲课记录————————#}
{#teacher_class.html#}
- 1 {#teacher_classes_detail.html#}
- 2 {## ————————62PerfectCRM实现CRM讲师讲课记录————————#}
- 3 {% extends \'bpm_master/bpm_sample.html\' %}
- 4 {% block right-container-content %} {#自定义内容开始 右边页面内容#}
- 5 <div class="panel-default">
- 6 <div class="panel-default">
- 7 <div class="panel-body">
- 8 <h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} |
- 9 讲师QQ:{{ request.user.stu_account }} </h4>
- 10 <ol class="breadcrumb">
- 11 <li><a href="/bpm/teacher_class/">我的班级</a></li>
- 12 <li><a href="{% url \'teacher_class_detail\' classes_obj.id %}">{{ classes_obj }}</a></li>
- 13 </ol>
- 14 <table class="table table-striped table-responsive ">
- 15 <thead>
- 16 <tr>
- 17 <th><a target="_blank" href="/king_admin/crm/courserecord/add/">课程节次</a></th>
- 18 <th>签到状态</th>
- 19 <th>本节作业</th>
- 20 <th>上课日期</th>
- 21 <th>本节大纲</th>
- 22 <th>作业标题</th>
- 23 <th>作业要求</th>
- 24 </tr>
- 25 </thead>
- 26
- 27
- 28 <tbody>
- 29 {% for courserecord in courserecordlist %}
- 30 <tr>
- 31 <td><a target="_blank"
- 32 href="/king_admin/crm/courserecord/{{ courserecord.id }}/change/">第 {{ courserecord.day_num }}节</a>
- 33 </td>
- 34 {#课程节次#}
- 35 <td>
- 36 <a target="_blank"
- 37 href="/king_admin/crm/studyrecord/?course_record={{ courserecord.id }} ">点名/成绩</a>
- 38 </td>
- 39 {#签到状态#}
- 40 <td>
- 41 {## ————————63PerfectCRM实现CRM讲师下载作业————————#}
- 42 <a href="{% url \'teacher_lesson_detail\' class_id courserecord.id %}">
- 43 {## ————————63PerfectCRM实现CRM讲师下载作业————————#}
- 44 {{ courserecord.has_homework }}
- 45 </a>
- 46 </td>
- 47 {#本节作业#}
- 48 <td> {{ courserecord.date }}</td>
- 49 {#上课日期#}
- 50 <td>
- 51 <pre style="width: 240px;height: 60px">{{ courserecord.outline }} </pre>
- 52 </td>
- 53 {#本节大纲#}
- 54 <td>
- 55 <pre style="width: 240px;height: 60px">{{ courserecord.homework_title }}</pre>
- 56 </td>
- 57 {#作业标题#}
- 58 <td>
- 59 <pre style="width: 240px;height: 60px">{{ courserecord.homework_content }} </pre>
- 60 </td>
- 61 {#作业要求#}
- 62 </tr>
- 63 {% endfor %}
- 64 </tbody>
- 65 </table>
- 66
- 67 {## ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————#}
- 68 {% include \'bpm_components/page_str.html\' %}
- 69 {## ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————#}
- 70
- 71 </div>
- 72 </div>
- 73 </div>
- 74 {% endblock %}
- 75 {## ————————62PerfectCRM实现CRM讲师讲课记录————————#}
{#teacher_classes_detail.html#}
- 1 {#teacher_lesson_detail.html#}
- 2 {## ————————63PerfectCRM实现CRM讲师下载作业————————#}
- 3 {% extends \'bpm_master/bpm_sample.html\' %}
- 4 {% block right-container-content %} {#自定义内容开始 右边页面内容#}
- 5 <div class="panel-default">
- 6 <div class="panel-default">
- 7 <div class="panel-body">
- 8 <h4>当前用户: {{ request.user }} | 讲师名字:{{ request.user.stu_account.name }} |
- 9 讲师QQ:{{ request.user.stu_account }} </h4>
- 10 <ol class="breadcrumb">
- 11 <li><a href="/bpm/teacher_class/">我的班级</a></li>
- 12 <li><a href="{% url \'teacher_class_detail\' classes_obj.id %}">{{ classes_obj }}</a></li>
- 13 <li>
- 14 <a href="{% url \'teacher_lesson_detail\' classes_obj.id courserecordlist.id %}">第{{ courserecordlist.day_num }}节</a>
- 15 </li>
- 16 </ol>
- 17 <li>
- 18 <a target="_blank"
- 19 href="/king_admin/crm/courserecord/{{ courserecordlist.id }}/change/">作业标题:</a>
- 20 <pre>{{ courserecordlist.homework_title }}</pre>
- 21 </li>
- 22 <li>
- 23 <a target="_blank"
- 24 href="/king_admin/crm/courserecord/{{ courserecordlist.id }}/change/">作业要求:</a>
- 25 <pre>{{ courserecordlist.homework_content }}</pre>
- 26 </li>
- 27
- 28
- 29 <table class="table table-striped table-responsive">
- 30 <thead>
- 31 <tr>
- 32 <th>学员ID</th>
- 33 <th>学员姓名</th>
- 34 <th>
- 35 <a target="_blank" href="/king_admin/crm/studyrecord/?course_record={{ courserecord_id }} ">签到状态</a>
- 36 </th>
- 37 <th> 作业链接</th>
- 38 <th>
- 39 {% if courserecordlist.has_homework %}
- 40 <a href="{% url \'teacher_lesson_detail\' classes_obj.id courserecordlist.id %}">学员作业(多刷) </a>
- 41 {% else %}
- 42 <a style="color: #ff1900" target="_blank"
- 43 href="/king_admin/crm/courserecord/{{ courserecordlist.id }}/change/">创建新作业</a>
- 44 {% endif %}
- 45 </th>
- 46 <th>
- 47 {% if courserecordlist.has_homework %}
- 48 <a href="{% url \'teacher_lesson_detail\' classes_obj.id courserecordlist.id %}">批改作业 </a>
- 49 {% else %}
- 50 没有作业
- 51 {% endif %}
- 52 </th>
- 53 </tr>
- 54 </thead>
- 55
- 56
- 57 <tbody>
- 58 {% for studyrecrd in studyrecord_list %}
- 59 <tr>
- 60 <td>{{ studyrecrd.student.id }}</td>
- 61 {#学员ID#}
- 62 <td>{{ studyrecrd.student.customer.name }}</td>
- 63 {#学员姓名#}
- 64 <td>{{ studyrecrd.get_attendance_display }}</td>
- 65 {#签到状态#}
- 66 <td>
- 67 <pre style="width: 240px;height: 60px">{{ studyrecrd.homework_link }}</pre>
- 68 </td>
- 69 {#作业链接#}
- 70 <td>
- 71 {% if studyrecrd.delivery %}
- 72 <a href="{% url \'howk_down\' classes_obj.id studyrecrd.course_record_id studyrecrd.id %}">下载作业</a>
- 73 {% endif %}{#学员作业#}
- 74 </td>
- 75 <td>
- 76 {% if studyrecrd.course_record.has_homework %}
- 77 {% if studyrecrd.score == 0 %}
- 78 <a target="_blank"
- 79 href="/king_admin/crm/studyrecord/{{ studyrecrd.id }}/change/"
- 80 style="color: #ff1600">未批改</a>
- 81 {% else %}
- 82 <a target="_blank"
- 83 href="/king_admin/crm/studyrecord/{{ studyrecrd.id }}/change/"
- 84 style="color: #0014ff">{{ studyrecrd.get_score_display }}</a>
- 85 {% endif %}
- 86 {% endif %}{#批改作业#}
- 87 </td>
- 88 </tr>
- 89 {% endfor %}
- 90 </tbody>
- 91 </table>
- 92
- 93 {## ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————#}
- 94 {% include \'bpm_components/page_str.html\' %}
- 95 {## ————————69PerfectCRM实现CRM业务流程(bpm)学生讲师分页————————#}
- 96
- 97 </div>
- 98 </div>
- 99 </div>
- 100 {% endblock %}
- 101 {## ————————63PerfectCRM实现CRM讲师下载作业————————#}
{#teacher_lesson_detail.html#}