Pārlūkot izejas kodu

buyer,winner库

unknown 6 gadi atpakaļ
vecāks
revīzija
5b20789930

+ 2 - 1
src/config.json

@@ -2,7 +2,8 @@
     "port": "9090",
     "mgodb": "192.168.3.207:27082",
     "dbsize": 5,
-    "dbname": "extract_kf",
+    "dbname": "extract_v3",
+	"redis":"buyer=192.168.3.18:6379,winner=192.168.3.18:6379",
     "saveresult": true,
     "fieldscore": true
 } 

+ 80 - 3
src/jy/admin/buyermanager/buyermanage.go

@@ -2,6 +2,10 @@ package buyermanager
 
 import (
 	. "jy/admin"
+	. "jy/mongodbutil"
+	"log"
+	redis "qfw/util/redis"
+	"time"
 
 	"github.com/gin-gonic/gin"
 )
@@ -11,9 +15,82 @@ func init() {
 	Admin.GET("/buyermanager/list", func(c *gin.Context) {
 		c.HTML(200, "buyermanager_list.html", nil)
 	})
+	Admin.POST("/buyer/data", BuyerData)        //加载数据
+	Admin.POST("/buyer/addbuyer", AddBuyer)     //新增
+	Admin.POST("/buyer/delbuyer", DelBuyer)     //删除
+	Admin.POST("/buyer/auditbuyer", AuditBuyer) //审核
+	Admin.POST("/buyer/buyerclass", BuyerClass) //查询分类数据
 
 	//审核
-	Admin.GET("/buyermanager/audit", func(c *gin.Context) {
-		c.HTML(200, "buyermanager_audit.html", nil)
-	})
+	//	Admin.GET("/buyermanager/audit", func(c *gin.Context) {
+	//		c.HTML(200, "buyermanager_audit.html", nil)
+	//	})
+}
+
+func BuyerData(c *gin.Context) {
+	data, _ := Mgo.Find("buyer_new", nil, `{"_id":-1}`, nil, false, -1, -1)
+	for _, d := range *data {
+		timeStr := time.Unix(d["l_intime"].(int64), 0).Format(Date_Short_Layout)
+		d["l_intime"] = timeStr
+	}
+	c.JSON(200, gin.H{"data": data})
+}
+
+//新增
+func AddBuyer(c *gin.Context) {
+	buyername, _ := c.GetPostForm("buyername")
+	parentclass, _ := c.GetPostForm("parentclass")
+	childclass, _ := c.GetPostForm("childclass")
+	update := make(map[string]interface{})
+	update["name"] = buyername
+	update["pici"] = time.Now().Unix()
+	update["buyerclass"] = childclass
+	update["parentclass"] = parentclass
+	update["s_source"] = "手动"
+	b := Mgo.Update("buyer", `{"name":"`+buyername+`"}`, map[string]interface{}{
+		"$set": update}, true, false)
+	if b { //新增的直接更新buyer redis
+		p := redis.PutCKV("buyer", buyername, 1)
+		log.Println("Add--Update buyer redis:", p)
+	}
+	c.JSON(200, gin.H{"rep": b})
+}
+
+//删除
+func DelBuyer(c *gin.Context) {
+	_id, _ := c.GetPostForm("_id")
+	b := Mgo.Del("buyer_new", `{"_id":"`+_id+`"}`)
+	if b {
+		c.JSON(200, gin.H{"rep": true})
+	} else {
+		c.JSON(200, gin.H{"rep": false})
+	}
+}
+
+//审核
+func AuditBuyer(c *gin.Context) {
+	name, _ := c.GetPostForm("name")
+	_id, _ := c.GetPostForm("id")
+	parentclass, _ := c.GetPostForm("parentclass")
+	childclass, _ := c.GetPostForm("childclass")
+	update := make(map[string]interface{})
+	update["name"] = name
+	update["pici"] = time.Now().Unix()
+	update["buyerclass"] = childclass
+	update["parentclass"] = parentclass
+	update["s_source"] = "抽取"
+	b := Mgo.Update("buyer", `{"name":"`+name+`"}`, map[string]interface{}{
+		"$set": update}, true, false)
+	//更新redis
+	if b {
+		p := redis.PutCKV("buyer", name, 1)
+		log.Println("Audit--Update buyer redis:", p)
+		Mgo.Del("buyer_new", `{"_id":"`+_id+`"}`)
+	}
+	c.JSON(200, gin.H{"rep": b})
+}
+
+func BuyerClass(c *gin.Context) {
+	data, _ := Mgo.Find("classify", `{"i_type":1}`, `{"_id":-1}`, `{"s_name":1,"child":1}`, false, -1, -1)
+	c.JSON(200, gin.H{"data": data})
 }

