chris 2 年 前
コミット
cc4ea50fe4
1 ファイル変更79 行追加5 行削除
  1. 79 5
      src/views/modules/warehouse/inventory.vue

+ 79 - 5
src/views/modules/warehouse/inventory.vue

@@ -34,7 +34,7 @@
           prop="inventoryCode"
           header-align="center"
           align="center"
-          min-width="140"
+          width="140"
           :show-tooltip-when-overflow="true"
           label="编码">
         </el-table-column>
@@ -42,7 +42,8 @@
           prop="createTime"
           header-align="center"
           align="center"
-          min-width="160"
+          width="160"
+          :show-tooltip-when-overflow="true"
           label="开始日期">
         </el-table-column>
         <el-table-column
@@ -56,6 +57,7 @@
           prop="state"
           header-align="center"
           align="center"
+          min-width="100"
           :formatter="formatState"
           label="状态">
         </el-table-column>
@@ -63,6 +65,7 @@
           prop="approverState"
           header-align="center"
           align="center"
+          min-width="100"
           :formatter="formatApproveState"
           label="审批状态">
         </el-table-column>
@@ -70,6 +73,7 @@
           prop="approver"
           header-align="center"
           align="center"
+          min-width="100"
           label="当前处理人">
         </el-table-column>
         <el-table-column
@@ -92,15 +96,28 @@
           :show-tooltip-when-overflow="true"
           label="备注">
         </el-table-column>
+        <el-table-column
+          prop="attachList"
+          header-align="center"
+          align="center"
+          min-width="120"
+          label="导入文件记录">
+          <template slot-scope="scope">
+            <div v-for="(item, index) in scope.row.attachList" style="display: inline">
+              <span v-if="index > 0">,</span>
+              <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
+            </div>
+          </template>
+        </el-table-column>
         <el-table-column
           fixed="right"
           header-align="center"
           align="center"
-          width="100"
+          width="140"
           label="操作">
           <template slot-scope="scope">
             <el-button v-if="isAuth('wh:inventory:info')" type="text" size="small" @click="detailHandle(scope.row.inventoryId)">查看</el-button>
-            <el-button v-if="isAuth('wh:inventory:export') && Number(scope.row.state) === 0" type="text" size="small" @click="exportExcel(scope.row.warehouseId)">导出</el-button>
+            <el-button v-if="isAuth('wh:inventory:export') && Number(scope.row.state) === 0" type="text" size="small" @click="exportExcel(scope.row.inventoryId)">导出</el-button>
             <el-button v-if="isAuth('wh:inventory:import') && Number(scope.row.state) === 0" type="text" size="small" @click="importExcel()">导入</el-button>
 <!--            <el-button v-if="isAuth('wh:inventory:start') && Number(scope.row.state) === 0" type="text" size="small" @click="addOrUpdateHandle(scope.row.inventoryId, false)">盘点</el-button>-->
           </template>
@@ -120,6 +137,10 @@
     <inventory-add v-if="inventoryAddVisible" ref="inventoryAdd" @refreshDataList="getDataList" @onChose="onChose"></inventory-add>
     <inventory-begin v-if="inventoryDetailVisible" ref="inventoryDetail" @refreshDataList="getDataList" @onChose="onChose"></inventory-begin>
     <detail v-if="detailVisible" ref="detail" @onChose="onChose"/>
+    <!-- 文件预览 -->
+    <preview-component v-if="previewVisible" ref="preview"/>
+    <!-- 文件选择 -->
+    <input v-show="false" ref="fileRef" type="file" @change="fileChange"/>
   </div>
 </template>
 
@@ -128,14 +149,16 @@
   import inventoryBegin from './inventory-begin'
   import Detail from './inventory-detail'
   import {getInventoryList} from '@/api/warehouse'
+  import PreviewComponent from '@/views/modules/common/preview-component'
   export default {
     name: 'stock-order',
-    components: {inventoryAdd, inventoryBegin, Detail},
+    components: {PreviewComponent, inventoryAdd, inventoryBegin, Detail},
     data () {
       return {
         inventoryAddVisible: false,
         inventoryDetailVisible: false,
         detailVisible: false,
+        previewVisible: false,
         dataForm: {},
         dataList: [],
         pageIndex: 1,
@@ -234,11 +257,62 @@
         const item1 = this.optionsApproveState.find((item) => item.code === row.approverState.toString())
         return item1 ? item1.value : ''
       },
+      // 预览
+      previewFile (fileName, url) {
+        this.previewVisible = true
+        this.$nextTick(() => {
+          this.$refs.preview.init(fileName, url)
+        })
+      },
       detailHandle (id) {
         this.detailVisible = true
         this.$nextTick(() => {
           this.$refs.detail.init(id)
         })
+      },
+      exportExcel (inventoryId) {
+        this.$http({
+          url: this.$http.adornUrl('/biz-service/inventory-checking-ctl/exportExcel'),
+          method: 'get',
+          params: this.$http.adornParams({
+            'inventoryId': inventoryId
+          })
+        }).then((res) => {
+          let data = res.data
+          if (!data) {
+            return
+          }
+          let url = window.URL.createObjectURL(new Blob([data]))
+          let a = document.createElement('a')
+          let _fileName = res.headers['content-disposition'].split(';')[1].split('=')[1]
+          a.style.display = 'none'
+          a.href = url
+          a.setAttribute('download', _fileName)
+          document.body.appendChild(a)
+          a.click() // 执行下载
+          window.URL.revokeObjectURL(a.href)
+          document.body.removeChild(a)
+        }).catch((error) => { console.log(error) })
+      },
+      // 上传文件
+      importExcel () {
+        this.$refs.fileRef.dispatchEvent(new MouseEvent('click'))
+      },
+      fileChange (e) {
+        const file = e.target.files[0]
+        const formData = new FormData()
+        formData.append('importFile', file.raw)
+        this.$http({
+          url: this.$http.adornUrl('/biz-service/inventory-checking-ctl/importExcel'),
+          method: 'post',
+          data: formData
+        }).then(({data}) => {
+          if (data && data.code === '200') {
+            this.$message.success('上传成功')
+          } else {
+            this.$message.error('上传失败')
+          }
+        })
       }
     }
   }