2
3
Просмотр исходного кода

准入企业不能重复添加,同一类型不能重复申请的控制

yuedefeng 6 лет назад
Родитель
Сommit
ed343b796e

+ 72 - 0
src/dashoo.cn/backend/api/business/oilsupplier/supplier/oilsupplierService.go

@@ -117,3 +117,75 @@ func (s *OilSupplierService) CheckRepeatApplyInfo(supplierTableName, supplierCer
 
 
 }
+
+func (s *OilSupplierService) CheckUpdateRepeatApplyInfo(supplierTableName, supplierCertTableName, typeCode, supplierId, SupplierName, CommercialNo, OrganCode, BankAccount, CompanyUrl string, entitiesPtr interface{}) {
+
+	//获取分页信息
+
+
+
+	where2 := " a.Id != '" + supplierId + "'"
+
+	where := ""
+	if SupplierName != "" {
+		where = where + " or a.SupplierName = '" + SupplierName + "'"
+	}
+
+	if CommercialNo != "" {
+		where = where + " or a.CommercialNo = '" + CommercialNo + "'"
+	}
+
+	if OrganCode != "" {
+		where = where + " or a.OrganCode = '" + OrganCode + "'"
+	}
+
+	if BankAccount != "" {
+		where = where + " or a.BankAccount = '" + BankAccount + "'"
+	}
+
+	if CompanyUrl != "" {
+		where = where + " or a.CompanyUrl = '" + CompanyUrl + "'"
+	}
+
+	if len(where) > 0 {
+		where2 += " and (1=0 " + where + ")"
+		var sql string
+		sql = `select a.*, b.Id as CertId, b.AccessCardNo, b.SupplierTypeCode, b.SupplierTypeName, `
+		sql += ` b.WorkerTotal, `
+		sql += ` b.ContractNum, `
+		sql += ` b.UniversityNum, `
+		sql += ` b.TechnicalNum, `
+		sql += ` b.AboveProfNum, `
+		sql += ` b.MiddleProfNum, `
+		sql += ` b.NationalRegNum, `
+		sql += ` b.NationalCertTotal, `
+		sql += ` b.DesignerTotal, `
+		sql += ` b.SkillerTotal, `
+		sql += ` b.Status, `
+		sql += ` b.WorkflowId `
+		sql += ` from ` + supplierTableName + ` a `
+		sql += ` right join ` + supplierCertTableName + " b on b.SupplierId = a.Id"
+		sql += ` where ` + where2
+		s.DBE.SQL(sql).Find(entitiesPtr)
+	}
+}
+
+func (s *OilSupplierService) CanUpdateSupplier(oilSupplierCertTableName string, supplierId int) (bool){
+	session := s.DBE.NewSession()
+	sessionSvc := GetOilSupplierSession(session)
+	defer session.Close()
+	session.Begin()
+	result := sessionSvc.CanUpdateSupplier(oilSupplierCertTableName, supplierId)
+	session.Commit()
+	return result
+}
+
+func (s *OilSupplierService) GetUpdateCols(oilSupplierCertTableName string, supplierTypeCode string, supplierId int) ([]string){
+	session := s.DBE.NewSession()
+	sessionSvc := GetOilSupplierSession(session)
+	defer session.Close()
+	session.Begin()
+	cols := sessionSvc.GetUpdateCols(oilSupplierCertTableName, supplierTypeCode, supplierId)
+	session.Commit()
+	return cols
+}

+ 193 - 0
src/dashoo.cn/backend/api/business/oilsupplier/supplier/oilsupplierSession.go

