Przeglądaj źródła

准入范围检查

yuedefeng 5 lat temu
rodzic
commit
21bfb3f06a

+ 13 - 0
src/dashoo.cn/backend/api/business/oilsupplier/suppliercertsub/oilsuppliercertsub.go

@@ -95,6 +95,19 @@ type SupplierCertSubModel struct {
 	IsDelete         int
 }
 
+type SupplierCertSubLostModel struct {
+	CheckGoods       goodsChecked
+	Id               int `xorm:"<- not null pk autoincr INT(10)"`
+	SupplierId       int
+	SupplierCertId   int
+	SupplierTypeCode string
+	SubClassId       int
+	Code             string
+	Name             string
+	Remark           string
+	IsDelete         int
+}
+
 type techChecked struct {
 	Id       int `json:"id"`
 	Code     string

+ 97 - 0
src/dashoo.cn/backend/api/controllers/oilsupplier/suppliercertsub.go

@@ -485,6 +485,97 @@ func (this *OilSupplierCertSubController) AddGoodsBus() {
 	this.ServeJSON()
 }
 
+// @Title 批量添加准入范围--物资类
+// @Description 批量添加准入范围
+// @Success 200 {object} business.device.DeviceChannels
+// @router /check-certsub-lost [post]
+func (this *OilSupplierCertSubController) CheckCertSubLost () {
+	var jsonblob = this.Ctx.Input.RequestBody
+	var datamain suppliercertsub.OilSupplierCertSub
+	var dataother suppliercertsub.SupplierCertSubModel
+
+	json.Unmarshal(jsonblob, &datamain)
+	json.Unmarshal(jsonblob, &dataother)
+
+	var supplierCertModel suppliercert.OilSupplierCert
+	svcCert := suppliercert.GetOilSupplierCertService(utils.DBE)
+	svcCert.GetEntityById(datamain.SupplierCertId, &supplierCertModel)
+
+	var lostCertList []LostCertFiles
+	// 查询出已有哪些资质
+	supplierId := dataother.SupplierId
+	supplierTypeCode := dataother.SupplierTypeCode
+	var tableheaderList []tableheader.BaseTableheader
+
+	fileSql := "SELECT b.* from OilSupplierFile a LEFT JOIN Base_TableHeader b on a.NeedFileType=b.Name AND "
+	fileSql += " a.SupplierTypeCode=b.CategoryCode WHERE a.SupplierId='" + strconv.Itoa(supplierId) + "'"
+	fileSql += " AND (a.SupplierTypeCode='" + supplierTypeCode + "' or a.SupplierTypeCode='000')"
+
+	svcHeader := tableheader.GetTableHeaderService(utils.DBE)
+	svcHeader.DBE.SQL(fileSql).Find(&tableheaderList)
+	var companyHasHeaders string
+	for _, tableheader := range tableheaderList {
+		companyHasHeaders += tableheader.Name + ","
+	}
+	var supplierModel supplier.OilSupplier
+	svcSupplier := supplier.GetOilSupplierService(utils.DBE)
+	svcSupplier.GetEntityById(datamain.SupplierId, &supplierModel)
+
+	//逐条检查需要的资质
+	for n := 0; n < len(dataother.CheckList); n++ {
+		if supplierModel.OperType == "制造商" {
+			datamain.IsManufacturer = 1
+		} else {
+			datamain.IsManufacturer = 2
+		}
+		//检查是否资质全面
+		paramSvc := baseparameter.GetBaseparameterService(utils.DBE)
+		filesvc := supplierfile.GetSupplierfileService(utils.DBE)
+		needList := filesvc.GetGoodsNeedFileList(dataother.CheckList[n].Id, strconv.Itoa(datamain.IsManufacturer)) // 需要的资质
+		//三证合一或五证合一不需要的字段
+		mergerCertSkipField := paramSvc.GetBaseparameterMessage("GFGL", "paramset", "MergerCertSkipFieldName")
+		if supplierCertModel.InStyle == "4" {
+			var needFile supplierfile.FileList
+			//战略合作协议扫描件
+			needFile.FileName = paramSvc.GetBaseparameterMessage("GFGL", "paramset", "CooperationFile")
+			needList = append(needList, needFile)
+		}
+		if datamain.IsManufacturer == 1 { //制造商
+			var needFile supplierfile.FileList
+			// 中油集团公司产品质量认可证书
+			CNPCrenkezhengshu := paramSvc.GetBaseparameterMessage("GFGL", "paramset", "CNPCrenkezhengshu")
+			needFile.FileName = CNPCrenkezhengshu
+			needList = append(needList, needFile)
+		}
+		for _, needHeader := range needList {
+			if (supplierModel.CredentialFlag == "1" || supplierModel.CredentialFlag == "2") &&
+				strings.Contains(mergerCertSkipField, needHeader.FileName+",") {
+				//三证合一或五证合一的证件,不需要验证了
+				continue
+			}
+			if !strings.Contains(companyHasHeaders, needHeader.FileName+",") {
+				//缺少的资质
+				var tmpLostCert LostCertFiles
+				tmpLostCert.Code = dataother.CheckList[n].Code
+				tmpLostCert.Name = dataother.CheckList[n].Name
+				tmpLostCert.CertFileName = needHeader.FileName
+				lostCertList = append(lostCertList, tmpLostCert)
+			}
+		}
+	}
+	var errinfo ErrorDataInfo
+	if len(lostCertList) <= 0 {
+		errinfo.Code = 0
+		errinfo.Message = "验证通过!"
+		this.Data["json"] = nil
+	} else {
+		errinfo.Code = -1
+		errinfo.Message = "缺少资质!"
+		this.Data["json"] = &lostCertList
+	}
+	this.ServeJSON()
+}
+
 // @Title 批量添加准入范围--物资类
 // @Description 批量添加准入范围
 // @Success 200 {object} business.device.DeviceChannels
@@ -1277,6 +1368,12 @@ type OilSupplierCert2File struct {
 	stopReason    string `json:"not null default '0' comment('准入类别代码(1 物资类,2 基建类,3 技术服务类)') VARCHAR(5)"`
 }
 
+type LostCertFiles struct {
+	Code          string
+	Name          string
+	CertFileName  string
+}
+
 // @Title 记录准入项状态更改日志
 // @Description
 // @router /updatestatuswithlog/:Id [post]

+ 69 - 21
src/dashoo.cn/frontend_web/src/components/oilsupplier/goodslist2.vue

@@ -105,9 +105,7 @@
       </el-pagination>
     </el-card>
 
-    <el-dialog v-loading="loading"
-               element-loading-text="正在添加请稍后..."
-               title="物资类业务列表"
+    <el-dialog title="物资类业务列表"
                :visible.sync="goodsDialog"
                @open="opendialog"
                top="5vh">
@@ -150,6 +148,7 @@
                            check-on-click-node
                            show-checkbox
                            lazy
+                           @check="checkLostCertTimeOut"
                            :load="getChildrens"
                            :filter-node-method="filterNode">
                   </el-tree>
@@ -158,6 +157,7 @@
                            :data="sectreelist"
                            show-checkbox
                            check-on-click-node
+                           @check="checkLostCertTimeOut"
                            node-key="CodeName"
                            :props="sectreeprops">
                   </el-tree>
@@ -175,24 +175,30 @@
             </el-col>
             <el-col :span="10">
               <el-table
+                height="475px"
                 row-class-name="warning-row"
-                :data="tableData"
+                highlight-current-row
+                :data="lostTableData"
                 border
                 size="mini"
                 style="width: 100%; margin-top:20px">
                 <el-table-column
-                  prop="name"
+                  prop="Code"
                   label="准入编码">
+                  <template slot-scope="scope">
+                    {{scope.row.Code + ' ' + scope.row.Name}}
+                  </template>
                 </el-table-column>
                 <el-table-column
-                  prop="address"
+                  prop="CertFileName"
                   label="缺少资质">
+                  <template slot="header" slot-scope="scope">
+                    <span style="color: red">{{'缺少资质(' + (lostTableData ? lostTableData.length : 0) + ')'}}</span>
+                  </template>
                 </el-table-column>
               </el-table>
             </el-col>
           </el-row>
-
-
         </el-tab-pane>
 
         <!--<el-tab-pane label="顶级编码"-->
@@ -261,6 +267,8 @@
         <!--<el-button size="mini" @click="visible = false">取 消</el-button>-->
         <el-button type="primary"
                    size="mini"
+                   :loading="loading"
+                   :disabled="lostTableData && lostTableData.length > 0"
                    @click="getChecklist()">确 定</el-button>
       </div>
       <!--<div slot="footer"-->
@@ -368,19 +376,7 @@
         isFirstOpen: true,
         node_had: {},
         resolve_had: {},
-        tableData: [{
-          name: '06010101普通合页',
-          address: '生产许可证'
-        }, {
-          name: '06010101普通合页',
-          address: '营业执照'
-        }, {
-          name: '06010101普通合页',
-          address: '企业信用信息截屏'
-        }, {
-          name: '06010101普通合页',
-          address: '银行开户许可证'
-        }]
+        lostTableData: []
       }
     },
     methods: {
@@ -777,6 +773,58 @@
         if (!value) return true
         return data.CodeName.indexOf(value) !== -1
       },
