from django.db import models
class Goods(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField('貨物名稱', default='', max_length=50)
source = models.CharField('渠道', max_length=255, default='')
status = models.CharField('狀態', default='合格', max_length=50)
create_time = models.DateTimeField('創建時間', auto_now_add=True)
yxq = models.CharField('有效期', default='', max_length=50)
description = models.TextField('商品描述')
def __str__(self):
return self.name
class Meta:
db_table = 'goods'
class Order(models.Model):
id = models.AutoField(primary_key=True)
goods = models.ForeignKey(Goods, on_delete=models.CASCADE)
count = models.IntegerField('貨物數量')
status = models.CharField('狀態', default='臨時狀態', max_length=50)
owner = models.CharField('創建人', default='admin', max_length=50)
create_time = models.DateTimeField('創建時間', auto_now_add=True)
modify_time = models.DateTimeField('最後修改時間', auto_now=True)
description = models.TextField('個人描述')
def __str__(self):
return self.goods
class Meta:
db_table = 'order'
class Transporter(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField('運輸員', default='123', max_length=50)
chepai = models.CharField('車牌', default='123', max_length=50)
weight = models.CharField('載重', default='', max_length=50)
status = models.CharField('狀態', default='臨時狀態', max_length=50)
create_time = models.DateTimeField('創建時間', auto_now_add=True)
description = models.TextField('個人描述')
def __str__(self):
return self.name
class Meta:
db_table = 'transporter'
class CangkuOrder(models.Model):
id = models.AutoField(primary_key=True)
goods = models.ForeignKey(Goods, on_delete=models.CASCADE)
count = models.IntegerField('貨物數量')
price = models.IntegerField("價格",default=1)
owner = models.CharField('創建人', default='admin', max_length=50)
status = models.CharField('狀態', default='入庫', max_length=50)
create_time = models.DateTimeField('創建時間', auto_now_add=True)
def __str__(self):
return self.goods
class Meta:
db_table = 'cangku_order'
class CarOrder(models.Model):
id = models.AutoField(primary_key=True)
transporter = models.ForeignKey(Transporter, on_delete=models.CASCADE)
order = models.ForeignKey(CangkuOrder, on_delete=models.CASCADE)
status = models.CharField('狀態', default='臨時狀態', max_length=50)
create_time = models.CharField('發車時間', default='123', max_length=50)
sc_time = models.CharField('收車時間', default='123', max_length=50)
def __str__(self):
return self.status
class Meta:
db_table = 'car_order'
class Finance(models.Model):
id = models.AutoField(primary_key=True)
ck = models.ForeignKey(CangkuOrder, on_delete=models.CASCADE)
price = models.FloatField("價格")
status = models.CharField('狀態', default='採購', max_length=50)
create_time = models.DateTimeField('創建時間', auto_now_add=True)
def __str__(self):
return self.ck
class Meta:
db_table = 'finance'
import datetime
import os
from django.core.paginator import Paginator
from django.db.models import Sum
from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden, JsonResponse
from django.shortcuts import render
from user.models import User
from .models import *
workdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def login(req):
"""
跳轉登錄
:param req:
:return:
"""
return render(req, 'login.html')
def dashboard(request):
total_user = len(User.objects.all())
total_sr = CangkuOrder.objects.filter(status='出庫').aggregate(MyCulate=Sum('price'))['MyCulate']
total_zc = CangkuOrder.objects.filter(status='入庫').aggregate(MyCulate=Sum('price'))['MyCulate']
total_cc = CangkuOrder.objects.count()
total_ts = Transporter.objects.count()
total_goods = Goods.objects.count()
print(total_sr)
date = datetime.datetime.today()
month = date.month
year = date.year
day = date.day
username = request.session['username']
current_day = str(year) + '-' + str(month) + "-" + str(day)
return render(request, 'welcome.html',locals())
def register(req):
"""
跳轉註冊
:param req:
:return:
"""
return render(req, 'register.html')
def ls_order(req):
"""
跳轉註冊
:param req:
:return:
"""
goods = Goods.objects.all()
role = int(req.session.get('role', 2))
username = req.session.get('username', 'admin')
return render(req, 'ls_order.html', locals())
def change_status(request, status):
response_data = {}
user_id = request.POST.get('id')
if status == 0:
status = "不通過"
else:
status = "正式"
Order.objects.filter(id=user_id).update(
status=status)
response_data['msg'] = 'success'
return JsonResponse(response_data, status=201)
def zs_order(req):
"""
跳轉註冊
:param req:
:return:
"""
goods = Goods.objects.all()
username = req.session.get('username', 'admin')
return render(req, 'zs_order.html', locals())
def index(req):
"""
跳轉首頁
:param req:
:return:
"""
username = req.session['username']
total_user = len(User.objects.all())
date = datetime.datetime.today()
month = date.month
year = date.year
return render(req, 'index.html', locals())
def login_out(req):
"""
註銷登錄
:param req:
:return:
"""
del req.session['username']
return HttpResponseRedirect('/')
def personal(req):
username = req.session['username']
role_id = req.session['role']
user = User.objects.filter(name=username).first()
return render(req, 'personal.html', locals())
def get_zs_order(request):
"""
獲取列表信息 | 模糊查詢
:param request:
:return:
"""
keyword = request.GET.get('name')
page = request.GET.get("page", '')
limit = request.GET.get("limit", '')
role_id = request.GET.get('position', '')
response_data = {}
response_data['code'] = 0
response_data['msg'] = ''
data = []
if keyword is None:
results_obj = Order.objects.filter(status='正式').all()
else:
results_obj = Order.objects.filter(owner__contains=keyword, status='正式').all()
paginator = Paginator(results_obj, limit)
results = paginator.page(page)
if results:
for user in results:
record = {
"id": user.id,
"name": user.goods.name,
"count1": user.count,
"status": user.status,
"owner": user.owner,
'create_time': user.create_time.strftime('%Y-%m-%d %H:%m:%S'),
"desc": user.description,
}
data.append(record)
response_data['count'] = len(results_obj)
response_data['data'] = data
return JsonResponse(response_data)
def get_ls_order(request):
"""
獲取列表信息 | 模糊查詢
:param request:
:return:
"""
keyword = request.GET.get('name')
page = request.GET.get("page", '')
limit = request.GET.get("limit", '')
role_id = request.GET.get('position', '')
response_data = {}
response_data['code'] = 0
response_data['msg'] = ''
data = []
if keyword is None:
results_obj = Order.objects.filter(status='臨時').all()
else:
results_obj = Order.objects.filter(owner__contains=keyword, status='臨時').all()
paginator = Paginator(results_obj, limit)
results = paginator.page(page)
if results:
for user in results:
record = {
"id": user.id,
"name": user.goods.name,
"count1": user.count,
"status": user.status,
"owner": user.owner,
'create_time': user.create_time.strftime('%Y-%m-%d %H:%m:%S'),
"desc": user.description,
}
data.append(record)
response_data['count'] = len(results_obj)
response_data['data'] = data
return JsonResponse(response_data)
def get_goods(request):
"""
獲取列表信息 | 模糊查詢
:param request:
:return:
"""
keyword = request.GET.get('name')
page = request.GET.get("page", '')
limit = request.GET.get("limit", '')
role_id = request.GET.get('position', '')
response_data = {}
response_data['code'] = 0
response_data['msg'] = ''
data = []
if keyword is None:
results_obj = Goods.objects.all()
else:
results_obj = Goods.objects.filter(name__contains=keyword).all()
paginator = Paginator(results_obj, limit)
results = paginator.page(page)
if results:
for user in results:
record = {
"id": user.id,
"name": user.name,
"source": user.source,
"status": user.status,
"yxq": user.yxq,
'create_time': user.create_time.strftime('%Y-%m-%d %H:%m:%S'),
"desc": user.description,
}
data.append(record)
response_data['count'] = len(results_obj)
response_data['data'] = data
return JsonResponse(response_data)
def goods(request):
"""
跳轉頁面
"""
username = request.session['username']
role = int(request.session['role'])
user_id = request.session['user_id']
return render(request, 'goods.html', locals())
def add_goods(request):
name = request.POST.get('name')
source = request.POST.get('source')
desc = request.POST.get('desc')
yxq = request.POST.get('yxq')
goods_obj = Goods.objects.filter(name=name)
if goods_obj:
return JsonResponse({'message': '用戶已存在,請直接登錄'}, status=403)
Goods.objects.create(
name=name,
description=desc,
yxq=yxq,
source=source,
)
response_data = {'message': '註冊成功'}
return JsonResponse(response_data)
def add_order(request):
goods_id = request.POST.get('goods')
count = request.POST.get('count')
owner = request.POST.get('username')
Order.objects.create(
goods_id=goods_id,
count=count,
owner=owner,
status='臨時'
)
response_data = {'message': '註冊成功'}
return JsonResponse(response_data)
def edit_order(request):
"""
修改信息
"""
response_data = {}
user_id = request.POST.get('id')
goods_id = request.POST.get('goods')
count = request.POST.get('count')
Order.objects.filter(id=user_id).update(
goods_id=goods_id,
count=count)
response_data['msg'] = 'success'
return JsonResponse(response_data, status=201)
def del_order(request):
"""
刪除信息
"""
user_id = request.POST.get('id')
result = Order.objects.filter(id=user_id).first()
try:
if not result:
response_data = {'error': '刪除失敗!', 'message': '找不到id爲%s' % user_id}
return JsonResponse(response_data, status=403)
result.delete()
response_data = {'message': '刪除成功!'}
return JsonResponse(response_data, status=201)
except Exception as e:
response_data = {'message': '刪除失敗!'}
return JsonResponse(response_data, status=403)
def edit_goods(request):
"""
修改信息
"""
response_data = {}
user_id = request.POST.get('id')
name = request.POST.get('name')
source = request.POST.get('source')
yxq = request.POST.get('yxq')
desc = request.POST.get('desc')
Goods.objects.filter(id=user_id).update(
name=name,
source=source,
description=desc,
yxq=yxq)
response_data['msg'] = 'success'
return JsonResponse(response_data, status=201)
def del_goods(request):
"""
刪除信息
"""
user_id = request.POST.get('id')
result = Goods.objects.filter(id=user_id).first()
try:
if not result:
response_data = {'error': '刪除失敗!', 'message': '找不到id爲%s' % user_id}
return JsonResponse(response_data, status=403)
result.delete()
response_data = {'message': '刪除成功!'}
return JsonResponse(response_data, status=201)
except Exception as e:
response_data = {'message': '刪除失敗!'}
return JsonResponse(response_data, status=403)
def add_cangchu(request):
goods = request.POST.get('goods')
owner = request.POST.get('owner')
status = request.POST.get('status')
count = request.POST.get('count')
price = request.POST.get('price')
cangku_order = CangkuOrder.objects.create(
goods_id=goods,
owner=owner,
status=status,
count=count,
price=price
)
print(cangku_order.id)
ts = Transporter.objects.filter(status='在崗').all()[0].id
print('ts',ts)
if status=='出庫':
CarOrder.objects.create(
transporter_id=ts,
order_id = cangku_order.id,
status='正常',
create_time ='待定',
sc_time = '待定'
)
Transporter.objects.filter(id=ts).update(
status='送貨'
)
response_data = {'message': '註冊成功'}
return JsonResponse(response_data)
def edit_cangchu(request):
"""
修改信息
"""
response_data = {}
user_id = request.POST.get('id')
price = request.POST.get('price')
count = request.POST.get('count')
status = request.POST.get('status')
CangkuOrder.objects.filter(id=user_id).update(
price=price,
status=status,
count=count)
response_data['msg'] = 'success'
return JsonResponse(response_data, status=201)
def del_cangchu(request):
"""
刪除信息
"""
user_id = request.POST.get('id')
result = CangkuOrder.objects.filter(id=user_id).first()
try:
if not result:
response_data = {'error': '刪除失敗!', 'message': '找不到id爲%s' % user_id}
return JsonResponse(response_data, status=403)
result.delete()
response_data = {'message': '刪除成功!'}
return JsonResponse(response_data, status=201)
except Exception as e:
response_data = {'message': '刪除失敗!'}
return JsonResponse(response_data, status=403)
def get_cangchu(request):
"""
獲取列表信息 | 模糊查詢
:param request:
:return:
"""
keyword = request.GET.get('name')
page = request.GET.get("page", '')
limit = request.GET.get("limit", '')
role_id = request.GET.get('position', '')
response_data = {}
response_data['code'] = 0
response_data['msg'] = ''
data = []
if keyword is None:
results_obj = CangkuOrder.objects.all()
else:
results_obj = CangkuOrder.objects.filter(owner__contains=keyword).all()
paginator = Paginator(results_obj, limit)
results = paginator.page(page)
if results:
for user in results:
record = {
"id": user.id,
"name": user.goods.name,
"count1": user.count,
"price": user.price,
"status": user.status,
"owner": user.owner,
'create_time': user.create_time.strftime('%Y-%m-%d %H:%m:%S'),
}
data.append(record)
response_data['count'] = len(results_obj)
response_data['data'] = data
return JsonResponse(response_data)
def cangchu(request):
"""
跳轉頁面
"""
username = request.session['username']
role = int(request.session['role'])
user_id = request.session['user_id']
goods = Goods.objects.all()
return render(request, 'cangchu.html', locals())
def add_ts(request):
name = request.POST.get('name')
chepai = request.POST.get('chepai')
status = request.POST.get('status')
weight = request.POST.get('weight')
desc = request.POST.get('desc')
Transporter.objects.create(
name=name,
chepai=chepai,
status=status,
weight=weight,
description=desc
)
response_data = {'message': '註冊成功'}
return JsonResponse(response_data)
def edit_ts(request):
"""
修改信息
"""
response_data = {}
user_id = request.POST.get('id')
name = request.POST.get('name')
desc = request.POST.get('desc')
weight = request.POST.get('weight')
chepai = request.POST.get('chepai')
status = request.POST.get('status')
Transporter.objects.filter(id=user_id).update(
chepai=chepai,
name=name,
status=status,
desc=desc,
weight=weight)
response_data['msg'] = 'success'
return JsonResponse(response_data, status=201)
def del_ts(request):
"""
刪除信息
"""
user_id = request.POST.get('id')
result = Transporter.objects.filter(id=user_id).first()
try:
if not result:
response_data = {'error': '刪除失敗!', 'message': '找不到id爲%s' % user_id}
return JsonResponse(response_data, status=403)
result.delete()
response_data = {'message': '刪除成功!'}
return JsonResponse(response_data, status=201)
except Exception as e:
response_data = {'message': '刪除失敗!'}
return JsonResponse(response_data, status=403)
def get_ts(request):
"""
獲取列表信息 | 模糊查詢
:param request:
:return:
"""
keyword = request.GET.get('name')
page = request.GET.get("page", '')
limit = request.GET.get("limit", '')
role_id = request.GET.get('position', '')
response_data = {}
response_data['code'] = 0
response_data['msg'] = ''
data = []
if keyword is None:
results_obj = Transporter.objects.all()
else:
results_obj = Transporter.objects.filter(owner__contains=keyword).all()
paginator = Paginator(results_obj, limit)
results = paginator.page(page)
if results:
for user in results:
record = {
"id": user.id,
"name": user.name,
"chepai": user.chepai,
"weight": user.weight,
"status": user.status,
"desc": user.description,
'create_time': user.create_time.strftime('%Y-%m-%d %H:%m:%S'),
}
data.append(record)
response_data['count'] = len(results_obj)
response_data['data'] = data
return JsonResponse(response_data)
def ts(request):
"""
跳轉頁面
"""
username = request.session['username']
role = int(request.session['role'])
user_id = request.session['user_id']
goods = Goods.objects.all()
return render(request, 'transporter.html', locals())
def add_co(request):
name = request.POST.get('name')
chepai = request.POST.get('chepai')
status = request.POST.get('status')
weight = request.POST.get('weight')
desc = request.POST.get('desc')
Transporter.objects.create(
name=name,
chepai=chepai,
status=status,
weight=weight,
description=desc
)
response_data = {'message': '註冊成功'}
return JsonResponse(response_data)
def edit_co(request):
"""
修改信息
"""
response_data = {}
user_id = request.POST.get('id')
create_time = request.POST.get('create_time')
sc_time = request.POST.get('sc_time')
CarOrder.objects.filter(id=user_id).update(
create_time=create_time,
sc_time=sc_time)
response_data['msg'] = 'success'
return JsonResponse(response_data, status=201)
def del_co(request):
"""
刪除信息
"""
user_id = request.POST.get('id')
result = CarOrder.objects.filter(id=user_id).first()
try:
if not result:
response_data = {'error': '刪除失敗!', 'message': '找不到id爲%s' % user_id}
return JsonResponse(response_data, status=403)
result.delete()
response_data = {'message': '刪除成功!'}
return JsonResponse(response_data, status=201)
except Exception as e:
response_data = {'message': '刪除失敗!'}
return JsonResponse(response_data, status=403)
def get_co(request):
"""
獲取列表信息 | 模糊查詢
:param request:
:return:
"""
keyword = request.GET.get('name')
page = request.GET.get("page", '')
limit = request.GET.get("limit", '')
role_id = request.GET.get('position', '')
response_data = {}
response_data['code'] = 0
response_data['msg'] = ''
data = []
if keyword is None:
results_obj = CarOrder.objects.all()
print(results_obj)
else:
results_obj = CarOrder.objects.filter(status__contains=keyword).all()
paginator = Paginator(results_obj, limit)
results = paginator.page(page)
if results:
for user in results:
record = {
"id": user.id,
"order": user.order.id,
"ts": user.transporter.name,
"sc_time": user.sc_time,
"status": user.status,
'create_time': user.create_time,
}
data.append(record)
response_data['count'] = len(results_obj)
response_data['data'] = data
return JsonResponse(response_data)
def car_order(request):
"""
跳轉頁面
"""
username = request.session['username']
role = int(request.session['role'])
user_id = request.session['user_id']
goods = Goods.objects.all()
return render(request, 'car_order.html', locals())
3.配置urls.py
from django.contrib import admin
from django.urls import path, include
from . import views
urlpatterns = [
path('', views.login),
path('index', views.index),
path('personal', views.personal),
path('login_out', views.login_out),
path('dashboard', views.dashboard),
path('ls_order',views.ls_order),
path('zs_order',views.zs_order),
path('get_ls_order',views.get_ls_order),
path('get_zs_order',views.get_zs_order),
path('goods',views.goods),
path('get_goods',views.get_goods),
path('add_goods',views.add_goods),
path('add_order',views.add_order),
path('change_status/<status>',views.change_status),
path('edit_order',views.edit_order),
path('del_goods',views.del_goods),
path('edit_goods',views.edit_goods),
path('edit_cangchu',views.edit_cangchu),
path('get_cangchu',views.get_cangchu),
path('cangchu',views.cangchu),
path('del_cangchu',views.del_cangchu),
path('add_cangchu',views.add_cangchu),
path('edit_ts', views.edit_ts),
path('get_ts', views.get_ts),
path('ts', views.ts),
path('del_ts', views.del_ts),
path('add_ts', views.add_ts),
path('edit_co', views.edit_co),
path('get_co', views.get_co),
path('car_order', views.car_order),
path('del_co', views.del_co),
path('add_co', views.add_co),
]
4.使用模板語言與views進線關聯
<!doctype html>
<html class="x-admin-sm">
<head>
<meta charset="UTF-8">
<title>企業物流管理系統</title>
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
<link rel="stylesheet" href="../static/css/font.css">
<link rel="stylesheet" href="../static/css/xadmin.css">
<!-- <link rel="stylesheet" href="./css/theme5.css"> -->
<script src="../static/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="../static/js/xadmin.js"></script>
<script>
// 是否開啓刷新記憶tab功能
// var is_remember = false;
</script>
</head>
<body class="index">
<!-- 頂部開始 -->
<div class="container">
<div class="logo">
<a href="#">企業物流管理系統</a></div>
<div class="left_open">
<a><i title="展開左側欄" class="iconfont"></i></a>
</div>
<ul class="layui-nav right" lay-filter="">
<li class="layui-nav-item">
<a href="javascript:;">{{ username }}</a>
<dl class="layui-nav-child">
<!-- 二級菜單 -->
<dd>
<a onclick="xadmin.open('個人信息','/personal')">個人信息</a></dd>
<dd>
<a href="/login_out">註銷登錄</a></dd>
</dl>
</li>
<li class="layui-nav-item to-index">
<a href="/index">前臺首頁</a></li>
</ul>
</div>
<div class="left-nav">
<div id="side-nav">
<ul id="nav">
<li>
<a href="javascript:;">
<i class="iconfont left-nav-li" lay-tips="訂單管理"></i>
<cite>訂單管理</cite>
<i class="iconfont nav_right"></i></a>
<ul class="sub-menu">
<li>
<a onclick="xadmin.add_tab('臨時訂單','/ls_order')">
<i class="iconfont"></i>
<cite>臨時訂單</cite></a>
</li>
<li>
<a onclick="xadmin.add_tab('正式訂單','/zs_order')">
<i class="iconfont"></i>
<cite>正式訂單</cite></a>
</li>
</ul>
</li>
<li>
<a href="javascript:;">
<i class="iconfont left-nav-li" lay-tips="貨物管理"></i>
<cite>貨物管理</cite>
<i class="iconfont nav_right"></i></a>
<ul class="sub-menu">
<li>
<a onclick="xadmin.add_tab('貨物列表','/goods')">
<i class="iconfont"></i>
<cite>貨物列表</cite></a>
</li>
</ul>
</li>
<li>
<a href="javascript:;">
<i class="iconfont left-nav-li" lay-tips="倉儲管理"></i>
<cite>倉儲管理</cite>
<i class="iconfont nav_right"></i></a>
<ul class="sub-menu">
<li>
<a onclick="xadmin.add_tab('倉儲列表','/cangchu')">
<i class="iconfont"></i>
<cite>倉儲列表</cite></a>
</li>
</ul>
</li>
<li>
<a href="javascript:;">
<i class="iconfont left-nav-li" lay-tips="運輸管理"></i>
<cite>運輸管理</cite>
<i class="iconfont nav_right"></i></a>
<ul class="sub-menu">
<li>
<a onclick="xadmin.add_tab('運輸員列表','/ts')">
<i class="iconfont"></i>
<cite>運輸員列表</cite></a>
</li>
<li>
<a onclick="xadmin.add_tab('運輸訂單','/car_order')">
<i class="iconfont"></i>
<cite>運輸訂單</cite></a>
</li>
</ul>
</li>
<li>
<a href="javascript:;">
<i class="iconfont left-nav-li" lay-tips="人事管理"></i>
<cite>人事管理</cite>
<i class="iconfont nav_right"></i></a>
<ul class="sub-menu">
<li>
<a onclick="xadmin.add_tab('用戶列表','/user/user')">
<i class="iconfont"></i>
<cite>用戶列表</cite></a>
</li>
<li>
<a onclick="xadmin.add_tab('個人信息','/personal')">
<i class="iconfont"></i>
<cite>個人信息</cite></a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- <div class="x-slide_left"></div> -->
<!-- 左側菜單結束 -->
<!-- 右側主體開始 -->
<div class="page-content">
<div class="layui-tab tab" lay-filter="xbs_tab" lay-allowclose="false">
<ul class="layui-tab-title">
<li class="home">
<i class="layui-icon"></i>控制檯</li></ul>
<div class="layui-unselect layui-form-select layui-form-selected" id="tab_right">
<dl>
<dd data-type="this">關閉當前</dd>
<dd data-type="other">關閉其它</dd>
<dd data-type="all">關閉全部</dd></dl>
</div>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<iframe src='/dashboard' frameborder="0" scrolling="yes" class="x-iframe"></iframe>
</div>
</div>
<div id="tab_show"></div>
</div>
</div>
<div class="page-content-bg"></div>
<style id="theme_style"></style>
</body>
</html>
5.效果
參考gitcode:
https://github.com/2454760302hui/TestProject