@@ -3,6 +3,7 @@ package supplier
 import (
 	. "dashoo.cn/backend/api/mydb"
 	"github.com/go-xorm/xorm"
+	"strconv"
 )
 
 type OilSupplierSession struct {
@@ -14,3 +15,195 @@ func GetOilSupplierSession(session *xorm.Session) *OilSupplierSession {
 	s.Session = session
 	return s
 }
+
+func (s *OilSupplierSession) CanUpdateSupplier(oilSupplierCertTableName string, supplierId int) (bool){
+	sql := "select count(*) from " + oilSupplierCertTableName + " where SupplierId='" + strconv.Itoa(supplierId) + "' and status > 0"
+	resultsSlice, _ := s.Session.Query(sql)
+	var total int64
+	if len(resultsSlice) > 0 {
+		results := resultsSlice[0]
+		for _, value := range results {
+			total, _ = strconv.ParseInt(string(value), 10, 64)
+			break
+		}
+	}
+	return total <= 0
+}
+
+func (s *OilSupplierSession) GetUpdateCols(oilSupplierCertTableName string, supplierTypeCode string, supplierId int) ([]string){
+	canEdit := s.CanUpdateSupplier(oilSupplierCertTableName, supplierId)
+	cols := []string{
+		"SupplierName",
+		"OilCertificateNo",
+
+		"Grade",
+
+		"MgrUnit",
+
+		"OperType",
+
+		"Country",
+
+		"MaunAgent",
+
+		"ConstructTeam",
+
+		"CommercialNo",
+
+		"OrganCode",
+
+		"CountryTaxNo",
+
+		"LocalTaxNo",
+
+		"Address",
+
+		"Province",
+
+		"City",
+
+		"Street",
+
+		"HouseNo",
+
+		"ZipCode",
+
+		"QualitySystemCert",
+
+		"ProductQualityCert",
+
+		"MaunLicense",
+
+		"QualifCert",
+
+		"QualifCertLevel",
+
+		"SafetyLicense",
+
+		"TechServiceLic",
+
+		"TJInNotify",
+
+		"SpecIndustryCert",
+
+		"LegalPerson",
+
+		"CategoryCode",
+
+		"CategoryName",
+
+		"RegCapital",
+
+		"Currency",
+
+		"ContactName",
+
+		"CompanyType",
+
+		"SetupTime",
+
+		"DepositBank",
+
+		"BankAccount",
+
+		"EMail",
+
+		"BankCreditRating",
+
+		"Mobile",
+
+		"Telphone",
+
+		"Fax",
+
+		"CompanyTel",
+
+		"QQ",
+
+		"CompanyUrl",
+
+		"SpecSupplier",
+
+		"SpecTypeCode",
+
+		"SpecTypeName",
+
+		"WorkerTotal",
+		"ContractNum ",
+		"UniversityNum",
+		"TechnicalNum",
+		"AboveProfNum",
+		"MiddleProfNum",
+		"NationalRegNum",
+		"NationalCertTotal",
+		"DesignerTotal",
+		"SkillerTotal",
+
+		"Remark",
+
+		"IsDelete",
+
+		"CreateOn",
+
+		"CreateUserId",
+
+		"CreateBy",
+
+		"ModifiedOn",
+
+		"ModifiedUserId",
+
+		"ModifiedBy",
+		"LinkAddress",
+		"LinkProvince",
+		"LinkCity",
+		"LinkStreet",
+		"LinkHouseNo",
+		"LinkZipCode",
+		"HseTraining",
+	}
+
+	if !canEdit {
+		cols = []string{
+			"OilCertificateNo",
+			"Grade",
+			"MgrUnit",
+			"OperType",
+			"Country",
+			"MaunAgent",
+			"ConstructTeam",
+			"CommercialNo",
+			"OrganCode",
+
+			"QualitySystemCert",
+			"ProductQualityCert",
+			"MaunLicense",
+			"QualifCert",
+			"QualifCertLevel",
+			"SafetyLicense",
+			"TechServiceLic",
+			"TJInNotify",
+			"SpecIndustryCert",
+			"LegalPerson",
+			"CategoryCode",
+			"CategoryName",
+			"RegCapital",
+			"Currency",
+			"ContactName",
+
+			"WorkerTotal",
+			"ContractNum ",
+			"UniversityNum",
+			"TechnicalNum",
+			"AboveProfNum",
+			"MiddleProfNum",
+			"NationalRegNum",
+			"NationalCertTotal",
+			"DesignerTotal",
+			"SkillerTotal",
+			"Remark",
+		}
+	}
+	return cols
+
+}

+ 108 - 146
src/dashoo.cn/backend/api/controllers/oilsupplier/supplier.go

@@ -986,6 +986,18 @@ func (this *OilSupplierController) GetDictList() {
 	userSvc.GetEntityById(this.User.Id, &userEntity)
 	dictList["Supervisers"] = userSvc.GetUserListByDepartmentId(this.User.AccCode, userEntity.Departmentid)
 	dictList["GaodeMapChinaAreas"] = areaJsonSvc.GetGaodeMapChinaAreas()
+	//获取我创建的所有公司
+	var list []supplier.OilSupplier
+	if this.User.IsCompanyUser == 1 {
+		svcSupplier := supplier.GetOilSupplierService(utils.DBE)
+		supplierWhere := " CreateUserId = '" + this.User.Id + "'"
+		svcSupplier.GetEntitysByWhere(OilSupplierName, supplierWhere, &list)
+		dictList["CompanyNames"] = list
+	} else { //二级单位不用获取
+		dictList["CompanyNames"] = list
+	}
+
+
 
 	//var dictCustomer []svccustomer.Customer
 	//customerSvc.GetEntitysByWhere(this.User.AccCode + CustomerName, "", &dictCustomer)
@@ -1033,6 +1045,22 @@ func (this *OilSupplierController) GetEntityAndCert() {
 	this.ServeJSON()
 }
 
+// @Title 获取实体
+// @Description 获取实体
+// @Success 200 {object} supplier.OilSupplier
+// @router /getbyname/:name [get]
+func (this *OilSupplierController) GetEntityByName() {
+	name := this.Ctx.Input.Param(":name")
+
+	var model supplier.OilSupplier
+	svc := supplier.GetOilSupplierService(utils.DBE)
+	where := "SupplierName='" + name + "'"
+	svc.GetEntityByWhere(OilSupplierName, where, &model)
+
+	this.Data["json"] = &model
+	this.ServeJSON()
+}
+
 // @Title 添加
 // @Description 新增
 // @Success	200	{object} controllers.Request
@@ -1057,13 +1085,24 @@ func (this *OilSupplierController) AddEntity() {
 	}
 	var list []supplier.OilSupplierView
 	service := supplier.GetOilSupplierService(utils.DBE)
-	service.CheckRepeatApplyInfo(OilSupplierName, OilSupplierCertName, modelCertVM.SupplierTypeCode, model.SupplierName, model.CommercialNo, model.OrganCode, model.BankAccount, model.CompanyUrl, &list)
-	if len(list) > 0 {
-		errinfo.Message = "添加失败! 已存在相关企业的信息,不能重复申请"
-		errinfo.Code = -1
-		this.Data["json"] = &errinfo
-		this.ServeJSON()
-		return
+	if model.Id <= 0 {
+		service.CheckRepeatApplyInfo(OilSupplierName, OilSupplierCertName, modelCertVM.SupplierTypeCode, model.SupplierName, model.CommercialNo, model.OrganCode, model.BankAccount, model.CompanyUrl, &list)
+		if len(list) > 0 {
+			errinfo.Message = "添加失败! 已存在相关企业的信息,不能重复申请"
+			errinfo.Code = -1
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+			return
+		}
+	} else {
+		service.CheckUpdateRepeatApplyInfo(OilSupplierName, OilSupplierCertName, modelCertVM.SupplierTypeCode, strconv.Itoa(model.Id), model.SupplierName, model.CommercialNo, model.OrganCode, model.BankAccount, model.CompanyUrl, &list)
+		if len(list) > 0  {
+			errinfo.Message = "添加失败! 已存在相关企业的信息,或与其他企业信息重复"
+			errinfo.Code = -1
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+			return
+		}
 	}
 
 	var session *xorm.Session
@@ -1078,10 +1117,18 @@ func (this *OilSupplierController) AddEntity() {
 
 	defer session.Close()
 	err := session.Begin()
-	_, err = svc.InsertEntityBytbl(OilSupplierName, &model)
+	if model.Id <= 0 {
+		_, err = svc.InsertEntityBytbl(OilSupplierName, &model)
+
+	} else {
+		//判断基本信息是否可修改
+		updateCols := svc.GetUpdateCols(OilSupplierCertName, modelCertVM.SupplierTypeCode, model.Id)
+		err = svc.UpdateEntityBytbl(OilSupplierName, model.Id, &model, updateCols)
+	}
 	if err != nil {
 		session.Rollback()
 	}
+
 	modelCert.SupplierId = model.Id
 	modelCert.SupplierTypeCode = modelCertVM.SupplierTypeCode
 	modelCert.SupplierTypeName = modelCertVM.SupplierTypeName
@@ -1112,12 +1159,14 @@ func (this *OilSupplierController) AddEntity() {
 	}
 }
 
+
 // @Title 修改实体
 // @Description 修改实体
 // @Success	200	{object} controllers.Request
-// @router /update/:id [post]
+// @router /update/:id/:type [post]
 func (this *OilSupplierController) UpdateEntity() {
 	id := this.Ctx.Input.Param(":id")
+	typeCode := this.Ctx.Input.Param(":type")
 	var errinfo ErrorInfo
 	if id == "" {
 		errinfo.Message = "操作失败!请求信息不完整"
@@ -1128,149 +1177,29 @@ func (this *OilSupplierController) UpdateEntity() {
 	}
 
 	var model supplier.OilSupplier
-	svc := supplier.GetOilSupplierService(utils.DBE)
-
 	var jsonBlob = this.Ctx.Input.RequestBody
 	json.Unmarshal(jsonBlob, &model)
-	model.ModifiedOn = time.Now()
-	model.ModifiedBy = this.User.Realname
-	model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
-
-	cols := []string{
-
-		"Id",
-
-		"SupplierName",
-
-		"OilCertificateNo",
-
-		"Grade",
-
-		"MgrUnit",
-
-		"OperType",
-
-		"Country",
-
-		"MaunAgent",
-
-		"ConstructTeam",
-
-		"CommercialNo",
-
-		"OrganCode",
-
-		"CountryTaxNo",
-
-		"LocalTaxNo",
-
-		"Address",
-
-		"Province",
-
-		"City",
-
-		"Street",
-
-		"HouseNo",
-
-		"ZipCode",
-
-		"QualitySystemCert",
-
-		"ProductQualityCert",
-
-		"MaunLicense",
-
-		"QualifCert",
-
-		"QualifCertLevel",
-
-		"SafetyLicense",
-
-		"TechServiceLic",
-
-		"TJInNotify",
-
-		"SpecIndustryCert",
-
-		"LegalPerson",
-
-		"CategoryCode",
-
-		"CategoryName",
-
-		"RegCapital",
-
-		"Currency",
 
-		"ContactName",
 
-		"CompanyType",
-
-		"SetupTime",
-
-		"DepositBank",
-
-		"BankAccount",
-
-		"EMail",
-
-		"BankCreditRating",
-
-		"Mobile",
-
-		"Telphone",
-
-		"Fax",
-
-		"CompanyTel",
-
-		"QQ",
-
-		"CompanyUrl",
-
-		"SpecSupplier",
-
-		"SpecTypeCode",
-
-		"SpecTypeName",
-
-		"WorkerTotal",
-		"ContractNum ",
-		"UniversityNum",
-		"TechnicalNum",
-		"AboveProfNum",
-		"MiddleProfNum",
-		"NationalRegNum",
-		"NationalCertTotal",
-		"DesignerTotal",
-		"SkillerTotal",
-
-		"Remark",
-
-		"IsDelete",
-
-		"CreateOn",
-
-		"CreateUserId",
-
-		"CreateBy",
-
-		"ModifiedOn",
+	var list []supplier.OilSupplierView
+	service := supplier.GetOilSupplierService(utils.DBE)
+	service.CheckUpdateRepeatApplyInfo(OilSupplierName, OilSupplierCertName, typeCode, strconv.Itoa(model.Id), model.SupplierName, model.CommercialNo, model.OrganCode, model.BankAccount, model.CompanyUrl, &list)
+	if len(list) > 0  {
+		errinfo.Message = "修改失败! 已存在相关企业的信息,或与其他企业信息重复"
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
 
-		"ModifiedUserId",
+	svc := supplier.GetOilSupplierService(utils.DBE)
+	model.ModifiedOn = time.Now()
+	model.ModifiedBy = this.User.Realname
+	model.ModifiedUserId, _ = utils.StrTo(this.User.Id).Int()
 
-		"ModifiedBy",
-		"LinkAddress",
-		"LinkProvince",
-		"LinkCity",
-		"LinkStreet",
-		"LinkHouseNo",
-		"LinkZipCode",
-		"HseTraining",
-	}
-	err := svc.UpdateEntityBytbl(OilSupplierName, id, &model, cols)
+	//判断基本信息是否可修改
+	updateCols := svc.GetUpdateCols(OilSupplierCertName, typeCode, model.Id)
+	err := svc.UpdateEntityBytbl(OilSupplierName, id, &model, updateCols)
 	if err == nil {
 		errinfo.Message = "修改成功!"
 		errinfo.Code = 0
@@ -1410,3 +1339,36 @@ func (this *OilSupplierController) IsCanApply() {
 		this.ServeJSON()
 	}
 }
+
+// @Title 判断是否可以修改供方企业信息
+// @Description
+// @Success 200 {string} Count
+// @Failure 403 :id 为空
+// @router /iscanupdatesupplier/:supplierid [get]
+func (this *OilSupplierController) CanUpdateSupplier() {
+	supplierId := this.Ctx.Input.Param(":supplierid")
+	var errinfo ErrorInfo
+	if supplierId == "" {
+		errinfo.Message = "操作失败!请求信息不完整"
+		errinfo.Code = -2
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+		return
+	}
+
+	Id, _ := strconv.Atoi(supplierId)
+	svc := supplier.GetOilSupplierService(utils.DBE)
+	canUpdate := svc.CanUpdateSupplier(OilSupplierCertName, Id)
+
+	if canUpdate {
+		errinfo.Message = "可以修改"
+		errinfo.Code = 0
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	} else {
+		errinfo.Message = "此供方已经提交准入申请,不可修改"
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+}

+ 14 - 2
src/dashoo.cn/frontend_web/src/api/oilsupplier/supplier.js

@@ -38,6 +38,12 @@ export default {
       method: 'GET'
     })
   },
+  getEntityByName (name, myAxios) {
+    return myAxios({
+      url: '/supplier/getbyname/' + name,
+      method: 'GET'
+    })
+  },
   addEntity (formData, myAxios) {
     return myAxios({
       url: '/supplier/add',
@@ -47,7 +53,7 @@ export default {
   },
   updateEntity (entityId, formData, myAxios) {
     return myAxios({
-      url: '/supplier/update/' + entityId,
+      url: '/supplier/update/' + entityId + '/' + formData.SupplierTypeCode,
       method: 'post',
       data: formData
     })
@@ -70,5 +76,11 @@ export default {
       url: '/supplier/iscanapply/' + typeCode,
       method: 'get'
     })
-  }
+  },
+  isCanUpdateSupplier (supplierid, myAxios) {
+    return myAxios({
+      url: '/supplier/iscanupdatesupplier/' + supplierid,
+      method: 'get'
+    })
+  },
 }

+ 68 - 25
src/dashoo.cn/frontend_web/src/components/oilsupplier/basisinfo.vue

@@ -18,14 +18,17 @@
 
         <el-col :span="16">
           <el-form-item label="供方名称" prop="SupplierName" >
-            <el-input v-model="formData.SupplierName" maxlength="255" placeholder="请输入" style="width: 100%">
+            <el-autocomplete class="inline-input" v-model="formData.SupplierName" :readonly="companyReadonly" :fetch-suggestions="querySearch"
+                             :maxlength="255" placeholder="请输入内容" style="width: 100%"  @select="handleSelect" v-if="authUser.Profile.IsCompanyUser == 1">
+            </el-autocomplete>
+            <el-input v-model="formData.SupplierName" :maxlength="255" @change="inputCompanyName" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%" v-if="authUser.Profile.IsCompanyUser == 0">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="单位关系">
-            <el-select ref="SpecType" multiple v-model="UnitRelationAry" @change="unitRelationChange" filterable
+            <el-select ref="SpecType" multiple v-model="UnitRelationAry" :disabled="!canUpdateSupplier" @change="unitRelationChange" filterable
                        placeholder="请选择" style="width: 100%">
               <el-option v-for="item in UnitRelationOptions" :key="item.Id" :label="item.Key"
                          :value="item.Value">
@@ -36,21 +39,21 @@
 
         <el-col :span="8">
           <el-form-item label="统一社会信用代码" prop="CommercialNo" >
-            <el-input v-model="formData.CommercialNo" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.CommercialNo" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="税务登记证编号" prop="CountryTaxNo" >
-            <el-input v-model="formData.CountryTaxNo" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.CountryTaxNo" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="组织机构代码" prop="OrganCode" >
-            <el-input v-model="formData.OrganCode" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.OrganCode" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -64,12 +67,12 @@
           <el-form-item label="注册地址" prop="Province" >
             <el-row>
               <el-col :span="10">
-                <el-cascader :options="countryoptions" :props="countryprops" maxlength="20" placeholder="省市区"
+                <el-cascader :options="countryoptions" :props="countryprops" maxlength="20" :readonly="!canUpdateSupplier" placeholder="省市区"
                              v-model="CityAry" style="width: 100%" @change="handleAreaChange">
                 </el-cascader>
               </el-col>
               <el-col :span="14">
-                <el-input v-model="formData.Address" props="Address" maxlength="500" placeholder="详细地址" style="width: 100%">
+                <el-input v-model="formData.Address" props="Address" maxlength="500" :readonly="!canUpdateSupplier" placeholder="详细地址" style="width: 100%">
                 </el-input>
               </el-col>
             </el-row>
@@ -77,7 +80,7 @@
         </el-col>
         <el-col :span="8">
           <el-form-item label="邮编" prop="ZipCode" >
-            <el-input v-model="formData.ZipCode" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.ZipCode" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -86,7 +89,7 @@
           <el-form-item label="通信地址" prop="LinkProvince" >
             <el-row>
               <el-col :span="10">
-                <el-cascader :options="countryoptions" :props="countryprops" placeholder="省市区"
+                <el-cascader :options="countryoptions" :props="countryprops" :disabled="!canUpdateSupplier" placeholder="省市区"
                              v-model="LinkCityAry" maxlength="20" style="width: 100%" @change="handleLinkAreaChange">
                 </el-cascader>
               </el-col>
@@ -99,7 +102,7 @@
         </el-col>
         <el-col :span="8">
           <el-form-item label="邮编" prop="LinkZipCode" >
-            <el-input v-model="formData.LinkZipCode" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.LinkZipCode" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -143,7 +146,7 @@
 
         <el-col :span="8">
           <el-form-item label="法定代表人姓名" prop="LegalPerson" >
-            <el-input v-model="formData.LegalPerson" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.LegalPerson" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -151,7 +154,7 @@
         <el-col :span="8">
           <el-form-item label="公司类型" prop="CompanyType" >
             <!--<el-input v-model="formData.CompanyType" placeholder="请输入" style="width: 100%"></el-input>-->
-            <el-select v-model="formData.CompanyType" maxlength="50" filterable allow-create placeholder="请选择"
+            <el-select v-model="formData.CompanyType" maxlength="50" filterable allow-create :disabled="!canUpdateSupplier" placeholder="请选择"
                        style="width: 100%;">
               <el-option v-for="item in CompanyTypeOptions" :key="item.Id" :label="item.Key" :value="item.Value"
                          style="width: 100%">
@@ -174,7 +177,7 @@
 
         <el-col :span="8">
           <el-form-item label="注册资本" prop="RegCapital" >
-            <el-input type="number" v-model="formData.RegCapital" :min="1"  placeholder="请输入" style="width: 100%">
+            <el-input type="number" v-model="formData.RegCapital" :min="1" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
               <template slot="append">万元</template>
             </el-input>
           </el-form-item>
@@ -190,7 +193,7 @@
           <el-form-item label="成立时间">
             <!--<el-date v-model="formData.SetupTime" maxlength="50" type="date" placeholder="请输入"
               style="width: 100%"> </el-date>-->
-            <el-date-picker v-model="formData.SetupTime" type="date" format="yyyy 年 MM 月 dd 日"
+            <el-date-picker v-model="formData.SetupTime" type="date" :readonly="!canUpdateSupplier" format="yyyy 年 MM 月 dd 日"
                             value-format="yyyy-MM-dd" placeholder="选择日期" style="width: 100%">
             </el-date-picker>
           </el-form-item>
@@ -198,53 +201,53 @@
 
         <el-col :span="8">
           <el-form-item label="开户银行" prop="DepositBank" >
-            <el-input v-model="formData.DepositBank" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.DepositBank" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="银行账号" prop="BankAccount" >
-            <el-input v-model="formData.BankAccount" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.BankAccount" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="联系人姓名" prop="ContactName">
-            <el-input v-model="formData.ContactName" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.ContactName" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="移动电话" prop="Mobile" >
-            <el-input v-model="formData.Mobile" maxlength="20" placeholder="请输入" style="width: 100%"></el-input>
+            <el-input v-model="formData.Mobile" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%"></el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="固定电话" prop="Telphone" >
-            <el-input v-model="formData.Telphone" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.Telphone" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="传真" prop="Fax" >
-            <el-input v-model="formData.Fax" maxlength="20" placeholder="请输入" style="width: 100%"></el-input>
+            <el-input v-model="formData.Fax" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%"></el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="财务电话" prop="CompanyTel" >
-            <el-input v-model="formData.CompanyTel" placeholder="请输入" maxlength="20" style="width: 100%">
+            <el-input v-model="formData.CompanyTel" :readonly="!canUpdateSupplier" placeholder="请输入" maxlength="20" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="电子邮箱" prop="EMail" >
-            <el-input v-model="formData.EMail" maxlength="50" placeholder="请输入" style="width: 100%"></el-input>
+            <el-input v-model="formData.EMail" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%"></el-input>
           </el-form-item>
         </el-col>
 
@@ -256,7 +259,7 @@
 
         <el-col :span="8">
           <el-form-item label="银行信用等级">
-            <el-input v-model="formData.BankCreditRating" maxlength="10" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.BankCreditRating" maxlength="10" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -274,7 +277,7 @@
         <el-col :span="8">
           <el-form-item label="HSE审查培训">
             <!--<el-input v-model="formData.HseTraining" placeholder="请输入" style="width: 100%"></el-input>-->
-            <el-select v-model="formData.HseTraining" placeholder="请选择" style="width: 100%;">
+            <el-select v-model="formData.HseTraining" :readonly="!canUpdateSupplier" placeholder="请选择" style="width: 100%;">
               <el-option v-for="item in HSEOptions" :key="item.value" :label="item.label" :value="item.value"
                          style="width: 100%">
               </el-option>
@@ -351,14 +354,24 @@
         type: Object,
         default: null
       },
+      authUser: {
+        type: Object,
+        default: null
+      },
       disabled: {
         type: Boolean,
         default: false
       },
+      canUpdateSupplier: {
+        type: Boolean,
+        default: true
+      },
     },
 
     data () {
       return {
+        companyReadonly: false,
+        companynames: [],
         UnitRelationOptions: [],
         CompanyTypeOptions: [],
         UnitRelationAry: [],
@@ -527,6 +540,17 @@
           this.UnitRelationOptions = this.dictData['UnitRelation']
           this.getCityList(this.dictData['GaodeMapChinaAreas'])
           this.CompanyTypeOptions = this.dictData['CompanyType']
+          let suppliers = this.dictData['CompanyNames']
+          for (let idx in suppliers) {
+            suppliers[idx]['value'] = suppliers[idx].SupplierName
+            this.companynames.push(suppliers[idx])
+          }
+          if (this.authUser && this.authUser.Profile.IsCompanyUser === 1 && this.companynames.length > 0) {
+            if (!this.formData.Id) {
+              this.formData.SupplierName = ''
+            }
+            this.companyReadonly = true
+          }
         }
       },
       getCityList (val) {
@@ -561,7 +585,26 @@
         var minute = date.getMinutes();
         minute = minute < 10 ? ('0' + minute) : minute;
         return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
-      }
+      },
+
+      /** ----------------------- */
+      querySearch (queryString, cb) {
+        var results = queryString ? this.companynames.filter(this.createFilter(queryString)) : this.companynames
+        // 调用 callback 返回建议列表的数据
+        cb(results)
+      },
+      createFilter (queryString) {
+        return (restaurant) => {
+          return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0)
+        }
+      },
+      handleSelect (item) {
+        this.$emit('selectcompany', item)
+      },
+      inputCompanyName (val) {
+        this.$emit('inputcompany', val)
+      },
+
     }
   }
 

