Compare commits
6 Commits
Author | SHA1 | Date |
---|---|---|
|
46cb866ad1 | 7 months ago |
|
47b8de55bb | 7 months ago |
|
aeebaa58d2 | 7 months ago |
|
97b6db67ba | 7 months ago |
|
3718e3247d | 7 months ago |
|
1cd1baa86f | 7 months ago |
@ -0,0 +1,55 @@
|
||||
from flask import Flask, jsonify, request
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# 模拟数据库,存储用户信息
|
||||
users = []
|
||||
|
||||
|
||||
# 查看所有用户信息
|
||||
@app.route('/users', methods=['GET'])
|
||||
def get_users():
|
||||
return jsonify(users)
|
||||
|
||||
|
||||
# 查看单个用户信息
|
||||
@app.route('/users/<int:user_id>', methods=['GET'])
|
||||
def get_user(user_id):
|
||||
for user in users:
|
||||
if user['id'] == user_id:
|
||||
return jsonify(user)
|
||||
return jsonify({'message': 'User not found'}), 404
|
||||
|
||||
|
||||
# 添加用户
|
||||
@app.route('/users', methods=['POST'])
|
||||
def add_user():
|
||||
new_user = request.get_json()
|
||||
new_user['id'] = len(users) + 1
|
||||
users.append(new_user)
|
||||
return jsonify(new_user), 201
|
||||
|
||||
|
||||
# 修改用户信息
|
||||
@app.route('/users/<int:user_id>', methods=['PUT'])
|
||||
def update_user(user_id):
|
||||
updated_user = request.get_json()
|
||||
for i, user in enumerate(users):
|
||||
if user['id'] == user_id:
|
||||
users[i].update(updated_user)
|
||||
return jsonify(users[i])
|
||||
return jsonify({'message': 'User not found'}), 404
|
||||
|
||||
|
||||
# 删除用户信息
|
||||
@app.route('/users/<int:user_id>', methods=['DELETE'])
|
||||
def delete_user(user_id):
|
||||
for i, user in enumerate(users):
|
||||
if user['id'] == user_id:
|
||||
del users[i]
|
||||
return jsonify({'message': 'User deleted'})
|
||||
return jsonify({'message': 'User not found'}), 404
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
@ -0,0 +1,8 @@
|
||||
[database]
|
||||
host = localhost
|
||||
database = demo
|
||||
user = root
|
||||
password = password
|
||||
|
||||
[application]
|
||||
log_level = DEBUG
|
@ -0,0 +1,78 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>仓库管理系统 - 前端界面</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<h1>仓库管理系统</h1>
|
||||
</header>
|
||||
<main>
|
||||
<!-- 货物管理部分 -->
|
||||
<section id="goods-management">
|
||||
<h2>货物管理</h2>
|
||||
<table id="goods-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>货物编号</th>
|
||||
<th>货物名称</th>
|
||||
<th>货物类型</th>
|
||||
<th>库存数量</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
<button id="add-goods-btn">添加货物</button>
|
||||
<button id="update-goods-btn">更新货物</button>
|
||||
<button id="delete-goods-btn">删除货物</button>
|
||||
</section>
|
||||
<!-- 仓库管理部分 -->
|
||||
<section id="warehouse-management">
|
||||
<h2>仓库管理</h2>
|
||||
<table id="warehouse-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>仓库编号</th>
|
||||
<th>仓库名称</th>
|
||||
<th>仓库地址</th>
|
||||
<th>仓库面积</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
<button id="add-warehouse-btn">添加仓库</button>
|
||||
<button id="update-warehouse-btn">更新仓库</button>
|
||||
<button id="delete-warehouse-btn">删除仓库</button>
|
||||
</section>
|
||||
<!-- 订单管理部分 -->
|
||||
<section id="order-management">
|
||||
<h2>订单管理</h2>
|
||||
<table id="order-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>订单编号</th>
|
||||
<th>订单日期</th>
|
||||
<th>客户名称</th>
|
||||
<th>订单状态</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
<button id="add-order-btn">添加订单</button>
|
||||
<button id="update-order-btn">更新订单</button>
|
||||
<button id="delete-order-btn">删除订单</button>
|
||||
</section>
|
||||
</main>
|
||||
<script src="script.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -0,0 +1,24 @@
|
||||
import mysql.connector
|
||||
from mysql.connector import Error
|
||||
import configparser
|
||||
|
||||
def load_config():
|
||||
config = configparser.ConfigParser()
|
||||
config.read('config.ini')
|
||||
return config
|
||||
|
||||
def connect_to_database():
|
||||
try:
|
||||
config = load_config()
|
||||
connection = mysql.connector.connect(
|
||||
host=config['database']['host'],
|
||||
database=config['database']['database'],
|
||||
user=config['database']['user'],
|
||||
password=config['database']['password']
|
||||
)
|
||||
if connection.is_connected():
|
||||
print("Connected to the database successfully!")
|
||||
return connection
|
||||
except Error as e:
|
||||
print(f"Error while connecting to database: {e}")
|
||||
return None
|
@ -0,0 +1,347 @@
|
||||
// 模拟获取货物数据的函数
|
||||
function getGoodsData() {
|
||||
// 这里可以使用Ajax或其他方式从后端获取货物数据
|
||||
return [
|
||||
{ id: 1, name: "电脑显示器", type: "电子产品", quantity: 100 },
|
||||
{ id: 2, name: "运动鞋", type: "服装", quantity: 200 },
|
||||
{ id: 3, name: "苹果手机", type: "电子产品", quantity: 150 }
|
||||
];
|
||||
}
|
||||
|
||||
// 模拟获取仓库数据的函数
|
||||
function getWarehouseData() {
|
||||
// 这里可以使用Ajax或其他方式从后端获取仓库数据
|
||||
return [
|
||||
{ id: 1, name: "北京仓库", address: "北京市朝阳区", area: 1000 },
|
||||
{ id: 2, name: "上海仓库", address: "上海市浦东新区", area: 1200 },
|
||||
{ id: 3, name: "广州仓库", address: "广州市天河区", area: 800 }
|
||||
];
|
||||
}
|
||||
|
||||
// 模拟获取订单数据的函数
|
||||
function getOrderData() {
|
||||
// 这里可以使用Ajax或其他方式从后端获取订单数据
|
||||
return [
|
||||
{ id: 1, date: "2024-01-01", customer: "客户A", status: "已创建" },
|
||||
{ id: 2, date: "2024-01-02", customer: "客户B", status: "已审核" },
|
||||
{ id: 3, date: "2024-01-03", customer: "客户C", status: "已发货" }
|
||||
];
|
||||
}
|
||||
|
||||
// 渲染货物数据到表格
|
||||
function renderGoodsData() {
|
||||
var goodsTable = document.getElementById('goods-table');
|
||||
goodsTable.innerHTML = '';
|
||||
var goodsData = getGoodsData();
|
||||
goodsData.forEach(function (goods) {
|
||||
var row = goodsTable.insertRow();
|
||||
var cell1 = row.insertCell(0);
|
||||
cell1.innerHTML = goods.id;
|
||||
var cell2 = row.insertCell(1);
|
||||
cell2.innerHTML = goods.name;
|
||||
var cell3 = row.insertCell(2);
|
||||
cell3.innerHTML = goods.type;
|
||||
var cell4 = row.insertCell(3);
|
||||
cell4.innerHTML = goods.quantity;
|
||||
var cell5 = row.insertCell(4);
|
||||
var editBtn = document.createElement('button');
|
||||
editBtn.innerHTML = '编辑';
|
||||
editBtn.onclick = function () {
|
||||
// 这里可以添加编辑货物的逻辑
|
||||
alert('编辑货物:' + goods.name);
|
||||
};
|
||||
var deleteBtn = document.createElement('button');
|
||||
deleteBtn.innerHTML = '删除';
|
||||
deleteBtn.onclick = function () {
|
||||
// 这里可以添加删除货物的逻辑
|
||||
var confirmDelete = confirm('确定要删除该货物吗?');
|
||||
if (confirmDelete) {
|
||||
// 模拟删除操作
|
||||
goodsData = goodsData.filter(function (item) {
|
||||
return item.id!== goods.id;
|
||||
});
|
||||
renderGoodsData();
|
||||
}
|
||||
};
|
||||
cell5.appendChild(editBtn);
|
||||
cell5.appendChild(deleteBtn);
|
||||
});
|
||||
}
|
||||
|
||||
// 渲染仓库数据到表格
|
||||
function renderWarehouseData() {
|
||||
var warehouseTable = document.getElementById('warehouse-table');
|
||||
warehouseTable.innerHTML = '';
|
||||
var warehouseData = getWarehouseData();
|
||||
warehouseData.forEach(function (warehouse) {
|
||||
var row = warehouseTable.insertRow();
|
||||
var cell1 = row.insertCell(0);
|
||||
cell1.innerHTML = warehouse.id;
|
||||
var cell2 = row.insertCell(1);
|
||||
cell2.innerHTML = warehouse.name;
|
||||
var cell3 = row.insertCell(2);
|
||||
cell3.innerHTML = warehouse.address;
|
||||
var cell4 = row.insertCell(3);
|
||||
cell4.innerHTML = warehouse.area;
|
||||
var cell5 = row.insertCell(4);
|
||||
var editBtn = document.createElement('button');
|
||||
editBtn.innerHTML = '编辑';
|
||||
editBtn.onclick = function () {
|
||||
// 这里可以添加编辑仓库的逻辑
|
||||
alert('编辑仓库:' + warehouse.name);
|
||||
};
|
||||
var deleteBtn = document.createElement('button');
|
||||
deleteBtn.innerHTML = '删除';
|
||||
deleteBtn.onclick = function () {
|
||||
// 这里可以添加删除仓库的逻辑
|
||||
var confirmDelete = confirm('确定要删除该仓库吗?');
|
||||
if (confirmDelete) {
|
||||
// 模拟删除操作
|
||||
warehouseData = warehouseData.filter(function (item) {
|
||||
return item.id!== warehouse.id;
|
||||
});
|
||||
renderWarehouseData();
|
||||
}
|
||||
};
|
||||
cell5.appendChild(editBtn);
|
||||
cell5.appendChild(deleteBtn);
|
||||
});
|
||||
}
|
||||
|
||||
// 渲染订单数据到表格
|
||||
function renderOrderData() {
|
||||
var orderTable = document.getElementById('order-table');
|
||||
orderTable.innerHTML = '';
|
||||
var orderData = getOrderData();
|
||||
orderData.forEach(function (order) {
|
||||
var row = orderTable.insertRow();
|
||||
var cell1 = row.insertCell(0);
|
||||
cell1.innerHTML = order.id;
|
||||
var cell2 = row.insertCell(1);
|
||||
cell2.innerHTML = order.date;
|
||||
var cell3 = row.insertCell(2);
|
||||
cell3.innerHTML = order.customer;
|
||||
var cell4 = row.insertCell(3);
|
||||
cell4.innerHTML = order.status;
|
||||
var cell5 = row.insertCell(4);
|
||||
var editBtn = document.createElement('button');
|
||||
editBtn.innerHTML = '编辑';
|
||||
editBtn.onclick = function () {
|
||||
// 这里可以添加编辑订单的逻辑
|
||||
alert('编辑订单:' + order.customer);
|
||||
};
|
||||
var deleteBtn = document.createElement('button');
|
||||
deleteBtn.innerHTML = '删除';
|
||||
deleteBtn.onclick = function () {
|
||||
// 这里可以添加删除订单的逻辑
|
||||
var confirmDelete = confirm('确定要删除该订单吗?');
|
||||
if (confirmDelete) {
|
||||
// 模拟删除操作
|
||||
orderData = orderData.filter(function (item) {
|
||||
return item.id!== order.id;
|
||||
});
|
||||
renderOrderData();
|
||||
}
|
||||
};
|
||||
cell5.appendChild(editBtn);
|
||||
cell5.appendChild(deleteBtn);
|
||||
});
|
||||
}
|
||||
|
||||
// 添加货物事件处理
|
||||
document.getElementById('add-goods-btn').addEventListener('click', function () {
|
||||
// 这里可以添加添加货物的逻辑,例如打开添加货物的模态框或跳转到添加货物的页面
|
||||
alert('添加货物');
|
||||
});
|
||||
|
||||
// 添加仓库事件处理
|
||||
document.getElementById('add-warehouse-btn').addEventListener('click', function () {
|
||||
// 这里可以添加添加仓库的逻辑,例如打开添加仓库的模态框或跳转到添加仓库的页面
|
||||
alert('添加仓库');
|
||||
});
|
||||
|
||||
// 添加订单事件处理
|
||||
document.getElementById('add-order-btn').addEventListener('click', function () {
|
||||
// 这里可以添加添加订单的逻辑,例如打开添加订单的模态框或跳转到添加订单的页面
|
||||
alert('添加订单');
|
||||
});
|
||||
|
||||
// 页面加载时渲染货物、仓库和订单数据
|
||||
window.onload = function () {
|
||||
renderGoodsData();
|
||||
renderWarehouseData();
|
||||
renderOrderData();
|
||||
};// 模拟获取货物数据的函数
|
||||
function getGoodsData() {
|
||||
// 这里可以使用Ajax或其他方式从后端获取货物数据
|
||||
return [
|
||||
{ id: 1, name: "电脑显示器", type: "电子产品", quantity: 100 },
|
||||
{ id: 2, name: "运动鞋", type: "服装", quantity: 200 },
|
||||
{ id: 3, name: "苹果手机", type: "电子产品", quantity: 150 }
|
||||
];
|
||||
}
|
||||
|
||||
// 模拟获取仓库数据的函数
|
||||
function getWarehouseData() {
|
||||
// 这里可以使用Ajax或其他方式从后端获取仓库数据
|
||||
return [
|
||||
{ id: 1, name: "北京仓库", address: "北京市朝阳区", area: 1000 },
|
||||
{ id: 2, name: "上海仓库", address: "上海市浦东新区", area: 1200 },
|
||||
{ id: 3, name: "广州仓库", address: "广州市天河区", area: 800 }
|
||||
];
|
||||
}
|
||||
|
||||
// 模拟获取订单数据的函数
|
||||
function getOrderData() {
|
||||
// 这里可以使用Ajax或其他方式从后端获取订单数据
|
||||
return [
|
||||
{ id: 1, date: "2024-01-01", customer: "客户A", status: "已创建" },
|
||||
{ id: 2, date: "2024-01-02", customer: "客户B", status: "已审核" },
|
||||
{ id: 3, date: "2024-01-03", customer: "客户C", status: "已发货" }
|
||||
];
|
||||
}
|
||||
|
||||
// 渲染货物数据到表格
|
||||
function renderGoodsData() {
|
||||
var goodsTable = document.getElementById('goods-table');
|
||||
goodsTable.innerHTML = '';
|
||||
var goodsData = getGoodsData();
|
||||
goodsData.forEach(function (goods) {
|
||||
var row = goodsTable.insertRow();
|
||||
var cell1 = row.insertCell(0);
|
||||
cell1.innerHTML = goods.id;
|
||||
var cell2 = row.insertCell(1);
|
||||
cell2.innerHTML = goods.name;
|
||||
var cell3 = row.insertCell(2);
|
||||
cell3.innerHTML = goods.type;
|
||||
var cell4 = row.insertCell(3);
|
||||
cell4.innerHTML = goods.quantity;
|
||||
var cell5 = row.insertCell(4);
|
||||
var editBtn = document.createElement('button');
|
||||
editBtn.innerHTML = '编辑';
|
||||
editBtn.onclick = function () {
|
||||
// 这里可以添加编辑货物的逻辑
|
||||
alert('编辑货物:' + goods.name);
|
||||
};
|
||||
var deleteBtn = document.createElement('button');
|
||||
deleteBtn.innerHTML = '删除';
|
||||
deleteBtn.onclick = function () {
|
||||
// 这里可以添加删除货物的逻辑
|
||||
var confirmDelete = confirm('确定要删除该货物吗?');
|
||||
if (confirmDelete) {
|
||||
// 模拟删除操作
|
||||
goodsData = goodsData.filter(function (item) {
|
||||
return item.id!== goods.id;
|
||||
});
|
||||
renderGoodsData();
|
||||
}
|
||||
};
|
||||
cell5.appendChild(editBtn);
|
||||
cell5.appendChild(deleteBtn);
|
||||
});
|
||||
}
|
||||
|
||||
// 渲染仓库数据到表格
|
||||
function renderWarehouseData() {
|
||||
var warehouseTable = document.getElementById('warehouse-table');
|
||||
warehouseTable.innerHTML = '';
|
||||
var warehouseData = getWarehouseData();
|
||||
warehouseData.forEach(function (warehouse) {
|
||||
var row = warehouseTable.insertRow();
|
||||
var cell1 = row.insertCell(0);
|
||||
cell1.innerHTML = warehouse.id;
|
||||
var cell2 = row.insertCell(1);
|
||||
cell2.innerHTML = warehouse.name;
|
||||
var cell3 = row.insertCell(2);
|
||||
cell3.innerHTML = warehouse.address;
|
||||
var cell4 = row.insertCell(3);
|
||||
cell4.innerHTML = warehouse.area;
|
||||
var cell5 = row.insertCell(4);
|
||||
var editBtn = document.createElement('button');
|
||||
editBtn.innerHTML = '编辑';
|
||||
editBtn.onclick = function () {
|
||||
// 这里可以添加编辑仓库的逻辑
|
||||
alert('编辑仓库:' + warehouse.name);
|
||||
};
|
||||
var deleteBtn = document.createElement('button');
|
||||
deleteBtn.innerHTML = '删除';
|
||||
deleteBtn.onclick = function () {
|
||||
// 这里可以添加删除仓库的逻辑
|
||||
var confirmDelete = confirm('确定要删除该仓库吗?');
|
||||
if (confirmDelete) {
|
||||
// 模拟删除操作
|
||||
warehouseData = warehouseData.filter(function (item) {
|
||||
return item.id!== warehouse.id;
|
||||
});
|
||||
renderWarehouseData();
|
||||
}
|
||||
};
|
||||
cell5.appendChild(editBtn);
|
||||
cell5.appendChild(deleteBtn);
|
||||
});
|
||||
}
|
||||
|
||||
// 渲染订单数据到表格
|
||||
function renderOrderData() {
|
||||
var orderTable = document.getElementById('order-table');
|
||||
orderTable.innerHTML = '';
|
||||
var orderData = getOrderData();
|
||||
orderData.forEach(function (order) {
|
||||
var row = orderTable.insertRow();
|
||||
var cell1 = row.insertCell(0);
|
||||
cell1.innerHTML = order.id;
|
||||
var cell2 = row.insertCell(1);
|
||||
cell2.innerHTML = order.date;
|
||||
var cell3 = row.insertCell(2);
|
||||
cell3.innerHTML = order.customer;
|
||||
var cell4 = row.insertCell(3);
|
||||
cell4.innerHTML = order.status;
|
||||
var cell5 = row.insertCell(4);
|
||||
var editBtn = document.createElement('button');
|
||||
editBtn.innerHTML = '编辑';
|
||||
editBtn.onclick = function () {
|
||||
// 这里可以添加编辑订单的逻辑
|
||||
alert('编辑订单:' + order.customer);
|
||||
};
|
||||
var deleteBtn = document.createElement('button');
|
||||
deleteBtn.innerHTML = '删除';
|
||||
deleteBtn.onclick = function () {
|
||||
// 这里可以添加删除订单的逻辑
|
||||
var confirmDelete = confirm('确定要删除该订单吗?');
|
||||
if (confirmDelete) {
|
||||
// 模拟删除操作
|
||||
orderData = orderData.filter(function (item) {
|
||||
return item.id!== order.id;
|
||||
});
|
||||
renderOrderData();
|
||||
}
|
||||
};
|
||||
cell5.appendChild(editBtn);
|
||||
cell5.appendChild(deleteBtn);
|
||||
});
|
||||
}
|
||||
|
||||
// 添加货物事件处理
|
||||
document.getElementById('add-goods-btn').addEventListener('click', function () {
|
||||
// 这里可以添加添加货物的逻辑,例如打开添加货物的模态框或跳转到添加货物的页面
|
||||
alert('添加货物');
|
||||
});
|
||||
|
||||
// 添加仓库事件处理
|
||||
document.getElementById('add-warehouse-btn').addEventListener('click', function () {
|
||||
// 这里可以添加添加仓库的逻辑,例如打开添加仓库的模态框或跳转到添加仓库的页面
|
||||
alert('添加仓库');
|
||||
});
|
||||
|
||||
// 添加订单事件处理
|
||||
document.getElementById('add-order-btn').addEventListener('click', function () {
|
||||
// 这里可以添加添加订单的逻辑,例如打开添加订单的模态框或跳转到添加订单的页面
|
||||
alert('添加订单');
|
||||
});
|
||||
|
||||
// 页面加载时渲染货物、仓库和订单数据
|
||||
window.onload = function () {
|
||||
renderGoodsData();
|
||||
renderWarehouseData();
|
||||
renderOrderData();
|
||||
};
|
@ -0,0 +1,34 @@
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
header {
|
||||
background-color: #f0f0f0;
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
main {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid #ccc;
|
||||
padding: 8px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #4CAF50;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.error {
|
||||
color: red;
|
||||
}
|
Loading…
Reference in new issue