|
@@ -46,6 +46,8 @@ type Front struct {
|
|
reviewSave xweb.Mapper `xweb:"/center/reviewsave"`
|
|
reviewSave xweb.Mapper `xweb:"/center/reviewsave"`
|
|
reviewStat xweb.Mapper `xweb:"/center/review/result"`
|
|
reviewStat xweb.Mapper `xweb:"/center/review/result"`
|
|
reviewNext xweb.Mapper `xweb:"/center/review/next"`
|
|
reviewNext xweb.Mapper `xweb:"/center/review/next"`
|
|
|
|
+
|
|
|
|
+ logout xweb.Mapper `xweb:"/front/logout"`
|
|
}
|
|
}
|
|
|
|
|
|
var preKey = "ck_"
|
|
var preKey = "ck_"
|
|
@@ -100,8 +102,8 @@ func (i *Front) ListInfo() error {
|
|
queryfield := map[string]interface{}{
|
|
queryfield := map[string]interface{}{
|
|
"$exists": !hasno,
|
|
"$exists": !hasno,
|
|
}
|
|
}
|
|
|
|
+ numMap := map[string]interface{}{}
|
|
if field == "budget" || field == "bidamount" { //金额区间
|
|
if field == "budget" || field == "bidamount" { //金额区间
|
|
- numMap := map[string]interface{}{}
|
|
|
|
if min != "" {
|
|
if min != "" {
|
|
minint := qu.IntAll(min)
|
|
minint := qu.IntAll(min)
|
|
numMap["$gte"] = minint
|
|
numMap["$gte"] = minint
|
|
@@ -110,11 +112,22 @@ func (i *Front) ListInfo() error {
|
|
maxint := qu.IntAll(max)
|
|
maxint := qu.IntAll(max)
|
|
numMap["$lte"] = maxint
|
|
numMap["$lte"] = maxint
|
|
}
|
|
}
|
|
- if len(numMap) > 0 { //给定了区间,不再判断字段存在
|
|
|
|
- queryfield = numMap
|
|
|
|
|
|
+ //if len(numMap) > 0 { //给定了区间,不再判断字段存在
|
|
|
|
+ // queryfield = numMap
|
|
|
|
+ //}
|
|
|
|
+ }
|
|
|
|
+ if len(numMap) > 0 {
|
|
|
|
+ if !hasno {
|
|
|
|
+ query[field] = numMap
|
|
|
|
+ }else {
|
|
|
|
+ query["$or"] = []map[string]interface{}{
|
|
|
|
+ {field: queryfield},
|
|
|
|
+ {field: numMap},
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ }else {
|
|
|
|
+ query[field] = queryfield
|
|
}
|
|
}
|
|
- query[field] = queryfield
|
|
|
|
}
|
|
}
|
|
if fieldScreen && notag {
|
|
if fieldScreen && notag {
|
|
query[preKey+field] = map[string]interface{}{
|
|
query[preKey+field] = map[string]interface{}{
|
|
@@ -169,7 +182,6 @@ func (i *Front) CheckId() {
|
|
msg := ""
|
|
msg := ""
|
|
id := i.GetString("id")
|
|
id := i.GetString("id")
|
|
coll := i.GetSession("coll").(string)
|
|
coll := i.GetSession("coll").(string)
|
|
- qu.Debug(coll, id)
|
|
|
|
if coll != "" {
|
|
if coll != "" {
|
|
exists, err := redis.Exists("extcheck", coll+"_"+id)
|
|
exists, err := redis.Exists("extcheck", coll+"_"+id)
|
|
if err == nil {
|
|
if err == nil {
|
|
@@ -264,15 +276,15 @@ func (i *Front) Biaozhu() error {
|
|
loginuser := i.GetSession("loginuser").(string)
|
|
loginuser := i.GetSession("loginuser").(string)
|
|
coll := i.GetSession("coll").(string)
|
|
coll := i.GetSession("coll").(string)
|
|
data, _ := util.MgoM.FindById(coll, _id, nil) //查询标注保存前的原始信息
|
|
data, _ := util.MgoM.FindById(coll, _id, nil) //查询标注保存前的原始信息
|
|
- modifyuser := qu.ObjToString((*data)["modifyuser"])
|
|
|
|
|
|
+ //modifyuser := qu.ObjToString((*data)["modifyuser"])
|
|
//标注多次操作处理
|
|
//标注多次操作处理
|
|
if len(set) > 0 { //set中为本次标注保存的数据(ck_bidopentime:1;ck_buyer:2;buyer:"XXX")
|
|
if len(set) > 0 { //set中为本次标注保存的数据(ck_bidopentime:1;ck_buyer:2;buyer:"XXX")
|
|
for s, sv := range set {
|
|
for s, sv := range set {
|
|
//特殊字段处理
|
|
//特殊字段处理
|
|
- if s == "ck_pclistag" && (*data)["ck_pclistag"] != nil {
|
|
|
|
- delete(set, s)
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
|
|
+ //if s == "ck_pclistag" && (*data)["ck_pclistag"] != nil {
|
|
|
|
+ // delete(set, s)
|
|
|
|
+ // continue
|
|
|
|
+ //}
|
|
//区分是标记字段,还是普通字段(标记字段:ck_buyer;普通字段:buyer)
|
|
//区分是标记字段,还是普通字段(标记字段:ck_buyer;普通字段:buyer)
|
|
if strings.HasPrefix(s, preKey) {
|
|
if strings.HasPrefix(s, preKey) {
|
|
status := qu.IntAll(sv) //标注字段状态
|
|
status := qu.IntAll(sv) //标注字段状态
|
|
@@ -361,9 +373,7 @@ func (i *Front) Biaozhu() error {
|
|
if len(set) > 0 {
|
|
if len(set) > 0 {
|
|
set["ck_data"] = stype
|
|
set["ck_data"] = stype
|
|
set["updatetime"] = time.Now().Unix()
|
|
set["updatetime"] = time.Now().Unix()
|
|
- if modifyuser == "" {
|
|
|
|
- set["modifyuser"] = modifyuser
|
|
|
|
- }
|
|
|
|
|
|
+ set["modifyuser"] = loginuser
|
|
update["$set"] = set
|
|
update["$set"] = set
|
|
}
|
|
}
|
|
qu.Debug("unset---", unset)
|
|
qu.Debug("unset---", unset)
|
|
@@ -376,6 +386,7 @@ func (i *Front) Biaozhu() error {
|
|
if b {
|
|
if b {
|
|
if coll != util.Config.Fromtable && isSaveMarked { //util.coll此时的标注表 util.Config.Fromtable默认标注表
|
|
if coll != util.Config.Fromtable && isSaveMarked { //util.coll此时的标注表 util.Config.Fromtable默认标注表
|
|
data, _ := util.MgoM.FindById(coll, _id, nil)
|
|
data, _ := util.MgoM.FindById(coll, _id, nil)
|
|
|
|
+ delete(*data, "modifyuser")
|
|
if data != nil && len(*data) > 0 {
|
|
if data != nil && len(*data) > 0 {
|
|
update := map[string]interface{}{"$set": *data}
|
|
update := map[string]interface{}{"$set": *data}
|
|
if len(unset) > 0 {
|
|
if len(unset) > 0 {
|
|
@@ -413,7 +424,6 @@ func (i *Front) Detail(id string) error {
|
|
// return i.Render("err.html", &i.T)
|
|
// return i.Render("err.html", &i.T)
|
|
//}
|
|
//}
|
|
query, _ := i.GetSession("query").(map[string]interface{})
|
|
query, _ := i.GetSession("query").(map[string]interface{})
|
|
- qu.Debug(coll, query)
|
|
|
|
rep := getDetail(id, coll) //获取本条公告的信息
|
|
rep := getDetail(id, coll) //获取本条公告的信息
|
|
i.T["otherInfo"] = rep["otherInfo"] //展示关联公告信息
|
|
i.T["otherInfo"] = rep["otherInfo"] //展示关联公告信息
|
|
i.T["moreInfo"] = rep["moreInfo"] //更多关联公告信息
|
|
i.T["moreInfo"] = rep["moreInfo"] //更多关联公告信息
|
|
@@ -619,7 +629,7 @@ func (i *Front) ImportByEs() {
|
|
if int64(len(ids)) != escount {
|
|
if int64(len(ids)) != escount {
|
|
msg = "查询数据和结果不一致"
|
|
msg = "查询数据和结果不一致"
|
|
} else { //入库
|
|
} else { //入库
|
|
- _, msg, successNum = GetDataById(coll, ids, "es", map[string]map[string]interface{}{})
|
|
|
|
|
|
+ _, msg, successNum = GetDataById1(coll, ids, "es", map[string]map[string]interface{}{})
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
msg = "无查询数据"
|
|
msg = "无查询数据"
|
|
@@ -777,9 +787,10 @@ func (i *Front) Elist() error {
|
|
func (i *Front) Review() error {
|
|
func (i *Front) Review() error {
|
|
defer qu.Catch()
|
|
defer qu.Catch()
|
|
var labeler []map[string]interface{}
|
|
var labeler []map[string]interface{}
|
|
|
|
+ coll := i.GetString("coll")
|
|
sess := util.MgoM.GetMgoConn()
|
|
sess := util.MgoM.GetMgoConn()
|
|
defer util.MgoM.DestoryMongoConn(sess)
|
|
defer util.MgoM.DestoryMongoConn(sess)
|
|
- sess.DB(util.MgoM.DbName).C(util.Config.Fromtable).Pipe([]map[string]interface{}{
|
|
|
|
|
|
+ sess.DB(util.MgoM.DbName).C(coll).Pipe([]map[string]interface{}{
|
|
//查询条件
|
|
//查询条件
|
|
{
|
|
{
|
|
"$match": bson.M{
|
|
"$match": bson.M{
|
|
@@ -799,31 +810,31 @@ func (i *Front) Review() error {
|
|
},
|
|
},
|
|
}).All(&labeler)
|
|
}).All(&labeler)
|
|
|
|
|
|
- var maps []map[string]interface{}
|
|
|
|
- maps = append(maps, map[string]interface{}{"title": ""})
|
|
|
|
|
|
+ var maps []string
|
|
|
|
+ maps = append(maps, "")
|
|
for k, v := range util.Config.Fields{
|
|
for k, v := range util.Config.Fields{
|
|
if v {
|
|
if v {
|
|
- m := map[string]interface{}{"title": k}
|
|
|
|
- maps = append(maps, m)
|
|
|
|
|
|
+ maps = append(maps, k)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- maps = append(maps, map[string]interface{}{"title": "All"})
|
|
|
|
|
|
+ maps = append(maps, "全部数据")
|
|
i.T["fields"] = maps
|
|
i.T["fields"] = maps
|
|
i.T["users"] = labeler
|
|
i.T["users"] = labeler
|
|
|
|
+ i.T["coll"] = coll
|
|
return i.Render("review.html", &i.T)
|
|
return i.Render("review.html", &i.T)
|
|
}
|
|
}
|
|
|
|
|
|
func (i *Front) ReviewList() {
|
|
func (i *Front) ReviewList() {
|
|
defer qu.Catch()
|
|
defer qu.Catch()
|
|
if i.Method() == "POST" {
|
|
if i.Method() == "POST" {
|
|
|
|
+ coll := i.GetSession("coll").(string)
|
|
user := i.GetString("user")
|
|
user := i.GetString("user")
|
|
q := make(map[string]interface{})
|
|
q := make(map[string]interface{})
|
|
q["ck_data"] = bson.M{"$gte": 1}
|
|
q["ck_data"] = bson.M{"$gte": 1}
|
|
if user != "0" && user != "-1" {
|
|
if user != "0" && user != "-1" {
|
|
q["modifyuser"] = user
|
|
q["modifyuser"] = user
|
|
}
|
|
}
|
|
- qu.Debug(q, util.Config.Fromtable)
|
|
|
|
- datas, b := util.MgoM.Find(util.Config.Fromtable, q, bson.M{"_id": 1}, nil, false, -1, -1)
|
|
|
|
|
|
+ datas, b := util.MgoM.Find(coll, q, bson.M{"_id": 1}, nil, false, -1, -1)
|
|
if b && len(*datas) > 0 {
|
|
if b && len(*datas) > 0 {
|
|
i.ServeJson(map[string]interface{}{
|
|
i.ServeJson(map[string]interface{}{
|
|
"rep": b,
|
|
"rep": b,
|
|
@@ -957,10 +968,10 @@ func (i *Front) ReviewSave() error {
|
|
if len(set) > 0 { //set中为本次标注保存的数据(ck_bidopentime:1;ck_buyer:2;buyer:"XXX")
|
|
if len(set) > 0 { //set中为本次标注保存的数据(ck_bidopentime:1;ck_buyer:2;buyer:"XXX")
|
|
for s, sv := range set {
|
|
for s, sv := range set {
|
|
//特殊字段处理
|
|
//特殊字段处理
|
|
- if s == "ck_pclistag" && (*data)["ck_pclistag"] != nil {
|
|
|
|
- delete(set, s)
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
|
|
+ //if s == "ck_pclistag" && (*data)["ck_pclistag"] != nil {
|
|
|
|
+ // delete(set, s)
|
|
|
|
+ // continue
|
|
|
|
+ //}
|
|
//区分是标记字段,还是普通字段(标记字段:ck_buyer;普通字段:buyer)
|
|
//区分是标记字段,还是普通字段(标记字段:ck_buyer;普通字段:buyer)
|
|
if strings.HasPrefix(s, preKey) {
|
|
if strings.HasPrefix(s, preKey) {
|
|
status := qu.IntAll(sv) //标注字段状态
|
|
status := qu.IntAll(sv) //标注字段状态
|
|
@@ -1035,7 +1046,7 @@ func (i *Front) ReviewSave() error {
|
|
if len(set) > 0 {
|
|
if len(set) > 0 {
|
|
if len(set) > 1 {
|
|
if len(set) > 1 {
|
|
set["updatetime"] = time.Now().Unix()
|
|
set["updatetime"] = time.Now().Unix()
|
|
- set["modifyuser"] = loginuser
|
|
|
|
|
|
+ //set["modifyuser"] = loginuser
|
|
}
|
|
}
|
|
update["$set"] = set
|
|
update["$set"] = set
|
|
}
|
|
}
|
|
@@ -1085,8 +1096,10 @@ func (i *Front) ReviewStat() {
|
|
defer qu.Catch()
|
|
defer qu.Catch()
|
|
sess := util.MgoM.GetMgoConn()
|
|
sess := util.MgoM.GetMgoConn()
|
|
defer util.MgoM.DestoryMongoConn(sess)
|
|
defer util.MgoM.DestoryMongoConn(sess)
|
|
- result := sess.DB(util.MgoM.DbName).C(util.Config.Fromtable).Find(nil).Iter()
|
|
|
|
- count, cmark, rmark, rgmark := 0, 0, 0, 0 // 总数, 标注数量, 审核数据, 审核数据完全正确的数据量
|
|
|
|
|
|
+ coll := i.GetSession("coll").(string)
|
|
|
|
+ qu.Debug(coll)
|
|
|
|
+ result := sess.DB(util.MgoM.DbName).C(coll).Find(nil).Iter()
|
|
|
|
+ count, cmark, rmark, rgmark := 0, 0, 0, 0 // 总数, 标注数量, 审核数据量, 审核数据完全正确的数据量
|
|
|
|
|
|
cmaps := make(map[string]int) // 标注字段整体准确率
|
|
cmaps := make(map[string]int) // 标注字段整体准确率
|
|
umaps := make(map[string]interface{}) // 按人员 字段准确率
|
|
umaps := make(map[string]interface{}) // 按人员 字段准确率
|
|
@@ -1097,8 +1110,17 @@ func (i *Front) ReviewStat() {
|
|
}
|
|
}
|
|
for tmp := make(map[string]interface{}); result.Next(&tmp); {
|
|
for tmp := make(map[string]interface{}); result.Next(&tmp); {
|
|
count ++
|
|
count ++
|
|
|
|
+ user := qu.ObjToString(tmp["modifyuser"])
|
|
if qu.IntAll(tmp["ck_data"]) >= 1 {
|
|
if qu.IntAll(tmp["ck_data"]) >= 1 {
|
|
cmark ++
|
|
cmark ++
|
|
|
|
+ var up map[string]int
|
|
|
|
+ if umaps[user] == nil {
|
|
|
|
+ up = make(map[string]int)
|
|
|
|
+ }else {
|
|
|
|
+ up = umaps[user].(map[string]int)
|
|
|
|
+ }
|
|
|
|
+ up["ck_count"] += 1
|
|
|
|
+ umaps[user] = up
|
|
}
|
|
}
|
|
if qu.IntAll(tmp["re_data"]) > 0 {
|
|
if qu.IntAll(tmp["re_data"]) > 0 {
|
|
rmark ++
|
|
rmark ++
|
|
@@ -1106,7 +1128,6 @@ func (i *Front) ReviewStat() {
|
|
remap, _ := reField["field"].(map[string]interface{})
|
|
remap, _ := reField["field"].(map[string]interface{})
|
|
flag := true // 数据整体准确率
|
|
flag := true // 数据整体准确率
|
|
// 按人员统计字段准备率
|
|
// 按人员统计字段准备率
|
|
- user := qu.ObjToString(tmp["modifyuser"])
|
|
|
|
var up map[string]int
|
|
var up map[string]int
|
|
if umaps[user] == nil {
|
|
if umaps[user] == nil {
|
|
up = make(map[string]int)
|
|
up = make(map[string]int)
|
|
@@ -1122,19 +1143,19 @@ func (i *Front) ReviewStat() {
|
|
flag = false
|
|
flag = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- up["count"] += 1
|
|
|
|
|
|
+ up["re_count"] += 1
|
|
umaps[user] = up
|
|
umaps[user] = up
|
|
if flag {
|
|
if flag {
|
|
rgmark ++
|
|
rgmark ++
|
|
- up["rgmark_count"] += 1
|
|
|
|
|
|
+ up["re_rg_count"] += 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- qu.Debug("count:", count, ",cmark:", cmark, ",rmark:", rmark, ",rgmark:", rgmark)
|
|
|
|
- qu.Debug(cmaps)
|
|
|
|
- qu.Debug(umaps)
|
|
|
|
|
|
+ //qu.Debug("count:", count, ",cmark:", cmark, ",rmark:", rmark, ",rgmark:", rgmark)
|
|
|
|
+ //qu.Debug(cmaps)
|
|
|
|
+ //qu.Debug(umaps)
|
|
if rmark == 0 {
|
|
if rmark == 0 {
|
|
i.ServeJson(map[string]interface{}{"rep": false, "msg": "无质检审核数据!"})
|
|
i.ServeJson(map[string]interface{}{"rep": false, "msg": "无质检审核数据!"})
|
|
return
|
|
return
|
|
@@ -1146,31 +1167,91 @@ func (i *Front) ReviewStat() {
|
|
id := util.MgoM.Save("review_result", save)
|
|
id := util.MgoM.Save("review_result", save)
|
|
if id != "" {
|
|
if id != "" {
|
|
// 前台页面数据
|
|
// 前台页面数据
|
|
- var dataSource [][]interface{}
|
|
|
|
- var tmp []interface{}
|
|
|
|
- tmp = append(tmp, "全部")
|
|
|
|
|
|
+ dataSource := make(map[string]interface{})
|
|
|
|
+ var userSelect []string
|
|
|
|
+ var dataSelect []map[string]interface{}
|
|
|
|
+ userSelect = append(userSelect, "全部")
|
|
|
|
+ tmp := make(map[string]interface{})
|
|
|
|
+ tmp["name"] = "全部"
|
|
|
|
+ tmp["num1"] = cmark
|
|
|
|
+ tmp["num2"] = rmark
|
|
|
|
+ tmp["num3"] = rgmark
|
|
|
|
+ tmp["num4"] = CountPr(rgmark, rmark)
|
|
|
|
+ dataSelect = append(dataSelect, tmp)
|
|
for k, v := range util.Config.Fields{
|
|
for k, v := range util.Config.Fields{
|
|
if v {
|
|
if v {
|
|
- tmp = append(tmp, CountPr(cmaps[k], rmark))
|
|
|
|
|
|
+ tmp1 := make(map[string]interface{})
|
|
|
|
+ tmp1["name"] = k
|
|
|
|
+ tmp1["num1"] = cmark
|
|
|
|
+ tmp1["num2"] = rmark
|
|
|
|
+ tmp1["num3"] = cmaps[k]
|
|
|
|
+ tmp1["num4"] = CountPr(cmaps[k], rmark)
|
|
|
|
+ dataSelect = append(dataSelect, tmp1)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- tmp = append(tmp, CountPr(rgmark, rmark))
|
|
|
|
- dataSource = append(dataSource, tmp)
|
|
|
|
|
|
+ dataSource["全部"] = dataSelect
|
|
for k1, v1 := range umaps{
|
|
for k1, v1 := range umaps{
|
|
if v2, o := v1.(map[string]int); o {
|
|
if v2, o := v1.(map[string]int); o {
|
|
- var tmp2 []interface{}
|
|
|
|
- tmp2 = append(tmp2, k1)
|
|
|
|
|
|
+ userSelect = append(userSelect, k1)
|
|
|
|
+ var dataSelect1 []map[string]interface{}
|
|
|
|
+ tmp2 := make(map[string]interface{})
|
|
|
|
+ tmp2["name"] = "全部"
|
|
|
|
+ tmp2["num1"] = v2["ck_count"]
|
|
|
|
+ tmp2["num2"] = v2["re_count"]
|
|
|
|
+ tmp2["num3"] = v2["re_rg_count"]
|
|
|
|
+ tmp2["num4"] = CountPr(v2["re_rg_count"], v2["re_count"])
|
|
|
|
+ dataSelect1 = append(dataSelect1, tmp2)
|
|
for k, v := range util.Config.Fields{
|
|
for k, v := range util.Config.Fields{
|
|
if v {
|
|
if v {
|
|
- tmp2 = append(tmp2, CountPr(v2[k], v2["count"]))
|
|
|
|
|
|
+ tmp1 := make(map[string]interface{})
|
|
|
|
+ tmp1["name"] = k
|
|
|
|
+ tmp1["num1"] = v2["ck_count"]
|
|
|
|
+ tmp1["num2"] = v2["re_count"]
|
|
|
|
+ tmp1["num3"] = v2[k]
|
|
|
|
+ tmp1["num4"] = CountPr(v2[k], v2["re_count"])
|
|
|
|
+ dataSelect1 = append(dataSelect1, tmp1)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- tmp2 = append(tmp2, CountPr(v2["rgmark_count"], v2["count"]))
|
|
|
|
- dataSource = append(dataSource, tmp2)
|
|
|
|
|
|
+ dataSource[k1] = dataSelect1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- i.ServeJson(map[string]interface{}{"rep": true, "data": dataSource})
|
|
|
|
|
|
+ //var dataSource [][]string
|
|
|
|
+ //var tmp []string
|
|
|
|
+ //tmp = append(tmp, "全部")
|
|
|
|
+ //for k, v := range util.Config.Fields{
|
|
|
|
+ // if v {
|
|
|
|
+ // str := fmt.Sprintf("抽查字段标注数据量:%d,</br>抽查字段标注正确数量:%d,</br>占比%s", rmark, cmaps[k], CountPr(cmaps[k], rmark))
|
|
|
|
+ // tmp = append(tmp, str)
|
|
|
|
+ // }
|
|
|
|
+ //}
|
|
|
|
+ //str := fmt.Sprintf("抽查标注数据量:%d,</br>抽查数据标注正确数量:%d,</br>占比%s", rmark, rgmark, CountPr(rgmark, rmark))
|
|
|
|
+ //tmp = append(tmp, str)
|
|
|
|
+ //dataSource = append(dataSource, tmp)
|
|
|
|
+ //for k1, v1 := range umaps{
|
|
|
|
+ // if v2, o := v1.(map[string]int); o {
|
|
|
|
+ // var tmp2 []string
|
|
|
|
+ // tmp2 = append(tmp2, k1)
|
|
|
|
+ // for k, v := range util.Config.Fields{
|
|
|
|
+ // if v {
|
|
|
|
+ // str := fmt.Sprintf("抽查字段标注数据量:%d,</br>抽查字段标注正确数量:%d,</br>占比%s", v2["count"], v2[k], CountPr(v2[k], v2["count"]))
|
|
|
|
+ // tmp2 = append(tmp2, str)
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ // str := fmt.Sprintf("抽查标注数据量:%d,</br>抽查数据标注正确数量:%d,</br>占比%s", v2["count"], v2["rgmark_count"], CountPr(v2["rgmark_count"], v2["count"]))
|
|
|
|
+ // tmp2 = append(tmp2, str)
|
|
|
|
+ // dataSource = append(dataSource, tmp2)
|
|
|
|
+ // }
|
|
|
|
+ //}
|
|
|
|
+ i.ServeJson(map[string]interface{}{"rep": true, "data": map[string]interface{}{"tableData": dataSource, "userSelect": userSelect}})
|
|
}else {
|
|
}else {
|
|
i.ServeJson(map[string]interface{}{"rep": false, "msg": "统计失败!"})
|
|
i.ServeJson(map[string]interface{}{"rep": false, "msg": "统计失败!"})
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (i *Front) Logout() {
|
|
|
|
+ i.DelSession("user")
|
|
|
|
+ err := i.Redirect("/")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
}
|
|
}
|