+      checkLostCertTimeOut () {
+        let _this = this
+        this.loading = true
+        setTimeout(function () {
+          _this.$nextTick(() => {
+            _this.checkLostCert()
+          })
+        }, 200)
+      },
+      checkLostCert () {
+        let _this = this
+        let params = {
+          SupplierId: parseInt(_this.SupplierId),
+          SupplierCertId: parseInt(_this.SupplierCertId),
+          SupplierTypeCode: '01',
+          Type: '1',
+          IsManufacturer: 2,
+          CertSubStatus: '-1',
+          Remark: _this.Remark
+        }
+
+        let val1 = this.$refs.orgmanagetree.getCheckedNodes()
+        let val2 = this.$refs.secmanagetree.getCheckedNodes()
+        _this.checkList = []
+        for (let i = 0; i < val1.length; i++) {
+          if (val1[i].Code.length == 8) {
+            _this.checkList.push(val1[i])
+          }
+        }
+        for (let i = 0; i < val2.length; i++) {
+          if (val2[i].Code.length == 8) {
+            _this.checkList.push(val2[i])
+          }
+        }
+        if (_this.checkList.length > 0) {
+          params = Object.assign(params, {
+            CheckList: _this.checkList
+          })
+        } else {
+          _this.lostTableData = []
+          this.loading = false
+          return
+        }
+        _this.$axios.post('/suppliercertsub/check-certsub-lost', params).then(res => {
+          _this.lostTableData = res.data
+          this.loading = false
+        }).catch(err => {
+          this.loading = false
+          console.error(err)
+        })
+
+      },
 
       handleSizeChange (value) {
         this.size = value