Explorar o código

库存管理-库存查询

chenrui %!s(int64=4) %!d(string=hai) anos
pai
achega
5e1b83ed0d

BIN=BIN
public/logo.png


+ 0 - 42
src/api/accessoryInfo.js

@@ -1,42 +0,0 @@
-import { axios } from '@/utils/request'
-// 获取配件的标签
-export const getPartLabels = (params) => {
-  return axios.request({
-    url: 'label/queryList',
-    data: { lableBizKey: '', lableBizType: 'PART' },
-    method: 'post'
-  })
-}
-// 配件信息, labels = [{id:id},...]
-export const getAccessoryInfoData = (params) => {
-  return axios.request({
-    url: `part/queryLike/${params.pageNo}/${params.pageSize}`,
-    data: {
-      queryWord: params.queryWord,
-      partsClsId: params.partsClsId,
-      labels: params.labels
-    },
-    method: 'post'
-  })
-}
-// 添加
-export const addAccessoryInfo = (params) => {
-  return axios.request({
-    url: 'part/save',
-    data: params,
-    method: 'post'
-  })
-}
-export const getAccessoryInfoById = (params) => {
-  return axios.request({
-    url: `part/${params.id}`,
-    method: 'get'
-  })
-}
-// 删除
-export const deleteAccessoryInfo = (params) => {
-  return axios.request({
-    url: `part/del/${params.id}`,
-    method: 'get'
-  })
-}

+ 0 - 10
src/api/accessoryType.js

@@ -1,10 +0,0 @@
-import { axios } from '@/utils/request'
-
-// 配件分类操作
-export const getPartsList = formData => {
-  return axios.request({
-    url: '/partCls/findAll',
-    method: 'post',
-    data: {}
-  })
-}

+ 0 - 77
src/api/active.js

