static->admin->js->base.js
$(function () {
    baseApp.init();
})
var baseApp = {
    init: function () {
        this.initAside()
        this.confirmDelete()
        this.resizeIframe()
        this.changeStatus()
        this.changeNum()
    },
    initAside: function () {
        $('.aside h4').click(function () {
            $(this).siblings('ul').slideToggle();
        })
    },
    //设置iframe的高度
    resizeIframe: function () {
        $("#rightMain").height($(window).height() - 80)
    },
    // 删除提示
    confirmDelete: function () {
        $(".delete").click(function () {
            var flag = confirm("您确定要删除吗?")
            return flag
        })
    },
    changeStatus: function () {
        $(".chStatus").click(function () {
            var id = $(this).attr("data-id")
            var table = $(this).attr("data-table")
            var field = $(this).attr("data-field")
            var el = $(this)
            $.get("/admin/changeStatus", { id: id, table: table, field: field }, function (response) {
                if (response.success) {
                    if (el.attr("src").indexOf("yes") != -1) {
                        el.attr("src", "/static/admin/images/no.gif")
                    } else {
                        el.attr("src", "/static/admin/images/yes.gif")
                    }
                }
            })
        })
    },
    changeNum: function () {
        /*
        1、获取el里面的值  var spanNum=$(this).html()


        2、创建一个input的dom节点   var input=$("<input value='' />");


        3、把input放在el里面   $(this).html(input);


        4、让input获取焦点  给input赋值    $(input).trigger('focus').val(val);
        

        5、点击input的时候阻止冒泡 

                    $(input).click(function(e){
                        e.stopPropagation();                
                    })                    

        6、鼠标离开的时候给span赋值,并触发ajax请求

            $(input).blur(function(){
                var inputNum=$(this).val();
                spanEl.html(inputNum);
                触发ajax请求
                
            })
        */

        $(".chSpanNum").click(function () {
            // 1、获取el 以及el里面的属性值
            var id = $(this).attr("data-id")
            var table = $(this).attr("data-table")
            var field = $(this).attr("data-field")
            var num = $(this).html().trim()
            var spanEl = $(this)
            //2、创建一个input的dom节点   var input=$("<input value='' />");
            var input = $("<input style='width:60px'  value='' />");
            // 3、把input放在el里面   $(this).html(input);
            $(this).html(input);
            //4、让input获取焦点  给input赋值    $(input).trigger('focus').val(val);
            $(input).trigger("focus").val(num);
            //5、点击input的时候阻止冒泡 
            $(input).click(function (e) {
                e.stopPropagation();
            })
            //6、鼠标离开的时候给span赋值,并触发ajax请求
            $(input).blur(function () {
                var inputNum = $(this).val()
                spanEl.html(inputNum)
                //触发ajax请求
                $.get("/admin/changeNum", { id: id, table: table, field: field, num: inputNum }, function (response) {
                    console.log(response)
                })
            })
        })

    }
}

controllers->admin->main.go

package admin

import (
	"encoding/json"
	"fmt"
	"ginshop13/models"
	"net/http"

	"github.com/gin-contrib/sessions"
	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
)

type MainController struct{}

func (con MainController) Index(c *gin.Context) {
	//获取userinfo 对应的session
	session := sessions.Default(c)
	userinfo := session.Get("userinfo")
	//类型断言 来判断 userinfo是不是一个string
	userinfoStr, ok := userinfo.(string)

	if ok {
		//1、获取用户信息
		var userinfoStruct []models.Manager
		json.Unmarshal([]byte(userinfoStr), &userinfoStruct)

		//2、获取所有的权限
		accessList := []models.Access{}
		models.DB.Where("module_id=?", 0).Preload("AccessItem", func(db *gorm.DB) *gorm.DB {
			return db.Order("access.sort DESC")
		}).Order("sort DESC").Find(&accessList)

		//3、获取当前角色拥有的权限 ,并把权限id放在一个map对象里面
		roleAccess := []models.RoleAccess{}
		models.DB.Where("role_id=?", userinfoStruct[0].RoleId).Find(&roleAccess)
		roleAccessMap := make(map[int]int)
		for _, v := range roleAccess {
			roleAccessMap[v.AccessId] = v.AccessId
		}
		//4、循环遍历所有的权限数据,判断当前权限的id是否在角色权限的Map对象中,如果是的话给当前数据加入checked属性

		for i := 0; i < len(accessList); i++ {
			if _, ok := roleAccessMap[accessList[i].Id]; ok {
				accessList[i].Checked = true
			}
			for j := 0; j < len(accessList[i].AccessItem); j++ {
				if _, ok := roleAccessMap[accessList[i].AccessItem[j].Id]; ok {
					accessList[i].AccessItem[j].Checked = true
				}
			}
		}

		fmt.Printf("%#v", accessList)
		c.HTML(http.StatusOK, "admin/main/index.html", gin.H{
			"username":   userinfoStruct[0].Username,
			"accessList": accessList,
			"isSuper":    userinfoStruct[0].IsSuper,
		})
	} else {
		c.Redirect(302, "/admin/login")
	}

}

