Jelajahi Sumber

库存管理-库存预警

chenrui 4 tahun lalu
induk
melakukan
952fbc92e8

+ 10 - 10
src/config/router.config.js

@@ -237,17 +237,17 @@ export const asyncRouterMap = [{
             }
           }
         ]
+      },
+      {
+        path: '/inventoryManagement/inventoryWarning',
+        name: 'inventoryWarningList',
+        component: () => import(/* webpackChunkName: "shop" */ '@/views/inventoryManagement/inventoryWarning/list.vue'),
+        meta: {
+          title: '库存预警',
+          icon: 'flag'
+          // permission: 'M_goodsShelves_0'
+        }
       }
-      // {
-      //   path: '/shop/goodsShelves',
-      //   name: 'goodsShelves',
-      //   component: () => import(/* webpackChunkName: "shop" */ '@/views/shop/goodsShelves.vue'),
-      //   meta: {
-      //     title: '商品排序',
-      //     icon: 'flag',
-      //     // permission: 'M_goodsShelves_0'
-      //   }
-      // }
     ]
   },
   // 采购管理

+ 0 - 1
src/views/inventoryManagement/inventoryQuery/list.vue

@@ -117,7 +117,6 @@ export default {
         // })
         const _this = this
         return new Promise(function(resolve, reject){
-          console.log(111)
           const data = {
             pageNo: 1,
             pageSize: 10,

+ 0 - 1
src/views/inventoryManagement/inventoryQuery/warehouseDetail.vue

@@ -124,7 +124,6 @@ export default {
         // })
         const _this = this
         return new Promise(function(resolve, reject){
-          console.log(111)
           const data = {
             pageNo: 1,
             pageSize: 10,

+ 200 - 0
src/views/inventoryManagement/inventoryWarning/list.vue

@@ -0,0 +1,200 @@
+<template>
+  <a-card :bordered="false" class="inventoryQueryList-wrap">
+    <!-- 搜索条件 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+        <a-row :gutter="48">
+          <a-col :lg="6" :sm="12">
+            <a-form-item label="产品编码">
+              <a-input id="inventoryQueryList-orderBundleNo" v-model.trim="queryParam.orderBundleNo" allowClear placeholder="请输入产品编码"/>
+            </a-form-item>
+          </a-col>
+          <a-col :lg="6" :sm="12">
+            <a-form-item label="原厂编码">
+              <a-input id="inventoryQueryList-custMobile" v-model.trim="queryParam.orderBundle.custMobile" allowClear placeholder="请输入原厂编码"/>
+            </a-form-item>
+          </a-col>
+          <a-col :lg="6" :sm="12">
+            <a-form-item label="产品名称">
+              <a-input id="inventoryQueryList-bundleName" v-model.trim="queryParam.bundleName" allowClear placeholder="请输入产品名称"/>
+            </a-form-item>
+          </a-col>
+          <a-col :lg="6" :sm="12">
+            <a-form-item label="产品品牌">
+              <a-select id="inventoryQueryList-bundleNames" placeholder="请选择产品品牌" allowClear v-model="queryParam.brand">
+                <a-select-option v-for="item in brandData" :key="item.stationNo" :value="item.stationNo">{{ item.name }}</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :lg="6" :sm="12">
+            <a-form-item label="产品类别">
+              <a-cascader :options="typeData" placeholder="请选择产品类别" allowClear v-model="queryParam.brand" />
+            </a-form-item>
+          </a-col>
+          <a-col :lg="6" :sm="12">
+            <a-form-item label="库存数量是否为0">
+              <a-switch checkedChildren="是" unCheckedChildren="否" id="inventoryQueryList-bundleNamess" v-model="queryParam.inventoryNum" />
+            </a-form-item>
+          </a-col>
+          <a-col :lg="6" :sm="12">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="inventoryQueryList-refresh">查询</a-button>
+            <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="inventoryQueryList-reset">重置</a-button>
+            <a-button style="margin-left: 8px" type="danger" @click="handleExport" :disabled="disabled" :loading="exportLoading" id="inventoryQueryList-export">导出</a-button>
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 合计 -->
+    <a-alert type="info" showIcon style="margin-bottom:15px">
+      <div class="ftext" slot="message">现有库存总数量(个):<strong>998</strong>;现有库存总成本(¥):<strong>2009.00</strong>。</div>
+    </a-alert>
+    <!-- 列表 -->
+    <s-table
+      ref="table"
+      size="default"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      bordered>
+      <!-- 操作 -->
+      <span slot="action" slot-scope="text, record">
+        <a-button type="primary" @click="goDetail(record)" id="inventoryQueryList-detail-btn">库存详情</a-button>
+        <a-button style="margin-left: 8px" @click="goWarehouseDetail(record)" id="inventoryQueryList-warehouseDetail-btn">出入库明细</a-button>
+      </span>
+    </s-table>
+  </a-card>
+</template>
+
+<script>
+import moment from 'moment'
+// import { customerBundleDelayList, customerBundleExportDelay } from '@/api/FinancialManagement'
+import { STable } from '@/components'
+export default {
+  components: { STable },
+  data () {
+    return {
+      labelCol: { span: 10 },
+      wrapperCol: { span: 14 },
+      queryParam: { //  查询条件
+        orderBundleNo: '', //  订单编号
+        orderBundle: {
+          custMobile: '' //  客户手机
+        },
+        bundleName: '', //  套餐名称
+        itemName: '', //  服务名称
+        brand: undefined,  //  产品品牌
+        inventoryNum: false  //  库存数量是否为0
+      },
+      exportLoading: false, // 导出loading
+      disabled: false, //  查询、重置按钮是否可操作
+      brandData: [],  //  产品品牌下拉数据
+      typeData: [],  //  产品类别下拉数据
+      columns: [
+        { title: '序号', dataIndex: 'no', width: 70, align: 'center' },
+        { title: '产品编码', dataIndex: 'productNum', width: 160, align: 'center' },
+        { title: '产品名称', dataIndex: 'productName', width: 200, align: 'center', ellipsis: true },
+        { title: '原厂编码', dataIndex: 'productOldNum', width: 160, align: 'center' },
+        { title: '产品品牌', dataIndex: 'productBrand', width: 200, align: 'center' },
+        { title: '产品分类', dataIndex: 'productType', width: 200, align: 'center' },
+        { title: '现有库存数量(个)', dataIndex: 'inventoryNum', width: 180, align: 'center', sorter: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '现有库存成本(¥)', dataIndex: 'inventoryMoney', width: 180, align: 'center', sorter: true, customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '操作', scopedSlots: { customRender: 'action' }, width: 240, align: 'center' }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        // return customerBundleDelayList( Object.assign(parameter, this.queryParam) ).then(res => {
+        //   const data = res.data
+        //   const no = (data.pageNo - 1) * data.pageSize
+        //   for (var i = 0; i < data.list.length; i++) {
+        //     data.list[i].no = no + i + 1
+        //   }
+        //   this.disabled = false
+        //   return data
+        // })
+        const _this = this
+        return new Promise(function(resolve, reject){
+          const data = {
+            pageNo: 1,
+            pageSize: 10,
+            list: [
+              { id: '1', productNum: 'jgqp11111111111', productName: '产品1', productOldNum: 'jgqp111123545', productBrand: '箭冠品牌', productType: '产品分类1', inventoryNum: '5', inventoryMoney: '122' }
+            ]
+          }
+          const no = (data.pageNo - 1) * data.pageSize
+          for (var i = 0; i < data.list.length; i++) {
+            data.list[i].no = no + i + 1
+          }
+          _this.disabled = false
+          resolve(data)
+        })
+      },
+      openModal: false,  //  查看库存详情  弹框
+      itemId: ''  //  当前库存记录id
+    }
+  },
+  methods: {
+    //  重置
+    resetSearchForm () {
+      this.queryParam.orderBundleNo = ''
+      this.queryParam.orderBundle.custMobile = ''
+      this.queryParam.bundleName = ''
+      this.queryParam.itemName = ''
+      this.oldTime = undefined
+      this.newTime = undefined
+      this.$refs.table.refresh(true)
+    },
+    //  库存详情
+    goDetail(row){
+      this.itemId = row.id
+      this.openModal = true
+    },
+    //  关闭弹框
+    closeModal(){
+      this.itemId = ''
+      this.openModal = false
+    },
+    //  出入库明细
+    goWarehouseDetail(row){
+      this.$router.push({ path: '/inventoryManagement/inventoryQuery/warehouseDetail' })
+    },
+    //  导出
+    handleExport () {
+      const params = this.queryParam
+      if (this.oldTime && this.oldTime.length > 0) {
+        params.beginOldExpiryDate = moment(this.oldTime[0]).format('YYYY-MM-DD')
+        params.endOldExpirydDate = moment(this.oldTime[1]).format('YYYY-MM-DD')
+      } else {
+        params.beginOldExpiryDate = ''
+        params.endOldExpirydDate = ''
+      }
+      if (this.newTime && this.newTime.length > 0) {
+        params.beginDate = moment(this.newTime[0]).format('YYYY-MM-DD')
+        params.endDate = moment(this.newTime[1]).format('YYYY-MM-DD')
+      } else {
+        params.beginDate = ''
+        params.endDate = ''
+      }
+      this.exportLoading = true
+      customerBundleExportDelay(params).then(res => {
+        this.exportLoading = false
+        this.download(res)
+      })
+    },
+    download (data) {
+      if (!data) { return }
+      const url = window.URL.createObjectURL(new Blob([data]))
+      const link = document.createElement('a')
+      link.style.display = 'none'
+      link.href = url
+      const a = moment().format('YYYYMMDDHHmmss')
+      const fname = '服务延期记录' + a
+      link.setAttribute('download', fname + '.xlsx')
+      document.body.appendChild(link)
+      link.click()
+    }
+  }
+}
+</script>
+
+<style lang="less"></style>