瀏覽代碼

no message

Jianghan 3 年之前
父節點
當前提交
7faeb2e4d4

+ 4 - 4
src/front/front.go

@@ -81,12 +81,12 @@ type Front struct {
 	groupUserTaskList    xweb.Mapper `xweb:"/front/group/user/task/list"`  //用户组下用户任务列表
 
 	//mark
-	dataMark xweb.Mapper `xweb:"/front/data/mark"` //数据标注
-
-	//check
-
 	remarkList   xweb.Mapper `xweb:"/front/user/remark/list"`
 	remarkDetail xweb.Mapper `xweb:"/front/user/remark/detail"`
+	dataMark     xweb.Mapper `xweb:"/front/data/mark"` //数据标注
+
+	//check
+	checkList xweb.Mapper `xweb:"/front/user/check/list"`
 }
 
 func (f *Front) Index() {

+ 46 - 0
src/front/remark.go

@@ -534,3 +534,49 @@ func GetNextDataId(id, coll string) string {
 	}
 	return id
 }
+
+func (f *Front) CheckList() {
+	qu.Catch()
+	user := f.GetSession("user").(map[string]interface{})
+	s_role := qu.ObjToString(user["i_role"])
+	s_personid := qu.ObjToString(user["id"])
+	if f.Method() == "POST" {
+		start, _ := f.GetInteger("start")
+		limit, _ := f.GetInteger("length")
+		draw, _ := f.GetInteger("draw")
+		status := f.GetString("s_status")
+		searchStr := f.GetString("search[value]")
+		search := strings.TrimSpace(searchStr)
+		query := map[string]interface{}{
+			"s_stype": "user",
+		}
+		if s_role != "0" && s_role != "1" {
+			query["s_personid"] = s_personid
+		}
+		if status != "-1" { //任务状态
+			query["s_status"] = status
+		}
+		if search != "" {
+			query["$or"] = []interface{}{
+				map[string]interface{}{"s_projectname": map[string]interface{}{"$regex": search}},
+			}
+		}
+		qu.Debug("Query:", query)
+		count := util.Mgo.Count(util.TASKCOLLNAME, query)
+		list, _ := util.Mgo.Find(util.TASKCOLLNAME, query, map[string]interface{}{"_id": -1}, nil, false, start, limit)
+		for _, l := range *list {
+			if status := qu.ObjToString(l["s_status"]); status == "进行中" { //更新任务进度
+				giveNum := qu.IntAll(l["i_givenum"])
+				sourceinfo := qu.ObjToString(l["s_sourceinfo"])
+				tagNum := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_usertaskid": mgo.BsonIdToSId(l["_id"]), "b_istag": true})
+				progressFloat := float64(tagNum) / float64(giveNum)
+				value, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", progressFloat), 64)
+				progress := fmt.Sprint(value*100) + "%"
+				l["s_progress"] = progress
+			}
+		}
+		f.ServeJson(map[string]interface{}{"draw": draw, "data": *list, "recordsFiltered": count, "recordsTotal": count})
+	} else {
+		_ = f.Render("project/check_list.html")
+	}
+}

+ 133 - 0
src/web/templates/project/check_list.html

@@ -0,0 +1,133 @@
+{{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="#"><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 id="status-div" class="col-xs-1" style="width: auto;float:right;">
+                            <label for="statusSelect">状态:
+                                <select class="form-control selectpicker" id="statusSelect">
+                                    <option value="-1">全部</option>
+                                    <option value="未开始">未开始</option>
+                                    <option value="进行中">进行中</option>
+                                    <option value="已完成">已完成</option>
+                                    <option value="已关闭">已关闭</option>
+                                </select></label>
+                        </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>
+                            </tr>
+                            </thead>
+                        </table>
+                    </div>
+                    <!-- /.box-body -->
+                </div>
+                <!-- /.box -->
+            </div>
+        </div>
+    </section>
+</div>
+
+{{include "com/footer.html"}}
+<script>
+    menuActive("/front/user/task/list");
+
+    $(function () {
+        ttable = $('#dataTable').dataTable({
+            "paging": true,
+            "lengthChange": false,
+            "searching": true,
+            "ordering": false,
+            "info": true,
+            "autoWidth": false,
+            "serverSide": true,
+            "ajax": {
+                "url": "/front/user/check/list",
+                "type": "post"
+            },
+            "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": null, width: "1%"},
+                {"data": "s_projectname", width: "6%"},
+                {"data": "i_givenum", width: "3%"},
+                {"data": "s_status", width: "4%"},
+                {"data": "s_progress", width: "4%"},
+                {"data": "i_starttime", width: "4%", render: function (val) {
+                        if (val === undefined) {
+                            return "未开始"
+                        }else {
+                            var dt = new Date()
+                            dt.setTime(parseInt(val) * 1000);
+                            return dt.format("yyyy-MM-dd hh:mm:ss")
+                        }
+                    }},
+                {"data": "i_completetime", width: "4%", render: function (val) {
+                        if (val === undefined) {
+                            return "未完成"
+                        }else {
+                            var dt = new Date()
+                            dt.setTime(parseInt(val) * 1000);
+                            return dt.format("yyyy-MM-dd hh:mm:ss")
+                        }
+                    }},
+                {
+                    "data": "_id", width: "11%", render: function (val, a, row, pos) {
+                        tmp = '<div>' +
+                            '<a class="btn btn-sm btn-primary" href="/front/user/remark/list?pid='+row.s_projectid+'&tid=' + val + '&s_sourceinfo='+row.s_sourceinfo+'">质检</a>&nbsp;&nbsp;' +
+                            // '<a class="btn btn-sm btn-primary" onclick="deliverTask(\'' + val + '\',\''+row.s_sourceinfo+'\',\'' + row.s_status + '\')">交付</a>&nbsp;&nbsp;' +
+                            '</div>';
+                        return tmp
+                    }
+                }
+            ],
+            "initComplete": function () {
+                $("#dataTable_filter").append($('#status-div'))
+            },
+            "fnServerParams": function (e) {
+                e.s_status = $("#statusSelect option:selected").val()
+            }
+        });
+        $('#statusSelect').on('changed.bs.select', function () {
+            ttable.api().ajax.reload();
+        })
+    });
+
+</script>

