Bläddra i källkod

Merge branch 'dev2.0' of http://192.168.3.207:8080/data_processing/data_validation into dev2.0

maxiaoshan 3 år sedan
förälder
incheckning
6e3bf21690

+ 33 - 13
src/front/front.go

@@ -23,18 +23,19 @@ type Front struct {
 	*xweb.Action
 	index xweb.Mapper `xweb:"/front/index"` //index页面
 	//user
-	login          xweb.Mapper `xweb:"/"`                        //登录页面
-	code           xweb.Mapper `xweb:"/code"`                    //获取图片验证码
-	logout         xweb.Mapper `xweb:"/front/logout"`            //注销
-	updatePwd      xweb.Mapper `xweb:"/front/updatepwd"`         //更新密码
-	userGroup      xweb.Mapper `xweb:"/front/group"`             //查所有用户组
-	userGroupNew   xweb.Mapper `xweb:"/front/group/new"`         //用户组新建
-	userGroupState xweb.Mapper `xweb:"/front/group/state"`       //用户组状态
-	userGroupDel   xweb.Mapper `xweb:"/front/group/del"`         //用户组删除
-	userManage     xweb.Mapper `xweb:"/front/group/user"`        //用户管理
-	userState      xweb.Mapper `xweb:"/front/group/user/state"`  //用户状态
-	userDel        xweb.Mapper `xweb:"/front/group/user/del"`    //用户删除
-	userModify     xweb.Mapper `xweb:"/front/group/user/modify"` // 修改用户信息
+	login              xweb.Mapper `xweb:"/"`                        //登录页面
+	code               xweb.Mapper `xweb:"/code"`                    //获取图片验证码
+	logout             xweb.Mapper `xweb:"/front/logout"`            //注销
+	updatePwd          xweb.Mapper `xweb:"/front/updatepwd"`         //更新密码
+	userGroup          xweb.Mapper `xweb:"/front/group"`             //查所有用户组
+	userGroupNew       xweb.Mapper `xweb:"/front/group/new"`         //用户组新建
+	userGroupState     xweb.Mapper `xweb:"/front/group/state"`       //用户组状态
+	userGroupStateBulk xweb.Mapper `xweb:"/front/group/bulks_setup"` //批量修改用户组状态
+	userGroupDel       xweb.Mapper `xweb:"/front/group/del"`         //用户组删除
+	userManage         xweb.Mapper `xweb:"/front/group/user"`        //用户管理
+	userState          xweb.Mapper `xweb:"/front/group/user/state"`  //用户状态
+	userDel            xweb.Mapper `xweb:"/front/group/user/del"`    //用户删除
+	userModify         xweb.Mapper `xweb:"/front/group/user/modify"` // 修改用户信息
 
 	//menu
 	menu           xweb.Mapper `xweb:"/front/menu"`            //查一级菜单
@@ -212,7 +213,6 @@ func (f *Front) UserGroupState() {
 	defer qu.Catch()
 	if f.Method() == "POST" {
 		data := GetPostForm(f.Request)
-		qu.Debug(data)
 		b := Mgo.UpdateById("s_group", qu.ObjToString(data["id"]), map[string]interface{}{"$set": map[string]interface{}{"i_state": data["state"]}})
 		f.ServeJson(map[string]interface{}{
 			"rep": b,
@@ -220,6 +220,26 @@ func (f *Front) UserGroupState() {
 	}
 }
 
+func (f *Front) UserGroupStateBulk() {
+	defer qu.Catch()
+	if f.Method() == "POST" {
+		data := GetPostForm(f.Request)
+		qu.Debug(data)
+		ids := strings.Split(qu.ObjToString(data["ids"]), ",")
+		for _, k := range ids {
+			b := Mgo.UpdateById("s_group", k, map[string]interface{}{"$set": map[string]interface{}{"i_state": data["state"]}})
+			if !b {
+				f.ServeJson(map[string]interface{}{
+					"rep": b,
+				})
+			}
+		}
+		f.ServeJson(map[string]interface{}{
+			"rep": true,
+		})
+	}
+}
+
 func (f *Front) UserGroupDel() {
 	defer qu.Catch()
 	if f.Method() == "POST" {

+ 3 - 0
src/front/project.go

@@ -42,6 +42,9 @@ func (f *Front) ProjectList() {
 		count := util.Mgo.Count(util.PROJECTCOLLNAME, query)
 		f.ServeJson(map[string]interface{}{"draw": draw, "data": *list, "recordsFiltered": count, "recordsTotal": count})
 	} else {
+		query := map[string]interface{}{"s_type": "tag"}
+		info, _ := util.Mgo.Find("v_field", query, nil, map[string]interface{}{"s_name": 1, "s_code": 1}, false, -1, -1)
+		f.T["fields"] = *info
 		_ = f.Render("project/project_list.html", &f.T)
 	}
 }

+ 1 - 1
src/front/user.go

@@ -46,7 +46,7 @@ func (f *Front) Login() {
 		//	return
 		//}
 		query := map[string]interface{}{
-			"s_name":     username,
+			"s_login":    username,
 			"s_password": passwordEn,
 		}
 		user, _ := Mgo.FindOne("s_user", query)

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 5 - 0
src/web/res/dist/css/bootstrap-select.min.css


+ 2 - 0
src/web/templates/com/inc.html

@@ -13,6 +13,7 @@
 	<link rel="stylesheet" href="/dist/css/AdminLTE.min.css">
 	<link rel="stylesheet" href="/dist/css/skins/skin-blue.min.css">
 	<link rel="stylesheet" href="/dist/css/bootstrap-switch.min.css" />
+	<link rel="stylesheet" href="/dist/css/bootstrap-select.min.css">
 	<link rel="stylesheet" href="/plugins/datepicker/bootstrap-datepicker.min.css">
 
 
@@ -34,6 +35,7 @@
 	<script src="/dist/js/bootstrap-switch.min.js"></script>
 	<script src="/plugins/datepicker/bootstrap-datepicker.min.js"></script>
 	<script src="/plugins/datepicker/bootstrap-datepicker.zh-CN.min.js"></script>
+	<script src="/js/bootstrap-select.min.js"></script>
 	<script src="/js/model.js"></script>
 	<script src="/js/com.js"></script>
 </head>

+ 437 - 0
src/web/templates/project/project_list.html

@@ -0,0 +1,437 @@
+{{include "com/inc.html"}}
+<!-- Main Header -->
+{{include "com/header.html"}}
+<!-- Left side column. 权限菜单 -->
+{{include "com/menu.html"}}
+<div class="content-wrapper">
+  <section class="content-header">
+    <h1>
+      <small></small>
+    </h1>
+    <ol class="breadcrumb">
+      <li><a href="/front/user"><i class="fa fa-dashboard"></i> 项目列表</a></li>
+    </ol>
+  </section>
+  <!-- Main content -->
+  <section class="content">
+    <div class="row">
+      <div class="col-xs-12">
+        <div class="box">
+          <div class="box-body">
+
+            <div class="form-horizontal">
+              <div class="box-body">
+                <div class="form-group">
+                  <label class="col-sm-1 control-label">状态</label>
+                  <div class="col-sm-2">
+                    <select class="form-control selectpicker" id="pushModelSelect">
+                      <option value=-1>全部</option>
+                      <option value=0>开启</option>
+                      <option value=1>关闭</option>
+                    </select>
+                  </div>
+                  <div class="col-sm-2">
+                    <a class="btn btn-sm btn-success margin-r-5" onclick="">查询</a>
+                    <a class="btn btn-sm btn-default" onclick="">取消</a>
+                  </div>
+                </div>
+
+                <div class="form-group" style="margin-left: 20px">
+                  <a class="btn btn-sm btn-success margin" onclick="createPro()"><i class="fa fa-fw fa-plus fa-lg"></i>新建</a>
+                </div>
+              </div>
+            </div>
+
+            <table id="dataTable" class="table table-bordered table-hover">
+              <thead>
+              <tr>
+                <th></th>
+                <th>公司名称</th>
+                <th>部门名称</th>
+                <th>规则名称</th>
+                <th>项目名称</th>
+                <th>售后人员</th>
+                <th>数据量</th>
+                <th>项目状态</th>
+                <th>完成进度</th>
+                <th>项目时间</th>
+                <th>操作</th>
+              </tr>
+              </thead>
+            </table>
+          </div>
+          <!-- /.box-body -->
+        </div>
+        <!-- /.box -->
+      </div>
+    </div>
+  </section>
+</div>
+
+
+<div class="modal fade" id="modal-create-project" tabindex="-1" role="dialog" aria-hidden="true">
+  <div class="modal-dialog" style="width: 30%">
+    <div class="modal-content">
+      <div class="modal-header">
+        <div class="modal-header">
+          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+          <div class="edit-info">
+            <span class="glyphicon glyphicon-alert" aria-hidden="true"></span>
+            <span class="h4">新建项目</span>
+          </div>
+          <div class="edit-form">
+            <hr>
+            <div class="form-group">
+              <label class="radio-inline">
+                <input type="radio" name="stype" value="coll" checked>数据库导入
+              </label>
+              <label class="radio-inline">
+                <input type="radio" name="stype" value="excel">Excel表导入
+              </label>
+            </div>
+            <form class="form-horizontal" enctype="multipart/form-data">
+              <div class="box-body">
+                <div class="form-group margin-bottom">
+                  <label class="col-sm-3 control-label"><span style="color:red;">* </span>项目名称</label>
+                  <div class="col-sm-5">
+                    <input type="text" class="form-control" id="project-name" placeholder="项目名称" required>
+                  </div>
+                </div>
+                <div id="import-coll">
+                  <h5><i class="glyphicon glyphicon-bookmark" style="color: #00c4ff;margin-right: 6px"></i>数据来源</h5>
+                  <div class="form-group">
+                    <label class="col-sm-3 control-label"><span style="color:red;">* </span>数据库名</label>
+                    <div class="col-sm-5">
+                      <input type="text" class="form-control" id="db-name" value="jyqyfw" readonly>
+                    </div>
+                  </div>
+                  <div class="form-group">
+                    <label class="col-sm-3 control-label"><span style="color:red;">* </span>数据表名</label>
+                    <div class="col-sm-5">
+                      <input type="text" class="form-control" id="coll-name" value="usermail_history" readonly>
+                    </div>
+                  </div>
+                  <div class="form-group">
+                    <label class="col-sm-3 control-label"><span style="color:red;">* </span>数据导出ID</label>
+                    <div class="col-sm-6">
+                      <input type="text" class="form-control" id="data-id" placeholder="数据导出ID" required>
+                    </div>
+                  </div>
+                </div>
+
+                <div id="import-excel" style="display: none">
+                  <h5><i class="glyphicon glyphicon-bookmark" style="color: #00c4ff;margin-right: 6px"></i>数据信息</h5>
+                  <div class="form-group">
+                    <label class="col-sm-3 control-label"><span style="color:red;">* </span>公司名称</label>
+                    <div class="col-sm-6">
+                      <input type="text" class="form-control" id="company-name" placeholder="公司名称" required>
+                    </div>
+                  </div>
+                  <div class="form-group">
+                    <label class="col-sm-3 control-label">部门名称</label>
+                    <div class="col-sm-6">
+                      <input type="text" class="form-control" id="dpart-name" placeholder="部门名称">
+                    </div>
+                  </div>
+                  <div class="form-group">
+                    <label class="col-sm-3 control-label">规则名称</label>
+                    <div class="col-sm-6">
+                      <input type="text" class="form-control" id="rule-name" placeholder="规则名称">
+                    </div>
+                  </div>
+                  <div class="form-group">
+                    <label class="col-sm-3 control-label">选择文件</label>
+                    <div class="col-sm-6">
+                      <input type="file" name="file" id="uploadfile">
+                    </div>
+                  </div>
+                </div>
+                <h5><i class="glyphicon glyphicon-bookmark" style="color: #00c4ff;margin-right: 6px"></i>数据存储</h5>
+                <div class="form-group">
+                  <label class="col-sm-3 control-label"><span style="color:red;">* </span>数据库名</label>
+                  <div class="col-sm-6">
+                    <input type="text" class="form-control" value="jyqykhfw" readonly>
+                  </div>
+                </div>
+                <div class="form-group">
+                  <label class="col-sm-3 control-label"><span style="color:red;">* </span>数据表名</label>
+                  <div class="col-sm-6">
+                    <input type="text" class="form-control" id="coll-save-name" placeholder="数据表名" required>
+                  </div>
+                </div>
+              </div>
+            </form>
+          </div>
+        </div>
+      </div>
+      <div class="modal-footer">
+        <input type="button" onclick="importData()" class="btn btn-primary saveBtn" value="导入">
+        <input type="button" onclick="cancelModel()" class="btn btn-default" value="取消">
+      </div>
+    </div>
+  </div><!-- /.modal -->
+</div>
+
+
+<div class="modal fade" id="modal-edit-project" tabindex="-1" role="dialog" aria-hidden="true">
+  <div class="modal-dialog" style="width: 30%">
+    <div class="modal-content">
+      <div class="modal-header">
+        <div class="modal-header">
+          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+          <div class="edit-info">
+            <span class="glyphicon glyphicon-alert" aria-hidden="true"></span>
+            <span class="h4">编辑项目</span>
+          </div>
+          <div class="edit-form">
+            <hr>
+            <form class="form-horizontal" enctype="multipart/form-data">
+              <div class="box-body">
+                <div class="form-group">
+                  <label class="col-sm-3 control-label">公司名称</label>
+                  <div class="col-sm-5">
+                    <input type="text" class="form-control" id="company-edit-name" readonly>
+                  </div>
+                </div>
+                <div class="form-group">
+                  <label class="col-sm-3 control-label">部门名称</label>
+                  <div class="col-sm-5">
+                    <input type="text" class="form-control" id="dpart-edit-name">
+                  </div>
+                </div>
+                <div class="form-group">
+                  <label class="col-sm-3 control-label">规则名称</label>
+                  <div class="col-sm-5">
+                    <input type="text" class="form-control" id="rule-edit-name">
+                  </div>
+                </div>
+                <div class="form-group">
+                  <label class="col-sm-3 control-label">售后人员</label>
+                  <div class="col-sm-6">
+                    <input type="text" class="form-control" id="edit-person">
+                  </div>
+                </div>
+                <div class="form-group">
+                  <label class="col-sm-3 control-label">选择标注字段</label>
+                  <div class="col-sm-6">
+                    <select class="form-control selectpicker" multiple id="markFieldSelect"></select>
+                  </div>
+                </div>
+              </div>
+            </form>
+          </div>
+        </div>
+      </div>
+      <div class="modal-footer">
+        <input type="button" onclick="saveData()" class="btn btn-primary saveBtn" value="保存">
+        <input type="button" onclick="cancelModel()" class="btn btn-default" value="取消">
+      </div>
+    </div>
+  </div><!-- /.modal -->
+</div>
+
+
+{{include "com/footer.html"}}
+<script>
+  menuActive("project");
+
+  let stype = "coll";
+  let fields = {{ .T.fields }}
+  let projectmap = {}
+
+  $(function () {
+    ttable = $('#dataTable').dataTable({
+      "paging": true,
+      "lengthChange": false,
+      "searching": true,
+      "ordering": false,
+      "info": true,
+      "autoWidth": false,
+      "serverSide": true,
+      "ajax": {
+        "url": "/front/project",
+        "type": "post",
+        "data": {}
+      },
+      "language": {
+        "url": "/dist/js/dataTables.chinese.lang"
+      },
+      "fnDrawCallback": function () {
+        $("ul.pagination").prepend("&nbsp;&nbsp;&nbsp;转到第 <input type='text' id='changePage'   style='width:20px;'> 页    <a type='text' href='javascript:void(0);' id='dataTable-btn' style='text-align:center'>GO</a>");
+        $('#dataTable-btn').click(function (e) {
+          var redirectpage = 0
+          if ($("#changePage").val() && $("#changePage").val() > 0) {
+            var redirectpage = $("#changePage").val() - 1;
+          }
+          ttable.page(redirectpage).draw(false);
+        });
+        this.api().column(0).nodes().each(function(cell, i) {
+            cell.innerHTML = i + 1;
+        });
+      },
+      "columns": [
+        {"data": "", width: "1%"},
+        {"data": "s_entname", width: "5%"},
+        {"data": "s_departname", width: "4%"},
+        {"data": "s_rulename", width: "4%"},
+        {"data": "s_name", width: "4%"},
+        {"data": "s_personname", width: "4%"},
+        {"data": "i_importnum", width: "4%"},
+        {"data": "s_status", width: "4%"},
+        {"data": "", width: "4%"},
+        {"data": "", width:"4%"},
+        {"data": "_id", width:"11%",render: function (val, a, row, pos) {
+            tmp = '<div>' +
+                    '<a class="btn btn-sm btn-primary" onclick="editPro(\''+pos.row+'\')">编辑</a>&nbsp;&nbsp;'+
+                    '<a class="btn btn-sm btn-primary" href="">合并</a>&nbsp;&nbsp;'+
+                    '<a class="btn btn-sm btn-info" onclick="del(\''+val+'\')">判重</a>&nbsp;&nbsp;'+
+                    '<a class="btn btn-sm btn-default" href="">导出</a>&nbsp;&nbsp;<br>'+
+                    '<a class="btn btn-sm btn-primary" href="">上传</a>&nbsp;&nbsp;'+
+                    '<a class="btn btn-sm btn-primary" href="">下载</a>&nbsp;&nbsp;'+
+                    '<a class="btn btn-sm btn-primary" href="">扣费</a>&nbsp;&nbsp;'+
+                    '<a class="btn btn-sm btn-danger" href="">删除</a>&nbsp;&nbsp;'+
+                    '</div>';
+            return tmp
+          }}
+      ]
+    });
+
+    $('input[type=radio][name=stype]').change(function() {
+      if (this.value === 'coll') {
+        stype = "coll"
+        $("#import-coll").attr("style", "display:block;")
+        $("#import-excel").attr("style", "display:none;")
+      }
+      else if (this.value === 'excel') {
+        stype = "excel"
+        $("#import-coll").attr("style", "display:none;")
+        $("#import-excel").attr("style", "display:block;")
+      }
+    });
+
+    for (var i in fields) {
+      var opt = document.createElement('option');
+      opt.innerText = fields[i]["s_name"];
+      opt.value = fields[i]["s_code"];
+      $('#markFieldSelect')[0].appendChild(opt)
+    }
+    $("#markFieldSelect").selectpicker("refresh");
+  });
+
+
+  function del(id) {
+    showConfirm("确定删除该用户组?", function() {
+      $.ajax({
+        url: "",
+        type: 'POST',
+        data: {"id": id},
+        success: function (r) {
+          if (r.rep) {
+            ttable.ajax.reload();
+          } else {
+            showTip("状态修改失败");
+          }
+        }
+      })
+    })
+  }
+
+  function createPro() {
+    $("#modal-create-project").modal('show')
+  }
+
+  function cancelModel() {
+    $("#modal-create-project").modal('hide')
+    $("#modal-edit-project").modal('hide')
+  }
+
+  function importData() {
+    projectmap["s_name"] = $('#project-name').val()
+    projectmap["s_sourceinfo"] = $('#coll-save-name').val()
+    projectmap["s_type"] = stype
+    if (stype === "coll") {
+      projectmap["s_historyid"] = $('#data-id').val()
+      $.ajax({
+        url: "/front/project/save",
+        type: 'POST',
+        data: projectmap,
+        success: function (r) {
+          if (r.rep) {
+            ttable.api().ajax.reload();
+          } else {
+            showTip("项目创建成功");
+          }
+        }
+      })
+    }else if (stype === "excel") {
+      let formData = new FormData();
+      let file = $('#uploadfile').files[0]
+      if (file) {
+        formData.append("file", file)
+        $.ajax({
+          url: "/front/project/save",
+          type: 'POST',
+          data: formData,
+          cache: false,
+          processData: false,
+          contentType: false,
+          success: function (r) {
+            if (r.rep) {
+              $("#modal-edit-project").modal('hide')
+              ttable.api().ajax.reload();
+            } else {
+              showTip("状态修改失败");
+            }
+          }
+        })
+      }else {
+        showTip("请选择上传文件");
+      }
+    }
+  }
+
+  function editPro(index) {
+    projectmap = ttable.fnGetData()[index]
+    console.log(projectmap)
+    $('#modal-edit-project').modal('show')
+    $('#company-edit-name').val(projectmap["s_entname"])
+    $('#rule-edit-name').val(projectmap["s_rulename"])
+    $('#dpart-edit-name').val(projectmap["s_departname"])
+  }
+
+  function saveData() {
+    stype = "edit"
+    let tmp = projectmap
+    tmp["s_entname"] = $('#company-edit-name').val()
+    tmp["s_rulename"] = $('#rule-edit-name').val()
+    tmp["s_departname"] = $('#dpart-edit-name').val()
+
+    let fieldArr = $('#markFieldSelect').val();
+    let m = {}
+    if (fieldArr.length > 0) {
+      for (const i in fields) {
+        if (fieldArr.indexOf(fields[i]["s_code"]) > -1) {
+          m[fields[i]["s_code"]] = fields[i]["s_name"]
+        }
+      }
+    }
+    tmp["v_field"] = m
+    if (tmp !== projectmap) {
+      $.ajax({
+        url: "/front/project/save",
+        type: 'POST',
+        data: projectmap,
+        success: function (r) {
+          if (r.rep) {
+            ttable.api().ajax.reload();
+          } else {
+            showTip("保存失败");
+          }
+        }
+      })
+    }else {
+      showTip("未做修改");
+    }
+  }
+
+</script>

+ 30 - 5
src/web/templates/user/user_group.html

@@ -42,8 +42,8 @@
 
                                 <div class="form-group" style="margin-left: 20px">
                                     <a class="btn btn-sm btn-success margin" href="/front/group/new"><i class="fa fa-fw fa-plus fa-lg"></i>新建用户组</a>
-                                    <a class="btn btn-sm btn-default margin" onclick="">批量开启</a>
-                                    <a class="btn btn-sm btn-default margin" onclick="">批量关闭</a>
+                                    <a class="btn btn-sm btn-default margin" onclick="bulkSetup(true)">批量开启</a>
+                                    <a class="btn btn-sm btn-default margin" onclick="bulkSetup(false)">批量关闭</a>
                                 </div>
                             </div>
                         </div>
@@ -72,8 +72,13 @@
 {{include "com/footer.html"}}
 <script>
     menuActive("group");
+
+    let selectIndex = [];               //选中的编号
+    let keyTableChecked = false;        //关键词表格数据是否有选中
+    let keyTableAllChecked = true;      //表单数据是否被全选中
+
     $(function () {
-        ttable = $('#dataTable').DataTable({
+        ttable = $('#dataTable').dataTable({
             "paging": true,
             "lengthChange": false,
             "searching": false,
@@ -177,11 +182,12 @@
     //表格全选
     function allSelect(obj) {
         if ($(obj).is(':checked')) {
+            selectIndex.length = 0;
             keyTableChecked = true;
             keyTableAllChecked = true;
             $('input[name="ckb-keyid"]').each(function () {
                 this.checked = true;
-                selectIndex.push($(this).parents("tr").index() + 1);
+                selectIndex.push(ttable.fnGetData()[$(this).parents("tr").index()]["_id"]);
             })
         } else {
             selectIndex.length = 0;
@@ -191,6 +197,8 @@
                 this.checked = false;
             })
         }
+
+        console.log(selectIndex)
     }
 
     //表格单个选中
@@ -200,7 +208,7 @@
         $('input[name="ckb-keyid"]').each(function () {
             if (this.checked) {
                 keyTableChecked = true;
-                selectIndex.push($(this).parents("tr").index() + 1);
+                selectIndex.push(ttable.fnGetData()[$(this).parents("tr").index()]["_id"]);
             }else {
                 tag = false
             }
@@ -212,6 +220,23 @@
             keyTableAllChecked = false;
             $('#allCheckbox').prop("checked", false);
         }
+
+        console.log(selectIndex)
+    }
+
+    function bulkSetup(val) {
+        $.ajax({
+            url: "/front/group/bulks_setup",
+            type: 'POST',
+            data: {"ids": selectIndex.toString(), "state": val},
+            success: function (r) {
+                if (r.rep) {
+                    ttable.api().ajax.reload()
+                } else {
+                    showTip("状态修改失败");
+                }
+            }
+        })
     }
 
 </script>

+ 3 - 3
src/web/templates/user/user_list.html

@@ -212,11 +212,12 @@
     //表格全选
     function allSelect(obj) {
         if ($(obj).is(':checked')) {
+            selectIndex.length = 0;
             keyTableChecked = true;
             keyTableAllChecked = true;
             $('input[name="ckb-keyid"]').each(function () {
                 this.checked = true;
-                selectIndex.push($(this).parents("tr").index() + 1);
+                selectIndex.push($(this).parents("tr").index());
             })
         } else {
             selectIndex.length = 0;
@@ -235,7 +236,7 @@
         $('input[name="ckb-keyid"]').each(function () {
             if (this.checked) {
                 keyTableChecked = true;
-                selectIndex.push($(this).parents("tr").index() + 1);
+                selectIndex.push($(this).parents("tr").index());
             }else {
                 tag = false
             }
@@ -262,7 +263,6 @@
 
     function modifySave() {
         let id = $("#user-id").val()
-        console.log(id)
         let name = $("#user-name").val()
         let phone = $("#user-contract").val()
         if (name !== "" || phone !== "") {

Vissa filer visades inte eftersom för många filer har ändrats