最后更新
This commit is contained in:
parent
ae1351356a
commit
af39a61116
54
src/api/wechat/menu.js
Normal file
54
src/api/wechat/menu.js
Normal file
@ -0,0 +1,54 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
const api_name = '/admin/wechat/menu'
|
||||
|
||||
export default {
|
||||
removeMenu() {
|
||||
return request({
|
||||
url: `${api_name}/removeMenu`,
|
||||
method: `delete`
|
||||
})
|
||||
},
|
||||
syncMenu() {
|
||||
return request({
|
||||
url: `${api_name}/syncMenu`,
|
||||
method: `get`
|
||||
})
|
||||
},
|
||||
findMenuInfo() {
|
||||
return request({
|
||||
url: `${api_name}/findMenuInfo`,
|
||||
method: `get`
|
||||
})
|
||||
},
|
||||
|
||||
save(menu) {
|
||||
return request({
|
||||
url: `${api_name}/save`,
|
||||
method: `post`,
|
||||
data: menu
|
||||
})
|
||||
},
|
||||
|
||||
getById(id) {
|
||||
return request({
|
||||
url: `${api_name}/get/${id}`,
|
||||
method: `get`
|
||||
})
|
||||
},
|
||||
|
||||
updateById(menu) {
|
||||
return request({
|
||||
url: `${api_name}/update`,
|
||||
method: `put`,
|
||||
data: menu
|
||||
})
|
||||
},
|
||||
|
||||
removeById(id) {
|
||||
return request({
|
||||
url: `${api_name}/remove/${id}`,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
}
|
205
src/views/wechat/menu/list.vue
Normal file
205
src/views/wechat/menu/list.vue
Normal file
@ -0,0 +1,205 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
|
||||
<!-- 工具条 -->
|
||||
<div class="tools-div">
|
||||
<el-button class="btn-add" size="mini" @click="add">添 加</el-button>
|
||||
<el-button class="btn-add" size="mini" @click="syncMenu">同步菜单</el-button>
|
||||
<el-button class="btn-add" size="mini" @click="removeMenu">删除菜单</el-button>
|
||||
</div>
|
||||
|
||||
<el-table
|
||||
:data="list"
|
||||
style="width: 100%;margin-bottom: 20px;"
|
||||
row-key="id"
|
||||
border
|
||||
default-expand-all
|
||||
:tree-props="{children: 'children'}"
|
||||
>
|
||||
|
||||
<el-table-column label="名称" prop="name" width="350" />
|
||||
<el-table-column label="类型" width="100">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.type == 'view' ? '链接' : scope.row.type == 'click' ? '事件' : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="菜单URL" prop="url" />
|
||||
<el-table-column label="菜单KEY" prop="meunKey" width="130" />
|
||||
<el-table-column label="排序号" prop="sort" width="70" />
|
||||
<el-table-column label="操作" width="170" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="scope.row.parentId > 0" type="text" size="mini" @click="edit(scope.row.id)">修改</el-button>
|
||||
<el-button v-if="scope.row.parentId > 0" type="text" size="mini" @click="removeDataById(scope.row.id)">删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-dialog title="添加/修改" :visible.sync="dialogVisible" width="40%">
|
||||
<el-form ref="flashPromotionForm" label-width="150px" size="small" style="padding-right: 40px;">
|
||||
|
||||
<el-form-item label="选择一级菜单">
|
||||
<el-select
|
||||
v-model="menu.parentId"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in list"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="菜单名称">
|
||||
<el-input v-model="menu.name" />
|
||||
</el-form-item>
|
||||
<el-form-item label="菜单类型">
|
||||
<el-radio-group v-model="menu.type">
|
||||
<el-radio label="view">链接</el-radio>
|
||||
<el-radio label="click">事件</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="menu.type == 'view'" label="链接">
|
||||
<el-input v-model="menu.url" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="menu.type == 'click'" label="菜单KEY">
|
||||
<el-input v-model="menu.meunKey" />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序">
|
||||
<el-input v-model="menu.sort" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button size="small" @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" size="small" @click="saveOrUpdate()">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import menuApi from '@/api/wechat/menu'
|
||||
|
||||
const defaultForm = {
|
||||
id: null,
|
||||
parentId: 1,
|
||||
name: '',
|
||||
nameId: null,
|
||||
sort: 1,
|
||||
type: 'view',
|
||||
meunKey: '',
|
||||
url: ''
|
||||
}
|
||||
export default {
|
||||
|
||||
// 定义数据
|
||||
data() {
|
||||
return {
|
||||
list: [],
|
||||
dialogVisible: false,
|
||||
menu: defaultForm,
|
||||
saveBtnDisabled: false
|
||||
}
|
||||
},
|
||||
|
||||
// 当页面加载时获取数据
|
||||
created() {
|
||||
this.fetchData()
|
||||
},
|
||||
|
||||
methods: {
|
||||
removeMenu() {
|
||||
menuApi.removeMenu().then(response => {
|
||||
this.$message.success('菜单已删除')
|
||||
})
|
||||
},
|
||||
syncMenu() {
|
||||
this.$confirm('你确定上传菜单吗, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
return menuApi.syncMenu()
|
||||
}).then((response) => {
|
||||
this.$message.success(response.message)
|
||||
}).catch(error => {
|
||||
console.log('error', error)
|
||||
if (error === 'cancel') {
|
||||
this.$message.info('取消上传')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 调用api层获取数据库中的数据
|
||||
fetchData() {
|
||||
console.log('加载列表')
|
||||
menuApi.findMenuInfo().then(response => {
|
||||
this.list = response.data
|
||||
console.log(this.list)
|
||||
})
|
||||
},
|
||||
|
||||
// 根据id删除数据
|
||||
removeDataById(id) {
|
||||
// debugger
|
||||
this.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => { // promise
|
||||
// 点击确定,远程调用ajax
|
||||
return menuApi.removeById(id)
|
||||
}).then((response) => {
|
||||
this.fetchData(this.page)
|
||||
this.$message.success(response.message || '删除成功')
|
||||
}).catch(() => {
|
||||
this.$message.info('取消删除')
|
||||
})
|
||||
},
|
||||
|
||||
// -------------
|
||||
add() {
|
||||
this.dialogVisible = true
|
||||
this.menu = Object.assign({}, defaultForm)
|
||||
},
|
||||
|
||||
edit(id) {
|
||||
this.dialogVisible = true
|
||||
this.fetchDataById(id)
|
||||
},
|
||||
|
||||
fetchDataById(id) {
|
||||
menuApi.getById(id).then(response => {
|
||||
this.menu = response.data
|
||||
})
|
||||
},
|
||||
|
||||
saveOrUpdate() {
|
||||
this.saveBtnDisabled = true // 防止表单重复提交
|
||||
|
||||
if (!this.menu.id) {
|
||||
this.saveData()
|
||||
} else {
|
||||
this.updateData()
|
||||
}
|
||||
},
|
||||
|
||||
// 新增
|
||||
saveData() {
|
||||
menuApi.save(this.menu).then(response => {
|
||||
this.$message.success(response.message || '操作成功')
|
||||
this.dialogVisible = false
|
||||
this.fetchData(this.page)
|
||||
})
|
||||
},
|
||||
|
||||
// 根据id更新记录
|
||||
updateData() {
|
||||
menuApi.updateById(this.menu).then(response => {
|
||||
this.$message.success(response.message || '操作成功')
|
||||
this.dialogVisible = false
|
||||
this.fetchData(this.page)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
Loading…
Reference in New Issue
Block a user