Để sử dụng toàn bộ tiện ích nâng cao của Hệ Thống Pháp Luật vui lòng lựa chọn và đăng ký gói cước.
BỘ KẾ HOẠCH VÀ ĐẦU TƯ | CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM |
Số: 5506/BKHĐT-TH | Hà Nội, ngày 13 tháng 7 năm 2023 |
Kính gửi: | - Các Bộ, cơ quan ngang Bộ, cơ quan thuộc Chính phủ và các cơ quan khác ở Trung ương; |
Tại Kỳ họp thứ 5, Quốc hội khoá XV, Quốc hội đã biểu quyết thông qua Nghị quyết số 93/2023/QH15 về phân bổ vốn Chương trình phục hồi và phát triển kinh tế - xã hội; phân bổ, điều chỉnh kế hoạch đầu tư công trung hạn vốn ngân sách trung ương (NSTW) giai đoạn 2021-2025 và phân bổ kế hoạch đầu tư vốn ngân sách trung ương năm 2023 của các Chương trình mục tiêu quốc gia. Trong đó, đối với số vốn 37.303,015 tỷ đồngThực hiện nhiệm vụ được Chính phủ giao tại Nghị quyết số 97/NQ-CP ngày 08/7/2023, để triển khai quy định nêu trên của Quốc hội, Bộ Kế hoạch và Đầu tư đề nghị các bộ, cơ quan trung ương, địa phương rà soát, đề xuất nhu cầu bổ sung Kế hoạch đầu tư công trung hạn vốn NSTW giai đoạn 2021-2025 cho các nhiệm vụ, dự án:
1. Quan trọng, cần triển khai ngay thuộc danh mục Kế hoạch đầu tư công trung hạn giai đoạn 2021-2025 Chính phủ đã báo cáo Quốc hội, Ủy ban Thường vụ Quốc hội nhưng chưa được bố trí vốn hoặc chưa hoàn thiện thủ tục đầu tư của các bộ, cơ quan trung ương, địa phương có số vốn Quốc hội quyết nghị đưa vào dự phòng của kế hoạch trung hạn;
2. Các dự án sử dụng vốn ODA, vốn vay ưu đãi của các nhà tài trợ nước ngoài đang trong quá trình triển khai đàm phán, ký kết hiệp định vay, có khả năng giải ngân vốn trong giai đoạn 2021-2025.
3. Để thực hiện nhiệm vụ quy hoạch, nhiệm vụ chuẩn bị đầu tư đối với các dự án: đã được cấp có thẩm quyền giaoĐối với các dự án đề xuất bổ sung kế hoạch đầu tư công trung hạn vốn NSTW giai đoạn 2021-2025, các bộ, cơ quan trung ương, địa phương phải cam kết hoàn thiện thủ tục đầu tư, triển khai trong giai đoạn 2021-2025 và giải ngân toàn bộ số vốn được bổ sung.
Để đảm bảo tiến độ thực hiện theo quy định của Quốc hội, đề nghị các bộ, cơ quan trung ương, địa phương rà soát, đề xuất, gửi báo cáo về Bộ Kế hoạch và Đầu tư chậm nhất trước ngày 31 tháng 08 năm 2023.
Trong quá trình thực hiện, nếu có khó khăn, vướng mắc đề nghị phản ánh kịp thời về Bộ Kế hoạch và Đầu tư để phối hợp xử lý theo quy định./.
| KT. BỘ TRƯỞNG |
lồng nhau (bên trong) hay không
const memberID = 0;
const vbID = 'be0c212721e2b4f0eeeaad5f544510bb';
// State management cho phân tích
let isAnalyzing = false; // Có đang phân tích không
let currentAnalyzingAddress = null; // Address đang được phân tích
let currentAnalyzingElement = null; // Element đang được phân tích
let currentAnalyzingBadge = null; // Badge của element đang phân tích
let isPanelOpen = false; // Panel phân tích có đang mở không
console.log('Tiện ích loaded - memberID:', memberID, 'vbID:', vbID);
function isInViewportAndTabNoiDung(element) {
const rect = element.getBoundingClientRect();
const buffer = 1500; // Buffer to preload content below the viewport (approx. 50+ lines)
const viewHeight = window.innerHeight || document.documentElement.clientHeight;
const isInViewport = rect.top < viewHeight + buffer && rect.bottom >= 0;
const isInTabNoiDung = $(element).closest('#tab_noi_dung_vb').length > 0;
return isInViewport && isInTabNoiDung;
}
function getAddress(element) {
const validTags = ['trichyeu', 'cancu', 'phan', 'chuong', 'muc', 'tieumuc', 'dieu', 'khoan', 'diem'];
const $parent = $(element).closest(validTags.join(','));
if (!$parent.length) {
return null;
}
let addr = $parent.attr('address');
if (!addr && $parent.prop('tagName').toLowerCase() === 'trichyeu') {
addr = 'trichyeu';
$parent.attr('address', addr);
}
return addr || null;
}
function processTnplClasses($element) {
const tnplKeysInLine = new Set(); // key = slug hoặc text (thường là slug)
$element.find('tnpl').each(function () {
const $tnpl = $(this);
const tnplSlug = ($tnpl.attr('slug') || '').trim().toLowerCase();
const tnplKey = tnplSlug || $tnpl.text().trim().toLowerCase();
// Đã xử lý trong cùng dòng => bỏ
if (tnplKeysInLine.has(tnplKey)) {
return;
}
tnplKeysInLine.add(tnplKey);
let tnplExists = false;
// Chỉ duyệt các tnpl đã được tô màu (class on)
$('tnpl.on').each(function () {
const $existingTnpl = $(this);
const existingSlug = ($existingTnpl.attr('slug') || '').trim().toLowerCase();
const existingKey = existingSlug || $existingTnpl.text().trim().toLowerCase();
if (
existingKey === tnplKey &&
isInViewportAndTabNoiDung($existingTnpl[0])
) {
tnplExists = true;
return false; // break each
}
});
if (!tnplExists) {
$tnpl.addClass('on');
}
});
}
function processQueue() {
while (pendingRequests < maxConcurrentRequests && requestQueue.length > 0) {
const task = requestQueue.shift();
pendingRequests++;
task()
.always(() => {
pendingRequests--;
processQueue();
});
}
}
function processVisibleParagraphs() {
try {
$('#tab_noi_dung_vb p:not([is-posted="1"])').each(function () {
let $element = $(this);
if (isInViewportAndTabNoiDung(this)) {
$element.attr('is-posted', '1');
$element.addClass('loading-content');
let p_innerHTML = $element.html();
let address = null;
if (cac_cau_hinh.loai_noi_dung.includes('docs')) {
address = getAddress($element);
}
const isSubP = $element.parents('p').length > 0;
if (isSubP && !allow_sub_p) {
$element.removeClass('loading-content');
return; // Không gửi nếu không cho phép
}
const postData = { p_content: p_innerHTML, cac_cau_hinh, address };
if (isSubP && allow_sub_p) {
postData.sub_p = 1;
}
requestQueue.push(() =>
$.ajax({
url: '//tnpl' + (Math.floor(Math.random() * 10) + 1) + '.hethongphapluat.com/tien-ich/tim.tien.ich.php',
type: 'POST',
data: postData,
success: function(response) {
$element.html(response);
processTnplClasses($element);
// Đợi CTTD và các tiện ích load xong rồi mới attach badge
if (memberID === 4 && typeof attachPhanTichBadge === 'function') {
setTimeout(function() {
// $element chính là thẻ p, kiểm tra và attach badge trực tiếp
const $parent = $element.closest('phan, chuong, muc, tieumuc, dieu, khoan, diem');
if ($parent.length > 0 && $parent.find('.badge-phan-tich[data-for="' + $parent.attr('address') + '"]').length === 0) {
const address = $parent.attr('address');
$element.attr('data-address', address);
// Lấy tên loại thẻ cho tooltip
const parentType = getParentTypeName($parent.prop('tagName').toLowerCase());
// Append badge VÀO PARENT (dieu, khoan,...) thay vì vào để tránh xung đột CTTD
const $badge = $('Phân tích');
$parent.append($badge);
// Thêm class để CSS set position: relative CHỈ cho element có badge
$parent.addClass('has-phan-tich-badge');
}
// Xử lý các p con (nếu có sub-p)
attachPhanTichBadge($element);
}, 300); // Đợi 300ms để CTTD render xong
}
},
complete: function() {
$element.removeClass('loading-content');
}
})
);
processQueue();
}
});
} catch(e) {
console.error('Lỗi processVisibleParagraphs:', e);
}
}
$(window).on('scroll resize', function () {
processVisibleParagraphs();
});
console.log('Bắt đầu processVisibleParagraphs lần đầu...');
processVisibleParagraphs();
console.log('processVisibleParagraphs lần đầu hoàn thành');
// Chức năng phân tích điều luật (chỉ cho member_id = 4)
if (memberID === 4) {
// Modal cảnh báo
function showWarningModal(message) {
// Tạo modal nếu chưa có
if ($('#warningModal').length === 0) {
const modalHTML = `
' + message + '
const $badge = $('Phân tích');
$parent.append($badge);
// Thêm class để CSS set position: relative CHỈ cho element có badge
$parent.addClass('has-phan-tich-badge');
}
}
});
}
// Helper: Escape HTML entities
function escapeHtml(text) {
const map = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
};
return String(text).replace(/[&<>"']/g, function(m) { return map[m]; });
}
// Helper: Convert Markdown to HTML (đơn giản)
function markdownToHtml(markdown) {
if (!markdown) return '';
let html = markdown;
// Headers
html = html.replace(/^### (.*$)/gim, ' ' + para.replace(/\n/g, ' Đang phân tích... Đang phân tích... Đang xóa cache và phân tích lại... Đang phân tích...$1
');
html = html.replace(/^## (.*$)/gim, '$1
');
html = html.replace(/^# (.*$)/gim, '$1
');
// Bold
html = html.replace(/\*\*(.*?)\*\*/g, '$1');
// Italic
html = html.replace(/\*(.*?)\*/g, '$1');
// Blockquote
html = html.replace(/^> (.*$)/gim, '$1
');
html = html.replace(/^> (.*$)/gim, '$1
');
// Lists (unordered)
html = html.replace(/^\- (.*$)/gim, '$1
');
// Lists (ordered)
html = html.replace(/^\d+\. (.*$)/gim, '
') + '' + escapeHtml(response.ten_van_ban) + '
';
if (response.so_hieu) {
html += 'Số hiệu: ' + escapeHtml(response.so_hieu) + '
';
}
html += 'Điều khoản: ' + escapeHtml(response.address) + '';
if (response.from_cache) {
html += ' Cache';
}
html += '
Vui lòng thử lại sau.
Chi tiết: ${escapeHtml(errorMsg)}
' + escapeHtml(response.ten_van_ban) + '
';
if (response.so_hieu) {
html += 'Số hiệu: ' + escapeHtml(response.so_hieu) + '
';
}
html += 'Điều khoản: ' + escapeHtml(response.address) + '';
html += '
Vui lòng thử lại sau.
Chi tiết: ${escapeHtml(errorMsg)}