Compare commits

...

97 Commits

Author SHA1 Message Date
b4b7a452fc update 2025-12-15 14:07:09 +07:00
e703314c7f update 2025-12-13 12:07:01 +07:00
d51528e407 update 2025-12-13 10:28:56 +07:00
6f7a292259 update 2025-12-12 16:29:06 +07:00
04f6e919f0 update 2025-12-12 11:01:29 +07:00
123853df5c update 2025-12-11 14:31:35 +07:00
d2b916b985 update 2025-12-11 14:30:30 +07:00
c51cf9dc87 update 2025-12-11 14:26:34 +07:00
01a0a60ef6 update 2025-12-11 13:32:02 +07:00
70ca13999e update 2025-12-11 13:30:40 +07:00
ebfaf799eb update 2025-12-11 09:44:30 +07:00
7df4c3405f update 2025-12-10 19:20:39 +07:00
1afcb2364e update 2025-12-10 08:37:47 +07:00
699db96d26 update 2025-12-09 11:13:40 +07:00
9363b3bb4f update 2025-12-08 20:49:12 +07:00
043b3ac069 update 2025-12-08 14:36:52 +07:00
0068d20a12 update 2025-12-08 14:35:28 +07:00
ac2717b077 update 2025-12-08 13:57:40 +07:00
603d024af3 update 2025-12-08 09:47:31 +07:00
1dbf988073 up 2025-12-07 16:00:19 +07:00
60823b0aab up 2025-12-07 15:59:45 +07:00
942aeafb60 update 2025-12-07 15:58:07 +07:00
75a641ab40 update 2025-12-04 17:20:42 +07:00
3f57e61be2 update 2025-12-04 14:34:23 +07:00
546d4b6f95 update 2025-12-04 14:13:37 +07:00
d0ee976b0c update 2025-12-04 13:47:17 +07:00
e6c4947c75 update 2025-12-02 17:01:37 +07:00
6233a30284 upload 2025-12-02 09:30:52 +07:00
2ad52e7ce8 Merge branch 'master' of https://repo.hurasoft.com/tieptk/admin_hura_8 2025-11-30 19:57:43 +07:00
587cdd5420 up 2025-11-30 19:57:12 +07:00
a289d69a6b update 2025-11-30 11:43:47 +07:00
91941d7c14 update 2025-11-28 16:27:10 +07:00
af6f1eff2e update 2025-11-28 09:32:05 +07:00
8c42d57fcd update 2025-11-27 12:55:33 +07:00
6876ab2bd3 Merge branch 'master' of https://repo.hurasoft.com/tieptk/admin_hura_8 2025-11-24 13:08:40 +07:00
4a4c3177a9 a 2025-11-24 13:08:28 +07:00
b6d1297a20 Update menu 2025-11-24 12:46:42 +07:00
4a6b814426 Update menu 2025-11-24 12:39:28 +07:00
4d67725ea8 Update menu 2025-11-24 12:37:49 +07:00
caa5828511 Update liquid 1.4.44 2025-11-24 10:56:06 +07:00
1dda5db73b push 2025-11-21 19:06:27 +07:00
971a23ae2a up 2025-11-21 16:34:19 +07:00
060e3643ea update 2025-11-20 13:10:28 +07:00
1c2c38a8bb push 11/4 2025-04-11 14:18:51 +07:00
e8e9f7c382 update 04/04 2025-04-04 15:05:18 +07:00
5529e9ff1f upload 1/4 2025-04-01 13:46:03 +07:00
30ebfb6644 upload 31/03 2025-03-31 11:07:34 +07:00
3137a8226b update 29/03 2025-03-29 11:46:53 +07:00
a399a7bedd upload 28/03 2025-03-28 14:38:02 +07:00
fe6ba5b1a0 up 2025-02-24 10:16:18 +07:00
d20a20684d update menu, hover 2025-02-24 10:09:33 +07:00
dd8de9838f menu 2025-02-21 15:17:06 +07:00
1b461f0e86 new menu 2025-02-21 14:24:40 +07:00
ef51a9d6f4 menu 21/02 2025-02-21 14:04:33 +07:00
34275ed7b7 update menu 2025-02-21 13:36:38 +07:00
0c8e3258c4 up 2025-02-20 16:27:50 +07:00
3a257c411e up 2025-02-19 14:55:19 +07:00
7857cc0422 up 2025-02-19 10:28:11 +07:00
dbeda7da6d up 2025-02-18 16:30:26 +07:00
66344ad5c6 up 2025-02-17 16:51:08 +07:00
ae9d94330f up 2025-02-17 09:24:52 +07:00
84731fc375 up 2025-02-14 16:17:58 +07:00
e60866c99f up 2025-02-13 15:45:32 +07:00
1315df5ebb up 2025-02-12 16:13:51 +07:00
c3c4efd679 up 2025-02-11 16:22:18 +07:00
961e92b965 up 2025-02-10 16:51:19 +07:00
cc0f195bee up 2025-02-09 19:40:45 +07:00
9bdd0e435a up 2025-02-08 22:55:01 +07:00
7299751c83 up 2025-02-08 19:28:39 +07:00
e41fa9b5b1 menu 2025-02-08 19:27:15 +07:00
dccf38d6d3 menu 2024-05-16 11:38:34 +07:00
48c9cba704 ts 2024-05-15 09:03:46 +07:00
6ee294d14b ts 2024-05-15 08:42:10 +07:00
4e9930841c menu 2024-05-13 13:30:57 +07:00
fb29ea215a typescript 2024-05-13 11:55:28 +07:00
eee07fab6b typesript 2024-05-13 11:52:43 +07:00
f567aed4da ts 2024-05-13 11:25:12 +07:00
90e1a88461 js 2024-05-11 10:11:24 +07:00
cea5665f51 global.js 2024-05-10 23:25:07 +07:00
f0628c310c global.js 2024-05-09 11:16:07 +07:00
9737f4ed81 js 2024-05-09 11:13:48 +07:00
f66da1b416 js 2024-05-09 10:29:45 +07:00
ce9710c758 menu 2024-05-08 09:15:55 +07:00
fe7ddf826e loading 2024-05-07 15:42:55 +07:00
6415cca99f update menu 2024-05-07 13:34:07 +07:00
7b96c6d976 checkbox 2024-05-07 11:33:48 +07:00
615e36647a select datepicker 2024-05-07 10:04:17 +07:00
d71cbe3065 update form product 2024-05-06 15:55:58 +07:00
d9094447c8 update 2024-05-04 09:39:10 +07:00
edee2ad3d8 update list product 2024-05-04 09:29:34 +07:00
da868053ca c 2024-05-02 09:50:06 +07:00
d33bec681f update system 2024-03-18 12:03:24 +07:00
5cf4155fcc upload 2024-03-09 11:58:48 +07:00
10b1b7da6e marketting 2024-03-09 11:54:26 +07:00
8679b320e1 payinstall 2024-03-09 11:35:04 +07:00
14ef2c1610 06/03/2024 9h21 2024-03-06 09:21:29 +07:00
91d317607a 06/03/2024 9h19 2024-03-06 09:19:26 +07:00
541 changed files with 70475 additions and 8047 deletions

