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> </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>
<div class="save_div"> <div class="save_div">
<!--<el-button class="save_btn" type="warning" size="small" @click="saveFun">保存菜单</el-button>--> <!--<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>
</div> </div>
<!--右边配置--> <!--右边配置-->
@ -75,9 +75,9 @@ SOFTWARE.
</div> </div>
<div> <div>
<span>菜单名称</span> <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>
<div v-if="showConfigurContent"> <div v-if="showConfigureContent">
<div class="menu_content"> <div class="menu_content">
<span>菜单内容</span> <span>菜单内容</span>
<el-select v-model="tempObj.type" clearable placeholder="请选择" class="menu_option"> <el-select v-model="tempObj.type" clearable placeholder="请选择" class="menu_option">
@ -129,8 +129,8 @@ SOFTWARE.
</div> </div>
</div> </div>
</div> </div>
<!--一进页面就显示的默认页面当点击左边按钮的时候就不显示了--> <!-- 一进页面就显示的默认页面当点击左边按钮的时候就不显示了-->
<div v-if="!showRightFlag" class="right"> <div v-else class="right">
<p>请选择菜单配置</p> <p>请选择菜单配置</p>
</div> </div>
</div> </div>
@ -138,12 +138,11 @@ SOFTWARE.
</template> </template>
<script> <script>
// import { save, saveAndRelease ,getList} from '@/api/wxmp/wxmenu'
import WxReplySelect from '@/views/mp/components/wx-news/main.vue' import WxReplySelect from '@/views/mp/components/wx-news/main.vue'
import WxNews 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 WxMaterialSelect from '@/views/mp/components/wx-news/main.vue'
import {getMenuList} from "@/api/mp/menu"; import { getMenuList } from "@/api/mp/menu";
import {getSimpleAccounts} from "@/api/mp/account"; import { getSimpleAccounts } from "@/api/mp/account";
export default { export default {
name: 'mpMenu', name: 'mpMenu',
@ -154,6 +153,7 @@ export default {
}, },
data(){ data(){
return { return {
// ======================== ========================
// //
loading: true, loading: true,
// //
@ -164,24 +164,28 @@ export default {
children: [], children: [],
}, },
showRightFlag:false, //
menu:{ // menu:{ //
button:[ button:[
] ]
}, },
// ======================== ========================
isActive: -1,// isActive: -1,//
isSubMenuActive: -1, // isSubMenuActive: -1, //
isSubMenuFlag: -1, // isSubMenuFlag: -1, //
// ======================== ========================
showRightFlag: false, //
nameMaxLength: 0, // 1 4 2 7
showConfigureContent: true, //
tempObj:{}, // tempObj:{}, //
tempSelfObj: { tempSelfObj: { // tempObjmenu
// tempObjmenu
}, },
visible2: false, // "" visible2: false, // ""
tableData:[], //, tableData:[], //,
menuName:'', menuName:'',
showConfigurContent:true,
nameMaxlength:0,//
menuOptions: [{ menuOptions: [{
value: 'view', value: 'view',
label: '跳转网页' label: '跳转网页'
@ -231,12 +235,6 @@ export default {
this.getList(); this.getList();
}) })
}, },
computed: {
menuKeyLength:function() {
// menuObj 3
return this.menu.button.length;
}
},
methods: { methods: {
// ======================== ======================== // ======================== ========================
/** 设置账号编号 */ /** 设置账号编号 */
@ -271,34 +269,92 @@ export default {
this.handleQuery() this.handleQuery()
}, },
// TODO // ======================== ========================
//
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); //
deleteTempObj(){ //
this.$delete(this.tempObj,'repName') this.isActive = i; //
this.$delete(this.tempObj,'repUrl') this.isSubMenuFlag = i; //
this.$delete(this.tempObj,'content') this.isSubMenuActive = -1; //
}, },
openMaterial(){ //
this.dialogNewsVisible = true 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; //
}, },
selectMaterial(item){ //
if(item.content.articles.length>1){ addMenu(){
this.$alert('您选择的是多图文,将默认跳转第一篇', '提示', { const menuKeyLength = this.menuList.length;
confirmButtonText: '确定' const addButton = {
}) name: "菜单名称",
children: []
} }
this.dialogNewsVisible = false this.$set(this.menuList, menuKeyLength, addButton)
this.tempObj.article_id = item.articleId this.menuClick(this.menuKeyLength - 1, addButton)
this.tempObj.mediaName = item.name
this.tempObj.url = item.url
item.mediaType = this.tempObj.mediaType
item.content.articles = item.content.articles.slice(0,1)
this.tempObj.content = item.content
}, },
handleClick(tab, event){ // item
this.tempObj.mediaType = tab.name 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)
}, },
saveAndReleaseFun(){ //
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('确定要保证并发布该菜单吗?', '提示', { this.$confirm('确定要保证并发布该菜单吗?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
@ -324,102 +380,38 @@ export default {
}).catch(() => { }).catch(() => {
}) })
}, },
// // Editor
menuClick(i, item){ resetEditor() {
this.hackResetWxReplySelect = false// this.hackResetEditor = false //
this.$nextTick(() => { this.$nextTick(() => {
this.hackResetWxReplySelect = true// this.hackResetEditor = 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){ // TODO
this.hackResetWxReplySelect = false//
this.$nextTick(() => { deleteTempObj(){
this.hackResetWxReplySelect = true// this.$delete(this.tempObj,'repName')
this.$delete(this.tempObj,'repUrl')
this.$delete(this.tempObj,'content')
},
openMaterial(){
this.dialogNewsVisible = true
},
selectMaterial(item){
if(item.content.articles.length>1){
this.$alert('您选择的是多图文,将默认跳转第一篇', '提示', {
confirmButtonText: '确定'
}) })
this.showRightFlag = true;// }
this.tempObj = subItem;// this.dialogNewsVisible = false
this.tempSelfObj.grand = "2";// this.tempObj.article_id = item.articleId
this.tempSelfObj.index = index;// this.tempObj.mediaName = item.name
this.tempSelfObj.secondIndex = k;// this.tempObj.url = item.url
this.isSubMenuActive = index + "" + k; // item.mediaType = this.tempObj.mediaType
this.isActive = -1;// item.content.articles = item.content.articles.slice(0,1)
this.showConfigurContent = true; this.tempObj.content = item.content
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> </script>
@ -589,30 +581,30 @@ div{
<!--</style>--> <!--</style>-->
<!--素材样式--> <!--素材样式-->
<style lang="scss" scoped> <style lang="scss" scoped>
.pagination{ .pagination{
text-align: right; text-align: right;
margin-right: 25px; margin-right: 25px;
} }
.select-item{ .select-item{
width: 280px; width: 280px;
padding: 10px; padding: 10px;
margin: 0 auto 10px auto; margin: 0 auto 10px auto;
border: 1px solid #eaeaea; border: 1px solid #eaeaea;
} }
.select-item2{ .select-item2{
padding: 10px; padding: 10px;
margin: 0 auto 10px auto; margin: 0 auto 10px auto;
border: 1px solid #eaeaea; border: 1px solid #eaeaea;
} }
.ope-row{ .ope-row{
padding-top: 10px; padding-top: 10px;
text-align: center; text-align: center;
} }
.item-name{ .item-name{
font-size: 12px; font-size: 12px;
overflow: hidden; overflow: hidden;
text-overflow:ellipsis; text-overflow:ellipsis;
white-space: nowrap; white-space: nowrap;
text-align: center; text-align: center;
} }
</style> </style>