+ 71 - 29
src/dashoo.cn/frontend_web/src/components/oilsupplier/goodsinfo.vue

@@ -18,14 +18,17 @@
 
         <el-col :span="16">
           <el-form-item label="供方名称" prop="SupplierName" >
-            <el-input v-model="formData.SupplierName" maxlength="255" placeholder="请输入" style="width: 100%">
+            <el-autocomplete class="inline-input" v-model="formData.SupplierName" :readonly="companyReadonly" :fetch-suggestions="querySearch"
+                             :maxlength="255" placeholder="请输入内容" style="width: 100%"  @select="handleSelect" v-if="authUser.Profile.IsCompanyUser == 1">
+            </el-autocomplete>
+            <el-input v-model="formData.SupplierName" :maxlength="255" @change="inputCompanyName" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%" v-if="authUser.Profile.IsCompanyUser == 0">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="单位关系">
-            <el-select ref="SpecType" multiple v-model="UnitRelationAry" @change="unitRelationChange" filterable
+            <el-select ref="SpecType" multiple v-model="UnitRelationAry" :disabled="!canUpdateSupplier" @change="unitRelationChange" filterable
                        placeholder="请选择" style="width: 100%">
               <el-option v-for="item in UnitRelationOptions" :key="item.Id" :label="item.Key"
                          :value="item.Value">
