You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.6 KiB
123 lines
3.6 KiB
const router = require('koa-router')()
|
|
|
|
// 全局路由
|
|
router.prefix('/menu')
|
|
router.get('/getMenu', async (ctx, next) => {
|
|
const [rows, fields] = await global.SQL.execute('SELECT * FROM `menu` WHERE `isdelete` = 0');
|
|
ctx.body = {
|
|
data: rows,
|
|
state: true,
|
|
message: '获取内容成功'
|
|
}
|
|
})
|
|
router.delete('/deleteMenu', async (ctx, next) => {
|
|
const arg = ctx.request.query;
|
|
if(!arg.id){
|
|
ctx.body = {
|
|
data: {},
|
|
state: false,
|
|
message: '缺少id'
|
|
}
|
|
return
|
|
}
|
|
const [rows, fields] = await global.SQL.execute('UPDATE menu SET isdelete = 1 WHERE `id` = ?', [arg.id]);
|
|
ctx.body = {
|
|
data: rows,
|
|
state: true,
|
|
message: '删除菜单成功'
|
|
}
|
|
})
|
|
router.put('/updateMenu', async (ctx, next) => {
|
|
const arg = ctx.request.body;
|
|
const field = ['name', 'route', 'rank', 'remarks', 'father', 'icon']
|
|
const noField = []
|
|
field.map(item => {
|
|
if (!Object.keys(arg).includes(item)) noField.push(item)
|
|
})
|
|
if (noField.length != 0) {
|
|
ctx.body = {
|
|
data: {},
|
|
state: false,
|
|
message: '缺少' + noField
|
|
}
|
|
return
|
|
}
|
|
const [rows, fields] = await global.SQL.execute('UPDATE menu SET name = ? , rank = ? , remarks = ? , route = ?, icon = ? WHERE id = ?', [arg.name, arg.rank, arg.remarks, arg.route, arg.icon, Number(arg.id)]);
|
|
ctx.body = {
|
|
data: rows,
|
|
state: true,
|
|
message: '更新成功'
|
|
}
|
|
})
|
|
|
|
router.put('/changeMenuItemRank', async (ctx, next) => {
|
|
const arg = ctx.request.body;
|
|
const field = ['rankArr']
|
|
const noField = []
|
|
field.map(item => {
|
|
if (!Object.keys(arg).includes(item)) noField.push(item)
|
|
})
|
|
if (noField.length != 0) {
|
|
ctx.body = {
|
|
data: {},
|
|
state: false,
|
|
message: '缺少' + noField
|
|
}
|
|
return
|
|
}
|
|
arg.rankArr = JSON.parse(arg.rankArr)
|
|
const a = arg.rankArr.map(item => {
|
|
return `WHEN ${item.id} THEN ${item.rank}`
|
|
}).join(' ')
|
|
const b = arg.rankArr.map(item => item.id)
|
|
const SQL = `UPDATE menu SET rank = CASE id ${a} END WHERE id IN (${b})`
|
|
// console.log(SQL)
|
|
try{
|
|
const [rows, fields] = await global.SQL.execute(SQL);
|
|
ctx.body = {
|
|
data: rows,
|
|
state: true,
|
|
message: '更新成功'
|
|
}
|
|
}catch (e) {
|
|
console.error(e)
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
router.post('/createMneuItem', async (ctx, next) => {
|
|
const arg = ctx.request.body;
|
|
const field = ['name', 'route', 'rank', 'remarks', 'father', 'icon']
|
|
const noField = []
|
|
field.map(item => {
|
|
if (!Object.keys(arg).includes(item)) noField.push(item)
|
|
})
|
|
if (noField.length != 0) {
|
|
ctx.body = {
|
|
data: {},
|
|
state: false,
|
|
message: '缺少' + noField
|
|
}
|
|
return
|
|
}
|
|
const [checket, checketFields] = await global.SQL.execute('SELECT * FROM `menu` WHERE `isdelete` = 0 AND `route` = ?', [arg.route]);
|
|
if(checket.length != 0){
|
|
ctx.body = {
|
|
data: {},
|
|
state: false,
|
|
message: '路由标志已存在:' + arg.route
|
|
}
|
|
return
|
|
}
|
|
const createTime = new Date().getTime()
|
|
const [rows, fields] = await global.SQL.execute('INSERT INTO menu (name, rank, route, father, remarks, createTime) VALUES (?, ?, ?, ?, ?, ?)', [arg.name, arg.rank, arg.route, arg.father, arg.remarks, createTime])
|
|
ctx.body = {
|
|
data: rows,
|
|
state: true,
|
|
message: '创建成功'
|
|
}
|
|
})
|
|
|
|
module.exports = router
|
|
|