+ 0 - 98
src/jy/admin/rule.go

@@ -369,101 +369,3 @@ func RuleLogicCoreUse(c *gin.Context) {
 	b := Mgo.UpdateById("rule_logicore", _id, `{"$set":{"isuse":`+isuse+`}}`)
 	c.JSON(200, gin.H{"rep": b})
 }
-
-//标签库列表
-//func RuleTagData(c *gin.Context) {
-//	version, _ := c.GetPostForm("version")
-//	data, _ := Mgo.Find("rule_tag", `{"version":"`+version+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
-//	for _, d := range *data {
-//		timeStr := time.Unix(d["intime"].(int64), 0).Format(Date_Short_Layout)
-//		d["intime"] = timeStr
-//	}
-//	c.JSON(200, gin.H{"data": data})
-//}
-
-//添加标签
-//func RuleTagSave(c *gin.Context) {
-//	name, _ := c.GetPostForm("name")
-//	version, _ := c.GetPostForm("version")
-//	contentStr, _ := c.GetPostForm("content")
-//	username, _ := c.GetPostForm("username")
-//	tp, _ := c.GetPostForm("tp")
-//	content := strings.Split(contentStr, ",")
-//	data, _ := Mgo.FindOne("rule_tag", `{"name":"`+name+`"}`)
-//	if len(*data) > 0 { //判重,防止添加name相同的标签
-//		c.JSON(200, gin.H{"rep": false})
-//		return
-//	}
-//	if tp == "正则" { //验证是否是正则
-//		for _, ct := range content {
-//			_, err := regexp.Compile(ct)
-//			if err != nil {
-//				c.JSON(200, gin.H{"rep": false})
-//				return
-//			}
-//		}
-//	}
-//	save := map[string]interface{}{
-//		"name":    name,
-//		"version": version,
-//		"content": content,
-//		"creater": username,
-//		"intime":  time.Now().Unix(),
-//		"type":    tp,
-//		"delete":  false,
-//	}
-//	b := Mgo.Save("rule_tag", save)
-//	if b != "" {
-//		c.JSON(200, gin.H{"rep": true})
-//	} else {
-//		c.JSON(200, gin.H{"rep": false})
-//	}
-//}
-
-//删除标签
-//func RuleTagDel(c *gin.Context) {
-//	_id, _ := c.GetPostForm("_id")
-//	//b := Mgo.Del("rule_tag", `{"_id":"`+_id+`"}`)
-//	b := Mgo.UpdateById("rule_tag", _id, `{"$set":{"delete":true}}`)
-//	if b {
-//		c.JSON(200, gin.H{"rep": true})
-//	} else {
-//		c.JSON(200, gin.H{"rep": false})
-//	}
-//}
-
-//编辑保存
-//func RuleTagEditSave(c *gin.Context) {
-//	_id, _ := c.GetPostForm("_id")
-//	contentStr, _ := c.GetPostForm("content")
-//	content := strings.Split(contentStr, ",")
-//	data, _ := Mgo.FindOne("rule_tag", `{"_id":"`+_id+`"}`)
-//	if (*data)["type"] == "正则" { //验证是否是正则
-//		for _, ct := range content {
-//			_, err := regexp.Compile(ct)
-//			if err != nil {
-//				c.JSON(200, gin.H{"rep": false})
-//				return
-//			}
-//		}
-//	}
-//	if len(*data) > 0 {
-//		set := map[string]interface{}{
-//			"name":    (*data)["name"],
-//			"version": (*data)["version"],
-//			"creater": (*data)["creater"],
-//			"intime":  (*data)["intime"],
-//			"type":    (*data)["type"],
-//			"content": content,
-//			"delete":  false,
-//		}
-//		b := Mgo.Update("rule_tag", `{"_id":"`+_id+`"}`, set, false, false)
-//		if b {
-//			c.JSON(200, gin.H{"rep": true})
-//		} else {
-//			c.JSON(200, gin.H{"rep": false})
-//		}
-//	} else {
-//		c.JSON(200, gin.H{"rep": false})
-//	}
-//}

