Przeglądaj źródła

bug
Signed-off-by: lijunqing <lijunqing@dashoo.cn>

lijunqing 6 lat temu
rodzic
commit
6409bead90

+ 65 - 0
src/dashoo.cn/backend/api/business/oilsupplier/goodsaptitude/oilgoodsaptitude.go

@@ -67,6 +67,71 @@ type OilGoodsAptitude struct {
 	ModifiedBy        string    `xorm:"VARCHAR(50)"`
 }
 
+type OilGoodsAptitude_2 struct {
+	Id                int       `xorm:"not null pk autoincr INT(10)"`
+	Code              string    `xorm:"default '' VARCHAR(50)"`
+	Name              string    `xorm:"default '' VARCHAR(50)"`
+	ClassId           int       `xorm:"not null default '' comment('编码') INT(11)"`
+	GoodsLevel        string    `xorm:"default '' comment('物资级别') VARCHAR(8)"`
+	GoodsDesc         string    `xorm:"default '' comment('产品说明') VARCHAR(50)"`
+	Standard          string    `xorm:"default '' comment('标准备案') VARCHAR(8)"`
+	CompanyType       string    `xorm:"default '' comment('供应商类型') VARCHAR(50)"`
+	F01               string    `xorm:"default '' VARCHAR(2)"`
+	F02               string    `xorm:"default '' VARCHAR(2)"`
+	F03               string    `xorm:"default '' VARCHAR(2)"`
+	F04               string    `xorm:"default '' VARCHAR(2)"`
+	F05               string    `xorm:"default '' VARCHAR(2)"`
+	F06               string    `xorm:"default '' VARCHAR(2)"`
+	F07               string    `xorm:"default '' VARCHAR(2)"`
+	F08               string    `xorm:"default '' VARCHAR(2)"`
+	F09               string    `xorm:"default '' VARCHAR(2)"`
+	F10               string    `xorm:"default '' VARCHAR(2)"`
+	F11               string    `xorm:"default '' VARCHAR(2)"`
+	F12               string    `xorm:"default '' VARCHAR(2)"`
+	F13               string    `xorm:"default '' VARCHAR(2)"`
+	F14               string    `xorm:"default '' VARCHAR(2)"`
+	F15               string    `xorm:"default '' VARCHAR(2)"`
+	F16               string    `xorm:"default '' VARCHAR(2)"`
+	F17               string    `xorm:"default '' VARCHAR(2)"`
+	F18               string    `xorm:"default '' VARCHAR(2)"`
+	F19               string    `xorm:"default '' VARCHAR(2)"`
+	F20               string    `xorm:"default '' VARCHAR(2)"`
+	F21               string    `xorm:"default '' VARCHAR(2)"`
+	F22               string    `xorm:"default '' VARCHAR(2)"`
+	F23               string    `xorm:"default '' VARCHAR(2)"`
+	F24               string    `xorm:"default '' VARCHAR(2)"`
+	F25               string    `xorm:"default '' VARCHAR(2)"`
+	F26               string    `xorm:"default '' VARCHAR(2)"`
+	F27               string    `xorm:"default '' VARCHAR(2)"`
+	F28               string    `xorm:"default '' VARCHAR(2)"`
+	F29               string    `xorm:"default '' VARCHAR(2)"`
+	F30               string    `xorm:"default '' VARCHAR(2)"`
+	F31               string    `xorm:"default '' VARCHAR(2)"`
+	F32               string    `xorm:"default '' VARCHAR(2)"`
+	F33               string    `xorm:"default '' VARCHAR(2)"`
+	F34               string    `xorm:"default '' VARCHAR(2)"`
+	F35               string    `xorm:"default '' VARCHAR(2)"`
+	F36               string    `xorm:"default '' VARCHAR(2)"`
+	F37               string    `xorm:"default '' VARCHAR(2)"`
+	F38               string    `xorm:"default '' VARCHAR(2)"`
+	F39               string    `xorm:"default '' VARCHAR(2)"`
+	F40               string    `xorm:"default '' VARCHAR(2)"`
+	F41               string    `xorm:"default '' VARCHAR(2)"`
+	F42               string    `xorm:"default '' VARCHAR(2)"`
+	F43               string    `xorm:"default '' VARCHAR(2)"`
+	F44               string    `xorm:"default '' VARCHAR(2)"`
+	F45               string    `xorm:"default '' VARCHAR(2)"`
+	F46               string    `xorm:"default '' VARCHAR(2)"`
+	Remark            string    `xorm:"comment('备注') VARCHAR(500)"`
+	DeletionStateCode int       `xorm:"default 0 comment('删除状态,0正常,1已删除') INT(10)"`
+	CreateOn          time.Time `xorm:"DATETIME"`
+	CreateUserId      int       `xorm:"INT(10)"`
+	CreateBy          string    `xorm:"VARCHAR(50)"`
+	ModifiedOn        time.Time `xorm:"DATETIME"`
+	ModifiedUserId    int       `xorm:"INT(10)"`
+	ModifiedBy        string    `xorm:"VARCHAR(50)"`
+}
+
 type OilGoodsAptitudeView struct {
 	Code             string `xorm:"default '' VARCHAR(50) 'code'"`
 	Name             string `xorm:"default '' VARCHAR(50) 'name'"`

+ 38 - 0
src/dashoo.cn/backend/api/business/oilsupplier/goodsaptitude/oilgoodsaptitudeService.go

@@ -65,3 +65,41 @@ func (s *OilGoodsAptitudeService) GetGoodsList(goodsclass, where string) []Goods
 	utils.DBE.Sql(sql).Find(&List)
 	return List
 }
