299 lines
12 KiB
HTML
299 lines
12 KiB
HTML
{% extends 'layout.html' %}
|
||
|
||
{% block content %}
|
||
<div class="container">
|
||
<div style="margin-bottom:10px">
|
||
<a id="btnadd" class="btn btn-success" href="#">
|
||
<span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>
|
||
新建订单
|
||
</a>
|
||
</div>
|
||
<div class="panel panel-default">
|
||
<!-- Default panel contents -->
|
||
<div class="panel-heading">
|
||
<span class="glyphicon glyphicon-th-list" aria-hidden="true"></span>
|
||
部门列表
|
||
</div>
|
||
<!-- Table -->
|
||
<table class="table table-bordered">
|
||
<thead>
|
||
<tr>
|
||
<th>ID</th>
|
||
<th>订单ID</th>
|
||
<th>商品名称</th>
|
||
<th>价格</th>
|
||
<th>状态</th>
|
||
<th>用户</th>
|
||
<th>操作</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for item in queryset %}
|
||
<tr>
|
||
<th>{{ item.id }}</th>
|
||
<th>{{ item.oid }}</th>
|
||
<td>{{ item.title }}</td>
|
||
<td>{{ item.price }}</td>
|
||
<td>{{ item.get_status_display }}</td>
|
||
<td>{{ item.user.username }}</td>
|
||
<td>
|
||
<!--在这里给删除按钮class属性增加值btnDelete,不能用id属性,不然只会对第1条记录有效果-->
|
||
<input order_id="{{ item.id }}" type="button" class="btn btn-primary btn-xs btnEdit"
|
||
value="修改">
|
||
<input order_id="{{ item.id }}" order_oid={{ item.oid }} type="button"
|
||
class="btn btn-danger btn-xs btnDelete" value="删除">
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<ul class="pagination">
|
||
{{ page_nav }}
|
||
</ul>
|
||
|
||
<!-- 新建 & 修改 订单的模态窗口 -->
|
||
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
|
||
<div class="modal-dialog" role="document">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
|
||
aria-hidden="true">×</span></button>
|
||
<h4 class="modal-title" id="myModalLabel">新建订单</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
<!-- novalidate 关闭浏览器的表单验证,用Django来控制检验 -->
|
||
<form id='saveForm'>
|
||
{% csrf_token %}
|
||
{% for field in form %}
|
||
<div class="form-group">
|
||
<label>{{ field.label }}</label>
|
||
{{ field }}<span class="error" style="color:#ff0000;"> {{ field.errors.0 }}</span>
|
||
</div>
|
||
{% endfor %}
|
||
{# <button type="submit" class="btn btn-primary">保存</button>#}
|
||
</form>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">取 消</button>
|
||
<button id="btnSave" type="button" class="btn btn-primary">保 存</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- 删除订单的模态窗口 -->
|
||
<div class="modal fade" id="myModal1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
|
||
<div class="modal-dialog" role="document">
|
||
<div class="alert alert-danger alert-dismissible fade in" role="alert">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
|
||
aria-hidden="true">×</span></button>
|
||
<h4>删除警告</h4>
|
||
<p style="margin: 20px 10px;" id="del_msg"></p>
|
||
<p style="text-align: right;">
|
||
<button id='confirm' type="button" class="btn btn-danger">确认删除</button>
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">放弃</button>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
{% endblock %}
|
||
|
||
{% block js %}
|
||
<script type="text/javascript">
|
||
|
||
// 定义全局变量,用于存储行ID给后端处理
|
||
var DELETE_ID
|
||
var EDIT_ID
|
||
|
||
// 页面加载完成后,执行
|
||
$(function () {
|
||
bindBtnaddEvent();
|
||
bindBtnSaveEvent();
|
||
bindBtnDeleteEvent();
|
||
bindBtnDeleteSureEvent();
|
||
bindBtnEditEvent();
|
||
})
|
||
|
||
// 新建 & 编辑 ->订单
|
||
// 新建和编辑共用一个模态窗口
|
||
function bindBtnaddEvent() {
|
||
$('#btnadd').click(function () {
|
||
// 清空对话框表单
|
||
$('#saveForm')[0].reset()
|
||
|
||
// 每次添加时,要将编辑行的全局变量置空
|
||
EDIT_ID = undefined
|
||
|
||
// 点击新建订单按钮
|
||
$('#myModal').modal('show')
|
||
$('#myModalLabel').text('新建订单')
|
||
})
|
||
}
|
||
|
||
// 订单编辑
|
||
function bindBtnEditEvent() {
|
||
$('.btnEdit').click(function () {
|
||
// 清空对话框表单
|
||
$('#saveForm')[0].reset()
|
||
|
||
// 获取当前行的订单ID
|
||
var order_id = $(this).attr('order_id')
|
||
EDIT_ID = order_id
|
||
// 发送ajax请求到后端,获取编辑行的数据
|
||
$.ajax({
|
||
url: '/order/detail/',
|
||
type: 'get',
|
||
data: {
|
||
nid: order_id,
|
||
},
|
||
dataType: 'JSON',
|
||
success: function (res) {
|
||
if (res.status) {
|
||
|
||
// 浏览器自动会为文本框添加一个id属性,格式为id_title
|
||
// 将返回的data字典通过循环赋值给各自的文本框(说明详见
|
||
$.each(res.data, function (name, value) {
|
||
$('#id_' + name).val(value)
|
||
})
|
||
|
||
// 点击修改订单按钮
|
||
$('#myModal').modal('show')
|
||
|
||
// 修改模态窗口的标题
|
||
$('#myModalLabel').text('修改订单')
|
||
{#console.log(res.data.title)#}
|
||
{#console.log(res.data.price)#}
|
||
{#console.log(res.data.status)#}
|
||
} else {
|
||
alert(res.error)
|
||
}
|
||
}
|
||
})
|
||
|
||
})
|
||
}
|
||
|
||
// 订单删除询问
|
||
function bindBtnDeleteEvent() {
|
||
$('.btnDelete').click(function () {
|
||
// 点击删除订单按钮
|
||
$('#myModal1').modal('show');
|
||
DELETE_ID = $(this).attr('order_id')
|
||
var oid = $(this).attr('order_oid')
|
||
$('#del_msg').text('你确定要删除订单ID为' + oid + '的商品吗?')
|
||
|
||
console.log(oid)
|
||
})
|
||
}
|
||
|
||
// 保存&修改订单
|
||
function bindBtnSaveEvent() {
|
||
$('#btnSave').click(function () {
|
||
// 每次先清除span标签内容
|
||
$('.error').empty()
|
||
|
||
//判断来源是新建还是修改
|
||
if (EDIT_ID) {
|
||
// 编辑订单
|
||
doEdit()
|
||
} else {
|
||
// 新建订单
|
||
doAdd()
|
||
}
|
||
})
|
||
}
|
||
|
||
// 保存ajax请求后端
|
||
function doAdd() {
|
||
$.ajax({
|
||
url: '/order/add/',
|
||
type: 'post',
|
||
data: $('#saveForm').serialize(),
|
||
dataType: 'JSON',
|
||
success: function (res) {
|
||
console.log(res)
|
||
if (res.status) {
|
||
// 清空表单 $('#saveForm')是jQuery对象加【0】后-> 变为DOM对象,才有reset方法
|
||
$('#saveForm')[0].reset();
|
||
$('#myModal').modal('hide');
|
||
location.reload();
|
||
} else {
|
||
// 不成功要返回错误信息,each循环
|
||
// 错误信息包括字段名,和错误信息
|
||
// 浏览器自动会为文本框添加一个id属性,格式为id_title
|
||
// 所以在循环读出错误信息时,拼接一个id属性
|
||
// .next()指的是在文本框标签后的第一个标签,也就指span标签,给它设置text()值
|
||
// msg是一个列表所以读出msg[0]
|
||
$.each(res.error_msg, function (name, msg) {
|
||
$('#id_' + name).next().text(msg[0])
|
||
})
|
||
}
|
||
|
||
},
|
||
|
||
})
|
||
}
|
||
|
||
// 编辑ajax请求后端
|
||
function doEdit() {
|
||
$.ajax({
|
||
url: '/order/edit/' + '?uid=' + EDIT_ID,
|
||
type: 'post',
|
||
data: $('#saveForm').serialize(),
|
||
dataType: 'JSON',
|
||
success: function (res) {
|
||
console.log(res)
|
||
if (res.status) {
|
||
// 清空表单 $('#saveForm')是jQuery对象加【0】后-> 变为DOM对象,才有reset方法
|
||
$('#saveForm')[0].reset();
|
||
$('#myModal').modal('hide');
|
||
location.reload();
|
||
} else {
|
||
if (res.tips) {
|
||
alert(res.tips);
|
||
} else {
|
||
// 不成功要返回错误信息,each循环
|
||
// 错误信息包括字段名,和错误信息
|
||
// 浏览器自动会为文本框添加一个id属性,格式为id_title
|
||
// 所以在循环读出错误信息时,拼接一个id属性
|
||
// .next()指的是在文本框标签后的第一个标签,也就指span标签,给它设置text()值
|
||
// msg是一个列表所以读出msg[0]
|
||
$.each(res.error_msg, function (name, msg) {
|
||
$('#id_' + name).next().text(msg[0])
|
||
})
|
||
}
|
||
}
|
||
},
|
||
})
|
||
}
|
||
|
||
// 确认删除订单
|
||
function bindBtnDeleteSureEvent() {
|
||
$('#confirm').click(function () {
|
||
$.ajax({
|
||
url: '/order/delete/',
|
||
type: 'get',
|
||
data: {
|
||
'nid': DELETE_ID,
|
||
},
|
||
dataType: 'JSON',
|
||
success: function (res) {
|
||
if (res.status) {
|
||
$('#myModal1').modal('hide');
|
||
// 每次删除完成后,将全局变量置0
|
||
DELETE_ID = 0;
|
||
location.reload();
|
||
} else {
|
||
alert('不可遇见原因,删除失败')
|
||
}
|
||
}
|
||
})
|
||
})
|
||
}
|
||
|
||
</script>
|
||
{% endblock %} |