Jianghan 3 vuotta sitten
vanhempi
commit
977155df0b

+ 1 - 0
src/front/front.go

@@ -92,6 +92,7 @@ type Front struct {
 	checkList   xweb.Mapper `xweb:"/front/user/check/list"`
 	checkData   xweb.Mapper `xweb:"/front/user/check/data"`
 	checkDetail xweb.Mapper `xweb:"/front/user/check/detail"`
+	checkSave   xweb.Mapper `xweb:"/front/user/check/save"`
 }
 
 func (f *Front) Index() {

+ 1 - 0
src/front/mark.go

@@ -201,6 +201,7 @@ func (f *Front) JyUserDataMark() {
 	}
 	qu.Debug("allTagFields===", allTagFields)
 	qu.Debug("tagSet===", tagSet)
+
 	if len(tagSet) > 0 || baseInfo["purchasinglist_alltag"] != nil { //purchasinglist_alltag特殊处理
 		//1、更新数据源信息
 		setResult := map[string]interface{}{ //更新字段集

+ 158 - 0
src/front/remark.go

@@ -1,6 +1,7 @@
 package front
 
 import (
+	"encoding/json"
 	"fmt"
 	"go.mongodb.org/mongo-driver/bson"
 	"math"
@@ -9,6 +10,7 @@ import (
 	"sort"
 	"strconv"
 	"strings"
+	"time"
 	"util"
 )
 
@@ -583,8 +585,10 @@ func (f *Front) CheckList() {
 
 func (f *Front) CheckData() {
 	qu.Catch()
+	pid := f.GetString("pid")
 	tid := f.GetString("tid")
 	sourceinfo := f.GetString("s_sourceinfo")
+
 	if f.Method() == "POST" {
 		start, _ := f.GetInteger("start")
 		limit, _ := f.GetInteger("length")
@@ -612,7 +616,15 @@ func (f *Front) CheckData() {
 			"recordsTotal":    count,
 		})
 	} else {
+
+		task, _ := util.Mgo.FindById(util.TASKCOLLNAME, tid, map[string]interface{}{"i_givenum": 1})
+		tagCount := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid, "b_istag": true})
+		checkCount := util.Mgo.Count(sourceinfo, map[string]interface{}{"s_grouptaskid": tid, "b_check": true})
+		f.T["pid"] = pid
 		f.T["tid"] = tid
+		f.T["taskNum"] = (*task)["i_givenum"]
+		f.T["taskTagNum"] = tagCount
+		f.T["taskCheckNum"] = checkCount
 		f.T["sourceinfo"] = sourceinfo
 		_ = f.Render("project/check_data_list.html", &f.T)
 	}
@@ -663,3 +675,149 @@ func (f *Front) CheckDetail() {
 	f.T["nextid"] = GetNextDataId(did, coll) //下一条id
 	_ = f.Render("project/check_detail.html", &f.T)
 }
+
+func (f *Front) CheckSave() {
+	defer qu.Catch()
+	success := false
+	msg := ""
+	user := f.GetSession("user").(map[string]interface{})
+	username := qu.ObjToString(user["s_login"]) //当前登录用户
+	userId := qu.ObjToString(user["id"])        //当前登录用户标识
+	var obj []map[string]interface{}
+	infoId := f.GetString("s_infoid")
+	sourceInfo := f.GetString("s_sourceinfo")
+	pid := f.GetString("pid")
+	qu.Debug("Data ID:", infoId)
+	project, _ := util.Mgo.FindById(util.PROJECTCOLLNAME, pid, map[string]interface{}{"s_name": 1, "v_fields": 1})
+	data := f.GetString("data")
+	err := json.Unmarshal([]byte(data), &obj)
+	if err != nil {
+		qu.Debug("Json Unmarshal Error")
+		f.ServeJson(map[string]interface{}{"success": success, "msg": "解析数据失败"})
+		return
+	}
+	tagSet := map[string]interface{}{}    //被标注字段状态
+	baseSet := map[string]interface{}{}   //要修改的字段信息
+	baseUnset := map[string]interface{}{} //要删除的字段信息
+	if len(obj) == 1 {                    //单独保存某个一级
+		content, ok := obj[0]["content"].([]interface{})
+		if !ok || len(content) == 0 {
+			f.ServeJson(map[string]interface{}{"success": success, "msg": "解析数据失败"})
+			return
+		}
+		title := qu.ObjToString(obj[0]["title"])
+		istag, _ := obj[0]["checkAllTag"].(bool)
+		status := qu.IntAll(obj[0]["status"])
+		switch title {
+		case "基本字段":
+			MarkBase(content, tagSet, baseSet, baseUnset)
+		case "时间地点":
+			MarkTimePlace(content, tagSet, baseSet, baseUnset)
+		case "标的信息":
+			MarkPurchasinglist(content, tagSet, baseSet, baseUnset, istag, status)
+		case "多包信息":
+			MarkPackage(content, tagSet, baseSet, baseUnset, status)
+		case "中标候选人信息":
+			MarkWonderorder(content, tagSet, baseSet, baseUnset, status)
+		case "其余信息":
+			MarkOther(content, tagSet, baseSet, baseUnset)
+		}
+	} else {
+		for j, val := range obj {
+			content, ok := val["content"].([]interface{})
+			status := qu.IntAll(val["status"])
+			if !ok {
+				qu.Debug("Content Error")
+				continue
+			}
+			istag, _ := val["checkAllTag"].(bool)
+			if j == 0 { //基本信息
+				MarkBase(content, tagSet, baseSet, baseUnset)
+			} else if j == 1 { //时间地点
+				MarkTimePlace(content, tagSet, baseSet, baseUnset)
+			} else if j == 2 { //标的物
+				MarkPurchasinglist(content, tagSet, baseSet, baseUnset, istag, status)
+			} else if j == 3 { //多包
+				MarkPackage(content, tagSet, baseSet, baseUnset, status)
+			} else if j == 4 { //候选人
+				MarkWonderorder(content, tagSet, baseSet, baseUnset, status)
+			} else { //其余信息
+				MarkOther(content, tagSet, baseSet, baseUnset)
+			}
+		}
+	}
+	dataInfo, _ := util.Mgo.FindById(sourceInfo, infoId, map[string]interface{}{"v_baseinfo": 1, "v_taginfo": 1}) //查询标注保存前的原始信息
+	tagInfo, _ := (*dataInfo)["v_taginfo"].(map[string]interface{})
+	baseInfo, _ := (*dataInfo)["v_baseinfo"].(map[string]interface{})
+	if tagInfo != nil && len(tagInfo) > 0 {
+		for field, tmpStatus := range tagSet { //比对本次标注信息和历史标注信息
+			status := qu.IntAll(tmpStatus)            //此次被标注字段的状态
+			markedStatus := qu.IntAll(tagInfo[field]) //历史标注状态
+			if status == 1 && markedStatus != 0 {     //此次标注结果为正确,且有历史标注记录,不做修改
+				qu.Debug("已标注字段field---", field)
+				//delete(tagSet, field)
+				delete(baseSet, field)
+				//continue
+			}
+		}
+	}
+
+	allTagFields := map[string]interface{}{} //记录此此标注所有标注信息,用于日志记录
+	for k, _ := range tagSet {
+		allTagFields[k] = true
+	}
+	for k, v := range baseSet {
+		allTagFields[k] = v
+	}
+	for k, _ := range baseUnset {
+		allTagFields[k] = nil
+	}
+	qu.Debug("allTagFields===", allTagFields)
+	qu.Debug("tagSet===", tagSet)
+
+	// 质检时,标注标记变成质检标记
+	checkFields, _ := (*project)["v_fields"].(map[string]interface{})
+	tagSet = map[string]interface{}{}
+	for k := range checkFields {
+		tagSet[k] = true
+	}
+
+	if len(tagSet) > 0 || baseInfo["purchasinglist_alltag"] != nil { //purchasinglist_alltag特殊处理
+		//1、更新数据源信息
+		setResult := map[string]interface{}{ //更新字段集
+			"i_updatetime": time.Now().Unix(),
+			"b_check":      true,
+			"s_checkid":    userId,
+		}
+		//for field, val := range tagSet { //更新质检字段
+		//	setResult["v_taginfo."+field] = val
+		//}
+		setResult["v_checkinfo"] = tagSet
+		for field, val := range baseSet { //更新基本字段
+			setResult["v_baseinfo."+field] = val
+		}
+		baseUnsetResult := map[string]interface{}{} //删除字段集
+		for field, _ := range baseUnset {           //删除基本字段
+			baseUnsetResult["v_baseinfo."+field] = ""
+		}
+		set := map[string]interface{}{
+			"$set": setResult,
+		}
+		if len(baseUnsetResult) > 0 {
+			set["$unset"] = baseUnsetResult
+		}
+		qu.Debug("set---", set)
+		success = util.Mgo.UpdateById(sourceInfo, infoId, set)
+		//2、更新marked表
+		tmp, _ := util.Mgo.FindById(sourceInfo, infoId, map[string]interface{}{"v_baseinfo": 1, "v_taginfo": 1, "i_ckdata": 1})
+		qu.Debug("infoId:", infoId)
+		delete(*tmp, "_id")
+		(*tmp)["updatetime"] = time.Now().Unix()
+		b := util.Mgo.Update(util.AllToColl, map[string]interface{}{"_id": mgo.StringTOBsonId(infoId)}, map[string]interface{}{"$set": tmp}, true, false)
+		qu.Debug("Update Marked:", b)
+	}
+	//3、保存标注日志
+	b := SaveLog(infoId, "", username, userId, qu.ObjToString((*project)["s_name"]), "质检", baseInfo, allTagFields)
+	qu.Debug("Save Log:", b)
+	f.ServeJson(map[string]interface{}{"success": success, "msg": msg})
+}

+ 1 - 0
src/web/templates/project/check_data_list.html

@@ -48,6 +48,7 @@
     menuActive("/front/user/task/list");
 
     let tid = {{ .T.tid }}
+    let pid = {{ .T.pid }}
     let sourceinfo = {{ .T.sourceinfo }}
 
     $(function () {

+ 9 - 8
src/web/templates/project/check_detail.html

@@ -374,7 +374,7 @@
 <!--                 <button  class="code" @click.stop="showPop = true" style="width:100px">源码</button>&nbsp;&nbsp;-->
                 <!--                 <button  class="code" @click.stop="open(1)" style="width:100px">全部验证</button> -->
 <!--                <button class="code" @click.stop="open(2)" style="width:100px">字段验证</button>-->
-                <button  class="code" @click.stop="open('', false)" style="width:100px">保存</button>&nbsp;&nbsp;
+                <button  class="code" @click.stop="open(2)" style="width:100px">保存</button>&nbsp;&nbsp;
                 <button class="code" @click.stop="openHref" style="width:100px">下一条</button>
                 <!--<button  class="code" @click.stop="window.location.href='/'" style="width:100px">下一条</button>-->
             </div>
@@ -401,7 +401,7 @@
 </body>
 
 <script>
-    let tid = {{ .T.tid }}      // 任务id
+
     let did = {{ .T.did }}      // 数据id
     let pid = {{ .T.pid }}      // 项目id
     let coll = {{ .T.coll }}    // 表名
@@ -530,7 +530,6 @@
 
     //记录是否点击保存
     var issave = false;
-    var _id = {{ .T.did }}
     var nextid = {{ .T.nextid }}
     //基本信息
     var common = {{ .T.common }}
@@ -1077,7 +1076,7 @@
                 //    $.ajax({
                 //        url:"/markTag",
                 //        method:"post",
-                //        data: {tag:n,_id:_id},
+                //        data: {tag:n,_id: did},
                 //        success:function(res){
                 //            if(res){
                 //                document.getElementById("com-alert-val").innerHtml="标记成功";
@@ -1378,10 +1377,11 @@
                     var d = JSON.stringify(this.editData);
                     var _this = this
                     $.ajax({
-                        url: "/front/data/mark",
-                        method: "post",
-                        data: {"data": d, "s_infoid": _id, "s_usertaskid": tid},
+                        url: "/front/user/check/save",
+                        type: "POST",
+                        data: {"data": d, "s_infoid": did, "pid": pid, "s_sourceinfo": coll},
                         success: function(res) {
+                            console.log(res)
                             if (res) {
                                 _this.$message({
                                     message: '保存成功',
@@ -1393,6 +1393,7 @@
                             }
                         },
                         error: function(err) {
+                            console.log(err)
                             alert(err);
                         }
                     });
@@ -1434,7 +1435,7 @@
                 //        $.ajax({
                 //            url:"/center/biaozhu",
                 //            method:"post",
-                //            data: {key:onetext,_id:_id},
+                //            data: {key:onetext,_id:did},
                 //            success:function(res){
                 //                if(res){
                 //                    document.getElementById("com-alert-val").innerHtml="保存成功";

+ 1 - 1
src/web/templates/project/remark_detail.html

@@ -1386,7 +1386,7 @@
                     $.ajax({
                         url: "/front/data/mark",
                         method: "post",
-                        data: {"data": d, "s_infoid": _id, "s_usertaskid": {{ .T.tid}}},
+                        data: {"data": d, "s_infoid": _id, "s_usertaskid": tid},
                         success: function (res) {
                             if (res) {
                                 _this.$message({

+ 7 - 6
src/web/templates/project/task_detail.html

@@ -407,8 +407,8 @@
 
     // 收回
     function retrieveTask(id, sourceinfo, status) {
-        showConfirm("确认要收回当前任务吗?", function () {
-            if (status === "未开始" || status === "进行中") {
+        if (status === "未开始" || status === "进行中") {
+            showConfirm("确认要收回当前任务吗?", function () {
                 $.ajax({
                     url: "/front/user/task/retrieve",
                     type: 'POST',
@@ -421,10 +421,11 @@
                         }
                     }
                 })
-            }else {
-                showTip("操作不允许")
-            }
-        })
+
+            })
+        }else {
+            showTip("操作不允许")
+        }
     }
     function closeTask(id, status, sourceinfo) {
         if (status === "未开始") {

+ 15 - 12
src/web/templates/project/task_group_list.html

@@ -117,7 +117,7 @@
                             // '<a class="btn btn-sm btn-warning">分发</a>&nbsp;&nbsp;' +
                             '<a class="btn btn-sm btn-primary">质检</a>&nbsp;&nbsp;' +
                             '<a class="btn btn-sm btn-primary">质检结果</a>&nbsp;&nbsp;' +
-                            '<a class="btn btn-sm btn-primary" onclick="deliverTask(\'' + val + '\',\''+row.s_sourceinfo+'\',\'' + row.s_status + '\')">交付</a>&nbsp;&nbsp;' +
+                            '<a class="btn btn-sm btn-primary" onclick="deliverTask(\'' + val + '\',\'' + row.s_status + '\')">交付</a>&nbsp;&nbsp;' +
                             '</div>';
                         return tmp
                     }
@@ -137,19 +137,22 @@
 
     function deliverTask(id, status) {
         if (status === "进行中") {
-            $.ajax({
-                url: "/front/group/task/deliver",
-                type: 'POST',
-                data: {"taskid": id},
-                success: function (r) {
-                    if (r.success) {
-                        ttable.api().ajax.reload()
-                    } else {
-                        showTip(r.msg);
+            showConfirm("", function () {
+                $.ajax({
+                    url: "/front/group/task/deliver",
+                    type: 'POST',
+                    data: {"taskid": id},
+                    success: function (r) {
+                        if (r.success) {
+                            ttable.api().ajax.reload()
+                        } else {
+                            showTip(r.msg);
+                        }
                     }
-                }
+                })
+
             })
-        }else {
+        } else {
             showTip("操作不允许")
         }
     }