+
+
+
+func (s *OilGoodsAptitudeService) GetList_2019(OilGoodsAptitudeName, OilGoodsAptitudeClassName string, pageIndex, itemsPerPage int64, orderby string, asc bool, entitiesPtr interface{}, where string) (total int64) {
+	var resultsSlice []map[string][]byte
+
+	//获取总记录数
+	sqlCount := `select count(*) from ` + OilGoodsAptitudeName + ` a `
+	sqlCount += ` left join ` + OilGoodsAptitudeClassName + " b on b.Id = a.ClassId"
+	sqlCount += ` where ` + where
+
+	var sql string
+	sql = `select a.*, b.Code, b.Name `
+	sql += ` from ` + OilGoodsAptitudeName + ` a `
+	sql += ` left join ` + OilGoodsAptitudeClassName + " b on b.Id = a.ClassId"
+	sql += ` where ` + where
+	if asc {
+		sql += ` order by ` + orderby + ` ASC `
+	} else {
+		sql += ` order by ` + orderby + ` DESC `
+	}
+	if (pageIndex != 0 && itemsPerPage !=0) {
+		sql += ` limit ` + utils.ToStr((pageIndex-1)*itemsPerPage) + "," + utils.ToStr(itemsPerPage)
+	}
+	s.DBE.SQL(sql).Find(entitiesPtr)
+
+	resultsSlice, _ = s.DBE.Query(sqlCount)
+
+	if len(resultsSlice) > 0 {
+		results := resultsSlice[0]
+		for _, value := range results {
+			total, _ = strconv.ParseInt(string(value), 10, 64)
+			break
+		}
+	}
+
+	return total
+}

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

@@ -41,7 +41,7 @@ func (this *OilGoodsAptitudeController) GetEntityList() {
 			asc = false
 		}
 	}
-
+	Edition := this.GetString("Edition")
 	CreateOn := this.GetString("CreateOn")
 	Code := this.GetString("Code")
 	Name := this.GetString("Name")