@@ -34,38 +37,38 @@
           </el-form-item>
         </el-col>
 
-        <el-col :span="16">
+        <el-col :span="12">
           <el-form-item label="国家" prop="Country" >
-            <el-input v-model="formData.Country" maxlength="255" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.Country" maxlength="255" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
 
-         <el-col :span="16">
+         <el-col :span="12">
           <el-form-item label="管理单位" >
-            <el-input v-model="formData.ManagementUnit" maxlength="255" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.ManagementUnit" maxlength="255" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="统一社会信用代码" prop="CommercialNo" >
-            <el-input v-model="formData.CommercialNo" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.CommercialNo" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="税务登记证编号" prop="CountryTaxNo" >
-            <el-input v-model="formData.CountryTaxNo" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.CountryTaxNo" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="组织机构代码" prop="OrganCode" >
-            <el-input v-model="formData.OrganCode" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.OrganCode" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -76,10 +79,10 @@
           </el-form-item>
         </el-col>-->
         <el-col :span="16">
-          <el-form-item label="注册地址" prop="Province" >
+          <el-form-item label="注册地址" prop="Province">
             <el-row>
               <el-col :span="10">
-                <el-cascader :options="countryoptions" :props="countryprops" maxlength="20" placeholder="省市区"
+                <el-cascader :options="countryoptions" :props="countryprops" maxlength="20" :readonly="!canUpdateSupplier" placeholder="省市区"
                              v-model="CityAry" style="width: 100%" @change="handleAreaChange">
                 </el-cascader>
               </el-col>
@@ -92,7 +95,7 @@
         </el-col>
         <el-col :span="8">
           <el-form-item label="邮编" prop="ZipCode" >
-            <el-input v-model="formData.ZipCode" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.ZipCode" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -101,7 +104,7 @@
           <el-form-item label="通信地址" prop="LinkProvince" >
             <el-row>
               <el-col :span="10">
-                <el-cascader :options="countryoptions" :props="countryprops" placeholder="省市区"
+                <el-cascader :options="countryoptions" :props="countryprops" :readonly="!canUpdateSupplier" placeholder="省市区"
                              v-model="LinkCityAry" maxlength="20" style="width: 100%" @change="handleLinkAreaChange">
                 </el-cascader>
               </el-col>
@@ -114,7 +117,7 @@
         </el-col>
         <el-col :span="8">
           <el-form-item label="邮编" prop="LinkZipCode" >
-            <el-input v-model="formData.LinkZipCode" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.LinkZipCode" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -154,7 +157,7 @@
 
         <el-col :span="8">
           <el-form-item label="法定代表人姓名" prop="LegalPerson" >
-            <el-input v-model="formData.LegalPerson" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.LegalPerson" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -162,7 +165,7 @@
         <el-col :span="8">
           <el-form-item label="公司类型" prop="CompanyType" >
             <!--<el-input v-model="formData.CompanyType" placeholder="请输入" style="width: 100%"></el-input>-->
-            <el-select v-model="formData.CompanyType" maxlength="50" filterable allow-create placeholder="请选择"
+            <el-select v-model="formData.CompanyType" maxlength="50" filterable allow-create :disabled="!canUpdateSupplier" placeholder="请选择"
                        style="width: 100%;">
               <el-option v-for="item in CompanyTypeOptions" :key="item.Id" :label="item.Key" :value="item.Value"
                          style="width: 100%">
@@ -185,7 +188,7 @@
 
         <el-col :span="8">
           <el-form-item label="注册资本" prop="RegCapital" >
-            <el-input type="number" v-model="formData.RegCapital" :min="1"  placeholder="请输入" style="width: 100%">
+            <el-input type="number" v-model="formData.RegCapital" :min="1" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
               <template slot="append">万元</template>
             </el-input>
           </el-form-item>
@@ -201,7 +204,7 @@
           <el-form-item label="成立时间">
             <!--<el-date v-model="formData.SetupTime" maxlength="50" type="date" placeholder="请输入"
               style="width: 100%"> </el-date>-->
-            <el-date-picker v-model="formData.SetupTime" type="date" format="yyyy 年 MM 月 dd 日"
+            <el-date-picker v-model="formData.SetupTime" type="date" :readonly="!canUpdateSupplier" format="yyyy 年 MM 月 dd 日"
                             value-format="yyyy-MM-dd" placeholder="选择日期" style="width: 100%">
             </el-date-picker>
           </el-form-item>
@@ -209,53 +212,53 @@
 
         <el-col :span="8">
           <el-form-item label="开户银行" prop="DepositBank" >
