2
3
ljm 6 лет назад
Родитель
Сommit
6129d5efed
15 измененных файлов с 2118 добавлено и 273 удалено
  1. 3 3
      src/dashoo.cn/backend/api/business/oilsupplier/suppliercert/oilsuppliercertSession.go
  2. 2 1
      src/dashoo.cn/backend/api/business/oilsupplier/suppliercertappend/oilsuppliercertappend.go
  3. 16 0
      src/dashoo.cn/backend/api/business/oilsupplier/suppliercertappend/oilsuppliercertappendSession.go
  4. 1 0
      src/dashoo.cn/backend/api/business/oilsupplier/suppliercertappendsub/oilsuppliercertappendsub.go
  5. 16 0
      src/dashoo.cn/backend/api/business/oilsupplier/suppliercertappendsub/oilsuppliercertappendsubSession.go
  6. 33 4
      src/dashoo.cn/backend/api/controllers/oilsupplier/suppliercertappend.go
  7. 3 1
      src/dashoo.cn/backend/api/controllers/oilsupplier/suppliercertappendsub.go
  8. 21 0
      src/dashoo.cn/backend/api/controllers/oilsupplier/technologyservice.go
  9. 124 77
      src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/_opera/basisdataopera.vue
  10. 562 0
      src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/_opera/goodsdataopera.vue
  11. 562 0
      src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/_opera/techdataopera.vue
  12. 7 7
      src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/basislist.vue
  13. 384 0
      src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/goodslist.vue
  14. 0 180
      src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/subdata/datalist.vue
  15. 384 0
      src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/techlist.vue

+ 3 - 3
src/dashoo.cn/backend/api/business/oilsupplier/suppliercert/oilsuppliercertSession.go

@@ -1,8 +1,8 @@
 package suppliercert
 
 import (
-. "dashoo.cn/backend/api/mydb"
-"github.com/go-xorm/xorm"
+	. "dashoo.cn/backend/api/mydb"
+	"github.com/go-xorm/xorm"
 )
 
 type OilSupplierCertSession struct {
@@ -13,4 +13,4 @@ func GetOilSupplierCertSession(session *xorm.Session) *OilSupplierCertSession {
 	s := new(OilSupplierCertSession)
 	s.Session = session
 	return s
-}
+}

+ 2 - 1
src/dashoo.cn/backend/api/business/oilsupplier/suppliercertappend/oilsuppliercertappend.go

