蓝缘基础框架项目-账号新增编辑

今天介绍下框架的账号新增与编辑,页面效果如下:
在这里插入图片描述
前端页面代码:

 $("#add").click("click", function() {//绑定新增按扭
      dialog = parent.$.ligerDialog.open({
        width : 300,
        height : 310,
        url : rootPath + '/background/account/addUI.html',
        title : "增加账号",
        isHidden:false   //关闭对话框时是否只是隐藏,还是销毁对话框
      });
    });

逻辑说明:

1、首先点击新增按钮,触发弹出新增账号页面对话框。

新增页面代码:

 <form name="form" id="form" action="${ctx}/background/account/add.html" method="post">
    <table style="width: 285px; height: 200px;">
      <tbody>
        <tr>
          <td class="l_right">账号名:</td>
          <td class="l_left">
          <div class="lanyuan_input">
          <input id='accountName' name="accountName" class="isNum" type="text" value="">
            </div></td>
        </tr>
        <tr>
          <td class="l_right">账号密码:</td>
          <td class="l_left">
          <div class="lanyuan_input">
          <input id='password'
            name="password" type="password" class="checkpass" value="">
            </div>
            </td>
        </tr>
        <tr>
          <td class="l_right">账号说明:</td>
          <td class="l_left">
          <div class="lanyuan_input">
          <input id='description'
            name="description" class="checkdesc" type="text" value="">
            </div>
            </td>
        </tr>
        <tr>
          <td class="l_right">账号状态:</td>
          <td class="l_left">
          <input id='state' name="state" value="1" type="radio" checked="checked"> 启用  
          <input id='state' name="state" value="0" type="radio"> 停用
            </td>
        </tr>
        <tr>
          <td colspan="2">
            <div class="l_btn_centent"> 
                <a class="btn btn-primary" href="javascript:void(0)"
                  id="saveWin_form" οnclick="saveWin();"><span>保存</span> </a> <a
                  class="btn btn-primary" href="javascript:void(0)" id="closeWin"
                  οnclick="closeWin()"><span>关闭</span> </a>
              </div>
            </td>
        </tr>
      </tbody>
    </table>
  </form>

说明如下:

1、定义form表单,定义账号输入参数。
2、点击关闭按钮,调用closeWin方法,触发窗口的关闭。
3、保存按钮触发saveWin 方法,触发账号的新增保存方法,提交前且触发表单的验证,若验证通过才会调用后端方法。
4、对于账号名还做了是否存在的校验,保证数据库账号不重名。

表单验证如下:

 $("form").validate({
      submitHandler : function(form) {//必须写在验证前面,否则无法ajax提交
        $(form).ajaxSubmit({//验证新增是否成功
          type : "post",
          dataType:"json",
          success : function(data) {
            if (data.flag == "true") {
              $.ligerDialog.success('提交成功!', '提示', function() {
                //这个是调用同一个页面趾两个iframe里的js方法
                //account是iframe的id
                parent.account.loadGird();
                closeWin();
              });
              //parent.window.document.getElementById("username").focus();
            } else {
              $.ligerDialog.warn("提交失败!!");
            }
          }
        });
      },
      rules : {
        accountName : {
        required : true,
        remote:{ //异步验证是否存在
          type:"POST",
          url: rootPath + '/background/account/isExist.html',
          data:{
            name:function(){return $("#accountName").val();}
           }
          }
        },
        state : {
          required : true
        }
      },
      messages : {
        accountName : {
          required : "请输入账号",
            remote:"该账号已经存在"
        },
        state : {
          required : "选择状态"
        }
      },
      errorPlacement : function(error, element) {//自定义提示错误位置
        $(".l_err").css('display','block');
        //element.css('border','3px solid #FFCCCC');
        $(".l_err").html(error.html());
      },
      success: function(label) {//验证通过后
        $(".l_err").css('display','none');
      }
    });

jQuery.validator.addMethod("checkpass", function(value, element) {
   return this.optional(element) || ((value.length <= 16) && (value.length>=6));
}, "密码由6至16位字符组合构成");
    

后端处理代码如下:

 /**
   * 新增账号
   */
  @RequestMapping("add")
  @ResponseBody
  public Map<String, Object> add(Account account) {
    Map<String, Object> map = new HashMap<String, Object>();
    try {
      account.setPassword(Md5Tool.getMd5(account.getPassword()));
      accountService.add(account);
      map.put("flag", true);
    } catch (Exception e) {
      map.put("flag", false);
    }
    return map;
  }