-            <el-input v-model="formData.DepositBank" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.DepositBank" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="银行账号" prop="BankAccount" >
-            <el-input v-model="formData.BankAccount" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.BankAccount" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="联系人姓名" prop="ContactName">
-            <el-input v-model="formData.ContactName" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.ContactName" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="移动电话" prop="Mobile" >
-            <el-input v-model="formData.Mobile" maxlength="20" placeholder="请输入" style="width: 100%"></el-input>
+            <el-input v-model="formData.Mobile" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%"></el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="固定电话" prop="Telphone" >
-            <el-input v-model="formData.Telphone" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.Telphone" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="传真" prop="Fax" >
-            <el-input v-model="formData.Fax" maxlength="20" placeholder="请输入" style="width: 100%"></el-input>
+            <el-input v-model="formData.Fax" maxlength="20" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%"></el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="财务电话" prop="CompanyTel" >
-            <el-input v-model="formData.CompanyTel" placeholder="请输入" maxlength="20" style="width: 100%">
+            <el-input v-model="formData.CompanyTel" :readonly="!canUpdateSupplier" placeholder="请输入" maxlength="20" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="电子邮箱" prop="EMail" >
-            <el-input v-model="formData.EMail" maxlength="50" placeholder="请输入" style="width: 100%"></el-input>
+            <el-input v-model="formData.EMail" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%"></el-input>
           </el-form-item>
         </el-col>
 
@@ -267,7 +270,7 @@
 
         <el-col :span="8">
           <el-form-item label="银行信用等级">
-            <el-input v-model="formData.BankCreditRating" maxlength="10" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.BankCreditRating" maxlength="10" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -286,7 +289,7 @@
         <el-col :span="8">
           <el-form-item label="HSE审查培训">
             <!--<el-input v-model="formData.HseTraining" placeholder="请输入" style="width: 100%"></el-input>-->
-            <el-select v-model="formData.HseTraining" placeholder="请选择" style="width: 100%;">
+            <el-select v-model="formData.HseTraining" :readonly="!canUpdateSupplier" placeholder="请选择" style="width: 100%;">
               <el-option v-for="item in HSEOptions" :key="item.value" :label="item.label" :value="item.value"
                          style="width: 100%">
               </el-option>
@@ -387,14 +390,24 @@
         type: Object,
         default: {}
       },
+      authUser: {
+        type: Object,
+        default: null
+      },
       disabled: {
         type: Boolean,
         default: false
       },
+      canUpdateSupplier: {
+        type: Boolean,
+        default: true
+      },
     },
 
     data () {
       return {
+        companyReadonly: false,
+        companynames: [],
         UnitRelationOptions: [],
         CompanyTypeOptions: [],
         UnitRelationAry: [],
@@ -568,6 +581,17 @@
           this.UnitRelationOptions = this.dictData['UnitRelation']
           this.getCityList(this.dictData['GaodeMapChinaAreas'])
           this.CompanyTypeOptions = this.dictData['CompanyType']
+          let suppliers = this.dictData['CompanyNames']
+          for (let idx in suppliers) {
+            suppliers[idx]['value'] = suppliers[idx].SupplierName
+            this.companynames.push(suppliers[idx])
+          }
+          if (this.authUser && this.authUser.Profile.IsCompanyUser === 1 && this.companynames.length > 0) {
+            if (!this.formData.Id) {
+              this.formData.SupplierName = ''
+            }
+            this.companyReadonly = true
+          }
         }
       },
       getCityList (val) {
@@ -602,7 +626,25 @@
         var minute = date.getMinutes();
         minute = minute < 10 ? ('0' + minute) : minute;
         return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
-      }
+      },
+
+      /** ----------------------- */
+      querySearch (queryString, cb) {
+        var results = queryString ? this.companynames.filter(this.createFilter(queryString)) : this.companynames
+        // 调用 callback 返回建议列表的数据
+        cb(results)
+      },
+      createFilter (queryString) {
+        return (restaurant) => {
+          return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0)
+        }
+      },
+      handleSelect (item) {
+        this.$emit('selectcompany', item)
+      },
+      inputCompanyName (val) {
+        this.$emit('inputcompany', val)
+      },
     }
   }
 

+ 72 - 28
src/dashoo.cn/frontend_web/src/components/oilsupplier/techinfo.vue

@@ -18,7 +18,10 @@
 
         <el-col :span="16">
           <el-form-item label="供方名称" prop="SupplierName" >
-            <el-input v-model="formData.SupplierName" maxlength="255" placeholder="请输入" style="width: 100%">
+            <el-autocomplete class="inline-input" v-model="formData.SupplierName" :readonly="companyReadonly" :fetch-suggestions="querySearch"
+                             :maxlength="255" placeholder="请输入内容" style="width: 100%"  @select="handleSelect" v-if="authUser.Profile.IsCompanyUser == 1">
+            </el-autocomplete>
+            <el-input v-model="formData.SupplierName" :maxlength="255" @change="inputCompanyName" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%" v-if="authUser.Profile.IsCompanyUser == 0">
             </el-input>
           </el-form-item>
         </el-col>
@@ -26,31 +29,32 @@
         <el-col :span="8">
           <el-form-item label="单位关系">
             <el-select ref="SpecType" multiple v-model="UnitRelationAry" @change="unitRelationChange" filterable
-                       placeholder="请选择" style="width: 100%">
+                       placeholder="请选择" style="width: 100%" :disabled="!canUpdateSupplier">
               <el-option v-for="item in UnitRelationOptions" :key="item.Id" :label="item.Key"
                          :value="item.Value">
               </el-option>
             </el-select>
           </el-form-item>
         </el-col>
-
+      </el-row>
+      <el-row>
         <el-col :span="8">
           <el-form-item label="统一社会信用代码" prop="CommercialNo" >
-            <el-input v-model="formData.CommercialNo" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.CommercialNo" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="税务登记证编号" prop="CountryTaxNo" >
-            <el-input v-model="formData.CountryTaxNo" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.CountryTaxNo" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="组织机构代码" prop="OrganCode" >
-            <el-input v-model="formData.OrganCode" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.OrganCode" maxlength="50" :readonly="!canUpdateSupplier" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -65,11 +69,11 @@
             <el-row>
               <el-col :span="10">
                 <el-cascader :options="countryoptions" :props="countryprops" maxlength="20" placeholder="省市区"
-                             v-model="CityAry" style="width: 100%" @change="handleAreaChange">
+                             v-model="CityAry" style="width: 100%" @change="handleAreaChange" :disabled="!canUpdateSupplier">
                 </el-cascader>
               </el-col>
               <el-col :span="14">
-                <el-input v-model="formData.Address" maxlength="500" placeholder="详细地址" style="width: 100%">
+                <el-input v-model="formData.Address" maxlength="500" :readonly="!canUpdateSupplier" placeholder="详细地址" style="width: 100%">
                 </el-input>
               </el-col>
             </el-row>
@@ -77,7 +81,7 @@
         </el-col>
         <el-col :span="8">
           <el-form-item label="邮编" prop="ZipCode" >
-            <el-input v-model="formData.ZipCode" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.ZipCode" :readonly="!canUpdateSupplier" maxlength="20" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -87,11 +91,11 @@
             <el-row>
               <el-col :span="10">
                 <el-cascader :options="countryoptions" :props="countryprops" placeholder="省市区"
-                             v-model="LinkCityAry" maxlength="20" style="width: 100%" @change="handleLinkAreaChange">
+                             v-model="LinkCityAry" :disabled="!canUpdateSupplier" maxlength="20" style="width: 100%" @change="handleLinkAreaChange">
                 </el-cascader>
               </el-col>
               <el-col :span="14">
-                <el-input v-model="formData.LinkAddress" maxlength="500" placeholder="详细地址" style="width: 100%">
+                <el-input v-model="formData.LinkAddress" :readonly="!canUpdateSupplier" maxlength="500" placeholder="详细地址" style="width: 100%">
                 </el-input>
               </el-col>
             </el-row>
@@ -99,7 +103,7 @@
         </el-col>
         <el-col :span="8">
           <el-form-item label="邮编" prop="LinkZipCode" >
-            <el-input v-model="formData.LinkZipCode" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.LinkZipCode" :readonly="!canUpdateSupplier" maxlength="20" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -147,7 +151,7 @@
 
         <el-col :span="8">
           <el-form-item label="法定代表人姓名" prop="LegalPerson" >
-            <el-input v-model="formData.LegalPerson" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.LegalPerson" :readonly="!canUpdateSupplier" maxlength="20" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -155,7 +159,7 @@
         <el-col :span="8">
           <el-form-item label="公司类型" prop="CompanyType" >
             <!--<el-input v-model="formData.CompanyType" placeholder="请输入" style="width: 100%"></el-input>-->
-            <el-select v-model="formData.CompanyType" maxlength="50" filterable allow-create placeholder="请选择"
+            <el-select v-model="formData.CompanyType" :disabled="!canUpdateSupplier" maxlength="50" filterable allow-create placeholder="请选择"
                        style="width: 100%;">
               <el-option v-for="item in CompanyTypeOptions" :key="item.Id" :label="item.Key" :value="item.Value"
                          style="width: 100%">