@@ -55,6 +55,9 @@ func (this *OilGoodsAptitudeController) GetEntityList() {
 	Standard := this.GetString("Standard")
 	CompanyType := this.GetString("CompanyType")
 
+	if Edition!="" {
+		where = where + " and Edition = '" + Edition + "'"
+	}
 	if Code != "" {
 		where = where + " and Code like '%" + Code + "%'"
 	}
@@ -119,6 +122,55 @@ func (this *OilGoodsAptitudeController) GetEntityList() {
 	this.Data["json"] = &datainfo
 	this.ServeJSON()
 }
+// @Title 获取列表2019版本
+// @Description
+// @Success 200 {object}
+// @router /list_2019 [get]
+func (this *OilGoodsAptitudeController) GetEntityList_2019() {
+
+	//获取分页信息
+	page := this.GetPageInfoForm()
+	where := " 1=1 "
+	orderby := "Code"
+	asc := true
+	Order := this.GetString("Order")
+	Prop := this.GetString("Prop")
+	if Order != "" && Prop != "" {
+		orderby = Prop
+		if Order == "asc" {
+			asc = true
+		} else {
+			asc = false
+		}
+	}
+	Edition := this.GetString("Edition")
+	Code := this.GetString("Code")
+	Name := this.GetString("Name")
+
+
+	if Edition!="" {
+		where = where + " and a.Edition = '" + Edition + "'"
+	}
+	if Code != "" {
+		where = where + " and b.Code like '%" + Code + "%'"
+	}
+
+	if Name != "" {
+		where = where + " and b.Name like '%" + Name + "%'"
+	}
+
+	svc := goodsaptitude.GetOilGoodsAptitudeService(utils.DBE)
+	var list []goodsaptitude.OilGoodsAptitude_2
+	total := svc.GetList_2019(OilGoodsAptitudeName,OilGoodsAptitudeClassName,page.CurrentPage, page.Size, orderby, asc, &list, where)
+	var datainfo DataInfo
+	datainfo.Items = list
+	datainfo.CurrentItemCount = total
+	datainfo.PageIndex = page.CurrentPage
+	datainfo.ItemsPerPage = page.Size
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+}
+
 
 // @Title 获取字典列表
 // @Description get user by token

+ 10 - 3
src/dashoo.cn/frontend_web/src/api/oilsupplier/goodsaptitude.js

@@ -6,6 +6,13 @@ export default {
       params: params
     })
   },
