2
3
lining 5 سال پیش
والد
کامیت
e3c3055826
19فایلهای تغییر یافته به همراه2592 افزوده شده و 21 حذف شده
  1. 28 0
      src/dashoo.cn/backend/api/business/oilsupplier/basisbuild/oilbasisbuild.go
  2. 59 0
      src/dashoo.cn/backend/api/business/oilsupplier/basisbuild/oilbasisbuildService.go
  3. 44 0
      src/dashoo.cn/backend/api/business/oilsupplier/basisbuild/oilbasisbuildSession.go
  4. 5 2
      src/dashoo.cn/backend/api/business/oilsupplier/goodsaptitude/oilgoodsaptitudeService.go
  5. 1 1
      src/dashoo.cn/backend/api/business/oilsupplier/goodsaptitude/oilgoodsaptitudeSession.go
  6. 122 0
      src/dashoo.cn/backend/api/business/oilsupplier/technologyservice/oiltechnologyservice.go
  7. 23 0
      src/dashoo.cn/backend/api/business/oilsupplier/technologyservice/oiltechnologyserviceService.go
  8. 44 0
      src/dashoo.cn/backend/api/business/oilsupplier/technologyservice/oiltechnologyserviceSession.go
  9. 15 0
      src/dashoo.cn/backend/api/business/oilsupplier/technologyserviceclass/oiltechnologyserviceclass.go
  10. 7 1
      src/dashoo.cn/backend/api/controllers/base.go
  11. 488 0
      src/dashoo.cn/backend/api/controllers/oilsupplier/basisbuild.go
  12. 1 1
      src/dashoo.cn/backend/api/controllers/oilsupplier/goodsaptitude.go
  13. 612 1
      src/dashoo.cn/backend/api/controllers/oilsupplier/technologyservice.go
  14. 41 2
      src/dashoo.cn/frontend_web/src/api/oilsupplier/basisbuild.js
  15. 41 2
      src/dashoo.cn/frontend_web/src/api/oilsupplier/technologyservice.js
  16. 103 1
      src/dashoo.cn/frontend_web/src/pages/oilsupplier/basisbuild/_opera/showdelcertsub.vue
  17. 429 5
      src/dashoo.cn/frontend_web/src/pages/oilsupplier/basisbuild/index.vue
  18. 102 0
      src/dashoo.cn/frontend_web/src/pages/oilsupplier/technologyservice/_opera/showdelcertsub.vue
  19. 427 5
      src/dashoo.cn/frontend_web/src/pages/oilsupplier/technologyservice/index.vue

+ 28 - 0
src/dashoo.cn/backend/api/business/oilsupplier/basisbuild/oilbasisbuild.go

@@ -42,3 +42,31 @@ type OilBasisBuild struct {
 	ModifiedUserId    int       `xorm:"INT(10)"`
 	ModifiedBy        string    `xorm:"VARCHAR(50)"`
 }
+
+type OilBasisBuildF struct {
+	F01               string    `xorm:"default '' VARCHAR(2)"`
+	F02               string    `xorm:"default '' VARCHAR(2)"`
+	F03               string    `xorm:"default '' VARCHAR(2)"`
+	F04               string    `xorm:"default '' VARCHAR(2)"`
+	F05               string    `xorm:"default '' VARCHAR(2)"`
+	F06               string    `xorm:"default '' VARCHAR(2)"`
+	F07               string    `xorm:"default '' VARCHAR(2)"`
+	F08               string    `xorm:"default '' VARCHAR(2)"`
+	F09               string    `xorm:"default '' VARCHAR(2)"`
+	F10               string    `xorm:"default '' VARCHAR(2)"`
+	F11               string    `xorm:"default '' VARCHAR(2)"`
+	F12               string    `xorm:"default '' VARCHAR(2)"`
+	F13               string    `xorm:"default '' VARCHAR(2)"`
+	F14               string    `xorm:"default '' VARCHAR(2)"`
+	F15               string    `xorm:"default '' VARCHAR(2)"`
+	F16               string    `xorm:"default '' VARCHAR(2)"`
+	F17               string    `xorm:"default '' VARCHAR(2)"`
+	F18               string    `xorm:"default '' VARCHAR(2)"`
+	F19               string    `xorm:"default '' VARCHAR(2)"`
+	F20               string    `xorm:"default '' VARCHAR(2)"`
+	F21               string    `xorm:"default '' VARCHAR(2)"`
+	F22               string    `xorm:"default '' VARCHAR(2)"`
+	F23               string    `xorm:"default '' VARCHAR(2)"`
+	F24               string    `xorm:"default '' VARCHAR(2)"`
+	F25               string    `xorm:"default '' VARCHAR(2)"`
+}

+ 59 - 0
src/dashoo.cn/backend/api/business/oilsupplier/basisbuild/oilbasisbuildService.go