+ 2 - 1
src/web/templates/project/project_clear.html

@@ -77,7 +77,7 @@
                                     </div>
                                     <div class="col-xs-5 form-group">
                                         <label class="form-inline">操作:
-                                            <input type="button" class="btn btn-sm btn-primary" onclick="" value="标注">
+                                            <a type="button" class="btn btn-sm btn-primary" href="">标注</a>
                                             <input type="button" class="btn btn-sm btn-primary" onclick="dispatchTask('tag')" value="分发">
                                             <input type="button" class="btn btn-sm btn-primary" value="质检">
                                             <input type="button" class="btn btn-sm btn-primary" value="质检结果">
@@ -449,4 +449,5 @@
             showTip("操作不允许")
         }
     }
+
 </script>

+ 117 - 0
src/web/templates/project/remark_jy_list.html

@@ -0,0 +1,117 @@
+{{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/task/list"><i class="fa fa-dashboard"></i> 任务列表</a></li>
+            <li><a href="#"><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 id="status-div" class="col-xs-1" style="width: auto;float:right;">
+                            <label for="statusSelect">状态:
+                                <select class="form-control selectpicker" id="statusSelect">
+                                    <option value=-1>全部</option>
+                                    <option value=0>未标注</option>
+                                    <option value=1>已标注</option>
+                                </select></label>
+                        </div>
+                        <table id="dataTable" class="table table-bordered table-hover">
+                            <thead>
+                            <tr>
+                                <th></th>
+                                <th>状态</th>
+                                <th>标题</th>
+                            </tr>
+                            </thead>
+                        </table>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </section>
+</div>
+
+{{include "com/footer.html"}}
+<script>
+    menuActive("/front/user/task/list");
+
+    let tid = {{ .T.tid }}
+    let pid = {{ .T.pid }}
+    let sourceinfo = {{ .T.s_sourceinfo }}
+
+    $(function () {
+        ttable = $('#dataTable').dataTable({
+            "paging": true,
+            "lengthChange": false,
+            "searching": true,
+            "ordering": false,
+            "info": true,
+            "autoWidth": false,
+            "serverSide": true,
+            "ajax": {
+                "url": "/front/user/remark/list",
+                "type": "post",
+                "data": {"tid": tid, "s_sourceinfo": sourceinfo}
+            },
+            "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": null, width: "2%"},
+                {"data": "b_istag", width: "6%", render: function (val) {
+                        let tmp;
+                        if (val) {
+                            tmp = '<span style="display: inline-block;font-size:14px;color: green">已标注</span>'
+                        } else {
+                            tmp = '<span style="display: inline-block;font-size:14px;color: #428bca">未标注</span>'
+                        }
+                        return tmp
+                    }},
+                {"data": "v_baseinfo.title", render: function (val, index, row) {
+                        let tmp;
+                        if (row["b_istag"]) {
+                            tmp = '<a style="display: inline-block;cursor:pointer;font-size:16px;color: green" target="_blank" href="/front/user/remark/detail/?pid='+pid+'&tid=' + tid +'&did=' + row._id + '&s_sourceinfo='+sourceinfo+'">' + val + '</a>'
+                        } else {
+                            tmp = '<a style="display: inline-block;cursor:pointer;font-size:16px;color: #428bca" target="_blank" href="/front/user/remark/detail/?pid='+pid+'&tid=' + tid +'&did=' + row._id + '&s_sourceinfo='+sourceinfo+'">' + val + '</a>'
+                        }
+                        return tmp
+                    }}
+            ],
+            "initComplete": function () {
+                $("#dataTable_filter").append($('#status-div'))
+            },
+            "fnServerParams": function (e) {
+                e.i_ckdata = $("#statusSelect option:selected").val()
+            }
+        });
+        $('#statusSelect').on('changed.bs.select', function () {
+            ttable.api().ajax.reload();
+        })
+    });
+
+</script>