Преглед на файлове

Signed-off-by: 段小段 <1729609802@qq.com>

段小段 преди 3 години
родител
ревизия
ef7e8681bc

+ 9 - 5
src/views/formulationPlan/dailyExecutionPlan/index.vue

@@ -509,7 +509,7 @@
 
     <!-- 新生成 -->
     <el-dialog :title="textMap[newGeneration.dialogStatus]" :destroy-on-close="true" :visible.sync="newGeneration.dialogFormVisible" :close-on-click-modal="false" width="30%">
-      <div class="newGeneration">
+      <div class="newGeneration" v-loading="newGenerationLoading" >
         <el-form ref="temp" :rules="newGeneration.rules" :model="newGeneration.temp" label-position="right" label-width="100px" style="width: 100%;margin:0 auto 50px">
           <el-row v-if="newGeneration.dialogStatus== 'newGeneration'">
             <el-col :span="24">
@@ -526,7 +526,7 @@
             </el-col>
           </el-row>
         </el-form>
-        <div slot="footer" class="dialog-footer" style="bottom:10px">
+        <div slot="footer" class="dialog-footer" style="bottom:20px">
           <el-button class="cancelClose" @click="newGeneration.dialogFormVisible = false;getList()">取消</el-button>
           <el-button v-if="newGeneration.dialogStatus== 'newGeneration'" class="save" :disabled="isokDisable" @click="newGenerationData()">确认</el-button>
           <el-button v-else class="save" :disabled="isokDisable" @click="copyData()">确认</el-button>
