软件工程实践技术总结

222000329甘佳欣 学生 2023-06-07 17:26:09
这个作业属于哪个课程2023年福大-软件工程实践-W班
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标个人技术总结
其他参考文献《构建之法》

目录

  • 1.技术概述
  • 2.技术详述
  • 3.问题和解决过程
  • 4.总结
  • 5.参考文献

1.技术概述

在团队项目Sofu中,当修改用户信息中的邀请人信息时,由于只有注册时间早于该用户注册时间的用户才能够有邀请该用户的资格,并且这样的用户有很多,所以为方便管理员的修改,使用layui搜索下拉框进行选择

在这里插入图片描述

2.技术详述

  • 在普通下拉框的基础上,添加lay-search属性,实现搜索下拉框

    <div class="layui-form-item">
         <label class="layui-form-label required">邀请该用户的用户ID</label>
         <div class="layui-input-block">
             <select id="user_info_invitedby" name="invitedby" lay-verify="required" lay-search="" size="2" style="height: 100px">
                 <option value="">直接选择或搜索选择</option>
             </select>
         </div>
     </div>
    
  • 将要修改的用户id作为参数传递给后端

  • 后端按照对象数组的格式返回注册时间早于该用户的所有用户

  • 前端再创建下拉框的选项利用append方法循环添加到搜索下拉框

  • 表单重新渲染

    function get_invitedby(uid){
          $.ajax({
              url: "<?=$api_link[$page_name]; ?>",   //后台数据地址
              data:{
                  "act":"get_invitedby",
                  "uid":uid,
              },
              async : false,
              traditional:true,
              dataType : "json",
              timeout : 5000,
              success: function (data){
                  $('#user_info_invitedby').html("<option value=\"\">直接选择或搜索选择</option>");
                  for(var i = 0; i < data.data.length; i++){
                      $('#user_info_invitedby').append(new Option(data.data[i].showtext, data.data[i].value));
                  }
                  layui.form.render("select");
              },
              error : function(data){
                  //接口失败回调
                  layer.msg("接口失败",{icon: 2});
              }
          })
      }
    
  • 后端先通过前端传递过来的用户id搜索到该用户的注册时间

  • 再从用户表中搜索所有注册时间早于该用户的用户

  • 按照对象数组的格式返回至前端,其中对象中有两个字段:showtextvalue,分别代表下拉框选项的文字描述选项的值

    case("get_invitedby"):{
              $res = new Obj();
              $res -> data = [];
              $user = GET_OR_POST('uid', 0, null);
              if($user != null){
                  $sql = "SELECT * FROM ".$dbconfig["dbqz"] . "_" . "user" . " WHERE user_id = $user";
                  $result = $DB -> query($sql);
                  $temp = null;
                  if($result){
                      $num_result = $result -> num_rows;
                      if($num_result == 1){
                          $row=mysqli_fetch_assoc($result);
                          $temp = new User();
                          $temp -> uid = $row['user_id'];
                          $temp -> nickname = $row['nickname'];
                          $temp -> wx_openid = $row['wx_openid'];
                          $temp -> avatar = $row['avatar'];
                          $temp -> state = $row['state'];
                          $temp -> invitecode = $row['invitecode'];
                          $temp -> invitedby = $row['invitedby'];
                          $temp -> reg_time = $row['reg_time'];
                          $temp -> login_time = $row['login_time'];
                      }
                      else{
                          $res -> code = 201;
                          goto get_invitedby_out;
                      }
                  }
                  else{
                      $res -> code = -201;
                      goto get_invitedby_out;
                  }
                  
                  $sql = "SELECT * FROM ".$dbconfig["dbqz"] . "_" . "user" . " WHERE reg_time < '" . $temp -> reg_time . "'";
                  $result = $DB -> query($sql);
                  if($result){
                      $items = [];
                      $temp = new stdClass;
                      $temp -> showtext = "官方内推";
                      $temp -> value = 0;
                      $items[] = $temp;
                      unset($temp);
                      while($row=mysqli_fetch_assoc($result)){
                          $temp = new stdClass;
                          $temp -> showtext = $row['user_id'];
                          $temp -> value = $row['user_id'];
                          $items[] = $temp;
                          unset($temp);
                      }
                      $res -> data = $items;
                  }
                  else{
                      $res -> code = -202;
                  }
              }
              else{
                  $res -> code = -200;
              }
              $res -> code = 200;
          get_invitedby_out:
              echo json_encode($res);
              break;
          }
    
  • 流程图

    在这里插入图片描述

3.问题和解决过程

  • 未加入lay-search属性
    刚开始的时候,我由于粗心大意没有往select加入lay-search属性,我的下拉框一直停留在普通阶段,未出现搜索的功能,后面我仔细检查代码后才发现这个疏忽

    在这里插入图片描述

  • 搜索下拉框有时候不执行
    往搜索下拉框动态的添加完选项后,要再利用layui.form.render("select")进行下拉框的重新渲染,否则会出现搜索下拉框不执行

    在这里插入图片描述

  • 第一个用户被谁邀请
    设置一个官方内推的选项,所有的用户的邀请者都有这个选项

    在这里插入图片描述

    4.总结

    通过此技术的学习,让我了解到了原来不止有普通的下拉选择框,还有更高级的搜索下拉框,并且我还掌握了此技术结合后端的应用,让我觉得很有成就感。所以,不管是学习还是日常生活,我们都不能给自己设限,要去大胆尝试、创新,我们才能开拓出更丰富的天地

    5.参考文献

  • 下拉框不显示
  • 搜素下拉框
...全文
55 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

688

社区成员

发帖
与我相关
我的任务
社区描述
2023年福州大学软件工程实践课程W班的教学社区
软件工程团队开发软件构建 高校 福建省·福州市
社区管理员
  • FZU_SE_teacherW
  • 张书旖
  • 郭渊伟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