@@ -178,7 +182,7 @@
 
         <el-col :span="8">
           <el-form-item label="注册资本" prop="RegCapital" >
-            <el-input type="number" v-model="formData.RegCapital" :min="1"  placeholder="请输入" style="width: 100%">
+            <el-input type="number" :readonly="!canUpdateSupplier" v-model="formData.RegCapital" :min="1"  placeholder="请输入" style="width: 100%">
               <template slot="append">万元</template>
             </el-input>
           </el-form-item>
@@ -194,7 +198,7 @@
           <el-form-item label="成立时间">
             <!--<el-date v-model="formData.SetupTime" maxlength="50" type="date" placeholder="请输入"
               style="width: 100%"> </el-date>-->
-            <el-date-picker v-model="formData.SetupTime" type="date" format="yyyy 年 MM 月 dd 日"
+            <el-date-picker v-model="formData.SetupTime" :readonly="!canUpdateSupplier" type="date" format="yyyy 年 MM 月 dd 日"
                             value-format="yyyy-MM-dd" placeholder="选择日期" style="width: 100%">
             </el-date-picker>
           </el-form-item>
@@ -202,53 +206,53 @@
 
         <el-col :span="8">
           <el-form-item label="开户银行" prop="DepositBank" >
-            <el-input v-model="formData.DepositBank" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.DepositBank" :readonly="!canUpdateSupplier" maxlength="50" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="银行账号" prop="BankAccount" >
-            <el-input v-model="formData.BankAccount" maxlength="50" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.BankAccount" :readonly="!canUpdateSupplier" maxlength="50" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="联系人姓名" prop="ContactName">
-            <el-input v-model="formData.ContactName" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.ContactName" :readonly="!canUpdateSupplier" maxlength="20" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="移动电话" prop="Mobile" >
-            <el-input v-model="formData.Mobile" maxlength="20" placeholder="请输入" style="width: 100%"></el-input>
+            <el-input v-model="formData.Mobile" :readonly="!canUpdateSupplier" maxlength="20" placeholder="请输入" style="width: 100%"></el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="固定电话" prop="Telphone" >
-            <el-input v-model="formData.Telphone" maxlength="20" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.Telphone" :readonly="!canUpdateSupplier" maxlength="20" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="传真" prop="Fax" >
-            <el-input v-model="formData.Fax" maxlength="20" placeholder="请输入" style="width: 100%"></el-input>
+            <el-input v-model="formData.Fax" :readonly="!canUpdateSupplier" maxlength="20" placeholder="请输入" style="width: 100%"></el-input>
           </el-form-item>
         </el-col>
 
         <el-col :span="8">
           <el-form-item label="财务电话" prop="CompanyTel" >
-            <el-input v-model="formData.CompanyTel" placeholder="请输入" maxlength="20" style="width: 100%">
+            <el-input v-model="formData.CompanyTel" :readonly="!canUpdateSupplier" placeholder="请输入" maxlength="20" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
           <el-form-item label="电子邮箱" prop="EMail" >
-            <el-input v-model="formData.EMail" maxlength="50" placeholder="请输入" style="width: 100%"></el-input>
+            <el-input v-model="formData.EMail" :readonly="!canUpdateSupplier" maxlength="50" placeholder="请输入" style="width: 100%"></el-input>
           </el-form-item>
         </el-col>
 
@@ -260,7 +264,7 @@
 
         <el-col :span="8">
           <el-form-item label="银行信用等级">
-            <el-input v-model="formData.BankCreditRating" maxlength="10" placeholder="请输入" style="width: 100%">
+            <el-input v-model="formData.BankCreditRating" :readonly="!canUpdateSupplier" maxlength="10" placeholder="请输入" style="width: 100%">
             </el-input>
           </el-form-item>
         </el-col>
@@ -274,7 +278,7 @@
         <el-col :span="8">
           <el-form-item label="HSE审查培训">
             <!--<el-input v-model="formData.HseTraining" placeholder="请输入" style="width: 100%"></el-input>-->
-            <el-select v-model="formData.HseTraining" placeholder="请选择" style="width: 100%;">
+            <el-select v-model="formData.HseTraining" placeholder="请选择" style="width: 100%;" :disabled="!canUpdateSupplier">
               <el-option v-for="item in HSEOptions" :key="item.value" :label="item.label" :value="item.value"
                          style="width: 100%">
               </el-option>
@@ -351,14 +355,23 @@
         type: Object,
         default: null
       },
+      authUser: {
+        type: Object,
+        default: null
+      },
       disabled: {
         type: Boolean,
         default: false
       },
+      canUpdateSupplier: {
+        type: Boolean,
+        default: true
+      },
     },
-
     data () {
       return {
+        companyReadonly: false,
+        companynames: [],
         UnitRelationOptions: [],
         CompanyTypeOptions: [],
         UnitRelationAry: [],
@@ -511,6 +524,7 @@
         },
       }
     },
+
     created () {
     },
     watch: {
@@ -527,6 +541,17 @@
           this.UnitRelationOptions = this.dictData['UnitRelation']
           this.getCityList(this.dictData['GaodeMapChinaAreas'])
           this.CompanyTypeOptions = this.dictData['CompanyType']
+          let suppliers = this.dictData['CompanyNames']
+          for (let idx in suppliers) {
+            suppliers[idx]['value'] = suppliers[idx].SupplierName
+            this.companynames.push(suppliers[idx])
+          }
+          if (this.authUser && this.authUser.Profile.IsCompanyUser === 1 && this.companynames.length > 0) {
+            if (!this.formData.Id) {
+              this.formData.SupplierName = ''
+            }
+            this.companyReadonly = true
+          }
         }
       },
       getCityList (val) {
@@ -544,7 +569,7 @@
         this.formData.Street = value[2]
         //this.formData.ZipCode = value[2]
       },
-      handleLinkAreaChange(value) {
+      handleLinkAreaChange (value) {
         this.formData.LinkProvince = value[0]
         this.formData.LinkCity = value[1]
         this.formData.LinkStreet = value[2]
@@ -561,7 +586,26 @@
         var minute = date.getMinutes();
         minute = minute < 10 ? ('0' + minute) : minute;
         return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
+      },
+
+      /** ----------------------- */
+      querySearch (queryString, cb) {
+        var results = queryString ? this.companynames.filter(this.createFilter(queryString)) : this.companynames
+        // 调用 callback 返回建议列表的数据
+        cb(results)
+      },
+      createFilter (queryString) {
+        return (restaurant) => {
+          return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0)
+        }
+      },
+      handleSelect (item) {
+        this.$emit('selectcompany', item)
+      },
+      inputCompanyName (val) {
+        this.$emit('inputcompany', val)
       }
+
     }
   }
 

+ 92 - 4
src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplier/_opera/basisedit.vue

@@ -37,7 +37,7 @@
                 <el-button type="primary" size="mini" @click="saveEntity">保存基本信息</el-button>
               </span>
             </div>
-            <basis-info ref="BasisInfo" :formData.sync="formData" :dictData.sync="dictData"></basis-info>
+            <basis-info ref="BasisInfo" :formData.sync="formData" :dictData.sync="dictData" :authUser="authUser" :canUpdateSupplier="canUpdateSupplier" @selectcompany="changeFormData" @inputcompany="inputCompany"></basis-info>
           </el-card>
         </el-tab-pane>
 
