wangji 6 yıl önce
ebeveyn
işleme
fc09023a38
2 değiştirilmiş dosya ile 130 ekleme ve 40 silme
  1. 88 26
      src/jy/admin/user.go
  2. 42 14
      src/web/templates/admin/rolemenu.html

+ 88 - 26
src/jy/admin/user.go

@@ -8,10 +8,10 @@ import (
 	"time"
 	"github.com/gin-gonic/gin"
 	"github.com/gin-contrib/sessions"
-	"strconv"
 	"gopkg.in/mgo.v2/bson"
 	qu "qfw/util"
 	"encoding/json"
+	"strconv"
 )
 
 func init() {
@@ -75,7 +75,7 @@ func SecondMenuData(c *gin.Context) {
 	maps:=map[string]interface{}{
 		"menuid":_id,
 	}
-	data, _ := Mgo.Find("secondmenu",maps, nil, nil, false, -1, -1)
+	data, _ := Mgo.Find("menusecond",maps, nil, nil, false, -1, -1)
 	c.JSON(200, gin.H{"data": data})
 }
 func RoleMenuData(c *gin.Context) {
@@ -90,7 +90,7 @@ func RoleMenuData(c *gin.Context) {
 		maps:=map[string]interface{}{
 			"menuid": _id,
 		}
-		count, _ := Mgo.Find("secondmenu",maps, nil, nil, false, -1, -1)
+		count, _ := Mgo.Find("menusecond",maps, nil, nil, false, -1, -1)
 		if len(*count)!=0{
 			value["secondmenu"]=true
 		}else{
@@ -103,10 +103,13 @@ func RoleMenuData(c *gin.Context) {
 func RoleMenuSave(c *gin.Context){
 	menu,_:=c.GetPostForm("menu")
 	secondmenuStr, _ := c.GetPostForm("secondmenuStr")
+	secondmenuStr2, _ := c.GetPostForm("secondmenuStr2")
 	role,_:=c.GetPostForm("role")
 	secondmenus := make([]string, 0)
+	secondmenus2 := make([]string, 0)
 	err := json.Unmarshal([]byte(secondmenuStr), &secondmenus)
-	if err == nil && len(secondmenus) > 0 {
+	err2 := json.Unmarshal([]byte(secondmenuStr2), &secondmenus2)
+	if err == nil && err2==nil {
 		for _, v := range secondmenus {
 			maps:=map[string]interface{}{
 				"_id":bson.ObjectIdHex(v),
@@ -117,28 +120,76 @@ func RoleMenuSave(c *gin.Context){
 			data2:=map[string]interface{}{
 				"$set":data,
 			}
-			Mgo.Update("secondmenu", maps, data2, true, false)
+			Mgo.Update("menusecond", maps, data2, true, false)
+		}
+		for _, v := range secondmenus2 {
+			maps:=map[string]interface{}{
+				"_id":bson.ObjectIdHex(v),
+			}
+			data:=map[string]interface{}{
+				"role."+role:false,
+			}
+			data2:=map[string]interface{}{
+				"$set":data,
+			}
+			Mgo.Update("menusecond", maps, data2, true, false)
 		}
 	}
-	maps:=map[string]interface{}{
-		"_id":bson.ObjectIdHex(menu),
-	}
-	data:=map[string]interface{}{
-		"role."+role:true,
+	b:=false
+	if (len(secondmenus)==0 && len(secondmenus2)==0)||(len(secondmenus)>0){
+		maps:=map[string]interface{}{
+			"_id":bson.ObjectIdHex(menu),
+		}
+		data:=map[string]interface{}{
+			"role."+role:true,
+		}
+		data2:=map[string]interface{}{
+			"$set":data,
+		}
+		b=Mgo.Update("menu", maps, data2, true, false)
 	}
-	data2:=map[string]interface{}{
-		"$set":data,
+	if (len(secondmenus)==0 && len(secondmenus2)>0){
+		maps:=map[string]interface{}{
+			"_id":bson.ObjectIdHex(menu),
+		}
+		data:=map[string]interface{}{
+			"role."+role:false,
+		}
+		data2:=map[string]interface{}{
+			"$set":data,
+		}
+		b=Mgo.Update("menu", maps, data2, true, false)
 	}
-	b:=Mgo.Update("menu", maps, data2, true, false)
+
 	c.JSON(200, gin.H{"rep": b})
 }
 func RoleSelect(c *gin.Context){
 	menuid,_:=c.GetPostForm("_id")
-	maps := map[string]interface{}{
-		"menuid":menuid,
+	mark,_:=c.GetPostForm("mark")
+	role,_:=c.GetPostForm("role")
+	if mark==""{
+		maps := map[string]interface{}{
+			"menuid":menuid,
+		}
+		datas, _ := Mgo.Find("menusecond",maps, nil, nil, false, -1, -1)
+		c.JSON(200, gin.H{"data": datas})
+	}else{
+		maps := map[string]interface{}{
+			"menuid":menuid,
+			"role."+role:true,
+		}
+		data, _ := Mgo.Find("menusecond",maps, nil, nil, false, -1, -1)
+		maps2 := map[string]interface{}{
+			"menuid":menuid,
+			"role."+role:false,
+		}
+		names, _ := Mgo.FindById("menu",menuid,`{name:1}`)
+		name:=*names
+		name1:=name["name"]
+		data2, _ := Mgo.Find("menusecond",maps2, nil, nil, false, -1, -1)
+		c.JSON(200, gin.H{"name":name1,"data": data,"data2":data2})
 	}
-	datas, _ := Mgo.Find("secondmenu",maps, nil, nil, false, -1, -1)
-	c.JSON(200, gin.H{"data": datas})
+
 }
 func RoleSecondMenuData(c *gin.Context) {
 	role,_:=c.GetPostForm("role")
@@ -147,7 +198,7 @@ func RoleSecondMenuData(c *gin.Context) {
 		"menuid":_id,
 		"role."+role: true,
 	}
-	datas, _ := Mgo.Find("secondmenu",maps, nil, nil, false, -1, -1)
+	datas, _ := Mgo.Find("menusecond",maps, nil, nil, false, -1, -1)
 
 	c.JSON(200, gin.H{"data": datas})
 }
@@ -179,7 +230,7 @@ func Menu(c *gin.Context) {
 				"menuid":qu.BsonIdToSId(_id),
 			}
 		}
-		secdatas, _ := Mgo.Find("secondmenu", maps, nil, nil, false, -1, -1)
+		secdatas, _ := Mgo.Find("menusecond", maps, nil, nil, false, -1, -1)
 		secmenumap:=map[string]interface{}{}
 		for index,secdata:=range *secdatas{
 			secmenumap[strconv.Itoa(index+1)]=secdata
@@ -189,6 +240,7 @@ func Menu(c *gin.Context) {
 		}
 		list=append(list,value)
 	}
+
 	c.JSON(200, gin.H{"data": list,"role":role})
 }
 func MenuSave(c *gin.Context) {
@@ -203,6 +255,11 @@ func MenuSave(c *gin.Context) {
 			"name": name,
 			"href":   href,
 			"pic":  pic,
+			"role":map[string]interface{}{
+				"0":false,
+				"1":false,
+				"2":false,
+			},
 		}
 		b:=Mgo.Save("menu",data)
 		c.JSON(200, gin.H{"rep": b})
@@ -237,8 +294,13 @@ func SecondMenuSave(c *gin.Context) {
 			"href":   href,
 			"pic":  pic,
 			"menuid":menuid,
+			"role":map[string]interface{}{
+				"0":false,
+				"1":false,
+				"2":false,
+			},
 		}
-		b:=Mgo.Save("secondmenu",data)
+		b:=Mgo.Save("menusecond",data)
 		c.JSON(200, gin.H{"rep": b})
 	}else {
 		data = map[string]interface{}{
@@ -252,7 +314,7 @@ func SecondMenuSave(c *gin.Context) {
 		maps:=map[string]interface{}{
 			"_id":bson.ObjectIdHex(_id),
 		}
-		b := Mgo.Update("secondmenu",maps, data2, true, false)
+		b := Mgo.Update("menusecond",maps, data2, true, false)
 		c.JSON(200, gin.H{"rep": b})
 	}
 
@@ -286,7 +348,7 @@ func MenuSearchById(c *gin.Context) {
 }
 func SecondMenuSearchById(c *gin.Context) {
 	_id, _ := c.GetPostForm("_id")
-	data, _ := Mgo.FindById("secondmenu", _id, nil)
+	data, _ := Mgo.FindById("menusecond", _id, nil)
 	c.JSON(200, gin.H{"rep": data})
 }
 
@@ -302,7 +364,7 @@ func MenuDel(c *gin.Context) {
 }
 func SecondMenuDel(c *gin.Context) {
 	_id, _ := c.GetPostForm("_id")
-	b := Mgo.Del("secondmenu", `{"_id":"`+_id+`"}`)
+	b := Mgo.Del("menusecond", `{"_id":"`+_id+`"}`)
 	c.JSON(200, gin.H{"rep": b})
 }
 func RoleMenuDel(c *gin.Context) {
@@ -321,13 +383,13 @@ func RoleMenuDel(c *gin.Context) {
 	maps=map[string]interface{}{
 		"menuid":_id,
 	}
-	count,_:=Mgo.Find("secondmenu",maps,nil,nil,false,-1,-1)
+	count,_:=Mgo.Find("menusecond",maps,nil,nil,false,-1,-1)
 	if len(*count)!=0{
 		for _,c:=range *count{
 			maps=map[string]interface{}{
 				"_id":c["_id"],
 			}
-			Mgo.Update("secondmenu", maps, data2, true, false)
+			Mgo.Update("menusecond", maps, data2, true, false)
 		}
 
 	}
@@ -345,7 +407,7 @@ func RoleSecondMenuDel(c *gin.Context) {
 	data2:=map[string]interface{}{
 		"$set":data,
 	}
-	b := Mgo.Update("secondmenu", maps, data2, true, false)
+	b := Mgo.Update("menusecond", maps, data2, true, false)
 	c.JSON(200, gin.H{"rep": b})
 }
 func UserUppwd(c *gin.Context) {

+ 42 - 14
src/web/templates/admin/rolemenu.html

@@ -53,7 +53,6 @@
                             <thead>
                             <tr>
                                 <th>一级菜单</th>
-                                <th>二级菜单</th>
                                 <th>操作</th>
                             </tr>
                             </thead>
@@ -115,6 +114,7 @@
             </div>
             <!-- /.modal-content -->
         </form>
+        <input type="hidden" id="_id">
     </div>
     <!-- /.modal-dialog -->
 </div>
@@ -144,26 +144,20 @@
             "columns": [
                 { "data": "name",render:function(val,a,row){
                         return row.name}},
-                {"data":"_id",render:function (val,a,row) {
-                        if (row.secondmenu) {
-                            role={{.role}}
-                            return '<a class="btn btn-sm btn-success" href="/admin/role/secondmenu?_id=' + row._id + '&role='+role+'">进入二级菜单</a>'
-                        }else{
-                            return "无二级菜单"
-                        }
-                }},
                 {"data":"_id",render:function(val,a,row){
-                        return "<a href='#' onclick='del(\""+val+"\")'><i class='fa fa-fw fa-trash text-red'></i></a>"
+                        return "<a href='#' onclick='edit(\""+val+"\")'><i class='fa fa-fw fa-edit text-yellow'></i></a> &nbsp;"+
+                        "<a href='#' onclick='del(\""+val+"\")'><i class='fa fa-fw fa-trash text-red'></i></a>"
                     }}
             ]
         });
         //ttable.on('init.dt', function () {});
     })
     function menu() {
-        console.log($("#menu2").val())
+        console.log($("#_id").val())
         $("#select3").empty();
         $("#select4").empty();
         $.post("/admin/role/select",{"_id":$("#menu2").val()},function (data,status) {
+            console.log(data)
             if(data.data){
                 for(var a=0;a<data.data.length;a++){
                     $("#select3").append("<option title='"+data.data[a].name+"' value='"+data.data[a]._id+"'>"+data.data[a].name+"</option>");
@@ -172,20 +166,25 @@
         })
     }
     function save(){
-        menu=$("#menu2").val()
+        menuid=$("#menu2").val()
         var clearArr = [];
+        var clearArr2 = [];
         $("#select4 option").each(function(i,val){
             clearArr[i] = this.value
         })
+        $("#select3 option").each(function(i,val){
+            clearArr2[i] = this.value
+        })
         var secondmenuStr = JSON.stringify(clearArr)
-        if(menu == ""){
+        var secondmenuStr2 = JSON.stringify(clearArr2)
+        if(menuid == ""){
             alert("表单填写不完整!");
             return false;
         }
         $.ajax({
             url:"/admin/role/menu/save",
             type:"post",
-            data:{"role":{{.role}},"menu":menu,"secondmenuStr":secondmenuStr},
+            data:{"role":{{.role}},"menu":menuid,"secondmenuStr":secondmenuStr,"secondmenuStr2":secondmenuStr2},
             success:function(r){
                 if(r.rep){
                     $("#userform")[0].reset();
@@ -213,11 +212,40 @@
             })
         });
     }
+    function edit(_id){
+        $("#menu2").empty()
+        $("#select3").empty();
+        $("#select4").empty();
+        $("#_id").val(_id)
+        mark=$("#_id").val()
+        console.log(mark)
+        $.ajax({
+            url:"/admin/role/select",
+            type:"post",
+            data:{"_id":_id,"mark":mark,"role":{{.role}}},
+            success:function(r){
+                console.log(r)
+                if(r){
+                    $("#menu2").append("<option value="+_id+">"+r.name+"</option>")
+                    $("#menu2").attr("disabled",true);
+                    for(var a=0;a<r.data2.length;a++){
+                        $("#select3").append("<option title='"+r.data2[a].name+"' value='"+r.data2[a]._id+"'>"+r.data2[a].name+"</option>");
+                    }
+                    for(var a=0;a<r.data.length;a++){
+                        $("#select4").append("<option title='"+r.data[a].name+"' value='"+r.data[a]._id+"'>"+r.data[a].name+"</option>");
+                    }
+                }
+            }
+        })
+        $("#modal-info").modal("show");
+    }
     function formReset(){
+        $("#_id").val("")
         $("#menu2").empty()
         $("#select3").empty();
         $("#select4").empty();
         $("#menu2").append("<option value=''>--请选择--</option>")
+        $("#menu2").attr("disabled",false);
         $.post("/admin/menu/data",'',function (data,status) {
             for(var a=0;a<data.data.length;a++) {
                 console.log(a)