@@ -587,6 +587,7 @@ export default {
   },
   data() {
     return {
+      newGenerationLoading:false,
       dialogFull: false,
       isRoleEdit: [],
       dataDisabled: false,
@@ -803,7 +804,7 @@ export default {
     },
     getDataSynchronization() {
       GetDataByName(this.dataSynchronization.getdataListParm).then(response => {
-        console.log(response.data.list[0])
+        // console.log(response.data.list[0])
         if (response.data.list[0].inforvalue == 0) {
           this.dataSynchronization.isDataSynchronization = false
         } else {
@@ -1280,7 +1281,8 @@ export default {
       return iDays
     },
     newGenerationData() {
-      console.log('点击了新生成保存', this.newGeneration.temp)
+      console.log('点击了新生成保存', this.newGeneration.temp)
+      this.newGenerationLoading = true
       this.isokDisable = true
       this.$refs['temp'].validate(valid => {
         if (valid) {
@@ -1308,11 +1310,13 @@ export default {
             if (response.msg === 'fail') {
               this.$notify({ title: '保存失败', message: response.data, type: 'warning', duration: 2000 })
               this.isokDisable = false
+              this.newGenerationLoading = false
             } else {
               this.$notify({ title: '', message: '保存成功', type: 'success', duration: 2000 })
               this.newGeneration.dialogFormVisible = false
               this.getList()
-              this.isokDisable = false
+              this.isokDisable = false
+              this.newGenerationLoading = false
             }
           })
         }

+ 22 - 8
src/views/inventoryManagement/inventoryList/index.vue

@@ -64,9 +64,11 @@
             <span>{{ scope.row.remark }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="操作" align="center" width="80" class-name="small-padding fixed-width" fixed="right">
+        <el-table-column label="操作" align="center" width="100" class-name="small-padding fixed-width" fixed="right">
           <template slot-scope="scope">
-            <el-button class="miniSuccess" :disabled="isokDisable" icon="el-icon-search" @click="handleSee(scope.row)" />
+            <el-button class="miniSuccess" :disabled="isokDisable" icon="el-icon-search" @click="handleSee(scope.row)" />
+            <span v-if="scope.$index + (table.pageNum-1) * table.pageSize + 1 == 1 && isRoleEdit" class="centerSpan">|</span>
+            <el-button v-if="scope.$index + (table.pageNum-1) * table.pageSize + 1 == 1 && isRoleEdit" icon="el-icon-edit-outline" class="miniSuccess" @click="handleUpdate(scope.row)" />
             <span v-if="scope.$index + (table.pageNum-1) * table.pageSize + 1 == 1 && isRoleEdit" class="centerSpan">|</span>
             <el-button v-if="scope.$index + (table.pageNum-1) * table.pageSize + 1 == 1 && isRoleEdit" icon="el-icon-delete" class="miniDanger" @click="handleRowDelete(scope.row)" />
           </template>
@@ -94,7 +96,6 @@
           <el-row>
             <el-col :span="8">
               <el-form-item label="盘点日期:" prop="inventorydate">
-                <!-- :picker-options="create.pickerOptions2" -->
                 <el-date-picker v-model="create.createTemp.inventorydate" class="filter-item" type="date" placeholder="盘点日期" :disabled="create.dialogStatus==='see'" :picker-options="create.pickerOptions1" :clearable="false" />
               </el-form-item>
             </el-col>
@@ -135,7 +136,7 @@
           </el-table-column>
           <el-table-column label="实际重量(kg)" min-width="110px" align="center">
             <template slot-scope="scope">
-              <el-input v-if="create.dialogStatus==='create'" ref="input" v-model="scope.row.factweight" style="width:80%;padding:10px 0;" @blur="blurFactweight(scope.row)" />
+              <el-input v-if="create.dialogStatus =='create' || create.dialogStatus=='update'" ref="input" v-model="scope.row.factweight" style="width:80%;padding:10px 0;" @blur="blurFactweight(scope.row)" />
               <span v-else> {{ scope.row.factweight }}</span>
             </template>
           </el-table-column>
@@ -148,8 +149,8 @@
         <div slot="footer" class="dialog-footer">
           <el-button v-if="create.dialogStatus==='see'" class="import" icon="el-icon-upload2" :disabled="isokDisable" @click="handleExport(2)">导出</el-button>
           <el-button v-if="create.dialogStatus==='see'" class="cancelClose cancelClose1" @click="create.dialogFormVisible = false; ">关闭</el-button>
-          <el-button v-if="create.dialogStatus==='create'" class="cancelClose" @click="create.dialogFormVisible = false; ">关闭</el-button>
-          <el-button v-if="create.dialogStatus==='create'" class="save" :disabled="isokDisable" @click="createData()">确认</el-button>
+          <el-button v-if="create.dialogStatus =='create' || create.dialogStatus=='update'" class="cancelClose" @click="create.dialogFormVisible = false; ">关闭</el-button>
+          <el-button v-if="create.dialogStatus =='create' || create.dialogStatus=='update'" class="save" :disabled="isokDisable" @click="create.dialogStatus==='create'?createData():updateData()">确认</el-button>
         </div>
       </div>
     </el-dialog>
@@ -192,7 +193,8 @@ export default {
       },
       textMap: {
         create: '新增',
-        see: '查看盘点单'
+        see: '查看盘点单',
+        update:'编辑'
       },
       create: {
         pickerOptions1: {
@@ -476,7 +478,6 @@ export default {
     },
     getSeeList() {
       this.create.listLoading = true
-
       GetDataByName(this.see.getdataListParm).then(response => {
         console.log('table数据', response.data.list)
         if (response.data.list !== null) {
@@ -511,6 +512,19 @@ export default {
       }).catch(() => {
         this.$message({ type: 'info', message: '已取消删除' })
       })
+    },
+    handleUpdate(row){
+      console.log('点击了编辑')
+      this.dialogFull = false
+      this.create.dialogStatus = 'update'
+      this.create.dialogFormVisible = true
+      this.create.createTemp = Object.assign({}, row)
+      this.see.getdataListParm.parammaps.pastureid = row.pastureid
+      this.see.getdataListParm.parammaps.id = row.id
+      this.getSeeList()
+    },
+    updateData(){
+      console.log('点击了编辑保存')
     },
     handleInventoryList() {
       this.download.getdataListParm.name = 'getFeedstorageWeightList'

+ 657 - 0
src/views/inventoryManagement/inventoryList/index备.vue

@@ -0,0 +1,657 @@
+<template>
+  <div class="app-container">
+    <div class="search">
+      <el-date-picker v-model="table.getdataListParm.parammaps.inputDatetime" class="inputDatetime filter-item" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width: 250px;" />
+      <el-button class="el-icon-arrow-left elIconArrowLeft" @click="handleBefore" />
+      <el-button class="el-icon-arrow-right elIconArrowRight" @click="handleNext" />
+      <el-button class="successBorder" @click="handleSearch">查询</el-button>
+    </div>
+    <div class="operation">
+      <el-button v-if="isRoleEdit" class="success" icon="el-icon-plus" @click="handleCreate">新增盘点单</el-button>
+      <el-button class="success" icon="el-icon-upload2" @click="handleInventoryList">下载盘点单</el-button>
+      <el-upload style="float: right;" :headers="headers" :data="uploadData" :action="uploadExcelUrl" :show-file-list="false" :before-upload="beforeImport" :on-success="handleImportSuccess">
+        <el-button v-if="isRoleEdit" class="import" icon="el-icon-download" style="float: right;">导入</el-button>
+      </el-upload>
+      <el-button class="import" icon="el-icon-upload2" style="float: right;margin-right: 10px;" @click="handleExport(1)">导出</el-button>
+    </div>
+
+    <div class="table">
+      <el-table
+        :key="table.tableKey"
+        v-loading="table.listLoading"
+        element-loading-text="给我一点时间"
+        :data="table.list"
+        border
+        fit
+        highlight-current-row
+        style="width: 100%;"
+        :row-style="rowStyle"
+        :cell-style="cellStyle"
+        class="elTable table-fixed"
+      >
+        <el-table-column label="序号" align="center" type="index" width="50px">
+          <template slot-scope="scope">
+            <span>{{ scope.$index + (table.pageNum-1) * table.pageSize + 1 }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="盘点日期" min-width="130px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.inventorydate }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="盘点人" min-width="130px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.createuser }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="盘盈库存(kg)" min-width="110px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.moreWeight }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="盘亏库存(kg)" min-width="110px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.lessWeight }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="盈亏净值(kg)" min-width="110px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.differWeight }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="备注" min-width="110px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.remark }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center" width="80" class-name="small-padding fixed-width" fixed="right">
+          <template slot-scope="scope">
+            <el-button class="miniSuccess" :disabled="isokDisable" icon="el-icon-search" @click="handleSee(scope.row)" />
+            <span v-if="scope.$index + (table.pageNum-1) * table.pageSize + 1 == 1 && isRoleEdit" class="centerSpan">|</span>
+            <el-button v-if="scope.$index + (table.pageNum-1) * table.pageSize + 1 == 1 && isRoleEdit" icon="el-icon-delete" class="miniDanger" @click="handleRowDelete(scope.row)" />
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination v-show="table.total>=0" :total="table.total" :page.sync="table.getdataListParm.offset" :limit.sync="table.getdataListParm.pagecount" @pagination="getList" />
+    </div>
+
+    <!-- 新增盘点单 -->
+    <el-dialog :fullscreen="dialogFull" :visible.sync="create.dialogFormVisible" :close-on-click-modal="false" width="90%">
+      <template slot="title">
+        <div class="avue-crud__dialog__header">
+          <span class="el-dialog__title">
+            <span style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px" />
+            {{ textMap[create.dialogStatus] }}
+          </span>
+          <div class="avue-crud__dialog__menu" @click="dialogFull? dialogFull=false: dialogFull=true">
+            <svg-icon v-if="dialogFull" icon-class="exit-fullscreen" />
+            <svg-icon v-else icon-class="fullscreen" />
+          </div>
+        </div>
+      </template>
+      <div class="app-add">
+        <el-form ref="createTemp" :rules="create.rules" :model="create.createTemp" label-position="right" label-width="160px" style="width: 90%;margin:0 auto">
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="盘点日期:" prop="inventorydate">
+                <!-- :picker-options="create.pickerOptions2" -->
+                <el-date-picker v-model="create.createTemp.inventorydate" class="filter-item" type="date" placeholder="盘点日期" :disabled="create.dialogStatus==='see'" :picker-options="create.pickerOptions1" :clearable="false" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="盘点人:" prop="createuser">
+                <el-input ref="createuser" v-model="create.createTemp.createuser" class="filter-item" placeholder="盘点人" type="text" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="备注:" prop="remark">
+                <el-input ref="remark" v-model="create.createTemp.remark" class="filter-item" placeholder="备注" type="text" :disabled="create.dialogStatus==='see'" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <el-table
+          :key="create.tableKey"
+          v-loading="create.listLoading"
+          element-loading-text="给我一点时间"
+          :data="create.list"
+          border
+          fit
+          highlight-current-row
+          style="width: 100%;margin-bottom: 50px;"
+          :row-style="rowStyle"
+          :cell-style="cellStyle"
+          class="elTable table-fixed"
+        >
+          <el-table-column label="饲料名称" min-width="130px" align="center">
+            <template slot-scope="scope">
+              <span>{{ scope.row.feedname }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="库存重量(kg)" min-width="130px" align="center">
+            <template slot-scope="scope">
+              <span>{{ scope.row.stockweight }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="实际重量(kg)" min-width="110px" align="center">
+            <template slot-scope="scope">
+              <el-input v-if="create.dialogStatus==='create'" ref="input" v-model="scope.row.factweight" style="width:80%;padding:10px 0;" @blur="blurFactweight(scope.row)" />
+              <span v-else> {{ scope.row.factweight }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="差值(kg)" min-width="110px" align="center">
+            <template slot-scope="scope">
+              <span>{{ scope.row.differ }}</span>
+            </template>
+          </el-table-column>
+        </el-table>
+        <div slot="footer" class="dialog-footer">
+          <el-button v-if="create.dialogStatus==='see'" class="import" icon="el-icon-upload2" :disabled="isokDisable" @click="handleExport(2)">导出</el-button>
+          <el-button v-if="create.dialogStatus==='see'" class="cancelClose cancelClose1" @click="create.dialogFormVisible = false; ">关闭</el-button>
+          <el-button v-if="create.dialogStatus==='create'" class="cancelClose" @click="create.dialogFormVisible = false; ">关闭</el-button>
+          <el-button v-if="create.dialogStatus==='create'" class="save" :disabled="isokDisable" @click="createData()">确认</el-button>
+        </div>
+      </div>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import { GetDataByName, ExecDataByConfig, failproccess, checkButtons, PostDataByName } from '@/api/common'
+import Pagination from '@/components/Pagination'
+import { parseTime, json2excel } from '@/utils/index.js'
+import { MessageBox } from 'element-ui'
+import Cookies from 'js-cookie'
+import axios from 'axios'
+import { getToken } from '@/utils/auth'
+export default {
+  name: 'InventoryList',
+  components: { Pagination },
+  data() {
+    return {
+      dialogFull: false,
+      table: {
+        getdataListParm: {
+          name: 'getBigInventoryList',
+          page: 1,
+          offset: 1,
+          pagecount: parseInt(Cookies.get('pageCount')),
+          returntype: 'Map',
+          parammaps: {
+            pastureid: Cookies.get('pastureid'),
+            startTime: '',
+            stopTime: '',
+            inputDatetime: ''
+          }
+        },
+        tableKey: 0,
+        list: [],
+        total: 0,
+        listLoading: true
+      },
+      textMap: {
+        create: '新增',
+        see: '查看盘点单'
+      },
+      create: {
+        pickerOptions1: {
+          disabledDate: this.disabledDate
+        },
+        dialogFormVisible: false,
+        dialogStatus: '',
+        createTemp: {
+          pastureid: Cookies.get('pastureid'),
+          remark: '',
+          inventorydate: parseTime(new Date(), '{y}-{m}-{d}'),
+          createuser: Cookies.get('employename')
+        },
+        rules: {},
+        getdataListParm: {
+          name: 'getFeedstorageWeightList',
+          page: 1,
+          offset: 1,
+          pagecount: '',
+          returntype: 'Map',
+          parammaps: {
+            pastureid: Cookies.get('pastureid'),
+            emp: Cookies.get('employename')
+          }
+        },
+        tableKey: 0,
+        list: [],
+        total: 0,
+        listLoading: true,
+        getMaxdataParm: {
+          name: 'getInventoryMaxdate',
+          page: 1,
+          offset: 1,
+          pagecount: '',
+          returntype: 'Map',
+          parammaps: {
+            pastureid: Cookies.get('pastureid')
+          }
+        },
+        maxDate: ''
+      },
+      see: {
+        getdataListParm: {
+          name: 'getInventoryList',
+          page: 1,
+          offset: 1,
+          pagecount: '',
+          returntype: 'Map',
+          parammaps: {}
+        }
+      },
+      requestParam: {},
+      download: {
+        getdataListParm: {
+          name: 'getBigInventoryList',
+          page: 1,
+          offset: 1,
+          pagecount: 0,
+          returntype: 'Map',
+          parammaps: {
+            pastureid: Cookies.get('pastureid'),
+            startTime: '',
+            stopTime: '',
+            inputDatetime: ''
+          }
+        },
+        list: []
+      },
+      isokDisable: false,
+      isRoleEdit: [],
+      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
+      cellStyle: { padding: 0 + 'px' }
+    }
+  },
+  computed: {
+    // 设置请求头
+    headers() {
+      return {
+        token: getToken()
+      }
+    },
+    uploadData() {
+      return {
+        name: 'checkFeed,insertBigInventoryUpload,insertInventoryUpload',
+        importParams: '盘点日期,盘点人,备注,饲料名称,库存重量(kg),实际重量(kg)',
+        sheetname: 'Sheet1',
+        // 登录牧场
+        pastureid: Cookies.get('pastureid'),
+        // 日期参数
+        dateParams: '盘点日期',
+        // 必填参数
+        requiredParams: '盘点日期,饲料名称,库存重量(kg),实际重量(kg)',
+        // 为数值的参数
+        numParams: '实际重量(kg)'
+      }
+    },
+    // 设置上传地址
+    uploadExcelUrl() {
+      return process.env.VUE_APP_BASE_API + 'authdata/ImportExcel'
+    }
+  },
+  created() {
+    this.getButtons()
+    this.getList()
+  },
+
+  methods: {
+    getButtons() {
+      const Edit = 'InventoryList'
+      const isRoleEdit = checkButtons(JSON.parse(sessionStorage.getItem('buttons')), Edit)
+      this.isRoleEdit = isRoleEdit
+    },
+    handleBefore() {
+      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
+        var start = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() - 1))
+        var stop = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() - 1))
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
+        this.table.getdataListParm.parammaps.startTime = parseTime(start, '{y}-{m}-{d}')
+        this.table.getdataListParm.parammaps.stopTime = parseTime(stop, '{y}-{m}-{d}')
+        this.$forceUpdate()
+      }
+    },
+    handleNext() {
+      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
+        var start = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1))
+        var stop = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1))
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
+        this.table.getdataListParm.parammaps.startTime = parseTime(start, '{y}-{m}-{d}')
+        this.table.getdataListParm.parammaps.stopTime = parseTime(stop, '{y}-{m}-{d}')
+        this.$forceUpdate()
+      }
+    },
+    handleSearch() {
+      console.log('点击了查询')
+      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
+        this.table.getdataListParm.parammaps.startTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
+        this.table.getdataListParm.parammaps.stopTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
+      } else {
+        this.table.getdataListParm.parammaps.inputDatetime = ''
+        this.table.getdataListParm.parammaps.startTime = ''
+        this.table.getdataListParm.parammaps.stopTime = ''
+      }
+      this.table.getdataListParm.offset = 1
+      this.getList()
+    },
+    getList() {
+      this.table.listLoading = true
+      GetDataByName(this.table.getdataListParm).then(response => {
+        console.log('table数据', response.data.list)
+        if (response.data.list !== null) {
+          this.table.list = response.data.list
+          this.table.pageNum = response.data.pageNum
+          this.table.pageSize = response.data.pageSize
+          this.table.total = response.data.total
+        } else {
+          this.table.list = []
+        }
+        setTimeout(() => {
+          this.table.listLoading = false
+        }, 100)
+      })
+    },
+
+    resetCreateTemp() {
+      this.create.createTemp = { pastureid: Cookies.get('pastureid'), remark: '', inventorydate: parseTime(new Date(), '{y}-{m}-{d}'), createuser: Cookies.get('employename') }
+    },
+    handleCreate() {
+      console.log('点击了新增盘点单')
+      this.resetCreateTemp()
+      this.dialogFull = false
+      this.create.dialogStatus = 'create'
+      this.create.dialogFormVisible = true
+      this.getMaxDate()
+      this.getCreateList()
+    },
+    disabledDate(time) {
+      return time.getTime() < new Date(this.create.maxDate) || time.getTime() > Date.now()
+    },
+    getMaxDate() {
+      GetDataByName(this.create.getMaxdataParm).then(response => {
+        this.create.maxDate = response.data.list[0].maxdate
+        console.log(response.data.list[0])
+      })
+    },
+    getCreateList() {
+      this.create.listLoading = true
+      GetDataByName(this.create.getdataListParm).then(response => {
+        console.log('table数据', response.data.list)
+        if (response.data.list !== null) {
+          for (let i = 0; i < response.data.list.length; i++) {
+            this.$set(response.data.list[i], 'factweight', '')
+            this.$set(response.data.list[i], 'differ', '')
+          }
+          this.create.list = response.data.list
+          this.create.pageNum = response.data.pageNum
+          this.create.pageSize = response.data.pageSize
+          this.create.total = response.data.total
+        } else {
+          this.create.list = []
+        }
+        setTimeout(() => {
+          this.create.listLoading = false
+        }, 100)
+      })
+    },
+    // 实际重量
+    blurFactweight(row) {
+      if (row.factweight !== '' && row.stockweight !== '') {
+        row.differ = parseFloat(row.factweight) - parseFloat(row.stockweight)
+      }
+    },
+    createData() {
+      this.$refs['createTemp'].validate(valid => {
+        if (valid) {
+          this.isokDisable = true
+          setTimeout(() => {
+            this.isokDisable = false
+          }, 1000)
+          var createList = []
+          for (let i = 0; i < this.create.list.length; i++) {
+            if (this.create.list[i].factweight !== '') {
+              createList.push(this.create.list[i])
+            }
+          }
+          for (let i = 0; i < createList.length; i++) {
+            const keepTwoNum = /^\d+(\.\d{1,2})?$/
+            // 实际重量
+            if (!keepTwoNum.test(parseFloat(createList[i].factweight))) {
+              this.$message({ type: 'error', message: '实际重量请输入自然数并保留两位小数', duration: 2000 })
+              return false
+            }
+          }
+
+          this.requestParam.common = { 'returnmap': '0' }
+          this.requestParam.data = []
+          this.requestParam.data[0] = { 'name': 'insertBigInventory', 'type': 'e', 'parammaps': {
+            'pastureid': this.create.createTemp.pastureid,
+            'inventorydate': parseTime(this.create.createTemp.inventorydate, '{y}-{m}-{d}'),
+            'createuser': this.create.createTemp.createuser,
+            'remark': this.create.createTemp.remark
+          }}
+          this.requestParam.data[1] = { 'name': 'insertSpotList', 'resultmaps': { 'list': createList }}
+          this.requestParam.data[1].children = []
+          this.requestParam.data[1].children[0] = { 'name': 'insertInventory', 'type': 'e', 'parammaps': {
+            invid: '@insertBigInventory.LastInsertId',
+            pastureid: '@insertSpotList.pastureid',
+            feedname: '@insertSpotList.feedname',
+            feedid: '@insertSpotList.feedid',
+            stockweight: '@insertSpotList.stockweight',
+            factweight: '@insertSpotList.factweight'
+          }}
+          ExecDataByConfig(this.requestParam).then(response => {
+            if (response.msg === 'fail') {
+              const inventorydate = new RegExp("key 'inventorydate'")
+              if (inventorydate.test(response.data)) {
+                this.$message({ type: 'error', message: '当前日期已盘点,不可重复录入', duration: 2000 })
+              } else {
+                this.$notify({ title: '保存失败', message: response.data, type: 'warning', duration: 2000 })
+              }
+            } else {
+              this.$notify({ title: '', message: '成功', type: 'success', duration: 2000 })
+              this.create.dialogFormVisible = false
+              this.getList()
+            }
+          })
+        }
+      })
+    },
+
+    handleSee(row) {
+      console.log('点击了查看')
+      this.dialogFull = false
+      this.create.dialogStatus = 'see'
+      this.create.dialogFormVisible = true
+      this.create.createTemp = Object.assign({}, row)
+      this.see.getdataListParm.parammaps.pastureid = row.pastureid
+      this.see.getdataListParm.parammaps.id = row.id
+      this.getSeeList()
+    },
+    getSeeList() {
+      this.create.listLoading = true
+
+      GetDataByName(this.see.getdataListParm).then(response => {
+        console.log('table数据', response.data.list)
+        if (response.data.list !== null) {
+          this.create.list = response.data.list
+          this.create.pageNum = response.data.pageNum
+          this.create.pageSize = response.data.pageSize
+          this.create.total = response.data.total
+        } else {
+          this.create.list = []
+        }
+        setTimeout(() => {
+          this.create.listLoading = false
+        }, 100)
+      })
+    },
+    handleRowDelete(row) {
+      MessageBox.confirm('是否确认删除此信息?', {
+        confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning'
+      }).then(() => {
+        this.requestParam.name = 'deleteBigInventory'
+        this.requestParam.parammaps = {}
+        this.requestParam.parammaps.pastureid = row.pastureid
+        this.requestParam.parammaps.id = row.id
+        PostDataByName(this.requestParam).then(response => {
+          if (response.msg === 'fail') {
+            this.$notify({ title: '删除失败', message: response.data, type: 'warning', duration: 2000 })
+          } else {
+            this.$notify({ title: '成功', message: '删除成功', type: 'success', duration: 2000 })
+            this.getList()
+          }
+        })
+      }).catch(() => {
+        this.$message({ type: 'info', message: '已取消删除' })
+      })
+    },
+    handleInventoryList() {
+      this.download.getdataListParm.name = 'getFeedstorageWeightList'
+      this.download.getdataListParm.parammaps = {}
+      this.download.getdataListParm.parammaps.pastureid = Cookies.get('pastureid')
+      this.download.getdataListParm.parammaps.emp = Cookies.get('employename')
+      GetDataByName(this.download.getdataListParm).then(response => {
+        if (response.data.list !== null) {
+          this.download.list = response.data.list
+        } else {
+          this.download.list = []
+        }
+        var downloadList = [
+          { 'obj1': '1、文件类型为xlsx类型,对应表格文件名格式为:文件名称.xlsx;' },
+          { 'obj1': '2、底部工作表名称不可更改,默认为:Sheet1;' },
+          { 'obj1': '3、盘点日期,饲料名称为必填;' },
+          { 'obj1': '4、饲料名称必须与系统基础数据-饲料表中匹配;' },
+          { 'obj1': '5、实际重量为非负数,至多保留俩位小数;' },
+          { 'obj1': '6、盘点日期为文本格式的年-月-日,例:2020-10-10,盘点日期不可与系统已存在日期重复;盘点日期需保持一致' },
+          { 'obj1': '7、库存重量仅做参考,不与系统现有库存做校验;' },
+          { 'obj1': '8、实际重量可仅填写部分,导入已填写实际重量的饲料生成盘点单。' },
+          { 'obj1': '9、若有备注则填写在表格内容中第一个饲料行内即可;' }
+        ]
+        var excelDatas = [
+          {
+            tHeader: ['盘点日期', '盘点人', '备注', '饲料名称', '库存重量(kg)', '实际重量(kg)'],
+            filterVal: ['nowdate', 'emp', '', 'feedname', 'stockweight', ''],
+            tableDatas: this.download.list,
+            sheetName: 'Sheet1'
+          }, {
+            tHeader: ['填写规范:'],
+            filterVal: ['obj1'],
+            tableDatas: downloadList,
+            sheetName: 'Sheet2'
+          }
+        ]
+        json2excel(excelDatas, '盘点单导入模板', true, 'xlsx')
+      })
+    },
+    handleExport(item) {
+      if (item == 1) {
+        this.download.getdataListParm.parammaps.inputDatetime = this.table.getdataListParm.parammaps.inputDatetime
+        if (this.download.getdataListParm.parammaps.inputDatetime !== '' && this.download.getdataListParm.parammaps.inputDatetime !== null) {
+          this.download.getdataListParm.parammaps.startTime = parseTime(this.download.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
+          this.download.getdataListParm.parammaps.stopTime = parseTime(this.download.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
+        } else {
+          this.download.getdataListParm.parammaps.inputDatetime = ''
+          this.download.getdataListParm.parammaps.startTime = ''
+          this.download.getdataListParm.parammaps.stopTime = ''
+        }
+        this.download.getdataListParm.name = 'getBigInventoryList'
+        GetDataByName(this.download.getdataListParm).then(response => {
+          if (response.data.list !== null) {
+            this.download.list = response.data.list
+          } else {
+            this.download.list = []
+          }
+          var excelDatas = [
+            {
+              tHeader: ['盘点日期', '盘点人', '盘盈库存(kg)', '盘亏库存(kg)', '盈亏净值(kg)', '备注'],
+              filterVal: ['inventorydate', 'createuser', 'moreWeight', 'lessWeight', 'differWeight', 'remark'],
+              tableDatas: this.download.list,
+              sheetName: 'Sheet1'
+            }
+          ]
+          json2excel(excelDatas, '盘点单', true, 'xlsx')
+        })
+      } else {
+        this.download.getdataListParm.name = 'getInventoryList'
+        this.download.getdataListParm.parammaps = this.see.getdataListParm.parammaps
+        GetDataByName(this.download.getdataListParm).then(response => {
+          for (let i = 0; i < response.data.list.length; i++) {
+            this.$set(response.data.list[i], 'inventorydate', this.create.createTemp.inventorydate)
+            this.$set(response.data.list[i], 'createuser', this.create.createTemp.createuser)
+            this.$set(response.data.list[i], 'remark', this.create.createTemp.remark)
+          }
+          if (response.data.list !== null) {
+            this.download.list = response.data.list
+          } else {
+            this.download.list = []
+          }
+          var excelDatas = [
+            {
+              tHeader: ['盘点日期', '盘点人', '备注', '饲料名称', '库存重量(kg)', '实际重量(kg)', '差值(kg)'],
+              filterVal: ['inventorydate', 'createuser', 'remark', 'feedname', 'stockweight', 'factweight', 'differ'],
+              tableDatas: this.download.list,
+              sheetName: 'Sheet1'
+            }
+          ]
+          json2excel(excelDatas, '盘点-查看', true, 'xlsx')
+        })
+      }
+    },
+    beforeImport(file) {
+      const isLt2M = file.size / 1024 / 1024 < 2
+      if (!isLt2M) {
+        this.$message.error('上传文件大小不能超过 2MB!')
+      }
+      return isLt2M
+    },
+    handleImportSuccess(res, file) {
+      this.getList()
+      if (res.msg === 'ok') {
+        this.$message({ title: '成功', message: '导入成功:' + res.data.success + '条!', type: 'success', duration: 2000 })
+        if (res.data.err_count > 0) {
+          this.$notify({ title: '失败', message: '导入失败:' + res.data.err_count + '条!', type: 'danger', duration: 2000 })
+           import('@/vendor/Export2Excel').then(excel => {
+             const list1 = res.data.result
+             const tHeader = [
+               '盘点日期', '盘点人', '备注', '饲料名称', '库存重量(kg)', '实际重量(kg)', '错误信息'
+             ]
+             const filterVal = [
+               '盘点日期', '盘点人', '备注', '饲料名称', '库存重量(kg)', '实际重量(kg)', 'error_msg'
+             ]
+             const data1 = this.formatJson(filterVal, list1)
+             excel.export_json_to_excel({ header: tHeader, data: data1, filename: '盘点单报错信息', autoWidth: true, bookType: 'xlsx' })
+           })
+        }
+      } else {
+        this.$notify({ title: '失败', message: '上传失败', type: 'danger', duration: 2000 })
+      }
+    },
+    formatJson(filterVal, jsonData) {
+      return jsonData.map(v =>
+        filterVal.map(j => {
+          if (j === 'timestamp') {
+            return parseTime(v[j])
+          } else {
+            return v[j]
+          }
+        })
+      )
+    }
+
+  }
+}
+</script>
+<style lang="scss" scoped>
+  .search{margin-top:10px;}
+  .table{margin-top:10px;}
+</style>
+<style>
+  .inputDatetime .el-range-separator{ padding: 0; margin: 0 10px; }
+</style>

+ 27 - 15
src/views/inventoryManagement/laborConsumption/index.vue

@@ -85,9 +85,11 @@
             <span>{{ scope.row.createemp }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="操作" align="center" width="50" class-name="small-padding fixed-width" fixed="right">
+        <el-table-column label="操作" align="center" width="80" class-name="small-padding fixed-width" fixed="right">
           <template slot-scope="{row}">
-            <el-button class="miniSuccess" icon="el-icon-search" @click="handleSee(row)" />
+            <el-button  v-if="isRoleEdit" class="miniSuccess" icon="el-icon-edit-outline" @click="handleUpdate(row)" />
+            <span v-if="isRoleEdit" class="centerSpan">|</span>
+            <el-button v-if="isRoleEdit" icon="el-icon-delete" class="miniDanger" @click="handleRowDelete(row)" />
           </template>
         </el-table-column>
       </el-table>
@@ -113,21 +115,21 @@
           <el-row>
             <el-col :span="12">
               <el-form-item label="操作类型:" prop="usetype">
-                <el-select v-model="create.createTemp.usetype" placeholder="操作类型" class="filter-item" style="width: 100%;" :disabled="create.dialogStatus==='see'" @change="changeUsetype">
+                <el-select v-model="create.createTemp.usetype" placeholder="操作类型" class="filter-item" style="width: 100%;"  @change="changeUsetype">
                   <el-option v-for="item in operationTypeList" :key="item.id" :label="item.label" :value="item.value" />
                 </el-select>
               </el-form-item>
             </el-col>
             <el-col :span="12">
               <el-form-item label="出库日期:" prop="usedate">
-                <el-date-picker v-model="create.createTemp.usedate" :picker-options="create.pickerOptions1" :clearable="false" class="filter-item" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%;" type="datetime" placeholder="出库日期" :disabled="create.dialogStatus==='see'" />
+                <el-date-picker v-model="create.createTemp.usedate" :picker-options="create.pickerOptions1" :clearable="false" class="filter-item" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%;" type="datetime" placeholder="出库日期" />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="12">
               <el-form-item label="饲料名称:" prop="feedname">
-                <el-autocomplete v-model="create.createTemp.feedname" :disabled="create.dialogStatus==='see'" value-key="feedname" class="inline-input" :fetch-suggestions="feedNameSearch" placeholder="请选择饲料名称" style="width:100%" @select="handleSelectFeedName" @blur="blurFeedName">
+                <el-autocomplete v-model="create.createTemp.feedname" value-key="feedname" class="inline-input" :fetch-suggestions="feedNameSearch" placeholder="请选择饲料名称" style="width:100%" @select="handleSelectFeedName" @blur="blurFeedName">
                   <template slot-scope="{ item }">
                     <span>{{ item.feedname }}</span>
                   </template>
@@ -152,14 +154,14 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="操作重量(kg):" prop="operateweight">
-                <el-input ref="operateweight" v-model="create.createTemp.operateweight" class="filter-item" placeholder="最多两位小数" type="text" :disabled="create.dialogStatus==='see'" />
+                <el-input ref="operateweight" v-model="create.createTemp.operateweight" class="filter-item" placeholder="最多两位小数" type="text" />
               </el-form-item>
             </el-col>
           </el-row>
           <el-row>
             <el-col :span="12">
               <el-form-item label="备注:" prop="remark">
-                <el-input ref="remark" v-model="create.createTemp.remark" class="filter-item" placeholder="1-255字符" type="text" :disabled="create.dialogStatus==='see'" />
+                <el-input ref="remark" v-model="create.createTemp.remark" class="filter-item" placeholder="1-255字符" type="text" />
               </el-form-item>
             </el-col>
             <el-col :span="12">
@@ -170,9 +172,8 @@
           </el-row>
         </el-form>
         <div slot="footer" class="dialog-footer">
-          <el-button v-if="create.dialogStatus==='see'" class="cancelClose cancelClose1" @click="create.dialogFormVisible = false;getList();">关闭</el-button>
-          <el-button v-if="create.dialogStatus==='create'" class="cancelClose" @click="create.dialogFormVisible = false;getList();">关闭</el-button>
-          <el-button v-if="create.dialogStatus==='create'" class="save" :disabled="isokDisable" @click="createData()">确认</el-button>
+          <el-button v-if="create.dialogStatus==='create' || create.dialogStatus==='update'" class="cancelClose" @click="create.dialogFormVisible = false;getList();">关闭</el-button>
+          <el-button v-if="create.dialogStatus==='create' || create.dialogStatus==='update'" class="save" :disabled="isokDisable" @click="create.dialogStatus==='create'?createData():updateData()">确认</el-button>
         </div>
       </div>
     </el-dialog>
@@ -187,7 +188,8 @@ import Pagination from '@/components/Pagination'
 import Cookies from 'js-cookie'
 import { parseTime, json2excel } from '@/utils/index.js'
 import axios from 'axios'
-import { getToken } from '@/utils/auth'
+import { getToken } from '@/utils/auth'
+import { MessageBox } from 'element-ui'
 export default {
   name: 'LaborConsumption',
   components: { Pagination },
@@ -254,7 +256,7 @@ export default {
 
       textMap: {
         create: '新增',
-        see: '查看'
+        update: '编辑'
       },
       requestParam: {},
       download: {
@@ -531,21 +533,31 @@ export default {
         }
       })
     },
-    handleSee(row) {
+    handleUpdate(row) {
       this.$nextTick(() => {
         this.$refs.createTemp.resetFields()
       })
       this.dialogFull = false
-      this.create.dialogStatus = 'see'
+      this.create.dialogStatus = 'update'
       this.create.dialogFormVisible = true
       if (row.cowclassid == -1) {
         row.cowclassid = ''
         row.cowclass = ''
       }
       this.create.createTemp = Object.assign({}, row)
+    },
+    updateData(){
+      console.log('点击了编辑保存')
     },
     handleRowDelete(row) {
-      console.log('点击了行内删除')
+      console.log('点击了行内删除')
+      MessageBox.confirm('是否确认删除此信息?', {
+        confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning'
+      }).then(() => {
+
+      }).catch(() => {
+        this.$message({ type: 'info', message: '已取消删除' })
+      })
     },
     // 导出
     handleExport(item) {

+ 666 - 0
src/views/inventoryManagement/laborConsumption/index备.vue

@@ -0,0 +1,666 @@
+<template>
+  <div class="app-container">
+    <div class="search">
+      <el-date-picker v-model="table.getdataListParm.parammaps.inputDatetime" class="inputDatetime filter-item" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width: 250px;" />
+      <el-button class="el-icon-arrow-left elIconArrowLeft" @click="handleBefore" />
+      <el-button class="el-icon-arrow-right elIconArrowRight" @click="handleNext" />
+      <el-select v-model="table.getdataListParm.parammaps.usetype" placeholder="操作类型" class="filter-item" style="width: 120px;" clearable>
+        <el-option v-for="item in operationTypeList" :key="item.id" :label="item.label" :value="item.value" />
+      </el-select>
+      <el-autocomplete v-model="table.getdataListParm.parammaps.feedname" value-key="feedname" class="inline-input filter-item" :fetch-suggestions="tableFeedNameSearch" placeholder="饲料名称" style="width:250px" @select="handleSelectTableFeedName">
+        <template slot-scope="{ item }">
+          <span>{{ item.feedname }}</span>
+        </template>
+      </el-autocomplete>
+      <el-select v-model="table.getdataListParm.parammaps.cowclassid" filterable placeholder="请选择牲畜类别" class="filter-item" style="width: 150px;" clearable>
+        <el-option v-for="item in livestockList" :key="item.id" :label="item.mixname" :value="item.id" />
+      </el-select>
+      <el-button class="successBorder" @click="handleSearch">查询</el-button>
+      <el-button class="successBorder" @click="handleRefresh">重置</el-button>
+    </div>
+    <div class="operation">
+      <el-button v-if="isRoleEdit" class="success" icon="el-icon-plus" @click="handleCreate">新增</el-button>
+      <el-upload style="float: right;" :headers="headers" :data="uploadData" :action="uploadExcelUrl" :show-file-list="false" :before-upload="beforeImport" :on-success="handleImportSuccess">
+        <el-button v-if="isRoleEdit" class="import" icon="el-icon-download" style="float: right;">导入</el-button>
+      </el-upload>
+      <el-dropdown style="float: right;margin-right: 10px;">
+        <el-button class="export" icon="el-icon-upload2">导出</el-button>
+        <el-dropdown-menu slot="dropdown">
+          <el-dropdown-item @click.native="handleExport(1)">导出模板</el-dropdown-item>
+          <el-dropdown-item @click.native="handleExport(2)">导出数据</el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown>
+    </div>
+    <div class="table">
+      <el-table
+        :key="table.tableKey"
+        v-loading="table.listLoading"
+        element-loading-text="给我一点时间"
+        :data="table.list"
+        border
+        fit
+        highlight-current-row
+        style="width: 100%;"
+        :row-style="rowStyle"
+        :cell-style="cellStyle"
+        class="elTable table-fixed"
+      >
+        <el-table-column label="序号" align="center" type="index" width="50px">
+          <template slot-scope="scope">
+            <span>{{ scope.$index + (table.pageNum-1) * table.pageSize + 1 }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="出库日期" min-width="130px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.usedate }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="牲畜类别" min-width="130px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.cowclass }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="饲料名称" min-width="110px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.feedname }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作重量(kg)" min-width="110px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.operateweight }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作类型" min-width="110px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.usetype }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="备注" min-width="110px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.remark }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作人" min-width="110px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.createemp }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center" width="50" class-name="small-padding fixed-width" fixed="right">
+          <template slot-scope="{row}">
+            <el-button class="miniSuccess" icon="el-icon-edit-outline" @click="handleSee(row)" />
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination v-show="table.total>=0" :total="table.total" :page.sync="table.getdataListParm.offset" :limit.sync="table.getdataListParm.pagecount" @pagination="getList" />
+    </div>
+
+    <!-- 新增/编辑 -->
+    <el-dialog :fullscreen="dialogFull" :visible.sync="create.dialogFormVisible" :close-on-click-modal="false" width="80%">
+      <template slot="title">
+        <div class="avue-crud__dialog__header">
+          <span class="el-dialog__title">
+            <span style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px" />
+            {{ textMap[create.dialogStatus] }}
+          </span>
+          <div class="avue-crud__dialog__menu" @click="dialogFull? dialogFull=false: dialogFull=true">
+            <svg-icon v-if="dialogFull" icon-class="exit-fullscreen" />
+            <svg-icon v-else icon-class="fullscreen" />
+          </div>
+        </div>
+      </template>
+      <div class="app-add">
+        <el-form ref="createTemp" :rules="create.rules" :model="create.createTemp" label-position="right" label-width="150px" style="width: 90%;height:300px;margin:0 auto 50px">
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="操作类型:" prop="usetype">
+                <el-select v-model="create.createTemp.usetype" placeholder="操作类型" class="filter-item" style="width: 100%;" :disabled="create.dialogStatus==='see'" @change="changeUsetype">
+                  <el-option v-for="item in operationTypeList" :key="item.id" :label="item.label" :value="item.value" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="出库日期:" prop="usedate">
+                <el-date-picker v-model="create.createTemp.usedate" :picker-options="create.pickerOptions1" :clearable="false" class="filter-item" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%;" type="datetime" placeholder="出库日期" :disabled="create.dialogStatus==='see'" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="饲料名称:" prop="feedname">
+                <el-autocomplete v-model="create.createTemp.feedname" :disabled="create.dialogStatus==='see'" value-key="feedname" class="inline-input" :fetch-suggestions="feedNameSearch" placeholder="请选择饲料名称" style="width:100%" @select="handleSelectFeedName" @blur="blurFeedName">
+                  <template slot-scope="{ item }">
+                    <span>{{ item.feedname }}</span>
+                  </template>
+                </el-autocomplete>
+              </el-form-item>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="牲畜类别:" prop="cowclassid">
+                <el-input v-if="create.dialogStatus==='see'" ref="cowclass" v-model="create.createTemp.cowclass" disabled class="filter-item" placeholder="请选择牲畜类别" type="text" disabled />
+                <el-select v-else v-model="create.createTemp.cowclassid" filterable placeholder="请选择牲畜类别" class="filter-item" style="width: 100%;" :disabled="create.dialogStatus==='see' || create.createTemp.usetype=='损耗'" @change="changeLivestock">
+                  <el-option v-for="item in livestockList" :key="item.id" :label="item.mixname" :value="item.id" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="库存重量(kg):" prop="repertoryweight">
+                <el-input ref="repertoryweight" v-model="create.createTemp.repertoryweight" class="filter-item" placeholder="最多两位小数" type="text" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="操作重量(kg):" prop="operateweight">
+                <el-input ref="operateweight" v-model="create.createTemp.operateweight" class="filter-item" placeholder="最多两位小数" type="text" :disabled="create.dialogStatus==='see'" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="备注:" prop="remark">
+                <el-input ref="remark" v-model="create.createTemp.remark" class="filter-item" placeholder="1-255字符" type="text" :disabled="create.dialogStatus==='see'" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="操作人:" prop="createemp">
+                <el-input ref="createemp" v-model="create.createTemp.createemp" class="filter-item" placeholder="1-255字符" type="text" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+          <el-button v-if="create.dialogStatus==='see'" class="cancelClose cancelClose1" @click="create.dialogFormVisible = false;getList();">关闭</el-button>
+          <el-button v-if="create.dialogStatus==='create'" class="cancelClose" @click="create.dialogFormVisible = false;getList();">关闭</el-button>
+          <el-button v-if="create.dialogStatus==='create'" class="save" :disabled="isokDisable" @click="createData()">确认</el-button>
+        </div>
+      </div>
+    </el-dialog>
+
+  </div>
+
+</template>
+
+<script>
+import { GetDataByName, GetDataByNames, checkButtons, ExecDataByConfig, failproccess } from '@/api/common'
+import Pagination from '@/components/Pagination'
+import Cookies from 'js-cookie'
+import { parseTime, json2excel } from '@/utils/index.js'
+import axios from 'axios'
+import { getToken } from '@/utils/auth'
+export default {
+  name: 'LaborConsumption',
+  components: { Pagination },
+  data() {
+    return {
+      dialogFull: false,
+      isRoleEdit: [],
+      requestParams: [
+        { name: 'getDictByName', offset: 0, pagecount: 0, params: ['人工用量操作类型'] },
+        { name: 'getCowclassListEnable', offset: 0, pagecount: 0, parammaps: { 'pastureid': Cookies.get('pastureid') }}
+      ],
+      operationTypeList: [], // 操作类型
+      feedNameList: [], // 饲料名称
+      livestockList: [], // 牲畜类别
+
+      table: {
+        getdataListParm: {
+          name: 'getFeeduseList',
+          page: 1,
+          offset: 1,
+          pagecount: parseInt(Cookies.get('pageCount')),
+          returntype: 'Map',
+          parammaps: {
+            inputDatetime: '',
+            pastureid: Cookies.get('pastureid'),
+            startTime: '',
+            stopTime: '',
+            usetype: '',
+            feedid: '',
+            cowclassid: ''
+          }
+        },
+        tableKey: 0,
+        list: [],
+        total: 0,
+        listLoading: true
+      },
+
+      create: {
+        pickerOptions1: {
+          disabledDate(time) {
+            return time.getTime() > Date.now()// 当天之前的时间可选
+          }
+        },
+        dialogFormVisible: false,
+        dialogStatus: '',
+        createTemp: {
+          pastureid: Cookies.get('pastureid'), usedate: parseTime(new Date(), '{y}-{m}-{d}'), feedid: '', feedname: '', cowclassid: '', cowclass: '', usetype: '', operateweight: '', repertoryweight: '', createemp: '', remark: '', price: '', operator: Cookies.get('employename')
+        },
+        getfeedNameParm: {
+          name: 'getFeedstorageuse',
+          offset: 0,
+          pagecount: '',
+          parammaps: { pastureid: Cookies.get('pastureid') }
+        },
+        rules: {
+          usetype: [{ type: 'string', required: true, message: '必填', trigger: 'blur' }],
+          usedate: [{ type: 'string', required: true, message: '必填', trigger: 'blur' }],
+          feedname: [{ type: 'string', required: true, message: '必填', trigger: 'change' }],
+          operateweight: [{ type: 'string', required: true, message: '必填', trigger: 'blur' }],
+          cowclassid: [{ type: 'string', required: true, message: '必填', trigger: 'blur' }]
+        }
+      },
+
+      textMap: {
+        create: '新增',
+        see: '查看'
+      },
+      requestParam: {},
+      download: {
+        getdataListParm: {
+          name: 'getFeeduseList',
+          page: 1,
+          offset: 1,
+          pagecount: 0,
+          returntype: 'Map',
+          parammaps: {
+            inputDatetime: '',
+            pastureid: Cookies.get('pastureid'),
+            startTime: '',
+            stopTime: '',
+            usetype: '',
+            feedid: '',
+            cowclassid: ''
+          }
+        },
+        list: []
+      },
+      isokDisable: false,
+      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
+      cellStyle: { padding: 0 + 'px' }
+
+    }
+  },
+  computed: {
+    // 设置请求头
+    headers() {
+      return {
+        token: getToken()
+      }
+    },
+    uploadData() {
+      return {
+        name: 'checkFeed,checkclassname,checkfeedusetype,insertFeeduseUpload,insertFeedstorageUseUpload',
+        importParams: '出库日期,操作类型,牲畜类别,饲料名称,操作重量(kg),备注,操作人',
+        sheetname: 'Sheet1',
+        // 登录牧场
+        pastureid: Cookies.get('pastureid'),
+        // 日期参数
+        dateParams: '出库日期',
+        // 必填参数
+        requiredParams: '出库日期,操作类型,饲料名称,操作重量(kg)',
+        // 为数值的参数
+        numParams: '操作重量(kg)'
+      }
+    },
+    // 设置上传地址
+    uploadExcelUrl() {
+      return process.env.VUE_APP_BASE_API + 'authdata/ImportExcel'
+    }
+  },
+  created() {
+    this.getList()
+    this.getDownList()
+    this.getButtons()
+  },
+
+  methods: {
+    getButtons() {
+      const Edit = 'SystemConsumption'
+      const isRoleEdit = checkButtons(JSON.parse(sessionStorage.getItem('buttons')), Edit)
+      this.isRoleEdit = isRoleEdit
+    },
+    getDownList() {
+      GetDataByNames(this.requestParams).then(response => {
+        this.operationTypeList = response.data.getDictByName.list
+        this.livestockList = response.data.getCowclassListEnable.list
+      })
+    },
+    handleBefore() {
+      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
+        var start = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() - 1))
+        var stop = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() - 1))
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
+        this.table.getdataListParm.parammaps.startTime = parseTime(start, '{y}-{m}-{d}')
+        this.table.getdataListParm.parammaps.stopTime = parseTime(stop, '{y}-{m}-{d}')
+        this.$forceUpdate()
+      }
+    },
+    handleNext() {
+      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
+        var start = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1))
+        var stop = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1))
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
+        this.table.getdataListParm.parammaps.startTime = parseTime(start, '{y}-{m}-{d}')
+        this.table.getdataListParm.parammaps.stopTime = parseTime(stop, '{y}-{m}-{d}')
+        this.$forceUpdate()
+      }
+    },
+    getList() {
+      this.table.listLoading = true
+      GetDataByName(this.table.getdataListParm).then(response => {
+        console.log('table数据', response.data.list)
+        if (response.data.list !== null) {
+          this.table.list = response.data.list
+          this.table.pageNum = response.data.pageNum
+          this.table.pageSize = response.data.pageSize
+          this.table.total = response.data.total
+        } else {
+          this.table.list = []
+        }
+        setTimeout(() => {
+          this.table.listLoading = false
+        }, 100)
+      })
+    },
+
+    handleSearch() {
+      console.log('点击了查询')
+      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
+        this.table.getdataListParm.parammaps.startTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
+        this.table.getdataListParm.parammaps.stopTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
+      } else {
+        this.table.getdataListParm.parammaps.inputDatetime = ''
+        this.table.getdataListParm.parammaps.startTime = ''
+        this.table.getdataListParm.parammaps.stopTime = ''
+      }
+      this.table.getdataListParm.offset = 1
+      this.getList()
+    },
+    handleRefresh() {
+      console.log('点击了重置')
+      this.table.getdataListParm.parammaps.inputDatetime = ''
+      this.table.getdataListParm.parammaps.startTime = ''
+      this.table.getdataListParm.parammaps.stopTime = ''
+      this.table.getdataListParm.parammaps.feedid = ''
+      this.table.getdataListParm.parammaps.cowclassid = ''
+      this.table.getdataListParm.parammaps.ischarge = ''
+      this.table.getdataListParm.parammaps.usetype = ''
+      this.table.getdataListParm.parammaps.feedname = ''
+      this.table.getdataListParm.parammaps.cowclassid = ''
+      this.getList()
+    },
+
+    // 操作类型
+    changeUsetype(item) {
+      console.log(item)
+      if (item == '损耗') {
+        console.log(item)
+        this.create.createTemp.cowclassid = '/'
+        this.create.createTemp.cowclass = '/'
+      } else {
+        this.create.createTemp.cowclassid = ''
+        this.create.createTemp.cowclass = ''
+      }
+    },
+    tableFeedNameSearch(queryString, cb) {
+      this.create.getfeedNameParm.parammaps['feedname'] = queryString
+      GetDataByName(this.create.getfeedNameParm).then(response => {
+        console.log('模糊查询搜索data', response.data.list)
+        if (response.data.list == null) {
+          cb([])
+        } else {
+          cb(response.data.list)
+        }
+      })
+    },
+    handleSelectTableFeedName(item) {
+      this.table.getdataListParm.parammaps.feedid = item.feedid
+    },
+    // 饲料名称
+    feedNameSearch(queryString, cb) {
+      this.create.getfeedNameParm.parammaps['feedname'] = queryString
+      GetDataByName(this.create.getfeedNameParm).then(response => {
+        console.log('模糊查询搜索data', response.data.list)
+        if (response.data.list == null) {
+          cb([])
+        } else {
+          cb(response.data.list)
+        }
+      })
+    },
+    handleSelectFeedName(item) {
+      console.log(item)
+      this.create.createTemp.feedname = item.feedname
+      this.create.createTemp.feedid = item.feedid
+      this.create.createTemp.price = item.price
+      this.create.createTemp.pcpde = item.pcpde
+      this.create.createTemp.repertoryweight = item.stockweight
+    },
+    blurFeedName() {
+      this.create.createTemp.feedname = ''
+      this.create.createTemp.feedid = ''
+      this.create.createTemp.price = ''
+      this.create.createTemp.pcpde = ''
+      this.create.createTemp.repertoryweight = ''
+    },
+    // 牲畜类别
+    changeLivestock(item) {
+      this.create.createTemp.cowclass = this.livestockList.find(obj => obj.id == item).classname
+    },
+    resetCreateTemp() {
+      this.create.createTemp = {
+        cowclassid1: '-1', pastureid: Cookies.get('pastureid'), usedate: parseTime(new Date(), '{y}-{m}-{d}'), feedid: '', feedname: '', cowclassid: '', cowclass: '', usetype: '', operateweight: '', repertoryweight: '', createemp: Cookies.get('employename'), remark: '', price: '', operator: Cookies.get('employename')
+      }
+    },
+    handleCreate() {
+      console.log('点击了新增')
+      this.create.dialogStatus = 'create'
+      this.dialogFull = false
+      this.create.dialogFormVisible = true
+      this.$nextTick(() => {
+        this.resetCreateTemp()
+        this.$refs.createTemp.resetFields()
+      })
+    },
+    createData() {
+      console.log('点击了新增保存')
+      this.$refs['createTemp'].validate(valid => {
+        if (valid) {
+          this.isokDisable = true
+          setTimeout(() => {
+            this.isokDisable = false
+          }, 1000)
+          if (this.create.createTemp.usetype == '人工用料') {
+            if (this.create.createTemp.cowclassid == '') {
+              this.$message({ type: 'error', message: '请选择牲畜类别', duration: 2000 })
+              return false
+            }
+          }
+          const keepTwoNum = /^\d+(\.\d{1,2})?$/
+          // 操作重量
+          if (this.create.createTemp.operateweight == 0) {
+            this.$message({ type: 'error', message: '操作重量请输入自然数并保留两位小数', duration: 2000 })
+            return false
+          } else {
+            if (!keepTwoNum.test(parseFloat(this.create.createTemp.operateweight))) {
+              this.$message({ type: 'error', message: '操作重量请输入自然数并保留两位小数', duration: 2000 })
+              return false
+            }
+          }
+          if (this.create.createTemp.cowclassid == '/' && this.create.createTemp.cowclass == '/') {
+            this.create.createTemp.cowclassid = ''
+            this.create.createTemp.cowclass = ''
+          }
+          this.requestParam.common = { 'returnmap': '0' }
+          this.requestParam.data = []
+          this.requestParam.data[0] = { 'name': 'insertFeeduse', 'type': 'e', 'parammaps': {
+            'pastureid': this.create.createTemp.pastureid,
+            'usedate': this.create.createTemp.usedate,
+            'feedid': this.create.createTemp.feedid,
+            'feedname': this.create.createTemp.feedname,
+            'cowclassid': this.create.createTemp.cowclassid,
+            'cowclass': this.create.createTemp.cowclass,
+            'usetype': this.create.createTemp.usetype,
+            'operateweight': this.create.createTemp.operateweight,
+            'repertoryweight': this.create.createTemp.repertoryweight,
+            'createemp': this.create.createTemp.createemp,
+            'remark': this.create.createTemp.remark,
+            'price': this.create.createTemp.price
+          }}
+          this.requestParam.data[1] = { 'name': 'insertFeedstorageUse', 'type': 'e', 'parammaps': {
+            'pastureid': this.create.createTemp.pastureid,
+            'feedid': this.create.createTemp.feedid,
+            'operateweight': this.create.createTemp.operateweight,
+            'fname': this.create.createTemp.feedname,
+            'pcpde': this.create.createTemp.pcpde,
+            'price': this.create.createTemp.price
+          }}
+          ExecDataByConfig(this.requestParam).then(response => {
+            if (response.msg === 'fail') {
+              this.$notify({ title: '保存失败', message: response.data, type: 'warning', duration: 2000 })
+            } else {
+              this.$notify({ title: '', message: '成功', type: 'success', duration: 2000 })
+              this.create.dialogFormVisible = false
+              this.getList()
+            }
+          })
+        }
+      })
+    },
+    handleSee(row) {
+      this.$nextTick(() => {
+        this.$refs.createTemp.resetFields()
+      })
+      this.dialogFull = false
+      this.create.dialogStatus = 'see'
+      this.create.dialogFormVisible = true
+      if (row.cowclassid == -1) {
+        row.cowclassid = ''
+        row.cowclass = ''
+      }
+      this.create.createTemp = Object.assign({}, row)
+    },
+    handleRowDelete(row) {
+      console.log('点击了行内删除')
+    },
+    // 导出
+    handleExport(item) {
+      if (item == 1) {
+        console.log('点击了导出模板')
+        const requestParam = this.requestParam
+        const url = process.env.VUE_APP_BASE_API + 'file/导入导出模板/库存管理/人工用量导入模板.xlsx' // 请求下载文件的地址
+        console.log(url)
+        axios({
+          method: 'GET',
+          url: url,
+          data: requestParam,
+          headers: { token: getToken(), optname: 'insertcustomdoc' },
+          responseType: 'blob'
+        }).then(res => {
+          if (!res) return
+          this.percentage = 99
+          setTimeout(() => {
+            this.isPercentage = false
+          }, 2000)
+          const blob = new Blob([res.data], {
+            type: 'application/octet-stream;charset=utf-8'
+          })
+          const url = window.URL.createObjectURL(blob)
+          const aLink = document.createElement('a')
+          aLink.style.display = 'none'
+          aLink.href = url
+          const docname = '人工用量导入模板.xlsx'
+          aLink.setAttribute('download', docname) // 下载的文件
+          document.body.appendChild(aLink)
+          aLink.click()
+          document.body.removeChild(aLink)
+          window.URL.revokeObjectURL(url)
+        })
+      } else {
+        console.log('点击了导出数据')
+        this.download.getdataListParm.parammaps = this.table.getdataListParm.parammaps
+        if (this.download.getdataListParm.parammaps.inputDatetime !== '' && this.download.getdataListParm.parammaps.inputDatetime !== null) {
+          this.download.getdataListParm.parammaps.startTime = parseTime(this.download.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
+          this.download.getdataListParm.parammaps.stopTime = parseTime(this.download.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
+        } else {
+          this.download.getdataListParm.parammaps.inputDatetime = ''
+          this.download.getdataListParm.parammaps.startTime = ''
+          this.download.getdataListParm.parammaps.stopTime = ''
+        }
+        GetDataByName(this.download.getdataListParm).then(response => {
+          if (response.data.list !== null) {
+            this.download.list = response.data.list
+          } else {
+            this.download.list = []
+          }
+          var excelDatas = [
+            {
+              tHeader: ['出库日期', '操作类型', '牲畜类别', '饲料名称', '操作重量(kg)', '备注', '操作人'],
+              filterVal: ['usedate', 'usetype', 'cowclass', 'feedname', 'operateweight', 'remark', 'createemp'],
+              tableDatas: this.download.list,
+              sheetName: 'Sheet1'
+            }
+          ]
+          json2excel(excelDatas, '人工用量', true, 'xlsx')
+        })
+      }
+    },
+
+    beforeImport(file) {
+      const isLt2M = file.size / 1024 / 1024 < 2
+      if (!isLt2M) {
+        this.$message.error('上传文件大小不能超过 2MB!')
+      }
+      return isLt2M
+    },
+    handleImportSuccess(res, file) {
+      this.getList()
+      if (res.msg === 'ok') {
+        this.$message({ title: '成功', message: '导入成功:' + res.data.success + '条!', type: 'success', duration: 2000 })
+        if (res.data.err_count > 0) {
+          this.$notify({ title: '失败', message: '导入失败:' + res.data.err_count + '条!', type: 'danger', duration: 2000 })
+           import('@/vendor/Export2Excel').then(excel => {
+             const list1 = res.data.result
+             const tHeader = [
+               '出库日期', '操作类型', '牲畜类别', '饲料名称', '操作重量(kg)', '备注', '操作人', '错误信息'
+             ]
+             const filterVal = [
+               '出库日期', '操作类型', '牲畜类别', '饲料名称', '操作重量(kg)', '备注', '操作人', 'error_msg'
+             ]
+             const data1 = this.formatJson(filterVal, list1)
+             excel.export_json_to_excel({ header: tHeader, data: data1, filename: '人工用量导入报错信息', autoWidth: true, bookType: 'xlsx' })
+           })
+        }
+      } else {
+        this.$notify({ title: '失败', message: '上传失败', type: 'danger', duration: 2000 })
+      }
+    },
+    formatJson(filterVal, jsonData) {
+      return jsonData.map(v =>
+        filterVal.map(j => {
+          if (j === 'timestamp') {
+            return parseTime(v[j])
+          } else {
+            return v[j]
+          }
+        })
+      )
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+  .search{margin-top:10px;}
+  .table{margin-top:10px;}
+ </style>
+ <style lang="scss">
+   .typeSelect span .el-popover__reference .el-input--suffix {
+       .el-input__inner{
+         height:40px !important;
+       }
+     }
+ </style>

+ 20 - 3
src/views/inventoryManagement/systemConsumption/index.vue

@@ -10,6 +10,9 @@
       </el-select>
       <el-select v-model="table.getdataListParm.parammaps.feedid" placeholder="饲料名称" class="filter-item" style="width: 150px;" filterable clearable>
         <el-option v-for="item in feedNameList" :key="item.id" :label="item.fname" :value="item.id" />
+      </el-select>
+      <el-select v-model="table.getdataListParm.parammaps.ischarge" placeholder="是否预混料" class="filter-item" style="width: 150px;" clearable>
+        <el-option v-for="item in isPremixList" :key="item.id" :label="item.name" :value="item.id" />
       </el-select>
       <el-select v-model="table.getdataListParm.parammaps.ischarge" placeholder="是否审核" class="filter-item" style="width: 150px;" clearable>
         <el-option v-for="item in isAuditList" :key="item.id" :label="item.name" :value="item.id" />
@@ -56,6 +59,12 @@
           <template slot-scope="scope">
             <span>{{ scope.row.feedname }}</span>
           </template>
+        </el-table-column>
+        <el-table-column label="是否预混料" min-width="60px" align="center">
+          <template slot-scope="scope">
+            <span v-if="scope.row.premix == 0">否</span>
+            <span v-else>是</span>
+          </template>
         </el-table-column>
         <el-table-column label="库存重量(kg)" min-width="100px" align="center">
           <template slot-scope="scope">
@@ -78,13 +87,13 @@
             <el-input v-if="scope.row.Edit" v-model="scope.row.operateweight" placeholder="最多保留两位小数" type="number" :step="0.01" style="width:95%;padding:10px 0;" />
           </template>
         </el-table-column>
-        <el-table-column label="备注" min-width="100px" align="center">
+        <el-table-column label="备注" min-width="70px" align="center">
           <template slot-scope="scope">
             <span v-if="scope.row.NoEdit">{{ scope.row.remark }}</span>
             <el-input v-if="scope.row.Edit" v-model="scope.row.remark" placeholder="1-32个字符" type="textarea" :autosize="{ minRows: 1.3, maxRows: 4}" maxlength="32" style="width:95%;padding:10px 0;" />
           </template>
         </el-table-column>
-        <el-table-column label="是否审核" min-width="100px" align="center">
+        <el-table-column label="是否审核" min-width="70px" align="center">
           <template slot-scope="scope">
             <span v-if="scope.row.ischarge == 1">是</span>
             <span v-else>否</span>
@@ -95,6 +104,7 @@
             <el-button v-if="row.isUpdate && row.ischarge !== 1 && isRoleEdit" class="miniSuccess" icon="el-icon-edit-outline" @click="handleUpdate(row)" />
             <el-button v-if="row.isUpdateSave" :disabled="isokDisable" class="miniSuccess" icon="el-icon-folder-checked" @click="updateData(row)" />
             <el-button v-if="row.isUpdateSave" class="minCancel" icon="el-icon-close" @click="updateCancel(row)" />
+            <el-button v-if="row.ischarge == 1 && isRoleEdit" class="miniSuccess" icon="el-icon-refresh-left" @click="handleRevoke(row)" />
           </template>
         </el-table-column>
       </el-table>
@@ -115,7 +125,7 @@ export default {
   components: { Pagination },
   data() {
     return {
-
+      isPremixList:[{ id: '1', name: '是' }, { id: '0', name: '否' }],//是否预混料
       livestockTypeList: [], // 牲畜类别
       feedNameList: [{ id: 0, name: '羊草' }, { id: 1, name: '小苏打' }], // 饲料名称
       isAuditList: [{ id: '1', name: '是' }, { id: '0', name: '否' }], // 是否审核
@@ -303,6 +313,13 @@ export default {
       row.isUpdate = true
       row.isUpdateSave = false
       this.getList()
+    },
+    handleRevoke(row){
+      MessageBox.confirm('请确认是否要撤销审核结果?', '提示', {
+        confirmButtonText: '是', cancelButtonText: '否', type: 'warning'
+      }).then(() => {
+        console.log('点击了撤销')
+      })
     },
     handleSelectionChange(val) {
       console.log('勾选数据', val)

+ 402 - 0
src/views/inventoryManagement/systemConsumption/index备.vue

@@ -0,0 +1,402 @@
+<template>
+  <div class="app-container">
+
+    <div class="search">
+      <el-date-picker v-model="table.getdataListParm.parammaps.inputDatetime" class="inputDatetime filter-item" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width: 250px;" />
+      <el-button class="el-icon-arrow-left elIconArrowLeft" @click="handleBefore" />
+      <el-button class="el-icon-arrow-right elIconArrowRight" @click="handleNext" />
+      <el-select v-model="table.getdataListParm.parammaps.cowclassid" placeholder="牲畜类别" class="filter-item" style="width: 150px;" clearable>
+        <el-option v-for="item in livestockTypeList" :key="item.value" :label="item.label" :value="item.value" />
+      </el-select>
+      <el-select v-model="table.getdataListParm.parammaps.feedid" placeholder="饲料名称" class="filter-item" style="width: 150px;" filterable clearable>
+        <el-option v-for="item in feedNameList" :key="item.id" :label="item.fname" :value="item.id" />
+      </el-select>
+      <el-select v-model="table.getdataListParm.parammaps.ischarge" placeholder="是否审核" class="filter-item" style="width: 150px;" clearable>
+        <el-option v-for="item in isAuditList" :key="item.id" :label="item.name" :value="item.id" />
+      </el-select>
+      <el-button class="successBorder" @click="handleSearch">查询</el-button>
+      <el-button class="successBorder" @click="handleRefresh">重置</el-button>
+    </div>
+    <div class="operation">
+      <el-button v-if="isRoleEdit" class="success" icon="el-icon-document-checked" @click="handleExamine">审核</el-button>
+      <el-button class="export" icon="el-icon-upload2" style="float: right;margin-right: 10px;" @click="handleExport">导出</el-button>
+    </div>
+    <div class="table">
+      <el-table
+        :key="table.tableKey"
+        v-loading="table.listLoading"
+        element-loading-text="给我一点时间"
+        :data="table.list"
+        border
+        fit
+        highlight-current-row
+        style="width: 100%;"
+        :row-style="rowStyle"
+        :cell-style="cellStyle"
+        class="elTable table-fixed"
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" align="center" width="50" />
+        <el-table-column label="序号" align="center" type="index" width="50px">
+          <template slot-scope="scope">
+            <span>{{ scope.$index + (table.pageNum-1) * table.pageSize + 1 }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="业务日期" min-width="100px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.usedate }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="牲畜类别" min-width="100px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.cowclass }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="饲料名称" min-width="100px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.feedname }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="是否预混料" min-width="100px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.feedname }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="库存重量(kg)" min-width="100px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.repertoryweight }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="计划重量(kg)" min-width="100px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.planweight }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="设备实测重量(kg)" min-width="150px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.actweight }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="出库重量(kg)" min-width="130px" align="center">
+          <template slot-scope="scope">
+            <span v-if="scope.row.NoEdit">{{ scope.row.operateweight }}</span>
+            <el-input v-if="scope.row.Edit" v-model="scope.row.operateweight" placeholder="最多保留两位小数" type="number" :step="0.01" style="width:95%;padding:10px 0;" />
+          </template>
+        </el-table-column>
+        <el-table-column label="备注" min-width="100px" align="center">
+          <template slot-scope="scope">
+            <span v-if="scope.row.NoEdit">{{ scope.row.remark }}</span>
+            <el-input v-if="scope.row.Edit" v-model="scope.row.remark" placeholder="1-32个字符" type="textarea" :autosize="{ minRows: 1.3, maxRows: 4}" maxlength="32" style="width:95%;padding:10px 0;" />
+          </template>
+        </el-table-column>
+        <el-table-column label="是否审核" min-width="100px" align="center">
+          <template slot-scope="scope">
+            <span v-if="scope.row.ischarge == 1">是</span>
+            <span v-else>否</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center" width="80" class-name="small-padding fixed-width" fixed="right">
+          <template slot-scope="{row}">
+            <el-button v-if="row.isUpdate && row.ischarge !== 1 && isRoleEdit" class="miniSuccess" icon="el-icon-edit-outline" @click="handleUpdate(row)" />
+            <el-button v-if="row.isUpdateSave" :disabled="isokDisable" class="miniSuccess" icon="el-icon-folder-checked" @click="updateData(row)" />
+            <el-button v-if="row.isUpdateSave" class="minCancel" icon="el-icon-close" @click="updateCancel(row)" />
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination v-show="table.total>=0" :total="table.total" :page.sync="table.getdataListParm.offset" :limit.sync="table.getdataListParm.pagecount" @pagination="getList" />
+    </div>
+  </div>
+
+</template>
+
+<script>
+import { GetDataByName, GetDataByNames, checkButtons, PostDataByName, failproccess, ExecDataByConfig } from '@/api/common'
+import Pagination from '@/components/Pagination'
+import { MessageBox } from 'element-ui'
+import Cookies from 'js-cookie'
+import { parseTime, json2excel } from '@/utils/index.js'
+export default {
+  name: 'SystemConsumption',
+  components: { Pagination },
+  data() {
+    return {
+
+      livestockTypeList: [], // 牲畜类别
+      feedNameList: [{ id: 0, name: '羊草' }, { id: 1, name: '小苏打' }], // 饲料名称
+      isAuditList: [{ id: '1', name: '是' }, { id: '0', name: '否' }], // 是否审核
+      requestParams: [
+        { name: 'getFeedListEnable', offset: 0, pagecount: 0, parammaps: { pastureid: Cookies.get('pastureid') }},
+        { name: 'getDictByName', offset: 0, pagecount: 0, params: ['牲畜父类'] }
+      ],
+      table: {
+        getdataListParm: {
+          name: 'getFeeduseList',
+          page: 1,
+          offset: 1,
+          pagecount: parseInt(Cookies.get('pageCount')),
+          returntype: 'Map',
+          parammaps: {
+            inputDatetime: '',
+            pastureid: Cookies.get('pastureid'),
+            startTime: '',
+            stopTime: '',
+            usetype: '系统用量',
+            feedid: '',
+            cowclassid: '',
+            ischarge: ''
+          }
+        },
+        tableKey: 0,
+        list: [],
+        total: 0,
+        listLoading: true
+      },
+      selectList: [],
+      requestParam: {},
+      download: {
+        getdataListParm: {
+          name: 'getFeeduseList',
+          page: 1,
+          offset: 1,
+          pagecount: 0,
+          returntype: 'Map',
+          parammaps: {
+            inputDatetime: '',
+            pastureid: Cookies.get('pastureid'),
+            startTime: '',
+            stopTime: '',
+            usetype: '系统用量',
+            feedid: '',
+            cowclassid: '',
+            ischarge: ''
+          }
+        },
+        list: []
+      },
+      isokDisable: false,
+      isRoleEdit: [],
+      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
+      cellStyle: { padding: 0 + 'px' }
+    }
+  },
+
+  created() {
+    this.getButtons()
+    this.getDownList()
+    this.getList()
+  },
+
+  methods: {
+    getButtons() {
+      const Edit = 'SystemConsumption'
+      const isRoleEdit = checkButtons(JSON.parse(sessionStorage.getItem('buttons')), Edit)
+      this.isRoleEdit = isRoleEdit
+    },
+    getDownList() {
+      GetDataByNames(this.requestParams).then(response => {
+        this.feedNameList = response.data.getFeedListEnable.list
+        this.livestockTypeList = response.data.getDictByName.list
+      })
+    },
+    handleBefore() {
+      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
+        var start = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() - 1))
+        var stop = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() - 1))
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
+        this.$forceUpdate()
+      }
+    },
+    handleNext() {
+      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
+        var start = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1))
+        var stop = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1))
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
+        this.$forceUpdate()
+      }
+    },
+    getList() {
+      this.table.listLoading = true
+      GetDataByName(this.table.getdataListParm).then(response => {
+        console.log('table数据', response.data.list)
+        if (response.data.list !== null) {
+          for (let i = 0; i < response.data.list.length; i++) {
+            this.$set(response.data.list[i], 'Edit', false) // 编辑
+            this.$set(response.data.list[i], 'NoEdit', true) // 不可编辑/输入
+            this.$set(response.data.list[i], 'isUpdate', true) // 编辑操作
+            this.$set(response.data.list[i], 'isUpdateSave', false) // 编辑保存
+          }
+          this.table.list = response.data.list
+          this.table.pageNum = response.data.pageNum
+          this.table.pageSize = response.data.pageSize
+          this.table.total = response.data.total
+        } else {
+          this.table.list = []
+        }
+        setTimeout(() => {
+          this.table.listLoading = false
+        }, 100)
+      })
+    },
+    handleSearch() {
+      console.log('点击了查询')
+      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
+        this.table.getdataListParm.parammaps.startTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
+        this.table.getdataListParm.parammaps.stopTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
+      } else {
+        this.table.getdataListParm.parammaps.inputDatetime = ''
+        this.table.getdataListParm.parammaps.startTime = ''
+        this.table.getdataListParm.parammaps.stopTime = ''
+      }
+      this.table.getdataListParm.offset = 1
+      this.getList()
+    },
+    handleRefresh() {
+      console.log('点击了重置')
+      this.table.getdataListParm.parammaps.inputDatetime = ''
+      this.table.getdataListParm.parammaps.startTime = ''
+      this.table.getdataListParm.parammaps.stopTime = ''
+      this.table.getdataListParm.parammaps.feedid = ''
+      this.table.getdataListParm.parammaps.cowclassid = ''
+      this.table.getdataListParm.parammaps.ischarge = ''
+      this.table.getdataListParm.offset = 1
+      this.getList()
+    },
+    handleUpdate(row) {
+      for (let i = 0; i < this.table.list.length; i++) {
+        if (this.table.list[i].Edit == true) {
+          this.$message({ type: 'error', message: '当前内容未保存,请点击取消或保存继续进行操作', duration: 2000 })
+          return false
+        }
+      }
+      // 编辑true,不可编辑false
+      row.Edit = true
+      row.NoEdit = false
+      // 编辑false,编辑保存true
+      row.isUpdate = false
+      row.isUpdateSave = true
+    },
+    updateData(row) {
+      console.log('点击了编辑保存', row)
+      this.isokDisable = true
+      setTimeout(() => {
+        this.isokDisable = false
+      }, 1000)
+      this.requestParam.name = 'updateFeeduse'
+      this.requestParam.parammaps = {}
+      this.requestParam.parammaps.pastureid = row.pastureid
+      this.requestParam.parammaps.id = row.id
+      this.requestParam.parammaps.remark = row.remark
+      this.requestParam.parammaps.operateweight = row.operateweight
+      PostDataByName(this.requestParam).then(response => {
+        console.log('新增保存发送参数', this.requestParam)
+        if (response.msg !== 'fail') {
+          this.$notify({ title: '成功', message: '保存成功', type: 'success', duration: 2000 })
+          this.getList()
+        } else {
+          this.$notify({ title: '保存失败', message: response.data, type: 'warning', duration: 2000 })
+        }
+      })
+    },
+    updateCancel(row) {
+      console.log('点击了编辑取消')
+      // 编辑false,不可编辑true
+      row.Edit = false
+      row.NoEdit = true
+      // 编辑true,编辑保存false
+      row.isUpdate = true
+      row.isUpdateSave = false
+      this.getList()
+    },
+    handleSelectionChange(val) {
+      console.log('勾选数据', val)
+      this.selectList = val
+    },
+    handleExamine() {
+      if (this.selectList.length == 0) {
+        this.$message({ type: 'error', message: '请选择需要审核的单据', duration: 2000 })
+      } else {
+        for (let i = 0; i < this.selectList.length; i++) {
+          if (this.selectList[i].ischarge == 1) {
+            this.$message({ type: 'error', message: '单据不可重复审核,请重新选择', duration: 2000 })
+            return
+          }
+        }
+        MessageBox.confirm('是否确认审核系统用量?', '提示', {
+          confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning'
+        }).then(() => {
+          this.requestParam.common = { 'returnmap': '0' }
+          this.requestParam.data = []
+          this.requestParam.data[0] = { 'name': 'insertSpotList', 'resultmaps': { 'list': this.selectList }}
+          this.requestParam.data[0].children = []
+          this.requestParam.data[0].children[0] = { 'name': 'insertFeedstorageUse', 'type': 'e', 'parammaps': {
+            snowid: '@insertSpotList.snowid',
+            pastureid: '@insertSpotList.pastureid',
+            feedid: '@insertSpotList.feedid',
+            fname: '@insertSpotList.fname',
+            pcpde: '@insertSpotList.pcpde',
+            operateweight: '@insertSpotList.operateweight',
+            price: '@insertSpotList.price'
+          }}
+          this.requestParam.data[0].children[1] = { 'name': 'chargeFeedstorageuse', 'type': 'e', 'parammaps': {
+            id: '@insertSpotList.id',
+            pastureid: '@insertSpotList.pastureid',
+            operateweight: '@insertSpotList.operateweight'
+          }}
+          ExecDataByConfig(this.requestParam).then(response => {
+            console.log('审核保存发送参数', this.requestParam)
+            if (response.msg === 'fail') {
+              this.$notify({ title: '失败', message: response.data, type: 'warning', duration: 2000 })
+            } else {
+              this.$notify({ title: '', message: '成功', type: 'success', duration: 2000 })
+              this.getList()
+            }
+          })
+        })
+      }
+    },
+    handleExport() {
+      console.log('点击了导出')
+      this.download.getdataListParm.parammaps = this.table.getdataListParm.parammaps
+      if (this.download.getdataListParm.parammaps.inputDatetime !== '' && this.download.getdataListParm.parammaps.inputDatetime !== null) {
+        this.download.getdataListParm.parammaps.startTime = parseTime(this.download.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
+        this.download.getdataListParm.parammaps.stopTime = parseTime(this.download.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
+      } else {
+        this.download.getdataListParm.parammaps.inputDatetime = ''
+        this.download.getdataListParm.parammaps.startTime = ''
+        this.download.getdataListParm.parammaps.stopTime = ''
+      }
+      GetDataByName(this.download.getdataListParm).then(response => {
+        if (response.data.list !== null) {
+          for (let i = 0; i < response.data.list.length; i++) {
+            if (response.data.list[i].ischarge == 1) {
+              response.data.list[i].ischarge = '是'
+            } else {
+              response.data.list[i].ischarge = '否'
+            }
+          }
+          this.download.list = response.data.list
+        } else {
+          this.download.list = []
+        }
+        var excelDatas = [
+          {
+            tHeader: ['业务日期', '牲畜类别', '饲料名称', '库存重量(kg)', '计划重量(kg)', '设备实测重量(kg)', '出库重量(kg)', '备注', '是否审核'],
+            filterVal: ['usedate', 'cowclass', 'feedname', 'repertoryweight', 'planweight', 'actweight', 'operateweight', 'remark', 'ischarge'],
+            tableDatas: this.download.list,
+            sheetName: 'Sheet1'
+          }
+        ]
+        json2excel(excelDatas, '系统用量', true, 'xlsx')
+      })
+    }
+
+  }
+}
+</script>
+<style lang="scss" scoped>
+  .operation{margin-top:10px;}
+  .search{margin-top:10px;}
+  .table{margin-top:10px;}
+ </style>