说明:

1、对密码进行md5加密保存。
2、创建时间采用数据库脚本自动填充的方式实现:赋值当前时间戳默认值填充方式。
3、删除状态同理也是采用这种方式。默认是0:正常状态。

mapper写法如下:

 <!-- 增加用户 -->
  <insert id="add" parameterType="com.lanyuan.entity.Account">
    INSERT INTO sys_account (
    accountName,
    password,
    description,
    state )
    VALUES (#{accountName},
    #{password}, #{description},
    #{state})
  </insert>

账号的编辑逻辑页面如下:

 $("#editView").click("click", function() {//绑定编辑按扭
      var cbox=grid.getSelectedCheckbox();
      if (cbox.length != 1) {
        parent.$.ligerDialog.alert("只能选中一个");
        return;
      }
      dialog = parent.$.ligerDialog.open({
        width : 300,
        height : 310,
        url : rootPath + '/background/account/editUI.html?accountId='+cbox,
        title : "修改账号",
        isHidden : false
      });
    });

说明:

1、编辑按钮绑定点击事件。
2、对于编辑只能选择一条,若否则提示错误。
3、选择一条记录后,打开编辑对话框。
4、在弹出对话框之前,需要上传accountId, 通过id查询账号信息,在编辑页面回显之前的数据。



$(function() {
   $("input:radio[value='${account.state}']").attr('checked','true');
});

<form name="form" id="form" action="${ctx}/background/account/update.html" method="post">
    <table style="width: 285px; height: 200px;">
      <tbody>
        <tr>
          <td class="l_right">账号名:</td>
          <td class="l_left">
          <input id='id' name="id" type="hidden" value="${account.id}">
          ${account.accountName}</td>
        </tr>
        <tr>
          <td class="l_right">账号密码:</td>
          <td class="l_left">
          <div class="lanyuan_input">
          <input id='password'
            name="password" type="password" class="checkpass">
            </div>
            </td>
        </tr>
        <tr>
          <td class="l_right">说明:</td>
          <td class="l_left">
          <div class="lanyuan_input">
          <input id='description'
            name="description" type="text" class="checkdesc" value="${account.description}">
            </div>
            </td>
        </tr>
        <tr>
          <td class="l_right">账号状态:</td>
          <td class="l_left">
          <input id='state' name="state" value="1" type="radio"> 启用  
          <input id='state' name="state" value="0" type="radio"> 停用
            </td>
        </tr>
        <tr>
          <td colspan="2">
            <div class="l_btn_centent">
                <!-- saveWin_form   from是表单Id-->
                <a class="btn btn-primary" href="javascript:void(0)"
                  id="saveWin_form" onclick="saveWin();"><span>保存</span> </a> <a
                  class="btn btn-primary" href="javascript:void(0)" id="closeWin"
                  onclick="closeWin()"><span>关闭</span> </a>
              </div>
          </td>
        </tr>
      </tbody>
    </table>
  </form>

说明:

1、这里的密码不回显,其他属性在编辑状态下,回显之前的数据。
2、关闭按钮的逻辑与新增一样。保存也差不多,这里的保存调用后端的是更新的逻辑。
3、后端更新时对密码需要重新md5加密保存到数据库。
4、账号状态的回显采用的是初始化js的方式处理。

/**
   * 更新账号
   */
  @ResponseBody
  @RequestMapping("update")
  public Map<String, Object> update(Model model, Account account) {
    Map<String, Object> map = new HashMap<String, Object>();
    try { 
      account.setPassword(Md5Tool.getMd5(account.getPassword()));
      accountService.update(account);
      map.put("flag", true);
    } catch (Exception e) {
      map.put("flag", false);
    }
    return map;
  }
 <update id="update" parameterType="com.lanyuan.entity.Account">
    UPDATE sys_account
    <set>
      <if test="accountName != null and accountName != ''">
        accountName=#{accountName},
      </if>
      <if test="password != null and password != ''">
        password=#{password},
      </if>
      <if test="description != null and description != ''">
        description=#{description},
      </if>
      <if test="state != null and state != ''">
        state=#{state},
      </if>
      <if test="createTime != null and createTime != ''">
        createTime=#{createTime}
      </if>
    </set>
    WHERE id=#{id}
  </update>

在这里插入图片描述

软件定制及其他业务
请加微信号:13128600812

公众号:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张先生程序猿

谢谢您的打赏,我会持续创作下去

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值