123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417 |
- <?php
- require_once 'conn.php';
- checkLogin();
- // 辅助函数
- function textDecode($str) {
- return htmlspecialchars_decode($str, ENT_QUOTES);
- }
- function htmlDecode($str) {
- return htmlspecialchars_decode($str, ENT_QUOTES);
- }
- $act = $_GET['act'] ?? '';
- $urlStr = '';
- // 处理批量操作
- if ($act == "postchk") {
- if (isset($_POST['chkbox']) && isset($_POST['chkact'])) {
- $chkact = $_POST['chkact'];
- $ids = implode(',', array_map('intval', $_POST['chkbox']));
- $employee_id = $_SESSION['employee_id'];
- switch($chkact) {
- case "0":
- case "1":
- case "2":
- case "3":
- case "4":
- case "5":
- $sql = "UPDATE orders SET order_status = $chkact WHERE id IN ($ids) AND employee_id = $employee_id";
- break;
- case "-1":
- // 删除订单记录和订单项记录(依靠外键级联删除)
- $sql = "DELETE FROM orders WHERE id IN ($ids) AND employee_id = $employee_id";
- break;
- }
- if (isset($sql)) {
- mysqli_query($conn, $sql);
- }
- $keys = urlencode($_GET['Keys'] ?? '');
- $page = $_GET['Page'] ?? '';
- header("Location: ?keys=$keys&Page=$page$urlStr");
- exit;
- }
- }
- // 处理筛选条件
- $fliterStatus = $_GET['fliterStatus'] ?? '';
- $fliterPayment = $_GET['fliterPayment'] ?? '';
- $fliterCustomer = $_GET['fliterCustomer'] ?? '';
- $fliterFromDate = $_GET['fliterFromDate'] ?? '';
- $fliterToDate = $_GET['fliterToDate'] ?? '';
- $fliterStr = "";
- if (!empty($fliterStatus)) {
- $fliterStr .= " AND o.order_status = " . intval($fliterStatus);
- $urlStr .= "&fliterStatus=" . $fliterStatus;
- }
- if (!empty($fliterPayment)) {
- $fliterStr .= " AND o.payment_status = " . intval($fliterPayment);
- $urlStr .= "&fliterPayment=" . $fliterPayment;
- }
- if (!empty($fliterCustomer)) {
- $fliterStr .= " AND o.customer_id = " . intval($fliterCustomer);
- $urlStr .= "&fliterCustomer=" . $fliterCustomer;
- }
- if (!empty($fliterFromDate)) {
- $fliterStr .= " AND o.order_date >= '" . mysqli_real_escape_string($conn, $fliterFromDate) . "'";
- $urlStr .= "&fliterFromDate=" . urlencode($fliterFromDate);
- }
- if (!empty($fliterToDate)) {
- $fliterStr .= " AND o.order_date <= '" . mysqli_real_escape_string($conn, $fliterToDate) . " 23:59:59'";
- $urlStr .= "&fliterToDate=" . urlencode($fliterToDate);
- }
- // 搜索和排序
- $keys = $_GET['Keys'] ?? '';
- $keyscode = mysqli_real_escape_string($conn, $keys);
- $page = $_GET['Page'] ?? 1;
- $ord = $_GET['Ord'] ?? '';
- $ordStr = !empty($ord) ? "$ord," : "";
- // 构建查询SQL
- $employee_id = $_SESSION['employee_id'];
- $sqlStr = "SELECT o.*, c.cs_company, cc.contact_name
- FROM orders o
- LEFT JOIN customer c ON o.customer_id = c.id
- LEFT JOIN customer_contact cc ON o.contact_id = cc.id
- WHERE o.employee_id = $employee_id";
- if (!empty($keyscode)) {
- $sqlStr .= " AND (o.order_code LIKE '%$keyscode%'
- OR c.cs_company LIKE '%$keyscode%'
- OR cc.contact_name LIKE '%$keyscode%')";
- }
- $sqlStr .= " $fliterStr ORDER BY {$ordStr}o.created_at DESC";
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>订单列表</title>
- <link rel="stylesheet" href="css/common.css" type="text/css" />
- <link rel="stylesheet" href="css/alert.css" type="text/css" />
- <script src="js/jquery-1.7.2.min.js"></script>
- <script src="js/js.js"></script>
- <style>
- body {
- margin: 0;
- padding: 20px;
- background: #fff;
- }
- #man_zone {
- margin-left: 0;
- }
- .status-badge {
- display: inline-block;
- padding: 3px 8px;
- border-radius: 3px;
- font-size: 12px;
- color: white;
- }
- .status-0 { background-color: #999; }
- .status-1 { background-color: #5bc0de; }
- .status-2 { background-color: #337ab7; }
- .status-3 { background-color: #f0ad4e; }
- .status-4 { background-color: #5cb85c; }
- .status-5 { background-color: #28a745; }
- .payment-badge {
- display: inline-block;
- padding: 3px 8px;
- border-radius: 3px;
- font-size: 12px;
- color: white;
- }
- .payment-0 { background-color: #d9534f; }
- .payment-1 { background-color: #f0ad4e; }
- .payment-2 { background-color: #5cb85c; }
- /* Date picker styling */
- .date-input {
- padding: 5px;
- border: 1px solid #ccc;
- border-radius: 3px;
- }
- </style>
- </head>
- <body>
- <div id="man_zone">
- <div class="fastSelect clear">
- <H1>筛选条件</H1>
- <div class="selectItem">
- <label>订单状态</label>
- <select name="fliterStatus" class="filterSearch">
- <option value="">全部状态</option>
- <option value="0"<?= $fliterStatus == "0" ? ' selected' : '' ?>>已取消</option>
- <option value="1"<?= $fliterStatus == "1" ? ' selected' : '' ?>>待确认</option>
- <option value="2"<?= $fliterStatus == "2" ? ' selected' : '' ?>>已确认</option>
- <option value="3"<?= $fliterStatus == "3" ? ' selected' : '' ?>>生产中</option>
- <option value="4"<?= $fliterStatus == "4" ? ' selected' : '' ?>>已发货</option>
- <option value="5"<?= $fliterStatus == "5" ? ' selected' : '' ?>>已完成</option>
- </select>
- </div>
- <div class="selectItem">
- <label>付款状态</label>
- <select name="fliterPayment" class="filterSearch">
- <option value="">全部付款状态</option>
- <option value="0"<?= $fliterPayment == "0" ? ' selected' : '' ?>>未付款</option>
- <option value="1"<?= $fliterPayment == "1" ? ' selected' : '' ?>>部分付款</option>
- <option value="2"<?= $fliterPayment == "2" ? ' selected' : '' ?>>已付清</option>
- </select>
- </div>
- <div class="selectItem">
- <label>客户筛选</label>
- <select name="fliterCustomer" class="filterSearch">
- <option value="">全部客户</option>
- <?php
- $employee_id = $_SESSION['employee_id'];
- $customerSql = "SELECT id, cs_company FROM customer WHERE cs_belong = $employee_id ORDER BY cs_company";
- $customerResult = mysqli_query($conn, $customerSql);
- while ($customerRow = mysqli_fetch_assoc($customerResult)) {
- $selected = ($fliterCustomer == $customerRow['id']) ? ' selected' : '';
- echo "<option value=\"{$customerRow['id']}\"$selected>" . htmlspecialcharsFix($customerRow['cs_company']) . "</option>";
- }
- ?>
- </select>
- </div>
- <div class="selectItem">
- <label>订单日期 从</label>
- <input type="date" name="fliterFromDate" class="date-input filterSearch" value="<?= $fliterFromDate ?>">
- <label>到</label>
- <input type="date" name="fliterToDate" class="date-input filterSearch" value="<?= $fliterToDate ?>">
- </div>
- <div class="inputSearch">
- <input type="text" id="keys" class="inputTxt"
- value="<?= empty($keyscode) ? '请输入搜索关键词' : $keyscode ?>"
- onFocus="if(this.value == '<?= empty($keyscode) ? '请输入搜索关键词' : $keyscode ?>'){this.value='';}"
- onBlur="if(this.value == ''){this.value='<?= empty($keyscode) ? '请输入搜索关键词' : $keyscode ?>';}"
- onKeyDown="if(event.keyCode==13){location.href='?Keys='+escape(document.getElementById('keys').value)}" />
- <input type="button" id="searchgo" class="searchgo" value="go"
- onClick="location.href='?Keys='+escape(document.getElementById('keys').value)" />
- </div>
- </div>
- <form id="form1" method="post" action="?act=postchk&Keys=<?= $keys ?>&Page=<?= $page ?>" onSubmit="return false">
- <div align="right" style="margin-bottom: 10px;">
- <input type="button" value="新增订单" class="btn1" onClick="location.href='order_add.php'" />
- </div>
- <div class="table2 em<?= $_SESSION['employee_id'] ?>">
- <div class="theader">
- <div class="col1"><input type="checkbox" name="chkall" id="chkall" onClick="chkboxall(this,'chkbox')" /></div>
- <div class="col2">序号</div>
- <div class="col3">订单编号</div>
- <div class="col4">客户</div>
- <div class="col5">联系人</div>
- <div class="col6">订单日期</div>
- <div class="col7">订单状态</div>
- <div class="col8">付款状态</div>
- <div class="col9">订单金额</div>
- <div class="col10">操作</div>
- </div>
- <?php
- // 设置每页显示记录数
- $pageSize = 20;
- // 获取总记录数
- $employee_id = $_SESSION['employee_id'];
- $countSql = "SELECT COUNT(*) AS total FROM orders o
- WHERE o.employee_id = $employee_id";
- if (!empty($keyscode)) {
- $countSql .= " AND (o.order_code LIKE '%$keyscode%'
- OR o.customer_id IN (SELECT id FROM customer WHERE cs_company LIKE '%$keyscode%'))";
- }
- $countSql .= $fliterStr;
- $countResult = mysqli_query($conn, $countSql);
- $countRow = mysqli_fetch_assoc($countResult);
- $totalRecords = $countRow['total'];
- // 计算总页数
- $totalPages = ceil($totalRecords / $pageSize);
- if ($totalPages < 1) $totalPages = 1;
- // 验证当前页码
- $page = (int)$page;
- if ($page < 1) $page = 1;
- if ($page > $totalPages) $page = $totalPages;
- // 计算起始记录
- $offset = ($page - 1) * $pageSize;
- // 添加分页条件
- $sqlStr .= " LIMIT $offset, $pageSize";
- $result = mysqli_query($conn, $sqlStr);
- if (mysqli_num_rows($result) > 0) {
- $tempNum = ($page - 1) * $pageSize;
- while ($row = mysqli_fetch_assoc($result)) {
- $tempNum++;
- ?>
- <div class="tline">
- <div class="col1" align="center"><input type="checkbox" name="chkbox[]" value="<?= $row['id'] ?>" /></div>
- <div class="col2"><?= $tempNum ?></div>
- <div class="col3"><?= htmlspecialcharsFix($row['order_code']) ?></div>
- <div class="col4"><?= htmlspecialcharsFix($row['cs_company']) ?></div>
- <div class="col5"><?= htmlspecialcharsFix($row['contact_name']) ?></div>
- <div class="col6"><?= date('Y-m-d', strtotime($row['order_date'])) ?></div>
- <div class="col7">
- <?php
- $statusMap = [
- 0 => '已取消',
- 1 => '待确认',
- 2 => '已确认',
- 3 => '生产中',
- 4 => '已发货',
- 5 => '已完成'
- ];
- echo '<span class="status-badge status-' . $row['order_status'] . '">' .
- $statusMap[$row['order_status']] . '</span>';
- ?>
- </div>
- <div class="col8">
- <?php
- $paymentMap = [
- 0 => '未付款',
- 1 => '部分付款',
- 2 => '已付清'
- ];
- echo '<span class="payment-badge payment-' . $row['payment_status'] . '">' .
- $paymentMap[$row['payment_status']] . '</span>';
- ?>
- </div>
- <div class="col9"><?= number_format($row['total_amount'], 2) . ' ' . $row['currency'] ?></div>
- <div class="col10">
- <a href="order_edit.php?id=<?= $row['id'] ?>&keys=<?= $keys ?>&page=<?= $page ?>" class="ico_edit ico">修改</a>
- <a href="order_details.php?id=<?= $row['id'] ?>" class="ico_view ico">查看详情</a>
- </div>
- </div>
- <?php
- }
- } else {
- if (empty($keys) && empty($fliterStr)) {
- echo '<div class="tline"><div align="center" colspan="10">当前暂无订单记录</div></div>';
- } else {
- echo '<div class="tline"><div align="center" colspan="10"><a href="?">没有找到匹配的订单记录,点击返回</a></div></div>';
- }
- }
- ?>
- <div colspan="10">
- <div class="showpagebox">
- <?php
- if ($totalPages > 1) {
- $pageName = "?Keys=$keys$urlStr&";
- $pageLen = 3;
- if ($page > 1) {
- echo "<a href=\"{$pageName}Page=1\">首页</a>";
- echo "<a href=\"{$pageName}Page=" . ($page - 1) . "\">上一页</a>";
- }
- if ($pageLen * 2 + 1 >= $totalPages) {
- $startPage = 1;
- $endPage = $totalPages;
- } else {
- if ($page <= $pageLen + 1) {
- $startPage = 1;
- $endPage = $pageLen * 2 + 1;
- } else {
- $startPage = $page - $pageLen;
- $endPage = $page + $pageLen;
- }
- if ($page + $pageLen > $totalPages) {
- $startPage = $totalPages - $pageLen * 2;
- $endPage = $totalPages;
- }
- }
- for ($i = $startPage; $i <= $endPage; $i++) {
- if ($i == $page) {
- echo "<a class=\"current\">$i</a>";
- } else {
- echo "<a href=\"{$pageName}Page=$i\">$i</a>";
- }
- }
- if ($page < $totalPages) {
- if ($totalPages - $page > $pageLen) {
- echo "<a href=\"{$pageName}Page=$totalPages\">...$totalPages</a>";
- }
- echo "<a href=\"{$pageName}Page=" . ($page + 1) . "\">下一页</a>";
- echo "<a href=\"{$pageName}Page=$totalPages\">尾页</a>";
- }
- }
- ?>
- </div>
- <div class="postchkbox">
- <select id="chkact" name="chkact">
- <option value="1">待确认</option>
- <option value="2">已确认</option>
- <option value="3">生产中</option>
- <option value="4">已发货</option>
- <option value="5">已完成</option>
- <option value="0">取消订单</option>
- <option value="-1">删除</option>
- </select>
- <input type="button" value="执行" onClick="postchk(1)" class="btn1" />
- </div>
- </div>
- </div>
- </form>
- <script>
- $(document).ready(function() {
- // 处理筛选条件改变
- $('.filterSearch').change(function() {
- var url = '?';
- var keys = $('#keys').val();
- if (keys && keys != '请输入搜索关键词') {
- url += 'Keys=' + encodeURIComponent(keys) + '&';
- }
- $('.filterSearch').each(function() {
- var name = $(this).attr('name');
- var value = $(this).val();
- if (value) {
- url += name + '=' + encodeURIComponent(value) + '&';
- }
- });
- // 移除末尾的&
- if (url.endsWith('&')) {
- url = url.substring(0, url.length - 1);
- }
- location.href = url;
- });
- });
- </script>
- </div>
- </body>
- </html>
|