func (con MainController) Welcome(c *gin.Context) {
	c.HTML(http.StatusOK, "admin/main/welcome.html", gin.H{})
}

//公共修改状态的方法
func (con MainController) ChangeStatus(c *gin.Context) {
	id, err := models.Int(c.Query("id"))
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"success": false,
			"message": "传入的参数错误",
		})
		return
	}

	table := c.Query("table")
	field := c.Query("field")

	// status = ABS(0-1)   1

	// status = ABS(1-1)  0

	err1 := models.DB.Exec("update "+table+" set "+field+"=ABS("+field+"-1) where id=?", id).Error
	if err1 != nil {
		c.JSON(http.StatusOK, gin.H{
			"success": false,
			"message": "修改失败 请重试",
		})
		return
	}

	c.JSON(http.StatusOK, gin.H{
		"success": true,
		"message": "修改成功",
	})
}

//公共修改状态的方法
func (con MainController) ChangeNum(c *gin.Context) {
	id, err := models.Int(c.Query("id"))
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"success": false,
			"message": "传入的参数错误",
		})
		return
	}

	table := c.Query("table")
	field := c.Query("field")
	num := c.Query("num")

	err1 := models.DB.Exec("update "+table+" set "+field+"="+num+" where id=?", id).Error
	if err1 != nil {
		c.JSON(http.StatusOK, gin.H{
			"success": false,
			"message": "修改数据失败",
		})
	} else {
		c.JSON(http.StatusOK, gin.H{
			"success": true,
			"message": "修改成功",
		})
	}

}

  templates->admin->access->index.html

{{ define "admin/access/index.html" }}
{{ template "admin/public/page_header.html" .}}
               
    <!--
        列表展示
    -->
    <div class="table-responsive">
        <table class="table table-bordered">
            <thead>
                <tr>
                    <th>模块名称</th>
                    <th>节点类型</th>
                    <th>操作名称</th>
                    <th>操作地址</th>
                    <th>排序</th>
                    <th>描述</th>

                    <th class="text-center">操作</th>
                </tr>
            </thead>
            <tbody>

             {{range $key,$value := .accessList}}   
                <tr>
                    <td>{{$value.ModuleName}}</td>               
                    <td>
                        {{if eq $value.Type 1}}
                        模块
                        {{else if eq $value.Type 2}}
                        菜单
                        {{else}}
                        操作
                        {{end}}

                    </td>
                    <td>{{$value.ActionName}}</td>        
                    <td>{{$value.Url}}</td>    
                    <td> <span class="chSpanNum" data-id="{{$value.Id}}" data-table="access" data-field="sort">{{$value.Sort}}</span></td>    
                    <td>{{$value.Description}}</td>    
                    <td class="text-center">
                        <a href="/admin/access/edit?id={{$value.Id}}">修改</a> 
                        <a class="delete" href="/admin/access/delete?id={{$value.Id}}">删除</a>
                    </td>
                </tr>      
                
                
                    {{range $k,$v := $value.AccessItem}}
                    <tr>
                        <td> --{{$v.ModuleName}}</td>               
                        <td>

                            {{if eq $v.Type 1}}
                            模块
                            {{else if eq $v.Type 2}}
                            菜单
                            {{else}}
                            操作
                            {{end}}
                        </td>
                        <td>{{$v.ActionName}}</td>        
                        <td>{{$v.Url}}</td>    
                        <td><span class="chSpanNum" data-id="{{$v.Id}}" data-table="access" data-field="sort">{{$v.Sort}}</span></td>    
                        <td>{{$v.Description}}</td>    
                        <td class="text-center">
                            <a href="/admin/access/edit?id={{$v.Id}}">修改</a> 
                            <a class="delete" href="/admin/access/delete?id={{$v.Id}}">删除</a>
                        </td>
                    </tr>  
                    {{end}}   
                {{end}}   
            </tbody>
        </table>
    </div>

</body>
</html>

{{end}}

 

posted on 2022-10-16 18:53  KOA2后端  阅读(35)  评论(0)    收藏  举报