Django项目:CRM(客户关系管理系统)--62--52PerfectCRM实现CRM客户报名流程学生合同审核
1 # sales_urls.py 2 # ————————47PerfectCRM实现CRM客户报名流程———————— 3 from django.conf.urls import url 4 from bpm.sales import sales_views 5 6 urlpatterns = [ 7 8 url(r'^customer/(\d+)/enrollment/$', sales_views.enrollment, name="enrollment"),#客户招生#报名流程一 下一步 9 10 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 11 # ————————48PerfectCRM实现CRM客户报名流程学生合同———————— 12 # url(r'^customer/registration/(\d+)/$', sales_views.stu_registration, name="stu_registration"), # 报名流程二 学员签同合 13 # ————————48PerfectCRM实现CRM客户报名流程学生合同———————— 14 url(r'^customer/registration/(\d+)/(\w+)/$', sales_views.stu_registration, name="stu_registration"), # 报名流程二 学员签同合 15 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 16 17 # ————————52PerfectCRM实现CRM客户报名流程学生合同审核———————— 18 url(r'^contract_prompt/$', sales_views.contract_prompt, name="contract_prompt"), # 报名流程二 提示学员 19 url(r'^not_audit/$', sales_views.not_audit, name="not_audit"), # 报名流程二 未审核 查询 20 url(r'^contract_review/(\d+)/$', sales_views.contract_review, name="contract_review"), # 报名流程三 审核 21 url(r'^enrollment_rejection/(\d+)/$', sales_views.enrollment_rejection, name="enrollment_rejection"), # 报名流程三 驳回 22 # ————————52PerfectCRM实现CRM客户报名流程学生合同审核———————— 23 24 ] 25 # ————————47PerfectCRM实现CRM客户报名流程————————
1 # sales_views.py 2 # ————————47PerfectCRM实现CRM客户报名流程———————— 3 from django.db import IntegrityError # 主动捕捉错误信息 4 from django.shortcuts import render # 页面返回 5 from crm import models # 数据库 6 from bpm.bpm_auxiliary import bpm_forms # 自定制 forms 7 from django.contrib.auth.decorators import login_required # 登陆后页面才能访问 8 9 # ————————47PerfectCRM实现CRM客户报名流程———————— 10 from django.core.mail import send_mail 11 # send_mail的参数分别是 邮件标题,邮件内容,发件箱(settings.py中设置过的那个),收件箱列表(可以发送给多个人),失败静默(若发送失败,报错提示我们) 12 import random 13 import datetime # 获取时间#登陆过期 14 15 16 # 发送邮件的功能 #验证码#密码 17 class stmp(): 18 def __init__(self): 19 self.emaillist = [] # 发送给谁 20 self.code = None # 验证码#密码 21 22 def stmps(self, request, email, msg_mail): # 传参数#页面,session #邮箱,发送给谁 #内容 23 self.emaillist.append(email) # 将邮箱地址添加到调用Django发送邮件功能 24 # ——————生成验证码—————— 25 _letter_cases = "abcdefghjkmnpqrstuvwxy" # 小写字母,去除可能干扰的i,l,o,z 26 _upper_cases = _letter_cases.upper() # 大写字母 27 _numbers = ''.join(map(str, range(3, 10))) # 数字 28 chars = ''.join((_letter_cases, _upper_cases, _numbers)) # 变成一条字符串 29 list = random.sample(chars, 4) # 从一条字符串随机选4个字符变成列表 30 self.code = ''.join(list) # 列表变字符串 31 # ——————生成验证码—————— 32 # ——————调用Django发送邮件—————— 33 title = 'PerfectCRM项目自动邮件:%s' % self.code # 邮件标题#防止一样的内容被邮箱屏蔽 34 send_mail(title, # 邮件标题 35 msg_mail, # 验证码内容 36 'perfectcrm@sina.cn', # 发送的邮箱 #根据情况重新配置 37 self.emaillist, # 接受的邮箱 38 fail_silently=False, # 静默,抛出异常 39 ) 40 print('发送邮件成功!没收到要换标题!检查发送邮箱的配置!') 41 # ——————调用Django发送邮件—————— 42 43 44 # ————————47PerfectCRM实现CRM客户报名流程———————— 45 # ————————47PerfectCRM实现CRM客户报名流程———————— 46 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 47 import random # 随机 48 import string # 字母 数字 49 from django.core.cache import cache # 缓存 50 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 51 52 # 报名填写 销售 53 @login_required # 登陆后页面才能访问 54 def enrollment(request, customer_id): 55 msgs = {} # 错误信息 56 customer_obj = models.Customer.objects.get(id=customer_id) # 取到客户信息记录 #返回到页面#报名人 57 consultant_obj = models.UserProfile.objects.get(id=request.user.id) # 报名课程顾问 58 59 stmp_mail = {} # 邮件发送成功 60 stmpemail = stmp() # 实例化发送邮件的功能 61 email = request.POST.get('email') # 让页面POST提交的值,在页面GET后仍然存在显示 62 if request.method == "POST": 63 enroll_form = bpm_forms.EnrollmentForm(request.POST) # 获取数据 64 if enroll_form.is_valid(): # 表单验证 65 66 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 67 # msg = "http://127.0.0.1:8000/bpm/customer/registration/{enroll_obj_id}/" 68 msg = "http://127.0.0.1:8000/bpm/customer/registration/{enroll_obj_id}/{random_str}/ " 69 random_str = ''.join(random.sample(string.ascii_lowercase + string.digits, 8)) # 生成8位随机字符串 #URL使用 70 url_str = '''customer/registration/{enroll_obj_id}/{random_str}/''' # 报名链接 71 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 72 73 try: 74 enroll_form.cleaned_data['customer'] = customer_obj # 添加学员对象 记录 #报名人 75 enroll_form.cleaned_data['consultant'] = consultant_obj # 报名课程顾问 76 enroll_obj = models.Enrollment.objects.create(**enroll_form.cleaned_data) # 创建记录 77 78 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 79 # msgs['msg']=msg.format(enroll_obj_id=enroll_obj.id)#报名记录对应的id,随机字符串,报名链接 80 sort_url = enroll_obj.id # 获取报名表对应的ID 81 cache.set(enroll_obj.id, random_str, 61000) # 加入过期时间 #URL使用 # cache缓存 82 msgs['msg'] = msg.format(enroll_obj_id=enroll_obj.id, random_str=random_str) # 报名记录对应的id,随机字符串,报名链接 83 url_str = url_str.format(enroll_obj_id=enroll_obj.id, random_str=random_str) # 报名链接 84 print(url_str) 85 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 86 except IntegrityError as e: 87 # 取到这条记录 88 enroll_obj = models.Enrollment.objects.get(customer_id=customer_obj.id, 89 enrolled_class_id=enroll_form.cleaned_data[ 90 'enrolled_class'].id) 91 92 # ————————52PerfectCRM实现CRM客户报名流程学生合同审核———————— 93 if enroll_obj.contract_agreed:#学员已经同意合同,提交了身份证 94 #return redirect('/crm/contract_review/%s/'%enroll_obj.id)#跳转到审核页面 95 return render(request,'bpm_sales/contract_prompt.html',locals())#跳转提示页面 96 # ————————52PerfectCRM实现CRM客户报名流程学生合同审核———————— 97 98 enroll_form.add_error('__all__', '记录已经存在,不能重复创建!') 99 100 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 101 # msgs['msg']=msg.format(enroll_obj_id=enroll_obj.id)#报名记录对应的id 102 cache.set(enroll_obj.id, random_str, 61000) # 加入过期时间 #URL使用 # cache缓存 103 msgs['msg'] = msg.format(enroll_obj_id=enroll_obj.id, random_str=random_str) # 报名记录对应的id 104 url_str = url_str.format(enroll_obj_id=enroll_obj.id, random_str=random_str) # 报名链接 105 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 106 107 if email: 108 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 109 # msg_mail = "http://127.0.0.1:8000/bpm/customer/registration/%s" %enroll_obj.id 110 msg_mail = "http://127.0.0.1:8000/bpm/customer/registration/%s/%s" %(enroll_obj.id,random_str) 111 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 112 stmpemail.stmps(request, email, msg_mail) # 发送邮件 113 stmp_mail['ok'] = "邮件已发送成功!" 114 115 else: 116 enroll_form = bpm_forms.EnrollmentForm() # modelform表单 117 return render(request, 'bpm_sales/enrollment.html', locals()) 118 # ————————47PerfectCRM实现CRM客户报名流程———————— 119 120 121 # ————————48PerfectCRM实现CRM客户报名流程学生合同———————— 122 #学员合同签定 123 124 # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片———————— 125 import os 126 from PerfectCRM import settings 127 import json 128 # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片———————— 129 130 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 131 from django.shortcuts import HttpResponse #页面返回 132 # def stu_registration(request,enroll_id): 133 def stu_registration(request,enroll_id,random_str): 134 # enroll_obj=models.Enrollment.objects.get(id=enroll_id)#获取报名记录 135 if cache.get(enroll_id) == random_str: # 判断链接失效了没有 136 enroll_obj = models.Enrollment.objects.get(id=enroll_id) # 报名记录 137 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 138 139 # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片———————— 140 enrolled_path='%s/%s/'%(settings.ENROLLED_DATA,enroll_id)#证件上传路径 141 img_file_len=0 #文件 142 if os.path.exists(enrolled_path):#判断目录是否存在 143 img_file_list=os.listdir(enrolled_path)#取目录 下的文件 144 img_file_len=len(img_file_list) 145 # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片———————— 146 147 # ————————49PerfectCRM实现CRM客户报名流程学生合同表单验证———————— 148 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 149 if request.method == "POST": 150 151 # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片———————— 152 ret=False 153 data=request.POST.get('data') 154 if data:#如果有删除动作 155 del_img_path="%s/%s/%s"%(settings.ENROLLED_DATA,enroll_id,data)#路径 156 print(del_img_path,'=-=-=-=-=-=') 157 os.remove(del_img_path) 158 ret=True 159 return HttpResponse(json.dumps(ret)) 160 if request.is_ajax():#ajax上传图片 #异步提交 161 print('ajax上传图片 #异步提交中。。。 ',request.FILES) 162 enroll_data_dir="%s/%s"%(settings.ENROLLED_DATA,enroll_id)#路径 #重要信息不能放在静态文件中 163 if not os.path.exists(enroll_data_dir):#如果不存目录 164 os.makedirs(enroll_data_dir,exist_ok=True)#创建目录 165 for k,file_obj in request.FILES.items(): #循环字典 #上传的文件 166 with open("%s/%s"%(enroll_data_dir,file_obj.name),'wb') as f: #打开一个文件#路径#获取文件名 167 for chunk in file_obj.chunks():#循环写入文件 # chunks块 168 f.write(chunk) #保存文件 169 return HttpResponse('上传完成!') 170 # ————————51PerfectCRM实现CRM客户报名流程学生合同上传照片———————— 171 172 customer_form = bpm_forms.CustomerForm(request.POST, instance=enroll_obj.customer) # 生成表单验证 173 if customer_form.is_valid(): # 表单验证通过 174 customer_form.save() # 保存 175 enroll_obj.contract_agreed = True # 同意协议 176 enroll_obj.save() # 保存 177 status = 1 # 修改报名状态 # 1 已经报名 178 return render(request, 'bpm_sales/stu_registration.html', locals()) 179 180 else: 181 if enroll_obj.contract_agreed == True: # 如果协议已经签订 182 status = 1 # 修改报名状态 # 1 已经报名 183 else: 184 status = 0 185 customer_form = bpm_forms.CustomerForm(instance=enroll_obj.customer) # 生成表单 186 # customer_form = bpm_forms.CustomerForm(instance=enroll_obj.customer) # 生成表单 187 # ————————49PerfectCRM实现CRM客户报名流程学生合同表单验证———————— 188 189 return render(request,'bpm_sales/stu_registration.html',locals()) 190 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 191 # ————————48PerfectCRM实现CRM客户报名流程学生合同———————— 192 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 193 else: 194 return HttpResponse('链接失效,非法链接,请自重!') 195 # ————————50PerfectCRM实现CRM客户报名流程学生合同URL随机码———————— 196 197 198 # ————————52PerfectCRM实现CRM客户报名流程学生合同审核———————— 199 from django.shortcuts import redirect 200 #查询流程提示页面 201 def contract_prompt(request,enroll_id): 202 enroll_obj=models.Enrollment.objects.get(id=enroll_id)#取对象 203 enroll_form= bpm_forms.EnrollmentForm(instance=enroll_obj)#报名表对象 204 customers_form= bpm_forms.CustomerForm(instance=enroll_obj.customer)#学员的信息 205 return render(request,'bpm_sales/contract_prompt.html',locals()) 206 # #待审核 207 def not_audit(request): 208 sign=models.Enrollment.objects.all()#所有的报名表 209 print(sign,'sign----->') 210 return render(request, 'bpm_sales/not_audit.html', locals())# 211 212 #审核合同 213 @login_required # 登陆后页面才能访问 214 def contract_review(request,enroll_id): 215 enroll_obj=models.Enrollment.objects.get(id=enroll_id)#取对象 216 contract_review = request.user.name #当前登陆人 #合同审核人 217 #payment_form=forms.PaymentForm()#生成表单 218 enroll_form= bpm_forms.EnrollmentForm(instance=enroll_obj)#报名表对象 219 customer_form= bpm_forms.CustomerForm(instance=enroll_obj.customer)#学员的信息 220 enrolled_path='%s/%s/'%(settings.ENROLLED_DATA,enroll_id)#证件上传路径 221 if os.path.exists(enrolled_path):#判断目录是否存在 222 file_list=os.listdir(enrolled_path)#取目录 下的文件 223 imgs_one=file_list[0] #图片1 224 imgs_two=file_list[1] #图片2 225 if request.method=="POST": 226 enroll_obj.contract_approved = True # 审核通过 227 enroll_obj.save() #保存 228 enroll = models.Enrollment.objects.filter(id=enroll_id).update(contract_review=contract_review)#合同审核人 229 print('审核通过。。。') 230 return redirect('/bpm/not_audit/')#跳转到待审核 231 return render(request, 'bpm_sales/contract_review.html', locals())# 232 #驳回合同 233 def enrollment_rejection(request,enroll_id): 234 enroll_obj=models.Enrollment.objects.get(id=enroll_id)#报名表的对象 235 enroll_obj.contract_agreed=False#修改学员已经同意核同 236 enroll_obj.save() #保存 237 return redirect('/bpm/customer/%s/enrollment/'%enroll_obj.customer.id)#跳转到enrollment_rejection 238 # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————
1 {#contract_prompt.html#} 2 {## # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————#} 3 {% extends 'bpm_master/bpm_sample.html' %} 4 {% block right-container-content %} {#自定义内容开始 右边页面内容#} 5 <div class="panel-default"> 6 <div class="panel-body"> 7 <table class="table table-striped table-responsive"> 8 <thead> 9 <tr> 10 <th>客户名字</th> 11 <th>客户QQ</th> 12 <th>手机号码</th> 13 <th>咨询顾问</th> 14 <th>所报班级</th> 15 <th>报名课程顾问</th> 16 </tr> 17 </thead> 18 <tbody> 19 <tr> 20 <td>{{ enroll_obj.customer.name }}</td> 21 <td>{{ enroll_obj.customer }}</td> 22 <td>{{ enroll_obj.customer.phone }}</td> 23 <td>{{ enroll_obj.customer.consultant }}</td> 24 <td>{{ enroll_obj.enrolled_class }}</td> 25 <td>{{ enroll_obj.consultant }}</td> 26 </tr> 27 </tbody> 28 </table> 29 30 <p class="errors" style="color:#ff0004 "> 该学员所报的课程已经进入合同审核中</p> 31 <a href="{{ request.path }}"><input type="submit" class="btn btn-info pull-left" value="返回,查询其他课程"> </a> 32 <a href="/bpm/not_audit/"><input type="submit" class="btn btn-info pull-right" value="审核合同"> </a> 33 </div> 34 </div> 35 {% endblock %} 36 37 {## # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————#}
1 {#not_audit.html#} 2 {## # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————#} 3 {% extends 'bpm_master/bpm_sample.html' %} 4 {% block right-container-content %} {#自定义内容开始 右边页面内容#} 5 <div class="panel-default"> 6 <div class="panel-body"> 7 <h3>待审核 | <a class="btn btn-info pull" href="http://127.0.0.1:8000/king_admin/crm/customer/">报名 | 查询</a></h3> 8 <table class="table table-striped table-responsive"> 9 <thead> 10 <tr> 11 <th>客户名字</th> 12 <th>客户QQ</th> 13 <th>手机号码</th> 14 <th>咨询顾问</th> 15 <th>所报班级</th> 16 <th>报名课程顾问</th> 17 <th>合同审核</th> 18 <th>日期时间</th> 19 </tr> 20 </thead> 21 <tbody> 22 {% for foo in sign %} 23 {# {% if foo.contract_agreed and foo.contract_approved == false %}#} 24 {% if foo.contract_agreed and not foo.contract_approved %} 25 <tr> 26 <td><a href="{% url 'contract_review' foo.id %}">{{ foo.customer.name }}</a></td> 27 <td>{{ foo.customer }}</td> 28 <td>{{ foo.customer.phone }}</td> 29 <td>{{ foo.customer.consultant }}</td> 30 <td>{{ foo.enrolled_class }}</td> 31 <td>{{ foo.consultant }}</td> 32 <td>{{ foo.contract_approved }}</td> 33 <td>{{ foo.date }}</td> 34 </tr> 35 {% endif %} 36 {% endfor %} 37 </tbody> 38 </table> 39 </div> 40 </div> 41 {% endblock %} 42 43 {## # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————#}
1 {#contract_review.html#} 2 {## # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————#} 3 {% extends 'bpm_master/bpm_sample.html' %} 4 {% load bpm_tags %} 5 {% block right-container-content %} {#自定义内容开始 右边页面内容#} 6 <div class="container col-lg-7 col-md-offset-2"> 7 <div class="panel panel-warning"> 8 <div class=" panel-heading"> 9 <h3 class="panel-title container">报名入学|学员信息审核 | 合同审核人<a href="#" style="color: #ff1900">{{ request.user.name }}</a></h3> 10 </div> 11 <div class="panel-body "><!--返回提交函数--> 12 <div class="form-horizontal"> 13 {% for foo in customer_form %} 14 <div class="form-group"> 15 <label for="inputEmail3" class="col-sm-2 control-label">{{ foo.label }}</label> 16 <div class="col-sm-8"> {{ foo }}</div> 17 </div> 18 {% endfor %} 19 20 <div class="form-group"> 21 <label for="inputEmail3" class="col-sm-2 control-label">课程名称</label> 22 <div class="col-sm-8"> 23 {{ enroll_obj.enrolled_class }} 24 </div> 25 </div> 26 <div class="form-group"> 27 <label for="inputEmail3" class="col-sm-2 control-label">课程费用</label> 28 <div class="col-sm-8"> 29 {{ enroll_obj.enrolled_class.course.price }} 30 </div> 31 </div> 32 <div class="form-group"> 33 <label for="inputEmail3" class="col-sm-2 control-label">开课日期</label> 34 <div class="col-sm-8"> 35 {{ enroll_obj.enrolled_class.start_date }} 36 </div> 37 </div> 38 </div> 39 40 41 <div class="panel panel-warning"> 42 <div class=" panel-heading"> 43 <h3 class="panel-title container">学员证件|身份证</h3> 44 </div> 45 </div> 46 <div class="rest_left cad" style="width: 320px;height: 200px; float: left"> 47 <a href="#"> 48 <img src="/static/enrolled_data/{{ enroll_id }}/{{ imgs_one }}" alt="" 49 style="width: 320px;height: 200px;"> 50 </a> 51 </div> 52 <div class="rest_left cad" style="width: 320px;height: 200px; float: right"> 53 <a href="#"> 54 <img src="/static/enrolled_data/{{ enroll_id }}/{{ imgs_two }}" alt="" 55 style="width: 320px;height: 200px;"> 56 </a> 57 </div> 58 <div style="clear: both"></div> 59 <div class="panel panel-warning"> 60 <div class=" panel-heading"> 61 <h3 class="panel-title container">请认真审核后,通知相关人员!!!合同审核人<a href="#" style="color: #ff1900">{{ request.user.name }}</a></h3> 62 </div> 63 </div> 64 65 <form action="" class="form-horizontal col-lg-5" role="form" method="post">{% csrf_token %} 66 <a class="btn btn-danger" href="{% url 'enrollment_rejection' enroll_obj.id %}">驳回合同</a> 67 <input class="btn btn-info pull-right" type="submit" value="审核通过"> 68 </form> 69 70 </div> 71 </div> 72 </div> 73 {% endblock %} 74 {## # ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————#}
1 {#enrollment.html#} 2 {## ————————47PerfectCRM实现CRM客户报名流程————————#} 3 {% extends 'bpm_master/bpm_sample.html' %}<!--继承后台主页--> 4 {% block right-container-content %} {#自定义内容开始 右边页面内容#} 5 <div class="panel panel-info"> 6 <h4>学员报名:</h4> 7 </div> 8 <div id="content"> 9 <form action="" class="form-horizontal col-lg-5" role="form" method="post">{% csrf_token %} 10 <span class="errors" style="color: #ff1900">{{ enroll_form.errors }}</span>{#错误信息#} 11 <div class="form-group"> 12 <label for="inputeEmail4" class="col-sm-3">客户名字:</label> 13 <div class="col-sm-6"> {{ customer_obj.name }} </div> 14 </div> 15 <div class="form-group"> 16 <label for="inputeEmail4" class="col-sm-3">客户QQ:</label> 17 <div class="col-sm-6">{{ customer_obj.qq }} </div> 18 </div> 19 <div class="form-group"> 20 <label for="inputeEmail4" class="col-sm-3">手机号码:</label> 21 <div class="col-sm-6"> {{ customer_obj.phone }} </div> 22 </div> 23 <div class="form-group"> 24 <label for="inputeEmail4" class="col-sm-3">咨询课程:</label> 25 <div class="col-sm-6"> {{ customer_obj.consult_courses }} </div> 26 </div> 27 <div class="form-group"> 28 <label for="inputeEmail4" class="col-sm-3">咨询顾问:</label> 29 <div class="col-sm-6"> {{ customer_obj.consultant }} </div> 30 </div> 31 {% for field in enroll_form %} 32 <div class="form-group"> 33 <label for="inputeEmail4" class="col-sm-3">{{ field.label }}:</label> 34 <div class="col-sm-6"> {{ field }} </div> 35 </div> 36 {% endfor %} 37 <div class="form-group"> 38 <label for="inputeEmail4" class="col-sm-3">报名课程顾问:</label> 39 <div class="col-sm-6"> {{ request.user.name }} </div> 40 </div> 41 42 <div class="form-group"> 43 <label for="inputeEmail4" class="col-sm-3">客户邮箱:</label> 44 <div class="col-sm-6"><input type="email" name="email" placeholder="邮箱账号"></div> 45 {% if stmp_mail %} 46 <span style="color: #ff1900">{{ stmp_mail.ok }}</span> 47 {% endif %} 48 </div> 49 <div class="form-group"> 50 <label for="inputeEmail4" class="col-sm-3">上次发送邮箱:</label> 51 <div class="col-sm-6"> {% if email %}{{ email }}{% else %}{{ '' }}{% endif %} </div> 52 </div> 53 <div class="form-group"> 54 55 {## ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————#} 56 <a target="_blank" class="btn btn-danger pull" href={% url 'not_audit' %}>未审核列表</a> 57 {## ————————52PerfectCRM实现CRM客户报名流程学生合同审核————————#} 58 59 <input type="submit" class="btn btn-info pull-right" value="生成链接>>发送邮件>>下一步"> 60 </div> 61 </form> 62 63 <div> 64 {% for k,v in msgs.items %} {#链接#} 65 <h4 style="color: #1cff00">请将此链接发给客户进行填写(与自己的ID无关):</h4> 66 <h3><a target="_blank" href="{{ v }}">{{ v }}</a></h3> 67 {% if stmp_mail %} 68 <div style="color: #ff1900">{{ stmp_mail.ok }}</div> 69 {% endif %} 70 {% endfor %} 71 </div> 72 </div> 73 {% endblock %} 74 {## ————————47PerfectCRM实现CRM客户报名流程————————#}
如果感觉本章博客对您有帮助,请尽情打赏吧!
您的资助是我最大的动力!
金额随意,欢迎来赏!
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的
因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【颜言】!