+ 81 - 0
src/jy/admin/winnermanager/winnermanager.go

@@ -0,0 +1,81 @@
+package winnermanager
+
+import (
+	. "jy/admin"
+	. "jy/mongodbutil"
+	"log"
+	redis "qfw/util/redis"
+	"time"
+
+	"github.com/gin-gonic/gin"
+)
+
+func init() {
+	//列表、编辑
+	Admin.GET("/winnermanager/list", func(c *gin.Context) {
+		c.HTML(200, "winnermanager_list.html", nil)
+	})
+	Admin.POST("/winner/data", WinnerData)         //加载数据
+	Admin.POST("/winner/addwinner", AddWinner)     //新增
+	Admin.POST("/winner/delwinner", DelWinner)     //删除
+	Admin.POST("/winner/auditwinner", AuditWinner) //审核
+	//审核
+	//	Admin.GET("/winnermanager/audit", func(c *gin.Context) {
+	//		c.HTML(200, "winnermanager_audit.html", nil)
+	//	})
+}
+
+func WinnerData(c *gin.Context) {
+	data, _ := Mgo.Find("winner_new", nil, `{"_id":-1}`, nil, false, -1, -1)
+	for _, d := range *data {
+		timeStr := time.Unix(d["l_intime"].(int64), 0).Format(Date_Short_Layout)
+		d["l_intime"] = timeStr
+	}
+	c.JSON(200, gin.H{"data": data})
+}
+
+//新增
+func AddWinner(c *gin.Context) {
+	winnername, _ := c.GetPostForm("winnername")
+	update := make(map[string]interface{})
+	update["name"] = winnername
+	update["pici"] = time.Now().Unix()
+	update["s_source"] = "手动"
+	b := Mgo.Update("winner", `{"name":"`+winnername+`"}`, map[string]interface{}{
+		"$set": update}, true, false)
+	if b { //新增的直接更新winner redis
+		p := redis.PutCKV("winner", winnername, 1)
+		log.Println("Add--Update winner redis:", p)
+	}
+	c.JSON(200, gin.H{"rep": b})
+}
+
+//删除
+func DelWinner(c *gin.Context) {
+	_id, _ := c.GetPostForm("_id")
+	b := Mgo.Del("winner_new", `{"_id":"`+_id+`"}`)
+	if b {
+		c.JSON(200, gin.H{"rep": true})
+	} else {
+		c.JSON(200, gin.H{"rep": false})
+	}
+}
+
+//审核
+func AuditWinner(c *gin.Context) {
+	name, _ := c.GetPostForm("name")
+	_id, _ := c.GetPostForm("id")
+	update := make(map[string]interface{})
+	update["name"] = name
+	update["pici"] = time.Now().Unix()
+	update["s_source"] = "抽取"
+	b := Mgo.Update("winner", `{"name":"`+name+`"}`, map[string]interface{}{
+		"$set": update}, true, false)
+	//更新redis
+	if b {
+		p := redis.PutCKV("winner", name, 1)
+		log.Println("Audit--Update winner redis:", p)
+		Mgo.Del("winner_new", `{"_id":"`+_id+`"}`)
+	}
+	c.JSON(200, gin.H{"rep": b})
+}

