CRM權限管理(3)、報名流程2-學生完善信息
阿新 • • 發佈:2018-08-12
course required res zone margin href ase eight tdi
頁面展示
完善個人信息
作用如下:
- 1、是完善之前銷售錄入有誤的信息,例如年齡、身份證、緊急聯系電話、轉介紹人等,都可以再次糾正;
- 2、查看已報名的課程、價格、班級信息,不能修改。
urls.py
from django.conf.urls import url,include
from crm import views
urlpatterns = [
url(r'^enroll/(\d+)/$', views.student_enroll, name='student_enroll'),
]
forms.py
from django.forms import ModelForm from crm.models import CustomerInfo class CustomerInfoForm(ModelForm): def __new__(cls, *args, **kwargs): for field_name, field_obj in cls.base_fields.items(): field_obj.widget.attrs.update({'class': 'form-control'}) # 設定只讀字段disabled屬性 if field_name in cls.Meta.readonly_fields: field_obj.widget.attrs.update({'disabled': True}) return ModelForm.__new__(cls) class Meta: model = CustomerInfo fields = '__all__' # 設置不提交字段 exclude = ['consult_content', 'contact_type', 'consultant', 'status', 'source','consult_course'] error_messages = { 'name': { 'required': "名字不能為空", }, }
views.py
from crm.forms import CustomerInfoForm from crm.models import StudentEnrollment, CustomerInfo def student_enroll(request, id): """學生完善個人信息""" # 1、根據取出學生報名對象 student_enroll = StudentEnrollment.objects.filter(id=int(id)).first() # 2、獲得咨詢對象以及其他相關信息 customer_obj = student_enroll.customer price = student_enroll.class_grade.course.price class_grade = student_enroll.class_grade course = class_grade.course if request.method == 'GET': # 3、實例化form對象 customer_form = CustomerInfoForm(instance=customer_obj) # 4、獲取用戶已上傳的文件信息 upload_files = [] from django import conf import os enrollment_upload_dir = os.path.join(conf.settings.ORM_PATH_DIR,id) if os.path.isdir(enrollment_upload_dir): upload_files=os.listdir(enrollment_upload_dir) pass elif request.method == 'POST': # 5、實例化form customer_form = CustomerInfoForm(instance=customer_obj, data=request.POST) # 取出錯誤信息 errors = customer_form.errors # 自定制errors錯誤信息 if not request.POST.get('contract_agreed', ''): errors['contract_agreed'] = '必須勾選閱讀' if not request.POST.get('id_num', ''): errors['id_num'] = '身份證號碼必填' if not request.POST.get('contact_info', ''): errors['contact_info'] = '聯系電話必填' if not request.POST.get('emergency_contact', ''): errors['emergency_contact'] = '緊急聯系電話必填' # 6、驗證form表單數據輸入是否合乎規則 if customer_form.is_valid(): # 7、排除重復填寫此表單 if student_enroll.contract_agreed: return HttpResponse('您的相關信息已提交至審核') # 8、修改 合同簽訂屬性和簽訂時間 student_enroll.contract_agreed = True import datetime student_enroll.contract_signed_time = datetime.datetime.now() print(datetime.datetime.now()) # 9、保存學生報名信息 student_enroll.save() # 10、保存咨詢客戶的信息 customer_form.save() return HttpResponse('待審批....') return render(request, 'crm/complete_info.html', locals())
前端頁面
<form method="post" onsubmit="return before_submit(this)" novalidate> {% for input_obj in customer_form %} <div class="form-group"> {# 每行兩列,則每列列寬為md-6 #} <label for="inputEmail3" class="col-sm-2 control-label">{{ input_obj.label }}</label> <div class="col-sm-4"> {{ input_obj }}<span class="error_tip">{{ input_obj.errors }}</span> </div> </div> {% endfor %} <div class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label">班級</label> <div class="col-sm-4"> <span class="form-control">{{ class_grade }}</span> </div> </div> <div class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label">報名課程</label> <div class="col-sm-4"> <span class="form-control">{{ course }}</span> </div> </div> <div class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label">價格</label> <div class="col-sm-4"> <span class="form-control">{{ price }}</span> </div> </div> <!-- 合同顯示,記得加上pre 標簽 --> <pre style="width:100%;height: 400px"> {{ student_enroll.class_grade.contract_tempalte.content }} </pre> <!-- --> <input type="checkbox" name="contract_agreed" id="agree_contract"> <label for="agree_contract">我已認真閱讀以上合同條款,無異議。</label> <span class="error_tip">{{ errors.contract_agreed }}</span> <div class="col-md-12"> <input type="submit" class="btn btn-block btn-primary" value="確認" style="margin-top: 20px"> </div> {% csrf_token %} </form>
<script>
function before_submit(data) {
{#$('[name=consult_course]').prop('disabled',false);#}
// 若沒有上傳文件則不提交 並提示
if($('#upload_file_list').children().length==0){
alert('請上傳相關證件信息');
return false
}
// 若沒有勾選同意合同 則不提交並提示
if(!$('[name=contract_agreed]').prop('checked')){
alert('必須閱讀並同意培訓協議');
return false
}
}
</script>
關於dropzone插件參考:https://www.cnblogs.com/fqh202/p/9365340.html
CRM權限管理(3)、報名流程2-學生完善信息