+ 1271 - 0
src/views/inventoryManagement/warehousing/index备份.vue

@@ -0,0 +1,1271 @@
+<template>
+  <div class="app-container">
+    <div class="search">
+      <el-date-picker v-model="table.getdataListParm.parammaps.inputDatetime" class="inputDatetime filter-item" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width: 250px;" />
+      <el-button class="el-icon-arrow-left elIconArrowLeft" @click="handleBefore" />
+      <el-button class="el-icon-arrow-right elIconArrowRight" @click="handleNext" />
+      <el-select v-model="table.getdataListParm.parammaps.feedid" filterable placeholder="饲料名称" class="filter-item" style="width: 150px;" clearable>
+        <el-option v-for="item in feedNameList" :key="item.id" :label="item.fname" :value="item.id" />
+      </el-select>
+      <el-select v-model="table.getdataListParm.parammaps.providerid" placeholder="供应商" class="filter-item" style="width: 150px;" clearable>
+        <el-option v-for="item in supplierList" :key="item.id" :label="item.providerName" :value="item.id" />
+      </el-select>
+      <el-select v-model="table.getdataListParm.parammaps.islaid" placeholder="是否入库" class="filter-item" style="width: 150px;" clearable>
+        <el-option v-for="item in islaidList" :key="item.id" :label="item.name" :value="item.name" />
+      </el-select>
+      <el-button class="successBorder" @click="handleSearch">查询</el-button>
+      <el-button class="successBorder" @click="handleRefresh">重置</el-button>
+    </div>
+    <div class="operation">
+      <el-button v-if="isRoleEdit" class="success" icon="el-icon-plus" @click="handleCreate">新增入库单</el-button>
+      <el-upload style="float: right;" :headers="headers" :data="uploadData" :action="uploadExcelUrl" :show-file-list="false" :before-upload="beforeImport" :on-success="handleImportSuccess">
+        <el-button v-if="isRoleEdit" class="import" icon="el-icon-download" style="float: right;">导入</el-button>
+      </el-upload>
+      <el-dropdown style="float: right;margin-right: 10px;">
+        <el-button class="export" icon="el-icon-upload2">导出</el-button>
+        <el-dropdown-menu slot="dropdown">
+          <el-dropdown-item @click.native="handleExport(1)">导出模板</el-dropdown-item>
+          <el-dropdown-item @click.native="handleExport(2)">导出数据</el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown>
+    </div>
+    <div class="table">
+      <el-table
+        :key="table.tableKey"
+        v-loading="table.listLoading"
+        element-loading-text="给我一点时间"
+        :data="table.list"
+        border
+        fit
+        highlight-current-row
+        style="width: 100%;"
+        :row-style="rowStyle"
+        :cell-style="cellStyle"
+        class="elTable table-fixed"
+      >
+        <el-table-column label="序号" align="center" type="index" width="50px">
+          <template slot-scope="scope">
+            <span>{{ scope.$index + (table.pageNum-1) * table.pageSize + 1 }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="入库日期" min-width="90px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.laiddate }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="饲料名称" min-width="90px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.feedname }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="供应商" min-width="90px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.providername }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="入库重量(kg)" min-width="90px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.operateweight }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="总价(元)" min-width="90px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.sumprice }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="批号" min-width="90px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.pcpde }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="备注" min-width="90px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.remark }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="入库状态" min-width="90px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.islaid }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="创建人" min-width="90px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.createemp }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="创建日期" min-width="90px" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.createdate }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center" width="80" class-name="small-padding fixed-width" fixed="right">
+          <template slot-scope="{row}">
+            <el-button class="miniSuccess" icon="el-icon-search" @click="handleSee(row)" />
+            <el-button v-if="row.islaid == '否'" class="miniSuccess" icon="el-icon-edit-outline" @click="handleUpdate(row)" />
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination v-show="table.total>=0" :total="table.total" :page.sync="table.getdataListParm.offset" :limit.sync="table.getdataListParm.pagecount" @pagination="getList" />
+    </div>
+
+    <!-- 新增入库单 -->
+    <el-dialog :fullscreen="dialogFull" :title="textMap[create.dialogStatus]" :visible.sync="create.dialogFormVisible" :close-on-click-modal="false" width="90%">
+      <template slot="title">
+        <div class="avue-crud__dialog__header">
+          <span class="el-dialog__title">
+            <span style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px" />
+            {{ textMap[create.dialogStatus] }}
+          </span>
+          <div class="avue-crud__dialog__menu" @click="dialogFull? dialogFull=false: dialogFull=true">
+            <svg-icon v-if="dialogFull" icon-class="exit-fullscreen" />
+            <svg-icon v-else icon-class="fullscreen" />
+          </div>
+        </div>
+      </template>
+      <div class="app-add">
+        <el-form ref="createTemp" :rules="create.rules" :model="create.createTemp" label-position="right" label-width="160px" style="width: 100%;margin:0 auto">
+          <el-row>
+            <el-col :span="24">
+              <h3 style="width: 160px;text-align: right;">基础信息</h3>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="入库日期:" prop="laiddate">
+                <el-date-picker v-model="create.createTemp.laiddate" :disabled="create.dialogStatus=='see'" class="filter-item" type="date" placeholder="入库日期" :clearable="false" :picker-options="create.pickerOptions1" format="yyyy-MM-dd" value-format="yyyy-MM-dd" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="送货单编号:" prop="wagonnumber">
+                <el-input ref="wagonnumber" v-model="create.createTemp.wagonnumber" :disabled="create.dialogStatus=='see'" class="filter-item" placeholder="送货单编号" type="text" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="饲料名称:" prop="feedname">
+                <el-autocomplete
+                  v-model="create.createTemp.feedname"
+                  value-key="fname"
+                  class="inline-input"
+                  :fetch-suggestions="feedNameSearch"
+                  placeholder="请选择饲料名称"
+                  style="width:98%"
+                  :disabled="create.dialogStatus=='see' || create.dialogStatus=='update'"
+                  @select="handleSelectFeedName"
+                  @blur="blurFeedName"
+                >
+                  <template slot-scope="{ item }">
+                    <span>{{ item.fname }}</span>
+                  </template>
+                </el-autocomplete>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="入库重量(kg):" prop="operateweight">
+                <el-input ref="operateweight" v-model.trim="create.createTemp.operateweight" :disabled="create.dialogStatus=='see'" class="filter-item" placeholder="最多两位小数" type="number" :step="0.01" @blur="blurOperateweight" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="供应商:" prop="providerid">
+                <el-input v-if="create.dialogStatus=='see'" ref="providername" v-model.trim="create.createTemp.providername" disabled class="filter-item" placeholder="请选择供应商" />
+                <el-select v-else v-model="create.createTemp.providerid" clearable placeholder="请选择供应商" :disabled="create.dialogStatus=='see'" class="filter-item" style="width: 100%" @change="changeSupplier">
+                  <el-option v-for="item in supplierList" :key="item.id" :label="item.providerName" :value="item.id" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="合同编号:" prop="contractcode">
+                <el-select v-model="create.createTemp.contractcode" clearable placeholder="请选择合同编号" :disabled="create.dialogStatus=='see'" class="filter-item" style="width: 100%" @change="changeContractNo">
+                  <el-option v-for="item in contractNoList" :key="item.id" :label="item.contractcodeCat" :value="item.contractcode" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <h3 style="width: 160px;text-align: right;">价格信息</h3>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="单价(元):" prop="pricenew">
+                <el-input ref="pricenew" v-model="create.createTemp.pricenew" :disabled="create.createTemp.contractcode !=='' || create.dialogStatus=='see'" class="filter-item" placeholder="最多两位小数" type="number" :step="0.01" @blur="blurPricenew" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="总价(元):" prop="sumprice">
+                <el-input ref="sumprice" v-model="create.createTemp.sumprice" :disabled="create.dialogStatus=='see'" class="filter-item" placeholder="最多两位小数" type="number" :step="0.01" @blur="blurSumprice" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <h3 style="width: 160px;text-align: right;">饲料信息</h3>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="毛重(kg):" prop="grossweight">
+                <el-input ref="grossweight" v-model.trim="create.createTemp.grossweight" :disabled="create.dialogStatus=='see'" class="filter-item" placeholder="最多两位小数" type="number" :step="0.01" @blur="blurGrossweight" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="皮重(kg):" prop="tareweight">
+                <el-input ref="tareweight" v-model.trim="create.createTemp.tareweight" :disabled="create.dialogStatus=='see'" class="filter-item" placeholder="最多两位小数" type="number" :step="0.01" @blur="blurTareweight" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="许可证号:" prop="licence">
+                <el-input ref="licence" v-model="create.createTemp.licence" :disabled="create.dialogStatus=='see'" class="filter-item" placeholder="许可证号" type="text" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="批号:" prop="pcpde">
+                <el-input ref="pcpde" v-model="create.createTemp.pcpde" :disabled="create.dialogStatus=='see'" class="filter-item" placeholder="批号" type="text" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="24">
+              <h3 style="width: 160px;text-align: right;">操作信息</h3>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="8">
+              <el-form-item label="创建人:" prop="createemp">
+                <el-input ref="createemp" v-model="create.createTemp.createemp" class="filter-item" placeholder="创建人" type="text" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="创建日期:" prop="createdate">
+                <el-date-picker v-model="create.createTemp.createdate" class="filter-item" type="date" placeholder="创建日期" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="备注:" prop="remark">
+                <el-input ref="remark" v-model="create.createTemp.remark" :disabled="create.dialogStatus=='see'" class="filter-item" placeholder="1-255字符" type="text" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+          <el-button v-if="create.dialogStatus == 'see' " class="cancelClose cancelClose1" @click="create.dialogFormVisible = false;getList(); ">关闭</el-button>
+          <el-button v-if="create.dialogStatus !== 'see' " class="cancelClose" @click="create.dialogFormVisible = false;getList(); ">关闭</el-button>
+          <el-button v-if="create.dialogStatus !== 'see' " class="save" :disabled="isokDisable" @click="create.dialogStatus==='create'?createData():updateData()">确认</el-button>
+        </div>
+      </div>
+    </el-dialog>
+
+    <!-- 初始化库存 -->
+    <el-dialog :fullscreen="dialogFull" :visible.sync="initial.dialogFormVisible" :close-on-click-modal="false" width="80%" height="55%">
+      <template slot="title">
+        <div class="avue-crud__dialog__header">
+          <span class="el-dialog__title">
+            <span style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px" />
+            {{ textMap[initial.dialogStatus] }}
+          </span>
+          <div class="avue-crud__dialog__menu" @click="dialogFull? dialogFull=false: dialogFull=true">
+            <svg-icon v-if="dialogFull" icon-class="exit-fullscreen" />
+            <svg-icon v-else icon-class="fullscreen" />
+          </div>
+        </div>
+      </template>
+      <div class="app-add" style="height: 100%;margin: 0 auto 60px;">
+        <div class="operation">
+          <el-button style="float: left;margin-bottom:10px;" class="success" @click="handleInitialExport">模板下载</el-button>
+          <el-upload style="float: left;margin-left: 10px;margin-bottom:10px;" action="" :auto-upload="false" accept=".xlsx, .xls" :show-file-list="false" :on-change="handleInitialImport">
+            <el-button class="success" icon="el-icon-download">导入</el-button>
+          </el-upload>
+        </div>
+        <div class="table">
+          <el-table
+            :key="initial.tableKey"
+            v-loading="initial.listLoading"
+            element-loading-text="给我一点时间"
+            :data="initial.list"
+            border
+            fit
+            highlight-current-row
+            style="width: 100%;"
+            :row-style="rowStyle"
+            :cell-style="cellStyle"
+            class="elTable table-fixed"
+          >
+            <el-table-column label="序号" align="center" type="index" width="50px" />
+            <el-table-column label="饲料名称" min-width="130px" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.fname }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="库存重量" min-width="130px" align="center">
+              <template slot-scope="scope">
+                <el-input v-model="scope.row.stockweight" placeholder="最多两位小数" type="number" :step="0.01" style="width:95%;padding:10px 0;" />
+              </template>
+            </el-table-column>
+          </el-table>
+          <div slot="footer" class="dialog-footer">
+            <el-button class="cancelClose" @click="initial.dialogFormVisible = false; ">关闭</el-button>
+            <el-button class="save" :disabled="isokDisable" @click="initialData()">确认</el-button>
+          </div>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+
+</template>
+
+<script>
+import { GetDataByName, GetDataByNames, checkButtons, ExecDataByConfig, failproccess, formatNum } from '@/api/common'
+import Pagination from '@/components/Pagination'
+import { MessageBox } from 'element-ui'
+import Cookies from 'js-cookie'
+import { json2excel, parseTime } from '@/utils/index.js'
+import axios from 'axios'
+import { getToken } from '@/utils/auth'
+import xlsx from 'xlsx'
+import { upload } from '@/utils/index.js'
+export default {
+  name: 'Warehousing',
+  components: { Pagination },
+  data() {
+    return {
+      dialogFull: false,
+      feedNameList: [], // 饲料名称
+      feedNameAddList: [], // 饲料名称新增
+      supplierList: [], // 供应商
+      contractNoList: [], // 合同编号
+      islaidList: [{ id: 0, name: '是' }, { id: 1, name: '否' }], // 是否入库
+      requestParams: [
+        { name: 'getFeedListEnable', offset: 0, pagecount: 0, parammaps: { pastureid: Cookies.get('pastureid') }},
+        { name: 'getProviderListEnable', offset: 0, pagecount: 0, parammaps: { pastureid: Cookies.get('pastureid') }}
+      ],
+      table: {
+        getdataListParm: {
+          name: 'getFeedlaidList',
+          page: 1,
+          offset: 1,
+          pagecount: parseInt(Cookies.get('pageCount')),
+          returntype: 'Map',
+          parammaps: {
+            pastureid: Cookies.get('pastureid'),
+            inputDatetime: '',
+            startTime: '',
+            stopTime: '',
+            feedid: '',
+            islaid: '',
+            providerid: ''
+          }
+        },
+        tableKey: 0,
+        list: [],
+        total: 0,
+        listLoading: true
+      },
+      create: {
+        dialogFormVisible: false,
+        dialogStatus: '',
+        pickerOptions1: {
+          disabledDate(time) {
+            return time.getTime() > Date.now()// 当天之前的时间可选
+          }
+        },
+        createTemp: {
+          laiddate: '', feedid: '', feedname: '', operateweight: '', providerid: '', providername: '', startweight: '', priceold: '', contractcode: '', pricenew: '', sumprice: '', grossweight: '', tareweight: '', licence: '', pcpde: '', createemp: '', createdate: '', remark: '', 'wagonnumber': ''
+        },
+        rules: {
+          laiddate: [{ type: 'string', required: true, message: '必填', trigger: 'blur' }],
+          feedname: [{ type: 'string', required: true, message: '必填', trigger: 'change' }],
+          pricenew: [{ type: 'string', required: true, message: '必填', trigger: 'blur' }]
+        },
+        getdataListParm: {
+          name: 'getBigContractListEnable',
+          offset: 0,
+          pagecount: '',
+          parammaps: { pastureid: Cookies.get('pastureid') }
+        },
+        getfeedNameParm: {
+          name: 'getFeedListEnableV2',
+          offset: 0,
+          pagecount: '',
+          parammaps: { pastureid: Cookies.get('pastureid') }
+        }
+      },
+      initial: {
+        dialogFormVisible: false,
+        dialogStatus: '',
+        rules: {},
+        getdataListParm: {
+          name: 'getinitFeed',
+          page: 1,
+          offset: 1,
+          pagecount: 6,
+          returntype: 'Map',
+          parammaps: {
+            pastureid: Cookies.get('pastureid')
+          }
+        },
+        tableKey: 0,
+        list: [],
+        total: 0,
+        listLoading: true,
+        character: {
+          fname: {
+            text: '饲料名称',
+            type: String
+          },
+          stockweight: {
+            text: '库存重量',
+            type: String
+          }
+        }
+      },
+      textMap: {
+        create: '新增入库单',
+        update: '编辑入库单',
+        see: '查看入库单',
+        initial: '初始化库存'
+      },
+      requestParam: {},
+      download: {
+        getdataListParm: {
+          name: 'getFeedlaidList',
+          page: 1,
+          offset: 1,
+          pagecount: 0,
+          returntype: 'Map',
+          parammaps: {
+            pastureid: Cookies.get('pastureid'),
+            inputDatetime: '',
+            startTime: '',
+            stopTime: '',
+            feedid: '',
+            islaid: '',
+            providerid: ''
+          }
+        },
+        list: []
+      },
+      isokDisable: false,
+      isRoleEdit: [],
+      rowStyle: { maxHeight: 30 + 'px', height: 30 + 'px' },
+      cellStyle: { padding: 0 + 'px' }
+    }
+  },
+  computed: {
+    // 设置请求头
+    headers() {
+      return {
+        token: getToken()
+      }
+    },
+    uploadData() {
+      return {
+        name: 'checkFeed,checkProviderRK,checkcontractcode,checkcontractcodePrice,insertFeedlaidUpload,insertFeedstorageLaidUpload',
+        importParams: '入库日期,送货单编号,饲料名称,供应商,合同编号,入库重量(kg),单价(元),总价(元),毛重(kg),皮重(kg),许可证号,批号,创建人,备注',
+        sheetname: 'Sheet1',
+        // 登录牧场
+        pastureid: Cookies.get('pastureid'),
+        // 日期参数
+        dateParams: '入库日期',
+        // 必填参数
+        requiredParams: '入库日期,饲料名称,入库重量(kg),单价(元)',
+        // 为数值的参数
+        numParams: '入库重量(kg),单价(元),总价(元),毛重(kg),皮重(kg)'
+      }
+    },
+    // 设置上传地址
+    uploadExcelUrl() {
+      return process.env.VUE_APP_BASE_API + 'authdata/ImportExcel'
+    }
+  },
+  created() {
+    this.getButtons()
+    this.getDownList()
+    this.getList()
+  },
+
+  methods: {
+
+    getButtons() {
+      const Edit = 'Warehousing'
+      const isRoleEdit = checkButtons(JSON.parse(sessionStorage.getItem('buttons')), Edit)
+      this.isRoleEdit = isRoleEdit
+    },
+    getDownList() {
+      GetDataByNames(this.requestParams).then(response => {
+        this.feedNameList = response.data.getFeedListEnable.list
+        this.supplierList = response.data.getProviderListEnable.list
+      })
+    },
+    handleBefore() {
+      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
+        var start = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() - 1))
+        var stop = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() - 1))
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
+        this.$forceUpdate()
+      }
+    },
+    handleNext() {
+      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
+        var start = new Date(this.table.getdataListParm.parammaps.inputDatetime[0].setDate(this.table.getdataListParm.parammaps.inputDatetime[0].getDate() + 1))
+        var stop = new Date(this.table.getdataListParm.parammaps.inputDatetime[1].setDate(this.table.getdataListParm.parammaps.inputDatetime[1].getDate() + 1))
+        this.table.getdataListParm.parammaps.inputDatetime.length = 0
+        this.table.getdataListParm.parammaps.inputDatetime.push(start, stop)
+        this.$forceUpdate()
+      }
+    },
+    getList() {
+      this.table.listLoading = true
+      GetDataByName(this.table.getdataListParm).then(response => {
+        console.log('table数据', response.data.list)
+        if (response.data.list !== null) {
+          this.table.list = response.data.list
+          this.table.pageNum = response.data.pageNum
+          this.table.pageSize = response.data.pageSize
+          this.table.total = response.data.total
+        } else {
+          this.table.list = []
+        }
+        setTimeout(() => {
+          this.table.listLoading = false
+        }, 100)
+      })
+    },
+    handleSearch() {
+      // console.log('点击了查询')
+      if (this.table.getdataListParm.parammaps.inputDatetime !== '' && this.table.getdataListParm.parammaps.inputDatetime !== null) {
+        this.table.getdataListParm.parammaps.startTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
+        this.table.getdataListParm.parammaps.stopTime = parseTime(this.table.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
+      } else {
+        this.table.getdataListParm.parammaps.inputDatetime = ''
+        this.table.getdataListParm.parammaps.startTime = ''
+        this.table.getdataListParm.parammaps.stopTime = ''
+      }
+      this.table.getdataListParm.offset = 1
+      this.getList()
+    },
+    handleRefresh() {
+      console.log('点击了重置')
+      this.table.getdataListParm.parammaps.inputDatetime = ''
+      this.table.getdataListParm.parammaps.startTime = ''
+      this.table.getdataListParm.parammaps.stopTime = ''
+      this.table.getdataListParm.parammaps.feedid = ''
+      this.table.getdataListParm.parammaps.islaid = ''
+      this.table.getdataListParm.parammaps.providerid = ''
+      this.table.getdataListParm.offset = 1
+      this.getList()
+    },
+
+    resetCreateTemp() {
+      this.create.createTemp = {
+        pastureid: Cookies.get('pastureid'), laiddate: parseTime(new Date(), '{y}-{m}-{d}'), feedid: '', feedname: '', operateweight: '', providerid: '', providername: '', startweight: '', priceold: '', contractcode: '', pricenew: '', sumprice: '', grossweight: '', tareweight: '', licence: '', pcpde: '', createemp: Cookies.get('employename'), createdate: parseTime(new Date(), '{y}-{m}-{d}'), remark: '', 'wagonnumber': ''
+      }
+      this.contractNoList = []
+    },
+    // 供应商
+    changeSupplier(item) {
+      console.log(item)
+      if (item !== '') {
+        this.create.createTemp.providername = this.supplierList.find(obj => obj.id == item).providerName
+      } else {
+        this.create.createTemp.providername = ''
+        this.create.createTemp.contractcode = ''
+        this.create.createTemp.pricenew = ''
+        this.create.createTemp.sumprice = ''
+        this.contractNoList = []
+      }
+      if (this.create.createTemp.feedid !== '' && this.create.createTemp.providerid !== '') {
+        this.getContractNoList()
+      }
+    },
+    // 合同编号
+    changeContractNo(item) {
+      if (item !== '') {
+        this.create.createTemp.pricenew = this.contractNoList.find(obj => obj.contractcode == item).price
+      } else {
+        this.create.createTemp.pricenew = ''
+      }
+      if (this.create.createTemp.operateweight !== '' && this.create.createTemp.pricenew !== '') {
+        this.create.createTemp.sumprice = parseFloat(this.create.createTemp.operateweight) * parseFloat(this.create.createTemp.pricenew)
+        this.create.createTemp.sumprice = formatNum(this.create.createTemp.sumprice, 2)
+      }
+    },
+    getContractNoList() {
+      this.create.getdataListParm.parammaps.feedid = this.create.createTemp.feedid
+      this.create.getdataListParm.parammaps.providerid = this.create.createTemp.providerid
+      GetDataByName(this.create.getdataListParm).then(response => {
+        console.log('table数据', response.data.list)
+        if (response.data.list !== null) {
+          this.contractNoList = response.data.list
+          this.create.createTemp.contractcode = ''
+          this.create.createTemp.pricenew = ''
+          this.create.createTemp.sumprice = ''
+        } else {
+          this.contractNoList = []
+          this.create.createTemp.contractcode = ''
+          this.create.createTemp.pricenew = ''
+          this.create.createTemp.sumprice = ''
+        }
+      })
+    },
+    feedNameSearch(queryString, cb) {
+      this.create.getfeedNameParm.parammaps['fname'] = queryString
+      GetDataByName(this.create.getfeedNameParm).then(response => {
+        console.log('模糊查询搜索data', response.data.list)
+        if (response.data.list == null) {
+          cb([])
+        } else {
+          cb(response.data.list)
+        }
+      })
+    },
+    handleSelectFeedName(item) {
+      console.log('模糊查询选中值', item)
+      this.create.createTemp.feedname = item.fname
+      this.create.createTemp.feedid = item.id
+      this.create.createTemp.startweight = item.stockweight
+      this.create.createTemp.priceold = item.price
+      this.create.createTemp.providerid = ''
+      this.create.createTemp.providername = ''
+      this.create.createTemp.contractcode = ''
+      this.create.createTemp.pricenew = ''
+      this.create.createTemp.sumprice = ''
+      if (this.create.createTemp.feedid !== '' && this.create.createTemp.providerid !== '') {
+        this.getContractNoList()
+      }
+    },
+    blurFeedName() {
+      this.create.createTemp.feedname = ''
+      this.create.createTemp.feedid = ''
+      this.create.createTemp.startweight = ''
+      this.create.createTemp.priceold = ''
+      this.create.createTemp.providerid = ''
+      this.create.createTemp.providername = ''
+      this.create.createTemp.contractcode = ''
+      this.create.createTemp.pricenew = ''
+      this.create.createTemp.sumprice = ''
+    },
+    // 入库重量
+    blurOperateweight() {
+      // 毛重grossweight皮重tareweight入库重量operateweight
+      if (this.create.createTemp.grossweight !== '' && this.create.createTemp.operateweight !== '') {
+        this.create.createTemp.tareweight = formatNum(parseFloat(this.create.createTemp.grossweight) - parseFloat(this.create.createTemp.operateweight), 2)
+      }
+      if (this.create.createTemp.grossweight !== '' && this.create.createTemp.operateweight !== '') {
+        if (parseFloat(this.create.createTemp.operateweight) > parseFloat(this.create.createTemp.grossweight)) {
+          this.create.createTemp.grossweight = formatNum(this.create.createTemp.operateweight, 2)
+          this.create.createTemp.tareweight = formatNum(parseFloat(this.create.createTemp.operateweight) - parseFloat(this.create.createTemp.operateweight), 2)
+        }
+      }
+      if (this.create.createTemp.tareweight !== '' && this.create.createTemp.grossweight !== '') {
+        if (this.create.createTemp.operateweight == '') {
+          this.create.createTemp.operateweight = formatNum(parseFloat(this.create.createTemp.grossweight) - parseFloat(this.create.createTemp.tareweight), 2)
+        }
+        if (parseFloat(this.create.createTemp.tareweight) > parseFloat(this.create.createTemp.grossweight)) {
+          this.create.createTemp.tareweight = formatNum(this.create.createTemp.grossweight, 2)
+          this.create.createTemp.operateweight = formatNum(parseFloat(this.create.createTemp.grossweight) - parseFloat(this.create.createTemp.tareweight), 2)
+        }
+      }
+      if (this.create.createTemp.operateweight !== '' && this.create.createTemp.pricenew !== '') {
+        this.create.createTemp.sumprice = parseFloat(this.create.createTemp.operateweight) * parseFloat(this.create.createTemp.pricenew)
+        this.create.createTemp.sumprice = formatNum(this.create.createTemp.sumprice, 2)
+      } else {
+        this.create.createTemp.sumprice = ''
+      }
+    },
+    // 毛重
+    blurGrossweight() {
+      // 毛重grossweight皮重tareweight入库重量operateweight
+      if (this.create.createTemp.grossweight !== '' && this.create.createTemp.operateweight !== '') {
+        this.create.createTemp.tareweight = formatNum(parseFloat(this.create.createTemp.grossweight) - parseFloat(this.create.createTemp.operateweight), 2)
+      }
+
+      if (this.create.createTemp.grossweight !== '' && this.create.createTemp.operateweight !== '') {
+        if (parseFloat(this.create.createTemp.operateweight) > parseFloat(this.create.createTemp.grossweight)) {
+          this.create.createTemp.grossweight = formatNum(this.create.createTemp.operateweight, 2)
+          this.create.createTemp.tareweight = formatNum(parseFloat(this.create.createTemp.operateweight) - parseFloat(this.create.createTemp.operateweight), 2)
+        }
+      }
+      if (this.create.createTemp.pricenew !== '' && this.create.createTemp.operateweight !== '') {
+        this.create.createTemp.sumprice = parseFloat(this.create.createTemp.operateweight) * parseFloat(this.create.createTemp.pricenew)
+        this.create.createTemp.sumprice = formatNum(this.create.createTemp.sumprice, 2)
+      } else {
+        this.create.createTemp.sumprice = ''
+      }
+    },
+    // 皮重
+    blurTareweight() {
+      // 毛重grossweight皮重tareweight入库重量operateweight
+      if (this.create.createTemp.operateweight !== '' && this.create.createTemp.tareweight !== '') {
+        this.create.createTemp.grossweight = formatNum(parseFloat(this.create.createTemp.tareweight) + parseFloat(this.create.createTemp.operateweight), 2)
+      }
+      if (this.create.createTemp.grossweight !== '' && this.create.createTemp.operateweight !== '') {
+        if (parseFloat(this.create.createTemp.operateweight) > parseFloat(this.create.createTemp.grossweight)) {
+          this.create.createTemp.grossweight = formatNum(this.create.createTemp.operateweight, 2)
+          this.create.createTemp.tareweight = formatNum(parseFloat(this.create.createTemp.operateweight) - parseFloat(this.create.createTemp.operateweight), 2)
+        }
+      }
+      if (this.create.createTemp.tareweight !== '' && this.create.createTemp.grossweight !== '') {
+        if (parseFloat(this.create.createTemp.tareweight) > parseFloat(this.create.createTemp.grossweight)) {
+          this.create.createTemp.tareweight = formatNum(this.create.createTemp.grossweight, 2)
+          this.create.createTemp.operateweight = formatNum(parseFloat(this.create.createTemp.grossweight) - parseFloat(this.create.createTemp.tareweight), 2)
+        } else {
+          this.create.createTemp.operateweight = formatNum(parseFloat(this.create.createTemp.grossweight) - parseFloat(this.create.createTemp.tareweight), 2)
+        }
+      }
+      if (this.create.createTemp.pricenew !== '' && this.create.createTemp.operateweight !== '') {
+        this.create.createTemp.sumprice = parseFloat(this.create.createTemp.operateweight) * parseFloat(this.create.createTemp.pricenew)
+        this.create.createTemp.sumprice = formatNum(this.create.createTemp.sumprice, 2)
+      } else {
+        this.create.createTemp.sumprice = ''
+      }
+    },
+    // 单价
+    blurPricenew() {
+      if (this.create.createTemp.operateweight !== '' && this.create.createTemp.pricenew !== '') {
+        this.create.createTemp.sumprice = parseFloat(this.create.createTemp.operateweight) * parseFloat(this.create.createTemp.pricenew)
+        this.create.createTemp.sumprice = formatNum(this.create.createTemp.sumprice, 2)
+      } else {
+        this.create.createTemp.sumprice = ''
+      }
+    },
+    // 总价
+    blurSumprice() {
+      if (this.create.createTemp.sumprice !== '' && this.create.createTemp.pricenew !== '') {
+        this.create.createTemp.operateweight = formatNum(parseFloat(this.create.createTemp.sumprice) / parseFloat(this.create.createTemp.pricenew), 2)
+      } else {
+        this.create.createTemp.operateweight = ''
+      }
+    },
+    handleCreate() {
+      console.log('点击了新增入库单')
+      this.dialogFull = false
+      this.create.dialogStatus = 'create'
+      this.create.dialogFormVisible = true
+      this.$nextTick(() => {
+        this.resetCreateTemp()
+        this.$refs.createTemp.resetFields()
+      })
+    },
+    createData() {
+      this.$refs['createTemp'].validate(valid => {
+        if (valid) {
+          if (this.create.createTemp.operateweight == '' && this.create.createTemp.grossweight == '') {
+            this.$message({ type: 'error', message: '请输入入库重量或毛重', duration: 2000 })
+            return false
+          }
+          if (this.create.createTemp.sumprice.length > 15) {
+            this.$message({ type: 'error', message: '数值过大请重新输入', duration: 2000 })
+          }
+          const keepTwoNum = /^\d+(\.\d{1,2})?$/
+          // 入库重量
+          if (this.create.createTemp.operateweight !== '') {
+            if (this.create.createTemp.operateweight == 0) {
+              this.$message({ type: 'error', message: '入库重量请输入自然数并保留两位小数', duration: 2000 })
+              return false
+            } else {
+              if (!keepTwoNum.test(parseFloat(this.create.createTemp.operateweight))) {
+                this.$message({ type: 'error', message: '入库重量请输入自然数并保留两位小数', duration: 2000 })
+                return false
+              }
+            }
+          }
+          // 单价
+          if (this.create.createTemp.pricenew == 0) {
+            this.$message({ type: 'error', message: '单价请输入自然数并保留两位小数', duration: 2000 })
+            return false
+          } else {
+            if (!keepTwoNum.test(parseFloat(this.create.createTemp.pricenew))) {
+              this.$message({ type: 'error', message: '单价请输入自然数并保留两位小数', duration: 2000 })
+              return false
+            }
+          }
+          // 总价
+          if (this.create.createTemp.pricenew !== '' && this.create.createTemp.operateweight !== '') {
+            if (this.create.createTemp.sumprice == 0) {
+              this.$message({ type: 'error', message: '总价请输入自然数并保留两位小数', duration: 2000 })
+              return false
+            } else {
+              if (!keepTwoNum.test(parseFloat(this.create.createTemp.sumprice))) {
+                this.$message({ type: 'error', message: '总价请输入自然数并保留两位小数', duration: 2000 })
+                return false
+              }
+            }
+          }
+          // 毛重
+          if (this.create.createTemp.grossweight !== '') {
+            if (this.create.createTemp.grossweight == 0) {
+              this.$message({ type: 'error', message: '毛重请输入自然数并保留两位小数', duration: 2000 })
+              return false
+            } else {
+              if (!keepTwoNum.test(parseFloat(this.create.createTemp.grossweight))) {
+                this.$message({ type: 'error', message: '毛重请输入自然数并保留两位小数', duration: 2000 })
+                return false
+              }
+            }
+          }
+          // 皮重
+          if (this.create.createTemp.tareweight !== '') {
+            if (this.create.createTemp.tareweight == 0) {
+              this.$message({ type: 'error', message: '皮重请输入自然数并保留两位小数', duration: 2000 })
+              return false
+            } else {
+              if (!keepTwoNum.test(parseFloat(this.create.createTemp.tareweight))) {
+                this.$message({ type: 'error', message: '皮重请输入自然数并保留两位小数', duration: 2000 })
+                return false
+              }
+            }
+          }
+
+          MessageBox.confirm('是否确认保存当前内容', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning'
+          }).then(() => {
+            this.isokDisable = true
+            setTimeout(() => {
+              this.isokDisable = false
+            }, 1000)
+            this.requestParam.common = { 'returnmap': '0' }
+            this.requestParam.data = []
+            this.requestParam.data[0] = { 'name': 'insertFeedlaid', 'type': 'e', 'parammaps': {
+              'pastureid': this.create.createTemp.pastureid,
+              'laiddate': this.create.createTemp.laiddate,
+              'feedid': this.create.createTemp.feedid,
+              'feedname': this.create.createTemp.feedname,
+              'providerid': this.create.createTemp.providerid,
+              'providername': this.create.createTemp.providername,
+              'contractcode': this.create.createTemp.contractcode,
+              'operateweight': this.create.createTemp.operateweight,
+              'grossweight': this.create.createTemp.grossweight,
+              'tareweight': this.create.createTemp.tareweight,
+              'sumprice': this.create.createTemp.sumprice,
+              'licence': this.create.createTemp.licence,
+              'pcpde': this.create.createTemp.pcpde,
+              'remark': this.create.createTemp.remark,
+              'createdate': this.create.createTemp.createdate,
+              'createemp': this.create.createTemp.createemp,
+              'startweight': this.create.createTemp.startweight,
+              'priceold': this.create.createTemp.priceold,
+              'pricenew': this.create.createTemp.pricenew,
+              'wagonnumber': this.create.createTemp.wagonnumber
+            }}
+            if (this.create.createTemp.operateweight !== '' && parseFloat(this.create.createTemp.operateweight) > 0) {
+              this.requestParam.data[1] = { 'name': 'insertFeedstorageLaid', 'type': 'e', 'parammaps': {
+                'operateweight': this.create.createTemp.operateweight,
+                'pastureid': this.create.createTemp.pastureid,
+                'feedid': this.create.createTemp.feedid,
+                'fname': this.create.createTemp.fname,
+                'pcpde': this.create.createTemp.pcpde,
+                'stockweight': this.create.createTemp.startweight,
+                'price': this.create.createTemp.pricenew
+              }}
+            }
+            console.log('点击了新增入库单保存', this.requestParam)
+            ExecDataByConfig(this.requestParam).then(response => {
+              if (response.msg === 'fail') {
+                this.$notify({ title: '保存失败', message: response.data, type: 'warning', duration: 2000 })
+              } else {
+                this.$notify({ title: '', message: '成功', type: 'success', duration: 2000 })
+                this.create.dialogFormVisible = false
+                this.getList()
+              }
+            })
+          })
+        }
+      })
+    },
+    handleUpdate(row) {
+      console.log('点击了编辑')
+      this.$nextTick(() => {
+        this.$refs.createTemp.resetFields()
+      })
+      this.dialogFull = false
+      this.create.dialogStatus = 'update'
+      this.create.dialogFormVisible = true
+      row.feedid = String(row.feedid)
+      if (row.providerid == -1) {
+        row.providerid = ''
+        row.providername = ''
+      }
+      this.create.createTemp = Object.assign({}, row)
+    },
+    updateData() {
+      this.$refs['createTemp'].validate(valid => {
+        if (valid) {
+          if (this.create.createTemp.operateweight == '' && this.create.createTemp.grossweight == '') {
+            this.$message({ type: 'error', message: '请输入入库重量或毛重', duration: 2000 })
+            return false
+          }
+          if (this.create.createTemp.sumprice.length > 15) {
+            this.$message({ type: 'error', message: '数值过大请重新输入', duration: 2000 })
+          }
+          const keepTwoNum = /^\d+(\.\d{1,2})?$/
+          // 入库重量
+          if (this.create.createTemp.operateweight !== '') {
+            if (this.create.createTemp.operateweight == 0) {
+              this.$message({ type: 'error', message: '入库重量请输入自然数并保留两位小数', duration: 2000 })
+              return false
+            } else {
+              if (!keepTwoNum.test(parseFloat(this.create.createTemp.operateweight))) {
+                this.$message({ type: 'error', message: '入库重量请输入自然数并保留两位小数', duration: 2000 })
+                return false
+              }
+            }
+          }
+          // 单价
+          if (this.create.createTemp.pricenew == 0) {
+            this.$message({ type: 'error', message: '单价请输入自然数并保留两位小数', duration: 2000 })
+            return false
+          } else {
+            if (!keepTwoNum.test(parseFloat(this.create.createTemp.pricenew))) {
+              this.$message({ type: 'error', message: '单价请输入自然数并保留两位小数', duration: 2000 })
+              return false
+            }
+          }
+          // 总价
+          if (this.create.createTemp.pricenew !== '' && this.create.createTemp.operateweight !== '') {
+            if (this.create.createTemp.sumprice == 0) {
+              this.$message({ type: 'error', message: '总价请输入自然数并保留两位小数', duration: 2000 })
+              return false
+            } else {
+              if (!keepTwoNum.test(parseFloat(this.create.createTemp.sumprice))) {
+                this.$message({ type: 'error', message: '总价请输入自然数并保留两位小数', duration: 2000 })
+                return false
+              }
+            }
+          }
+          // 毛重
+          if (this.create.createTemp.grossweight !== '') {
+            if (this.create.createTemp.grossweight == 0) {
+              this.$message({ type: 'error', message: '毛重请输入自然数并保留两位小数', duration: 2000 })
+              return false
+            } else {
+              if (!keepTwoNum.test(parseFloat(this.create.createTemp.grossweight))) {
+                this.$message({ type: 'error', message: '毛重请输入自然数并保留两位小数', duration: 2000 })
+                return false
+              }
+            }
+          }
+          // 皮重
+          if (this.create.createTemp.tareweight !== '') {
+            if (this.create.createTemp.tareweight == 0) {
+              this.$message({ type: 'error', message: '皮重请输入自然数并保留两位小数', duration: 2000 })
+              return false
+            } else {
+              if (!keepTwoNum.test(parseFloat(this.create.createTemp.tareweight))) {
+                this.$message({ type: 'error', message: '皮重请输入自然数并保留两位小数', duration: 2000 })
+                return false
+              }
+            }
+          }
+          MessageBox.confirm('是否确认保存当前内容', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning'
+          }).then(() => {
+            this.isokDisable = true
+            setTimeout(() => {
+              this.isokDisable = false
+            }, 1000)
+            this.requestParam.common = { 'returnmap': '0' }
+            this.requestParam.data = []
+            this.requestParam.data[0] = { 'name': 'updateFeedlaid', 'type': 'e', 'parammaps': {
+              'pastureid': this.create.createTemp.pastureid,
+              'id': this.create.createTemp.id,
+              'laiddate': this.create.createTemp.laiddate,
+              'feedid': this.create.createTemp.feedid,
+              'feedname': this.create.createTemp.feedname,
+              'providerid': this.create.createTemp.providerid,
+              'providername': this.create.createTemp.providername,
+              'contractcode': this.create.createTemp.contractcode,
+              'operateweight': this.create.createTemp.operateweight,
+              'grossweight': this.create.createTemp.grossweight,
+              'tareweight': this.create.createTemp.tareweight,
+              'sumprice': this.create.createTemp.sumprice,
+              'licence': this.create.createTemp.licence,
+              'pcpde': this.create.createTemp.pcpde,
+              'remark': this.create.createTemp.remark,
+              'createdate': this.create.createTemp.createdate,
+              'createemp': this.create.createTemp.createemp,
+              'startweight': this.create.createTemp.startweight,
+              'priceold': this.create.createTemp.priceold,
+              'pricenew': this.create.createTemp.pricenew,
+              'wagonnumber': this.create.createTemp.wagonnumber
+            }}
+            if (this.create.createTemp.operateweight !== '' && parseFloat(this.create.createTemp.operateweight) > 0) {
+              this.requestParam.data[1] = { 'name': 'insertFeedstorageLaid', 'type': 'e', 'parammaps': {
+                'operateweight': this.create.createTemp.operateweight,
+                'pastureid': this.create.createTemp.pastureid,
+                'feedid': this.create.createTemp.feedid,
+                'fname': this.create.createTemp.fname,
+                'pcpde': this.create.createTemp.pcpde,
+                'stockweight': this.create.createTemp.startweight,
+                'price': this.create.createTemp.pricenew
+              }}
+            }
+            console.log('点击了新增入库单保存', this.requestParam)
+            ExecDataByConfig(this.requestParam).then(response => {
+              if (response.msg === 'fail') {
+                this.$notify({ title: '保存失败', message: response.data, type: 'warning', duration: 2000 })
+              } else {
+                this.$notify({ title: '', message: '成功', type: 'success', duration: 2000 })
+                this.create.dialogFormVisible = false
+                this.getList()
+              }
+            })
+          })
+        }
+      })
+    },
+    handleSee(row) {
+      console.log('点击了查看')
+      this.$nextTick(() => {
+        this.$refs.createTemp.resetFields()
+      })
+      this.dialogFull = false
+      this.create.dialogStatus = 'see'
+      this.create.dialogFormVisible = true
+      if (row.providerid == -1) {
+        row.providerid = ''
+        row.providername = ''
+      }
+      this.create.createTemp = Object.assign({}, row)
+    },
+
+    handleInitial() {
+      console.log('点击了初始化库存')
+      this.dialogFull = false
+      this.initial.dialogStatus = 'initial'
+      this.initial.dialogFormVisible = true
+      this.getInitialList()
+    },
+    getInitialList() {
+      this.initial.listLoading = true
+      GetDataByName(this.initial.getdataListParm).then(response => {
+        console.log('table数据', response.data.list)
+        if (response.data.list !== null) {
+          this.initial.list = response.data.list
+          this.initial.pageNum = response.data.pageNum
+          this.initial.pageSize = response.data.pageSize
+          this.initial.total = response.data.total
+        } else {
+          this.initial.list = []
+        }
+        setTimeout(() => {
+          this.initial.listLoading = false
+        }, 100)
+      })
+    },
+    handleInitialExport() {
+      console.log('点击了初始化库存导出')
+
+      const ExcelDatas = [
+        {
+          tHeader: ['饲料名称', '库存重量'],
+          filterVal: ['fname', 'stockweight'],
+          tableDatas: this.initial.list,
+          sheetName: '初始化库存'
+        }
+      ]
+      json2excel(ExcelDatas, '初始化库存', true, 'xlsx')
+    },
+    async handleInitialImport(eve) {
+      const file = eve.raw
+      if (!file) return
+      let reader = await upload(file)
+      const worker = xlsx.read(reader, { type: 'binary' })
+      // 将返回的数据转换为json对象的数据
+      reader = xlsx.utils.sheet_to_json(worker.Sheets[worker.SheetNames[0]])
+      console.log(reader)
+      const arr = []
+      reader.forEach(item => {
+        const obj = {}
+        for (const key in this.initial.character) {
+          if (!this.initial.character.hasOwnProperty(key)) break
+          let v = this.initial.character[key]
+          const text = v.text
+          const type = v.type
+          v = item[text] || ''
+          type === 'string' ? (v = String(v)) : null
+          type === 'number' ? (v = Number(v)) : null
+          obj[key] = v
+        }
+        arr.push(obj)
+      })
+      console.log('导入处理后数据', arr)
+      var sum = 0
+      for (let i = 0; i < this.initial.list.length; i++) {
+        for (let j = 0; j < arr.length; j++) {
+          if (this.initial.list[i].fname == arr[j].fname) {
+            this.initial.list[i].stockweight = arr[j].stockweight
+            sum++
+            arr.splice(j, 1)
+          }
+        }
+      }
+      console.log(arr)
+      for (let i = 0; i < arr.length; i++) {
+        this.$set(arr[i], 'msg', '饲料名称与系统不匹配')
+      }
+      console.log(sum)
+      this.$message({ title: '成功', message: '导入成功:' + sum + '条!', type: 'success', duration: 2000 })
+      this.$notify({ title: '失败', message: '导入失败:' + arr.length + '条!', type: 'danger', duration: 2000 })
+      if (arr.length > 0) {
+        const ExcelDatas1 = [
+          {
+            tHeader: ['饲料名称', '库存重量', '报错信息'],
+            filterVal: ['fname', 'stockweight', 'msg'],
+            tableDatas: arr,
+            sheetName: 'ExcelDatas1'
+          }
+        ]
+        json2excel(ExcelDatas1, '初始化库存报错信息', true, 'xlsx')
+      }
+    },
+    initialData() {
+      console.log('点击了初始化库存保存')
+      this.isokDisable = true
+      setTimeout(() => {
+        this.isokDisable = false
+      }, 1000)
+      var rulesStockweight = /^\d+(\.\d{1,2})?$/
+      for (let i = 0; i < this.initial.list.length; i++) {
+        if (!rulesStockweight.test(parseFloat(this.initial.list[i].stockweight))) {
+          this.$message({ type: 'warning', message: '库存重量不可小于0,且保留俩位小数', duration: 2000 })
+          return false
+        }
+      }
+      this.requestParam.common = { 'returnmap': '0' }
+      this.requestParam.data = []
+      this.requestParam.data[0] = { 'name': 'clearFS', 'type': 'e', 'parammaps': {
+        'pastureid': Cookies.get('pastureid')
+      }}
+      this.requestParam.data[1] = { 'name': 'insertSpotList', 'resultmaps': { 'list': this.initial.list }}
+      this.requestParam.data[1].children = []
+      this.requestParam.data[1].children[0] = { 'name': 'insertFeedstorage', 'type': 'e', 'parammaps': {
+        pastureid: '@insertSpotList.pastureid',
+        feedid: '@insertSpotList.feedid',
+        fname: '@insertSpotList.fname',
+        pcpde: '@insertSpotList.pcpde',
+        stockweight: '@insertSpotList.stockweight',
+        price: '@insertSpotList.price'
+      }}
+      ExecDataByConfig(this.requestParam).then(response => {
+        if (response.msg === 'fail') {
+          this.$notify({ title: '保存失败', message: response.data, type: 'warning', duration: 2000 })
+        } else {
+          this.$notify({ title: '', message: '成功', type: 'success', duration: 2000 })
+          this.create.dialogFormVisible = false
+          this.getList()
+        }
+      })
+    },
+    // 导出
+    handleExport(item) {
+      if (item == 1) {
+        console.log('点击了导出模板')
+        const requestParam = this.requestParam
+        const url = process.env.VUE_APP_BASE_API + 'file/导入导出模板/库存管理/入库导入模板.xlsx' // 请求下载文件的地址
+        console.log(url)
+        axios({
+          method: 'GET',
+          url: url,
+          data: requestParam,
+          headers: { token: getToken(), optname: 'insertcustomdoc' },
+          responseType: 'blob'
+        }).then(res => {
+          if (!res) return
+          this.percentage = 99
+          setTimeout(() => {
+            this.isPercentage = false
+          }, 2000)
+          const blob = new Blob([res.data], {
+            type: 'application/octet-stream;charset=utf-8'
+          })
+          const url = window.URL.createObjectURL(blob)
+          const aLink = document.createElement('a')
+          aLink.style.display = 'none'
+          aLink.href = url
+          const docname = '入库管理导入模板.xlsx'
+          aLink.setAttribute('download', docname) // 下载的文件
+          document.body.appendChild(aLink)
+          aLink.click()
+          document.body.removeChild(aLink)
+          window.URL.revokeObjectURL(url)
+        })
+      } else {
+        console.log('点击了导出数据')
+        this.download.getdataListParm.parammaps = this.table.getdataListParm.parammaps
+        if (this.download.getdataListParm.parammaps.inputDatetime !== '' && this.download.getdataListParm.parammaps.inputDatetime !== null) {
+          this.download.getdataListParm.parammaps.startTime = parseTime(this.download.getdataListParm.parammaps.inputDatetime[0], '{y}-{m}-{d}')
+          this.download.getdataListParm.parammaps.stopTime = parseTime(this.download.getdataListParm.parammaps.inputDatetime[1], '{y}-{m}-{d}')
+        } else {
+          this.download.getdataListParm.parammaps.inputDatetime = ''
+          this.download.getdataListParm.parammaps.startTime = ''
+          this.download.getdataListParm.parammaps.stopTime = ''
+        }
+        GetDataByName(this.download.getdataListParm).then(response => {
+          if (response.data.list !== null) {
+            this.download.list = response.data.list
+          } else {
+            this.download.list = []
+          }
+          var excelDatas = [
+            {
+              tHeader: ['入库日期', '送货单编号', '饲料名称', '供应商', '合同编号', '入库重量(kg)', '单价(元)', '总价', '毛重(kg)', '皮重(kg)', '许可证号', '批号', '创建人', '创建日期', '备注'],
+              filterVal: ['laiddate', 'wagonnumber', 'feedname', 'providername', 'contractcode', 'operateweight', 'pricenew', 'sumprice', 'grossweight', 'tareweight', 'licence', 'pcpde', 'createemp', 'createdate', 'remark'],
+              tableDatas: this.download.list,
+              sheetName: 'Sheet1'
+            }
+          ]
+          json2excel(excelDatas, '入库管理', true, 'xlsx')
+        })
+      }
+    },
+
+    beforeImport(file) {
+      const isLt2M = file.size / 1024 / 1024 < 2
+      if (!isLt2M) {
+        this.$message.error('上传文件大小不能超过 2MB!')
+      }
+      return isLt2M
+    },
+    handleImportSuccess(res, file) {
+      this.getList()
+      if (res.msg === 'ok') {
+        this.$message({ title: '成功', message: '导入成功:' + res.data.success + '条!', type: 'success', duration: 2000 })
+        if (res.data.err_count > 0) {
+          this.$notify({ title: '失败', message: '导入失败:' + res.data.err_count + '条!', type: 'danger', duration: 2000 })
+           import('@/vendor/Export2Excel').then(excel => {
+             const list1 = res.data.result
+             const tHeader = [
+               '入库日期', '送货单编号', '饲料名称', '供应商', '合同编号', '入库重量(kg)', '单价(元)', '总价(元)', '毛重(kg)', '皮重(kg)', '许可证号', '批号', '创建人', '创建日期', '备注', '错误信息'
+             ]
+             const filterVal = [
+               '入库日期', '送货单编号', '饲料名称', '供应商', '合同编号', '入库重量(kg)', '单价(元)', '总价(元)', '毛重(kg)', '皮重(kg)', '许可证号', '批号', '创建人', '创建日期', '备注', 'error_msg'
+             ]
+             const data1 = this.formatJson(filterVal, list1)
+             excel.export_json_to_excel({ header: tHeader, data: data1, filename: '入库管理导入报错信息', autoWidth: true, bookType: 'xlsx' })
+           })
+        }
+      } else {
+        this.$notify({ title: '失败', message: '上传失败', type: 'danger', duration: 2000 })
+      }
+    },
+    formatJson(filterVal, jsonData) {
+      return jsonData.map(v =>
+        filterVal.map(j => {
+          if (j === 'timestamp') {
+            return parseTime(v[j])
+          } else {
+            return v[j]
+          }
+        })
+      )
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+  .search{margin-top:10px;}
+  .table{margin-top:10px;}
+</style>

+ 78 - 41
src/views/systemManagement/operation/index.vue

@@ -5,8 +5,11 @@
         <el-option v-for="item in operationModuleList" :key="item.id" :label="item.name" :value="item.id" />
       </el-select>
       <el-input v-model="table.getdataListParm.parammaps.rolename" placeholder="操作内容" style="width: 180px;" class="filter-item" clearable />
+      <el-select v-model="table.getdataListParm.parammaps.enable" placeholder="操作方式" class="filter-item" style="width: 120px;" clearable>
+        <el-option v-for="item in operationModeList" :key="item.id" :label="item.name" :value="item.id" />
+      </el-select>
       <el-select v-model="table.getdataListParm.parammaps.enable" placeholder="操作人" class="filter-item" style="width: 120px;" clearable>
-        <el-option v-for="item in operationModuleList" :key="item.id" :label="item.name" :value="item.id" />
+        <el-option v-for="item in operatorList" :key="item.id" :label="item.name" :value="item.id" />
       </el-select>
       <el-date-picker ref="inputDatetime" v-model="table.getdataListParm.parammaps.inputDatetime" class="inputDatetime filter-item" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width: 250px;" />
       <el-button class="successBorder" @click="handleSearch">查询</el-button>
@@ -32,6 +35,7 @@
           </template>
         </el-table-column>
         <el-table-column label="操作模块" min-width="130px" align="center" prop="rolename" />
+        <el-table-column label="操作方式" min-width="130px" align="center" prop="rolename" />
         <el-table-column label="操作内容" min-width="130px" align="center" prop="rolename" />
         <el-table-column label="操作人" min-width="130px" align="center" prop="rolename" />
         <el-table-column label="操作时间" min-width="130px" align="center" prop="rolename" />
@@ -44,45 +48,39 @@
       <pagination v-show="table.total>=0" :total="table.total" :page.sync="table.getdataListParm.offset" :limit.sync="table.getdataListParm.pagecount" @pagination="getList" />
     </div>
 
-    <el-dialog :title="textMap[see.dialogStatus]" :visible.sync="see.dialogFormVisible" :close-on-click-modal="false" width="30%">
+    <el-dialog :title="textMap[see.dialogStatus]" :visible.sync="see.dialogFormVisible" :close-on-click-modal="false" width="90%">
       <div class="app-add">
-        <el-form :model="see.temp" label-position="right" label-width="110px" style="width: 90%;margin:0 auto 50px">
-          <el-row>
-            <el-col :span="24">
-              <el-form-item label="操作模块:" prop="rolename">
-                <span>{{ see.temp.rolename }}</span>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="24">
-              <el-form-item label="操作内容:" prop="rolename">
-                <span>{{ see.temp.rolename }}</span>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="24">
-              <el-form-item label="操作人:" prop="rolename">
-                <span>{{ see.temp.rolename }}</span>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="24">
-              <el-form-item label="操作时间:" prop="rolename">
-                <span>{{ see.temp.rolename }}</span>
-              </el-form-item>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="24">
-              <el-form-item label="操作详情:" prop="rolename">
-                <span>{{ see.temp.rolename }}</span>
-              </el-form-item>
-            </el-col>
-          </el-row>
-        </el-form>
+        <div class="seeContent">
+          <div class="left">
+            <div v-for="(i,item) in 4">
+              <b>操作模块:</b>
+              <span>配方计划/配方模板</span>
+            </div>
+          </div>
+          <div class="right">
+            <div class="right-t">上</div>
+            <div class="right-b">
+              <div class="right-b-l">
+                <div class="title">
+                  修改前
+                </div>
+                <div class="right-content" v-for="(i,item) in 24">
+                  <b>操作模块:</b>
+                  <span>配方计划/配方模板</span>
+                </div>
+              </div>
+              <div class="right-b-r">
+                <div class="title">
+                  修改前
+                </div>
+                <div class="right-content" v-for="(i,item) in 24">
+                  <b>操作模块:</b>
+                  <span>配方计划/配方模板</span>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
         <div slot="footer" class="dialog-footer">
           <el-button class="cancelClose cancelClose1" @click="see.dialogFormVisible = false; ">关闭</el-button>
         </div>
@@ -92,7 +90,7 @@
 </template>
 
 <script>
-import { GetDataByName } from '@/api/common'
+import { postJson } from '@/api/common'
 import Cookies from 'js-cookie'
 import { parseTime } from '@/utils/index.js'
 import Pagination from '@/components/Pagination'
@@ -102,6 +100,8 @@ export default {
   data() {
     return {
       operationModuleList: [], // 操作模块
+      operationModeList:[],//操作方式
+      operatorList:[],//操作人
       table: {
         getdataListParm: {
           name: 'getRoleList',
@@ -144,7 +144,9 @@ export default {
   methods: {
     getList() {
       this.table.listLoading = true
-      GetDataByName(this.table.getdataListParm).then(response => {
+      let url = 'authdata/GetDataByName'
+      let data = this.table.getdataListParm
+      postJson(url,data).then(response => {
         console.log('table数据', response.data.list)
         if (response.data.list !== null) {
           this.table.list = response.data.list
@@ -185,4 +187,39 @@ export default {
 <style lang="scss" scoped>
   .search{margin-top:10px;}
   .table{margin-top:10px;}
+  .seeContent{
+    flex: 1;
+    height: 100%;
+    display: flex;
+    height: 400px;
+    border-bottom: 1px solid #000;
+    .left{
+      width: 300px;
+      height: 100%;
+      border-right: 1px solid #000;
+      padding-top: 10px;
+      text-align: center;
+      div{font-size: 14px;line-height: 18px;}
+    }
+    .right{
+      flex: 1;
+      height: 100%;
+      .right-t{height: 50px;border-bottom: 1px solid #000;text-align: center;line-height: 50px;}
+      .right-b{
+        flex: 1;display: flex;height: 350px;border-right: 1px solid #000;overflow-y: auto;
+        div{
+          flex: 1 1;text-align: center;
+          .title{padding-top: 10px;}
+          .right-content{font-size: 12px;line-height: 18px;}
+        }
+        .right-b-l{
+          border-right: 1px solid #000;height: 100%;
+        }
+      }
+    }
+  }
+  .app-add{padding-bottom: 30px;}
+  /deep/ .el-dialog__body{
+    padding: 0 0;
+  }
 </style>