1
.gitignore vendored
View File

@@ -2,3 +2,4 @@ package/vendor
package/composer.lock
.idea
node_modules/

BIN
assets/images/avatars/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
assets/images/avatars/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
assets/images/avatars/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
assets/images/avatars/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
assets/images/avatars/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
assets/images/avatars/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
assets/images/avatars/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
assets/images/avatars/8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
assets/images/avatars/9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,44 +0,0 @@
const RowExpand = (function (){
const $status_expand_all = $("#js-row-expand-all");
let track_open_rows = [];
function open_child_row(child_class_name){
const $children = $(`.${child_class_name}`);
if(!track_open_rows.includes(child_class_name)) {
$children.css('display', 'table-row');
track_open_rows.push(child_class_name);
}else{
$children.css('display', 'none');
track_open_rows = [...Util.removeItemFromArray(track_open_rows, child_class_name)];
}
}
function open_all_row(){
if(!track_open_rows.includes('expand_all')) {
$(".row").css('display', 'table-row');
track_open_rows.push('expand_all');
$status_expand_all.html("[-]");
}else{
// collapse all
$(".row").css('display', 'none');
// open only first parent
$(".parent_0").css('display', 'table-row');
track_open_rows = [];
$status_expand_all.html("[+]");
}
}
return {
open_child: open_child_row,
open_all: open_all_row
}
})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

7308
assets/script/hura-lib.css Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,252 @@
/* ===========================
FONT IMPORT (Dùng chung)
=========================== */
@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@100;200;300;400;500;600;700;800;900;1000&display=swap";
@import "https://fonts.googleapis.com/css2?family=Wix+Madefor+Text:wght@400;500;600;700;800;1000&display=swap";
@import "https://fonts.googleapis.com/css2?family=Inclusive+Sans:wght@400;500;600;700;800;900;1000&display=swap";
@import "https://fonts.googleapis.com/css2?family=AR+One+Sans:wght@400;500;600;700;800;1000&display=swap";
@layer properties {
:root {
--font-sans: "Inclusive Sans", sans-serif;
--text-base: 16px;
--bg-body: #fafbfd;
--color-hura: #0041e8;
--color-header: #002bb5;
--text-base--line-height: 1.5;
--color-black: #000;
--color-white: #fff;
--spacing: 0.25rem;
--layout-topbar-background: #fff;
--menu-active: #e9f2ff;
--menu-text: #177bff;
--menu-sub-bg: #fff;
}
}
@layer base {
html,
body {
font-family: var(--font-sans);
font-size: var(--text-base);
line-height: var(--text-base--line-height);
}
*,
*::before,
*::after {
box-sizing: border-box;
}
}
@layer components {
#layout-topbar {
background: var(--layout-topbar-background);
top: calc(var(--spacing) * 0);
z-index: 10;
transition-property: top, margin, border-radius;
transition-timing-function: var(
--tw-ease,
var(--default-transition-timing-function)
);
transition-duration: var(--tw-duration, var(--default-transition-duration));
--tw-duration: 0.3s;
transition-duration: 0.3s;
position: sticky;
border-bottom-style: solid;
border-bottom-width: 1px;
border-color: var(--color-base-300);
}
#layout-content {
padding: calc(var(--spacing) * 6);
transition-property: all;
transition-timing-function: var(
--tw-ease,
var(--default-transition-timing-function)
);
transition-duration: var(--tw-duration, var(--default-transition-duration));
flex-grow: 1;
background: var(--bg-body);
}
.bg-menu {
background-color: var(--color-header);
}
/* menu */
.menu {
& {
--menu-active-bg: #e9f2ff;
}
}
.menu-horizontal {
display: inline-flex;
flex-direction: row;
}
.menu-horizontal li {
position: relative;
}
/* ACTIVE STATE (LEVEL 1) */
.menu-horizontal li.active {
background: var(--menu-active);
}
.menu-horizontal li.active .grow,
.menu-horizontal li.active svg {
color: var(--menu-text);
}
/* ACTIVE STATE (LEVEL 2) */
.menu-horizontal li.active ul li.active {
background: var(--color-hura);
}
.menu-horizontal li.active ul li.active a {
color: #fff;
}
/* HOVER LEVEL 1 */
.menu-horizontal li:hover {
background: var(--menu-active);
}
.menu-horizontal li:hover .grow,
.menu-horizontal li:hover svg {
color: var(--color-hura);
}
/* Dải hover giữ submenu không bị mất */
.menu-horizontal li::before {
content: "";
position: absolute;
left: 0;
bottom: -18px;
width: 100%;
height: 30px;
display: none;
}
.menu-horizontal li:hover::before {
display: block;
}
/* ==========================
SUBMENU (UL)
========================== */
.menu-horizontal li .submenu {
position: absolute !important;
top: 125%;
left: 0;
background: var(--menu-sub-bg);
margin-left: 0 !important;
padding: 0.5rem;
z-index: 999;
border-radius: 10px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
max-height: 500px;
overflow-y: auto;
overflow-x: hidden;
display: none;
margin-top: 0 !important;
}
/* DaisyUI details submenu spacing */
.menu-horizontal > li:not(.menu-title) > details > ul {
margin-top: 1rem;
padding-inline-end: 0.5rem;
}
/* SHOW SUBMENU ON HOVER */
.menu-horizontal li:hover .submenu,
.menu-horizontal li:hover > details > ul {
display: block;
}
/* Remove extra before from DaisyUI */
.menu-horizontal > li > details > ul:before {
content: none;
}
/* ==========================
SUBMENU HOVER ITEMS
========================== */
.menu-horizontal li ul li:hover {
background: var(--color-hura);
}
.menu-horizontal li ul li:hover a {
color: #fff;
}
.menu-horizontal li ul li:hover::before {
display: none;
}
/* Font weight chung */
.menu-horizontal .grow {
font-weight: 500;
}
.menu-icon-color {
color: #838383;
}
.card-body {
padding: calc(var(--spacing) * 4);
}
.choices {
margin-top: calc(var(--spacing) * 2);
--tw-shadow:
0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)),
0 1px 2px -1px var(--tw-shadow-color, #0000001a);
box-shadow:
var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
border-radius: var(--radius-sm);
}
.choices__inner {
background: #fff !important;
min-height: 38px !important;
padding: 5px !important;
}
}
@layer hura {
.hura-btn-active {
--btn-bg: var(--color-hura);
--btn-fg: #ffffff;
--btn-border: var(--color-hura);
color: var(--color-white);
}
.hura-btn-active:hover {
--btn-bg: #002bb5;
--btn-border: #002bb5;
}
.hura-btn-outline {
background: #f5f7ff;
color: var(--color-hura);
border: 1px solid var(--color-hura);
}
.hura-btn-outline:hover {
background: var(--color-hura);
color: #fff;
}
.hura-checkbox:checked,
.hura-checkbox[aria-checked="true"] {
background: var(--color-hura);
color: #fff;
}
.hura-radio:checked,
.hura-radio[aria-checked="true"] {
border-color: var(--color-hura);
}
.hura-radio:checked::before,
.hura-radio[aria-checked="true"]::before {
background-color: var(--color-hura);
}
.hura-text-blue {
color: var(--color-hura);
}
.hura-bg-blue {
background: var(--color-hura);
}
.hura-shadow-blue {
box-shadow:
0 10px 15px -3px rgb(var(--color-hura) / 0.35),
0 4px 6px -4px rgb(var(--color-hura) / 0.25);
}
}

