Compare commits
2 Commits
8f8897338a
...
6f4ad68cab
| Author | SHA1 | Date | |
|---|---|---|---|
| 6f4ad68cab | |||
| 4d1d4c1e79 |
@ -18,6 +18,7 @@ router.get("/", async function(req, res) {
|
||||
item_form.subsidy,
|
||||
scholarship_application.application_date,
|
||||
scholarship_application.student_id,
|
||||
scholarship_application.supplement_filename,
|
||||
student.student_name,
|
||||
audit_form.committee_review,
|
||||
advisor.advisor_name,
|
||||
|
||||
34
api/download.js
Normal file
34
api/download.js
Normal file
@ -0,0 +1,34 @@
|
||||
const path = require('path');
|
||||
const router = require('express').Router();
|
||||
const fs = require('fs');
|
||||
|
||||
|
||||
router.get("/", async function(req, res) {
|
||||
const filename = req.query.filename;
|
||||
console.log(filename);
|
||||
const filePath = path.join('uploads', filename);
|
||||
console.log(filePath);
|
||||
|
||||
if (filename) {
|
||||
fs.access(filePath, fs.constants.F_OK, (err) => {
|
||||
if (err) {
|
||||
console.error('檔案不存在:', err);
|
||||
res.status(404).send('檔案不存在');
|
||||
} else {
|
||||
res.download(filePath, (err) => {
|
||||
if (err) {
|
||||
console.error('檔案下載失敗:', err);
|
||||
res.status(500).send('檔案下載失敗');
|
||||
} else {
|
||||
console.log("downloaded");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
res.status(400).send('缺少 filename 參數');
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
module.exports = router;
|
||||
@ -43,10 +43,13 @@ router.post("/", upload.single('file'), async function(req, res) {
|
||||
console.log(req.body);
|
||||
|
||||
if (req.file){
|
||||
console.log("Upload file: " + req.file.originalname);
|
||||
console.log("Upload file: " + req.file.filename);
|
||||
var upload_file_name = req.file.filename;
|
||||
} else {
|
||||
console.log("No file");
|
||||
var upload_file_name = "";
|
||||
}
|
||||
console.log(upload_file_name);
|
||||
// data
|
||||
const apply_infos_str = req.body.apply_infos; // get data from request
|
||||
const application_units_str = req.body.application_units;
|
||||
@ -71,7 +74,7 @@ router.post("/", upload.single('file'), async function(req, res) {
|
||||
}
|
||||
|
||||
// insert data into table : scholarship_application
|
||||
const scholarship_application_info = await conn.batch("INSERT INTO scholarship_application(`application_date`, `student_id`) VALUES(?, ?);", [time, student_id]);
|
||||
const scholarship_application_info = await conn.batch("INSERT INTO scholarship_application(`application_date`, `student_id`, `supplement_filename`) VALUES(?, ?, ?);", [time, student_id, upload_file_name ]);
|
||||
const scholarship_application_id = scholarship_application_info.insertId; // get the application_id of previous record
|
||||
|
||||
// 這邊你們要再改
|
||||
|
||||
2
index.js
2
index.js
@ -25,6 +25,8 @@ app.use("/api/login", require("./api/login.js"));
|
||||
app.use("/api/example", require("./api/example.js"));
|
||||
app.use("/api/main", require("./api/main.js"));
|
||||
app.use("/api/audit", require("./api/audit.js"));
|
||||
app.use("/api/download", require("./api/download.js"));
|
||||
|
||||
// // static files
|
||||
app.use('/js', express.static('./js'));
|
||||
app.use('/css', express.static('./css'));
|
||||
|
||||
45
js/audit.js
45
js/audit.js
@ -1,6 +1,6 @@
|
||||
|
||||
let item_info_len = 0;
|
||||
let all_audit_data = null;
|
||||
var all_audit_data = null;
|
||||
let current_review_apllication_id;
|
||||
const application_detail_init_table_content = document.getElementById("application_detail").innerHTML;
|
||||
let assistant_s_num;
|
||||
@ -31,12 +31,11 @@ async function getAuditedItemInfo() {
|
||||
}
|
||||
}
|
||||
|
||||
function combineSameAppData(data) {
|
||||
async function combineSameAppData(data) {
|
||||
// combine the same application id data in a same record
|
||||
let n_data = {};
|
||||
let next_record = true;
|
||||
console.log("data:");
|
||||
console.log(data);
|
||||
console.log('data:', data);
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
if (i > 0 && data[i].application_id != data[i-1].application_id) {
|
||||
// this record is different from the last
|
||||
@ -62,6 +61,7 @@ function combineSameAppData(data) {
|
||||
n_data[data[i].application_id].application_units = [data[i].application_unit];
|
||||
n_data[data[i].application_id].item_contents = [data[i].item_content];
|
||||
n_data[data[i].application_id].subsidys = [data[i].subsidy];
|
||||
n_data[data[i].application_id].supplement_filename = [data[i].supplement_filename];
|
||||
}
|
||||
else {
|
||||
n_data[data[i].application_id].application_units.push(data[i].application_unit);
|
||||
@ -69,11 +69,13 @@ function combineSameAppData(data) {
|
||||
n_data[data[i].application_id].subsidys.push(data[i].subsidy);
|
||||
}
|
||||
}
|
||||
console.log("SameAPPData here");
|
||||
console.log('n_data: ' , n_data);
|
||||
all_audit_data = n_data;
|
||||
return n_data;
|
||||
}
|
||||
|
||||
function auditCase(application_id) {
|
||||
async function auditCase(application_id) {
|
||||
console.log(`set application_id = ${application_id}`);
|
||||
current_review_apllication_id = application_id;
|
||||
|
||||
@ -81,6 +83,9 @@ function auditCase(application_id) {
|
||||
const table_id = "application_detail";
|
||||
document.getElementById(table_id).innerHTML = application_detail_init_table_content;
|
||||
let table_content = document.getElementById(table_id).innerHTML;
|
||||
if (all_audit_data == null) {
|
||||
console.log("ERROR HERE");
|
||||
}
|
||||
const data = all_audit_data[application_id];
|
||||
console.log(all_audit_data);
|
||||
console.log(data);
|
||||
@ -104,14 +109,24 @@ function auditCase(application_id) {
|
||||
document.getElementById(table_id).innerHTML = table_content;
|
||||
|
||||
// add simple info
|
||||
document.getElementById("application_info").innerHTML =
|
||||
let inner_html =
|
||||
`
|
||||
申請編號:${data.application_id} <br/>
|
||||
申請日期:${data.application_date} <br/>
|
||||
申請人姓名:${data.student_name} <br/>
|
||||
申請人學號:${data.student_id} <br/>
|
||||
未獲補助證明檔案:
|
||||
`;
|
||||
if (data.supplement_filename != '') {
|
||||
inner_html += `${data.supplement_filename} <button><a href='/api/download?filename=${data.supplement_filename}'>下載</a></button>`
|
||||
} else {
|
||||
inner_html += "無";
|
||||
}
|
||||
inner_html +=
|
||||
`<br>
|
||||
申請內容:
|
||||
`;
|
||||
document.getElementById("application_info").innerHTML = inner_html;
|
||||
|
||||
console.log();
|
||||
}
|
||||
@ -119,7 +134,8 @@ function auditCase(application_id) {
|
||||
async function putDataInTable(table_id) {
|
||||
// get data
|
||||
const result = await getItemInfo();
|
||||
const data = combineSameAppData(result.data);
|
||||
console.log('intable');
|
||||
const data = await combineSameAppData(result.data);
|
||||
const suc = result.success;
|
||||
if (suc && data != null && table_id != null) {
|
||||
// insert data into table
|
||||
@ -155,7 +171,8 @@ async function putDataInTable(table_id) {
|
||||
async function putDataInAuditedTable(table_id) {
|
||||
// get data
|
||||
const result = await getAuditedItemInfo();
|
||||
const data = combineSameAppData(result.data);
|
||||
console.log('audit_table');
|
||||
const data = await combineSameAppData(result.data);
|
||||
const suc = result.success;
|
||||
if (suc && data != null && table_id != null) {
|
||||
// insert data into table
|
||||
@ -335,6 +352,7 @@ async function sendReviewResult() {
|
||||
const result = await axios.post("/api/audit", data);
|
||||
if (result.data.suc) {
|
||||
alert("審核成功!");
|
||||
window.location.reload();
|
||||
}
|
||||
else {
|
||||
alert("審核失敗!", result.data.msg);
|
||||
@ -342,6 +360,11 @@ async function sendReviewResult() {
|
||||
// window.location.reload();
|
||||
}
|
||||
|
||||
setAssistantName();
|
||||
putDataInTable("application_table");
|
||||
putDataInAuditedTable("audit_block");
|
||||
async function main() {
|
||||
setAssistantName();
|
||||
await putDataInAuditedTable("audit_block");
|
||||
await putDataInTable("application_table");
|
||||
|
||||
}
|
||||
|
||||
main()
|
||||
|
||||
@ -118,6 +118,8 @@ async function sendApplyData() {
|
||||
// send data
|
||||
let result = await axios.post('/api/main', data, {headers: {'Content-Type': 'multipart/form-data'}});
|
||||
console.log(result);
|
||||
window.location.reload();
|
||||
|
||||
}
|
||||
|
||||
function setUserInfo() {
|
||||
|
||||
@ -13,13 +13,6 @@
|
||||
<label>系所助理:<span id="assistant_name"></span></label>
|
||||
</div>
|
||||
<br>
|
||||
<div>
|
||||
<label>選擇要審核的學號</label>
|
||||
<select id="student_id_select">
|
||||
<option value="">請選擇</option>
|
||||
</select>
|
||||
</div>
|
||||
<br>
|
||||
<fieldset>
|
||||
<table border="1">
|
||||
<tr>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user