@@ -1,77 +0,0 @@
-import { axios } from '@/utils/request'
-
-// 活动统计查询
-export const activeList = params => {
-  const url = `/active/queryLike/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-
-  return axios.request({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-
-// 活动总数统计及参与客户总数
-export const totalActive = params => {
-  return axios.request({
-    url: '/active/getSum',
-    data: params,
-    method: 'post'
-  })
-}
-
-// 查看详情
-export const activeDetails = params => {
-  const url = `/active/mould/${params.id}/${params.pageNo}/${params.pageSize}`
-  return axios.request({
-    url: url,
-    data: {},
-    method: 'get'
-  })
-}
-
-// 保存新建的活动
-export const saveActive = params => {
-  return axios.request({
-    url: '/active/save',
-    data: params,
-    method: 'post'
-  })
-}
-
-// 预览scan
-export const scanActive = params => {
-  return axios.request({
-    url: '/active/scan',
-    data: params,
-    method: 'post'
-  })
-}
-
-// 查看活动详细
-export const activeViews = params => {
-  const url = `/active/${params.id}`
-  return axios.request({
-    url: url,
-    method: 'get'
-  })
-}
-// 删除活动模版
-export const delActive = params => {
-  const url = `/active/delete/${params.id}`
-  return axios.request({
-    url: url,
-    method: 'get'
-  })
-}
-
-// 启用禁用活动
-export const enableActive = params => {
-  const url = `/active/enable/${params.id}/${params.flag}`
-  return axios.request({
-    url: url,
-    method: 'get'
-  })
-}

+ 0 - 41
src/api/bannerSetting.js

@@ -1,41 +0,0 @@
-import { axios } from '@/utils/request'
-
-// 列表查询
-export const getBannerSettingList = (params) => {
-  const url = `/zycar-mgr/banner/query`
-  return axios({
-    url: url,
-    data: {bannerType:params.bannerType},
-    method: 'post'
-  })
-}
-
-// 更改状态
-export const changeStatus = (params) => {
-  const url = `/zycar-mgr/banner/enable/${params.id}/${params.flag}`
-  return axios({
-    url: url,
-    data: {},
-    method: 'get'
-  })
-}
-
-// 确认保存
-export const saveItem = (params) => {
-  const url = `/zycar-mgr/banner/save`
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-
-// 删除
-export const deleteItem = (params) => {
-  const url = `/zycar-mgr/banner/del/${params.id}`
-  return axios({
-    url: url,
-    data: {},
-    method: 'get'
-  })
-}

+ 0 - 35
src/api/editionSetting.js

@@ -1,35 +0,0 @@
-import { axios } from '@/utils/request'
-
-// 列表查询
-export const getEditionSettingList = (params) => {
-  const url = `/zycar-mgr/sysVersion/query/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: {applyCode:params.applyCode},
-    method: 'post'
-  })
-}
-
-
-
-// 新建保存
-export const saveItem = (params) => {
-  const url = `/zycar-mgr/sysVersion/save`
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-
-// 根据id查询
-export const editItem = (params) => {
-  const url = `/zycar-mgr/sysVersion/${params.id}`
-  return axios({
-    url: url,
-    data: params,
-    method: 'get'
-  })
-}

+ 0 - 45
src/api/job.js

@@ -1,45 +0,0 @@
-import { axios } from '@/utils/request'
-
-export const listJob = (params) => {
-  let url = `/job/queryJob/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-export const pauseJob = (params) => {
-  return axios({
-    url: '/job/pauseJob',
-    data: params,
-    method: 'post'
-  })
-}
-export const resumeJob = (params) => {
-  return axios({
-    url: '/job/resumeJob',
-    data: params,
-    method: 'post'
-  })
-}
-export const delJob = (params) => {
-  return axios({
-    url: `job/delJob/${params.id}`,
-    method: 'get'
-  })
-}
-export const addJob = (params) => {
-  return axios({
-    url: '/job/addJob',
-    data: params,
-    method: 'post'
-  })
-}
-export const callJob = (params) => {
-  return axios({
-    url: `job/callJob/${params.id}`,
-    method: 'get'
-  })
-}

+ 0 - 62
src/api/manage.js

@@ -1,62 +0,0 @@
-import { axios } from '@/utils/request'
-
-const api = {
-  user: '/user',
-  role: '/role',
-  service: '/service',
-  permission: '/permission',
-  permissionNoPager: '/permission/no-pager',
-  orgTree: '/org/tree'
-}
-
-export default api
-
-export function getUserList (parameter) {
-  return axios({
-    url: api.user,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getRoleList (parameter) {
-  return axios({
-    url: api.role,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getServiceList (parameter) {
-  return axios({
-    url: api.service,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getPermissions (parameter) {
-  return axios({
-    url: api.permissionNoPager,
-    method: 'get',
-    params: parameter
-  })
-}
-
-export function getOrgTree (parameter) {
-  return axios({
-    url: api.orgTree,
-    method: 'get',
-    params: parameter
-  })
-}
-
-// id == 0 add     post
-// id != 0 update  put
-export function saveService (parameter) {
-  return axios({
-    url: api.service,
-    method: parameter.id === 0 ? 'post' : 'put',
-    data: parameter
-  })
-}

+ 0 - 86
src/api/menu.js

@@ -1,86 +0,0 @@
-import { axios } from '@/utils/request'
-
-// 获取菜单树数据
-export const getMenuList = params => {
-  const url = `/menu/findAll`
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}
-
-// 保存
-export const saveMenu = params => {
-  const url = `/menu/save`
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}
-
-// 删除
-export const deleteMenu = params => {
-  const url = `/menu/delete/${params.id}`
-  return axios({
-    url: url,
-    method: 'get'
-  })
-}
-
-// 获取门店菜单树数据
-export const getMdMenuList = params => {
-  const url = `/mdmenu/findAll`
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}
-
-// 门店菜单保存
-export const saveMdMenu = params => {
-  const url = `/mdmenu/save`
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}
-// 门店菜单删除
-export const deleteMdMenu = params => {
-  const url = `/mdmenu/delete/${params.id}`
-  return axios({
-    url: url,
-    method: 'get'
-  })
-}
-
-// 获取运营菜单树数据
-export const getYyMenuList = params => {
-  const url = `/yymenu/findAll`
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}
-
-// 运营菜单保存
-export const saveYyMenu = params => {
-  const url = `/yymenu/save`
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}
-// 运营菜单删除
-export const deleteYyMenu = params => {
-  const url = `/yymenu/delete/${params.id}`
-  return axios({
-    url: url,
-    method: 'get'
-  })
-}

+ 0 - 40
src/api/menuSet.js

@@ -1,40 +0,0 @@
-import { axios } from '@/utils/request'
-
-// 获取连锁菜单树数据
-export const findLsMenu = params => {
-  const url = `/mould/findLsMenu`
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}
-
-// 保存连锁菜单
-export const saveLsMouldMenu = params => {
-  const url = `/mould/saveLsMouldMenu`
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}
-// 获取连锁菜单树数据
-export const findDdMenu = params => {
-  const url = `/mould/findDdMenu`
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}
-
-// 保存连锁菜单
-export const saveDdMouldMenu = params => {
-  const url = `/mould/saveDdMouldMenu`
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}

+ 0 - 33
src/api/notice.js

@@ -1,33 +0,0 @@
-import { axios } from '@/utils/request'
-
-// 列表查询
-export const getNoticeList = (params) => {
-  const url = `notice/queryLike/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-
-// 新建保存
-export const saveItem = (params) => {
-  const url = `notice/save`
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-
-// 删除
-export const deleteItem = (params) => {
-  const url = `notice/delete/${params.id}`
-  return axios({
-    url: url,
-    data: {},
-    method: 'get'
-  })
-}

+ 0 - 61
src/api/serviceItems.js

@@ -1,61 +0,0 @@
-import { axios } from '@/utils/request'
-
-// 服务项目
-export const getServiceItemData = (params) => {
-  const url = `item/queryLike/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios.request({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-export const getServiceItemById = (params) => {
-  return axios.request({
-    url: `item/${params.id}`,
-    method: 'get'
-  })
-}
-export const deleteServiceItem = (params) => {
-  return axios.request({
-    url: `item/del/${params.id}`,
-    method: 'get'
-  })
-}
-// 添加
-export const addServiceItems = (params) => {
-  return axios.request({
-    url: 'item/save',
-    data: params,
-    method: 'post'
-  })
-}
-// 获取某个服务类型下单服务标签
-export const getServiceLabels = (params) => {
-  return axios.request({
-    url: 'label/queryList',
-    data: { lableBizKey: params.clsId, lableBizType: 'SERVICE' },
-    method: 'post'
-  })
-}
-// 根据标签查询服务列表
-export const getServerByLabelId = (params) => {
-  return axios.request({
-    url: `item/queryByLabelId/${params.pageNo}/${params.pageSize}`,
-    data: {
-      name: params.queryWord,
-      itemClsId: params.itemClsId,
-      labelId: params.labelId
-    },
-    method: 'post'
-  })
-}
-// 根据服务类别获取标签
-export const getMarkData = (params) => {
-  return axios.request({
-    url: '/label/getLabelName',
-    data: params,
-    method: 'post'
-  })
-}

+ 0 - 31
src/api/tenants.js

@@ -1,31 +0,0 @@
-import { axios } from '@/utils/request'
-
-// 获取列表数据
-export const getTenantsList = params => {
-  const url = `/org/apply/queryLike/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'POST'
-  })
-}
-
-// 启用禁用
-export const enable = params => {
-  return axios({
-    url: '/org/apply/enable',
-    data: params,
-    method: 'POST'
-  })
-}
-
-// 授权
-export const saveAuth = params => {
-  return axios({
-    url: '/org/apply/auth',
-    data: params,
-    method: 'POST'
-  })
-}

+ 0 - 48
src/api/theme.js

@@ -1,48 +0,0 @@
-import { axios } from '@/utils/request'
-
-// 活动主题 根据模板id查询模板主题
-export const getThemeByMouldId = (params) => {
-  return axios.request({
-    url: `static/mould/theme/queryByMouldId/${params.staticMouldId}`,
-    method: 'get',
-    data: {}
-  })
-}
-// 带分页
-export const getThemeList = (params) => {
-  const url = `/static/mould/theme/queryLike/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-export const saveTheme = (params) => {
-  return axios({
-    url: '/static/mould/theme/save',
-    data: params,
-    method: 'post'
-  })
-}
-export const delTheme = (params) => {
-  return axios({
-    url: `/static/mould/theme/delete/${params.id}`,
-    method: 'get'
-  })
-}
-// 改变状态接口
-export const updateEnableStatus = params => {
-  return axios({
-    url: `/static/mould/theme/enable/${params.id}/${params.flag}`,
-    method: 'get'
-  })
-}
-// 查详细
-export const getThemeDetail = (params) => {
-  return axios({
-    url: `/static/mould/theme/${params.id}`,
-    method: 'get'
-  })
-}

+ 0 - 39
src/api/tpl.js

@@ -1,39 +0,0 @@
-import { axios } from '@/utils/request'
-
-export const getTplList = (params) => {
-  const url = `/static/mould/queryLike/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-export const saveTpl = (params) => {
-  return axios({
-    url: '/static/mould/save',
-    data: params,
-    method: 'post'
-  })
-}
-export const delTpl = (params) => {
-  return axios({
-    url: `/static/mould/delete/${params.id}`,
-    method: 'get'
-  })
-}
-// 改变状态接口
-export const updateEnableStatus = params => {
-  return axios({
-    url: `/static/mould/enable/${params.id}/${params.flag}`,
-    method: 'get'
-  })
-}
-// 查详细
-export const getTplDetail = (params) => {
-  return axios({
-    url: `/static/mould/${params.id}`,
-    method: 'get'
-  })
-}

+ 0 - 80
src/api/videoSetting.js

@@ -1,80 +0,0 @@
-import { axios } from '@/utils/request'
-
-// 列表查询
-export const getSettingList = (params) => {
-  const url = `zycar-mgr/business/experience/queryLike/${params.pageNo}/${params.pageSize}`
-  delete params.pageNo
-  delete params.pageSize
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-
-// 状态改变
-export const changeStatus = (params) => {
-  const url = `zycar-mgr/business/experience/enable/${params.id}/${params.flag}`
-  return axios({
-    url: url,
-    data: {},
-    method: 'get'
-  })
-}
-
-// 删除
-export const deleteItem = (params) => {
-  const url = `zycar-mgr/business/experience/delete/${params.id}`
-  return axios({
-    url: url,
-    data: {},
-    method: 'get'
-  })
-}
-
-// 保存
-export const saveItem = (params) => {
-  const url = `zycar-mgr/business/experience/save`
-  return axios({
-    url: url,
-    data: params,
-    method: 'post'
-  })
-}
-
-// 查详情
-export const searchDetail = (params) => {
-  const url = `zycar-mgr/business/experience/${params.id}`
-  return axios({
-    url: url,
-    data: params,
-    method: 'get'
-  })
-}
-
-// 关联广告图
-export const aboutaDvertisementImg = (params) => {
-  return axios.request({
-    url: `zycar-mgr/banner/query`,
-    data: { position: params.position },
-    method: 'post'
-  })
-}
-// 排序 上移 下移
-export const setSort = (params) => {
-  const url = `zycar-mgr/business/experience/setSort/${params.idThis}/${params.idThat}`
-  return axios({
-    url: url,
-    data: {},
-    method: 'get'
-  })
-}
-// 排序 置顶
-export const setTop = (params) => {
-  const url = `zycar-mgr/business/experience/setTop/${params.id}`
-  return axios({
-    url: url,
-    data: {},
-    method: 'get'
-  })
-}

+ 58 - 0
src/config/router.config.js

@@ -192,6 +192,64 @@ export const asyncRouterMap = [{
     ]
   },
   // 库存管理
+  {
+    path: '/inventoryManagement',
+    redirect: '/inventoryManagement/inventoryQuery',
+    component: PageView,
+    meta: {
+      title: '库存管理s',
+      icon: 'shop'
+      // permission: 'M_shop'
+    },
+    children: [
+      {
+        path: '/inventoryManagement/inventoryQuery',
+        redirect: '/inventoryManagement/inventoryQuery/list',
+        name: 'inventoryQuery',
+        component: RouteView,
+        meta: {
+          title: '库存查询',
+          icon: 'shopping'
+          // permission: 'M_goodsManage_list'
+        },
+        hideChildrenInMenu: true,
+        children: [
+          {
+            path: '/inventoryManagement/inventoryQuery/list',
+            name: 'inventoryQueryList',
+            component: () => import(/* webpackChunkName: "shop" */ '@/views/inventoryManagement/inventoryQuery/list.vue'),
+            meta: {
+              title: '库存列表',
+              icon: 'shopping',
+              hidden: true
+              // permission: 'M_goodsManage_list'
+            }
+          },
+          {
+            path: '/inventoryManagement/inventoryQuery/warehouseDetail',
+            name: 'inventoryQueryWarehouseDetail',
+            component: () => import(/* webpackChunkName: "shop" */ '@/views/inventoryManagement/inventoryQuery/warehouseDetail.vue'),
+            meta: {
+              title: '出入库明细',
+              icon: 'shopping',
+              hidden: true
+              // permission: 'B_goodsManage_edit'
+            }
+          }
+        ]
+      }
+      // {
+      //   path: '/shop/goodsShelves',
+      //   name: 'goodsShelves',
+      //   component: () => import(/* webpackChunkName: "shop" */ '@/views/shop/goodsShelves.vue'),
+      //   meta: {
+      //     title: '商品排序',
+      //     icon: 'flag',
+      //     // permission: 'M_goodsShelves_0'
+      //   }
+      // }
+    ]
+  },
   {
     path: '/inventory',
     redirect: '/inventory/list',

+ 116 - 0
src/views/inventoryManagement/inventoryQuery/detailModal.vue

@@ -0,0 +1,116 @@
+<template>
+  <a-modal
+    centered
+    class="inventoryQueryDetail-modal"
+    :footer="null"
+    :maskClosable="false"
+    :title="modalTit"
+    v-model="isShow"
+    @cancle="isShow=false"
+    :width="1000">
+    <!-- 库存详情 -->
+    <s-table
+      class="sTable"
+      ref="table"
+      size="default"
+      :rowKey="(record) => record.id"
+      :columns="columns"
+      :data="loadData"
+      bordered></s-table>
+  </a-modal>
+</template>
+
+<script>
+import { STable } from '@/components'
+export default {
+  name: 'InventoryQueryDetailModal',
+  components: { STable },
+  props: {
+    openModal: { //  弹框显示状态
+      type: Boolean,
+      default: false
+    },
+    itemId: {
+      type: [Number, String],
+      default: ''
+    }
+  },
+  computed: {
+    modalTit () {
+      return '库存详情'
+    }
+  },
+  data () {
+    return {
+      isShow: this.openModal, //  是否打开弹框
+      // 表头
+      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: 'productType', width: 200, align: 'center' },
+        { title: '入库类型', dataIndex: 'productType', width: 200, align: 'center' },
+        { title: '库存数量', dataIndex: 'inventoryNum', width: 180, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '成本单价', dataIndex: 'inventoryMoney', width: 180, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+      ],
+      // 加载数据方法 必须为 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)
+        })
+      }
+    }
+  },
+  methods: {
+    
+  },
+  watch: {
+    //  父页面传过来的弹框状态
+    openModal (newValue, oldValue) {
+      this.isShow = newValue
+    },
+    //  重定义的弹框状态
+    isShow (newValue, oldValue) {
+      if (!newValue) {
+        this.$emit('close')
+      }
+    },
+    itemId (newValue, oldValue) {
+      if (this.isShow && newValue) {
+        const _this = this
+        setTimeout(() => {
+          _this.$refs.table.refresh(true)
+        }, 100)
+      }
+    }
+  }
+}
+</script>
+
+<style lang="less"></style>

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