2
assets/script/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
@import "tailwindcss";
@plugin "daisyui";

File diff suppressed because one or more lines are too long

32
assets/typescript/main.ts Normal file
View File

@@ -0,0 +1,32 @@
"use strict";
interface AdminFunctions {
addProductToCategory(productId: string): void;
markProductAsHot(productId: string): void;
}
const AdminFunctions: AdminFunctions = (() => {
function addProductToCategory(productId: string): void {
const statusElement = $('#status_' + productId);
statusElement.html('<span class="loading loading-bars loading-sm"></span><span class="ml-[3px]">Processing...</span>');
setTimeout(() => {
statusElement.html('');
}, 1000);
}
function markProductAsHot(productId: string): void {
const statusElement = $('#js-status-hottype-' + productId);
statusElement.html('<span class="loading loading-bars loading-sm"></span><span class="ml-[3px]">Processing...</span>');
setTimeout(() => {
statusElement.html('');
}, 1000);
}
return {
addProductToCategory,
markProductAsHot
};
})();
export default AdminFunctions;

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

1
data/admin/login_log.php Normal file
View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

1
data/job/home.php Normal file
View File

@@ -0,0 +1 @@
<?php

1
data/media/category.php Normal file
View File

@@ -0,0 +1 @@
<?php

1
data/media/upload.php Normal file
View File

@@ -0,0 +1 @@
<?php

View File

@@ -24,18 +24,35 @@ function _get_menu_list() {
$item_menu = include_once __DIR__."/menu_item/".$item.".php";
// skip not enabled
if(!$item_menu['enable']) continue;
if(!$item_menu['enable']) {
continue;
}
// skip not enabled children
$item_menu_children_enabled = array_filter($item_menu['menu'], function ($menu_child) { return $menu_child['enable'];});
if(!sizeof($item_menu_children_enabled)) continue;
// reset menu for $item_menu
$item_menu['menu'] = $item_menu_children_enabled;
$menu_list[$item] = $item_menu;
if(!sizeof($item_menu_children_enabled)) {
continue;
}
$menu_list[] = [
'id' => $item,
'name' => $item_menu['name'],
'icon_class' => $item_menu['icon_class'] ?? '',
'url' => $item_menu['url'],
'menu' => array_map(function ($menu_child) {
return [
//'module' => $menu_child['module'],
//'view' => $menu_child['view'],
'id' => $menu_child['id'],
'name' => $menu_child['name'],
'icon_class' => $menu_child['icon_class'] ?? '',
'url' => $menu_child['url'],
];
}, $item_menu_children_enabled),
];
}
//debug_var($menu_list);
return $menu_list;
}

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Nội dung",
"icon_class" => 'users',
"url" => "",
"menu" => array(
@@ -12,6 +13,7 @@ return array(
'view' => 'home',
'id' => 'article/home',
'name' => 'Tin bài',
"icon_class" => '',
'url' => '/admin/article',
),
@@ -21,6 +23,7 @@ return array(
'view' => 'home',
'id' => 'media/home',
'name' => 'Thư viện file Media',
"icon_class" => '',
'url' => '/admin/media',
),
@@ -30,6 +33,7 @@ return array(
'view' => 'home',
'id' => 'page/home',
'name' => 'Nội dung cố định',
"icon_class" => '',
'url' => '/admin/page',
),
@@ -39,6 +43,7 @@ return array(
'view' => 'home',
'id' => 'album/home',
'name' => 'Thư viện ảnh',
"icon_class" => '',
'url' => '/admin/album',
),
@@ -48,6 +53,7 @@ return array(
'view' => 'home',
'id' => 'video/home',
'name' => 'Video',
"icon_class" => '',
'url' => '/admin/video',
),
),

View File