@@ -9,7 +9,8 @@ type OilSupplierCertAppend struct {
 	SupplierId     int       `xorm:"not null comment('供方基本信息表主键') INT(10)"`
 	SupplierCertId int       `xorm:"not null comment('供方准入证书信息表主键') INT(10)"`
 	ApplyDate      time.Time `xorm:"comment('申请日期') DATETIME"`
-	RecUnitId      string    `xorm:"comment('推荐单位编码') VARCHAR(10)"`
+	RecUnitFlag    string    `xorm:"comment('推荐单位的级联Id标记') VARCHAR(200)"`
+	RecUnitId      string    `xorm:"comment('推荐单位编码') VARCHAR(50)"`
 	RecUnitName    string    `xorm:"comment('推荐单位名称') VARCHAR(50)"`
 	WorkRange      string    `xorm:"comment('申请准入的范围') VARCHAR(50)"`
 	DenyReason     string    `xorm:"comment('退回原因') VARCHAR(50)"`

+ 16 - 0
src/dashoo.cn/backend/api/business/oilsupplier/suppliercertappend/oilsuppliercertappendSession.go

@@ -0,0 +1,16 @@
+package suppliercertappend
+
+import (
+	. "dashoo.cn/backend/api/mydb"
+	"github.com/go-xorm/xorm"
+)
+
+type OilSupplierCertAppendSession struct {
+	MySessionBase
+}
+
+func GetOilSupplierCertAppendSession(session *xorm.Session) *OilSupplierCertAppendSession {
+	s := new(OilSupplierCertAppendSession)
+	s.Session = session
+	return s
+}

+ 1 - 0
src/dashoo.cn/backend/api/business/oilsupplier/suppliercertappendsub/oilsuppliercertappendsub.go

@@ -10,6 +10,7 @@ type OilSupplierCertAppendSub struct {
 	SupplierCertId       int       `xorm:"not null comment('供方准入证书信息表主键') INT(10)"`
 	SupplierCertAppendId int       `xorm:"not null comment('增项信息表ID') INT(10)"`
 	SubclassId           int       `xorm:"not null comment('分类表主键(物资类或基建类或技术服务类)') INT(10)"`
+	SortFlag             string    `xorm:"not null default '' comment('分类标记') VARCHAR(100)"`
 	Code                 string    `xorm:"not null default '' comment('分类编码') VARCHAR(50)"`
 	Name                 string    `xorm:"not null default '' comment('分类名称') VARCHAR(50)"`
 	Remark               string    `xorm:"comment('备注') VARCHAR(500)"`

+ 16 - 0
src/dashoo.cn/backend/api/business/oilsupplier/suppliercertappendsub/oilsuppliercertappendsubSession.go

@@ -0,0 +1,16 @@
+package suppliercertappendsub
+
+import (
+	. "dashoo.cn/backend/api/mydb"
+	"github.com/go-xorm/xorm"
+)
+
+type OilSupplierCertAppendSubSession struct {
+	MySessionBase
+}
+
+func GetOilSupplierCertAppendSubSession(session *xorm.Session) *OilSupplierCertAppendSubSession {
+	s := new(OilSupplierCertAppendSubSession)
+	s.Session = session
+	return s
+}

+ 33 - 4
src/dashoo.cn/backend/api/controllers/oilsupplier/suppliercertappend.go

@@ -6,8 +6,10 @@ import (
 	"time"
 
 	"dashoo.cn/backend/api/business/oilsupplier/suppliercertappend"
+	"dashoo.cn/backend/api/business/oilsupplier/suppliercertappendsub"
 	. "dashoo.cn/backend/api/controllers"
 	"dashoo.cn/utils"
+	"github.com/go-xorm/xorm"
 )
 
 type OilSupplierCertAppendController struct {
@@ -175,6 +177,8 @@ func (this *OilSupplierCertAppendController) UpdateEntity() {
 
 		"ApplyDate",
 
+		"RecUnitFlag",
+
 		"RecUnitId",
 
 		"RecUnitName",
@@ -204,12 +208,13 @@ func (this *OilSupplierCertAppendController) UpdateEntity() {
 }
 
 // @Title 删除
-// @Description 删除
+// @Description 级联删除
 // @Success 200 {object} ErrorInfo
 // @Failure 403 :id 为空
 // @router /delete/:Id [delete]
 func (this *OilSupplierCertAppendController) DeleteEntity() {
 	Id := this.Ctx.Input.Param(":Id")
+
 	var errinfo ErrorInfo
 	if Id == "" {
 		errinfo.Message = "操作失败!请求信息不完整"
@@ -219,13 +224,37 @@ func (this *OilSupplierCertAppendController) DeleteEntity() {
 		return
 	}
 
+	//定义session
+	var session *xorm.Session
+	session = utils.DBE.NewSession()
+	svc := suppliercertappend.GetOilSupplierCertAppendSession(session)
+	svcSub := suppliercertappendsub.GetOilSupplierCertAppendSubSession(session)
+
+	//"session开始" 之前,首先定义 "session关闭"
+	defer session.Close()
+	err := session.Begin()
+
+	//首先删除子表信息
+	where := "SupplierCertAppendId = " + Id
+	err = svcSub.DeleteEntityBytbl(OilSupplierCertAppendSubName, where)
+	if err != nil {
+		//回滚操作
+		session.Rollback()
+	}
+
+	//最后删除主表信息
 	var model suppliercertappend.OilSupplierCertAppend
 	var entityempty suppliercertappend.OilSupplierCertAppend
 
-	svc := suppliercertappend.GetOilSupplierCertAppendService(utils.DBE)
-
 	opdesc := "删除-" + Id
-	err := svc.DeleteOperationAndWriteLogBytbl(OilSupplierCertAppendName, BaseOperationLogName, Id, &model, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "增项信息")
+	err = svc.DeleteOperationAndWriteLogBytbl(OilSupplierCertAppendName, BaseOperationLogName, Id, &model, &entityempty, utils.ToStr(this.User.Id), this.User.Username, opdesc, this.User.AccCode, "增项信息")
+	if err != nil {
+		session.Rollback()
+	}
+
+	//提交操作
+	err = session.Commit()
+
 	if err == nil {
 		errinfo.Message = "删除成功"
 		errinfo.Code = 0

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

@@ -113,6 +113,8 @@ func (this *OilSupplierCertAppendSubController) UpdateEntity() {
 
 	cols := []string{
 
+		"SortFlag",
+
 		"Code",
 
 		"Name",
@@ -140,7 +142,7 @@ func (this *OilSupplierCertAppendSubController) UpdateEntity() {
 }
 
 // @Title 删除
-// @Description 删除一条信息
+// @Description 删除信息
 // @Success 200 {object} ErrorInfo
 // @Failure 403 :id 为空
 // @router /delete/:Id [delete]

+ 21 - 0
src/dashoo.cn/backend/api/controllers/oilsupplier/technologyservice.go

@@ -378,3 +378,24 @@ func (this *OilTechnologyServiceController) NeedFileList() {
 	this.Data["json"] = &datainfo
 	this.ServeJSON()
 }
+
+// @Title 获取
+// @Description 根据Id获取实体
+// @Success 200 {object} technologyservice.TechnologyBusiness
+// @router /getcode/:id [get]
+func (this *OilTechnologyServiceController) GetCodeById() {
+	Id := this.Ctx.Input.Param(":id")
+
+	where := " 1 = 1 "
+
+	if Id != "" {
+		where = where + " and Id = " + Id
+	}
+	var list []technologyservice.TechnologyBusiness
+	svc := technologyservice.GetOilTechnologyServiceService(utils.DBE)
+	svc.GetEntitysByWhere(OilTechnologyServiceClassName, where, &list)
+	var datainfo DataInfo
+	datainfo.Items = list
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}

+ 124 - 77
src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/subdata/dataopera.vue → src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/_opera/basisdataopera.vue

@@ -2,7 +2,7 @@
   <div>
     <el-breadcrumb class="heading">
       <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/oilsupplier/supplierappend' }">增项信息表</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/oilsupplier/supplierappend/basislist' }">基建类列表</el-breadcrumb-item>
       <el-breadcrumb-item>编辑</el-breadcrumb-item>
     </el-breadcrumb>
     <el-card class="box-card">
@@ -11,7 +11,7 @@
           <i class="icon icon-table2"></i> 编辑
         </span>
         <span style="float: right;">
-          <router-link :to="'/oilsupplier/supplierappend'">
+          <router-link :to="'/oilsupplier/supplierappend/basislist'">
             <el-button type="primary" size="mini" style="margin-left: 8px">返回</el-button>
           </router-link>
         </span>
@@ -22,11 +22,13 @@
             <span><i class="icon icon-table2"></i> 增项信息</span>
             <el-button style="float: right; padding: 3px 0" type="text" @click="saveEntity()">保存信息</el-button>
           </div>
-          <el-form label-width="150px" ref="EntityForm" :rules="rules" :model="formData">
+          <el-form label-width="150px" ref="EntityForm" :rules="appendRules" :model="formData">
             <el-row>
-              <el-col :span="12">
-                <el-form-item label="推荐单位名称" prop="RecUnitName">
-                  <el-input v-model="formData.RecUnitName" placeholder="请输入推荐单位名称"></el-input>
+              <el-col :span="24">
+                <el-form-item label="推荐单位名称" prop="checkSelectedRecUnitName">
+                  <el-cascader ref="tjdwCascader" :options="organizeTreeList" :props="organizeTreeProps" change-on-select :show-all-levels="false" 
+                                v-model="selectedOrgList" @change="getCode2" placeholder="请选择推荐单位">
+                  </el-cascader>
                 </el-form-item>
               </el-col>
               <!-- <el-col :span="12">
@@ -34,21 +36,15 @@
                   <el-input v-model="formData.RecUnitId" placeholder="请输入推荐单位编码"></el-input>
                 </el-form-item>
               </el-col> -->
-              <!-- <el-col :span="12">
-                <el-form-item label="选择增项" prop="checkSelectedOptList">
-                  <el-cascader :options="optionsList" style="width:100%" :props="orgtreeprops" change-on-select :show-all-levels="false" 
-                    v-model="selectedOptList" placeholder="请选择增项">
-                  </el-cascader>
-                </el-form-item>
-              </el-col> -->
               <el-col :span="24">
                 <el-form-item label="备注" prop="Remark">
-                  <el-input type="textarea" v-model="formData.Remark" placeholder="请输入"  style="width: 100%"></el-input>
+                  <el-input type="textarea" v-model="formData.Remark" placeholder="请输入"></el-input>
                 </el-form-item>
               </el-col>
             </el-row>
           </el-form>
         </el-card>
+        <!-- 增项分类列表 -->
         <el-card class="box-card" style="margin-top: 10px;">
           <div slot="header">
             <span><i class="icon icon-table2"></i> 增项分类</span>
@@ -61,6 +57,7 @@
                 <el-button type="text" title="删除" size="medium" icon="el-icon-delete" @click="deleteData(scope.row.Id)"></el-button>
               </template>
             </el-table-column>
+            <el-table-column prop="SortFlag" label="分类标记" v-if="1==2" show-overflow-tooltip></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 prop="Remark" label="备注" show-overflow-tooltip></el-table-column>
@@ -71,7 +68,7 @@
         </el-card>
       </div>
     </el-card>
-
+    <!-- 增项分类添加、修改 -->
     <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="800px">
       <el-form label-width="150px" ref="dialogFormData" :rules="sortEntityFormRules" :model="dialogFormData" >
         <el-row>
@@ -120,6 +117,13 @@
 
     data() {
       var CheckSelectedOption = (rule, value, callback) => {
+        if (this.selectedOrgList && this.selectedOrgList.length < 1) {
+          callback(new Error('请选择推荐单位'))
+        } else {
+          callback()
+        }
+      }
+      var CheckSelectedOption2 = (rule, value, callback) => {
         if (this.selectedOptList && this.selectedOptList.length < 1) {
           callback(new Error('请选择增项'))
         } else {
@@ -127,33 +131,40 @@
         }
       }
       return {
-        optionsList: [], //技术服务类层级列表
+        // serviceType: '', //服务类型()
+        optionsList: [], //增项分类层级列表
         selectedOptList: [], //已选择的增项分类列表
         orgtreeprops: {
           value: 'id',
           label: 'Name',
           children: 'children'
         },
+        organizeTreeList: [], //推荐单位层级列表
+        selectedOrgList: [], //已选择的单位列表
+        organizeTreeProps: {
+          value: 'id',
+          label: 'Fullname',
+          children: 'children'
+        },
+        organizeform: {
+          IsInnerOrganize: 1,
+          parentid: 0,
+          fullname: '',
+          description: '',
+          id: 0
+        },
         //增项信息表
         formData: {
           Id: '',
           SupplierId: 1,
           SupplierCertId: 1,
-          RecUnitId: '',
-          RecUnitName: '',
-          WorkRange: '',
+          RecUnitFlag: '',//推荐单位的级联Id标记
+          RecUnitId: '', //推荐单位编码
+          RecUnitName: '', //推荐单位名称
+          WorkRange: '', //申请准入的范围
           Remark: '',//备注
         },
         dialogVisible: false,//增项分类dialog
-        sortFormData: {
-          SupplierId: 1,//供方表ID
-          SupplierCertId: 1,//供方证书表ID
-          SupplierCertAppendId: '',//增项信息表ID
-          SubClassId: 1,//分类表主键(物资类或基建类或技术服务类)
-          Code: '',//分类编码
-          Name: '',//分类名称
-          Remark: '',//备注
-        },
         dialogTitle: '',
         dialogFormData: {
           Id: '',
@@ -161,6 +172,7 @@
           SupplierCertId: 1,//供方证书表ID
           SupplierCertAppendId: '',//增项信息表ID
           SubClassId: 2,//分类表主键(物资类或基建类或技术服务类)
+          SortFlag: '',//分类标记
           Code: '',//分类编码
           Name: '',//分类名称
           Remark: '',//备注
@@ -176,26 +188,28 @@
           Order: '',
           Prop: ''
         },
-        //表单规则
-        rules: {
-          RecUnitName: [{
+        //增项表单规则
+        appendRules: {
+          checkSelectedRecUnitName: [{
             required: true,
-            message: '请输入推荐单位名称',
+            validator: CheckSelectedOption,
             trigger: 'blur'
           }],
         },
+        //增项分类表单规则
         sortEntityFormRules: {
           checkSelectedOptList: [{
             required: true,
-            validator: CheckSelectedOption,
+            validator: CheckSelectedOption2,
             trigger: 'blur'
           }],
         },
         Id: '', //传的参数
-        editFlag: '' //编辑操作标记
+        editFlag: '', //编辑操作标记
       }
     },
     created() {
+      // this.serviceType = this.$route.params.opera //获取服务类型
       this.Id = this.$route.query.Id
       this.editFlag = this.$route.query.editFlag
       if(this.editFlag == '1' && this.Id !== '') {
@@ -203,10 +217,28 @@
         this.dialogFormData.SupplierCertAppendId = this.Id
         this.getSortList()
       }
+      this.getOrgTreeList() //获取推荐单位层级列表
       this.getTechTreeList() //获取技术服务类层级列表
     },
     methods: {
 
+      //获取推荐单位列表
+      getOrgTreeList() {
+        let _this = this
+        let params = {
+          IsInnerOrganize: this.organizeform.IsInnerOrganize
+        }
+        _this.$axios.get('organizes/list', {
+            params
+          })
+          .then(res => {
+            _this.organizeTreeList = window.toolfun_gettreejson(res.data.items, 'Id', 'Parentid', 'Id,Fullname')
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+
       //获取技术服务类层级列表
       getTechTreeList() {
         let _this = this
@@ -219,37 +251,71 @@
           })
       },
 
-      //获取级联Id
+      //获取分类级联Id
       getCode(item) {
+        let sortFlagStr = item.toString()
+        this.dialogFormData.SortFlag = sortFlagStr
+        this.getCodeById(item[item.length-1]) //根据分类Id获取Code
+      },
+
+      //根据分类Id获取Code
+      getCodeById(Id) {
+        let _this = this
+        this.$axios.get('technologyservice/getcode/' + Id, {})
+          .then(res => {
+            _this.dialogFormData.Code = res.data.items[0].Code
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+
+      //获取推荐单位级联Id
+      getCode2(item) {
         let codeStr = item.toString()
-        this.dialogFormData.Code = codeStr
+        this.formData.RecUnitFlag = codeStr
       },
 
-      //获取修改的增项信息
+      //获取需要修改的增项信息
       getEntityById() {
         let _this = this
         api2.getEntityById(_this.Id, _this.$axios).then(res => {
           _this.formData = res.data
-          //显示原增项结构
-          if (_this.formData.WorkRange != null) {
-            let arr = _this.formData.WorkRange.split(',')
+          //显示原推荐单位
+          if (_this.formData.RecUnitFlag != null) {
+            let arr = _this.formData.RecUnitFlag.split(',')
             let arr2 = []
             for (let i = 0; i < arr.length; i++) {
                arr2.push(parseInt(arr[i]))
             }
-            _this.selectedOptList = arr2
+            _this.selectedOrgList = arr2
           }
         }).catch(err => {
           console.error(err)
         })
       },
 
+      //保存增项信息
+      saveEntity() {
+        let _this = this
+        this.$refs['EntityForm'].validate((valid) => {
+          if (valid) {
+            let arr = _this.$refs['tjdwCascader'].currentLabels
+            _this.formData.RecUnitName = arr[arr.length - 1]  //获取推荐单位名
+            if(_this.editFlag == '1' && _this.Id !== '') {
+              _this.updateData()
+            } else {
+              _this.addAppend()
+            }
+          } else {
+            return false
+          }
+        })
+      },
+
       //更新增项信息
       updateData() {
         let _this = this
-        if (_this.selectedOptListselectedOptList != null) {
-          _this.formData.WorkRange = _this.selectedOptList.toString()
-        }
         api2.updateEntity(_this.Id, _this.formData, _this.$axios).then(res => {
           if (res.data.code === 0) {
             this.$message({
@@ -286,21 +352,6 @@
         })
       },
 
-      //保存增项信息
-      saveEntity() {
-        this.$refs['EntityForm'].validate((valid) => {
-          if (valid) {
-            if(this.editFlag == '1' && this.Id !== '') {
-              this.updateData()
-            } else {
-              this.addAppend()
-            }
-          } else {
-            return false
-          }
-        })
-      },
-
       //添加增项信息
       addAppend() {
         let _this = this
@@ -312,7 +363,6 @@
                 type: 'success',
                 message: res.data.message,
               })
-              this.activeName = 's2'
             } else {
               _this.$message({
                 type: 'warning',
@@ -328,12 +378,16 @@
       //添加增项分类
       addSortData() {
         let _this = this
-        _this.dialogTitle = '添加'
-        _this.dialogVisible = true
-        _this.selectedOptList = [] //置空,防止先修改再添加时的已选分类信息保留
-        _this.dialogFormData.Id = ''
-        _this.dialogFormData.Code = ''
-        _this.dialogFormData.Remark = ''
+        //先判断是否保存了增项信息
+        if(this.checkAppendSave()) {
+          _this.dialogTitle = '添加'
+          _this.dialogVisible = true
+          _this.selectedOptList = [] //置空,防止先修改再添加时的已选分类信息保留
+          _this.dialogFormData.Id = ''
+          _this.dialogFormData.SortFlag = ''
+          _this.dialogFormData.Code = ''
+          _this.dialogFormData.Remark = ''
+        }
       },
 
       //编辑增项分类
@@ -343,8 +397,8 @@
         _this.dialogVisible = true
         _this.dialogFormData = row
         //显示原增项结构
-        if (_this.dialogFormData.Code != null) {
-          let arr = _this.dialogFormData.Code.split(',')
+        if (_this.dialogFormData.SortFlag != null) {
+          let arr = _this.dialogFormData.SortFlag.split(',')
           let arr2 = []
           for (let i = 0; i < arr.length; i++) {
               arr2.push(parseInt(arr[i]))
@@ -369,10 +423,7 @@
               arr = _this.$refs['cascader'].currentLabels //_this.$refs['cascader'].currentLabels获取当前级联选项的id对应的value
               _this.dialogFormData.Name = arr[arr.length - 1]
               _this.dialogFormData.SupplierCertAppendId = parseInt(_this.dialogFormData.SupplierCertAppendId)
-              //先判断是否保存了增项信息
-              if(this.checkAppendSave()) {
-                this.addSortAppend()
-              }
+              _this.addSortAppend()
             }
             if (_this.dialogTitle == '编辑') {
               let arr = []
@@ -409,7 +460,7 @@
         if (this.dialogFormData.SupplierCertAppendId == '' && this.editFlag == null) {
           this.$message({
             type: 'error',
-            message: '无法保存,请先保存增项信息!'
+            message: '无法执行该命令,请先保存增项信息!'
           })
           return false
         }
@@ -509,7 +560,3 @@
   }
 
 </script>
-
-<style lang="scss">
-
-</style>

+ 562 - 0
src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/_opera/goodsdataopera.vue

@@ -0,0 +1,562 @@
+<template>
+  <div>
+    <el-breadcrumb class="heading">
+      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/oilsupplier/supplierappend/goodslist' }">物资类列表</el-breadcrumb-item>
+      <el-breadcrumb-item>编辑</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-card class="box-card">
+      <div slot="header">
+        <span>
+          <i class="icon icon-table2"></i> 编辑
+        </span>
+        <span style="float: right;">
+          <router-link :to="'/oilsupplier/supplierappend/goodslist'">
+            <el-button type="primary" size="mini" style="margin-left: 8px">返回</el-button>
+          </router-link>
+        </span>
+      </div>
+      <div>
+        <el-card class="box-card">
+          <div slot="header">
+            <span><i class="icon icon-table2"></i> 增项信息</span>
+            <el-button style="float: right; padding: 3px 0" type="text" @click="saveEntity()">保存信息</el-button>
+          </div>
+          <el-form label-width="150px" ref="EntityForm" :rules="appendRules" :model="formData">
+            <el-row>
+              <el-col :span="24">
+                <el-form-item label="推荐单位名称" prop="checkSelectedRecUnitName">
+                  <el-cascader ref="tjdwCascader" :options="organizeTreeList" :props="organizeTreeProps" change-on-select :show-all-levels="false" 
+                                v-model="selectedOrgList" @change="getCode2" placeholder="请选择推荐单位">
+                  </el-cascader>
+                </el-form-item>
+              </el-col>
+              <!-- <el-col :span="12">
+                <el-form-item label="推荐单位编码" prop="RecUnitId">
+                  <el-input v-model="formData.RecUnitId" placeholder="请输入推荐单位编码"></el-input>
+                </el-form-item>
+              </el-col> -->
+              <el-col :span="24">
+                <el-form-item label="备注" prop="Remark">
+                  <el-input type="textarea" v-model="formData.Remark" placeholder="请输入"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+        </el-card>
+        <!-- 增项分类列表 -->
+        <el-card class="box-card" style="margin-top: 10px;">
+          <div slot="header">
+            <span><i class="icon icon-table2"></i> 增项分类</span>
+            <el-button style="float: right; padding: 3px 0" type="text" @click="addSortData()">添加</el-button>
+          </div>
+          <el-table :data="entityList" border height="calc(100vh - 345px)" style="width: 100%" @sort-change="orderby">
+            <el-table-column label="操作" min-width="100" align="center" fixed>
+              <template slot-scope="scope">
+                <el-button type="text" title="编辑" size="medium" icon="el-icon-edit" @click="editSortData(scope.row)"></el-button>
+                <el-button type="text" title="删除" size="medium" icon="el-icon-delete" @click="deleteData(scope.row.Id)"></el-button>
+              </template>
+            </el-table-column>
+            <el-table-column prop="SortFlag" label="分类标记" v-if="1==2" show-overflow-tooltip></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 prop="Remark" label="备注" show-overflow-tooltip></el-table-column>
+          </el-table>
+          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+                        :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+          </el-pagination>
+        </el-card>
+      </div>
+    </el-card>
+    <!-- 增项分类添加、修改 -->
+    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="800px">
+      <el-form label-width="150px" ref="dialogFormData" :rules="sortEntityFormRules" :model="dialogFormData" >
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="分类名称" prop="checkSelectedOptList">
+              <el-cascader ref="cascader" :options="optionsList" style="width:100%" :props="orgtreeprops" change-on-select :show-all-levels="false" 
+                v-model="selectedOptList" @change="getCode" placeholder="请选择分类">
+              </el-cascader>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="分类编码" prop="Code">
+              <el-input v-model="dialogFormData.Code" placeholder="请输入分类编码" disabled></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="备注"  prop="Remark">
+              <el-input type="textarea" v-model="dialogFormData.Remark" placeholder="请输入备注"  style="width: 100%"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="mini" @click="cancelOption()">取 消</el-button>
+        <el-button size="mini" type="primary" @click="ensureOption()">确 定</el-button>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+  import {
+    mapGetters
+  } from 'vuex'
+  import api from '@/api/oilsupplier/supplierappendsub'
+  import api2 from '@/api/oilsupplier/supplierappend'
+
+  export default {
+    computed: {
+      ...mapGetters({
+        authUser: 'authUser'
+      })
+    },
+    name: 'oilsuppliercertappendsub',
+
+    data() {
+      var CheckSelectedOption = (rule, value, callback) => {
+        if (this.selectedOrgList && this.selectedOrgList.length < 1) {
+          callback(new Error('请选择推荐单位'))
+        } else {
+          callback()
+        }
+      }
+      var CheckSelectedOption2 = (rule, value, callback) => {
+        if (this.selectedOptList && this.selectedOptList.length < 1) {
+          callback(new Error('请选择增项'))
+        } else {
+          callback()
+        }
+      }
+      return {
+        // serviceType: '', //服务类型()
+        optionsList: [], //增项分类层级列表
+        selectedOptList: [], //已选择的增项分类列表
+        orgtreeprops: {
+          value: 'id',
+          label: 'Name',
+          children: 'children'
+        },
+        organizeTreeList: [], //推荐单位层级列表
+        selectedOrgList: [], //已选择的单位列表
+        organizeTreeProps: {
+          value: 'id',
+          label: 'Fullname',
+          children: 'children'
+        },
+        organizeform: {
+          IsInnerOrganize: 1,
+          parentid: 0,
+          fullname: '',
+          description: '',
+          id: 0
+        },
+        //增项信息表
+        formData: {
+          Id: '',
+          SupplierId: 1,
+          SupplierCertId: 1,
+          RecUnitFlag: '',//推荐单位的级联Id标记
+          RecUnitId: '', //推荐单位编码
+          RecUnitName: '', //推荐单位名称
+          WorkRange: '', //申请准入的范围
+          Remark: '',//备注
+        },
+        dialogVisible: false,//增项分类dialog
+        dialogTitle: '',
+        dialogFormData: {
+          Id: '',
+          SupplierId: 1,//供方表ID
+          SupplierCertId: 1,//供方证书表ID
+          SupplierCertAppendId: '',//增项信息表ID
+          SubClassId: 2,//分类表主键(物资类或基建类或技术服务类)
+          SortFlag: '',//分类标记
+          Code: '',//分类编码
+          Name: '',//分类名称
+          Remark: '',//备注
+        },
+        //列表数据
+        entityList: [],
+        //分页参数
+        size: 10,
+        currentPage: 1,
+        currentItemCount: 0,
+        //列表排序
+        Column: {
+          Order: '',
+          Prop: ''
+        },
+        //增项表单规则
+        appendRules: {
+          checkSelectedRecUnitName: [{
+            required: true,
+            validator: CheckSelectedOption,
+            trigger: 'blur'
+          }],
+        },
+        //增项分类表单规则
+        sortEntityFormRules: {
+          checkSelectedOptList: [{
+            required: true,
+            validator: CheckSelectedOption2,
+            trigger: 'blur'
+          }],
+        },
+        Id: '', //传的参数
+        editFlag: '', //编辑操作标记
+      }
+    },
+    created() {
+      // this.serviceType = this.$route.params.opera //获取服务类型
+      this.Id = this.$route.query.Id
+      this.editFlag = this.$route.query.editFlag
+      if(this.editFlag == '1' && this.Id !== '') {
+        this.getEntityById()
+        this.dialogFormData.SupplierCertAppendId = this.Id
+        this.getSortList()
+      }
+      this.getOrgTreeList() //获取推荐单位层级列表
+      this.getTechTreeList() //获取技术服务类层级列表
+    },
+    methods: {
+
+      //获取推荐单位列表
+      getOrgTreeList() {
+        let _this = this
+        let params = {
+          IsInnerOrganize: this.organizeform.IsInnerOrganize
+        }
+        _this.$axios.get('organizes/list', {
+            params
+          })
+          .then(res => {
+            _this.organizeTreeList = window.toolfun_gettreejson(res.data.items, 'Id', 'Parentid', 'Id,Fullname')
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+
+      //获取技术服务类层级列表
+      getTechTreeList() {
+        let _this = this
+        this.$axios.get('technologyservice/businesslist', {})
+          .then(res => {
+            _this.optionsList = window.toolfun_gettreejson(res.data.items, 'Id', 'ParentId', 'Id,Name')
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+
+      //获取分类级联Id
+      getCode(item) {
+        let sortFlagStr = item.toString()
+        this.dialogFormData.SortFlag = sortFlagStr
+        this.getCodeById(item[item.length-1]) //根据分类Id获取Code
+      },
+
+      //根据分类Id获取Code
+      getCodeById(Id) {
+        let _this = this
+        this.$axios.get('technologyservice/getcode/' + Id, {})
+          .then(res => {
+            _this.dialogFormData.Code = res.data.items[0].Code
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+
+      //获取推荐单位级联Id
+      getCode2(item) {
+        let codeStr = item.toString()
+        this.formData.RecUnitFlag = codeStr
+      },
+
+      //获取需要修改的增项信息
+      getEntityById() {
+        let _this = this
+        api2.getEntityById(_this.Id, _this.$axios).then(res => {
+          _this.formData = res.data
+          //显示原推荐单位
+          if (_this.formData.RecUnitFlag != null) {
+            let arr = _this.formData.RecUnitFlag.split(',')
+            let arr2 = []
+            for (let i = 0; i < arr.length; i++) {
+               arr2.push(parseInt(arr[i]))
+            }
+            _this.selectedOrgList = arr2
+          }
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      //保存增项信息
+      saveEntity() {
+        let _this = this
+        this.$refs['EntityForm'].validate((valid) => {
+          if (valid) {
+            let arr = _this.$refs['tjdwCascader'].currentLabels
+            _this.formData.RecUnitName = arr[arr.length - 1]  //获取推荐单位名
+            if(_this.editFlag == '1' && _this.Id !== '') {
+              _this.updateData()
+            } else {
+              _this.addAppend()
+            }
+          } else {
+            return false
+          }
+        })
+      },
+
+      //更新增项信息
+      updateData() {
+        let _this = this
+        api2.updateEntity(_this.Id, _this.formData, _this.$axios).then(res => {
+          if (res.data.code === 0) {
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            });
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            });
+          }
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      //获取增项分类表
+      getSortList() {
+        //分页及列表条件
+        let params = {
+          _currentPage: this.currentPage,
+          _size: this.size,
+          Order: this.Column.Order,
+          Prop: this.Column.Prop,
+          SupplierCertAppendId: this.dialogFormData.SupplierCertAppendId,
+        };
+        //访问接口
+        api.getList(params, this.$axios).then(res => {
+          this.entityList = res.data.items
+          this.currentItemCount = res.data.currentItemCount
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      //添加增项信息
+      addAppend() {
+        let _this = this
+        _this.$axios.post('/suppliercertappend/addappend/', _this.formData)
+          .then(res => {
+            if (res.data.code === 0) {
+              _this.dialogFormData.SupplierCertAppendId = res.data.item //接收插入数据后返回的Id
+              _this.$message({
+                type: 'success',
+                message: res.data.message,
+              })
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+        .catch(err => {
+          console.error(err)
+        })
+      },
+
+      //添加增项分类
+      addSortData() {
+        let _this = this
+        //先判断是否保存了增项信息
+        if(this.checkAppendSave()) {
+          _this.dialogTitle = '添加'
+          _this.dialogVisible = true
+          _this.selectedOptList = [] //置空,防止先修改再添加时的已选分类信息保留
+          _this.dialogFormData.Id = ''
+          _this.dialogFormData.SortFlag = ''
+          _this.dialogFormData.Code = ''
+          _this.dialogFormData.Remark = ''
+        }
+      },
+
+      //编辑增项分类
+      editSortData(row) {
+        let _this = this
+        _this.dialogTitle = '编辑'
+        _this.dialogVisible = true
+        _this.dialogFormData = row
+        //显示原增项结构
+        if (_this.dialogFormData.SortFlag != null) {
+          let arr = _this.dialogFormData.SortFlag.split(',')
+          let arr2 = []
+          for (let i = 0; i < arr.length; i++) {
+              arr2.push(parseInt(arr[i]))
+          }
+          _this.selectedOptList = arr2
+        }
+      },
+
+      //取消
+      cancelOption() {
+        let _this = this
+        _this.dialogVisible = false
+      },
+
+      //确定
+      ensureOption() {
+        this.$refs['dialogFormData'].validate((valid) => {
+          if (valid) {
+            let _this = this
+            if (_this.dialogTitle == '添加') {
+              let arr = []
+              arr = _this.$refs['cascader'].currentLabels //_this.$refs['cascader'].currentLabels获取当前级联选项的id对应的value
+              _this.dialogFormData.Name = arr[arr.length - 1]
+              _this.dialogFormData.SupplierCertAppendId = parseInt(_this.dialogFormData.SupplierCertAppendId)
+              _this.addSortAppend()
+            }
+            if (_this.dialogTitle == '编辑') {
+              let arr = []
+              arr = _this.$refs['cascader'].currentLabels
+              _this.dialogFormData.Name = arr[arr.length - 1]
+              api.updateEntity(_this.dialogFormData.Id, _this.dialogFormData, _this.$axios).then(res => {
+                if (res.data.code === 0) {
+                  this.$message({
+                    type: 'success',
+                    message: res.data.message
+                  });
+                  //关闭dialog
+                  _this.dialogVisible = false
+                  //更新列表
+                  this.getSortList()
+                } else {
+                  this.$message({
+                    type: 'warning',
+                    message: res.data.message
+                  });
+                }
+              }).catch(err => {
+                console.error(err)
+              })
+            }
+          } else {
+            return false
+          }
+        })
+      },
+
+      //判断是否保存了增项信息
+      checkAppendSave() {
+        if (this.dialogFormData.SupplierCertAppendId == '' && this.editFlag == null) {
+          this.$message({
+            type: 'error',
+            message: '无法执行该命令,请先保存增项信息!'
+          })
+          return false
+        }
+        return true
+      },
+      
+      //添加增项分类信息
+      addSortAppend() {
+        let _this = this
+        _this.$axios.post('/suppliercertappendsub/addappendsub/', _this.dialogFormData)
+          .then(res => {
+            if (res.data.code === 0) {
+              _this.$message({
+                type: 'success',
+                message: res.data.message,
+              })
+              //关闭dialog
+              _this.dialogVisible = false
+              //更新增项分类表
+              _this.getSortList()
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+
+      //删除增项分类信息
+      deleteData(Id) {
+        let _this = this
+        _this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          api.deleteEntity(Id, _this.$axios)
+            .then(res => {
+              // response
+              if (res.data.code === 0) {
+                _this.$message({
+                  type: 'success',
+                  message: res.data.message
+                })
+                // 更新列表
+                this.getSortList()
+              } else {
+                _this.$message({
+                  type: 'warning',
+                  message: res.data.message
+                })
+              }
+            })
+            .catch(() => {})
+        })
+        .catch(() => {})
+      },
+
+      //列表排序功能
+      orderby(column) {
+        if (column.order == 'ascending') {
+          this.Column.Order = 'asc'
+        } else if (column.order == 'descending') {
+          this.Column.Order = 'desc'
+        }
+        this.Column.Prop = column.prop
+        this.initData()
+      },
+      //分页功能
+      handleCurrentChange(value) {
+        this.currentPage = value
+        this.initData()
+      },
+      handleSizeChange(value) {
+        this.size = value
+        this.currentPage = 1
+        this.initData()
+      },
+
+      jstimehandle(val) {
+        if (val === '') {
+          return '----'
+        } else if (val === '0001-01-01T08:00:00+08:00') {
+          return '----'
+        } else if (val === '5000-01-01T23:59:59+08:00') {
+          return '永久'
+        } else {
+          val = val.replace('T', ' ')
+          return val.substring(0, 10)
+        }
+      },
+    }
+  }
+
+</script>

+ 562 - 0
src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/_opera/techdataopera.vue

@@ -0,0 +1,562 @@
+<template>
+  <div>
+    <el-breadcrumb class="heading">
+      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/oilsupplier/supplierappend/techlist' }">技术服务类列表</el-breadcrumb-item>
+      <el-breadcrumb-item>编辑</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-card class="box-card">
+      <div slot="header">
+        <span>
+          <i class="icon icon-table2"></i> 编辑
+        </span>
+        <span style="float: right;">
+          <router-link :to="'/oilsupplier/supplierappend/techlist'">
+            <el-button type="primary" size="mini" style="margin-left: 8px">返回</el-button>
+          </router-link>
+        </span>
+      </div>
+      <div>
+        <el-card class="box-card">
+          <div slot="header">
+            <span><i class="icon icon-table2"></i> 增项信息</span>
+            <el-button style="float: right; padding: 3px 0" type="text" @click="saveEntity()">保存信息</el-button>
+          </div>
+          <el-form label-width="150px" ref="EntityForm" :rules="appendRules" :model="formData">
+            <el-row>
+              <el-col :span="24">
+                <el-form-item label="推荐单位名称" prop="checkSelectedRecUnitName">
+                  <el-cascader ref="tjdwCascader" :options="organizeTreeList" :props="organizeTreeProps" change-on-select :show-all-levels="false" 
+                                v-model="selectedOrgList" @change="getCode2" placeholder="请选择推荐单位">
+                  </el-cascader>
+                </el-form-item>
+              </el-col>
+              <!-- <el-col :span="12">
+                <el-form-item label="推荐单位编码" prop="RecUnitId">
+                  <el-input v-model="formData.RecUnitId" placeholder="请输入推荐单位编码"></el-input>
+                </el-form-item>
+              </el-col> -->
+              <el-col :span="24">
+                <el-form-item label="备注" prop="Remark">
+                  <el-input type="textarea" v-model="formData.Remark" placeholder="请输入"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-form>
+        </el-card>
+        <!-- 增项分类列表 -->
+        <el-card class="box-card" style="margin-top: 10px;">
+          <div slot="header">
+            <span><i class="icon icon-table2"></i> 增项分类</span>
+            <el-button style="float: right; padding: 3px 0" type="text" @click="addSortData()">添加</el-button>
+          </div>
+          <el-table :data="entityList" border height="calc(100vh - 345px)" style="width: 100%" @sort-change="orderby">
+            <el-table-column label="操作" min-width="100" align="center" fixed>
+              <template slot-scope="scope">
+                <el-button type="text" title="编辑" size="medium" icon="el-icon-edit" @click="editSortData(scope.row)"></el-button>
+                <el-button type="text" title="删除" size="medium" icon="el-icon-delete" @click="deleteData(scope.row.Id)"></el-button>
+              </template>
+            </el-table-column>
+            <el-table-column prop="SortFlag" label="分类标记" v-if="1==2" show-overflow-tooltip></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 prop="Remark" label="备注" show-overflow-tooltip></el-table-column>
+          </el-table>
+          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+                        :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+          </el-pagination>
+        </el-card>
+      </div>
+    </el-card>
+    <!-- 增项分类添加、修改 -->
+    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="800px">
+      <el-form label-width="150px" ref="dialogFormData" :rules="sortEntityFormRules" :model="dialogFormData" >
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="分类名称" prop="checkSelectedOptList">
+              <el-cascader ref="cascader" :options="optionsList" style="width:100%" :props="orgtreeprops" change-on-select :show-all-levels="false" 
+                v-model="selectedOptList" @change="getCode" placeholder="请选择分类">
+              </el-cascader>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="分类编码" prop="Code">
+              <el-input v-model="dialogFormData.Code" placeholder="请输入分类编码" disabled></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="备注"  prop="Remark">
+              <el-input type="textarea" v-model="dialogFormData.Remark" placeholder="请输入备注"  style="width: 100%"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="mini" @click="cancelOption()">取 消</el-button>
+        <el-button size="mini" type="primary" @click="ensureOption()">确 定</el-button>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+  import {
+    mapGetters
+  } from 'vuex'
+  import api from '@/api/oilsupplier/supplierappendsub'
+  import api2 from '@/api/oilsupplier/supplierappend'
+
+  export default {
+    computed: {
+      ...mapGetters({
+        authUser: 'authUser'
+      })
+    },
+    name: 'oilsuppliercertappendsub',
+
+    data() {
+      var CheckSelectedOption = (rule, value, callback) => {
+        if (this.selectedOrgList && this.selectedOrgList.length < 1) {
+          callback(new Error('请选择推荐单位'))
+        } else {
+          callback()
+        }
+      }
+      var CheckSelectedOption2 = (rule, value, callback) => {
+        if (this.selectedOptList && this.selectedOptList.length < 1) {
+          callback(new Error('请选择增项'))
+        } else {
+          callback()
+        }
+      }
+      return {
+        // serviceType: '', //服务类型()
+        optionsList: [], //增项分类层级列表
+        selectedOptList: [], //已选择的增项分类列表
+        orgtreeprops: {
+          value: 'id',
+          label: 'Name',
+          children: 'children'
+        },
+        organizeTreeList: [], //推荐单位层级列表
+        selectedOrgList: [], //已选择的单位列表
+        organizeTreeProps: {
+          value: 'id',
+          label: 'Fullname',
+          children: 'children'
+        },
+        organizeform: {
+          IsInnerOrganize: 1,
+          parentid: 0,
+          fullname: '',
+          description: '',
+          id: 0
+        },
+        //增项信息表
+        formData: {
+          Id: '',
+          SupplierId: 1,
+          SupplierCertId: 1,
+          RecUnitFlag: '',//推荐单位的级联Id标记
+          RecUnitId: '', //推荐单位编码
+          RecUnitName: '', //推荐单位名称
+          WorkRange: '', //申请准入的范围
+          Remark: '',//备注
+        },
+        dialogVisible: false,//增项分类dialog
+        dialogTitle: '',
+        dialogFormData: {
+          Id: '',
+          SupplierId: 1,//供方表ID
+          SupplierCertId: 1,//供方证书表ID
+          SupplierCertAppendId: '',//增项信息表ID
+          SubClassId: 2,//分类表主键(物资类或基建类或技术服务类)
+          SortFlag: '',//分类标记
+          Code: '',//分类编码
+          Name: '',//分类名称
+          Remark: '',//备注
+        },
+        //列表数据
+        entityList: [],
+        //分页参数
+        size: 10,
+        currentPage: 1,
+        currentItemCount: 0,
+        //列表排序
+        Column: {
+          Order: '',
+          Prop: ''
+        },
+        //增项表单规则
+        appendRules: {
+          checkSelectedRecUnitName: [{
+            required: true,
+            validator: CheckSelectedOption,
+            trigger: 'blur'
+          }],
+        },
+        //增项分类表单规则
+        sortEntityFormRules: {
+          checkSelectedOptList: [{
+            required: true,
+            validator: CheckSelectedOption2,
+            trigger: 'blur'
+          }],
+        },
+        Id: '', //传的参数
+        editFlag: '', //编辑操作标记
+      }
+    },
+    created() {
+      // this.serviceType = this.$route.params.opera //获取服务类型
+      this.Id = this.$route.query.Id
+      this.editFlag = this.$route.query.editFlag
+      if(this.editFlag == '1' && this.Id !== '') {
+        this.getEntityById()
+        this.dialogFormData.SupplierCertAppendId = this.Id
+        this.getSortList()
+      }
+      this.getOrgTreeList() //获取推荐单位层级列表
+      this.getTechTreeList() //获取技术服务类层级列表
+    },
+    methods: {
+
+      //获取推荐单位列表
+      getOrgTreeList() {
+        let _this = this
+        let params = {
+          IsInnerOrganize: this.organizeform.IsInnerOrganize
+        }
+        _this.$axios.get('organizes/list', {
+            params
+          })
+          .then(res => {
+            _this.organizeTreeList = window.toolfun_gettreejson(res.data.items, 'Id', 'Parentid', 'Id,Fullname')
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+
+      //获取技术服务类层级列表
+      getTechTreeList() {
+        let _this = this
+        this.$axios.get('technologyservice/businesslist', {})
+          .then(res => {
+            _this.optionsList = window.toolfun_gettreejson(res.data.items, 'Id', 'ParentId', 'Id,Name')
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+
+      //获取分类级联Id
+      getCode(item) {
+        let sortFlagStr = item.toString()
+        this.dialogFormData.SortFlag = sortFlagStr
+        this.getCodeById(item[item.length-1]) //根据分类Id获取Code
+      },
+
+      //根据分类Id获取Code
+      getCodeById(Id) {
+        let _this = this
+        this.$axios.get('technologyservice/getcode/' + Id, {})
+          .then(res => {
+            _this.dialogFormData.Code = res.data.items[0].Code
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+
+      //获取推荐单位级联Id
+      getCode2(item) {
+        let codeStr = item.toString()
+        this.formData.RecUnitFlag = codeStr
+      },
+
+      //获取需要修改的增项信息
+      getEntityById() {
+        let _this = this
+        api2.getEntityById(_this.Id, _this.$axios).then(res => {
+          _this.formData = res.data
+          //显示原推荐单位
+          if (_this.formData.RecUnitFlag != null) {
+            let arr = _this.formData.RecUnitFlag.split(',')
+            let arr2 = []
+            for (let i = 0; i < arr.length; i++) {
+               arr2.push(parseInt(arr[i]))
+            }
+            _this.selectedOrgList = arr2
+          }
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      //保存增项信息
+      saveEntity() {
+        let _this = this
+        this.$refs['EntityForm'].validate((valid) => {
+          if (valid) {
+            let arr = _this.$refs['tjdwCascader'].currentLabels
+            _this.formData.RecUnitName = arr[arr.length - 1]  //获取推荐单位名
+            if(_this.editFlag == '1' && _this.Id !== '') {
+              _this.updateData()
+            } else {
+              _this.addAppend()
+            }
+          } else {
+            return false
+          }
+        })
+      },
+
+      //更新增项信息
+      updateData() {
+        let _this = this
+        api2.updateEntity(_this.Id, _this.formData, _this.$axios).then(res => {
+          if (res.data.code === 0) {
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            });
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            });
+          }
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      //获取增项分类表
+      getSortList() {
+        //分页及列表条件
+        let params = {
+          _currentPage: this.currentPage,
+          _size: this.size,
+          Order: this.Column.Order,
+          Prop: this.Column.Prop,
+          SupplierCertAppendId: this.dialogFormData.SupplierCertAppendId,
+        };
+        //访问接口
+        api.getList(params, this.$axios).then(res => {
+          this.entityList = res.data.items
+          this.currentItemCount = res.data.currentItemCount
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      //添加增项信息
+      addAppend() {
+        let _this = this
+        _this.$axios.post('/suppliercertappend/addappend/', _this.formData)
+          .then(res => {
+            if (res.data.code === 0) {
+              _this.dialogFormData.SupplierCertAppendId = res.data.item //接收插入数据后返回的Id
+              _this.$message({
+                type: 'success',
+                message: res.data.message,
+              })
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+        .catch(err => {
+          console.error(err)
+        })
+      },
+
+      //添加增项分类
+      addSortData() {
+        let _this = this
+        //先判断是否保存了增项信息
+        if(this.checkAppendSave()) {
+          _this.dialogTitle = '添加'
+          _this.dialogVisible = true
+          _this.selectedOptList = [] //置空,防止先修改再添加时的已选分类信息保留
+          _this.dialogFormData.Id = ''
+          _this.dialogFormData.SortFlag = ''
+          _this.dialogFormData.Code = ''
+          _this.dialogFormData.Remark = ''
+        }
+      },
+
+      //编辑增项分类
+      editSortData(row) {
+        let _this = this
+        _this.dialogTitle = '编辑'
+        _this.dialogVisible = true
+        _this.dialogFormData = row
+        //显示原增项结构
+        if (_this.dialogFormData.SortFlag != null) {
+          let arr = _this.dialogFormData.SortFlag.split(',')
+          let arr2 = []
+          for (let i = 0; i < arr.length; i++) {
+              arr2.push(parseInt(arr[i]))
+          }
+          _this.selectedOptList = arr2
+        }
+      },
+
+      //取消
+      cancelOption() {
+        let _this = this
+        _this.dialogVisible = false
+      },
+
+      //确定
+      ensureOption() {
+        this.$refs['dialogFormData'].validate((valid) => {
+          if (valid) {
+            let _this = this
+            if (_this.dialogTitle == '添加') {
+              let arr = []
+              arr = _this.$refs['cascader'].currentLabels //_this.$refs['cascader'].currentLabels获取当前级联选项的id对应的value
+              _this.dialogFormData.Name = arr[arr.length - 1]
+              _this.dialogFormData.SupplierCertAppendId = parseInt(_this.dialogFormData.SupplierCertAppendId)
+              _this.addSortAppend()
+            }
+            if (_this.dialogTitle == '编辑') {
+              let arr = []
+              arr = _this.$refs['cascader'].currentLabels
+              _this.dialogFormData.Name = arr[arr.length - 1]
+              api.updateEntity(_this.dialogFormData.Id, _this.dialogFormData, _this.$axios).then(res => {
+                if (res.data.code === 0) {
+                  this.$message({
+                    type: 'success',
+                    message: res.data.message
+                  });
+                  //关闭dialog
+                  _this.dialogVisible = false
+                  //更新列表
+                  this.getSortList()
+                } else {
+                  this.$message({
+                    type: 'warning',
+                    message: res.data.message
+                  });
+                }
+              }).catch(err => {
+                console.error(err)
+              })
+            }
+          } else {
+            return false
+          }
+        })
+      },
+
+      //判断是否保存了增项信息
+      checkAppendSave() {
+        if (this.dialogFormData.SupplierCertAppendId == '' && this.editFlag == null) {
+          this.$message({
+            type: 'error',
+            message: '无法执行该命令,请先保存增项信息!'
+          })
+          return false
+        }
+        return true
+      },
+      
+      //添加增项分类信息
+      addSortAppend() {
+        let _this = this
+        _this.$axios.post('/suppliercertappendsub/addappendsub/', _this.dialogFormData)
+          .then(res => {
+            if (res.data.code === 0) {
+              _this.$message({
+                type: 'success',
+                message: res.data.message,
+              })
+              //关闭dialog
+              _this.dialogVisible = false
+              //更新增项分类表
+              _this.getSortList()
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: res.data.message
+              })
+            }
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+
+      //删除增项分类信息
+      deleteData(Id) {
+        let _this = this
+        _this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          api.deleteEntity(Id, _this.$axios)
+            .then(res => {
+              // response
+              if (res.data.code === 0) {
+                _this.$message({
+                  type: 'success',
+                  message: res.data.message
+                })
+                // 更新列表
+                this.getSortList()
+              } else {
+                _this.$message({
+                  type: 'warning',
+                  message: res.data.message
+                })
+              }
+            })
+            .catch(() => {})
+        })
+        .catch(() => {})
+      },
+
+      //列表排序功能
+      orderby(column) {
+        if (column.order == 'ascending') {
+          this.Column.Order = 'asc'
+        } else if (column.order == 'descending') {
+          this.Column.Order = 'desc'
+        }
+        this.Column.Prop = column.prop
+        this.initData()
+      },
+      //分页功能
+      handleCurrentChange(value) {
+        this.currentPage = value
+        this.initData()
+      },
+      handleSizeChange(value) {
+        this.size = value
+        this.currentPage = 1
+        this.initData()
+      },
+
+      jstimehandle(val) {
+        if (val === '') {
+          return '----'
+        } else if (val === '0001-01-01T08:00:00+08:00') {
+          return '----'
+        } else if (val === '5000-01-01T23:59:59+08:00') {
+          return '永久'
+        } else {
+          val = val.replace('T', ' ')
+          return val.substring(0, 10)
+        }
+      },
+    }
+  }
+
+</script>

+ 7 - 7
src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/index.vue → src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/basislist.vue

@@ -2,15 +2,15 @@
   <div>
     <el-breadcrumb class="heading">
       <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/oilsupplier/supplierappend' }">增项信息列表</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/oilsupplier/supplierappend/basislist' }">基建类列表</el-breadcrumb-item>
     </el-breadcrumb>
     <el-card class="box-card" style="height: calc(100vh - 115px);">
       <div slot="header">
         <span>
-          <i class="icon icon-table2"></i> 增项信息列表
+          <i class="icon icon-table2"></i> 基建类列表
         </span>
         <span style="float: right;">
-          <router-link :to="'/oilsupplier/supplierappend/subdata/dataopera'">
+          <router-link :to="'/oilsupplier/supplierappend/2/basisdataopera'">
             <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
           </router-link>
         </span>
@@ -34,7 +34,7 @@
         <el-table-column label="操作" min-width="100" align="center" fixed>
           <template slot-scope="scope">
             <el-button type="text" title="编辑" size="medium" icon="el-icon-edit" @click="editData(scope.row)"></el-button>
-            <!-- <el-button type="text" title="删除" size="medium" icon="el-icon-delete" @click="deleteData(scope.row.Id)"></el-button> -->
+            <el-button type="text" title="删除" size="medium" icon="el-icon-delete" @click="deleteData(scope.row.Id)"></el-button>
           </template>
         </el-table-column>
         <el-table-column prop="ApplyDate" label="申请日期" sortable min-width="130" align="center" show-overflow-tooltip>
@@ -43,8 +43,8 @@
           </template>
         </el-table-column>
         <el-table-column prop="RecUnitName" label="推荐单位名称" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="RecUnitId" label="推荐单位编码" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="WorkRange" label="申请准入的范围" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="RecUnitId" label="推荐单位编码" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column> -->
+        <!-- <el-table-column prop="WorkRange" label="申请准入的范围" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column> -->
         <el-table-column prop="DenyReason" label="退回原因" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column>
         <el-table-column prop="AuditDate" label="审核日期" sortable min-width="130" align="center" show-overflow-tooltip>
           <template slot-scope="scope">
@@ -268,7 +268,7 @@
       editData(row) {
         let _this = this
         _this.$router.push({
-          path: `/oilsupplier/supplierappend/subdata/dataopera`,
+          path: `/oilsupplier/supplierappend/2/basisdataopera`,
           query: {
             Id: row.Id,
             editFlag: 1 //编辑标记: 1 修改,0 不修改

+ 384 - 0
src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/goodslist.vue

@@ -0,0 +1,384 @@
+<template>
+  <div>
+    <el-breadcrumb class="heading">
+      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/oilsupplier/supplierappend/goodslist' }">物资类列表</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-card class="box-card" style="height: calc(100vh - 115px);">
+      <div slot="header">
+        <span>
+          <i class="icon icon-table2"></i> 物资类列表
+        </span>
+        <span style="float: right;">
+          <router-link :to="'/oilsupplier/supplierappend/2/goodsdataopera'">
+            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
+          </router-link>
+        </span>
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="上报时间">
+            <el-date-picker size="mini" style="width: 220px" v-model="CreateOn" type="daterange" range-separator="至"
+                            start-placeholder="生成日期" end-placeholder="结束日期"></el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <el-dropdown split-button type="primary" size="mini" @click="handleSearch" @command="searchCommand">
+              查询
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="search">高级查询</el-dropdown-item>
+                <el-dropdown-item command="clear">查询重置</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-table :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
+        <el-table-column label="操作" min-width="100" align="center" fixed>
+          <template slot-scope="scope">
+            <el-button type="text" title="编辑" size="medium" icon="el-icon-edit" @click="editData(scope.row)"></el-button>
+            <el-button type="text" title="删除" size="medium" icon="el-icon-delete" @click="deleteData(scope.row.Id)"></el-button>
+          </template>
+        </el-table-column>
+        <el-table-column prop="ApplyDate" label="申请日期" sortable min-width="130" align="center" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{ jstimehandle(scope.row.ApplyDate) }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="RecUnitName" label="推荐单位名称" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="RecUnitId" label="推荐单位编码" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column> -->
+        <!-- <el-table-column prop="WorkRange" label="申请准入的范围" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column> -->
+        <el-table-column prop="DenyReason" label="退回原因" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="AuditDate" label="审核日期" sortable min-width="130" align="center" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{ jstimehandle(scope.row.AuditDate) }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="Status" label="状态标识" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="Remark" label="备注" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column>
+
+      </el-table>
+      <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+                     :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+      </el-pagination>
+    </el-card>
+
+    <el-dialog title="高级查询" :visible.sync="dialogVisible" width="720px">
+      <el-form ref="advancedsearchForm" label-width="110px">
+        <el-row>
+
+          <el-col :span="24">
+            <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.ApplyDate" 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.RecUnitName" 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.RecUnitId" 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.WorkRange" 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.DenyReason" 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.AuditDate" 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.Status" 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.Remark" 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="handleSearch">查 询</el-button>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+<script>
+  import { mapGetters } from 'vuex';
+  import api from '@/api/oilsupplier/supplierappend';
+
+  export default {
+    computed: {
+      ...mapGetters({
+        authUser: 'authUser'
+      })
+    },
+    name: 'oilsuppliercertappend',
+
+    data() {
+      var CheckSelectedOption = (rule, value, callback) => {
+        if (this.dialogSelectedOptList && this.dialogSelectedOptList.length < 1) {
+          callback(new Error('请选择增项'))
+        } else {
+          callback()
+        }
+      }
+      return {
+        dialogVisible: false,//高级查询
+        //列表数据
+        entityList: [],
+        //分页参数
+        size: 10,
+        currentPage: 1,
+        currentItemCount: 0,
+        //列表排序
+        Column: {
+          Order: '',
+          Prop: ''
+        },
+        //查询起始时间(一月前开始)
+        CreateOn: [new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()],
+        //查询项
+        searchFormReset: {},
+        searchForm: {
+          Id: '',
+          SupplierId: '',
+          SupplierCertId: '',
+          ApplyDate: '',
+          RecUnitId: '',
+          RecUnitName: '',
+          WorkRange: '',
+          DenyReason: '',
+          AuditDate: '',
+          Status: '',
+          Remark: '',
+          IsDelete: '',
+          CreateOn: '',
+          CreateUserId: '',
+          CreateBy: '',
+          ModifiedOn: '',
+          ModifiedUserId: '',
+          ModifiedBy: '',
+        },
+        //修改
+        optionsList: [], //技术服务类层级选择列表
+        orgtreeprops: {
+          value: 'id',
+          label: 'Name',
+          children: 'children'
+        },
+        dialogSelectedOptList: [],
+        dialogFormData: {
+          Id: '',
+          SupplierId: '',
+          SupplierCertId: '',
+          ApplyDate: '',
+          RecUnitId: '',
+          RecUnitName: '',
+          WorkRange: '',
+          DenyReason: '',
+          AuditDate: '',
+          Status: '',
+          Remark: '',
+        },
+        //表单规则
+        rules: {
+          checkSelectedOptList2: [{
+            required: true,
+            validator: CheckSelectedOption,
+            trigger: 'blur'
+          }],
+        },
+      }
+    },
+    created() {
+      //查询条件初始值备份
+      Object.assign(this.searchFormReset, this.searchForm)
+      //查询列表
+      this.initData()
+    },
+    methods: {
+      initData() {
+        //分页及列表条件
+        let params = {
+          _currentPage: this.currentPage,
+          _size: this.size,
+          Order: this.Column.Order,
+          Prop: this.Column.Prop,
+        }
+        let myCreateOn = []
+        // 解析时间
+        if (this.CreateOn.length == 2) {
+          this.CreateOn[1].setHours(23)
+          this.CreateOn[1].setMinutes(59)
+          this.CreateOn[1].setSeconds(59)
+          myCreateOn.push(this.formatDateTime(this.CreateOn[0]))
+          myCreateOn.push(this.formatDateTime(this.CreateOn[1]))
+        }
+        //查询条件
+        Object.assign(params, this.searchForm)
+        //访问接口
+        api.getList(myCreateOn.join(','), params, this.$axios).then(res => {
+          this.entityList = res.data.items
+          this.currentItemCount = res.data.currentItemCount
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      //获取技术服务类层级列表
+      getTechTreeList() {
+        let _this = this
+        this.$axios.get('technologyservice/businesslist', {})
+          .then(res => {
+            _this.optionsList = window.toolfun_gettreejson(res.data.items, 'Id', 'ParentId', 'Id,Name')
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+
+      //编辑
+      editData(row) {
+        let _this = this
+        _this.$router.push({
+          path: `/oilsupplier/supplierappend/2/goodsdataopera`,
+          query: {
+            Id: row.Id,
+            editFlag: 1 //编辑标记: 1 修改,0 不修改
+          }
+        })
+      },
+
+      //删除
+      deleteData(Id) {
+        let _this = this
+        _this.$confirm('此操作将彻底删除该数据, 是否继续?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          })
+          .then(() => {
+            api.deleteEntity(Id, _this.$axios)
+            .then(res => {
+              if (res.data.code === 0) {
+                _this.$message({
+                  type: 'success',
+                  message: res.data.message
+                })
+                // 更新
+                this.initData()
+              } else {
+                _this.$message({
+                  type: 'warning',
+                  message: res.data.message
+                })
+              }
+            })
+            .catch(() => {})
+          })
+          .catch(() => {})
+      },
+
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
+
+      //列表排序功能
+      orderby(column) {
+        if (column.order == 'ascending') {
+          this.Column.Order = 'asc'
+        } else if (column.order == 'descending') {
+          this.Column.Order = 'desc'
+        }
+        this.Column.Prop = column.prop
+        this.initData()
+      },
+      clearSearch() {
+        Object.assign(this.searchForm, this.searchFormReset);
+        //this.searchForm = this.searchFormReset;
+        this.CreateOn = ''
+        this.initData()
+      },
+      handleSearch() {
+        this.currentPage = 1;
+        this.dialogVisible = false;
+        this.initData();
+      },
+      handleCurrentChange(value) {
+        this.currentPage = value
+        this.initData()
+      },
+      handleSizeChange(value) {
+        this.size = value
+        this.currentPage = 1
+        this.initData()
+      },
+
+      jstimehandle(val) {
+        if (val === '') {
+          return '----'
+        } else if (val === '0001-01-01T08:00:00+08:00') {
+          return '----'
+        } else if (val === '0001-01-01T00:00:00Z') {
+          return '----'
+        } else if (val === '5000-01-01T23:59:59+08:00') {
+          return '永久'
+        } else {
+          val = val.replace('T', ' ')
+          return val.substring(0, 19)
+        }
+      },
+
+      formatDateTime(date) {
+        var y = date.getFullYear();
+        var m = date.getMonth() + 1;
+        m = m < 10 ? ('0' + m) : m;
+        var d = date.getDate();
+        d = d < 10 ? ('0' + d) : d;
+        var h = date.getHours();
+        var minute = date.getMinutes();
+        minute = minute < 10 ? ('0' + minute) : minute;
+        return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
+      }
+    }
+  }
+
+</script>
+
+<style lang="scss">
+  .el-pagination {
+    margin: 1rem 0 2rem;
+    text-align: right;
+  }
+</style>

+ 0 - 180
src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/subdata/datalist.vue

@@ -1,180 +0,0 @@
-<template>
-  <div>
-    <el-card class="box-card" style="height: calc(100vh - 270px);">
-      <el-table :data="entityList" border height="calc(100vh - 345px)" style="width: 100%" @sort-change="orderby">
-        <el-table-column label="操作" min-width="100" align="center" fixed>
-          <template slot-scope="scope">
-            <el-button type="text" title="编辑" size="medium" icon="el-icon-edit" @click="EditEntity(scope.row)"></el-button>
-            <el-button type="text" title="删除" size="medium" icon="el-icon-delete" @click="deleteData(scope.row.Id)"></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 prop="Remark" label="备注" show-overflow-tooltip></el-table-column>
-      </el-table>
-      <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
-                     :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
-      </el-pagination>
-    </el-card>
-  </div>
-</template>
-<script>
-  import { mapGetters } from 'vuex';
-  import api from '@/api/oilsupplier/supplierappendsub';
-
-  export default {
-    computed: {
-      ...mapGetters({
-        authUser: 'authUser'
-      })
-    },
-    name: 'oilsuppliercertappendsub',
-    props: {
-      DataEntryId: Number,
-    },
-
-    data() {
-      return {
-        dialogVisible: false,
-        //列表数据
-        entityList: [],
-        //分页参数
-        size: 10,
-        currentPage: 1,
-        currentItemCount: 0,
-        //列表排序
-        Column: {
-          Order: '',
-          Prop: ''
-        },
-        //查询时间
-        CreateOn: [new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()],
-        //查询项
-        searchFormReset: {},
-        searchForm: {
-          Id: '',
-          SupplierId: '',
-          SupplierCertId: '',
-          SupplierCertAppendId: '',
-          SubClassId: '',
-          Code: '',
-          Name: '',
-          Remark: '',
-          IsDelete: '',
-          CreateOn: '',
-          CreateUserId: '',
-          CreateBy: '',
-          ModifiedOn: '',
-          ModifiedUserId: '',
-          ModifiedBy: '',
-        },
-      }
-    },
-    created() {
-      //查询列表
-      this.initDatas();
-    },
-    methods: {
-      initDatas() {
-        //分页及列表条件
-        let params = {
-          _currentPage: this.currentPage,
-          _size: this.size,
-          Order: this.Column.Order,
-          Prop: this.Column.Prop,
-          SupplierCertAppendId: 1,
-        };
-        //访问接口
-        api.getList(params, this.$axios).then(res => {
-          this.entityList = res.data.items
-          this.currentItemCount = res.data.currentItemCount
-        }).catch(err => {
-          console.error(err)
-        })
-      },
-
-      searchCommand(command) {
-        if (command == 'search') {
-          this.dialogVisible = true
-        } else if (command == 'clear') {
-          this.clearSearch()
-        }
-      },
-      //列表排序功能
-      orderby(column) {
-        if (column.order == 'ascending') {
-          this.Column.Order = 'asc'
-        } else if (column.order == 'descending') {
-          this.Column.Order = 'desc'
-        }
-        this.Column.Prop = column.prop
-        this.initDatas()
-      },
-      handleCurrentChange(value) {
-        this.currentPage = value
-        this.initDatas()
-      },
-      handleSizeChange(value) {
-        this.size = value
-        this.currentPage = 1
-        this.initDatas()
-      },
-      deleteEntity(row) {
-        row.deleteConfirmFlag = false;
-        api.deleteEntity(row.Id, this.$axios).then(res => {
-          if (res.data.code === 0) {
-            this.initDatas();
-            this.$message({
-              type: 'success',
-              message: res.data.message
-            });
-
-          } else {
-            this.$message({
-              type: 'warning',
-              message: res.data.message
-            });
-          }
-        }).catch(err => {
-          console.error(err)
-        });
-      },
-      EditEntity(row) {
-        this.$emit('edit-entity', row.Id)
-      },
-
-      jstimehandle(val) {
-        if (val === '') {
-          return '----'
-        } else if (val === '0001-01-01T08:00:00+08:00') {
-          return '----'
-        } else if (val === '5000-01-01T23:59:59+08:00') {
-          return '永久'
-        } else {
-          val = val.replace('T', ' ')
-          return val.substring(0, 10)
-        }
-      },
-
-      formatDateTime(date) {
-        var y = date.getFullYear();
-        var m = date.getMonth() + 1;
-        m = m < 10 ? ('0' + m) : m;
-        var d = date.getDate();
-        d = d < 10 ? ('0' + d) : d;
-        var h = date.getHours();
-        var minute = date.getMinutes();
-        minute = minute < 10 ? ('0' + minute) : minute;
-        return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
-      }
-    }
-  }
-
-</script>
-
-<style lang="scss">
-  .el-pagination {
-    margin: 1rem 0 2rem;
-    text-align: right;
-  }
-</style>

+ 384 - 0
src/dashoo.cn/frontend_web/src/pages/oilsupplier/supplierappend/techlist.vue

@@ -0,0 +1,384 @@
+<template>
+  <div>
+    <el-breadcrumb class="heading">
+      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/oilsupplier/supplierappend/techlist' }">技术服务类列表</el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-card class="box-card" style="height: calc(100vh - 115px);">
+      <div slot="header">
+        <span>
+          <i class="icon icon-table2"></i> 技术服务类列表
+        </span>
+        <span style="float: right;">
+          <router-link :to="'/oilsupplier/supplierappend/2/techdataopera'">
+            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
+          </router-link>
+        </span>
+        <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
+          <el-form-item label="上报时间">
+            <el-date-picker size="mini" style="width: 220px" v-model="CreateOn" type="daterange" range-separator="至"
+                            start-placeholder="生成日期" end-placeholder="结束日期"></el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <el-dropdown split-button type="primary" size="mini" @click="handleSearch" @command="searchCommand">
+              查询
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="search">高级查询</el-dropdown-item>
+                <el-dropdown-item command="clear">查询重置</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-table :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
+        <el-table-column label="操作" min-width="100" align="center" fixed>
+          <template slot-scope="scope">
+            <el-button type="text" title="编辑" size="medium" icon="el-icon-edit" @click="editData(scope.row)"></el-button>
+            <el-button type="text" title="删除" size="medium" icon="el-icon-delete" @click="deleteData(scope.row.Id)"></el-button>
+          </template>
+        </el-table-column>
+        <el-table-column prop="ApplyDate" label="申请日期" sortable min-width="130" align="center" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{ jstimehandle(scope.row.ApplyDate) }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="RecUnitName" label="推荐单位名称" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column>
+        <!-- <el-table-column prop="RecUnitId" label="推荐单位编码" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column> -->
+        <!-- <el-table-column prop="WorkRange" label="申请准入的范围" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column> -->
+        <el-table-column prop="DenyReason" label="退回原因" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="AuditDate" label="审核日期" sortable min-width="130" align="center" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{ jstimehandle(scope.row.AuditDate) }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="Status" label="状态标识" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="Remark" label="备注" sortable min-width="130" align="center" show-overflow-tooltip></el-table-column>
+
+      </el-table>
+      <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+                     :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+      </el-pagination>
+    </el-card>
+
+    <el-dialog title="高级查询" :visible.sync="dialogVisible" width="720px">
+      <el-form ref="advancedsearchForm" label-width="110px">
+        <el-row>
+
+          <el-col :span="24">
+            <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.ApplyDate" 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.RecUnitName" 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.RecUnitId" 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.WorkRange" 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.DenyReason" 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.AuditDate" 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.Status" 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.Remark" 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="handleSearch">查 询</el-button>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+<script>
+  import { mapGetters } from 'vuex';
+  import api from '@/api/oilsupplier/supplierappend';
+
+  export default {
+    computed: {
+      ...mapGetters({
+        authUser: 'authUser'
+      })
+    },
+    name: 'oilsuppliercertappend',
+
+    data() {
+      var CheckSelectedOption = (rule, value, callback) => {
+        if (this.dialogSelectedOptList && this.dialogSelectedOptList.length < 1) {
+          callback(new Error('请选择增项'))
+        } else {
+          callback()
+        }
+      }
+      return {
+        dialogVisible: false,//高级查询
+        //列表数据
+        entityList: [],
+        //分页参数
+        size: 10,
+        currentPage: 1,
+        currentItemCount: 0,
+        //列表排序
+        Column: {
+          Order: '',
+          Prop: ''
+        },
+        //查询起始时间(一月前开始)
+        CreateOn: [new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()],
+        //查询项
+        searchFormReset: {},
+        searchForm: {
+          Id: '',
+          SupplierId: '',
+          SupplierCertId: '',
+          ApplyDate: '',
+          RecUnitId: '',
+          RecUnitName: '',
+          WorkRange: '',
+          DenyReason: '',
+          AuditDate: '',
+          Status: '',
+          Remark: '',
+          IsDelete: '',
+          CreateOn: '',
+          CreateUserId: '',
+          CreateBy: '',
+          ModifiedOn: '',
+          ModifiedUserId: '',
+          ModifiedBy: '',
+        },
+        //修改
+        optionsList: [], //技术服务类层级选择列表
+        orgtreeprops: {
+          value: 'id',
+          label: 'Name',
+          children: 'children'
+        },
+        dialogSelectedOptList: [],
+        dialogFormData: {
+          Id: '',
+          SupplierId: '',
+          SupplierCertId: '',
+          ApplyDate: '',
+          RecUnitId: '',
+          RecUnitName: '',
+          WorkRange: '',
+          DenyReason: '',
+          AuditDate: '',
+          Status: '',
+          Remark: '',
+        },
+        //表单规则
+        rules: {
+          checkSelectedOptList2: [{
+            required: true,
+            validator: CheckSelectedOption,
+            trigger: 'blur'
+          }],
+        },
+      }
+    },
+    created() {
+      //查询条件初始值备份
+      Object.assign(this.searchFormReset, this.searchForm)
+      //查询列表
+      this.initData()
+    },
+    methods: {
+      initData() {
+        //分页及列表条件
+        let params = {
+          _currentPage: this.currentPage,
+          _size: this.size,
+          Order: this.Column.Order,
+          Prop: this.Column.Prop,
+        }
+        let myCreateOn = []
+        // 解析时间
+        if (this.CreateOn.length == 2) {
+          this.CreateOn[1].setHours(23)
+          this.CreateOn[1].setMinutes(59)
+          this.CreateOn[1].setSeconds(59)
+          myCreateOn.push(this.formatDateTime(this.CreateOn[0]))
+          myCreateOn.push(this.formatDateTime(this.CreateOn[1]))
+        }
+        //查询条件
+        Object.assign(params, this.searchForm)
+        //访问接口
+        api.getList(myCreateOn.join(','), params, this.$axios).then(res => {
+          this.entityList = res.data.items
+          this.currentItemCount = res.data.currentItemCount
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      //获取技术服务类层级列表
+      getTechTreeList() {
+        let _this = this
+        this.$axios.get('technologyservice/businesslist', {})
+          .then(res => {
+            _this.optionsList = window.toolfun_gettreejson(res.data.items, 'Id', 'ParentId', 'Id,Name')
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+
+      //编辑
+      editData(row) {
+        let _this = this
+        _this.$router.push({
+          path: `/oilsupplier/supplierappend/2/techdataopera`,
+          query: {
+            Id: row.Id,
+            editFlag: 1 //编辑标记: 1 修改,0 不修改
+          }
+        })
+      },
+
+      //删除
+      deleteData(Id) {
+        let _this = this
+        _this.$confirm('此操作将彻底删除该数据, 是否继续?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          })
+          .then(() => {
+            api.deleteEntity(Id, _this.$axios)
+            .then(res => {
+              if (res.data.code === 0) {
+                _this.$message({
+                  type: 'success',
+                  message: res.data.message
+                })
+                // 更新
+                this.initData()
+              } else {
+                _this.$message({
+                  type: 'warning',
+                  message: res.data.message
+                })
+              }
+            })
+            .catch(() => {})
+          })
+          .catch(() => {})
+      },
+
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
+
+      //列表排序功能
+      orderby(column) {
+        if (column.order == 'ascending') {
+          this.Column.Order = 'asc'
+        } else if (column.order == 'descending') {
+          this.Column.Order = 'desc'
+        }
+        this.Column.Prop = column.prop
+        this.initData()
+      },
+      clearSearch() {
+        Object.assign(this.searchForm, this.searchFormReset);
+        //this.searchForm = this.searchFormReset;
+        this.CreateOn = ''
+        this.initData()
+      },
+      handleSearch() {
+        this.currentPage = 1;
+        this.dialogVisible = false;
+        this.initData();
+      },
+      handleCurrentChange(value) {
+        this.currentPage = value
+        this.initData()
+      },
+      handleSizeChange(value) {
+        this.size = value
+        this.currentPage = 1
+        this.initData()
+      },
+
+      jstimehandle(val) {
+        if (val === '') {
+          return '----'
+        } else if (val === '0001-01-01T08:00:00+08:00') {
+          return '----'
+        } else if (val === '0001-01-01T00:00:00Z') {
+          return '----'
+        } else if (val === '5000-01-01T23:59:59+08:00') {
+          return '永久'
+        } else {
+          val = val.replace('T', ' ')
+          return val.substring(0, 19)
+        }
+      },
+
+      formatDateTime(date) {
+        var y = date.getFullYear();
+        var m = date.getMonth() + 1;
+        m = m < 10 ? ('0' + m) : m;
+        var d = date.getDate();
+        d = d < 10 ? ('0' + d) : d;
+        var h = date.getHours();
+        var minute = date.getMinutes();
+        minute = minute < 10 ? ('0' + minute) : minute;
+        return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
+      }
+    }
+  }
+
+</script>
+
+<style lang="scss">
+  .el-pagination {
+    margin: 1rem 0 2rem;
+    text-align: right;
+  }
+</style>