@@ -3,6 +3,8 @@ package basisbuild
 import (
 	. "dashoo.cn/backend/api/mydb"
 	"github.com/go-xorm/xorm"
+	"strconv"
+	. "dashoo.cn/utils/db"
 )
 
 type OilBasisBuildService struct {
@@ -14,3 +16,60 @@ func GetOilBasisBuildService(xormEngine *xorm.Engine) *OilBasisBuildService {
 	s.DBE = xormEngine
 	return s
 }
+
+func (s *OilBasisBuildService) GetMyPagingEntitiesWithOrderBytbl(tableName string, pageIndex, itemsPerPage int64, order string, asc bool, entitiesPtr interface{}, where ...string) (total int64) {
+	var err error
+	var resultsSlice []map[string][]byte
+	//获取表名
+	if len(where) == 0 {
+		if asc {
+			err = s.DBE.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
+		} else {
+			err = s.DBE.Table(tableName).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
+		}
+		//获取总记录数
+		sql := "SELECT COUNT(*) AS total FROM " + tableName
+		resultsSlice, err = s.DBE.Query(sql)
+
+	} else {
+		if asc {
+			err = s.DBE.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Asc(order).Find(entitiesPtr)
+		} else {
+			err = s.DBE.Table(tableName).Where(where[0]).Limit(int(itemsPerPage), (int(pageIndex)-1)*int(itemsPerPage)).Desc(order).Find(entitiesPtr)
+		}
+		sql := "SELECT COUNT(*) AS total FROM " + tableName + " where " + where[0]
+		resultsSlice, err = s.DBE.Query(sql)
+	}
+	//LogError(err)
+	if len(resultsSlice) > 0 {
+		results := resultsSlice[0]
+		for _, value := range results {
+			total, err = strconv.ParseInt(string(value), 10, 64)
+			LogError(err)
+			break
+		}
+	}
+	return total
+}
+
+func (s *OilBasisBuildService) GetBasisBuildServiceF(entity interface{}, where string) error {
+	sql := "select F01,F02,F03,F04,F05,F06,F07,F08,F09,F10,"
+	sql += "F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,"
+	sql += "F21,F22,F23,F24,F25 "
+	sql += " from OilBasisBuild "
+	if where != "" {
+		sql = sql + " where " + where
+	}
+	err := s.DBE.Sql(sql).Find(entity)
+
+	return err
+}
+
+func (s *OilBasisBuildService) DeleteTable(tableName, where string) error {
+	sql := "DELETE FROM " + tableName
+	if where != "" {
+		sql = sql + " Where " + where
+	}
+	_,err := s.DBE.Query(sql)
+	return err
+}

+ 44 - 0
src/dashoo.cn/backend/api/business/oilsupplier/basisbuild/oilbasisbuildSession.go

@@ -0,0 +1,44 @@
+package basisbuild
+
+import (
+	. "dashoo.cn/backend/api/mydb"
+	"github.com/go-xorm/xorm"
+)
+
+type OilBasisbuildSession struct {
+	MySessionBase
+}
+
+func GetOilBasisbuildSession(session *xorm.Session) *OilBasisbuildSession {
+	s := new(OilBasisbuildSession)
+	s.Session = session
+	return s
+}
+
+func (s *OilBasisbuildSession) TruncateTable(tableName string) error {
+	sql := "TRUNCATE TABLE " + tableName
+	_,err := s.Session.Query(sql)
+	return err
+}
+
+func (s *OilBasisbuildSession) GetFCode() string {
+	sql := "select group_concat(Code ORDER BY SortCode, Id) FCodes from `Base_TableHeader` where CategoryCode= '02'"
+	results, err :=s.Session.QueryString(sql)
+	if err != nil {
+		return ""
+	}
+	return results[0]["FCodes"]
+}
+
+func (s *OilBasisbuildSession) InsertTmpOilBasisBuild(fcode, val string) error {
+	sql := "INSERT INTO `Tmp_OilBasisBuild` (" + fcode + ") "
+	sql += " VALUES (" + val + ")"
+	_, err := s.Session.Query(sql)
+	return err
+}
+
+func (s *OilBasisbuildSession) InsertBasisBuild(fromTableName, toTableName string) error {
+	sql := "INSERT INTO " + toTableName + " SELECT * FROM " + fromTableName
+	_,err := s.Session.Query(sql)
+	return err
+}

+ 5 - 2
src/dashoo.cn/backend/api/business/oilsupplier/goodsaptitude/oilgoodsaptitudeService.go

@@ -131,8 +131,11 @@ func (s *OilGoodsAptitudeService) GetGoodsAptitudeF(entity interface{}, where st
 	return err
 }
 
-func (s *OilGoodsAptitudeService) TruncateTable(tableName string) error {
-	sql := "TRUNCATE TABLE " + tableName
+func (s *OilGoodsAptitudeService) DeleteTable(tableName, where string) error {
+	sql := "DELETE FROM " + tableName
+	if where != "" {
+		sql = sql + " Where " + where
+	}
 	_,err := s.DBE.Query(sql)
 	return err
 }

+ 1 - 1
src/dashoo.cn/backend/api/business/oilsupplier/goodsaptitude/oilgoodsaptitudeSession.go

@@ -55,7 +55,7 @@ func (s *OilGoodsAptitudeSession) InsertGoodsAptitude(fromTableName, toTableName
 }
 
 func (s *OilGoodsAptitudeSession) GetFCode() string {
-	sql := "select group_concat(Code ORDER BY SortCode) FCodes from `Base_TableHeader` where CategoryCode= '01'"
+	sql := "select group_concat(Code ORDER BY SortCode, Id) FCodes from `Base_TableHeader` where CategoryCode= '01'"
 	results, err :=s.Session.QueryString(sql)
 	if err != nil {
 		return ""

+ 122 - 0
src/dashoo.cn/backend/api/business/oilsupplier/technologyservice/oiltechnologyservice.go

@@ -179,4 +179,126 @@ type OilTechnologyServiceAndCode struct {
 	ModifiedOn        time.Time `xorm:"DATETIME"`
 	ModifiedUserId    int       `xorm:"INT(10)"`
 	ModifiedBy        string    `xorm:"VARCHAR(50)"`
+}
+
+type Tmp_OilTechnologyService struct {
+	Id                int       `xorm:"not null pk autoincr INT(10)"`
+	ClassId           int       `xorm:"not null default '' comment('分类ID') INT(11)"`
+	OrgId             int       `xorm:"default 0 comment('部门ID') INT(10)"`
+	OrgName           string    `xorm:"default '' comment('部门名称') VARCHAR(100)"`
+	F01               string    `xorm:"default '' VARCHAR(2)"`
+	F02               string    `xorm:"default '' VARCHAR(2)"`
+	F03               string    `xorm:"default '' VARCHAR(2)"`
+	F04               string    `xorm:"default '' VARCHAR(2)"`
+	F05               string    `xorm:"default '' VARCHAR(2)"`
+	F06               string    `xorm:"default '' VARCHAR(2)"`
+	F07               string    `xorm:"default '' VARCHAR(2)"`
+	F08               string    `xorm:"default '' VARCHAR(2)"`
+	F09               string    `xorm:"default '' VARCHAR(2)"`
+	F10               string    `xorm:"default '' VARCHAR(2)"`
+	F11               string    `xorm:"default '' VARCHAR(2)"`
+	F12               string    `xorm:"default '' VARCHAR(2)"`
+	F13               string    `xorm:"default '' VARCHAR(2)"`
+	F14               string    `xorm:"default '' VARCHAR(2)"`
+	F15               string    `xorm:"default '' VARCHAR(2)"`
+	F16               string    `xorm:"default '' VARCHAR(2)"`
+	F17               string    `xorm:"default '' VARCHAR(2)"`
+	F18               string    `xorm:"default '' VARCHAR(2)"`
+	F19               string    `xorm:"default '' VARCHAR(2)"`
+	F20               string    `xorm:"default '' VARCHAR(2)"`
+	F21               string    `xorm:"default '' VARCHAR(2)"`
+	F22               string    `xorm:"default '' VARCHAR(2)"`
+	F23               string    `xorm:"default '' VARCHAR(2)"`
+	F24               string    `xorm:"default '' VARCHAR(2)"`
+	F25               string    `xorm:"default '' VARCHAR(2)"`
+	F26               string    `xorm:"default '' VARCHAR(2)"`
+	F27               string    `xorm:"default '' VARCHAR(2)"`
+	F28               string    `xorm:"default '' VARCHAR(2)"`
+	F29               string    `xorm:"default '' VARCHAR(2)"`
+	F30               string    `xorm:"default '' VARCHAR(2)"`
+	F31               string    `xorm:"default '' VARCHAR(2)"`
+	F32               string    `xorm:"default '' VARCHAR(2)"`
+	F33               string    `xorm:"default '' VARCHAR(2)"`
+	F34               string    `xorm:"default '' VARCHAR(2)"`
+	F35               string    `xorm:"default '' VARCHAR(2)"`
+	F36               string    `xorm:"default '' VARCHAR(2)"`
+	F37               string    `xorm:"default '' VARCHAR(2)"`
+	F38               string    `xorm:"default '' VARCHAR(2)"`
+	F39               string    `xorm:"default '' VARCHAR(2)"`
+	F40               string    `xorm:"default '' VARCHAR(2)"`
+	F41               string    `xorm:"default '' VARCHAR(2)"`
+	F42               string    `xorm:"default '' VARCHAR(2)"`
+	F43               string    `xorm:"default '' VARCHAR(2)"`
+	F44               string    `xorm:"default '' VARCHAR(2)"`
+	F45               string    `xorm:"default '' VARCHAR(2)"`
+	F46               string    `xorm:"default '' VARCHAR(2)"`
+	F47               string    `xorm:"default '' VARCHAR(2)"`
+	F48               string    `xorm:"default '' VARCHAR(2)"`
+	F49               string    `xorm:"default '' VARCHAR(2)"`
+	F50               string    `xorm:"default '' VARCHAR(2)"`
+	F51               string    `xorm:"default '' VARCHAR(2)"`
+	F52               string    `xorm:"default '' VARCHAR(2)"`
+	Remark            string    `xorm:"comment('备注') VARCHAR(500)"`
+	DeletionStateCode int       `xorm:"default 0 comment('删除状态,0正常,1已删除') INT(10)"`
+	CreateOn          time.Time `xorm:"DATETIME"`
+	CreateUserId      int       `xorm:"INT(10)"`
+	CreateBy          string    `xorm:"VARCHAR(50)"`
+	ModifiedOn        time.Time `xorm:"DATETIME"`
+	ModifiedUserId    int       `xorm:"INT(10)"`
+	ModifiedBy        string    `xorm:"VARCHAR(50)"`
+}
+
+type OilTechnologyF struct {
+	F01               string    `xorm:"default '' VARCHAR(2)"`
+	F02               string    `xorm:"default '' VARCHAR(2)"`
+	F03               string    `xorm:"default '' VARCHAR(2)"`
+	F04               string    `xorm:"default '' VARCHAR(2)"`
+	F05               string    `xorm:"default '' VARCHAR(2)"`
+	F06               string    `xorm:"default '' VARCHAR(2)"`
+	F07               string    `xorm:"default '' VARCHAR(2)"`
+	F08               string    `xorm:"default '' VARCHAR(2)"`
+	F09               string    `xorm:"default '' VARCHAR(2)"`
+	F10               string    `xorm:"default '' VARCHAR(2)"`
+	F11               string    `xorm:"default '' VARCHAR(2)"`
+	F12               string    `xorm:"default '' VARCHAR(2)"`
+	F13               string    `xorm:"default '' VARCHAR(2)"`
+	F14               string    `xorm:"default '' VARCHAR(2)"`
+	F15               string    `xorm:"default '' VARCHAR(2)"`
+	F16               string    `xorm:"default '' VARCHAR(2)"`
+	F17               string    `xorm:"default '' VARCHAR(2)"`
+	F18               string    `xorm:"default '' VARCHAR(2)"`
+	F19               string    `xorm:"default '' VARCHAR(2)"`
+	F20               string    `xorm:"default '' VARCHAR(2)"`
+	F21               string    `xorm:"default '' VARCHAR(2)"`
+	F22               string    `xorm:"default '' VARCHAR(2)"`
+	F23               string    `xorm:"default '' VARCHAR(2)"`
+	F24               string    `xorm:"default '' VARCHAR(2)"`
+	F25               string    `xorm:"default '' VARCHAR(2)"`
+	F26               string    `xorm:"default '' VARCHAR(2)"`
+	F27               string    `xorm:"default '' VARCHAR(2)"`
+	F28               string    `xorm:"default '' VARCHAR(2)"`
+	F29               string    `xorm:"default '' VARCHAR(2)"`
+	F30               string    `xorm:"default '' VARCHAR(2)"`
+	F31               string    `xorm:"default '' VARCHAR(2)"`
+	F32               string    `xorm:"default '' VARCHAR(2)"`
+	F33               string    `xorm:"default '' VARCHAR(2)"`
+	F34               string    `xorm:"default '' VARCHAR(2)"`
+	F35               string    `xorm:"default '' VARCHAR(2)"`
+	F36               string    `xorm:"default '' VARCHAR(2)"`
+	F37               string    `xorm:"default '' VARCHAR(2)"`
+	F38               string    `xorm:"default '' VARCHAR(2)"`
+	F39               string    `xorm:"default '' VARCHAR(2)"`
+	F40               string    `xorm:"default '' VARCHAR(2)"`
+	F41               string    `xorm:"default '' VARCHAR(2)"`
+	F42               string    `xorm:"default '' VARCHAR(2)"`
+	F43               string    `xorm:"default '' VARCHAR(2)"`
+	F44               string    `xorm:"default '' VARCHAR(2)"`
+	F45               string    `xorm:"default '' VARCHAR(2)"`
+	F46               string    `xorm:"default '' VARCHAR(2)"`
+	F47               string    `xorm:"default '' VARCHAR(2)"`
+	F48               string    `xorm:"default '' VARCHAR(2)"`
+	F49               string    `xorm:"default '' VARCHAR(2)"`
+	F50               string    `xorm:"default '' VARCHAR(2)"`
+	F51               string    `xorm:"default '' VARCHAR(2)"`
+	F52               string    `xorm:"default '' VARCHAR(2)"`
 }

+ 23 - 0
src/dashoo.cn/backend/api/business/oilsupplier/technologyservice/oiltechnologyserviceService.go

@@ -64,4 +64,27 @@ func (s *OilTechnologyServiceService) GetTechList(techclass, where string) []Tec
 	List := make([]TechnologyBusiness, 0)
 	utils.DBE.Sql(sql).Find(&List)
 	return List
+}
+
+func (s *OilTechnologyServiceService) GetOilTechnologyF(entity interface{}, where string) error {
+	sql := "select F01,F02,F03,F04,F05,F06,F07,F08,F09,F10,"
+	sql += "F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,"
+	sql += "F21,F22,F23,F24,F25,F26,F27,F28,F29,F30,"
+	sql += "F31,F32,F33,F34,F35,F36,F37,F38,F39,F40,"
+	sql += "F41,F42,F43,F44,F45,F46,F47,F48,F49,F50,F51,F52 from OilTechnologyService "
+	if where != "" {
+		sql = sql + " where " + where
+	}
+	err := s.DBE.Sql(sql).Find(entity)
+
+	return err
+}
+
+func (s *OilTechnologyServiceService) DeleteTable(tableName, where string) error {
+	sql := "DELETE FROM " + tableName
+	if where != "" {
+		sql = sql + " Where " + where
+	}
+	_,err := s.DBE.Query(sql)
+	return err
 }

+ 44 - 0
src/dashoo.cn/backend/api/business/oilsupplier/technologyservice/oiltechnologyserviceSession.go

@@ -0,0 +1,44 @@
+package technologyservice
+
+import (
+	. "dashoo.cn/backend/api/mydb"
+	"github.com/go-xorm/xorm"
+)
+
+type OilTechnologySession struct {
+	MySessionBase
+}
+
+func GetOilTechnologySession(session *xorm.Session) *OilTechnologySession {
+	s := new(OilTechnologySession)
+	s.Session = session
+	return s
+}
+
+func (s *OilTechnologySession) TruncateTable(tableName string) error {
+	sql := "TRUNCATE TABLE " + tableName
+	_,err := s.Session.Query(sql)
+	return err
+}
+
+func (s *OilTechnologySession) GetFCode() string {
+	sql := "select group_concat(Code ORDER BY SortCode, Id) FCodes from `Base_TableHeader` where CategoryCode= '03'"
+	results, err :=s.Session.QueryString(sql)
+	if err != nil {
+		return ""
+	}
+	return results[0]["FCodes"]
+}
+
+func (s *OilTechnologySession) InsertTmpTechnology(fcode, val string) error {
+	sql := "INSERT INTO `Tmp_OilTechnologyService` (" + fcode + ") "
+	sql += " VALUES (" + val + ")"
+	_, err := s.Session.Query(sql)
+	return err
+}
+
+func (s *OilTechnologySession) InsertTechnology(fromTableName, toTableName string) error {
+	sql := "INSERT INTO " + toTableName + " SELECT * FROM " + fromTableName
+	_,err := s.Session.Query(sql)
+	return err
+}

+ 15 - 0
src/dashoo.cn/backend/api/business/oilsupplier/technologyserviceclass/oiltechnologyserviceclass.go

@@ -18,3 +18,18 @@ type OilTechnologyServiceClass struct {
 	ModifiedUserId    int       `xorm:"INT(10)"`
 	ModifiedBy        string    `xorm:"VARCHAR(50)"`
 }
+
+type Tmp_OilTechnologyServiceClass struct {
+	Id                int       `xorm:"not null pk autoincr INT(10)"`
+	Code              string    `xorm:"not null default '' comment('编码') VARCHAR(8)"`
+	Name              string    `xorm:"not null default '' comment('名称') VARCHAR(50)"`
+	ParentId          int       `xorm:"not null default 0 comment('上级节点ID') INT(10)"`
+	Remark            string    `xorm:"comment('备注') VARCHAR(500)"`
+	DeletionStateCode int       `xorm:"default 0 comment('删除状态,0正常,1已删除') INT(10)"`
+	CreateOn          time.Time `xorm:"DATETIME"`
+	CreateUserId      int       `xorm:"INT(10)"`
+	CreateBy          string    `xorm:"VARCHAR(50)"`
+	ModifiedOn        time.Time `xorm:"DATETIME"`
+	ModifiedUserId    int       `xorm:"INT(10)"`
+	ModifiedBy        string    `xorm:"VARCHAR(50)"`
+}

+ 7 - 1
src/dashoo.cn/backend/api/controllers/base.go

@@ -276,11 +276,17 @@ var (
 	Tmp_OilGoodsAptitudeName                 string = "tmp_OilGoodsAptitude"
 	Tmp_OilGoodsAptitudeClassName            string = "tmp_OilGoodsAptitudeClass"
 	TmpOilSupplierCertSubName                string = "tmp_OilSupplierCertSub"
+	TmpOilBasisBuildName                     string = "Tmp_OilBasisBuild"
 	OilSupplierSceneFileName                 string = "OilSupplierSceneFile" // 现场考察报告
 	OilCatalogSubName                        string = "OilCatalogSub" // 目录提交审核的主表
 	OilAppendChangeItemName                  string = "OilAppendChangeItem" // 增项信息变更的表
 	OilAppendChangeDetailName                string = "OilAppendChangeDetail" // 增项资质变更
-	OilAnnualChangeDetailName                  string = "OilAnnualChangeDetail"             //年审资质变更表
+	OilAnnualChangeDetailName                string = "OilAnnualChangeDetail"             //年审资质变更表
+	Tmp_TechnologyName                       string = "Tmp_OilTechnologyService"             //技术服务资质编码临时表
+	Tmp_TechnologyClassName                  string = "Tmp_OilTechnologyServiceClass"             //
+	ImportTechsrvDetailViewName              string = "import_techsrv_detail_view" //技术服务
+	ImportTechsrvClassViewName               string = "import_techsrv_class_view"  //技术服务
+
 )
 
 //分页信息及数据

+ 488 - 0
src/dashoo.cn/backend/api/controllers/oilsupplier/basisbuild.go

@@ -1,9 +1,14 @@
 package oilsupplier
 
 import (
+	"dashoo.cn/backend/api/business/oilsupplier/suppliercert"
+	"dashoo.cn/backend/api/business/oilsupplier/supplierdataentry"
+	"dashoo.cn/backend/api/business/oilsupplier/tableheader"
+	"dashoo.cn/backend/api/business/workflow"
 	"encoding/json"
 	"fmt"
 	"github.com/tealeg/xlsx"
+	"log"
 	"os"
 	"reflect"
 	"strconv"
@@ -624,10 +629,19 @@ func (this *OilBasisBuildController) DelTmpSupplierCertSub() {
 	session.Begin()
 	defer session.Close()
 
+	supplierId := this.GetString("SupplierId")
+	id := this.GetString("Id")
+
 	svc := goodsaptitude.GetOilGoodsAptitudeSession(session)
 
 	var supplierCertSubList []suppliercertsub.Tmp_OilSupplierCertSub
 	wheredel := "1=1 and SupplierTypeCode = '02'"
+	if supplierId != "" {
+		wheredel += " and SupplierId=" + supplierId
+	}
+	if id != "" {
+		wheredel += " and Id=" + id
+	}
 	svc.GetEntitysByWhere(TmpOilSupplierCertSubName, wheredel, &supplierCertSubList)
 
 	var errinfo ErrorInfo
@@ -735,4 +749,478 @@ func (this *OilBasisBuildController) FindInconformity() {
 		this.Data["json"] = &errinfo
 		this.ServeJSON()
 	}
+}
+
+// @Title 获取列表新导入的列表
+// @Description get user by token
+// @Success 200 {object} []goodsaptitude.OilGoodsAptitude
+// @router /importlist [get]
+func (this *OilBasisBuildController) GetImportEntityList() {
+
+	//获取分页信息
+	page := this.GetPageInfoForm()
+	where := " 1=1 "
+	orderby := "Code"
+	asc := true
+	Order := this.GetString("Order")
+	Prop := this.GetString("Prop")
+	if Order != "" && Prop != "" {
+		orderby = Prop
+		if Order == "asc" {
+			asc = true
+		} else {
+			asc = false
+		}
+	}
+	Code := this.GetString("Code")
+	Name := this.GetString("Name")
+
+	if Code != "" {
+		where = where + " and Code like '%" + Code + "%'"
+	}
+
+	if Name != "" {
+		where = where + " and Name like '%" + Name + "%'"
+	}
+
+	svc := basisbuild.GetOilBasisBuildService(utils.DBE)
+	var list []basisbuild.OilBasisBuild
+	total := svc.GetMyPagingEntitiesWithOrderBytbl(TmpOilBasisBuildName, page.CurrentPage, page.Size, orderby, asc, &list, where)
+	var datainfo DataInfo
+	datainfo.Items = list
+	datainfo.CurrentItemCount = total
+	datainfo.PageIndex = page.CurrentPage
+	datainfo.ItemsPerPage = page.Size
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title get 导入excel
+// @Description get SampleType by token
+// @Success 200 {object} sampletype.SampleType
+// @router /importexcel [get]
+func (this *OilBasisBuildController) ImportExcel() {
+
+	url := this.GetString("ExcelUrl")
+	var errorinfo ErrorInfo
+	if url == "" {
+		errorinfo.Code = -2
+		errorinfo.Message = "导入失败!"
+		this.Data["json"] = &errorinfo
+		this.ServeJSON()
+	}
+
+	session := utils.DBE.NewSession()
+	err := session.Begin()
+	svc := basisbuild.GetOilBasisbuildSession(session)
+
+	err = svc.TruncateTable(TmpOilBasisBuildName)
+
+	if err != nil {
+		session.Rollback()
+		errorinfo.Code = -2
+		errorinfo.Message = "导入失败!"
+		this.Data["json"] = &errorinfo
+		this.ServeJSON()
+	}
+
+	_dir := utils.Cfg.MustValue("file", "tmplateDir") + "xlsx"
+	filename := strconv.Itoa(int(time.Now().Unix())) + ".xlsx"
+	utils.DownloadFile(url, filename, _dir)
+	t := time.Now()
+	filePath := utils.Cfg.MustValue("file", "tmplateDir") + "xlsx/" + filename
+	xlFile, err := xlsx.OpenFile(filePath)
+	var errLineNum string
+
+	//excelFileName := "F:/物资类项目与资质对照表-2017.xlsx"
+	if err != nil {
+		fmt.Printf("open failed: %s\n", err)
+	}
+	var sheet = xlFile.Sheets[0]
+
+	// 插入字段
+	Fstrs := svc.GetFCode()
+	Fstrs = "Code,Name," + Fstrs
+	columnArr := strings.Split(Fstrs, ",")
+
+	defer func() {
+		session.Close()
+	}()
+
+	codemap := make(map[string]int)
+	for i := 1; i < len(sheet.Rows); i++ {
+		lineNo := strconv.Itoa(i + 1)
+		fmt.Println(lineNo)
+		this.OperationCell(svc, lineNo, columnArr, codemap, sheet.Rows[i].Cells, &errLineNum)
+	}
+	os.Remove(filePath)
+
+	if errLineNum != "" {
+		session.Rollback()
+		errorinfo.Code = -1
+		errorinfo.Message = "导入失败!错误行号:" + errLineNum
+		this.Data["json"] = &errorinfo
+		this.ServeJSON()
+	} else {
+		session.Commit()
+		elapsed := time.Since(t)
+		log.Println(elapsed)
+		errorinfo.Code = 0
+		errorinfo.Message = "导入成功!"
+		this.Data["json"] = &errorinfo
+		this.ServeJSON()
+	}
+}
+
+func (this *OilBasisBuildController) OperationCell(svc *basisbuild.OilBasisbuildSession, lineNo string, columnArr []string, codemap map[string]int, cellsArr []*xlsx.Cell, errLineNum *string) {
+
+	defer func() {
+		if err := recover(); err != nil {
+			log.Println("err"+lineNo, err)
+			*errLineNum += lineNo + ","
+		}
+	}()
+	cellsArrLen := len(cellsArr)
+	var valstr = ""
+
+	for i := 0; i < cellsArrLen;i++ {
+		valstr += "'" + cellsArr[i].String() + "',"
+	}
+	valstr = strings.Trim(valstr, ",")
+	valstr = strings.Replace(valstr, "是", "1", -1)
+	log.Println(cellsArr[6].String() + "==" + valstr)
+	var columnstr= ""
+	for l := 0; l < cellsArrLen; l++ {
+		columnstr += columnArr[l] + ","
+	}
+	columnstr = strings.Trim(columnstr, ",")
+
+	err := svc.InsertTmpOilBasisBuild(columnstr, valstr)
+	if err != nil {
+		panic(err)
+	}
+
+}
+
+// @Title get 清空导入的信息
+// @Description get SampleType by token
+// @Success 200 {object} sampletype.SampleType
+// @router /truncateimport [get]
+func (this *OilBasisBuildController) TruncateImport() {
+	session := utils.DBE.NewSession()
+	err := session.Begin()
+	defer session.Close()
+	svc := basisbuild.GetOilBasisbuildSession(session)
+	err = svc.TruncateTable(TmpOilBasisBuildName)
+
+	var errorinfo ErrorInfo
+	if err != nil {
+		session.Rollback()
+		errorinfo.Code = -1
+		errorinfo.Message = "删除失败!"
+		this.Data["json"] = &errorinfo
+		this.ServeJSON()
+	}
+	session.Commit()
+	errorinfo.Code = 0
+	errorinfo.Message = "删除成功!"
+	this.Data["json"] = &errorinfo
+	this.ServeJSON()
+
+}
+
+// @Title 将导入的数据 导入到正式表
+// @Description get SampleType by token
+// @Success 200 {object} sampletype.SampleType
+// @router /insertbasisbuild [get]
+func (this *OilBasisBuildController) InsertBasisbuild() {
+
+	session := utils.DBE.NewSession()
+	err := session.Begin()
+
+	defer session.Close()
+	svc := basisbuild.GetOilBasisbuildSession(session)
+	var errinfo ErrorInfo
+	err = svc.TruncateTable(OilBasisBuildName)
+
+	if err != nil {
+		session.Rollback()
+		errinfo.Code = -1
+		errinfo.Message = "跟新失败!"
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+
+	err = svc.InsertBasisBuild(TmpOilBasisBuildName, OilBasisBuildName)
+
+	if err != nil {
+		session.Rollback()
+		errinfo.Code = -1
+		errinfo.Message = "跟新失败!"
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+
+	session.Commit()
+
+	errinfo.Code = 0
+	errinfo.Message = "跟新成功!"
+	this.Data["json"] = &errinfo
+	this.ServeJSON()
+
+}
+
+// @Title 更新企业的准入项及资质
+// @Description get SampleType by token
+// @Success 200 {object} sampletype.SampleType
+// @router /updatasuppiercertsub [get]
+func (this *OilBasisBuildController) UpdataSuppierCertSub() {
+
+	t := time.Now()
+
+	goodsvc := basisbuild.GetOilBasisBuildService(utils.DBE)
+	goodsvc.DeleteTable(TmpOilSupplierCertSubName, "SupplierTypeCode='02'")
+
+	supsvc := supplier.GetOilSupplierService(utils.DBE)
+	// 所有基建类供应商
+	var suppliercertList []suppliercert.OilSupplierCert
+	where := "SupplierTypeCode='02' AND OutsideFlog = '' AND (InFlag IN ('1','2')) "
+	supsvc.GetEntities(&suppliercertList, where)
+
+	var basisbuildList []basisbuild.OilBasisBuild
+	supsvc.GetEntities(&basisbuildList, "")
+
+	var colsname = []string{"Name"}
+	for _, suppliercert := range suppliercertList {
+
+		var supplier supplier.OilSupplier
+		wheres := " Id=" + strconv.Itoa(suppliercert.SupplierId)
+		supsvc.GetEntity(&supplier, wheres)
+		log.Println(suppliercert.SupplierId)
+		// 供应商的准入范围
+		var supplierCertSubList []suppliercertsub.OilSupplierCertSub
+		wheresup := "SupplierId = " + strconv.Itoa(suppliercert.SupplierId) + " and SupplierTypeCode='02' AND Type IN ('1', '3')"
+		supsvc.GetEntities(&supplierCertSubList, wheresup)
+		fmt.Println(len(supplierCertSubList))
+
+		mergerCertSkipField := ""
+		if supplier.CredentialFlag == "1" || supplier.CredentialFlag == "2" {
+			paramSvc := baseparameter.GetBaseparameterService(utils.DBE)
+			//三证合一或五证合一不需要的字段
+			mergerCertSkipField = paramSvc.GetBaseparameterMessage("GFGL", "paramset", "MergerCertSkipFieldName")
+		}
+
+		for idx := 0; idx < len(supplierCertSubList); idx++ {
+			supplierCertSub := supplierCertSubList[idx]
+			decCode := supplierCertSub.Code
+			// 基建类的准入编码   basisbuildList基建类准入编码
+			for _, goodsaptitudeClass := range basisbuildList {
+				// 如果编码相同的后 判断有没有改名 然后查询准入项需要哪些资质  去查资质表里有没有这些资质 没有就删除这个准入项
+				if supplierCertSub.Code == goodsaptitudeClass.Code {
+					decCode = ""
+					// F01 F02...对应的名称
+					goodsAptitudeNameArr := this.GetBasisBuildName(strconv.Itoa(goodsaptitudeClass.Id))
+					for _, val := range goodsAptitudeNameArr {
+
+						if strings.Contains(mergerCertSkipField, val) {
+							break
+						}
+
+						var supplierFile supplierfile.OilSupplierFile
+						where := "SupplierId=" + strconv.Itoa(suppliercert.SupplierId) + " and NeedFileType='" + val + "'" + " and SupplierTypeCode IN ('000', '02')"
+						has := supsvc.GetEntityByWhere(OilSupplierFileName, where, &supplierFile)
+						if !has {
+							log.Println(supplierCertSub.Code + "====" + val)
+							supsvc.InsertEntityBytbl(TmpOilSupplierCertSubName, supplierCertSub)
+							break
+						}
+						if supplierCertSub.Name != goodsaptitudeClass.Name {
+							var entity suppliercertsub.OilSupplierCertSub
+							entity.Name = goodsaptitudeClass.Name
+							where := "Id = " + strconv.Itoa(supplierCertSub.Id)
+							supsvc.UpdateEntityBywheretbl(OilSupplierCertSubName, &entity, colsname, where)
+						}
+					}
+					break
+				}
+			}
+			if decCode != "" {
+				supsvc.InsertEntityBytbl(TmpOilSupplierCertSubName, supplierCertSub)
+			}
+		}
+	}
+	elapsed := time.Since(t)
+	log.Println(elapsed)
+	var errinfo ErrorInfo
+	errinfo.Code = 0
+	errinfo.Message = "更新完成!"
+	this.Data["json"] = &errinfo
+	this.ServeJSON()
+	//xlFile.Save(excelFileName)
+
+}
+
+func (this *OilBasisBuildController) GetBasisBuildName(classId string) []string {
+
+	var goodsAptitudeName string
+
+	var goodsAptitudeList []basisbuild.OilBasisBuildF
+	svc := basisbuild.GetOilBasisBuildService(utils.DBE)
+	where := "Id=" + classId
+	svc.GetBasisBuildServiceF(&goodsAptitudeList, where)
+
+	for _, goodsAptitude := range goodsAptitudeList {
+		t := reflect.TypeOf(goodsAptitude)
+		v := reflect.ValueOf(goodsAptitude)
+		for k := 0; k < t.NumField(); k++ {
+			if v.Field(k).Interface() == "1" {
+				var tableHeader tableheader.BaseTableheader
+				where := "Code='" + t.Field(k).Name + "' and CategoryCode = '02'"
+				has := svc.GetEntityByWhere(BaseTableHeader, where, &tableHeader)
+				if has {
+					goodsAptitudeName += tableHeader.Name + ","
+				}
+			}
+		}
+	}
+	goodsAptitudeName = strings.Trim(goodsAptitudeName, ",")
+	return strings.Split(goodsAptitudeName, ",")
+}
+
+// @Title 导出数据到word,作为导出pdf的中间步骤
+// @Description 数据存入word
+// @Success	200	{object} controllers.Request
+// @router /exportpdf/:tbid/:typecode  [post]
+func (this *OilBasisBuildController) PdfExport() {
+	Id := this.Ctx.Input.Param(":tbid")
+	SupplierTypeCode := this.Ctx.Input.Param(":typecode")
+	var Url string
+	var fileName string
+	var model1 supplierdataentry.SupplierDataEntry
+	var model2 supplierdataentry.SupplierCertDataEntry
+
+	svc := supplierdataentry.GetSupplierDataEntryService(utils.DBE)
+	where1 := "1=1"
+	where1 += " AND Id = '" + Id + "'"
+	where2 := "SupplierId = '" + Id + "' and SupplierTypecode='"+ SupplierTypeCode +"'"
+	svc.GetEntityByWhere(OilSupplierName, where1, &model1)
+	svc.GetEntityByWhere(OilSupplierCertName, where2, &model2)
+
+	var tabledata []supplierdataentry.SupplierCertSubEntry
+	where3:="SupplierId = '" + Id + "' and SupplierTypecode='"+ SupplierTypeCode +"' and Type in ('1','3')"//准入状态的准入项
+	svc.GetEntitysByOrderbyWhere(TmpOilSupplierCertSubName, where3, "1", &tabledata)
+
+	datamap := structToMapDemo(model1.OilSupplier)
+	if model2.SupplierTypeCode == "01" {
+		Url = utils.Cfg.MustValue("workflow", "goodsPdfHost")
+		fileName = "待删除物资类准入范围.docx"
+	} else if model2.SupplierTypeCode == "02" {
+		Url = utils.Cfg.MustValue("workflow", "basisPdfHost")
+		fileName = "待删除基建类准入范围.docx"
+		datamap["TJInNotify"] = model1.TJInNotify
+	} else {
+		Url = utils.Cfg.MustValue("workflow", "techPdfHost")
+		fileName = "待删除服务类准入范围.docx"
+	}
+
+	//model1
+	datamap["SetupTime"] = model1.SetupTime.Format("2006年01月02日")
+	datamap["QualifCert"] = model1.QualifCert
+	datamap["QualifCertLevel"] = model1.QualifCertLevel
+	datamap["SpecIndustryCert"] = model1.SpecIndustryCert
+	datamap["MaunLicense"] = model1.MaunLicense
+	if model1.HseTraining == "1" {
+		datamap["HseTraining"] = "是"
+	} else {
+		datamap["HseTraining"] = "否"
+	}
+	if model1.OperType != "" {
+		if model1.OperType == "1" || model1.OperType == "制造商"{
+			datamap["OperType"] = "√制造商 □代理商 □贸易商"
+		}else if model1.OperType == "2" || model1.OperType == "代理商"{
+			datamap["OperType"] = "□制造商 √代理商 □贸易商"
+		}else if model1.OperType == "3" || model1.OperType == "代理商"{
+			datamap["OperType"] = "□制造商 □代理商 √贸易商"
+		}else {
+			datamap["OperType"] = "□制造商 □代理商 □贸易商"
+		}
+	}
+	if model1.SpecTypeCode != "" {
+		if model1.SpecTypeCode == "1"{
+			datamap["SpecTypeCode"] = "√一般外部 □多元企业"
+		}else if model1.SpecTypeCode == "2"{
+			datamap["SpecTypeCode"] = "□一般外部 √多元企业"
+		}else {
+			datamap["SpecTypeCode"] = "□一般外部 □多元企业"
+		}
+	}
+	if model1.Grade == "1"{
+		datamap["Grade"] = "一级"
+	}else if model1.SpecTypeCode == "2"{
+		datamap["Grade"] = "二级"
+	}
+	datamap["Fax"] = model1.Fax
+	datamap["CompanyTel"] = model1.CompanyTel
+	datamap["SupplierName"] = model1.SupplierName
+	datamap["Country"] = model1.Country
+	datamap["MaunAgent"] = model1.MaunAgent
+	datamap["SupplierCertificate"] = model1.SupplierCertificate
+	datamap["MgrUnit"] = model1.MgrUnit
+	datamap["CommercialNo"] = model1.CommercialNo
+	datamap["CountryTaxNo"] = model1.CountryTaxNo
+	datamap["OrganCode"] = model1.OrganCode
+	datamap["Address"] = model1.Address
+	datamap["ZipCode"] = model1.ZipCode
+	datamap["LinkAddress"] = model1.LinkAddress
+	datamap["LinkZipCode"] = model1.LinkZipCode
+	datamap["QualitySystemCert"] = model1.QualitySystemCert
+	datamap["ProductQualityCert"] = model1.ProductQualityCert
+	datamap["MaunLicense"] = model1.MaunLicense
+	datamap["LegalPerson"] = model1.LegalPerson
+	datamap["CompanyType"] = model1.CompanyType
+	datamap["ContactName"] = model1.ContactName
+	datamap["RegCapital"] = strconv.FormatFloat(model1.RegCapital,'f',2,64)+"万元"+model1.Currency
+	datamap["DepositBank"] = model1.DepositBank
+	datamap["BankAccount"] = model1.BankAccount
+	datamap["Mobile"] = model1.Mobile
+	datamap["EMail"] = model1.EMail
+	datamap["BankCreditRating"] = model1.BankCreditRating
+	datamap["BusinessScope"] = model1.BusinessScope
+	datamap["Telphone"] = model1.Telphone
+	datamap["AccessCardNo"] = model2.AccessCardNo
+	datamap["PrintYear"] = time.Now().Year()
+	datamap["PrintMonth"] = time.Now().Month()
+	datamap["PrintDay"] = time.Now().Day()
+
+	datamap["Name"] = ""
+
+	if len(tabledata) != 0 {
+		var Name string
+		Name = "\n待删除准入范围:"+ tabledata[0].Code
+		Name = Name + " " + tabledata[0].Name
+		var i int
+		for i = 1; i < len(tabledata); i++ {
+			Name += ";"
+			Name += tabledata[i].Code
+			Name = Name + " " + tabledata[i].Name
+		}
+		//if i == 100 {
+		//	Name += "(准入范围未完全显示,请到系统查看详情)"
+		//}
+
+		datamap["Name"] =datamap["Name"].(string) + Name
+	} else {
+		datamap["Name"] =datamap["Name"].(string)
+	}
+
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+
+	retDocUrl := svcActiviti.FillWordTemplate(datamap, Url, fileName)
+	var datainfo ErrorDataInfo
+	datainfo.Code = 0
+	datainfo.Item = retDocUrl
+	datainfo.Message = "准备导出"
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+
 }

+ 1 - 1
src/dashoo.cn/backend/api/controllers/oilsupplier/goodsaptitude.go

@@ -1533,7 +1533,7 @@ func (this *OilGoodsAptitudeController) UpdataSuppierCertSub() {
 	t := time.Now()
 
 	goodsvc := goodsaptitude.GetOilGoodsAptitudeService(utils.DBE)
-	goodsvc.TruncateTable(TmpOilSupplierCertSubName)
+	goodsvc.DeleteTable(TmpOilSupplierCertSubName, "SupplierTypeCode='01'")
 
 	supsvc := supplier.GetOilSupplierService(utils.DBE)
 	var suppliercertList []suppliercert.OilSupplierCert

+ 612 - 1
src/dashoo.cn/backend/api/controllers/oilsupplier/technologyservice.go

@@ -1,10 +1,15 @@
 package oilsupplier
 
 import (
+	"dashoo.cn/backend/api/business/oilsupplier/suppliercert"
+	"dashoo.cn/backend/api/business/oilsupplier/supplierdataentry"
+	"dashoo.cn/backend/api/business/oilsupplier/tableheader"
 	"dashoo.cn/backend/api/business/oilsupplier/technologyserviceclass"
+	"dashoo.cn/backend/api/business/workflow"
 	"encoding/json"
 	"fmt"
 	"github.com/tealeg/xlsx"
+	"log"
 	"os"
 	"reflect"
 	"strconv"
@@ -902,10 +907,19 @@ func (this *OilTechnologyServiceController) DelTmpSupplierCertSub() {
 	session.Begin()
 	defer session.Close()
 
+	supplierId := this.GetString("SupplierId")
+	id := this.GetString("Id")
+
 	svc := goodsaptitude.GetOilGoodsAptitudeSession(session)
 
 	var supplierCertSubList []suppliercertsub.Tmp_OilSupplierCertSub
 	wheredel := "1=1 and SupplierTypeCode = '03'"
+	if supplierId != "" {
+		wheredel += " and SupplierId=" + supplierId
+	}
+	if id != "" {
+		wheredel += " and Id=" + id
+	}
 	svc.GetEntitysByWhere(TmpOilSupplierCertSubName, wheredel, &supplierCertSubList)
 
 	var errinfo ErrorInfo
@@ -1013,4 +1027,601 @@ func (this *OilTechnologyServiceController) FindInconformity() {
 		this.Data["json"] = &errinfo
 		this.ServeJSON()
 	}
-}
+}
+
+// @Title get 导入excel
+// @Description get SampleType by token
+// @Success 200 {object} sampletype.SampleType
+// @router /importexcel [get]
+func (this *OilTechnologyServiceController) ImportExcel() {
+
+	url := this.GetString("ExcelUrl")
+	var errorinfo ErrorInfo
+	if url == "" {
+		errorinfo.Code = -2
+		errorinfo.Message = "导入失败!"
+		this.Data["json"] = &errorinfo
+		this.ServeJSON()
+	}
+
+	session := utils.DBE.NewSession()
+	err := session.Begin()
+	svc := technologyservice.GetOilTechnologySession(session)
+
+	err = svc.TruncateTable(Tmp_TechnologyName)
+
+	if err != nil {
+		session.Rollback()
+		errorinfo.Code = -2
+		errorinfo.Message = "导入失败!"
+		this.Data["json"] = &errorinfo
+		this.ServeJSON()
+	}
+
+	err = svc.TruncateTable(Tmp_TechnologyClassName)
+
+	if err != nil {
+		session.Rollback()
+		errorinfo.Code = -2
+		errorinfo.Message = "导入失败!"
+		this.Data["json"] = &errorinfo
+		this.ServeJSON()
+	}
+
+	_dir := utils.Cfg.MustValue("file", "tmplateDir") + "xlsx"
+	filename := strconv.Itoa(int(time.Now().Unix())) + ".xlsx"
+	utils.DownloadFile(url, filename, _dir)
+	t := time.Now()
+	filePath := utils.Cfg.MustValue("file", "tmplateDir") + "xlsx/" + filename
+	xlFile, err := xlsx.OpenFile(filePath)
+	var errLineNum string
+
+	//excelFileName := "F:/物资类项目与资质对照表-2017.xlsx"
+	if err != nil {
+		fmt.Printf("open failed: %s\n", err)
+	}
+	var sheet = xlFile.Sheets[0]
+
+	Fstrs := svc.GetFCode()
+	Fstrs = "ClassId, OrgName," + Fstrs
+	columnArr := strings.Split(Fstrs, ",")
+
+	defer func() {
+		session.Close()
+	}()
+
+	codemap := make(map[string]int)
+	for i := 1; i < len(sheet.Rows); i++ {
+		lineNo := strconv.Itoa(i + 1)
+		this.OperationCell(svc, lineNo, columnArr, codemap, sheet.Rows[i].Cells, &errLineNum)
+	}
+	os.Remove(filePath)
+
+	if errLineNum != "" {
+		session.Rollback()
+		errorinfo.Code = -1
+		errorinfo.Message = "导入失败!错误行号:" + errLineNum
+		this.Data["json"] = &errorinfo
+		this.ServeJSON()
+	} else {
+		session.Commit()
+		elapsed := time.Since(t)
+		log.Println(elapsed)
+		errorinfo.Code = 0
+		errorinfo.Message = "导入成功!"
+		this.Data["json"] = &errorinfo
+		this.ServeJSON()
+	}
+}
+
+func (this *OilTechnologyServiceController) OperationCell(svc *technologyservice.OilTechnologySession, lineNo string, columnArr []string, codemap map[string]int, cellsArr []*xlsx.Cell, errLineNum *string) {
+
+	defer func() {
+		if err := recover(); err != nil {
+			log.Println("err"+lineNo, err)
+			*errLineNum += lineNo + ","
+		}
+	}()
+	parentId := 0
+	classId := 0
+	cellsArrLen := len(cellsArr)
+	var valstr = ""
+
+	for i := 2; i < cellsArrLen; {
+		if i < 10 {
+			var entity technologyserviceclass.Tmp_OilTechnologyServiceClass
+			cellval := strings.TrimSpace(cellsArr[i].String())
+			fmt.Println(cellval)
+			if cellval != "" {
+				_, has := codemap[cellval]
+				if !has {
+					if i != 2 {
+						upcode := cellsArr[i-2].String()
+						parentId = codemap[upcode]
+					}
+					entity.Code = cellval
+					entity.Name = strings.TrimSpace(cellsArr[i+1].String())
+					entity.ParentId = parentId
+					entity.CreateUserId, _ = utils.StrTo(this.User.Id).Int()
+					entity.CreateBy = this.User.Realname
+					entity.CreateOn = time.Now()
+
+					_, err := svc.InsertEntityBytbl(Tmp_TechnologyClassName, &entity)
+					if err != nil {
+						panic(err)
+						break
+					}
+					classId = entity.Id
+					if i <= 6 {
+						codemap[cellval] = entity.Id
+					}
+				}
+			}
+		}
+		if i >= 10 {
+			valstr += "'" + cellsArr[i].String() + "',"
+			i++
+		} else {
+			i += 2
+		}
+	}
+	valstr = strings.Trim(valstr, ",")
+	valstr = strings.Replace(valstr, "是", "1", -1)
+	log.Println(cellsArr[0].String() + "==" + valstr)
+	var columnstr = ""
+	for l := 0; l < cellsArrLen-9; l++ {
+		columnstr += columnArr[l] + ","
+	}
+	columnstr = strings.Trim(columnstr, ",")
+	valstr = strconv.Itoa(classId) + "," + valstr
+	err := svc.InsertTmpTechnology(columnstr, valstr)
+	if err != nil {
+		panic(err)
+	}
+}
+
+// @Title 获取列表新导入的列表
+// @Description get user by token
+// @Success 200 {object} []
+// @router /importlist [get]
+func (this *OilTechnologyServiceController) GetImportEntityList() {
+
+	//获取分页信息
+	page := this.GetPageInfoForm()
+	where := " 1=1 "
+	orderby := "Code"
+	asc := true
+	Order := this.GetString("Order")
+	Prop := this.GetString("Prop")
+	if Order != "" && Prop != "" {
+		orderby = Prop
+		if Order == "asc" {
+			asc = true
+		}else {
+			asc = false
+		}
+	}
+	CreateOn := this.GetString("CreateOn")
+	Code := this.GetString("Code")
+	Name := this.GetString("Name")
+	Code1 := this.GetString("Code1")
+	Name1 := this.GetString("Name1")
+	Code2 := this.GetString("Code2")
+	Name2 := this.GetString("Name2")
+	Code3 := this.GetString("Code3")
+	Name3 := this.GetString("Name3")
+	Code4 := this.GetString("Code4")
+	Name4 := this.GetString("Name4")
+	if Code != "" {
+		where = where + " and Code like '%" + Code + "%'"
+	}
+
+	if Name != "" {
+		where = where + " and Name like '%" + Name + "%'"
+	}
+
+	if Code1 != "" {
+		where = where + " and Code1 like '%" + Code1 + "%'"
+	}
+
+	if Name1 != "" {
+		where = where + " and Name1 like '%" + Name1 + "%'"
+	}
+
+	if Code2 != "" {
+		where = where + " and Code2 like '%" + Code2 + "%'"
+	}
+
+	if Name2 != "" {
+		where = where + " and Name2 like '%" + Name2 + "%'"
+	}
+
+	if Code3 != "" {
+		where = where + " and Code3 like '%" + Code3 + "%'"
+	}
+
+	if Name3 != "" {
+		where = where + " and Name3 like '%" + Name3 + "%'"
+	}
+
+	if Code4 != "" {
+		where = where + " and Code4 like '%" + Code4 + "%'"
+	}
+
+	if Name4 != "" {
+		where = where + " and Name4 like '%" + Name4 + "%'"
+	}
+
+	if CreateOn != "" {
+		dates := strings.Split(CreateOn, ",")
+		if len(dates) == 2 {
+			minDate := dates[0]
+			maxDate := dates[1]
+			where = where + " and CreateOn>='" + minDate + "' and CreateOn<='" + maxDate + "'"
+		}
+	}
+
+	svc := technologyservice.GetOilTechnologyServiceService(utils.DBE)
+	var list []technologyservice.OilTechnologyServiceView
+	total := svc.GetMyPagingEntitiesWithOrderBytbl(ImportTechsrvDetailViewName, page.CurrentPage, page.Size, orderby, asc, &list, where)
+	var datainfo DataInfo
+	datainfo.Items = list
+	datainfo.CurrentItemCount = total
+	datainfo.PageIndex = page.CurrentPage
+	datainfo.ItemsPerPage = page.Size
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
+// @Title 将导入的数据 导入到正式表
+// @Description get SampleType by token
+// @Success 200 {object} sampletype.SampleType
+// @router /insertTechnology [get]
+func (this *OilTechnologyServiceController) InsertTechnology() {
+
+	session := utils.DBE.NewSession()
+	err := session.Begin()
+
+	defer session.Close()
+	svc := technologyservice.GetOilTechnologySession(session)
+
+	var errinfo ErrorInfo
+	err = svc.TruncateTable(OilTechnologyServiceName)
+
+	if err != nil {
+		session.Rollback()
+		errinfo.Code = -1
+		errinfo.Message = "跟新失败!"
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+
+	err = svc.TruncateTable(OilTechnologyServiceClassName)
+
+	if err != nil {
+		session.Rollback()
+		errinfo.Code = -1
+		errinfo.Message = "跟新失败!"
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+
+	err = svc.InsertTechnology(Tmp_TechnologyName, OilTechnologyServiceName)
+
+	if err != nil {
+		session.Rollback()
+		errinfo.Code = -1
+		errinfo.Message = "跟新失败!"
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+
+	err = svc.InsertTechnology(Tmp_TechnologyClassName, OilTechnologyServiceClassName)
+	if err != nil {
+		session.Rollback()
+		errinfo.Code = -1
+		errinfo.Message = "跟新失败!"
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+
+	session.Commit()
+
+	errinfo.Code = 0
+	errinfo.Message = "跟新成功!"
+	this.Data["json"] = &errinfo
+	this.ServeJSON()
+
+}
+
+// @Title 更新企业的准入项及资质
+// @Description get SampleType by token
+// @Success 200 {object} sampletype.SampleType
+// @router /updatasuppiercertsub [get]
+func (this *OilTechnologyServiceController) UpdataSuppierCertSub() {
+
+	t := time.Now()
+
+	technologysvc := technologyservice.GetOilTechnologyServiceService(utils.DBE)
+	technologysvc.DeleteTable(TmpOilSupplierCertSubName, "SupplierTypeCode='03'")
+
+	supsvc := supplier.GetOilSupplierService(utils.DBE)
+	var suppliercertList []suppliercert.OilSupplierCert
+	where := "SupplierTypeCode='03' AND OutsideFlog = '' AND (InFlag IN ('1','2')) "
+	supsvc.GetEntities(&suppliercertList, where)
+
+	var technologyClassList []technologyserviceclass.OilTechnologyServiceClass
+	supsvc.GetEntities(&technologyClassList, "")
+
+	var colsname = []string{"Name"}
+	for _, suppliercert := range suppliercertList {
+
+		var supplier supplier.OilSupplier
+		wheres := " Id=" + strconv.Itoa(suppliercert.SupplierId)
+		supsvc.GetEntity(&supplier, wheres)
+
+		log.Println(suppliercert.SupplierId)
+		var supplierCertSubList []suppliercertsub.OilSupplierCertSub
+		wheresup := "SupplierId = " + strconv.Itoa(suppliercert.SupplierId) + " and SupplierTypeCode='03' AND Type IN ('1', '3')"
+		supsvc.GetEntities(&supplierCertSubList, wheresup)
+		fmt.Println(len(supplierCertSubList))
+
+		mergerCertSkipField := ""
+		if supplier.CredentialFlag == "1" || supplier.CredentialFlag == "2" {
+			paramSvc := baseparameter.GetBaseparameterService(utils.DBE)
+			//三证合一或五证合一不需要的字段
+			mergerCertSkipField = paramSvc.GetBaseparameterMessage("GFGL", "paramset", "MergerCertSkipFieldName")
+		}
+
+		for idx := 0; idx < len(supplierCertSubList); idx++ {
+			supplierCertSub := supplierCertSubList[idx]
+			decCode := supplierCertSub.Code
+			// 物资类的准入编码
+			for _, technologyClass := range technologyClassList {
+				// 如果编码相同的后 判断有没有改名 然后查询准入项需要哪些资质  去查资质表里有没有这些资质 没有就删除这个准入项
+				if supplierCertSub.Code == technologyClass.Code {
+					decCode = ""
+					technologyNameArr := this.GetTechnologyName(strconv.Itoa(technologyClass.Id))
+					for _, val := range technologyNameArr {
+
+						if strings.Contains(mergerCertSkipField, val) {
+							break
+						}
+
+						var supplierFile supplierfile.OilSupplierFile
+						where := "SupplierId=" + strconv.Itoa(suppliercert.SupplierId) + " and NeedFileType='" + val + "'" + " and SupplierTypeCode IN ('000', '03')"
+						has := supsvc.GetEntityByWhere(OilSupplierFileName, where, &supplierFile)
+						if !has {
+							log.Println(supplierCertSub.Code + "====" + val)
+							supsvc.InsertEntityBytbl(TmpOilSupplierCertSubName, supplierCertSub)
+							break
+						}
+						if supplierCertSub.Name != technologyClass.Name {
+							var entity suppliercertsub.OilSupplierCertSub
+							entity.Name = technologyClass.Name
+							where := "Id = " + strconv.Itoa(supplierCertSub.Id)
+							supsvc.UpdateEntityBywheretbl(OilSupplierCertSubName, &entity, colsname, where)
+						}
+					}
+					break
+				}
+			}
+			if decCode != "" {
+				supsvc.InsertEntityBytbl(TmpOilSupplierCertSubName, supplierCertSub)
+			}
+
+		}
+	}
+	elapsed := time.Since(t)
+	log.Println(elapsed)
+	var errinfo ErrorInfo
+	errinfo.Code = 0
+	errinfo.Message = "更新完成!"
+	this.Data["json"] = &errinfo
+	this.ServeJSON()
+	//xlFile.Save(excelFileName)
+
+}
+
+func (this *OilTechnologyServiceController) GetTechnologyName(classId string) []string {
+
+	var goodsAptitudeName string
+
+	var technologyFList []technologyservice.OilTechnologyF
+	svc := technologyservice.GetOilTechnologyServiceService(utils.DBE)
+	where := "ClassId=" + classId
+	svc.GetOilTechnologyF(&technologyFList, where)
+
+	for _, goodsAptitude := range technologyFList {
+		t := reflect.TypeOf(goodsAptitude)
+		v := reflect.ValueOf(goodsAptitude)
+		for k := 0; k < t.NumField(); k++ {
+			if v.Field(k).Interface() == "1" {
+				var tableHeader tableheader.BaseTableheader
+				where := "Code='" + t.Field(k).Name + "' and CategoryCode = '03'"
+				has := svc.GetEntityByWhere(BaseTableHeader, where, &tableHeader)
+				if has {
+					goodsAptitudeName += tableHeader.Name + ","
+				}
+			}
+		}
+	}
+	goodsAptitudeName = strings.Trim(goodsAptitudeName, ",")
+	return strings.Split(goodsAptitudeName, ",")
+}
+
+// @Title 导出数据到word,作为导出pdf的中间步骤
+// @Description 数据存入word
+// @Success	200	{object} controllers.Request
+// @router /exportpdf/:tbid/:typecode  [post]
+func (this *OilTechnologyServiceController) PdfExport() {
+	Id := this.Ctx.Input.Param(":tbid")
+	SupplierTypeCode := this.Ctx.Input.Param(":typecode")
+	var Url string
+	var fileName string
+	var model1 supplierdataentry.SupplierDataEntry
+	var model2 supplierdataentry.SupplierCertDataEntry
+
+	svc := supplierdataentry.GetSupplierDataEntryService(utils.DBE)
+	where1 := "1=1"
+	where1 += " AND Id = '" + Id + "'"
+	where2 := "SupplierId = '" + Id + "' and SupplierTypecode='"+ SupplierTypeCode +"'"
+	svc.GetEntityByWhere(OilSupplierName, where1, &model1)
+	svc.GetEntityByWhere(OilSupplierCertName, where2, &model2)
+
+	var tabledata []supplierdataentry.SupplierCertSubEntry
+	where3:="SupplierId = '" + Id + "' and SupplierTypecode='"+ SupplierTypeCode +"' and Type in ('1','3')"//准入状态的准入项
+	svc.GetEntitysByOrderbyWhere(TmpOilSupplierCertSubName, where3, "1", &tabledata)
+
+	datamap := structToMapDemo(model1.OilSupplier)
+	if model2.SupplierTypeCode == "01" {
+		Url = utils.Cfg.MustValue("workflow", "goodsPdfHost")
+		fileName = "待删除物资类准入范围.docx"
+	} else if model2.SupplierTypeCode == "02" {
+		Url = utils.Cfg.MustValue("workflow", "basisPdfHost")
+		fileName = "待删除基建类准入范围.docx"
+		datamap["TJInNotify"] = model1.TJInNotify
+	} else {
+		Url = utils.Cfg.MustValue("workflow", "techPdfHost")
+		fileName = "待删除服务类准入范围.docx"
+	}
+
+	//model1
+	datamap["SetupTime"] = model1.SetupTime.Format("2006年01月02日")
+	datamap["QualifCert"] = model1.QualifCert
+	datamap["QualifCertLevel"] = model1.QualifCertLevel
+	datamap["SpecIndustryCert"] = model1.SpecIndustryCert
+	datamap["MaunLicense"] = model1.MaunLicense
+	if model1.HseTraining == "1" {
+		datamap["HseTraining"] = "是"
+	} else {
+		datamap["HseTraining"] = "否"
+	}
+	if model1.OperType != "" {
+		if model1.OperType == "1" || model1.OperType == "制造商"{
+			datamap["OperType"] = "√制造商 □代理商 □贸易商"
+		}else if model1.OperType == "2" || model1.OperType == "代理商"{
+			datamap["OperType"] = "□制造商 √代理商 □贸易商"
+		}else if model1.OperType == "3" || model1.OperType == "代理商"{
+			datamap["OperType"] = "□制造商 □代理商 √贸易商"
+		}else {
+			datamap["OperType"] = "□制造商 □代理商 □贸易商"
+		}
+	}
+	if model1.SpecTypeCode != "" {
+		if model1.SpecTypeCode == "1"{
+			datamap["SpecTypeCode"] = "√一般外部 □多元企业"
+		}else if model1.SpecTypeCode == "2"{
+			datamap["SpecTypeCode"] = "□一般外部 √多元企业"
+		}else {
+			datamap["SpecTypeCode"] = "□一般外部 □多元企业"
+		}
+	}
+	if model1.Grade == "1"{
+		datamap["Grade"] = "一级"
+	}else if model1.SpecTypeCode == "2"{
+		datamap["Grade"] = "二级"
+	}
+	datamap["Fax"] = model1.Fax
+	datamap["CompanyTel"] = model1.CompanyTel
+	datamap["SupplierName"] = model1.SupplierName
+	datamap["Country"] = model1.Country
+	datamap["MaunAgent"] = model1.MaunAgent
+	datamap["SupplierCertificate"] = model1.SupplierCertificate
+	datamap["MgrUnit"] = model1.MgrUnit
+	datamap["CommercialNo"] = model1.CommercialNo
+	datamap["CountryTaxNo"] = model1.CountryTaxNo
+	datamap["OrganCode"] = model1.OrganCode
+	datamap["Address"] = model1.Address
+	datamap["ZipCode"] = model1.ZipCode
+	datamap["LinkAddress"] = model1.LinkAddress
+	datamap["LinkZipCode"] = model1.LinkZipCode
+	datamap["QualitySystemCert"] = model1.QualitySystemCert
+	datamap["ProductQualityCert"] = model1.ProductQualityCert
+	datamap["MaunLicense"] = model1.MaunLicense
+	datamap["LegalPerson"] = model1.LegalPerson
+	datamap["CompanyType"] = model1.CompanyType
+	datamap["ContactName"] = model1.ContactName
+	datamap["RegCapital"] = strconv.FormatFloat(model1.RegCapital,'f',2,64)+"万元"+model1.Currency
+	datamap["DepositBank"] = model1.DepositBank
+	datamap["BankAccount"] = model1.BankAccount
+	datamap["Mobile"] = model1.Mobile
+	datamap["EMail"] = model1.EMail
+	datamap["BankCreditRating"] = model1.BankCreditRating
+	datamap["BusinessScope"] = model1.BusinessScope
+	datamap["Telphone"] = model1.Telphone
+	datamap["AccessCardNo"] = model2.AccessCardNo
+	datamap["PrintYear"] = time.Now().Year()
+	datamap["PrintMonth"] = time.Now().Month()
+	datamap["PrintDay"] = time.Now().Day()
+
+	datamap["Name"] = ""
+
+	if len(tabledata) != 0 {
+		var Name string
+		Name = "\n待删除准入范围:"+ tabledata[0].Code
+		Name = Name + " " + tabledata[0].Name
+		var i int
+		for i = 1; i < len(tabledata); i++ {
+			Name += ";"
+			Name += tabledata[i].Code
+			Name = Name + " " + tabledata[i].Name
+		}
+		//if i == 100 {
+		//	Name += "(准入范围未完全显示,请到系统查看详情)"
+		//}
+
+		datamap["Name"] =datamap["Name"].(string) + Name
+	} else {
+		datamap["Name"] =datamap["Name"].(string)
+	}
+
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+
+	retDocUrl := svcActiviti.FillWordTemplate(datamap, Url, fileName)
+	var datainfo ErrorDataInfo
+	datainfo.Code = 0
+	datainfo.Item = retDocUrl
+	datainfo.Message = "准备导出"
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+
+}
+
+// @Title get 清空导入的信息
+// @Description get SampleType by token
+// @Success 200 {object} sampletype.SampleType
+// @router /truncateimport [get]
+func (this *OilTechnologyServiceController) TruncateImport() {
+	session := utils.DBE.NewSession()
+	err := session.Begin()
+	defer session.Close()
+	svc := technologyservice.GetOilTechnologySession(session)
+	err = svc.TruncateTable(Tmp_TechnologyName)
+
+	var errorinfo ErrorInfo
+	if err != nil {
+		session.Rollback()
+		errorinfo.Code = -1
+		errorinfo.Message = "删除失败!"
+		this.Data["json"] = &errorinfo
+		this.ServeJSON()
+	}
+
+	err = svc.TruncateTable(Tmp_TechnologyClassName)
+	if err != nil {
+		session.Rollback()
+		errorinfo.Code = -1
+		errorinfo.Message = "删除失败!"
+		this.Data["json"] = &errorinfo
+		this.ServeJSON()
+	}
+
+	session.Commit()
+	errorinfo.Code = 0
+	errorinfo.Message = "删除成功!"
+	this.Data["json"] = &errorinfo
+	this.ServeJSON()
+
+}
+

+ 41 - 2
src/dashoo.cn/frontend_web/src/api/oilsupplier/basisbuild.js

@@ -52,10 +52,11 @@ export default {
       params: params
     })
   },
-  delTmpSupplierCertSub (myAxios) {
+  delTmpSupplierCertSub (params, myAxios) {
     return myAxios({
       url: '/basisbuild/deltmpsuppliercertsub',
-      method: 'get'
+      method: 'get',
+      params: params
     })
   },
   getCompanyList (params, formdata, myAxios) {
@@ -72,5 +73,43 @@ export default {
       method: 'post',
       data: formdata
     })
+  },
+  getImportList (CreateOn, params, myAxios) {
+    return myAxios({
+      url: '/basisbuild/importlist?CreateOn=' + CreateOn,
+      method: 'GET',
+      params: params
+    })
+  },
+  importExcel (params, myAxios) {
+    return myAxios({
+      url: '/basisbuild/importexcel',
+      method: 'get',
+      params: params
+    })
+  },
+  truncateImport (myAxios) {
+    return myAxios({
+      url: '/basisbuild/truncateimport',
+      method: 'GET'
+    })
+  },
+  insertBasisbuild (myAxios) {
+    return myAxios({
+      url: '/basisbuild/insertbasisbuild',
+      method: 'GET'
+    })
+  },
+  updataSuppierCertSub (myAxios) {
+    return myAxios({
+      url: '/basisbuild/updatasuppiercertsub',
+      method: 'GET'
+    })
+  },
+  pdfexport (tbid, typecode, myAxios) {
+    return myAxios({
+      url: '/basisbuild/exportpdf/' + tbid + '/' + typecode,
+      method: 'post'
+    })
   }
 }

+ 41 - 2
src/dashoo.cn/frontend_web/src/api/oilsupplier/technologyservice.js

@@ -52,10 +52,11 @@ export default {
       params: params
     })
   },
-  delTmpSupplierCertSub (myAxios) {
+  delTmpSupplierCertSub (params, myAxios) {
     return myAxios({
       url: '/technologyservice/deltmpsuppliercertsub',
-      method: 'get'
+      method: 'get',
+      params: params
     })
   },
   getCompanyList (params, formdata, myAxios) {
@@ -72,5 +73,43 @@ export default {
       method: 'post',
       data: formdata
     })
+  },
+  getImportList (CreateOn, params, myAxios) {
+    return myAxios({
+      url: '/technologyservice/importlist?CreateOn=' + CreateOn,
+      method: 'GET',
+      params: params
+    })
+  },
+  importExcel (params, myAxios) {
+    return myAxios({
+      url: '/technologyservice/importexcel',
+      method: 'get',
+      params: params
+    })
+  },
+  truncateImport (myAxios) {
+    return myAxios({
+      url: '/technologyservice/truncateimport',
+      method: 'GET'
+    })
+  },
+  insertTechnology (myAxios) {
+    return myAxios({
+      url: '/technologyservice/insertTechnology',
+      method: 'GET'
+    })
+  },
+  updataSuppierCertSub (myAxios) {
+    return myAxios({
+      url: '/technologyservice/updatasuppiercertsub',
+      method: 'GET'
+    })
+  },
+  pdfexport (tbid, typecode, myAxios) {
+    return myAxios({
+      url: '/technologyservice/exportpdf/' + tbid + '/' + typecode,
+      method: 'post'
+    })
   }
 }

+ 103 - 1
src/dashoo.cn/frontend_web/src/pages/oilsupplier/basisbuild/_opera/showdelcertsub.vue

@@ -64,6 +64,7 @@
         <el-table-column label="操作" width="260px" align="center" fixed="right" show-overflow-tooltip>
           <template slot-scope="scope">
             <el-button type="text" @click="opencertsub(scope.row)" title="导出" size="mini" icon="el-icon-document" width="120px">待删除准入范围</el-button>
+            <el-button type="text" style="color: #F56C6C" @click="delcertsub(scope.row)" title="删除" size="mini" icon="el-icon-delete" width="120px">删除准入范围</el-button>
             <!--<el-button type="text" @click="openfilelist(scope.row)" title="导出" size="mini" icon="el-icon-document" width="120px">企业资质</el-button>-->
           </template>
         </el-table-column>
@@ -199,12 +200,18 @@
                   </el-form-item>
                   <el-form-item>
                     <el-button type="primary" size="mini" style="margin-left: 8px" @click="search">查询</el-button>
+                    <el-button type="primary" @click="toPdf" size="mini" style="margin-left: 25px">下载待删除准入范围</el-button>
                     <!--<el-button type="primary" @click="toPdf" size="mini" style="margin-left: 25px">下载准入范围</el-button>-->
                   </el-form-item>
                 </el-form>
               </span>
             </div>
             <el-table :data="certsubList" border size="mini">
+              <el-table-column label="操作" width="160px" align="center" fixed="right" show-overflow-tooltip>
+                <template slot-scope="scope">
+                  <el-button type="text" style="color: #F56C6C" @click="delcertsubbyid(scope.row)" title="删除" size="mini" icon="el-icon-delete" width="90px">删除</el-button>
+                </template>
+              </el-table-column>
               <el-table-column prop="Code" label="分类编码" show-overflow-tooltip></el-table-column>
               <el-table-column prop="Name" label="分类名称" show-overflow-tooltip></el-table-column>
               <el-table-column
@@ -412,13 +419,108 @@ export default {
   },
 
   methods: {
+    // 导出准入范围到pdf
+    toPdf () {
+      basisapi.pdfexport(this.Id, this.SupplierTypeCode, this.$axios)
+        .then(res => {
+          // response
+          if (res.data.code === 0) {
+            let docurl = res.data.item
+            let pdfurl
+            // 内网服务器专用
+            if (process.client && docurl.indexOf('upfile') === 0) {
+              const myDomain = window.location.host
+              // location.href = 'http://' + myDomain + '/' + docurl
+              pdfurl = 'http://' + process.env.LOCAL_IP + '/' + docurl
+              let requestParams = {
+                pdfUrl: pdfurl,
+                watermark: this.SupplierName
+              }
+              this.$axios.post('supplierdataentry/word-to-pdf-watermark', requestParams)
+                .then(function (res) {
+                  window.open('http://' + myDomain + '/' + res.data)
+                })
+            } else {
+              // location.href = 'http://' + docurl
+              pdfurl = 'http://' + docurl
+              let requestParams = {
+                pdfUrl: pdfurl,
+                watermark: this.SupplierName
+              }
+              this.$axios.post('supplierdataentry/word-to-pdf-watermark', requestParams)
+                .then(function (res) {
+                  window.open('http://' + res.data)
+                })
+            }
+          }
+        }).catch(err => {
+          console.error(err)
+        })
+    },
+    delcertsub (row) {
+      console.log(row)
+      this.$confirm('是否删除该公司的准入项?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        let params = {
+          SupplierId: row.Id
+        }
+        basisapi.delTmpSupplierCertSub(params, this.$axios).then(res => {
+          console.log(res)
+          if (res.data.code === 0) {
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            })
+            this.initDatas()
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            })
+          }
+        })
+      })
+    },
+    delcertsubbyid (row) {
+      console.log(row)
+      this.$confirm('是否删除准入项?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        let params = {
+          Id: row.Id
+        }
+        console.log(params)
+        basisapi.delTmpSupplierCertSub(params, this.$axios).then(res => {
+          console.log(res)
+          if (res.data.code === 0) {
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            })
+            this.getCertSub()
+            this.initDatas()
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            })
+          }
+        })
+      })
+    },
+
     delSupplierCertSub () {
       this.$confirm('此操作将删除缺少资质的准入项, 是否继续?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
-        basisapi.delTmpSupplierCertSub(this.$axios).then(res => {
+        basisapi.delTmpSupplierCertSub({}, this.$axios).then(res => {
           console.log(res)
           if (res.data.code === 0) {
             this.$message({

+ 429 - 5
src/dashoo.cn/frontend_web/src/pages/oilsupplier/basisbuild/index.vue

@@ -13,11 +13,13 @@
           <router-link :to="'/oilsupplier/basisbuild/add/operation'">
             <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
           </router-link>
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="exportExcel">导出
+          </el-button>
+          <el-button type="primary" size="mini" style="margin-left:20px; margin-top: -4px;" @click="showimport">更新编码
+          </el-button>
           <router-link :to="'/oilsupplier/basisbuild/_opera/showdelcertsub'">
             <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">查看待删除准入项</el-button>
           </router-link>
-          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="exportExcel">导出
-          </el-button>
         </span>
         <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
           <el-form-item label="时间">
@@ -137,6 +139,156 @@
       </div>
     </el-dialog>
 
+    <el-dialog title="新导入"  width="95%" top="5vh" :visible.sync="showimportvisible">
+      <el-card class="box-card" v-loading="importloading">
+        <div slot="header">
+          <span>
+            <i class="icon icon-table2"></i> 对照表(新导入)
+          </span>
+          <span style="float: right;">
+            <el-button type="primary" size="mini" style="margin-left:20px; margin-top: -4px;" @click="importExcel">导入</el-button>
+            <el-button type="warning" size="mini" style="margin-left:10px; margin-top: -4px;" @click="truncateimport()">清空所有导入
+            </el-button>
+            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="confirmImport()">确认更新
+            </el-button>
+          </span>
+          <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+            <el-form-item label="编码">
+              <el-input size="mini" v-model="searchImportForm.Code" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+            <el-form-item label="名称">
+              <el-input size="mini" v-model="searchImportForm.Name" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-dropdown split-button type="primary" size="mini" @click="importhandleSearch" @command="importsearchCommand">
+                查询
+                <el-dropdown-menu slot="dropdown">
+                  <el-dropdown-item command="clear">查询重置</el-dropdown-item>
+                </el-dropdown-menu>
+              </el-dropdown>
+            </el-form-item>
+          </el-form>
+        </div>
+
+        <el-table :data="importentityList" size="mini" border height="calc(100vh - 360px)"
+                  style="width: 100%" @sort-change="orderby">
+
+          <el-table-column v-for="column in tableColumns" :prop="column.prop" sortable :min-width="column.width"
+                           :label="column.label" :key="column.Id" align="center" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{ transferStr(scope.row[column.prop]) }}
+            </template>
+          </el-table-column>
+          <!--动态显示的表头-->
+          <el-table-column v-for="column in dynamicTableColumns" :prop="column.prop" sortable :width="300"
+                           :key="column.Id" :label="column.label" align="center" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{ transferStr(scope.row[column.prop]) }}
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <el-pagination @size-change="importhandleSizeChange" @current-change="importhandleCurrentChange" :current-page="importcurrentPage"
+                       :page-sizes="[10, 50, 100, 200, 400]" :page-size="importsize" layout="total, sizes, prev, pager, next, jumper"
+                       :total="importcurrentItemCount">
+        </el-pagination>
+      </el-card>
+    </el-dialog>
+
+    <el-dialog title="高级查询" :visible.sync="importDialogVisible" width="720px">
+      <el-form ref="advancedsearchForm" label-width="110px">
+        <el-row>
+
+          <el-col :span="12">
+            <el-form-item label="编码">
+              <el-input size="mini" v-model="searchImportForm.Code" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="名称">
+              <el-input size="mini" v-model="searchImportForm.Name" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="大类名称">
+              <el-input size="mini" v-model="searchImportForm.BigClassName" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="大类编码">
+              <el-input size="mini" v-model="searchImportForm.BigClassCode" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="中类名称">
+              <el-input size="mini" v-model="searchImportForm.MiddleClassName" style="width:100%" placeholder="请输入">
+              </el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="小类名称">
+              <el-input size="mini" v-model="searchImportForm.SmallClassName" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="品名">
+              <el-input size="mini" v-model="searchImportForm.GoodsName" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="物资级别">
+              <el-input size="mini" v-model="searchImportForm.GoodsLevel" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="产品说明">
+              <el-input size="mini" v-model="searchImportForm.GoodsDesc" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="标准备案">
+              <el-input size="mini" v-model="searchImportForm.Standard" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="供应商类型">
+              <el-input size="mini" v-model="searchImportForm.CompanyType" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="mini" @click="importDialogVisible = false">取 消</el-button>
+        <el-button size="mini" type="primary" @click="importhandleSearch">查 询</el-button>
+      </span>
+    </el-dialog>
+
+    <el-dialog title="上传文件"  width="600px" :visible.sync="uploadshow">
+      <el-form label-width="100px">
+        <el-row>
+          <el-col :span="24">
+            <el-upload multiple style="margin-top: 10px;" action="" ref="refuploadattach"
+                       :http-request="uploadrequest" :before-upload="beforeAvatarUpload">
+              <el-button size="small" type="primary">点击上传</el-button>
+            </el-upload>
+          </el-col>
+          <el-col :span="24">
+            <el-button style="float: right;" size="mini" type="primary" @click="uploadExcel()">确定</el-button>
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-dialog>
+
   </div>
 </template>
 <script>
@@ -145,8 +297,8 @@
   } from 'vuex'
   import api from '@/api/oilsupplier/basisbuild'
   import setapi from '@/api/oilsupplier/oilclassorgset'
-  import FileSaver from "file-saver";
-  import XLSX from "xlsx";
+  import axios from 'axios'
+  import uploadajax from '@/assets/js/uploadajax.js'
 
   export default {
     computed: {
@@ -158,6 +310,13 @@
 
     data() {
       return {
+        Excelurl: '',
+        textarea: '',
+        errorDialogVisible: false,
+        uploadshow: false,
+        importDialogVisible: false,
+        importloading: false,
+        showimportvisible: false,
         loading: false,
         deptsetVisible: false,
         dialogVisible: false,
@@ -252,7 +411,87 @@
           children: 'children'
         },
         operationOrganizeData: [],
-        AuditStepOptions: []
+        AuditStepOptions: [],
+        importCreateOn: [],
+        // 列表数据
+        importentityList: [],
+        // 分页参数
+        importsize: 10,
+        importcurrentPage: 1,
+        importcurrentItemCount: 0,
+        // 列表排序
+        importColumn: {
+          Order: '',
+          Prop: ''
+        },
+        searchImportForm: {
+          Id: '',
+          Code: '',
+          Name: '',
+          BigClassName: '',
+          BigClassCode: '',
+          MiddleClassName: '',
+          SmallClassName: '',
+          GoodsName: '',
+          GoodsLevel: '',
+          GoodsDesc: '',
+          Standard: '',
+          CompanyType: '',
+          F01: '',
+          F02: '',
+          F03: '',
+          F04: '',
+          F05: '',
+          F06: '',
+          F07: '',
+          F08: '',
+          F09: '',
+          F10: '',
+          F11: '',
+          F12: '',
+          F13: '',
+          F14: '',
+          F15: '',
+          F16: '',
+          F17: '',
+          F18: '',
+          F19: '',
+          F20: '',
+          F21: '',
+          F22: '',
+          F23: '',
+          F24: '',
+          F25: '',
+          F26: '',
+          F27: '',
+          F28: '',
+          F29: '',
+          F30: '',
+          F31: '',
+          F32: '',
+          F33: '',
+          F34: '',
+          F35: '',
+          F36: '',
+          F37: '',
+          F38: '',
+          F39: '',
+          F40: '',
+          F41: '',
+          F42: '',
+          F43: '',
+          F44: '',
+          F45: '',
+          F46: '',
+          Remark: '',
+          DeletionStateCode: '',
+          CreateOn: '',
+          CreateUserId: '',
+          CreateBy: '',
+          ModifiedOn: '',
+          ModifiedUserId: '',
+          ModifiedBy: ''
+        }
       }
     },
     created() {
@@ -264,6 +503,191 @@
       this.getDictOptions()
     },
     methods: {
+      showimport () {
+        this.initImportDatas()
+        this.showimportvisible = true
+      },
+      initImportDatas () {
+        // 分页及列表条件
+        let params = {
+          _currentPage: this.importcurrentPage,
+          _size: this.importsize,
+          Order: this.importColumn.Order,
+          Prop: this.importColumn.Prop,
+        }
+        let myCreateOn = []
+        // 解析时间
+
+        if (this.importCreateOn != null && this.importCreateOn.length === 2) {
+          this.importCreateOn[1].setHours(23)
+          this.importCreateOn[1].setMinutes(59)
+          this.importCreateOn[1].setSeconds(59)
+          myCreateOn.push(this.formatDateTime(this.importCreateOn[0]))
+          myCreateOn.push(this.formatDateTime(this.importCreateOn[1]))
+        }
+        // 查询条件
+        Object.assign(params, this.searchImportForm)
+        // 访问接口
+        api.getImportList(myCreateOn.join(','), params, this.$axios).then(res => {
+          this.importentityList = res.data.items
+          this.importcurrentItemCount = res.data.currentItemCount
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+      importExcel () {
+        this.uploadshow = true
+      },
+      truncateimport () {
+        this.$confirm('此操作将清空导入的数据, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          api.truncateImport(this.$axios).then(res => {
+            this.initImportDatas()
+            if (res.data.code === 0) {
+              this.$message({
+                type: 'success',
+                message: res.data.message
+              })
+            } else {
+              this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+        })
+      },
+      updatasuppiercertsub () {
+        this.importloading = true
+        api.updataSuppierCertSub(this.$axios).then(res => {
+          this.importloading = false
+          if (res.data.code === 0) {
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            })
+          }
+        })
+        // })
+      },
+      confirmImport () {
+        this.$confirm('此操作将更新原有数据, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          api.insertBasisbuild(this.$axios).then(res => {
+            this.showimportvisible = false
+            if (res.data.code === 0) {
+              this.$message({
+                type: 'success',
+                message: res.data.message
+              })
+              this.initDatas()
+              this.updatasuppiercertsub()
+            } else {
+              this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+        })
+      },
+      importsearchCommand (command) {
+        if (command === 'search') {
+          this.importDialogVisible = true
+        } else if (command === 'clear') {
+          this.importclearSearch()
+        }
+      },
+      importclearSearch () {
+        Object.assign(this.searchImportForm, this.searchFormReset)
+        this.initImportDatas()
+      },
+      importhandleSearch () {
+        // this.importcurrentPage = 1
+        // this.importDialogVisible = false
+        // this.initImportDatas()
+      },
+      importhandleSizeChange (value) {
+        this.importsize = value
+        this.importcurrentPage = 1
+        this.initImportDatas()
+      },
+      importhandleCurrentChange (value) {
+        this.importcurrentPage = value
+        this.initImportDatas()
+      },
+
+      // 上传
+      beforeAvatarUpload (file) {
+        if (file.name.indexOf('.xlsx') < 0) {
+          this.$message.error('文件格式必须为.xlsx')
+          return false
+        }
+        return true
+      },
+      uploadrequest (option) {
+        let _this = this
+        if (process.client) {
+          const myDomain = window.location.host
+          axios.post(process.env.upfilehost, {})
+            .then(function (res) {
+              if (res.data && res.data.fid && res.data.fid !== '') {
+                if (res.data.publicUrl.indexOf('/upfile') === 0) {
+                  option.action = `http://${myDomain}/${res.data.publicUrl}/${res.data.fid}`
+                } else {
+                  option.action = `http://${res.data.publicUrl}/${res.data.fid}`
+                }
+                uploadajax(option)
+                _this.Excelurl = option.action
+              } else {
+                _this.$message({
+                  type: 'warning',
+                  message: '未上传成功!请刷新界面重新上传!'
+                })
+              }
+            })
+            .catch(res => {
+              _this.$message({
+                type: 'warning',
+                message: '未上传成功!请重新上传!'
+              })
+            })
+        }
+      },
+
+      // 导入
+      uploadExcel () {
+        this.importloading = true
+        this.uploadshow = false
+        let params = {
+          ExcelUrl: this.Excelurl
+        }
+        api.importExcel(params, this.$axios).then(res => {
+          this.importloading = false
+          if (res.data.code === 0) {
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            })
+            this.initImportDatas()
+          } else if (res.data.code === -1) {
+            this.errorDialogVisible = true
+            this.textarea = res.data.message
+          } else if (res.data.code === -2) {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            })
+          }
+        })
+      },
+
       initTableHeader() {
         setapi.initBbTableHeader(this.$axios).then(res => {
           this.dynamicTableColumns = res.data.items

+ 102 - 0
src/dashoo.cn/frontend_web/src/pages/oilsupplier/technologyservice/_opera/showdelcertsub.vue

@@ -64,6 +64,7 @@
         <el-table-column label="操作" width="260px" align="center" fixed="right" show-overflow-tooltip>
           <template slot-scope="scope">
             <el-button type="text" @click="opencertsub(scope.row)" title="导出" size="mini" icon="el-icon-document" width="120px">待删除准入范围</el-button>
+            <el-button type="text" style="color: #F56C6C" @click="delcertsub(scope.row)" title="删除" size="mini" icon="el-icon-delete" width="120px">删除准入范围</el-button>
             <!--<el-button type="text" @click="openfilelist(scope.row)" title="导出" size="mini" icon="el-icon-document" width="120px">企业资质</el-button>-->
           </template>
         </el-table-column>
@@ -199,12 +200,18 @@
                   </el-form-item>
                   <el-form-item>
                     <el-button type="primary" size="mini" style="margin-left: 8px" @click="search">查询</el-button>
+                    <el-button type="primary" @click="toPdf" size="mini" style="margin-left: 25px">下载待删除准入范围</el-button>
                     <!--<el-button type="primary" @click="toPdf" size="mini" style="margin-left: 25px">下载准入范围</el-button>-->
                   </el-form-item>
                 </el-form>
               </span>
             </div>
             <el-table :data="certsubList" border size="mini">
+              <el-table-column label="操作" width="160px" align="center" fixed="right" show-overflow-tooltip>
+                <template slot-scope="scope">
+                  <el-button type="text" style="color: #F56C6C" @click="delcertsubbyid(scope.row)" title="删除" size="mini" icon="el-icon-delete" width="90px">删除</el-button>
+                </template>
+              </el-table-column>
               <el-table-column prop="Code" label="分类编码" show-overflow-tooltip></el-table-column>
               <el-table-column prop="Name" label="分类名称" show-overflow-tooltip></el-table-column>
               <el-table-column
@@ -412,6 +419,101 @@ export default {
   },
 
   methods: {
+    // 导出准入范围到pdf
+    toPdf () {
+      api.pdfexport(this.Id, this.SupplierTypeCode, this.$axios)
+        .then(res => {
+          // response
+          if (res.data.code === 0) {
+            let docurl = res.data.item
+            let pdfurl
+            // 内网服务器专用
+            if (process.client && docurl.indexOf('upfile') === 0) {
+              const myDomain = window.location.host
+              // location.href = 'http://' + myDomain + '/' + docurl
+              pdfurl = 'http://' + process.env.LOCAL_IP + '/' + docurl
+              let requestParams = {
+                pdfUrl: pdfurl,
+                watermark: this.SupplierName
+              }
+              this.$axios.post('supplierdataentry/word-to-pdf-watermark', requestParams)
+                .then(function (res) {
+                  window.open('http://' + myDomain + '/' + res.data)
+                })
+            } else {
+              // location.href = 'http://' + docurl
+              pdfurl = 'http://' + docurl
+              let requestParams = {
+                pdfUrl: pdfurl,
+                watermark: this.SupplierName
+              }
+              this.$axios.post('supplierdataentry/word-to-pdf-watermark', requestParams)
+                .then(function (res) {
+                  window.open('http://' + res.data)
+                })
+            }
+          }
+        }).catch(err => {
+          console.error(err)
+        })
+    },
+    delcertsub (row) {
+      console.log(row)
+      this.$confirm('是否删除该公司的准入项?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        let params = {
+          SupplierId: row.Id
+        }
+        api.delTmpSupplierCertSub(params, this.$axios).then(res => {
+          console.log(res)
+          if (res.data.code === 0) {
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            })
+            this.initDatas()
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            })
+          }
+        })
+      })
+    },
+    delcertsubbyid (row) {
+      console.log(row)
+      this.$confirm('是否删除准入项?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        let params = {
+          Id: row.Id
+        }
+        console.log(params)
+        api.delTmpSupplierCertSub(params, this.$axios).then(res => {
+          console.log(res)
+          if (res.data.code === 0) {
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            })
+            this.getCertSub()
+            this.initDatas()
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            })
+          }
+        })
+      })
+    },
+
     delSupplierCertSub () {
       this.$confirm('此操作将删除缺少资质的准入项, 是否继续?', '提示', {
         confirmButtonText: '确定',

+ 427 - 5
src/dashoo.cn/frontend_web/src/pages/oilsupplier/technologyservice/index.vue

@@ -13,11 +13,13 @@
           <router-link :to="'/oilsupplier/technologyservice/add/operation'">
             <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
           </router-link>
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="exportExcel">导出
+          </el-button>
+          <el-button type="primary" size="mini" style="margin-left:20px; margin-top: -4px;" @click="showimport">更新编码
+          </el-button>
           <router-link :to="'/oilsupplier/technologyservice/_opera/showdelcertsub'">
             <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">查看待删除准入项</el-button>
           </router-link>
-          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="exportExcel">导出
-          </el-button>
         </span>
         <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
           <el-form-item label="时间">
@@ -243,6 +245,167 @@
       </span>
     </el-dialog>
 
+    <el-dialog title="新导入"  width="90%" top="5vh" :visible.sync="showimportvisible">
+      <el-card class="box-card" v-loading="importloading">
+        <div slot="header">
+          <span>
+            <i class="icon icon-table2"></i> 对照表(新导入)
+          </span>
+          <span style="float: right;">
+            <el-button type="primary" size="mini" style="margin-left:20px; margin-top: -4px;" @click="importExcel">导入</el-button>
+            <el-button type="warning" size="mini" style="margin-left:10px; margin-top: -4px;" @click="truncateimport()">清空所有导入
+            </el-button>
+            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="confirmImport()">确认更新
+            </el-button>
+          </span>
+          <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+            <el-form-item label="编码">
+              <el-input size="mini" v-model="searchImportForm.Code" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+            <el-form-item label="名称">
+              <el-input size="mini" v-model="searchImportForm.Name" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-dropdown split-button type="primary" size="mini" @click="importhandleSearch" @command="importsearchCommand">
+                查询
+                <el-dropdown-menu slot="dropdown">
+                  <el-dropdown-item command="clear">查询重置</el-dropdown-item>
+                  <el-dropdown-item command="search">高级查询</el-dropdown-item>
+                </el-dropdown-menu>
+              </el-dropdown>
+            </el-form-item>
+          </el-form>
+        </div>
+
+        <el-table :data="importentityList" size="mini" border height="calc(100vh - 360px)"
+                  style="width: 100%" @sort-change="orderby">
+
+          <el-table-column v-for="column in tableColumns" :key="column.Id" :prop="column.prop" sortable
+                           :width="column.width" :label="column.label" align="center" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{ transferStr(scope.row[column.prop]) }}
+            </template>
+          </el-table-column>
+
+
+          <!--动态显示的表头-->
+          <el-table-column v-for="column in dynamicTableColumns" :prop="column.prop" sortable :width="320"
+                           :key="column.Id" :label="column.label" align="center" show-overflow-tooltip>
+            <template slot-scope="scope">
+              {{ transferStr(scope.row[column.prop]) }}
+            </template>
+          </el-table-column>
+
+        </el-table>
+
+        <el-pagination @size-change="importhandleSizeChange" @current-change="importhandleCurrentChange" :current-page="importcurrentPage"
+                       :page-sizes="[10, 50, 100, 200, 400]" :page-size="importsize" layout="total, sizes, prev, pager, next, jumper"
+                       :total="importcurrentItemCount">
+        </el-pagination>
+      </el-card>
+    </el-dialog>
+
+    <el-dialog title="高级查询" :visible.sync="importDialogVisible" width="720px">
+      <el-form ref="advancedsearchForm" label-width="110px">
+        <el-row>
+
+          <el-col :span="12">
+            <el-form-item label="时间">
+              <el-date-picker size="mini" v-model="CreateOn" type="daterange" style="width:100%" range-separator="至"
+                              start-placeholder="生成日期" end-placeholder="结束日期"></el-date-picker>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="编码">
+              <el-input size="mini" v-model="searchForm.Code" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="名称">
+              <el-input size="mini" v-model="searchForm.Name" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="一级编码">
+              <el-input size="mini" v-model="searchForm.Code1" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="一级名称">
+              <el-input size="mini" v-model="searchForm.Name1" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="二级编码">
+              <el-input size="mini" v-model="searchForm.Code2" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="二级名称">
+              <el-input size="mini" v-model="searchForm.Name2" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="三级编码">
+              <el-input size="mini" v-model="searchForm.Code3" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="三级名称">
+              <el-input size="mini" v-model="searchForm.Name3" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="四级编码">
+              <el-input size="mini" v-model="searchForm.Code4" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="四级名称">
+              <el-input size="mini" v-model="searchForm.Name4" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="部门名称">
+              <el-input size="mini" v-model="searchForm.OrgName" style="width:100%" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="mini" @click="dialogVisible = false">取 消</el-button>
+        <el-button size="mini" type="primary" @click="importhandleSearch">查 询</el-button>
+      </span>
+    </el-dialog>
+
+    <el-dialog title="上传文件"  width="600px" :visible.sync="uploadshow">
+      <el-form label-width="100px">
+        <el-row>
+          <el-col :span="24">
+            <el-upload multiple style="margin-top: 10px;" action="" ref="refuploadattach"
+                       :http-request="uploadrequest" :before-upload="beforeAvatarUpload">
+              <el-button size="small" type="primary">点击上传</el-button>
+            </el-upload>
+          </el-col>
+          <el-col :span="24">
+            <el-button style="float: right;" size="mini" type="primary" @click="uploadExcel()">确定</el-button>
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-dialog>
+
   </div>
 </template>
 <script>
@@ -251,8 +414,8 @@
   } from 'vuex'
   import api from '@/api/oilsupplier/technologyservice'
   import setapi from '@/api/oilsupplier/oilclassorgset'
-  import FileSaver from "file-saver";
-  import XLSX from "xlsx";
+  import axios from 'axios'
+  import uploadajax from '@/assets/js/uploadajax.js'
 
   export default {
     computed: {
@@ -264,6 +427,13 @@
 
     data() {
       return {
+        Excelurl: '',
+        textarea: '',
+        errorDialogVisible: false,
+        uploadshow: false,
+        importDialogVisible: false,
+        importloading: false,
+        showimportvisible: false,
         loading: false,
         codeeditshow: false,
         classid: '',
@@ -454,7 +624,74 @@
           children: 'children'
         },
         operationOrganizeData: [],
-        AuditStepOptions: []
+        AuditStepOptions: [],
+        importCreateOn: [],
+        // 列表数据
+        importentityList: [],
+        // 分页参数
+        importsize: 10,
+        importcurrentPage: 1,
+        importcurrentItemCount: 0,
+        // 列表排序
+        importColumn: {
+          Order: '',
+          Prop: ''
+        },
+        searchImportForm: {
+          Code: '',
+          Name: '',
+          Code1: '',
+          Name1: '',
+          Code2: '',
+          Name2: '',
+          Code3: '',
+          Name3: '',
+          Code4: '',
+          Name4: '',
+          OrgId: '',
+          OrgName: '',
+          F01: '',
+          F02: '',
+          F03: '',
+          F04: '',
+          F05: '',
+          F06: '',
+          F07: '',
+          F08: '',
+          F09: '',
+          F10: '',
+          F11: '',
+          F12: '',
+          F13: '',
+          F14: '',
+          F15: '',
+          F16: '',
+          F17: '',
+          F18: '',
+          F19: '',
+          F20: '',
+          F21: '',
+          F22: '',
+          F23: '',
+          F24: '',
+          F25: '',
+          F26: '',
+          F27: '',
+          F28: '',
+          F29: '',
+          F30: '',
+          F31: '',
+          F32: '',
+          F33: '',
+          F34: '',
+          F35: '',
+          F36: '',
+          F37: '',
+          F38: '',
+          F39: '',
+          F40: '',
+          Remark: ''
+        },
       }
     },
     created() {
@@ -466,6 +703,191 @@
       this.getDictOptions()
     },
     methods: {
+      showimport () {
+        this.initImportDatas()
+        this.showimportvisible = true
+      },
+      initImportDatas () {
+        // 分页及列表条件
+        let params = {
+          _currentPage: this.importcurrentPage,
+          _size: this.importsize,
+          Order: this.importColumn.Order,
+          Prop: this.importColumn.Prop
+        }
+        let myCreateOn = []
+        // 解析时间
+
+        if (this.importCreateOn != null && this.importCreateOn.length === 2) {
+          this.importCreateOn[1].setHours(23)
+          this.importCreateOn[1].setMinutes(59)
+          this.importCreateOn[1].setSeconds(59)
+          myCreateOn.push(this.formatDateTime(this.importCreateOn[0]))
+          myCreateOn.push(this.formatDateTime(this.importCreateOn[1]))
+        }
+        // 查询条件
+        Object.assign(params, this.searchImportForm)
+        // 访问接口
+        api.getImportList(myCreateOn.join(','), params, this.$axios).then(res => {
+          this.importentityList = res.data.items
+          this.importcurrentItemCount = res.data.currentItemCount
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+      importExcel () {
+        this.uploadshow = true
+      },
+      truncateimport () {
+        this.$confirm('此操作将清空导入的数据, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          api.truncateImport(this.$axios).then(res => {
+            this.initImportDatas()
+            if (res.data.code === 0) {
+              this.$message({
+                type: 'success',
+                message: res.data.message
+              })
+            } else {
+              this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+        })
+      },
+      updatasuppiercertsub () {
+        this.importloading = true
+        api.updataSuppierCertSub(this.$axios).then(res => {
+          this.importloading = false
+          if (res.data.code === 0) {
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            })
+          }
+        })
+        // })
+      },
+      confirmImport () {
+        this.$confirm('此操作将更新原有数据, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          api.insertTechnology(this.$axios).then(res => {
+            this.showimportvisible = false
+            if (res.data.code === 0) {
+              this.$message({
+                type: 'success',
+                message: res.data.message
+              })
+              this.initDatas()
+              this.updatasuppiercertsub()
+            } else {
+              this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+        })
+      },
+      importsearchCommand (command) {
+        if (command === 'search') {
+          this.importDialogVisible = true
+        } else if (command === 'clear') {
+          this.importclearSearch()
+        }
+      },
+      importclearSearch () {
+        Object.assign(this.searchImportForm, this.searchFormReset)
+        this.initImportDatas()
+      },
+      importhandleSearch () {
+        this.importcurrentPage = 1
+        this.importDialogVisible = false
+        this.initImportDatas()
+      },
+      importhandleSizeChange (value) {
+        this.importsize = value
+        this.importcurrentPage = 1
+        this.initImportDatas()
+      },
+      importhandleCurrentChange (value) {
+        this.importcurrentPage = value
+        this.initImportDatas()
+      },
+
+      // 上传
+      beforeAvatarUpload (file) {
+        if (file.name.indexOf('.xlsx') < 0) {
+          this.$message.error('文件格式必须为.xlsx')
+          return false
+        }
+        return true
+      },
+      uploadrequest (option) {
+        let _this = this
+        if (process.client) {
+          const myDomain = window.location.host
+          axios.post(process.env.upfilehost, {})
+            .then(function (res) {
+              if (res.data && res.data.fid && res.data.fid !== '') {
+                if (res.data.publicUrl.indexOf('/upfile') === 0) {
+                  option.action = `http://${myDomain}/${res.data.publicUrl}/${res.data.fid}`
+                } else {
+                  option.action = `http://${res.data.publicUrl}/${res.data.fid}`
+                }
+                uploadajax(option)
+                _this.Excelurl = option.action
+              } else {
+                _this.$message({
+                  type: 'warning',
+                  message: '未上传成功!请刷新界面重新上传!'
+                })
+              }
+            })
+            .catch(res => {
+              _this.$message({
+                type: 'warning',
+                message: '未上传成功!请重新上传!'
+              })
+            })
+        }
+      },
+
+      // 导入
+      uploadExcel () {
+        this.importloading = true
+        this.uploadshow = false
+        let params = {
+          ExcelUrl: this.Excelurl
+        }
+        api.importExcel(params, this.$axios).then(res => {
+          this.importloading = false
+          if (res.data.code === 0) {
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            })
+            this.initImportDatas()
+          } else if (res.data.code === -1) {
+            this.errorDialogVisible = true
+            this.textarea = res.data.message
+          } else if (res.data.code === -2) {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            })
+          }
+        })
+      },
+
       initTableHeader() {
         setapi.initTsTableHeader(this.$axios).then(res => {
           this.dynamicTableColumns = res.data.items