+ 72 - 0
src/jy/extract/extract.go

@@ -8,6 +8,7 @@ import (
 	ju "jy/util"
 	"log"
 	qu "qfw/util"
+	redis "qfw/util/redis"
 	"regexp"
 	"strconv"
 	"strings"
@@ -760,6 +761,9 @@ func AnalysisSaveResult(j *ju.Job, task *TaskInfo) {
 			resulttmp[k] = v
 		}
 	}
+	//采购单位库,中标单位库
+	BuyerAndWinner(resulttmp)
+
 	b, p, c, d := TransmitData(resulttmp, _id) //抽取省份城市
 	//log.Println("抽取省份,城市,县结果=====", b, p, c, d)
 	resulttmp["district"] = d
@@ -767,6 +771,7 @@ func AnalysisSaveResult(j *ju.Job, task *TaskInfo) {
 		resulttmp["city"] = c
 		resulttmp["area"] = p
 	}
+
 	if task.TestColl == "" {
 		if len(tmp) > 0 { //保存抽取结果
 			task.DB.Update(task.SaveColl, `{"_id":"`+_id+`"}`, map[string]interface{}{"$set": tmp}, true, false)
@@ -778,3 +783,70 @@ func AnalysisSaveResult(j *ju.Job, task *TaskInfo) {
 		db.Mgo.Update(task.TestColl, `{"_id":"`+_id+`"}`, map[string]interface{}{"$set": resulttmp}, true, false)
 	}
 }
+
+func BuyerAndWinner(resulttmp map[string]interface{}) {
+	buyerarr := make([]string, 0)
+	winnerarr := make([]string, 0)
+	//分包的buyer,winner
+	if resulttmp["package"] != nil {
+		packagedata := resulttmp["package"].(map[string]map[string]interface{})
+		for _, val := range packagedata {
+			//result := val.(map[string]interface{})
+			if val["buyer"] != nil {
+				buyer := val["buyer"].(string)
+				if buyer != "" {
+					buyerarr = append(buyerarr, buyer)
+				}
+			}
+			if val["winner"] != nil {
+				winner := val["winner"].(string)
+				if winner != "" {
+					winnerarr = append(winnerarr, winner)
+				}
+			}
+		}
+	}
+	//外围抽取结果
+	if resulttmp["buyer"] != nil {
+		buyer := resulttmp["buyer"].(string)
+		if buyer != "" {
+			buyerarr = append(buyerarr, buyer)
+		}
+	}
+	if resulttmp["winner"] != nil {
+		winner := resulttmp["winner"].(string)
+		if winner != "" {
+			winnerarr = append(winnerarr, winner)
+		}
+	}
+	save := make(map[string]interface{})
+	save["s_source"] = "抽取"              //入库类型 手动或者抽取
+	save["l_intime"] = time.Now().Unix() //存库时间
+	save["isaudit"] = false              //是否审核 false未审核 true已审核
+	//buyer
+	for _, buyer := range buyerarr {
+		//log.Println("buyer---------------", buyer)
+		i := redis.GetInt("buyer", buyer)
+		//log.Println("iiiiiiiiiii", i)
+		if i == 0 {
+			buyernewdata, _ := db.Mgo.FindOne("buyer_new", `{"s_name":"`+buyer+`"}`)
+			if len(*buyernewdata) == 0 {
+				save["s_name"] = buyer
+				db.Mgo.Save("buyer_new", save)
+			}
+		}
+	}
+	//winner
+	for _, winner := range winnerarr {
+		//log.Println("winner---------------", winner)
+		j := redis.GetInt("winner", winner)
+		//log.Println("jjjjjjjjjjjj", j)
+		if j == 0 {
+			winnernewdata, _ := db.Mgo.FindOne("winner_new", `{"s_name":"`+winner+`"}`)
+			if len(*winnernewdata) == 0 {
+				save["s_name"] = winner
+				db.Mgo.Save("winner_new", save)
+			}
+		}
+	}
+}

+ 3 - 0
src/main.go

@@ -4,17 +4,20 @@ import (
 	_ "jy/admin"
 	_ "jy/admin/buyermanager"
 	_ "jy/admin/task"
+	_ "jy/admin/winnermanager"
 	"jy/extract"
 	_ "jy/front"
 	. "jy/router"
 	"jy/util"
 	"log"
 	qu "qfw/util"
+	redis "qfw/util/redis"
 )
 
 func init() {
 	qu.ReadConfig(&util.Config)
 	util.InitMgoPool()
+	redis.InitRedisBySize(qu.ObjToString(util.Config["redis"]), 50, 30, 240)
 }
 
 func main() {

+ 267 - 1
src/web/templates/admin/buyermanager_list.html

@@ -1,2 +1,268 @@
+{{template "inc"}}
+<!-- Main Header -->
+{{template "header"}}
+<!-- Left side column. 权限菜单 -->
+{{template "memu"}}
 
-buyer_list
+<div class="content-wrapper">
+	<section class="content-header">
+		<h1>
+			<small><button class="btn btn-primary" onclick="addbuyer()">新增采购单位</button></small>
+		</h1>
+		<ol class="breadcrumb">
+		  <li><a href="/admin/buyermanager/list"><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">
+		            <table id="datawinnerTable" class="table table-bordered table-hover">
+		              <thead>
+		              <tr>
+		                <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-info-addbuyer">
+  	<div class="modal-dialog">
+	    <form id="addbuyer-dataform" class="form-horizontal" role="form">
+		<div class="modal-content">
+		    <div class="modal-header">
+		        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+		          <span aria-hidden="true">&times;</span></button>
+		        <h4 class="modal-title">新增采购单位</h4>
+		    </div>
+		    <div class="modal-body">
+				<div class="form-group">
+				    <label for="code" id="labelname" class="col-sm-2 control-label">名称:</label>
+				    <div class="col-sm-10">
+					   	<input class="form-control" id="buyername"></input>
+					</div>
+				</div>
+				<div class="form-group">
+				    <label for="code" id="labelname" class="col-sm-2 control-label">类别:</label>
+				    <div class="col-sm-10" style="display:flex;">
+					   	<select class="form-control parentclass" id="parentclass" style="margin-right:15px;"></select>
+						<select class="form-control childclass" id="childclass"></select>
+					</div>
+				</div>
+		    </div>
+		    <div class="modal-footer">
+		        <button type="button" class="btn btn-default" data-dismiss="modal" onclick="reset()">取消</button>
+		        <button type="button" class="btn btn-primary" onclick="saveaddbuyer()">保存</button>
+	    	</div>
+		</div>
+	    <!-- /.modal-content -->
+	    </form>
+  	</div>
+  <!-- /.modal-dialog -->
+</div>
+<!-- /.modal -->
+
+<!--类别标签--> 
+<div class="modal fade" id="modal-info-class">
+  	<div class="modal-dialog">
+	    <form id="category-dataform" class="form-horizontal" role="form">
+		<div class="modal-content">
+		    <div class="modal-header">
+		        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+		          <span aria-hidden="true">&times;</span></button>
+		        <h4 class="modal-title" id="titleinfo">添加类别</h4>
+		    </div>
+		    <div class="modal-body">
+				<div class="form-group">
+				    <label for="code" id="labelname" class="col-sm-2 control-label">类别:</label>
+				    <div class="col-sm-10" style="display:flex;">
+					   	<select class="form-control parentclass" style="margin-right:15px;"></select>
+						<select class="form-control childclass"></select>
+					</div>
+				</div>
+		    </div>
+		    <div class="modal-footer">
+		        <button type="button" class="btn btn-default" data-dismiss="modal" onclick="reset()">取消</button>
+		        <button type="button" class="btn btn-primary" onclick="savecategory()">确认</button>
+	    	</div>
+		</div>
+	    <!-- /.modal-content -->
+	    </form>
+  	</div>
+  <!-- /.modal-dialog -->
+</div>
+<!-- /.modal -->
+
+{{template "dialog"}}
+{{template "footer"}}
+<script>
+var s_name = "";
+var id = "";
+var classifymap = {};
+var tabid = "";
+$(function () {
+	ttable=$('#datawinnerTable').DataTable({
+		"paging"      : true,
+		"lengthChange": false,
+		"searching"   : true,
+		"ordering"    : false,
+		"info"        : true,
+		"autoWidth"   : false,
+		"ajax": {
+			"url": "/admin/buyer/data",
+			"type": "post"
+		},
+		"language": {
+            "url": "/res/dist/js/dataTables.chinese.lang"
+        },
+		"columns": [
+           { "data": "s_name"},
+			{ "data": "s_source"},
+			{ "data": "l_intime"},
+			{ "data": "isaudit",render:function(val,a,row){
+				if(val == true){
+					return "是"
+				}else{
+					return "否"
+				}
+			}},
+			{ "data": "_id",render:function(val,a,row){
+				if(row["isaudit"] == false){
+					return '<a class="btn btn-sm btn-danger" onclick="delbuyer(\''+val+'\')" >删除</a>'+
+					'&nbsp;&nbsp;<a class="btn btn-sm btn-success" href="#" onclick="auditbuyer(\''+row.s_name+'\',\''+val+'\')">审核</a>'
+				}else{																			
+					return '<a class="btn btn-sm btn-danger" onclick="delbuyer(\''+val+'\')" >删除</a>'
+				}
+			}}
+       	]
+	});
+})
+
+function addbuyer(){
+	//查询分类数据
+	getbuyerclass("modal-info-addbuyer");
+	$("#modal-info-addbuyer").modal("show");
+}
+
+function getbuyerclass(id){
+	tabid = id;
+	$("#"+id+" .parentclass").empty();
+	$("#"+id+" .childclass").empty();
+	$("#"+id+" .parentclass").append("<option value=''>--请选择--</option>");
+	$("#"+id+" .childclass").append("<option value=''>--请选择--</option>");
+	$.ajax({
+		url:"/admin/buyer/buyerclass",
+		type:"post",
+		success:function(data){
+			var classify = data.data;
+			for(var i in classify){
+				var name = classify[i]["s_name"];
+				classifymap[name] = classify[i]["child"];
+				$("#"+id+" .parentclass").append("<option value='"+name+"'>"+name+"</option>");
+			}
+		}
+	})
+}
+//新增
+function saveaddbuyer(){
+	var buyername = $("#buyername").val();
+	var parentclass = $("#modal-info-addbuyer .parentclass").val();
+	var childclass = $("#modal-info-addbuyer .childclass").val();
+	if(parentclass == "" || childclass == "" || buyername == ""){
+		alert("表单填写不完整!");
+		return ;
+	}
+	$.ajax({
+		url:"/admin/buyer/addbuyer",
+		type:"post",
+		data:{"buyername":buyername,"parentclass":parentclass,"childclass":childclass},
+		success:function(r){
+			if(r.rep){
+				$("#modal-info-addbuyer").modal("hide");
+				showTip("保存成功", 1000, function() {});
+			}else{
+				showTip("保存失败", 1000, function() {});
+			}
+		}
+	})
+}
+
+//删除
+function delbuyer(_id){
+	showConfirm("确定删除?", function() {
+		$.ajax({
+			url:"/admin/buyer/delbuyer",
+			type:"post",
+			data:{"_id":_id},
+			success:function(r){
+				if(r.rep){				
+					ttable.ajax.reload();
+				}else{
+					showTip("删除失败", 1000, function() {});
+				}
+			}
+		})
+	});
+}
+
+//审核
+function auditbuyer(name,_id){
+	getbuyerclass("modal-info-class");
+	s_name = name;
+	id = _id;
+	$("#modal-info-class").modal("show");
+}
+
+function savecategory(){
+	var parentclass = $("#modal-info-class .parentclass").val();
+	var childclass = $("#modal-info-class .childclass").val();
+	if(parentclass == "" || childclass == ""){
+		alert("表单填写不完整!");
+		return ;
+	}
+	$("#modal-info-class").modal("hide");
+	showConfirm("确定通过?", function() {
+		$.ajax({
+			url:"/admin/buyer/auditbuyer",
+			type:"post",
+			data:{"name":s_name,"parentclass":parentclass,"childclass":childclass,"id":id},
+			success:function(r){
+				if(r.rep){				
+					ttable.ajax.reload();
+				}else{
+					showTip("审核失败", 1000, function() {});
+				}
+			}
+		})
+	});
+}
+
+$(document).ready(function(){
+	$(".parentclass").change(function(){
+	    var parentname = $(this).val();
+		var child = classifymap[parentname];
+		$(".childclass").empty();
+		if(child == undefined || child.length == 0 ){
+			$(".childclass").append("<option value=''>--请选择--</option>");
+		}else{
+			for(var i in child){
+				$(".childclass").append("<option value='"+child[i]+"'>"+child[i]+"</option>");
+			}
+		}
+	});
+});
+</script>

+ 3 - 3
src/web/templates/admin/com_memu.html

@@ -17,17 +17,17 @@
         </li>
 		<li><a href="/admin/version"><i class="fa fa-navicon"></i><span>版本管理</span></a></li>
 		<li class="treeview">
-          	<a href="#"><i class="fa fa-laptop"></i> <span>中标单位库</span>
+          	<a href="/admin/winner"><i class="fa fa-laptop"></i> <span>中标单位库</span>
             <span class="pull-right-container">
                 <i class="fa fa-angle-left pull-right"></i>
             </span>
           	</a>
           	<ul class="treeview-menu">
-	            <li><a href="/admin/rule/pre"><i class="fa fa-circle-o"></i>菜单</a></li>
+	            <li><a href="/admin/winnermanager/list"><i class="fa fa-circle-o"></i>中标单位审核</a></li>
 			</ul>
         </li>
 		<li class="treeview">
-          	<a href="#"><i class="fa fa-laptop"></i> <span>采购单位库</span>
+          	<a href="/admin/buyer"><i class="fa fa-laptop"></i> <span>采购单位库</span>
             <span class="pull-right-container">
                 <i class="fa fa-angle-left pull-right"></i>
             </span>

+ 1 - 1
src/web/templates/admin/versioninfo.html

@@ -126,7 +126,7 @@ $(function () {
 									}
 								})
 								if (bcon){	
-                                    console.log(obj)							
+                                    //console.log(obj)							
 									$.post("/admin/version/infosave",obj,function(data){
 										if(data&&data.rep){
 											window.location.href="/admin/version/info?vid={{.vid}}"			

+ 172 - 0
src/web/templates/admin/winnermanager_list.html

@@ -0,0 +1,172 @@
+{{template "inc"}}
+<!-- Main Header -->
+{{template "header"}}
+<!-- Left side column. 权限菜单 -->
+{{template "memu"}}
+
+<div class="content-wrapper">
+	<section class="content-header">
+		<h1>
+			<small><button class="btn btn-primary" onclick="addwinner()">新增中标单位</button></small>
+		</h1>
+		<ol class="breadcrumb">
+		  <li><a href="/admin/winnermanager/list"><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">
+		            <table id="datawinnerTable" class="table table-bordered table-hover">
+		              <thead>
+		              <tr>
+		                <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-info-addwinner">
+  	<div class="modal-dialog">
+	    <form id="addwinner-dataform" class="form-horizontal" role="form">
+		<div class="modal-content">
+		    <div class="modal-header">
+		        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+		          <span aria-hidden="true">&times;</span></button>
+		        <h4 class="modal-title">新增中标单位</h4>
+		    </div>
+		    <div class="modal-body">
+				<div class="form-group">
+				    <label for="code" id="labelname" class="col-sm-2 control-label">名称:</label>
+				    <div class="col-sm-10">
+					   	<input class="form-control" id="winnername"></input>
+					</div>
+				</div>
+		    </div>
+		    <div class="modal-footer">
+		        <button type="button" class="btn btn-default" data-dismiss="modal" onclick="reset()">取消</button>
+		        <button type="button" class="btn btn-primary" onclick="saveaddwinner()">保存</button>
+	    	</div>
+		</div>
+	    <!-- /.modal-content -->
+	    </form>
+  	</div>
+  <!-- /.modal-dialog -->
+</div>
+<!-- /.modal -->
+{{template "dialog"}}
+{{template "footer"}}
+<script>
+$(function () {
+	ttable=$('#datawinnerTable').DataTable({
+		"paging"      : false,
+		"lengthChange": false,
+		"searching"   : true,
+		"ordering"    : false,
+		"info"        : true,
+		"autoWidth"   : false,
+		"ajax": {
+			"url": "/admin/winner/data",
+			"type": "post"
+		},
+		"language": {
+            "url": "/res/dist/js/dataTables.chinese.lang"
+        },
+		"columns": [
+           { "data": "s_name"},
+			{ "data": "s_source"},
+			{ "data": "l_intime"},
+			{ "data": "isaudit",render:function(val,a,row){
+				if(val == true){
+					return "是"
+				}else{
+					return "否"
+				}
+			}},
+			{ "data": "_id",render:function(val,a,row){
+				if(row["isaudit"] == false){
+					return '<a class="btn btn-sm btn-danger" onclick="delwinner(\''+val+'\')" >删除</a>'+
+					'&nbsp;&nbsp;<a class="btn btn-sm btn-success" href="#" onclick="auditwinner(\''+row.s_name+'\',\''+val+'\')">审核</a>'
+				}else{																			
+					return '<a class="btn btn-sm btn-danger" onclick="delwinner(\''+val+'\')" >删除</a>'
+				}
+			}}
+       	]
+	});
+})
+function addwinner(){
+	$("#modal-info-addwinner").modal("show");
+}
+//保存
+function saveaddwinner(){
+	var winnername = $("#winnername").val();
+	if(winnername != ""){
+		$.ajax({
+			url:"/admin/winner/addwinner",
+			type:"post",
+			data:{"winnername":winnername},
+			success:function(r){
+				if(r.rep){
+					$("#modal-info-addwinner").modal("hide");
+					showTip("保存成功", 1000, function() {});
+				}else{
+					showTip("保存失败", 1000, function() {});
+				}
+			}
+		})
+	}else{
+		alert("表单填写不完整!");
+		return ;
+	}
+	
+}
+
+//删除
+function delwinner(_id){
+	showConfirm("确定删除?", function() {
+		$.ajax({
+			url:"/admin/winner/delwinner",
+			type:"post",
+			data:{"_id":_id},
+			success:function(r){
+				if(r.rep){				
+					ttable.ajax.reload();
+				}else{
+					showTip("删除失败", 1000, function() {});
+				}
+			}
+		})
+	});
+}
+
+//审核
+function auditwinner(name,_id){
+	showConfirm("确定通过?", function() {
+		$.ajax({
+			url:"/admin/winner/auditwinner",
+			type:"post",
+			data:{"name":name,"id":_id},
+			success:function(r){
+				if(r.rep){				
+					ttable.ajax.reload();
+				}else{
+					showTip("审核失败", 1000, function() {});
+				}
+			}
+		})
+	});
+}
+</script>