@@ -227,6 +227,7 @@
 
     data () {
       return {
+        canUpdateSupplier: true,
         dictData: null,
         applyLoading: false,
         equipmentList: [], //企业主要装备情况
@@ -341,7 +342,9 @@
     },
     created () {
       this.serviceId = this.$route.params.opera + ''
-      this.certId = this.$route.query.certid + ''
+      if (this.$route.query.certid) {
+        this.certId = this.$route.query.certid + ''
+      }
       if (this.serviceId !== 'add' && this.serviceId > 0) {
         this.formData.Id = this.serviceId
       } else {
@@ -351,6 +354,91 @@
       this.initDatas()
     },
     methods: {
+      inputCompany (val) {
+        if (!this.certId) {//已经关联到子表了,就不能再切换主表ID了
+          api.getEntityByName(val, this.$axios).then(res => {
+            if (res.data && res.data.Id) {
+              this.SetFormData(res.data)
+            }
+          }).catch(err => {
+            console.error(err)
+          })
+        }
+      },
+      changeFormData (fdata) {
+        if (!this.certId) { //已经关联到子表了,就不能再切换主表ID了
+          this.SetFormData(fdata)
+        }
+      },
+      SetFormData (fdata) {
+        this.isCanUpdateSupplier(fdata.Id)
+        this.formData.Id = fdata.Id
+        this.formData.SupplierName = fdata.SupplierName
+        this.formData.OilCertificateNo = fdata.OilCertificateNo
+        this.formData.Grade = fdata.Grade
+        this.formData.MgrUnit = fdata.MgrUnit
+        this.formData.OperType = fdata.OperType
+        this.formData.Country = fdata.Country
+        this.formData.MaunAgent = fdata.MaunAgent
+        this.formData.ConstructTeam = fdata.ConstructTeam
+        this.formData.CommercialNo = fdata.CommercialNo
+        this.formData.OrganCode = fdata.OrganCode
+        this.formData.CountryTaxNo = fdata.CountryTaxNo
+        this.formData.LocalTaxNo = fdata.LocalTaxNo
+        this.formData.Address = fdata.Address
+        this.formData.Province = fdata.Province
+        this.formData.City = fdata.City
+        this.formData.Street = fdata.Street
+        this.formData.HouseNo = fdata.HouseNo
+        this.formData.ZipCode = fdata.ZipCode
+        this.formData.LinkAddress = fdata.LinkAddress
+        this.formData.LinkProvince = fdata.LinkProvince
+        this.formData.LinkCity = fdata.LinkCity
+        this.formData.LinkStreet = fdata.LinkStreet
+        this.formData.LinkHouseNo = fdata.LinkHouseNo
+        this.formData.LinkZipCode = fdata.LinkZipCode
+        this.formData.LegalPerson = fdata.LegalPerson
+        this.formData.CategoryCode = fdata.CategoryCode
+        this.formData.CategoryName = fdata.CategoryName
+        this.formData.RegCapital = fdata.RegCapital
+        this.formData.Currency = fdata.Currency
+        this.formData.ContactName = fdata.ContactName
+        this.formData.CompanyType = fdata.CompanyType
+        this.formData.SetupTime = fdata.SetupTime
+        this.formData.DepositBank = fdata.DepositBank
+        this.formData.BankAccount = fdata.BankAccount
+        this.formData.EMail = fdata.EMail
+        this.formData.BankCreditRating = fdata.BankCreditRating
+        this.formData.Mobile = fdata.Mobile
+        this.formData.Telphone = fdata.Telphone
+        this.formData.Fax = fdata.Fax
+        this.formData.CompanyTel = fdata.CompanyTel
+        this.formData.QQ = fdata.QQ
+        this.formData.CompanyUrl = fdata.CompanyUrl
+        this.formData.HseTraining = fdata.HseTraining
+        this.formData.SpecTypeCode = fdata.SpecTypeCode
+
+        this.$refs["BasisInfo"].CityAry = []
+        this.$refs["BasisInfo"].CityAry.push(this.formData.Province)
+        this.$refs["BasisInfo"].CityAry.push(this.formData.City)
+        this.$refs["BasisInfo"].CityAry.push(this.formData.Street)
+        this.$refs["BasisInfo"].LinkCityAry = []
+        this.$refs["BasisInfo"].LinkCityAry.push(this.formData.LinkProvince)
+        this.$refs["BasisInfo"].LinkCityAry.push(this.formData.LinkCity)
+        this.$refs["BasisInfo"].LinkCityAry.push(this.formData.LinkStreet)
+        this.$refs["BasisInfo"].UnitRelationAry = []
+        if (this.formData.SpecTypeCode.length > 0) {
+          this.$refs["BasisInfo"].UnitRelationAry = this.formData.SpecTypeCode.split(',')
+        }
+      },
+
+      isCanUpdateSupplier (supplierId) {
+        api.isCanUpdateSupplier(supplierId, this.$axios).then(res => {
+          this.canUpdateSupplier = (res.data.code === 0)
+        }).catch(err => {
+          console.error(err)
+        })
+      },
       equipmentdialog() {
         this.$refs["equipmentList"].showDialog()
       },
@@ -365,7 +453,7 @@
       },
 
       initDatas () {
-        //console.log("formData = ", this.formData.Id, this.certId)
+        this.isCanUpdateSupplier(this.formData.Id)
         if (this.formData.Id) {
           api.getEntityAndCert(this.certId, this.$axios).then(res => {
             this.formData = res.data
@@ -433,7 +521,7 @@
               this.formData.SetupTime = new Date(this.formData.SetupTime)
             }
             //this.formData.WellNo = this.$refs.selectWellNo.selectedLabel + '';
-            if (!this.formData.Id) {
+            if (!this.formData.Id || !this.certId) {
               this.addEntity()
             } else {
               this.updateEntity()

+ 92 - 4
src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplier/_opera/goodsedit.vue

@@ -37,7 +37,7 @@
                 <el-button type="primary" size="mini" @click="saveEntity">保存基本信息</el-button>
               </span>
             </div>
-            <goods-info ref="GoodsInfo" :formData.sync="formData" :dictData.sync="dictData"></goods-info>
+            <goods-info ref="GoodsInfo" :formData.sync="formData" :dictData.sync="dictData" :authUser="authUser" :canUpdateSupplier="canUpdateSupplier" @selectcompany="changeFormData" @inputcompany="inputCompany"></goods-info>
           </el-card>
         </el-tab-pane>
 
@@ -227,6 +227,7 @@
 
     data () {
       return {
+        canUpdateSupplier: true,
         dictData: null,
         applyLoading: false,
         equipmentList: [], //企业主要装备情况
@@ -341,7 +342,9 @@
     },
     created () {
       this.serviceId = this.$route.params.opera + ''
-      this.certId = this.$route.query.certid + ''
+      if (this.$route.query.certid) {
+        this.certId = this.$route.query.certid + ''
+      }
       if (this.serviceId !== 'add' && this.serviceId > 0) {
         this.formData.Id = this.serviceId
       } else {
@@ -351,6 +354,91 @@
       this.initDatas()
     },
     methods: {
+      inputCompany (val) {
+        if (!this.certId) {
+          api.getEntityByName(val, this.$axios).then(res => {
+            if (res.data && res.data.Id) {
+              this.SetFormData(res.data)
+            }
+          }).catch(err => {
+            console.error(err)
+          })
+        }
+      },
+      changeFormData (fdata) {
+        if (!this.certId) {
+          this.SetFormData(fdata)
+        }
+      },
+      SetFormData (fdata) {
+        this.isCanUpdateSupplier(fdata.Id)
+        this.formData.Id = fdata.Id
+        this.formData.SupplierName = fdata.SupplierName
+        this.formData.OilCertificateNo = fdata.OilCertificateNo
+        this.formData.Grade = fdata.Grade
+        this.formData.MgrUnit = fdata.MgrUnit
+        this.formData.OperType = fdata.OperType
+        this.formData.Country = fdata.Country
+        this.formData.MaunAgent = fdata.MaunAgent
+        this.formData.ConstructTeam = fdata.ConstructTeam
+        this.formData.CommercialNo = fdata.CommercialNo
+        this.formData.OrganCode = fdata.OrganCode
+        this.formData.CountryTaxNo = fdata.CountryTaxNo
+        this.formData.LocalTaxNo = fdata.LocalTaxNo
+        this.formData.Address = fdata.Address
+        this.formData.Province = fdata.Province
+        this.formData.City = fdata.City
+        this.formData.Street = fdata.Street
+        this.formData.HouseNo = fdata.HouseNo
+        this.formData.ZipCode = fdata.ZipCode
+        this.formData.LinkAddress = fdata.LinkAddress
+        this.formData.LinkProvince = fdata.LinkProvince
+        this.formData.LinkCity = fdata.LinkCity
+        this.formData.LinkStreet = fdata.LinkStreet
+        this.formData.LinkHouseNo = fdata.LinkHouseNo
+        this.formData.LinkZipCode = fdata.LinkZipCode
+        this.formData.LegalPerson = fdata.LegalPerson
+        this.formData.CategoryCode = fdata.CategoryCode
+        this.formData.CategoryName = fdata.CategoryName
+        this.formData.RegCapital = fdata.RegCapital
+        this.formData.Currency = fdata.Currency
+        this.formData.ContactName = fdata.ContactName
+        this.formData.CompanyType = fdata.CompanyType
+        this.formData.SetupTime = fdata.SetupTime
+        this.formData.DepositBank = fdata.DepositBank
+        this.formData.BankAccount = fdata.BankAccount
+        this.formData.EMail = fdata.EMail
+        this.formData.BankCreditRating = fdata.BankCreditRating
+        this.formData.Mobile = fdata.Mobile
+        this.formData.Telphone = fdata.Telphone
+        this.formData.Fax = fdata.Fax
+        this.formData.CompanyTel = fdata.CompanyTel
+        this.formData.QQ = fdata.QQ
+        this.formData.CompanyUrl = fdata.CompanyUrl
+        this.formData.HseTraining = fdata.HseTraining
+        this.formData.SpecTypeCode = fdata.SpecTypeCode
+
+        this.$refs["GoodsInfo"].CityAry = []
+        this.$refs["GoodsInfo"].CityAry.push(this.formData.Province)
+        this.$refs["GoodsInfo"].CityAry.push(this.formData.City)
+        this.$refs["GoodsInfo"].CityAry.push(this.formData.Street)
+        this.$refs["GoodsInfo"].LinkCityAry = []
+        this.$refs["GoodsInfo"].LinkCityAry.push(this.formData.LinkProvince)
+        this.$refs["GoodsInfo"].LinkCityAry.push(this.formData.LinkCity)
+        this.$refs["GoodsInfo"].LinkCityAry.push(this.formData.LinkStreet)
+        this.$refs["GoodsInfo"].UnitRelationAry = []
+        if (this.formData.SpecTypeCode.length > 0) {
+          this.$refs["GoodsInfo"].UnitRelationAry = this.formData.SpecTypeCode.split(',')
+        }
+      },
+
+      isCanUpdateSupplier (supplierId) {
+        api.isCanUpdateSupplier(supplierId, this.$axios).then(res => {
+          this.canUpdateSupplier = (res.data.code === 0)
+        }).catch(err => {
+          console.error(err)
+        })
+      },
       equipmentdialog() {
         this.$refs["equipmentList"].showDialog()
       },
@@ -365,7 +453,7 @@
       },
 
       initDatas () {
-        //console.log("formData = ", this.formData.Id, this.certId)
+        this.isCanUpdateSupplier(this.formData.Id)
         if (this.formData.Id) {
           api.getEntityAndCert(this.certId, this.$axios).then(res => {
             this.formData = res.data
@@ -433,7 +521,7 @@
               this.formData.SetupTime = new Date(this.formData.SetupTime)
             }
             //this.formData.WellNo = this.$refs.selectWellNo.selectedLabel + '';
-            if (!this.formData.Id) {
+            if (!this.formData.Id || !this.certId) {
               this.addEntity()
             } else {
               this.updateEntity()

+ 94 - 6
src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplier/_opera/techedit.vue

@@ -37,7 +37,7 @@
                 <el-button type="primary" size="mini" @click="saveEntity">保存基本信息</el-button>
               </span>
             </div>
-            <tech-info ref="TechInfo" :formData.sync="formData" :dictData.sync="dictData"></tech-info>
+            <tech-info ref="TechInfo" :formData.sync="formData" :dictData.sync="dictData" :authUser="authUser" :canUpdateSupplier="canUpdateSupplier" @selectcompany="changeFormData" @inputcompany="inputCompany"></tech-info>
           </el-card>
         </el-tab-pane>
 
@@ -227,6 +227,7 @@
 
     data () {
       return {
+        canUpdateSupplier: true,
         dictData: null,
         applyLoading: false,
         equipmentList: [], //企业主要装备情况
@@ -341,7 +342,9 @@
     },
     created () {
       this.serviceId = this.$route.params.opera + ''
-      this.certId = this.$route.query.certid + ''
+      if (this.$route.query.certid) {
+        this.certId = this.$route.query.certid + ''
+      }
       if (this.serviceId !== 'add' && this.serviceId > 0) {
         this.formData.Id = this.serviceId
       } else {
@@ -351,6 +354,91 @@
       this.initDatas()
     },
     methods: {
+      inputCompany (val) {
+        if (!this.certId) {
+          api.getEntityByName(val, this.$axios).then(res => {
+            if (res.data && res.data.Id) {
+              this.SetFormData(res.data)
+            }
+          }).catch(err => {
+            console.error(err)
+          })
+        }
+      },
+      changeFormData (fdata) {
+        if (!this.certId) {
+          this.SetFormData(fdata)
+        }
+      },
+      SetFormData (fdata) {
+        this.isCanUpdateSupplier(fdata.Id)
+        this.formData.Id = fdata.Id
+        this.formData.SupplierName = fdata.SupplierName
+        this.formData.OilCertificateNo = fdata.OilCertificateNo
+        this.formData.Grade = fdata.Grade
+        this.formData.MgrUnit = fdata.MgrUnit
+        this.formData.OperType = fdata.OperType
+        this.formData.Country = fdata.Country
+        this.formData.MaunAgent = fdata.MaunAgent
+        this.formData.ConstructTeam = fdata.ConstructTeam
+        this.formData.CommercialNo = fdata.CommercialNo
+        this.formData.OrganCode = fdata.OrganCode
+        this.formData.CountryTaxNo = fdata.CountryTaxNo
+        this.formData.LocalTaxNo = fdata.LocalTaxNo
+        this.formData.Address = fdata.Address
+        this.formData.Province = fdata.Province
+        this.formData.City = fdata.City
+        this.formData.Street = fdata.Street
+        this.formData.HouseNo = fdata.HouseNo
+        this.formData.ZipCode = fdata.ZipCode
+        this.formData.LinkAddress = fdata.LinkAddress
+        this.formData.LinkProvince = fdata.LinkProvince
+        this.formData.LinkCity = fdata.LinkCity
+        this.formData.LinkStreet = fdata.LinkStreet
+        this.formData.LinkHouseNo = fdata.LinkHouseNo
+        this.formData.LinkZipCode = fdata.LinkZipCode
+        this.formData.LegalPerson = fdata.LegalPerson
+        this.formData.CategoryCode = fdata.CategoryCode
+        this.formData.CategoryName = fdata.CategoryName
+        this.formData.RegCapital = fdata.RegCapital
+        this.formData.Currency = fdata.Currency
+        this.formData.ContactName = fdata.ContactName
+        this.formData.CompanyType = fdata.CompanyType
+        this.formData.SetupTime = fdata.SetupTime
+        this.formData.DepositBank = fdata.DepositBank
+        this.formData.BankAccount = fdata.BankAccount
+        this.formData.EMail = fdata.EMail
+        this.formData.BankCreditRating = fdata.BankCreditRating
+        this.formData.Mobile = fdata.Mobile
+        this.formData.Telphone = fdata.Telphone
+        this.formData.Fax = fdata.Fax
+        this.formData.CompanyTel = fdata.CompanyTel
+        this.formData.QQ = fdata.QQ
+        this.formData.CompanyUrl = fdata.CompanyUrl
+        this.formData.HseTraining = fdata.HseTraining
+        this.formData.SpecTypeCode = fdata.SpecTypeCode
+
+        this.$refs["TechInfo"].CityAry = []
+        this.$refs["TechInfo"].CityAry.push(this.formData.Province)
+        this.$refs["TechInfo"].CityAry.push(this.formData.City)
+        this.$refs["TechInfo"].CityAry.push(this.formData.Street)
+        this.$refs["TechInfo"].LinkCityAry = []
+        this.$refs["TechInfo"].LinkCityAry.push(this.formData.LinkProvince)
+        this.$refs["TechInfo"].LinkCityAry.push(this.formData.LinkCity)
+        this.$refs["TechInfo"].LinkCityAry.push(this.formData.LinkStreet)
+        this.$refs["TechInfo"].UnitRelationAry = []
+        if (this.formData.SpecTypeCode.length > 0) {
+          this.$refs["TechInfo"].UnitRelationAry = this.formData.SpecTypeCode.split(',')
+        }
+      },
+
+      isCanUpdateSupplier (supplierId) {
+        api.isCanUpdateSupplier(supplierId, this.$axios).then(res => {
+          this.canUpdateSupplier = (res.data.code === 0)
+        }).catch(err => {
+          console.error(err)
+        })
+      },
       equipmentdialog() {
         this.$refs["equipmentList"].showDialog()
       },
@@ -365,7 +453,7 @@
       },
 
       initDatas () {
-        //console.log("formData = ", this.formData.Id, this.certId)
+        this.isCanUpdateSupplier(this.formData.Id)
         if (this.formData.Id) {
           api.getEntityAndCert(this.certId, this.$axios).then(res => {
             this.formData = res.data
@@ -433,7 +521,7 @@
               this.formData.SetupTime = new Date(this.formData.SetupTime)
             }
             //this.formData.WellNo = this.$refs.selectWellNo.selectedLabel + '';
-            if (!this.formData.Id) {
+            if (!this.formData.Id || !this.certId) {
               this.addEntity()
             } else {
               this.updateEntity()
@@ -450,7 +538,7 @@
         this.$refs['SupplierCertEditCompoment'].saveEntity()
       },
 
-      addEntity() {
+      addEntity () {
         this.formData.SupplierTypeCode = '03'
         this.formData.SupplierTypeName = '技术服务类'
         api.addEntity(this.formData, this.$axios).then(res => {
@@ -475,7 +563,7 @@
         });
       },
 
-      updateEntity() {
+      updateEntity () {
         api.updateEntity(this.formData.Id, this.formData, this.$axios).then(res => {
           if (res.data.code === 0) {
             //保存成功后,初始化数据,变成修改