概念
本文在上一文之上,针对管理员,经理,普通员工身份的用户操作供应商管理模块功能。
功能实现
供应商管理模块属于业务功能,这里管理员不具备操作权限,而经理具备与供应商之间谈合作的实际需要,因此经理具备对供应商的添加,修改,删除和查询,普通员工只能根据需要查询供应商信息,而不具备对供应商信息更改,删除和添加的权限。
管理员操作供应商管理模块
当管理员点击供应商管理模块时,超出管理员的权限范围,因此弹出提示对话框提示管理员该功能不在其权限范围内
普通员工操作供应商管理模块
普通员工因业务需要,可以查看与超市有合作关系的所有供应商信息。给服务器发送地址请求 /gysgl/?type=3 ,服务器中需要接收该请求和其type参数
urls.py
# 接收不同身份的用户操作供应商管理的功能地址
path('gysgl/',views.gysgl),
views.py
创建方法,根据当前登录的用户的身份,分配所操作的功能
def gysgl(request):
# 接收当前登录的用户的身份
type=request.GET["type"]
# 先从数据库的供应商表中把所有供应商信息查询出来
pList=Provider.objects.all().values()
if type == "3":
# 说明当前登录的用户是普通员工,只能查看供应商信息
return render(request,"pProviderList.html",{"pList":pList,"user":user[0]})
elif type == "2":
# 说明当前登录的用户是经理,经理可以具备查看供应商,
# 修改供应商,添加供应商,删除供应商的权利
return render(request, "jProviderList.html", {"pList": pList, "user": user[0]})
当普通员工操作该功能时,服务器需要从数据库中将所有供应商信息查询出来,显示在html页面上
其html代码如下
超市订单管理系统--供应商列表
返回首页
欢迎,{{user.userName}}
注销
超市订单管理系统
主键Id
供应商编码
供应商名称
供应商详细描述
供应商联系人
联系电话
地址
传真
{% for foo in pList %}
{{ foo.id }}
{{ foo.proCode }}
{{ foo.proName }}
{{ foo.proDesc }}
{{ foo.proContact }}
{{ foo.proPhone }}
{{ foo.proAddress }}
{{ foo.proFax }}
{% endfor %}
其界面效果如下
经理操作供应商管理模块
经理的工作就是需要和各种符合超市要求的供应商进行签订合作,取消合作以及修改合作信息等等,因此经理具备操作供应商管理模块的添加,修改,删除和查询权限。当经理点击供应商管理模块时,发送地址请求 /gysgl/?type=2,服务器定义地址接收请求
这时需要将信息发送给 jProviderList.html页面
超市订单管理系统--供应商列表
返回首页
欢迎,{{user.userName}}
注销
超市订单管理系统
添加供应商
主键Id
供应商编码
供应商名称
供应商详细描述
供应商联系人
联系电话
地址
传真
操作
{% for foo in pList %}
{{ foo.id }}
{{ foo.proCode }}
{{ foo.proName }}
{{ foo.proDesc }}
{{ foo.proContact }}
{{ foo.proPhone }}
{{ foo.proAddress }}
{{ foo.proFax }}
{% endfor %}
其界面效果图如下
经理需要添加新的供应商时,点击添加供应商超链接,进入添加供应商页面
接收经理点击添加供应商跳转页面的地址
path('addProvider/',views.addProvider),
创建方法,跳转打开添加供应商的html页面
def addProvider(request):
return render(request,"addProvider.html",{"user":user[0]})
其添加供应商页面代码如下
超市订单管理系统--添加供应商
返回首页
欢迎,{{user.userName}}
注销
超市订单管理系统
{% csrf_token %}
供应商编码:
供应商名称:
供应商详细描述:
供应商联系人:
联系电话:
地址:
传真:
其界面效果图如下
当经理输入新供应商信息之后,将数据发送给服务器
接收经理添加新的供应商的数据地址
path('toAddProvider/',views.toAddProvider),
创建方法,接收新供应商信息
def toAddProvider(request):
# 供应商编号
proCode=request.POST["proCode"]
# 供应商名称
proName=request.POST["proName"]
# 供应商主营业务
proDesc=request.POST["proDesc"]
# 供应商联系人
proContact=request.POST["proContact"]
# 联系人电话
proPhone=request.POST["proPhone"]
# 供应商地址
proAddress=request.POST["proAddress"]
# 传真
proFax=request.POST["proFax"]
# 获得当前登录系统的经理的id
createdBy=user[0].id
# 获得经理添加供应商的实时时间
creationDate=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 不涉及修改功能,修改的经理的id默认为0
modifyBy=0
modifyDate=""
# 将新供应商的数据信息添加至供应商表
Provider.objects.create(proCode=proCode,proName=proName,proDesc=proDesc,
proContact=proContact,proPhone=proPhone,proAddress=proAddress,
proFax=proFax,createdBy=createdBy,creationDate=creationDate,
modifyBy=modifyBy,modifyDate=modifyDate)
return HttpResponseRedirect("/gysgl/?type=2")
数据如果添加成功,则刷新供应商列表页面
当经理修改供应商信息需要将该供应商信息主键id发送给服务器
接收经理需要修改的供应商id的地址
path('getProvider/',views.getProvider),
创建方法,根据经理要修改的供应商id查询供应商表,将该供应商信息显示在修改页面上
def getProvider(request):
id=request.GET["id"]
# 通过供应商id查询该供应商的完整信息
provider=Provider.objects.get(id=id)
return render(request,"updateProvider.html",{"provider":provider,"user":user[0]})
修改供应商页面html代码如下
超市订单管理系统--修改供应商
返回首页
欢迎,{{user.userName}}
注销
超市订单管理系统
{% csrf_token %}
供应商编码:
供应商名称:
供应商详细描述:
{{ provider.proDesc }}
供应商联系人:
联系电话:
地址:
传真:
其界面效果如下
当经理更新供应商信息后,将数据发送给服务器
接收经理更新供应商的所有信息的地址
path('updateProvider/',views.updateProvider),
创建方法,接收更新的供应商信息
def updateProvider(request):
# 主键id
id=request.POST["id"]
# 供应商编号
proCode = request.POST["proCode"]
# 供应商名称
proName = request.POST["proName"]
# 供应商主营业务
proDesc = request.POST["proDesc"]
# 供应商联系人
proContact = request.POST["proContact"]
# 联系人电话
proPhone = request.POST["proPhone"]
# 供应商地址
proAddress = request.POST["proAddress"]
# 传真
proFax = request.POST["proFax"]
# 标注哪个经理修改了这个供应商信息
modifyBy=user[0].id
# 获得修改供应商的实时时间
modifyDate=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 根据供应商id从数据库中查询出旧供应商数据
provider=Provider.objects.filter(id=id)
# 将新数据替换旧数据
provider.update(proCode=proCode,proName=proName,proDesc=proDesc,
proContact=proContact,proPhone=proPhone,proAddress=proAddress,
proFax=proFax,modifyBy=modifyBy,modifyDate=modifyDate)
return HttpResponseRedirect("/gysgl/?type=2")
数据修改成功后,刷新供应商列表页面
经理还可以删除无效的供应商
接收经理删除指定供应商的地址
path('deleteProvider/',views.deleteProvider),
创建方法,根据供应商id从数据库中删除指定的供应商信息
def deleteProvider(request):
id=request.GET["id"]
# 根据id查询出要删除的供应商信息
provider=Provider.objects.filter(id=id)
# 将该供应商删除
provider.delete()
# 刷新列表页面
return HttpResponseRedirect("/gysgl/?type=2")
删除后刷新列表页面
Original: https://blog.csdn.net/u010321564/article/details/128428594
Author: 笔触狂放
Title: 【Django】第三课 基于Django超市订单管理系统开发
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/788336/
转载文章受原作者版权保护。转载请注明原作者出处!