+  get2019List (params, myAxios) {
+    return myAxios({
+      url: '/goodsaptitude/list_2019',
+      method: 'GET',
+      params: params
+    })
+  },
   getDictList (myAxios) {
     return myAxios({
       url: '/goodsaptitude/dictlist/',
@@ -18,7 +25,7 @@ export default {
       method: 'GET'
     })
   },
-  addEntity (entityId,formData, myAxios) {
+  addEntity (entityId, formData, myAxios) {
     return myAxios({
       url: '/goodsaptitude/add/' + entityId,
       method: 'post',
@@ -32,9 +39,9 @@ export default {
       data: formData
     })
   },
-  updateCodeEntity (myclassid,formData, myAxios) {
+  updateCodeEntity (myclassid, formData, myAxios) {
     return myAxios({
-      url: '/goodsaptitude/updatecode/'+ myclassid,
+      url: '/goodsaptitude/updatecode/' + myclassid,
       method: 'post',
       data: formData
     })

+ 58 - 60
src/dashoo.cn/frontend_web/src/pages/oilsupplier/goodsaptitude/index.vue

@@ -255,8 +255,8 @@
   } from 'vuex'
   import api from '@/api/oilsupplier/goodsaptitude'
   import setapi from '@/api/oilsupplier/oilclassorgset'
-  import FileSaver from "file-saver";
-  import XLSX from "xlsx";
+  import FileSaver from 'file-saver';
+  import XLSX from 'xlsx';
 
   export default {
     computed: {
@@ -266,7 +266,7 @@
     },
     name: 'oilgoodsaptitude',
 
-    data() {
+    data () {
       return {
         codeeditshow: false,
         classid: '',
@@ -299,7 +299,7 @@
           Code3: '',
           Name3: '',
           Code4: '',
-          Name4: '',
+          Name4: ''
         },
         // 查询时间
         CreateOn: [],
@@ -490,10 +490,10 @@
         AuditStepOptions: []
       }
     },
-    created() {
+    created () {
       // 查询条件初始值备份
       Object.assign(this.searchFormReset, this.searchForm)
-      //初始化部分表头
+      // 初始化部分表头
       this.initTableHeader()
 
       // 查询列表
@@ -502,19 +502,19 @@
       this.getDictOptions()
     },
     methods: {
-      Name1Change(val) {
+      Name1Change (val) {
         this.formData.Code2 = this.formData.Code2.replace(/^(\w{0})\w{2}(.*)$/, '$1' + val + '$2')
         this.formData.Code3 = this.formData.Code3.replace(/^(\w{0})\w{2}(.*)$/, '$1' + val + '$2')
         this.formData.Code4 = this.formData.Code4.replace(/^(\w{0})\w{2}(.*)$/, '$1' + val + '$2')
       },
-      Name2Change(val) {
+      Name2Change (val) {
         this.formData.Code3 = this.formData.Code3.replace(/^(\w{0})\w{4}(.*)$/, '$1' + val + '$2')
         this.formData.Code4 = this.formData.Code4.replace(/^(\w{0})\w{4}(.*)$/, '$1' + val + '$2')
       },
-      Name3Change(val) {
+      Name3Change (val) {
         this.formData.Code4 = this.formData.Code4.replace(/^(\w{0})\w{6}(.*)$/, '$1' + val + '$2')
       },
-      CodeNameEdit(val) {
+      CodeNameEdit (val) {
         this.myclassid = val.ClassId
         this.$axios.get('goodsaptitudeclass/getcodename/' + val.Code, {})
           .then(res => {
@@ -526,59 +526,59 @@
             console.log(err)
           })
       },
-      codeedit() {
+      codeedit () {
         api.updateCodeEntity(this.myclassid, this.formData, this.$axios).then(res => {
           if (res.data.code === 0) {
-            //保存成功后,初始化数据,变成修改
+            // 保存成功后,初始化数据,变成修改
             this.codeeditshow = false
-            this.initDatas();
-            this.$message({
+            this.initDatas()
+          this.$message({
               type: 'success',
               message: res.data.message
-            });
+            })
 
-          } else {
+        } else {
             this.$message({
               type: 'warning',
               message: res.data.message
-            });
-          }
+            })
+        }
         }).catch(err => {
           console.error(err)
-        });
-      },
-      exportExcel() {
+        })
+    },
+      exportExcel () {
         /* generate workbook object from table */
-        let table = document.querySelector("#rebateSetTable").cloneNode(true); //克隆备份(原table不动)
-        // 因为element-ui的表格的fixed属性导致多出一个table,会下载重复内容,这里删除掉
-        table.removeChild(table.querySelector(".el-table__fixed-right")) //删掉备份的子节点
+        let table = document.querySelector('#rebateSetTable').cloneNode(true) //克隆备份(原table不动)
+      // 因为element-ui的表格的fixed属性导致多出一个table,会下载重复内容,这里删除掉
+      table.removeChild(table.querySelector('.el-table__fixed-right')) // 删掉备份的子节点
         let wb = XLSX.utils.table_to_book(table, {
           raw: true
-        });
-        /* get binary string as output */
-        let wbout = XLSX.write(wb, {
-          bookType: "xlsx",
+        })
+      /* get binary string as output */
+      let wbout = XLSX.write(wb, {
+          bookType: 'xlsx',
           bookSST: true,
-          type: "array"
-        });
-        try {
+          type: 'array'
+        })
+      try {
           FileSaver.saveAs(
             new Blob([wbout], {
-              type: "application/octet-stream"
+              type: 'application/octet-stream'
             }),
-            "Goods.xlsx"
-          );
-        } catch (e) {
-          if (typeof console !== "undefined") console.log(e, wbout);
-        }
-        return wbout;
-      },
-      initTableHeader() {
+            'Goods.xlsx'
+          )
+      } catch (e) {
+          if (typeof console !== 'undefined') console.log(e, wbout)
+      }
+        return wbout
+    },
+      initTableHeader () {
         setapi.initGoodTableHeader(this.$axios).then(res => {
           this.dynamicTableColumns = res.data.items
         })
       },
-      saveApprovalDept() {
+      saveApprovalDept () {
         let organizeids = []
         let organize = this.$refs.operationOriganizeTree.getCheckedNodes()
         organize.forEach(row => {
@@ -603,7 +603,7 @@
           console.log(err)
         })
       },
-      deptSet(val) {
+      deptSet (val) {
         let stcode = this.setForm.SupplierTypeCode
         this.deptsetVisible = true
         this.selecteclassid = val.Id
@@ -623,13 +623,14 @@
             console.log(err)
           })
       },
-      initDatas() {
+      initDatas () {
         // 分页及列表条件
         let params = {
           _currentPage: this.currentPage,
           _size: this.size,
           Order: this.Column.Order,
-          Prop: this.Column.Prop
+          Prop: this.Column.Prop,
+          Edition: '1'
         }
         let myCreateOn = []
         // 解析时间
@@ -652,7 +653,7 @@
         })
       },
 
-      getDictOptions() {
+      getDictOptions () {
         api.getDictList(this.$axios).then(res => {
           this.AuditStepOptions = res.data.items['AuditStep']
           // this.dictOptions.customerList = res.data.items['customerList']
@@ -662,9 +663,7 @@
         })
       },
 
-
-
-      MoreCmdClick(cmd) {
+      MoreCmdClick (cmd) {
         if (cmd.Command === 'Set') {
           this.deptSet(cmd.row)
         } else if (cmd.Command === 'Delete') {
@@ -673,14 +672,14 @@
           this.CodeNameEdit(cmd.row)
         }
       },
-      GetCommand(cmdType, row) {
+      GetCommand (cmdType, row) {
         let cmd = {}
         cmd.Command = cmdType
         cmd.row = row
         return cmd
       },
 
-      searchCommand(command) {
+      searchCommand (command) {
         if (command === 'search') {
           this.dialogVisible = true
         } else if (command === 'clear') {
@@ -688,7 +687,7 @@
         }
       },
       // 列表排序功能
-      orderby(column) {
+      orderby (column) {
         if (column.order === 'ascending') {
           this.Column.Order = 'asc'
         } else if (column.order === 'descending') {
@@ -697,27 +696,27 @@
         this.Column.Prop = column.prop
         this.initDatas()
       },
-      clearSearch() {
+      clearSearch () {
         Object.assign(this.searchForm, this.searchFormReset)
         // this.searchForm = this.searchFormReset;
         this.CreateOn = ''
         this.initDatas()
       },
-      handleSearch() {
+      handleSearch () {
         this.currentPage = 1
         this.dialogVisible = false
         this.initDatas()
       },
-      handleCurrentChange(value) {
+      handleCurrentChange (value) {
         this.currentPage = value
         this.initDatas()
       },
-      handleSizeChange(value) {
+      handleSizeChange (value) {
         this.size = value
         this.currentPage = 1
         this.initDatas()
       },
-      deleteEntity(row) {
+      deleteEntity (row) {
         // row.deleteConfirmFlag = false
         this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
           confirmButtonText: '确定',
@@ -745,7 +744,7 @@
         })
       },
 
-      transferStr(val) {
+      transferStr (val) {
         if (val === '1') {
           return '是'
         }
@@ -756,7 +755,7 @@
         }
       },
 
-      jstimehandle(val) {
+      jstimehandle (val) {
         if (val === '') {
           return '----'
         } else if (val === '0001-01-01T08:00:00+08:00') {
@@ -769,7 +768,7 @@
         }
       },
 
-      formatDateTime(date) {
+      formatDateTime (date) {
         var y = date.getFullYear()
         var m = date.getMonth() + 1
         m = m < 10 ? ('0' + m) : m
@@ -782,7 +781,6 @@
       }
     }
   }
-
 </script>
 
 <style>

+ 320 - 0
src/dashoo.cn/frontend_web/src/pages/oilsupplier/goodsaptitude2019/_opera/operation.vue

@@ -0,0 +1,320 @@
+<template>
+  <div>
+    <el-breadcrumb class="heading">
+      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/oilsupplier/goodsaptitude' }">物资类项目与资质对照表</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;">
+          <el-button type="primary" size="mini" @click="saveEntity">保存</el-button>
+          <router-link :to="'/oilsupplier/goodsaptitude2019'">
+            <el-button type="primary" size="mini" style="margin-left: 8px">返回</el-button>
+          </router-link>
+        </span>
+      </div>
+      <el-form label-width="240px" ref="EntityForm" :model="formData">
+        <!-- <el-row>
+          <el-col :span="8">
+            <el-form-item label="编码" label-width="110px">
+              <el-input v-model="formData.Code" placeholder="请输入" style="width: 100%"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="名称" label-width="110px">
+              <el-input v-model="formData.Name" placeholder="请输入" style="width: 100%"></el-input>
+            </el-form-item>
+          </el-col>
+   
+        </el-row> -->
+        <el-row>
+          <el-col :span="6" v-for="(item,i) in dynamicTableColumns" :key="i">
+            <el-form-item :label="item.label">
+              <el-switch v-model="formData[item.prop]" active-value="1" inactive-value="0"></el-switch>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-card>
+   
+  </div>
+</template>
+
+<script>
+  import {
+    mapGetters
+  } from 'vuex'
+  import api from '@/api/oilsupplier/goodsaptitude'
+import setapi from '@/api/oilsupplier/oilclassorgset'
+  export default {
+    computed: {
+      ...mapGetters({
+        authUser: 'authUser'
+      })
+    },
+    name: 'oilgoodsaptitudeEdit',
+
+    data () {
+      return {
+        goodsDialog: false,
+        serviceId: '',
+        orgtreelist: [],
+        orgtreeprops: {
+          value: 'Id',
+          label: 'CodeName',
+          children: 'children',
+          isLeaf: 'Leaf'
+        },
+        auditerName: '',
+        classid: '',
+        formData: {
+          Id: '',
+          Code: '',
+          Name: '',
+          BigClassName: '',
+          MiddleClassName: '',
+          SmallClassName: '',
+          GoodsName: '',
+          GoodsLevel: '',
+          GoodsDesc: '',
+          Standard: '',
+          CompanyType: '',
+          F01: '',
+          F02: '',
+          F03: '',
+          F04: '',
+          F05: '',
+          F06: '',
+          F07: '',
+          F08: '',
+          F09: '',
+          F10: '',
+          F11: '',
+          F12: '',
+          F13: '',
+          F14: '',
+          F15: '',
+          F16: '',
+          F17: '',
+          F18: '',
+          F19: '',
+          F20: '',
+          F21: '',
+          F22: '',
+          F23: '',
+          F24: '',
+          F25: '',
+          F26: '',
+          F27: '',
+          F28: '',
+          F29: '',
+          F30: '',
+          F31: '',
+          F32: '',
+          F33: '',
+          F34: '',
+          F35: '',
+          F36: '',
+          F37: '',
+          F38: '',
+          F39: '',
+          F40: '',
+          F41: '',
+          F42: '',
+          F43: '',
+          F44: '',
+          F45: '',
+          F46: '',
+          Remark: '',
+          DeletionStateCode: '',
+          CreateOn: '',
+          CreateUserId: '',
+          CreateBy: '',
+          ModifiedOn: '',
+          ModifiedUserId: '',
+          ModifiedBy: ''
+        },
+        dynamicTableColumns: [],
+        checkList: []
+        // 下拉选择项
+        // wellNoOptions: [],
+        // supervisersOptions: [],
+
+      }
+    },
+    created () {
+      this.serviceId = this.$route.params.opera
+      this.getDictOptions()
+
+      if (this.serviceId != 'add' && this.serviceId > 0) {
+        this.formData.Id = this.serviceId
+        this.initDatas()
+      } else {
+        this.formData.Id = 0
+      }
+      this.initTableHeader()
+  },
+    methods: {
+      initTableHeader () {
+        setapi.initGoodTableHeader(this.$axios).then(res => {
+          this.dynamicTableColumns = res.data.items
+        })
+      },
+      selectgood () {
+        let val = this.$refs.orgmanagetree.getCheckedNodes()
+        this.checkList = []
+        for (var i = 0; i < val.length; i++) {
+          if (val[i].Code.length == 8) {
+            this.checkList.push(val[i])
+          }
+        }
+        if (this.checkList.length > 1) {
+          this.$message({
+            type: 'warning',
+            message: '只能选择一个分类!'
+          })
+          return
+        } else if (this.checkList.length == 1) {
+          this.auditerName = this.checkList[0].Name
+          this.formData.Code = this.checkList[0].Code
+          this.formData.Name = this.checkList[0].Name
+          this.classid = this.checkList[0].Id
+        }
+        this.goodsDialog = false
+      },
+      // 获取下一级所有分类
+      getChildrens (val, resolve) {
+        let Id = 0
+        if (val.level === 0) {
+          Id = 0
+        } else {
+          Id = val.data.Id
+        }
+        this.$axios.get('goodsaptitude/goodschildlistbypid/' + Id, {})
+          .then(res => {
+            if (!res.data.items || res.data.items.length <= 0) {
+              val.isLeaf = true
+              return resolve([])
+            }
+            for (let idx in res.data.items) {
+              res.data.items[idx].Leaf = res.data.items[idx].Leaf === '1'
+            }
+            return resolve(res.data.items)
+          })
+          .catch(err => {
+            console.error(err)
+          })
+      },
+      filterNode (value, data) {
+        if (!value) return true
+        return data.CodeName.indexOf(value) !== -1
+      },
+      initDatas () {
+        if (this.formData.Id) {
+          api.getEntity(this.formData.Id, this.$axios).then(res => {
+            console.log(this.formData)
+            this.formData = res.data
+          }).catch(err => {
+            console.error(err)
+          })
+        }
+      },
+
+      getDictOptions () {
+        api.getDictList(this.$axios).then(res => {
+          // this.wellNoOptions = res.data.items['WellNo']
+          // this.supervisersOptions = res.data.items['Supervisers']
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      // 保存信息
+      saveEntity () {
+        this.$refs['EntityForm'].validate((valid) => {
+          if (valid) {
+            // this.formData.WellNo = this.$refs.selectWellNo.selectedLabel + '';
+
+            if (!this.formData.Id) {
+              this.addEntity()
+            } else {
+              this.updateEntity()
+            }
+          } else {
+            return false
+          }
+        })
+      },
+
+      addEntity () {
+        api.addEntity(this.classid, this.formData, this.$axios).then(res => {
+          if (res.data.code === 0) {
+            // 保存成功后,初始化数据,变成修改
+            this.formData.Id = res.data.item
+            this.initDatas()
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            })
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            })
+          }
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      updateEntity () {
+        api.updateEntity(this.formData.Id, this.formData, 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)
+        })
+      },
+
+      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>

+ 329 - 0
src/dashoo.cn/frontend_web/src/pages/oilsupplier/goodsaptitude2019/index.vue

@@ -0,0 +1,329 @@
+<template>
+  <div>
+    <el-breadcrumb class="heading">
+      <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/oilsupplier/goodsaptitude' }">物资类项目与资质对照表</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>
+
+        <el-form ref="form"
+                 :inline="true"
+                 style="float: right; margin-top: -10px">
+          <el-form-item label="编码">
+            <el-input size="mini"
+                      v-model="Code"
+                      style="width:100%"
+                      placeholder="请输入"></el-input>
+          </el-form-item>
+
+          <el-form-item label="名称">
+            <el-input size="mini"
+                      v-model="Name"
+                      style="width:100%"
+                      placeholder="请输入"></el-input>
+          </el-form-item>
+
+          <el-form-item>
+            <el-dropdown split-button
+                         type="primary"
+                         size="mini"
+                         @click="initDatas"
+                         @command="searchCommand">
+              查询
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="clear">查询重置</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+            <!-- <router-link :to="'/oilsupplier/goodsaptitude/add/operation'">
+              <el-button type="primary"
+                         size="mini"
+                         style="margin-left:10px; margin-top: -4px;">添加</el-button>
+            </router-link> -->
+            <el-button type="primary"
+                       size="mini"
+                       style="margin-left:10px; margin-top: -4px;"
+                       @click="exportExcel">导出
+            </el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-table id="rebateSetTable"
+                :data="entityList"
+                size="mini"
+                border
+                height="calc(100vh - 243px)"
+                style="width: 100%"
+                @sort-change="orderby">
+        <el-table-column label="操作"
+                         min-width="200"
+                         align="center"
+                         fixed="right">
+          <template slot-scope="scope">
+            <router-link :to="'/oilsupplier/goodsaptitude2019/' + scope.row.Id + '/operation'">
+              <el-button type="primary"
+                         plain
+                         title="编辑"
+                         size="mini">编辑</el-button>
+            </router-link>
+          </template>
+        </el-table-column>
+
+        <el-table-column v-for="column in tableColumns"
+                         :prop="column.prop"
+                         sortable
+                         :width="column.width"
+                         :key="column.Id"
+                         :label="column.label"
+                         align="center"
+                         show-overflow-tooltip>
+        </el-table-column>
+
+        <!--动态显示的表头-->
+        <el-table-column v-for="column in dynamicTableColumns"
+                         :prop="column.prop"
+                         sortable
+                         :width="320"
+                         :key="column.Id"
+                         :label="column.label"
+                         align="center"
+                         show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{ transferStr(scope.row[column.prop]) }}
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination @size-change="handleSizeChange"
+                     @current-change="handleCurrentChange"
+                     :current-page="currentPage"
+                     :page-sizes="[10, 50, 100, 200, 400]"
+                     :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/goodsaptitude'
+import setapi from '@/api/oilsupplier/oilclassorgset'
+import FileSaver from 'file-saver'
+import XLSX from 'xlsx'
+
+export default {
+  computed: {
+    ...mapGetters({
+      authUser: 'authUser'
+    })
+  },
+  name: 'oilgoodsaptitude2019',
+
+  data () {
+    return {
+      Code: '',
+      Name: '',
+      // 列表数据
+      entityList: [],
+      // 分页参数
+      size: 10,
+      currentPage: 1,
+      currentItemCount: 0,
+      // 列表排序
+      Column: {
+        Order: '',
+        Prop: ''
+      },
+
+      tableColumns: [
+        {
+          prop: 'Code',
+          label: '编码',
+          width: 120,
+          sort: true
+        },
+
+        {
+          prop: 'Name',
+          label: '名称',
+          width: 150,
+          sort: true
+        },
+
+        {
+          prop: 'GoodsLevel',
+          label: '物资级别',
+          width: 110,
+          sort: true
+        },
+
+        {
+          prop: 'GoodsDesc',
+          label: '产品说明',
+          width: 110,
+          sort: true
+        },
+
+        {
+          prop: 'Standard',
+          label: '标准备案',
+          width: 110,
+          sort: true
+        },
+
+        {
+          prop: 'CompanyType',
+          label: '供应商类型',
+          width: 130,
+          sort: true
+        }
+
+      ],
+      dynamicTableColumns: []
+    }
+  },
+  created () {
+    this.initTableHeader()
+    // 查询列表
+    this.initDatas()
+  },
+  methods: {
+    searchCommand (command) {
+      if (command === 'search') {
+        this.dialogVisible = true
+      } else if (command === 'clear') {
+        this.clearSearch()
+      }
+    },
+    clearSearch () {
+      this.size = 10
+      this.currentPage = 1
+      this.currentItemCount = 0
+      this.Name = ''
+      this.Code = ''
+      this.initDatas()
+    },
+    exportExcel () {
+      /* generate workbook object from table */
+      let table = document.querySelector('#rebateSetTable').cloneNode(true) // 克隆备份(原table不动)
+      // 因为element-ui的表格的fixed属性导致多出一个table,会下载重复内容,这里删除掉
+      table.removeChild(table.querySelector('.el-table__fixed-right')) // 删掉备份的子节点
+      let wb = XLSX.utils.table_to_book(table, {
+        raw: true
+      })
+      /* get binary string as output */
+      let wbout = XLSX.write(wb, {
+        bookType: 'xlsx',
+        bookSST: true,
+        type: 'array'
+      })
+      try {
+        FileSaver.saveAs(
+          new Blob([wbout], {
+            type: 'application/octet-stream'
+          }),
+          'Goods.xlsx'
+        )
+      } catch (e) {
+        if (typeof console !== 'undefined') console.log(e, wbout)
+      }
+      return wbout
+    },
+    initTableHeader () {
+      setapi.initGoodTableHeader(this.$axios).then(res => {
+        this.dynamicTableColumns = res.data.items
+      })
+    },
+    initDatas () {
+      // 分页及列表条件
+      let params = {
+        _currentPage: this.currentPage,
+        _size: this.size,
+        Order: this.Column.Order,
+        Prop: this.Column.Prop,
+        Edition: '2',
+        Code: this.Code,
+        Name: this.Name
+      }
+
+      // 访问接口
+      api.get2019List(params, this.$axios).then(res => {
+        this.entityList = res.data.items
+        this.currentItemCount = res.data.currentItemCount
+      }).catch(err => {
+        console.error(err)
+      })
+    },
+
+    // 列表排序功能
+    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()
+    },
+
+    transferStr (val) {
+      if (val === '1') {
+        return '是'
+      }
+      if (val === '0') {
+        return ''
+      } else {
+        return val
+      }
+    },
+
+    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>
+.el-col {
+  margin-bottom: 5px;
+}
+</style>