mp:menu 前端的新增、删除操作的完善

This commit is contained in:
YunaiV 2023-01-14 22:39:29 +08:00
parent 02ec5d455c
commit c0b950257f

View File

@ -60,11 +60,11 @@ SOFTWARE.
</div>
</div>
<!-- 一级菜单加号 -->
<div class="menu_bottom menu_addicon" v-if="menuKeyLength < 3" @click="addMenu"><i class="el-icon-plus"></i></div>
<div class="menu_bottom menu_addicon" v-if="this.menuList.length < 3" @click="addMenu"><i class="el-icon-plus"></i></div>
</div>
<div class="save_div">
<!--<el-button class="save_btn" type="warning" size="small" @click="saveFun">保存菜单</el-button>-->
<el-button class="save_btn" type="success" size="small" @click="saveAndReleaseFun">保存并发布菜单</el-button>
<el-button class="save_btn" type="success" size="small" @click="handleSaveAndReleaseFun">保存并发布菜单</el-button>
</div>
</div>
<!--右边配置-->
@ -75,9 +75,9 @@ SOFTWARE.
</div>
<div>
<span>菜单名称</span>
<el-input class="input_width" v-model="tempObj.name" placeholder="请输入菜单名称" :maxlength=nameMaxlength clearable></el-input>
<el-input class="input_width" v-model="tempObj.name" placeholder="请输入菜单名称" :maxlength=nameMaxLength clearable></el-input>
</div>
<div v-if="showConfigurContent">
<div v-if="showConfigureContent">
<div class="menu_content">
<span>菜单内容</span>
<el-select v-model="tempObj.type" clearable placeholder="请选择" class="menu_option">
@ -129,8 +129,8 @@ SOFTWARE.
</div>
</div>
</div>
<!--一进页面就显示的默认页面当点击左边按钮的时候就不显示了-->
<div v-if="!showRightFlag" class="right">
<!-- 一进页面就显示的默认页面当点击左边按钮的时候就不显示了-->
<div v-else class="right">
<p>请选择菜单配置</p>
</div>
</div>
@ -138,12 +138,11 @@ SOFTWARE.
</template>
<script>
// import { save, saveAndRelease ,getList} from '@/api/wxmp/wxmenu'
import WxReplySelect from '@/views/mp/components/wx-news/main.vue'
import WxNews from '@/views/mp/components/wx-news/main.vue';
import WxMaterialSelect from '@/views/mp/components/wx-news/main.vue'
import {getMenuList} from "@/api/mp/menu";
import {getSimpleAccounts} from "@/api/mp/account";
import { getMenuList } from "@/api/mp/menu";
import { getSimpleAccounts } from "@/api/mp/account";
export default {
name: 'mpMenu',
@ -154,6 +153,7 @@ export default {
},
data(){
return {
// ======================== ========================
//
loading: true,
//
@ -164,24 +164,28 @@ export default {
children: [],
},
showRightFlag:false, //
menu:{ //
button:[
]
},
// ======================== ========================
isActive: -1,//
isSubMenuActive: -1, //
isSubMenuFlag: -1, //
// ======================== ========================
showRightFlag: false, //
nameMaxLength: 0, // 1 4 2 7
showConfigureContent: true, //
tempObj:{}, //
tempSelfObj: {
// tempObjmenu
tempSelfObj: { // tempObjmenu
},
visible2: false, // ""
tableData:[], //,
menuName:'',
showConfigurContent:true,
nameMaxlength:0,//
menuOptions: [{
value: 'view',
label: '跳转网页'
@ -231,12 +235,6 @@ export default {
this.getList();
})
},
computed: {
menuKeyLength:function() {
// menuObj 3
return this.menu.button.length;
}
},
methods: {
// ======================== ========================
/** 设置账号编号 */
@ -271,6 +269,125 @@ export default {
this.handleQuery()
},
// ======================== ========================
//
menuClick(i, item) {
//
this.resetEditor();
this.showRightFlag = true; //
this.tempObj = item; // flag
this.tempSelfObj.grand = "1"; //
this.tempSelfObj.index = i; //
this.nameMaxLength = 4
this.showConfigureContent = !(item.children && item.children.length > 0); //
//
this.isActive = i; //
this.isSubMenuFlag = i; //
this.isSubMenuActive = -1; //
},
//
subMenuClick(subItem, index, k) {
//
this.resetEditor();
this.showRightFlag = true; //
this.tempObj = subItem;//
this.tempSelfObj.grand = "2"; //
this.tempSelfObj.index = index; //
this.tempSelfObj.secondIndex = k; //
this.nameMaxLength = 7
this.showConfigureContent = true;
//
this.isActive = -1; //
this.isSubMenuActive = index + "" + k; //
},
//
addMenu(){
const menuKeyLength = this.menuList.length;
const addButton = {
name: "菜单名称",
children: []
}
this.$set(this.menuList, menuKeyLength, addButton)
this.menuClick(this.menuKeyLength - 1, addButton)
},
// item
addSubMenu(i, item) {
if (!item.children || item.children.length <= 0){
this.$set( item, 'children',[])
// TODO
this.$delete( item, 'type')
this.$delete( item, 'pagepath')
this.$delete( item, 'url')
this.$delete( item, 'key')
this.$delete( item, 'article_id')
this.$delete( item, 'textContent')
this.showConfigureContent = false
}
let subMenuKeyLength = item.children.length; // key
let addButton = {
name: "子菜单名称"
}
this.$set(item.children, subMenuKeyLength, addButton);
this.subMenuClick(item.children[subMenuKeyLength], i, subMenuKeyLength)
},
//
deleteMenu(item) {
this.$modal.confirm('确定要删除吗?').then(() => {
//
if (this.tempSelfObj.grand === "1") { //
this.menuList.splice(this.tempSelfObj.index, 1);
} else if (this.tempSelfObj.grand === "2") { //
this.menuList[this.tempSelfObj.index].children.splice(this.tempSelfObj.secondIndex, 1);
}
//
this.$modal.msgSuccess("删除成功");
//
this.tempObj = {};
this.showRightFlag = false;
this.isActive = -1;
this.isSubMenuActive = -1;
}).catch(() => {});
},
// ======================== ========================
handleSaveAndReleaseFun(){
this.$confirm('确定要保证并发布该菜单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.loading = true
saveAndRelease({
strWxMenu:this.menu
}).then(response => {
this.loading = false
if(response.code == 200){
this.$message({
showClose: true,
message: '发布成功',
type: 'success'
})
}else{
this.$message.error(response.data.msg)
}
}).catch(() => {
this.loading = false
})
}).catch(() => {
})
},
// Editor
resetEditor() {
this.hackResetEditor = false //
this.$nextTick(() => {
this.hackResetEditor = true //
})
},
// TODO
deleteTempObj(){
@ -295,131 +412,6 @@ export default {
item.content.articles = item.content.articles.slice(0,1)
this.tempObj.content = item.content
},
handleClick(tab, event){
this.tempObj.mediaType = tab.name
},
saveAndReleaseFun(){
this.$confirm('确定要保证并发布该菜单吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.loading = true
saveAndRelease({
strWxMenu:this.menu
}).then(response => {
this.loading = false
if(response.code == 200){
this.$message({
showClose: true,
message: '发布成功',
type: 'success'
})
}else{
this.$message.error(response.data.msg)
}
}).catch(() => {
this.loading = false
})
}).catch(() => {
})
},
//
menuClick(i, item){
this.hackResetWxReplySelect = false//
this.$nextTick(() => {
this.hackResetWxReplySelect = true//
})
this.showRightFlag = true;//
this.tempObj = item;//flag
this.tempSelfObj.grand = "1";//
this.tempSelfObj.index = i;//
this.isActive = i; //
this.isSubMenuFlag = i; //
this.isSubMenuActive = -1; //
this.nameMaxlength = 4
if(item.sub_button && item.sub_button.length > 0){
this.showConfigurContent = false
}else{
this.showConfigurContent = true
}
},
//
subMenuClick(subItem, index, k){
this.hackResetWxReplySelect = false//
this.$nextTick(() => {
this.hackResetWxReplySelect = true//
})
this.showRightFlag = true;//
this.tempObj = subItem;//
this.tempSelfObj.grand = "2";//
this.tempSelfObj.index = index;//
this.tempSelfObj.secondIndex = k;//
this.isSubMenuActive = index + "" + k; //
this.isActive = -1;//
this.showConfigurContent = true;
this.nameMaxlength = 7
},
//
addMenu(){
let menuKeyLength = this.menuKeyLength
let addButton = {
name: "菜单名称",
sub_button: []
}
this.$set(this.menu.button,menuKeyLength,addButton)
this.menuClick(this.menuKeyLength-1, addButton)
},
//
addSubMenu(i,item){
if(!item.sub_button||item.sub_button.length<=0){
this.$set( item, 'sub_button',[])
this.$delete( item, 'type')
this.$delete( item, 'pagepath')
this.$delete( item, 'url')
this.$delete( item, 'key')
this.$delete( item, 'article_id')
this.$delete( item, 'textContent')
this.showConfigurContent = false
}
let subMenuKeyLength = item.sub_button.length;//key
let addButton = {
name: "子菜单名称"
}
this.$set(item.sub_button,subMenuKeyLength,addButton);
this.subMenuClick(item.sub_button[subMenuKeyLength], i, subMenuKeyLength)
},
//
deleteMenu(obj){
let _this = this;
this.$confirm('确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
_this.deleteData();//
_this.tempObj = {};
_this.showRightFlag = false;
this.isActive = -1;
this.isSubMenuActive = -1;
}).catch(() => {
});
},
//
deleteData(){
//
if(this.tempSelfObj.grand == "1"){
this.menu.button.splice(this.tempSelfObj.index,1);
}
//
if(this.tempSelfObj.grand == "2"){
this.menu.button[this.tempSelfObj.index].sub_button.splice(this.tempSelfObj.secondIndex, 1);
}
this.$message({
type: 'success',
message: '删除成功!'
});
}
},
}
</script>
@ -589,30 +581,30 @@ div{
<!--</style>-->
<!--素材样式-->
<style lang="scss" scoped>
.pagination{
text-align: right;
margin-right: 25px;
}
.select-item{
width: 280px;
padding: 10px;
margin: 0 auto 10px auto;
border: 1px solid #eaeaea;
}
.select-item2{
padding: 10px;
margin: 0 auto 10px auto;
border: 1px solid #eaeaea;
}
.ope-row{
padding-top: 10px;
text-align: center;
}
.item-name{
font-size: 12px;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
text-align: center;
}
.pagination{
text-align: right;
margin-right: 25px;
}
.select-item{
width: 280px;
padding: 10px;
margin: 0 auto 10px auto;
border: 1px solid #eaeaea;
}
.select-item2{
padding: 10px;
margin: 0 auto 10px auto;
border: 1px solid #eaeaea;
}
.ope-row{
padding-top: 10px;
text-align: center;
}
.item-name{
font-size: 12px;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
text-align: center;
}
</style>