@@ -0,0 +1,204 @@
+<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>
+    <!-- 库存详情 -->
+    <inventory-query-detail-modal :openModal="openModal" :itemId="itemId" @close="closeModal" />
+  </a-card>
+</template>
+
+<script>
+import moment from 'moment'
+// import { customerBundleDelayList, customerBundleExportDelay } from '@/api/FinancialManagement'
+import { STable } from '@/components'
+import inventoryQueryDetailModal from './detailModal.vue'
+export default {
+  components: { STable, inventoryQueryDetailModal },
+  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){
+          console.log(111)
+          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>

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

@@ -0,0 +1,175 @@
+<template>
+  <a-card :bordered="false" class="inventoryQueryWarehouseDetail-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-select id="inventoryQueryWarehouseDetail-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-select id="inventoryQueryWarehouseDetail-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-select id="inventoryQueryWarehouseDetail-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-range-picker
+                  style="width:100%"
+                  id="inventoryQueryWarehouseDetail-bundleNamesss"
+                  :disabledDate="disabledDate"
+                  v-model="queryParam.brand"
+                  :format="dateFormat"
+                  :placeholder="['开始时间', '结束时间']" />
+              </a-form-item>
+            </a-form-item>
+          </a-col>
+          <a-col :lg="6" :sm="12">
+            <a-form-item label="单位名称">
+              <a-input id="inventoryQueryWarehouseDetail-orderBundleNo" v-model.trim="queryParam.orderBundleNo" allowClear placeholder="请输入单位名称"/>
+            </a-form-item>
+          </a-col>
+          <a-col :lg="6" :sm="12">
+            <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="inventoryQueryWarehouseDetail-refresh">查询</a-button>
+            <a-button style="margin-left: 8px" @click="resetSearchForm" :disabled="disabled" id="inventoryQueryWarehouseDetail-reset">重置</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"
+      :showPagination="false"
+      bordered>
+    </s-table>
+    <div class="footer-box">
+      <!-- 返回列表 -->
+      <a-button type="primary" @click="goList" id="inventoryQueryWarehouseDetail-goback-btn">返回列表</a-button>
+    </div>
+  </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: [],  //  产品类别下拉数据
+      dateFormat: 'YYYY-MM-DD',
+      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: 'productBrand', width: 200, align: 'center' },
+        { title: '单据审核时间', dataIndex: 'productBrand', width: 200, align: 'center' },
+        { title: '单位名称', dataIndex: 'productBrand', width: 200, align: 'center' },
+        { title: '仓库', dataIndex: 'productBrand', width: 200, align: 'center' },
+        { title: '仓位', dataIndex: 'productBrand', width: 200, align: 'center' },
+        { title: '数量', dataIndex: 'inventoryNum', width: 180, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '总成本', dataIndex: 'inventoryMoney', width: 180, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+        { title: '总售价', dataIndex: 'inventoryMoneys', width: 180, align: 'center', customRender: function (text) { return ((text || text == 0) ? text : '--') } },
+      ],
+      // 加载数据方法 必须为 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){
+          console.log(111)
+          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)
+        })
+      }
+    }
+  },
+  methods: {
+    // 不可选日期
+    disabledDate (date, dateStrings) {
+      return date && date.valueOf() > Date.now()
+    },
+    //  重置
+    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)
+    },
+    //  返回库存查询列表
+    goList(){
+      this.$router.push({ path: '/inventoryManagement/inventoryQuery/list' })
+    }
+  }
+}
+</script>
+
+<style lang="less">
+  .inventoryQueryWarehouseDetail-wrap{
+    .footer-box{
+      margin: 50px auto 20px;
+      text-align: center;
+    }
+  }
+</style>