@@ -2,8 +2,8 @@
return array(
'enable' => true ,
"name" => "Khách hàng",
"icon_class" => 'user',
"url" => "",
"menu" => array(
array(
@@ -12,6 +12,7 @@ return array(
'view' => 'home',
'id' => 'customer/home',
'name' => 'Danh sách khách hàng',
"icon_class" => '',
'url' => '/admin/customer',
),
@@ -21,6 +22,7 @@ return array(
'view' => 'customer-group',
'id' => 'customer/customer-group',
'name' => 'Nhóm khách hàng',
"icon_class" => '',
'url' => '/admin/customer/customer-group',
),*/
@@ -30,6 +32,7 @@ return array(
'view' => 'customer-contact',
'id' => 'customer/customer-contact',
'name' => 'Khách hàng liên hệ',
"icon_class" => '',
'url' => '/admin/customer/customer-contact',
),
@@ -39,6 +42,7 @@ return array(
'view' => 'comment',
'id' => 'customer/comment',
'name' => 'Tổng hợp trao đổi',
"icon_class" => '',
'url' => '/admin/customer/comment',
),
@@ -48,6 +52,7 @@ return array(
'view' => 'review',
'id' => 'customer/review',
'name' => 'Tổng hợp Đánh giá',
"icon_class" => '',
'url' => '/admin/customer/review',
),
@@ -57,6 +62,7 @@ return array(
'view' => 'customer-review',
'id' => 'customer/customer-review',
'name' => 'Khách hàng góp ý',
"icon_class" => '',
'url' => '/admin/customer/customer-review',
),
@@ -66,6 +72,7 @@ return array(
'view' => 'customer-newsletter',
'id' => 'customer/customer-newsletter',
'name' => 'Khách hàng nhận bản tin',
"icon_class" => '',
'url' => '/admin/customer/customer-newsletter',
),

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Đại lý",
"icon_class" => 'shopping-bag',
"url" => "",
"menu" => array(
0 => array(
@@ -11,6 +12,7 @@ return array(
'view' => 'home',
'id' => 'distributor/home',
'name' => 'Danh sách',
"icon_class" => '',
'url' => '/admin/distributor',
),
),

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Tuyển dụng",
"icon_class" => 'megaphone',
"url" => "",
"menu" => array(
array(

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Marketing",
"icon_class" => 'newspaper',
"url" => "",
"menu" => array(
array(
@@ -11,6 +12,7 @@ return array(
'view' => 'promotion',
'id' => 'marketing/promotion',
'name' => 'Khuyến mại theo sản phẩm',
"icon_class" => '',
'url' => '/admin/marketing/promotion',
),
@@ -20,6 +22,7 @@ return array(
'view' => 'coupon',
'id' => 'marketing/coupon',
'name' => 'Phiếu giảm giá - Voucher',
"icon_class" => '',
'url' => '/admin/marketing/coupon',
),
@@ -29,6 +32,7 @@ return array(
'view' => 'home',
'id' => 'banner/home',
'name' => 'Danh sách banner',
"icon_class" => '',
'url' => '/admin/banner',
),
@@ -38,6 +42,7 @@ return array(
'view' => 'store-design',
'id' => 'system/store-design',
'name' => 'Banner pop-up',
"icon_class" => '',
'url' => '/admin/system/store-design?section=popup',
),
@@ -47,6 +52,7 @@ return array(
'view' => 'poster-upload',
'id' => 'marketing/poster-upload',
'name' => 'Poster',
"icon_class" => '',
'url' => '/admin/marketing/poster-upload',
),
@@ -56,6 +62,7 @@ return array(
'view' => 'store-design',
'id' => 'system/store-design',
'name' => 'Hình nền website',
"icon_class" => '',
'url' => '/admin/system/store-design?section=background',
),*/
@@ -65,6 +72,7 @@ return array(
'view' => 'home',
'id' => 'email/home',
'name' => 'Email',
"icon_class" => '',
'url' => '/admin/email',
),*/
@@ -74,6 +82,7 @@ return array(
'view' => 'meta-list',
'id' => 'url/meta-list',
'name' => 'Sửa thông tin URL',
"icon_class" => '',
'url' => '/admin/url/meta-list',
),
@@ -83,6 +92,7 @@ return array(
'view' => 'url-seo',
'id' => 'url/url-seo',
'name' => 'Link SEO',
"icon_class" => '',
'url' => '/admin/url/url-seo',
),
@@ -92,6 +102,7 @@ return array(
'view' => 'feed',
'id' => 'marketing/feed',
'name' => 'Facebook/Google Feed',
"icon_class" => '',
'url' => '/admin/marketing/feed',
),
@@ -101,6 +112,7 @@ return array(
'view' => 'product-offer',
'id' => 'marketing/product-offer',
'name' => 'Cài biểu tượng giảm giá',
"icon_class" => '',
'url' => '/admin/marketing/product-offer',
),
@@ -119,6 +131,7 @@ return array(
'view' => 'program',
'id' => 'marketing/program',
'name' => 'Chương trình khuyến mại',
"icon_class" => '',
'url' => '/admin/marketing/program',
),
@@ -128,6 +141,7 @@ return array(
'view' => 'home',
'id' => 'deal/home',
'name' => 'Deal/giờ vàng',
"icon_class" => '',
'url' => '/admin/deal',
),
@@ -137,6 +151,7 @@ return array(
'view' => 'combo-deal',
'id' => 'marketing/combo-deal',
'name' => 'Bán Combo',
"icon_class" => '',
'url' => '/admin/marketing/combo-deal',
),
@@ -146,6 +161,7 @@ return array(
'view' => 'conditional-promotion',
'id' => 'marketing/conditional-promotion',
'name' => 'Khuyến mại BuildPC',
"icon_class" => '',
'url' => '/admin/marketing/conditional-promotion',
),
@@ -155,6 +171,7 @@ return array(
'view' => 'live-support-per-category',
'id' => 'marketing/live-support-per-category',
'name' => 'Hỗ trợ theo từng danh mục',
"icon_class" => '',
'url' => '/admin/marketing/live-support-per-category',
),

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Bán hàng",
"icon_class" => "store",
"url" => "",
"menu" => array(
array(
@@ -11,6 +12,7 @@ return array(
'view' => 'home',
'id' => 'order/home',
'name' => 'Danh sách đơn hàng',
"icon_class" => '',
'url' => '/admin/order', // &list=new
),
@@ -20,6 +22,7 @@ return array(
'view' => 'bargain',
'id' => 'order/bargain',
'name' => 'Mặc cả giá',
"icon_class" => '',
'url' => '/admin/order/bargain',
),
@@ -29,16 +32,17 @@ return array(
'view' => 'wait-order',
'id' => 'order/wait-order',
'name' => 'Chờ mua sản phẩm',
"icon_class" => '',
'url' => '/admin/order/wait-order',
),
array(
'enable' => true ,
'module' => 'order',
'view' => 'paygate',
'id' => 'order/paygate',
'name' => 'Thanh toán qua cổng dịch vụ',
"icon_class" => '',
'url' => '/admin/order/paygate',
),
@@ -48,6 +52,7 @@ return array(
'view' => 'price-quote',
'id' => 'order/price-quote',
'name' => 'Lập báo giá',
"icon_class" => '',
'url' => '/admin/order/price-quote',
),
),

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Trả góp",
"icon_class" => "handshake",
"url" => "",
"menu" => array(
array(

View File

@@ -2,8 +2,8 @@
return array(
'enable' => true ,
"name" => "Xây dựng máy tính",
"icon_class" => 'monitor-smartphone',
"url" => "",
"menu" => array(
array(

View File

@@ -5,6 +5,7 @@
return array(
'enable' => true ,
"name" => "Sản phẩm",
"icon_class" => 'package',
"url" => "",
"menu" => array(
array(
@@ -13,6 +14,7 @@ return array(
'view' => 'home',
'id' => 'product/home',
'name' => 'Sản phẩm',
"icon_class" => '',
'url' => '/admin/product',
),
@@ -49,6 +51,7 @@ return array(
'view' => 'category',
'id' => 'product/category',
'name' => 'Danh mục',
"icon_class" => '',
'url' => '/admin/product/category',
),
array(
@@ -57,6 +60,7 @@ return array(
'view' => 'home',
'id' => 'brand/home',
'name' => 'Thương hiệu',
"icon_class" => '',
'url' => '/admin/product/brand',
),
array(
@@ -65,6 +69,7 @@ return array(
'view' => 'attribute',
'id' => 'product/attribute',
'name' => 'Thuộc tính ',
"icon_class" => '',
'url' => '/admin/product/attribute',
),
array(
@@ -73,6 +78,7 @@ return array(
'view' => 'collection',
'id' => 'product/collection',
'name' => 'Bộ sưu tập',
"icon_class" => '',
'url' => '/admin/product/collection',
),
@@ -82,6 +88,7 @@ return array(
'view' => 'product-wait-list',
'id' => 'product/product-wait-list',
'name' => 'Chờ mua sản phẩm',
"icon_class" => '',
'url' => '/admin/product/product-wait-list',
),
@@ -91,6 +98,7 @@ return array(
'view' => 'home',
'id' => 'addon/home',
'name' => 'SP/Dịch vụ mua kèm',
"icon_class" => '',
'url' => '/admin/product/addon',
),
@@ -100,6 +108,7 @@ return array(
'view' => 'home',
'id' => 'config_group/home',
'name' => 'Nhóm cấu hình',
"icon_class" => '',
'url' => '/admin/product/config_group',
),
@@ -109,6 +118,7 @@ return array(
'view' => 'home',
'id' => 'supplier/home',
'name' => 'Nhà cung cấp',
"icon_class" => '',
'url' => '/admin/supplier',
),*/
@@ -118,6 +128,7 @@ return array(
'view' => 'set-promotion-price',
'id' => 'product/set-promotion-price',
'name' => 'Cài đặt giá khuyến mại',
"icon_class" => '',
'url' => '/admin/product/set-promotion-price',
),*/
@@ -127,6 +138,7 @@ return array(
'view' => 'product-per-customer-group',
'id' => 'product/product-per-customer-group',
'name' => 'Giá theo nhóm khách hàng',
"icon_class" => '',
'url' => '/admin/product/product-per-customer-group',
),*/
@@ -136,6 +148,7 @@ return array(
'view' => 'set',
'id' => 'product/set',
'name' => 'Set sản phẩm',
"icon_class" => '',
'url' => '/admin/product/set',
),
@@ -145,6 +158,7 @@ return array(
'view' => 'spec-group',
'id' => 'product/spec-group',
'name' => 'Nhóm thông số kỹ thuật',
"icon_class" => '',
'url' => '/admin/product/spec-group',
),
@@ -154,6 +168,7 @@ return array(
'view' => 'list-competitor',
'id' => 'product/list-competitor',
'name' => 'So sánh giá đối thủ',
"icon_class" => '',
'url' => '/admin/product/list-competitor',
),
),

View File

@@ -4,6 +4,7 @@ return array(
'enable' => true ,
"name" => "Thống kê",
"icon_class" => 'pie-chart',
"url" => "",
"menu" => array(
array(
@@ -12,6 +13,7 @@ return array(
'view' => 'visitor',
'id' => 'report/visitor',
'name' => 'Thống kê truy cập',
"icon_class" => '',
'url' => '/admin/report/visitor',
),
@@ -21,6 +23,7 @@ return array(
'view' => 'customer',
'id' => 'report/customer',
'name' => 'Thống kê khách hàng',
"icon_class" => '',
'url' => '/admin/report/customer',
),
@@ -30,6 +33,7 @@ return array(
'view' => 'order',
'id' => 'report/order',
'name' => 'Thống kê đơn hàng',
"icon_class" => '',
'url' => '/admin/report/order',
),
@@ -39,6 +43,7 @@ return array(
'view' => 'product-buy',
'id' => 'report/product-buy',
'name' => 'Sản phẩm mua nhiều',
"icon_class" => '',
'url' => '/admin/report/product-buy',
),
@@ -48,6 +53,7 @@ return array(
'view' => 'product-visit',
'id' => 'report/product-visit',
'name' => 'Sản phẩm xem nhiều',
"icon_class" => '',
'url' => '/admin/report/product-visit',
),
@@ -57,6 +63,7 @@ return array(
'view' => 'referer',
'id' => 'report/referer',
'name' => 'Web giới thiệu',
"icon_class" => '',
'url' => '/admin/report/referer',
),
@@ -66,6 +73,7 @@ return array(
'view' => 'search',
'id' => 'report/search',
'name' => 'Từ khóa tìm kiếm',
"icon_class" => '',
'url' => '/admin/report/search',
),
@@ -75,6 +83,7 @@ return array(
'view' => 'error-page',
'id' => '',
'name' => 'Lỗi website',
"icon_class" => '',
'url' => '/admin/report/error-page',
),
),

View File

@@ -3,6 +3,7 @@
return array(
'enable' => true ,
"name" => "Hệ thống",
"icon_class" => 'settings',
"url" => "",
"menu" => array(
array(
@@ -11,6 +12,7 @@ return array(
'view' => 'settings',
'id' => 'system/settings',
'name' => 'Cài đặt chung',
"icon_class" => '',
'url' => '/admin/system/settings',
),
@@ -20,6 +22,7 @@ return array(
'view' => 'home',
'id' => 'template/home',
'name' => 'Sửa file template',
"icon_class" => '',
'url' => '/admin/template',
),
@@ -29,6 +32,7 @@ return array(
'view' => 'home',
'id' => '',
'name' => 'Quản trị viên',
"icon_class" => '',
'url' => '/admin/admin',
),
@@ -38,6 +42,7 @@ return array(
'view' => 'store-address',
'id' => '',
'name' => 'Địa chỉ cửa hàng',
"icon_class" => '',
'url' => '/admin/system/store-address',
),
@@ -47,6 +52,7 @@ return array(
'view' => 'domain',
'id' => 'system/domain',
'name' => 'Cài đặt tên miền',
"icon_class" => '',
'url' => '/admin/system/domain',
),
@@ -56,6 +62,7 @@ return array(
'view' => 'ban-ip',
'id' => '',
'name' => 'Chặn IP truy cập website',
"icon_class" => '',
'url' => '/admin/system/ban-ip',
),
@@ -65,6 +72,7 @@ return array(
'view' => 'change-info',
'id' => '',
'name' => 'Thông tin website',
"icon_class" => '',
'url' => '/admin/system/change-info',
),
@@ -76,6 +84,7 @@ return array(
'view' => 'province-list',
'id' => '',
'name' => 'Cài đặt tỉnh thành',
"icon_class" => '',
'url' => '/admin/system/province-list',
),
@@ -85,6 +94,7 @@ return array(
'view' => 'home',
'id' => '',
'name' => 'Tình trạng đơn hàng',
"icon_class" => '',
'url' => '/admin/system/order-status',
),
@@ -94,6 +104,7 @@ return array(
'view' => 'home',
'id' => '',
'name' => 'Hỗ trợ bán hàng',
"icon_class" => '',
'url' => '/admin/online_support',
),
@@ -103,6 +114,7 @@ return array(
'view' => 'country',
'id' => '',
'name' => 'Quốc gia',
"icon_class" => '',
'url' => '/admin/system/country',
),
@@ -112,6 +124,7 @@ return array(
'view' => 'home',
'id' => '',
'name' => 'Cài đặt thông báo ngoài',
"icon_class" => '',
'url' => '/admin/report_out',
),
@@ -121,6 +134,7 @@ return array(
'view' => 'home',
'id' => '',
'name' => 'Cài đặt phí vận chuyển',
"icon_class" => '',
'url' => '/admin/shipping2',
),
@@ -130,6 +144,7 @@ return array(
'view' => 'redirect',
'id' => 'url/redirect',
'name' => 'Url Redirect',
"icon_class" => '',
'url' => '/admin/url/redirect',
),
@@ -139,17 +154,10 @@ return array(
'view' => 'home',
'id' => 'tool/home',
'name' => 'Công cụ',
"icon_class" => '',
'url' => '/admin/tool',
),
array(
'enable' => true ,
'module' => 'civi',
'view' => 'home',
'id' => '',
'name' => 'Civi Affiliate',
'url' => '/admin/civi',
),
array(
'enable' => true ,
@@ -157,6 +165,7 @@ return array(
'view' => 'home',
'id' => 'menu/home',
'name' => 'Quản trị menu',
"icon_class" => '',
'url' => '/admin/menu',
),
@@ -166,6 +175,7 @@ return array(
'view' => 'keyword-suggest',
'id' => 'system/keyword-suggest',
'name' => 'Từ khóa gợi ý',
"icon_class" => '',
'url' => '/admin/system/keyword-suggest',
),
@@ -175,6 +185,7 @@ return array(
'view' => 'home',
'id' => 'tag/home',
'name' => 'Quản trị Tag',
"icon_class" => '',
'url' => '/admin/tag',
),
),

View File

@@ -4,6 +4,7 @@ return array(
'enable' => true ,
"name" => "Bảo hành sản phẩm",
"icon_class" => '',
"url" => "",
"menu" => array(
/*0 => array(

View File

@@ -37,7 +37,7 @@ $objAOrderController = new AOrderController();
$totalResults = $objAOrderController->getTotal($conditions);
$item_list = $objAOrderController->getList($conditions);
debug_var($item_list);
//debug_var($item_list);
list($page_collection, $tb_page, $total_pages) = Paging::paging_template($totalResults, $numPerPage);

1
data/page/category.php Normal file
View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

1
data/page/form.php Normal file
View File

@@ -0,0 +1 @@
<?php

1
data/page/home.php Normal file
View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

1
data/payinstall/home.php Normal file
View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

1
data/pcbuilder/home.php Normal file
View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -28,8 +28,8 @@ function get_category_list($parentId=0, $currentCat="",$level=1, $prefix="", $ca
$stt ++;
$imgUrl = (strlen($cat_info["thumbnail"]) > 2) ? " <img src=\"".$cat_info["thumbnail"]."\" style=\"max-width:30px; max-height:30px;\" />" : "";
if($cat_info["status"]) $status = "<a href=\"javascript:update_status(".$cat_id.",'off')\" class='w-[30px] h-[30px] border-[1px] border-[#9E9E9E] rounded-[4px] text-center leading-[30px] flex items-center justify-center mr-[5px]'><i class='fa-regular fa-eye-slash text-[#9E9E9E]'></i></a>";
else $status = "<a href=\"javascript:update_status(".$cat_id.",'on')\" class='w-[30px] h-[30px] border-[1px] border-[#0041E8] rounded-[4px] text-center leading-[30px] flex items-center justify-center mr-[5px]'><i class='fa-regular fa-eye text-[#0041E8]'></i></a>";
if($cat_info["status"]) $status = "<a href=\"javascript:update_status(".$cat_id.",'off')\" class='btn btn-soft btn-xs btn-outline btn-square'><i data-lucide='eye-off' class='size-3'></i></a>";
else $status = "<a href=\"javascript:update_status(".$cat_id.",'on')\" class='btn btn-soft btn-xs btn-outline btn-square'><i data-lucide='eye' class='size-3'></i></a>";
$edit_link ="/admin/product/category-form?id=".$cat_id;
@@ -42,7 +42,7 @@ function get_category_list($parentId=0, $currentCat="",$level=1, $prefix="", $ca
}
if($cat_info['is_parent']) {
$show_category_name = "<a href=\"javascript:;\" onclick=\"RowExpand.open_child('parent_".$cat_id."')\">".$show_category_name."</a>";
$show_category_name = "<a href=\"javascript:;\" class='link-active' onclick=\"RowExpand.open_child('parent_".$cat_id."')\">".$show_category_name."</a>";
}
$categoryTree .= "
@@ -50,22 +50,22 @@ function get_category_list($parentId=0, $currentCat="",$level=1, $prefix="", $ca
onmouseover=\"this.className='row-hover parent_".$parentId."'\" onmouseout=\"this.className='parent_".$parentId."'\">
<td>
<a name='cat_".$cat_id."'></a>
<a class='link-active' name='cat_".$cat_id."'></a>
". $extra_space . $prefix . $stt.". ". $show_category_name . $imgUrl."
</td>
<td>
<a href='".$cat_info['request_path']."' title='Mở tại website' target='_blank'>Xem trang</a>
<a href='".$cat_info['request_path']."' class='link-active' title='Mở tại website' target='_blank'>Xem trang</a>
</td>
<td>".$cat_id."</td>
<td>413787</td>
<td><a href='/admin/product?category=".$cat_id."'>1292</a></td>
<td class='whitespace-nowrap'>413787</td>
<td><a class='link-active' href='/admin/product?category=".$cat_id."'>1292</a></td>
<td>
<input type=text id=order_".$cat_id." value='".$cat_info["ordering"]."' size=2 onchange=\"update_order(".$cat_id.",this.value)\" />
<input class='input' type=text id=order_".$cat_id." value='".$cat_info["ordering"]."' size=2 onchange=\"update_order(".$cat_id.",this.value)\" />
<span class='status-ordering-".$cat_id."'></span>
</td>
<td>
<td class='whitespace-nowrap'>
SP + Danh mục con
</td>
@@ -77,11 +77,11 @@ function get_category_list($parentId=0, $currentCat="",$level=1, $prefix="", $ca
<a href='/admin/product/category-attribute?id=".$cat_id."&popup=1' class='pop-up'>Tổng</a> (".$cat_info['attribute_count'].")
</td>
<td>
<div class='list-btn flex items-center'>
<a href=\"".$edit_link."\" class='w-[30px] h-[30px] border-[1px] border-[#0041E8] rounded-[4px] text-center leading-[30px] flex items-center justify-center mr-[5px]'><i class='icons icon-edit'></i></a>
<a class='w-[30px] h-[30px] border-[1px] border-[#0041E8] rounded-[4px] text-center leading-[30px] flex items-center justify-center mr-[5px]' href='javascript:set_category_feature(.$cat_id.,'off')'><i class='icons icon-feature'></i></a>
<div class='list-btn flex items-center gap-3'>
<a href=\"".$edit_link."\" class='btn btn-soft btn-xs btn-square btn-outline btn-view'><i data-lucide='pencil' class='size-3'></i></a>
<a class='btn btn-soft btn-xs btn-square btn-outline btn-view' href='javascript:set_category_feature(.$cat_id.,'off')'><i data-lucide='crown' class='size-3'></i></a>
<span id=status-".$cat_id.">".$status."</span>
<span class='status-delete-".$cat_id."'><a href=\"javascript:deleteThis(".$cat_id.")\" class='w-[30px] h-[30px] border-[1px] border-[#9E9E9E] rounded-[4px] text-center leading-[30px] flex items-center justify-center mr-[5px]'><i class='icons icon-remove'></i></a></span>
<span class='status-delete-".$cat_id."'><a href=\"javascript:deleteThis(".$cat_id.")\" class='btn btn-soft btn-xs btn-square btn-error btn-outline '><i data-lucide='trash-2' class='size-3'></i></a></span>
</div>
</td>
";
@@ -89,7 +89,7 @@ function get_category_list($parentId=0, $currentCat="",$level=1, $prefix="", $ca
}else{
$categoryTree .= "
<td>
<a href=\"".$edit_link."\"><i class='icons icon-edit'></i></a>
<a href=\"".$edit_link."\"><i data-lucide='pencil' class='size-3'></i></a>
</td>
";
}

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

1
data/product/set.php Normal file
View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

1
data/report/customer.php Normal file
View File

@@ -0,0 +1 @@
<?php

1
data/report/order.php Normal file
View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

1
data/report/referer.php Normal file
View File

@@ -0,0 +1 @@
<?php

1
data/report/search.php Normal file
View File

@@ -0,0 +1 @@
<?php

1
data/shipping2/fee.php Normal file
View File

@@ -0,0 +1 @@
<?php

1
data/shipping2/home.php Normal file
View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

1
data/system/ban_ip.php Normal file
View File

@@ -0,0 +1 @@
<?php

1
data/system/email.php Normal file
View File

@@ -0,0 +1 @@
<?php

1
data/system/settings.php Normal file
View File

@@ -0,0 +1 @@
<?php

1
data/system/setup.php Normal file
View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

1
data/tag/add.php Normal file
View File

@@ -0,0 +1 @@
<?php

1
data/tag/home.php Normal file
View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1 @@
<?php

View File

@@ -10,8 +10,28 @@ function debug_var($input) {
}
function init_autoload(){
$classLoader = require_once ROOT_DIR . '/package/vendor/autoload.php';
$classLoader->add("Hura8", ROOT_DIR . '/inc' );
$candidates = [
ROOT_DIR . '/package/vendor/autoload.php',
ROOT_DIR . '/vendor/autoload.php'
];
$autoload = null;
foreach ($candidates as $file) {
if (file_exists($file)) {
$autoload = $file;
break;
}
}
if (!$autoload) {
$paths = implode("', '", $candidates);
trigger_error("Composer autoload not found. Expected one of: '" . $paths . "'.\nRun 'composer install' in the 'package' directory (or the project root) to install dependencies.", E_USER_ERROR);
}
$classLoader = require_once $autoload;
if (is_object($classLoader) && method_exists($classLoader, 'add')) {
$classLoader->add("Hura8", ROOT_DIR . '/inc');
}
return $classLoader;
}

View File

@@ -2,7 +2,7 @@
return [
'main' => [
'host' => '150.95.108.46',
'host' => '150.95.115.129',
'user' => 'hura8_devr',
'pass' => 'aEEfaffs@12563',
'db' => 'hura8',

27
notes/header.md Normal file
View File

@@ -0,0 +1,27 @@
## Header
### 1. Tìm kiếm
Khi click tìm kiếm sẽ ra modal có:
- Thanh tìm kiếm: từ khóa + lựa chọn loại nội dung cần tìm (đơn hàng, khách hàng, sản phẩm, bài viết, v.v.)
- Có danh sách các từ khóa tìm kiếm gần đây bên dưới thanh tìm kiếm để người dùng dễ dàng chọn lại.
- Danh sách các link nhanh đến các mục phổ biến như: Quản lý đơn hàng, Quản lý khách hàng, Quản lý sản phẩm, v.v.
Về cơ bản là gần giống như chức năng hiện tại, chỉ chỉnh sửa lại và thay nội dung cho phù hợp hơn.
### 2. Thông báo
Bỏ các tab, chỉ giữ lại 1 tab duy nhất và có phần "Xem hết"
Khi click xem hết sẽ ra trang Modal riêng hiển thị tất cả thông báo với các bộ lọc và tùy chọn đánh dấu đã đọc/chưa đọc.
### 3. Tài khoản người dùng
- Hiển thị thông tin cơ bản của người dùng (ảnh đại diện, tên, vai trò).
- Menu thả xuống với các tùy chọn:
- Hồ sơ cá nhân: Xem và chỉnh sửa thông tin cá nhân.
- Cài đặt tài khoản: Thay đổi mật khẩu, cài đặt bảo mật.
- Đăng xuất: Đăng xuất khỏi hệ thống.
### 4. Cài đặt hệ thống (biểu tượng bánh răng)
- Chỉ hiển thị với người dùng có quyền quản trị cao nhất

92
notes/home.md Normal file
View File

@@ -0,0 +1,92 @@
## Mục tiêu của trang chủ:
Chỉ gồm những thông tin quan trọng nhất mang tính chất: **Chỉ báo việc cần xử lý****Tóm tắt thông tin**
## Cột 1:
### 1. Việc cần xử lý:
- Đơn hàng mới
- Liên hệ mới của khách hàng
- Comment mới chưa duyệt
- Lỗi web
- Đơn hàng chưa xử lý xong
- Đơn trả góp mới
- ... Các chỉ báo khác
Mặc định sẽ hiển thị 3 chỉ báo. Khách hàng có thể click vào lựa chọn **Thêm chỉ báo** để tích chọn hiển thị thêm chỉ báo từ danh sách các chỉ báo được lập sẵn bởi hệ thống.
Các thể hiện của chỉ báo:
- Dạng thẻ: Hiển thị tên chỉ báo + số lượng mục cần xử lý
Ví dụ:
- [Đơn hàng mới] 15
- [Liên hệ mới của khách hàng] 8
- [Comment mới chưa duyệt] 5
### 2. Tóm tắt thông tin:
Có 2 dạng tóm tắt là **Chỉ số****Biểu đồ**
#### Chỉ số:
- Doanh thu trong ngày/tuần/tháng/năm
- Lợi nhuận trong ngày/tuần/tháng/năm
- Số đơn hàng trong ngày/tuần/tháng/năm
- Số khách hàng mới trong ngày/tuần/tháng/năm
- Số sản phẩm đã bán trong ngày/tuần/tháng/năm
- ... Các chỉ số khác
Cách thể hiện về cơ bản là như hiện tại.
#### Biểu đồ:
- Biểu đồ doanh thu theo ngày/tuần/tháng/năm
- Biểu đồ số đơn hàng theo ngày/tuần/tháng/năm
- Biểu đồ số khách hàng mới theo ngày/tuần/tháng/năm
- Biểu đồ lượt truy cập web theo ngày/tuần/tháng/năm
- ... Các biểu đồ khác
Khách hàng có thể tùy chọn hiển thị các chỉ số và biểu đồ mong muốn từ danh sách các chỉ số và biểu đồ được lập sẵn bởi hệ thống.
Cách thể hiện về cơ bản là như hiện tại.
### 3. Stream thông tin / thông báo:
Hiển thị các thông tin, thông báo liên quan tới hoạt động của cửa hàng như: cập nhật đơn hàng, phản hồi khách hàng, cảnh báo lỗi hệ thống, tin tức mới từ ngành hàng, v.v.
Ví dụ:
- [Vừa xong] Đơn hàng #12345 đã được xử lý.
- [3 phút trước] Khách hàng Nguyễn Văn A đã gửi phản hồi.
- [4 phút trước] Hệ thống đã phát hiện lỗi kết nối với cổng thanh toán.
- [5 phút trước] Tin tức mới: Xu hướng mua sắm trực tuyến năm 2024.
- [12 phút trước] Quản trị viên B đã đăng nhập vào hệ thống.
- [33 phút trước] Cập nhật sản phẩm mới: Sản phẩm XYZ đã được thêm vào kho hàng.
- ... Các thông tin, thông báo khác
## Cột 2: Vùng làm việc cá nhân (fix cứng độ rộng = 450px)
Khu vực này dành cho người dùng thực hiện các tác vụ cá nhân như:
### 1. To-do list cá nhân:
- Danh sách công việc cá nhân cần hoàn thành.
- Tùy chọn đánh dấu công việc đã hoàn thành.
- Tùy chọn thêm, sửa, xóa công việc.
### 2. Ghi chú nhanh:
- Khu vực để người dùng ghi chú nhanh các ý tưởng, thông tin quan trọng.
- Tùy chọn lưu, chỉnh sửa, xóa ghi chú.
### 3. Ticket hỗ trợ từ HuraSoft:
- Hiển thị danh sách các ticket hỗ trợ mà người dùng đã gửi đến HuraSoft.
- Tùy chọn xem chi tiết, cập nhật trạng thái ticket.
- Tùy chọn tạo ticket hỗ trợ mới.
### 4. Liên kết nhanh:
- Danh sách các liên kết nhanh đến các trang quản trị quan trọng như: Quản lý sản phẩm, Quản lý đơn hàng, Quản lý khách hàng, Báo cáo doanh thu, Cài đặt hệ thống, v.v.
- Tùy chọn thêm, sửa, xóa liên kết nhanh.

BIN
old/assets/images/arrow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Some files were not shown because too many files have changed in this diff Show More