sistem_manajemen
Perkenalan
Ini adalah sistem manajemen latar belakang berdasarkan koa2
Gunakan jQuery
sebagai kerangka JS front-end Gunakan bootstrap
sebagai kerangka CSS Gunakan pug
/ jade
dan handlebars
sebagai templat halaman HTML Gunakan PostgreSql
untuk menyimpan data bisnis Gunakan mongodb
untuk menyimpan session
Menggunakan Bookshelf
+ Knex
sebagai ORM
dan Query Builder
Gunakan Sentry
sebagai platform untuk mengumpulkan umpan balik tentang informasi kesalahan. Gunakan AJAX
untuk memproses permintaan front-end. Gunakan perpustakaan CronJob
untuk menyelesaikan pelaksanaan tugas terjadwal.
Untuk struktur direktori dan konfigurasi babel, silakan merujuk ke https://github.com/17koa/koa-demo
Tautan asli sepertinya telah dihapus. Ini adalah versi yang saya fork https://github.com/liuyueyi1995/koa2-demo
Kode front-end situs web berasal dari proyek saya sebelumnya https://github.com/liuyueyi1995/oa
tugas-tugas dasar
- Registrasi login administrator Backend
- B Manajemen informasi pengguna
- Manajemen peran pengguna C
- D Manajemen Organisasi
- E manajemen proyek
- F Menampilkan konten yang diperoleh berdasarkan kueri dan pencarian melalui paging back-end +
AJAX
- G Penciptaan pengguna sementara dan alokasi serta daur ulang peran sementara
- manajemen log H
Kelengkapan
- Struktur dasar MVC telah selesai;
- Tugas A telah diselesaikan, meliputi registrasi, login, dan sesi membaca dan menulis;
- Tugas B telah diselesaikan, termasuk permintaan informasi pengguna, pencarian fuzzy, penambahan, penghapusan, modifikasi informasi dasar, dan modifikasi kata sandi;
- Tugas C telah diselesaikan, termasuk kueri multi-tabel, pencarian fuzzy, pemrosesan menu drop-down berjenjang, penambahan dan penghapusan informasi;
- Tugas D telah diselesaikan, meliputi pencarian informasi institusi, pencarian fuzzy, penambahan, penghapusan, dan modifikasi;
- Tugas E telah diselesaikan, termasuk permintaan informasi proyek, pencarian fuzzy, penambahan, penghapusan, dan modifikasi;
- Tugas F telah selesai. Dengan menilai apakah kotak pencarian memiliki konten ketika peristiwa klik tombol paging dipicu, kumpulan hasil yang dikembalikan oleh latar belakang ditentukan;
- Tugas G telah diselesaikan. Dengan membagi pengguna menjadi pengguna internal dan eksternal, menggunakan metode pembuatan kata sandi yang berbeda, menambahkan atribut waktu kedaluwarsa ke peran, latar belakang secara teratur membersihkan informasi peran yang kedaluwarsa;
- Tugas G telah diselesaikan, termasuk melihat log dan pencarian fuzzy;
- Bentuk penyajian formulir telah diperbaiki, menu drop-down telah dimodifikasi, kontrol tanggal telah ditambahkan, dan input nilai Boolean berupa radio;
- Dua fungsi login pengguna dan manajemen data telah dikaitkan;
- Pembedaan antara peran eksternal dan peran internal telah selesai, dan penetapan tenggat waktu peran telah selesai;
TODO
- Permintaan tanggal, angka, dan nilai Boolean perlu ditingkatkan (misalnya: stempel waktu, boolean);
- Verifikasi masukan pengguna perlu ditingkatkan (misalnya: email, telepon);
- Meningkatkan tingkat penggunaan kembali kode;
Fokus
File config.js
yang berisi informasi sensitif telah dihapus dari repo dan perlu ditambahkan saat menggunakannya:
var config = {
database: '',
username: '',
password: '',
host: '',
port:
};
module.exports = config;
MASALAH
- Ada bug di menu cascading. Awalnya, daftar
site
tidak dapat ditampilkan tanpa mengubah type
.- Terselesaikan.
- Ini seharusnya menjadi masalah dengan
onchange
. - Dengan menambahkan nilai null default ke menu drop-down
type
, paksa pengguna untuk mengubahnya.
- Setelah memodifikasi database, nilai
updated_at
tidak berubah.- Terselesaikan.
- Tambahkan saja
hasTimestamps:true
saat mendefinisikan model
.
- Setelah memodifikasi database, urutan daftar akan terganggu.
- Terselesaikan.
- Gunakan
orderBy
untuk mengurutkan hasil pencarian sebelum database mengembalikannya.
- Pada halaman manajemen peran, ketika nilai situs kosong, penambahan terkadang gagal.
- Terselesaikan.
- Ketika
null
front-end dikembalikan ke back-end, itu menjadi string kosong, yang bertentangan dengan tipe integer
dari kunci asing.
- Setelah paging, jika konten selanjutnya diubah, konten tersebut akan melompat kembali ke halaman pertama setelah modifikasi berhasil.
- Tidak terselesaikan .
- Ini seharusnya menjadi masalah
reload
.
- Setelah paging, jika hasil pencarian memiliki beberapa halaman konten, mengklik halaman kedua akan mengembalikan ke halaman kedua dari hasil aslinya.
- Terselesaikan.
- Karena sekarang hanya ada satu pemrosesan paging
AJAX
, jika Anda ingin hasil pencarian ditampilkan di paging, Anda perlu menambahkan status lain. - Tambahkan penilaian berdasarkan halaman asli,
- Jika saat ini ada konten di kotak pencarian, database akan ditanyai konten ini dan konten halaman terkait akan dikembalikan;
- Jika kotak pencarian saat ini kosong, konten halaman yang sesuai dengan data asli akan dikembalikan.
- Setelah dilakukan pencarian, jumlah halaman pada komponen paging salah. Misalnya hasil asli 5 halaman, namun hasil pencarian hanya 2 halaman, namun tombol nomor 5 halaman tetap ditampilkan.
- Terselesaikan.
- Dapatkan jumlah hasil setelah mencari dan menggambar ulang tombol paging.
- Saat melakukan pencarian berkali-kali, jumlah halaman pada komponen paging salah. Misalnya, hasil pencarian pertama memiliki 2 halaman, dan hasil pencarian kedua memiliki 3 halaman, namun tetap hanya menampilkan 2 tombol nomor halaman.
- Terselesaikan.
- Dapatkan konten kotak pencarian secara real time dan segarkan halaman saat kontennya kosong.
- Saat menggunakan templat
handlebars
, stempel waktu diurai dengan tidak benar.- Terselesaikan.
- Gunakan
helper
khusus untuk mengurai stempel waktu.
- Jika Anda tidak login, mengubah URL akan melewatkan login dan mengoperasikan database secara langsung.
- Terselesaikan.
- Sebelum setiap permintaan
get
dikembalikan, penilaian session
ditambahkan. Jika session
kosong, sesi tersebut akan melompat ke halaman login
.
- Penghapusan pengguna internal memerlukan penggabungan. Penghapusan pgsql hanya mendukung
using
, dan rak buku tidak mendukung using
.- Terselesaikan.
- Gunakan
knex
untuk menyelesaikan kueri secara langsung.
- nilai bidang tanggal/waktu di luar rentang
- Terselesaikan.
- Meskipun database pengujian lokal dan database Alibaba Cloud keduanya pgsql9.4, mekanisme peninjauannya berbeda.
- Diskriminasi tanggal Alibaba Cloud sepertinya tidak bisa muncul di pagi dan sore hari (AM/PM)
- Oleh karena itu, metode
format
ditambahkan ke kelas Date
untuk memformat tanggal.
- Beralih antara hasil pencarian dan semua hasil.
- Terselesaikan.
- Metode paling awal adalah dengan menggunakan pemantauan real-time. Ketika kotak pencarian kosong, halaman akan di-refresh, namun ini tidak valid pada beberapa browser dan sistem operasi;
- Oleh karena itu, gunakanlah metode linking di banner untuk memberikan link dari hasil pencarian ke semua hasil.
- Format tanggal yang panjang memakan terlalu banyak halaman.
- Terselesaikan.
- Di backend, tangani tanggal dengan memformatnya, menyederhanakannya.
- Jika kesalahan dilaporkan dalam operasi database latar belakang, front end tidak akan mendapatkan umpan balik informasi yang relevan.
- Terselesaikan.
- Tambahkan blok kemudian().catch() ke backend untuk membuat penilaian kesalahan.
- Langkah selanjutnya adalah menganalisis kode kesalahan spesifik dan menginformasikan bagian depan informasi rinci.
- Saat menambahkan peran, pengguna dengan nama yang sama tidak dapat dibedakan.
- Terselesaikan.
- Bedakan pengguna dengan nama yang sama dengan menunjukkan alamat email mereka setelah nama pengguna.