Przeglądaj źródła

Merge branch 'develop_szhj' of http://git.chelingzhu.com/jianguan-web/qpls-md-html into develop_szhj

lilei 3 lat temu
rodzic
commit
d6e0bd8412

+ 7 - 1
src/api/merchant.js

@@ -31,6 +31,12 @@ export const queryTradeFlowPage = (params) => {
   })
 }
 
+export const merchantCashOut = params => {
+  return axios({
+    url: `/shelf/findShelfSettleRuleByShelfSn/${params.shelfSn}`,
+    method: 'get'
+  })
+}
 export const merchantCashOutDetail = (params) => {
   return axios({
     url: '/merchant/queryMerchantAccount',
@@ -90,4 +96,4 @@ export const queryOrderBillDetailCount = (params) => {
     data: params,
     method: 'post'
   })
-}
+}

+ 51 - 0
src/api/shelfRecall.js

@@ -60,3 +60,54 @@ export const shelfRecallDetail = params => {
     method: 'get'
   })
 }
+
+// 调回入库列表
+export const recallStockList = (params) => {
+  const url = `/shelfRecall/queryStockPutPage/${params.pageNo}/${params.pageSize}`
+  delete params.pageNo
+  delete params.pageSize
+  return axios({
+    url: url,
+    data: params,
+    method: 'post'
+  })
+}
+// 调回入库信息
+export const recallrStockDetail = params => {
+  return axios({
+    url: `/stockPut/findBySn/${params.stockPutSn}`,
+    method: 'get'
+  })
+}
+// 调回单入库明细列表
+export const recallrStockDetailList = params => {
+  return axios({
+    url: `/stockPut/detail/query`,
+    data: params,
+    method: 'post'
+  })
+}
+// 修改仓库仓位
+export const updateSelective = (params) => {
+  return axios({
+    url: '/stockPut/detail/updateSelective',
+    data: params,
+    method: 'post'
+  })
+}
+// 确认入库
+export const confirmPutStock = (params) => {
+  return axios({
+    url: '/shelfRecall/confirmPutStock',
+    data: params,
+    method: 'post'
+  })
+}
+// 待入库数量
+export const stockPutCount = params => {
+  return axios({
+    url: '/shelfRecall/queryStockPutCount',
+    data: params,
+    method: 'post'
+  })
+}

+ 10 - 9
src/components/Table/index.js

@@ -253,6 +253,7 @@ export default {
         selectedRowKeys: this.selectedRowKeys,
         selectedRows: this.selectedRows
       }
+      console.log(obj)
       this.$emit('rowSelection', obj)
     },
     onSelectChange (record, selected, selectedRows, nativeEvent) {
@@ -275,17 +276,17 @@ export default {
       if (selected) { //  选择
         this.selectedRows = [...this.selectedRows, ...changeRows]
       } else { //  取消
-        const arrId = []
-        this.selectedRows.map((item, index) => {
-          this.selectedRows.map((subItem, ind) => {
-            if (item[this.rowKeyName] == subItem[this.rowKeyName]) {
-              arrId.push(index)
-            }
-          })
+        const arrIds = []
+        changeRows.map((item, index) => {
+          arrIds.push(item[this.rowKeyName])
         })
-        arrId.map((item, index) => {
-          _this.selectedRows = _this.selectedRows.slice(item, item + 1)
+        const arrs = []
+        this.selectedRows.map((item, index) => {
+          if (arrIds.indexOf(item[this.rowKeyName]) == -1) {
+            arrs.push(item)
+          }
         })
+        this.selectedRows = arrs
       }
       this.updateSelect()
     },

+ 273 - 236
src/config/router.config.js

@@ -73,242 +73,6 @@ export const asyncRouterMap = [
           }
         ]
       },
-      // 数字货架
-      {
-        path: '/numsGoodsShelves',
-        redirect: '/numsGoodsShelves/settlementManagement',
-        component: PageView,
-        meta: {
-          title: '数字货架',
-          icon: 'hdd',
-          // permission: 'M_numsGoodsShelves'
-        },
-        children: [
-          {
-            path: '/numsGoodsShelves/shelfSet',
-            redirect: '/numsGoodsShelves/shelfSet/list',
-            name: 'shelfSet',
-            component: BlankLayout,
-            meta: {
-              title: '货架设置',
-              icon: 'monitor',
-              // permission: 'M_shelfSet'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'shelfSetList',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/shelfSet/list.vue'),
-                meta: {
-                  title: '货架设置列表',
-                  icon: 'monitor',
-                  hidden: true
-                  // permission: 'M_salesQueryList'
-                }
-              },
-              {
-                path: 'set/:sn',
-                name: 'shelfSetting',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/shelfSet/set.vue'),
-                meta: {
-                  title: '货架设置',
-                  icon: 'monitor',
-                  hidden: true,
-                  replaceTab: true
-                  // permission: 'M_salesQueryList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/numsGoodsShelves/shelfMonitoring',
-            redirect: '/numsGoodsShelves/shelfMonitoring/list',
-            name: 'shelfMonitoring',
-            component: BlankLayout,
-            meta: {
-              title: '货架监控',
-              icon: 'monitor',
-              // permission: 'M_shelfMonitoring'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'shelfMonitoringList',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/shelfMonitoring/list.vue'),
-                meta: {
-                  title: '货架监控列表',
-                  icon: 'monitor',
-                  hidden: true
-                  // permission: 'M_salesQueryList'
-                }
-              },
-              {
-                path: 'warehouseDetail/:shelfPlaceSn/:productSn',
-                name: 'shelfMonitoringWarehouseDetail',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/shelfMonitoring/warehouseDetail.vue'),
-                meta: {
-                  title: '货架监控出入库明细',
-                  icon: 'monitor',
-                  hidden: true,
-                  replaceTab: true
-                  // permission: 'M_salesQueryList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/numsGoodsShelves/replenishmentManagement',
-            redirect: '/numsGoodsShelves/replenishmentManagement/list',
-            name: 'replenishmentManagement',
-            component: BlankLayout,
-            meta: {
-              title: '补货管理',
-              icon: 'monitor',
-              // permission: 'M_replenishmentManagement'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'replenishmentManagementList',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/replenishmentManagement/list.vue'),
-                meta: {
-                  title: '补货管理列表',
-                  icon: 'monitor',
-                  hidden: true
-                  // permission: 'M_salesQueryList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/numsGoodsShelves/recallManagement',
-            redirect: '/numsGoodsShelves/recallManagement/list',
-            name: 'recallManagement',
-            component: BlankLayout,
-            meta: {
-              title: '调回管理',
-              icon: 'monitor',
-              // permission: 'M_recallManagement'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'recallManagementList',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/recallManagement/list.vue'),
-                meta: {
-                  title: '调回管理列表',
-                  icon: 'monitor',
-                  hidden: true
-                  // permission: 'M_salesQueryList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/numsGoodsShelves/settlementManagement',
-            redirect: '/numsGoodsShelves/settlementManagement/list',
-            name: 'settlementManagement',
-            component: BlankLayout,
-            meta: {
-              title: '结算管理',
-              icon: 'monitor',
-              // permission: 'M_settlementManagement'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'settlementManagementList',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/settlementManagement/list.vue'),
-                meta: {
-                  title: '结算管理列表',
-                  icon: 'monitor',
-                  hidden: true
-                  // permission: 'M_salesQueryList'
-                }
-              },
-              {
-                path: 'unDetail/:shelfSn/:settleType/:shelfName',
-                name: 'unSettlementDetail',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/numsGoodsShelves/settlementManagement/unSettlementDetail.vue'),
-                meta: {
-                  title: '待结算明细',
-                  icon: 'monitor',
-                  hidden: true,
-                  replaceTab: true
-                  // permission: 'M_salesQueryList'
-                }
-              },
-              {
-                path: 'detail/:shelfSn/:shelfName',
-                name: 'settlementDetail',
-                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/numsGoodsShelves/settlementManagement/settlementDetail.vue'),
-                meta: {
-                  title: '结算历史',
-                  icon: 'monitor',
-                  hidden: true,
-                  replaceTab: true
-                  // permission: 'M_salesQueryList'
-                }
-              }
-            ]
-          },
-          {
-            path: '/numsGoodsShelves/withdrawalManagement',
-            redirect: '/numsGoodsShelves/withdrawalManagement/list',
-            name: 'withdrawalManagement',
-            component: BlankLayout,
-            meta: {
-              title: '提现管理',
-              icon: 'monitor',
-              // permission: 'M_withdrawalManagement'
-            },
-            hideChildrenInMenu: true,
-            children: [
-              {
-                path: 'list',
-                name: 'withdrawalManagementList',
-                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/withdrawalManagement/list.vue'),
-                meta: {
-                  title: '提现管理列表',
-                  icon: 'monitor',
-                  hidden: true
-                  // permission: 'M_salesQueryList'
-                }
-              }
-            ]
-          }
-          // {
-          //   path: '/numsGoodsShelves/accountManagement',
-          //   redirect: '/numsGoodsShelves/accountManagement/list',
-          //   name: 'accountManagement',
-          //   component: BlankLayout,
-          //   meta: {
-          //     title: '账户明细',
-          //     icon: 'monitor'
-          //     // permission: 'M_salesQueryList'
-          //   },
-          //   hideChildrenInMenu: true,
-          //   children: [
-          //     {
-          //       path: 'list',
-          //       name: 'accountManagementList',
-          //       component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/accountManagement/list.vue'),
-          //       meta: {
-          //         title: '账户明细列表',
-          //         icon: 'monitor',
-          //         hidden: true
-          //         // permission: 'M_salesQueryList'
-          //       }
-          //     }
-          //   ]
-          // }
-        ]
-      },
       // 销售管理
       {
         path: '/salesManagement',
@@ -549,6 +313,279 @@ export const asyncRouterMap = [
           }
         ]
       },
+      // 数字货架
+      {
+        path: '/numsGoodsShelves',
+        redirect: '/numsGoodsShelves/settlementManagement',
+        component: PageView,
+        meta: {
+          title: '数字货架',
+          icon: 'hdd',
+          permission: 'M_numsGoodsShelves'
+        },
+        children: [
+          {
+            path: '/numsGoodsShelves/shelfSet',
+            redirect: '/numsGoodsShelves/shelfSet/list',
+            name: 'shelfSet',
+            component: BlankLayout,
+            meta: {
+              title: '货架设置',
+              icon: 'monitor',
+              permission: 'M_shelfSet'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'shelfSetList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/shelfSet/list.vue'),
+                meta: {
+                  title: '货架设置列表',
+                  icon: 'monitor',
+                  hidden: true
+                  // permission: 'M_salesQueryList'
+                }
+              },
+              {
+                path: 'set/:sn',
+                name: 'shelfSetting',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/shelfSet/set.vue'),
+                meta: {
+                  title: '货架设置',
+                  icon: 'monitor',
+                  hidden: true,
+                  replaceTab: true
+                  // permission: 'M_salesQueryList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/numsGoodsShelves/shelfMonitoring',
+            redirect: '/numsGoodsShelves/shelfMonitoring/list',
+            name: 'shelfMonitoring',
+            component: BlankLayout,
+            meta: {
+              title: '货架监控',
+              icon: 'monitor',
+              permission: 'M_shelfMonitoring'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'shelfMonitoringList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/shelfMonitoring/list.vue'),
+                meta: {
+                  title: '货架监控列表',
+                  icon: 'monitor',
+                  hidden: true
+                  // permission: 'M_salesQueryList'
+                }
+              },
+              {
+                path: 'warehouseDetail/:shelfPlaceSn/:productSn',
+                name: 'shelfMonitoringWarehouseDetail',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/shelfMonitoring/warehouseDetail.vue'),
+                meta: {
+                  title: '货架监控出入库明细',
+                  icon: 'monitor',
+                  hidden: true,
+                  replaceTab: true
+                  // permission: 'M_salesQueryList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/numsGoodsShelves/replenishmentManagement',
+            redirect: '/numsGoodsShelves/replenishmentManagement/list',
+            name: 'replenishmentManagement',
+            component: BlankLayout,
+            meta: {
+              title: '补货管理',
+              icon: 'monitor',
+              permission: 'M_replenishmentManagement'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'replenishmentManagementList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/replenishmentManagement/list.vue'),
+                meta: {
+                  title: '补货管理列表',
+                  icon: 'monitor',
+                  hidden: true
+                  // permission: 'M_salesQueryList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/numsGoodsShelves/recallManagement',
+            redirect: '/numsGoodsShelves/recallManagement/list',
+            name: 'recallManagement',
+            component: BlankLayout,
+            meta: {
+              title: '调回管理',
+              icon: 'monitor',
+              permission: 'M_recallManagement'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'recallManagementList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/recallManagement/list.vue'),
+                meta: {
+                  title: '调回管理列表',
+                  icon: 'monitor',
+                  hidden: true
+                  // permission: 'M_salesQueryList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/numsGoodsShelves/settlementManagement',
+            redirect: '/numsGoodsShelves/settlementManagement/list',
+            name: 'settlementManagement',
+            component: BlankLayout,
+            meta: {
+              title: '结算管理',
+              icon: 'monitor',
+              permission: 'M_settlementManagement'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'settlementManagementList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/settlementManagement/list.vue'),
+                meta: {
+                  title: '结算管理列表',
+                  icon: 'monitor',
+                  hidden: true
+                  // permission: 'M_salesQueryList'
+                }
+              },
+              {
+                path: 'unDetail/:shelfSn/:settleType/:shelfName',
+                name: 'unSettlementDetail',
+                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/numsGoodsShelves/settlementManagement/unSettlementDetail.vue'),
+                meta: {
+                  title: '待结算明细',
+                  icon: 'monitor',
+                  hidden: true,
+                  replaceTab: true
+                  // permission: 'M_salesQueryList'
+                }
+              },
+              {
+                path: 'detail/:shelfSn/:shelfName',
+                name: 'settlementDetail',
+                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/numsGoodsShelves/settlementManagement/settlementDetail.vue'),
+                meta: {
+                  title: '结算历史',
+                  icon: 'monitor',
+                  hidden: true,
+                  replaceTab: true
+                  // permission: 'M_salesQueryList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/numsGoodsShelves/withdrawalManagement',
+            redirect: '/numsGoodsShelves/withdrawalManagement/list',
+            name: 'withdrawalManagement',
+            component: BlankLayout,
+            meta: {
+              title: '提现管理',
+              icon: 'monitor',
+              permission: 'M_withdrawalManagement'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'withdrawalManagementList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/withdrawalManagement/list.vue'),
+                meta: {
+                  title: '提现管理列表',
+                  icon: 'monitor',
+                  hidden: true
+                  // permission: 'M_salesQueryList'
+                }
+              }
+            ]
+          },
+          {
+            path: '/numsGoodsShelves/recallStockManagement',
+            redirect: '/numsGoodsShelves/recallStockManagement/list',
+            name: 'recallStockManagement',
+            component: BlankLayout,
+            meta: {
+              title: '调回入库',
+              icon: 'monitor',
+              permission: 'M_recallStockManagement'
+            },
+            hideChildrenInMenu: true,
+            children: [
+              {
+                path: 'list',
+                name: 'recallStockManagementList',
+                component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/recallStockManagement/list.vue'),
+                meta: {
+                  title: '调回入库列表',
+                  icon: 'monitor',
+                  hidden: true
+                  // permission: 'M_salesQueryList'
+                }
+              },
+              {
+                path: 'editStock/:stockPutSn',
+                name: 'editStock',
+                component: () => import(/* webpackChunkName: "salesManagement" */ '@/views/numsGoodsShelves/recallStockManagement/editStock.vue'),
+                meta: {
+                  title: '编辑入库',
+                  icon: 'monitor',
+                  hidden: true,
+                  replaceTab: true
+                  // permission: 'M_salesQueryList'
+                }
+              }
+            ]
+          }
+          // {
+          //   path: '/numsGoodsShelves/accountManagement',
+          //   redirect: '/numsGoodsShelves/accountManagement/list',
+          //   name: 'accountManagement',
+          //   component: BlankLayout,
+          //   meta: {
+          //     title: '账户明细',
+          //     icon: 'monitor'
+          //     // permission: 'M_salesQueryList'
+          //   },
+          //   hideChildrenInMenu: true,
+          //   children: [
+          //     {
+          //       path: 'list',
+          //       name: 'accountManagementList',
+          //       component: () => import(/* webpackChunkName: "numsGoodsShelves" */ '@/views/numsGoodsShelves/accountManagement/list.vue'),
+          //       meta: {
+          //         title: '账户明细列表',
+          //         icon: 'monitor',
+          //         hidden: true
+          //         // permission: 'M_salesQueryList'
+          //       }
+          //     }
+          //   ]
+          // }
+        ]
+      },
       // 采购管理
       {
         path: '/purchasingManagement',

+ 244 - 0
src/views/numsGoodsShelves/recallStockManagement/editStock.vue

@@ -0,0 +1,244 @@
+<template>
+  <div class="goodsAllocationSet-page">
+    <a-spin :spinning="spinning" tip="Loading...">
+      <a-page-header :ghost="false" :backIcon="false" class="goodsAllocationSet-baseInfo" >
+        <template slot="subTitle">
+          <a href="javascript:;" @click="handleBack(0)"><a-icon type="left"></a-icon> 返回列表</a>
+          <span style="margin: 0 15px;">{{ pageInfo &&pageInfo.providerName?pageInfo.providerName:'--' }}</span>
+          <span>(调回单号:{{ pageInfo &&pageInfo.putBizNo?pageInfo.putBizNo:'--' }})</span>
+        </template>
+      </a-page-header>
+      <a-card :bordered="false" size="small" class="goodsAllocationSet-baseInfo">
+        <a-alert type="info" style="margin:10px 0">
+          <div slot="message" >
+            入库总数量<strong>{{ pageInfo &&pageInfo.productTotalQty?pageInfo.productTotalQty:'--' }}</strong>,
+            入库总成本¥<strong>{{ pageInfo &&pageInfo.productTotalCost?pageInfo.productTotalCost:0 }}</strong>
+          </div>
+        </a-alert>
+        <s-table
+          class="sTable fixPagination"
+          ref="table"
+          size="small"
+          rowKey="id"
+          :showPagination="false"
+          :columns="columns"
+          :data="loadData"
+          :defaultLoadData="true"
+          bordered>
+          <template slot="action" slot-scope="text, record">
+            <a-cascader
+              size="small"
+              @change="e => changeWarehouseCascade(e, record)"
+              v-model="record.warehouseCascade"
+              expand-trigger="hover"
+              :allowClear="false"
+              :options="warehouseCascadeData"
+              :fieldNames="{ label: 'name', value: 'sn', children: 'warehouseLocationList' }"
+              id="bulkWarehousingOrderEdit-choose-warehouseCascade"
+              placeholder="请选择仓库仓位"
+              style="width: 100%;" />
+          </template>
+        </s-table>
+        <div style="text-align: center;margin-top: 20px;">
+          <a-button size="small" class="button-primary" type="primary" @click="handleBack(1)">确认入库</a-button>
+        </div>
+      </a-card>
+    </a-spin>
+  </div>
+</template>
+
+<script>
+import { commonMixin } from '@/utils/mixin'
+import { STable } from '@/components'
+import { warehouseCascadeList } from '@/api/warehouse'
+import { recallrStockDetail, recallrStockDetailList, updateSelective, confirmPutStock } from '@/api/shelfRecall.js'
+export default {
+  mixins: [commonMixin],
+  components: { STable },
+  data () {
+    return {
+      spinning: false,
+      disabled: false,
+      isEdit: false, // 货位号是否为编辑
+      openModal: false, // 货位模板弹窗初始状态
+      stockPutTotal: 0, // 入库总数量
+      stockPutAmount: 0, // 入库总成本
+      formItemLayout: {
+        labelCol: { span: 6 },
+        wrapperCol: { span: 16 }
+      },
+      defaultWarehouseCascade: [],
+      pageInfo: null,
+      queryParam: {
+        beginDate: '',
+        endDate: '',
+        payWay: undefined
+      },
+      settleData: null,
+      // 表头
+      columns: [
+        { title: '序号', dataIndex: 'no', width: '5%', align: 'center' },
+        { title: '产品编码', dataIndex: 'productCode', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '产品名称', dataIndex: 'productName', width: '20%', align: 'left', customRender: function (text) { return text || '--' } },
+        { title: '入库数量', dataIndex: 'putQty', width: '7.5%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '单位', dataIndex: 'productUnit', width: '5%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '入库单价', dataIndex: 'putCost', width: '7.5%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
+        { title: '入库成本', dataIndex: 'putTotalCost', width: '25%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
+        { title: '操作', width: '15%', align: 'left', scopedSlots: { customRender: 'action' } }
+      ],
+      warehouseCascadeData: [], //  仓库仓位
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.spinning = true
+        return recallrStockDetailList({ stockPutSn: this.$route.params.stockPutSn }).then(res => {
+          let data
+          if (res.status == 200) {
+            console.log(res, 'liebiao')
+            data = res.data
+            for (let i = 0; i < data.length; i++) {
+              data[i].no = i + 1
+              if (this.defaultWarehouseCascade.length > 0) {
+                data[i].warehouseCascade = this.defaultWarehouseCascade
+                data[i].warehouseSn = this.defaultWarehouseCascade[0]
+                data[i].warehouseLocationSn = this.defaultWarehouseCascade[1]
+              } else {
+                data[i].warehouseCascade = undefined
+              }
+            }
+          }
+          this.spinning = false
+          return data
+        })
+      }
+    }
+  },
+  methods: {
+    handleBack (val) {
+      if (val == 1) {
+        confirmPutStock({ stockPutSn: this.$route.params.stockPutSn }).then(res => {
+          this.$message.warning(res.message)
+        })
+      }
+      setTimeout(() => {
+        this.$router.push({ path: '/numsGoodsShelves/recallStockManagement/list' })
+      }, 300)
+    },
+    // 入库信息的查询
+    getStockInfo () {
+      recallrStockDetail({ stockPutSn: this.$route.params.stockPutSn }).then(res => {
+        if (res.status == 200) {
+          this.pageInfo = res.data
+        } else {
+          this.pageInfo = null
+        }
+      })
+    },
+    changeWarehouseCascade (val, opt) {
+      console.log(val, opt)
+      updateSelective({ id: opt.id, warehouseSn: val[0], warehouseLocationSn: val[1] }).then(res => {
+        if (res.status == 200) {
+          this.$refs.table.refresh()
+          this.getStockInfo()
+        }
+      })
+      // let loadData
+      // if (type == 'dealerProduct') { //  全部产品
+      //   loadData = this.loadDataSource[ind]
+      // } else if (type == 'sparePartsPurDetail') { //  已选产品
+      //   loadData = this.chooseLoadDataSource[ind]
+      // }
+      // if (val.length < 2) {
+      //   this.$message.warning('当前仓库无仓位,请选择其他仓库')
+      //   const warehouseSnBackups = loadData.warehouseSnBackups || undefined
+      //   const warehouseLocationSnBackups = loadData.warehouseLocationSnBackups || undefined
+      //   loadData.warehouseSn = warehouseSnBackups
+      //   loadData.warehouseLocationSn = warehouseLocationSnBackups
+      //   if (warehouseSnBackups || warehouseLocationSnBackups) {
+      //     loadData.warehouseCascade = [warehouseSnBackups, warehouseLocationSnBackups]
+      //   } else {
+      //     loadData.warehouseCascade = undefined
+      //   }
+      // } else {
+      //   loadData.warehouseSn = val[0] ? val[0] : ''
+      //   loadData.warehouseLocationSn = val[1] ? val[1] : ''
+      //   if (type == 'sparePartsPurDetail') { //  已选产品
+      //     loadData = this.chooseLoadDataSource[ind]
+      //     // this.handleAdd(loadData, 'edit')
+      //   }
+      // }
+    },
+    //  仓库仓位  级联  列表
+    getWarehouseCascade () {
+      const _this = this
+      warehouseCascadeList({}).then(res => {
+        if (res.status == 200) {
+          res.data.filter(item => {
+            // 过滤默认仓库
+            if (item.defaultFlag == 1 && item.wasteFlag == 0) { //  defaultFlag为1,且不是废品仓
+              _this.defaultWarehouseCascade[0] = item.warehouseSn
+              // 过滤默认仓位
+              item.warehouseLocationList.filter(subItem => {
+                if (subItem.defaultFlag == 1 && subItem.wasteFlag == 0) {
+                  _this.defaultWarehouseCascade[1] = subItem.warehouseLocationSn
+                  _this.$refs.table.refresh(true)
+                }
+              })
+            }
+          })
+          console.log(this.defaultWarehouseCascade)
+          res.data.map(item => {
+            item.sn = item.warehouseSn
+            if (item.warehouseLocationList) {
+              item.warehouseLocationList.map(subItem => {
+                subItem.sn = subItem.warehouseLocationSn
+              })
+            }
+          })
+          this.warehouseCascadeData = res.data
+        } else {
+          this.warehouseCascadeData = []
+        }
+      })
+    },
+    // 查看详情
+    handleDetail (row) {
+      this.settleData = row
+      this.openModal = true
+    }
+  },
+  mounted () {
+    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
+      this.getStockInfo()
+      this.getWarehouseCascade()
+      // this.$refs.table.refresh()
+    }
+  },
+  activated () {
+    // 如果是新页签打开或者进入新的子页(例:存在列表第2条数据编辑页页签时再打开第4条数据的编辑页),则重置当前页面
+    if (this.$store.state.app.isNewTab || !this.$store.state.app.isNewSubTab) {
+      this.getStockInfo()
+      this.getWarehouseCascade()
+      // this.$refs.table.refresh()
+    }
+  }
+}
+</script>
+
+<style lang="less">
+  .goodsAllocationSet-page{
+    position: relative;
+    height: 100%;
+    padding-bottom: 51px;
+    box-sizing: border-box;
+    .goodsAllocationSet-baseInfo{
+      margin-bottom: 10px;
+    }
+    .bzj-collapse{
+      margin-top: 10px;
+      .ant-collapse-content-box{
+        padding: 10px !important;
+      }
+    }
+
+  }
+</style>

+ 197 - 0
src/views/numsGoodsShelves/recallStockManagement/list.vue

@@ -0,0 +1,197 @@
+<template>
+  <a-card size="small" :bordered="false" class="shelfSetList-wrap">
+    <a-spin :spinning="spinning" tip="Loading...">
+      <!-- 搜索条件 -->
+      <div ref="tableSearch" class="table-page-search-wrapper">
+        <a-form layout="inline" @keyup.enter.native="$refs.table.refresh(true)">
+          <a-row :gutter="15">
+            <a-col :md="6" :sm="24">
+              <a-form-item label="货架名称">
+                <shelfSList ref="shelfList" @change="shelfChange" :itemSn="queryParam.providerSn"></shelfSList>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="调回单号">
+                <a-input allowClear placeholder="请输入调回单号" v-model.tirm="queryParam.putBizNo"/>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24">
+              <a-form-item label="状态">
+                <v-select
+                  v-model="queryParam.state"
+                  ref="state"
+                  id="shelfSetList-state"
+                  code="STOCK_PUT_STATE"
+                  placeholder="请选择"
+                  allowClear></v-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="6" :sm="24" style="margin-bottom: 10px">
+              <a-button type="primary" @click="$refs.table.refresh(true)" :disabled="disabled" id="shelfSetList-refresh">查询</a-button>
+              <a-button style="margin-left: 5px" @click="resetSearchForm" :disabled="disabled" id="shelfSetList-reset">重置</a-button>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+      <!-- 提示 -->
+      <a-alert type="info" style="margin-bottom: 10px">
+        <div slot="message">
+          共 <strong>{{ count||0 }}</strong> 条记录,
+          其中待入库 <strong>{{ putCount||0 }}</strong> 条
+        </div>
+      </a-alert>
+      <!-- 列表 -->
+      <s-table
+        class="sTable fixPagination"
+        ref="table"
+        :style="{ height: tableHeight+84.5+'px' }"
+        size="small"
+        :rowKey="(record) => record.id"
+        :columns="columns"
+        :data="loadData"
+        :scroll="{ y: tableHeight }"
+        :defaultLoadData="false"
+        bordered>
+        <!-- 货位数量 -->
+        <template slot="shelfPlaceNum" slot-scope="text, record">
+          <div v-if="record.finishFlag=='1'">{{ record.shelfPlaceNum }}</div>
+          <div v-else>
+            <p style="margin: 0;">
+              <span style="color: red;">{{ record.shelfPlaceBindNum||record.shelfPlaceBindNum==0 ? record.shelfPlaceBindNum:'' }}</span> /
+              {{ record.shelfPlaceNum }}
+            </p>
+          </div>
+        </template>
+        <!-- 是否设置完成 -->
+        <template slot="finishFlag" slot-scope="text, record">
+          <span v-if="record.finishFlagDictValue" :style="{color: record.finishFlagDictValue=='否' ? 'red':''}">{{ record.finishFlagDictValue }}</span>
+          <span v-else>--</span>
+        </template>
+        <!-- 操作 -->
+        <template slot="action" slot-scope="text, record">
+          <a-button size="small" type="link" class="button-primary" @click="handleSet(record)" v-if="record.state=='WAIT'">确认入库</a-button>
+          <span v-else style="display: inline-block;padding-left: 7px;">--</span>
+        </template>
+      </s-table>
+    </a-spin>
+
+  </a-card>
+</template>
+
+<script>
+import { commonMixin } from '@/utils/mixin'
+import { STable, VSelect } from '@/components'
+import shelfSList from '@/views/common/shelfList.vue'
+import { recallStockList, stockPutCount } from '@/api/shelfRecall.js'
+export default {
+  components: { STable, VSelect, shelfSList },
+  mixins: [commonMixin],
+  data () {
+    return {
+      spinning: false,
+      tableHeight: 0,
+      disabled: false, //  查询、重置按钮是否可操作
+      count: 0, // 数据总条数
+      putCount: 0, // 待入库条数
+      queryParam: {
+        putBizNo: '',
+        providerSn: undefined,
+        state: undefined
+      },
+      columns: [
+        { title: '序号', dataIndex: 'no', width: '5%', align: 'center' },
+        { title: '调回单号', dataIndex: 'putBizNo', width: '15%', align: 'left', customRender: function (text) { return text || '--' } },
+        { title: '货架名称', dataIndex: 'providerName', width: '25%', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
+        { title: '入库总数量', dataIndex: 'productTotalQty', width: '10%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
+        { title: '入库总成本', dataIndex: 'productTotalCost', width: '10%', align: 'center', customRender: function (text) { return (text || text == 0) ? text : '--' } },
+        { title: '状态', dataIndex: 'stateDictValue', width: '10%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '入库时间', dataIndex: 'auditTime', width: '15%', align: 'center', customRender: function (text) { return text || '--' } },
+        { title: '操作', scopedSlots: { customRender: 'action' }, width: '10%', align: 'left' }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        this.disabled = true
+        this.spinning = true
+        return recallStockList(Object.assign(parameter, this.queryParam)).then(res => {
+          let data
+          if (res.status == 200) {
+            data = res.data
+            this.count = res.data.count
+            this.getStockPutCount(this.queryParam)
+            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
+          }
+          this.spinning = false
+          return data
+        })
+      },
+      openModal: false,
+      nowData: null
+    }
+  },
+  methods: {
+    // 查询待入库条数
+    getStockPutCount () {
+      stockPutCount(this.queryParam).then(res => {
+        if (res.status == 200) {
+          this.putCount = res.data
+        } else {
+          this.putCount = 0
+        }
+      })
+    },
+    // 设置/修改
+    handleSet (row) {
+      this.$router.push({ path: `/numsGoodsShelves/recallStockManagement/editStock/${row.stockPutSn}` })
+    },
+    // 货架  change
+    shelfChange (obj) {
+      this.queryParam.providerSn = obj.key || undefined
+    },
+    // 重置
+    resetSearchForm () {
+      this.queryParam.providerSn = undefined
+      this.queryParam.putBizNo = ''
+      this.$refs.shelfList.resetForm()
+      this.queryParam.state = undefined
+      this.$refs.table.refresh(true)
+    },
+    setTableH () {
+      const tableSearchH = this.$refs.tableSearch.offsetHeight
+      this.tableHeight = window.innerHeight - tableSearchH - 235
+    },
+    pageInit () {
+      const _this = this
+      this.$nextTick(() => { // 页面渲染完成后的回调
+        _this.setTableH()
+      })
+    }
+  },
+  mounted () {
+    if (!this.$store.state.app.isNewTab) { // 页签刷新时调用
+      this.pageInit()
+      this.resetSearchForm()
+    }
+  },
+  watch: {
+    '$store.state.app.winHeight' (newValue, oldValue) { //  窗口变更时,需同时更改表格高度
+      this.setTableH()
+    }
+  },
+  activated () {
+    // 如果是新页签打开,则重置当前页面
+    if (this.$store.state.app.isNewTab) {
+      this.pageInit()
+      this.resetSearchForm()
+    }
+    // 仅刷新列表,不重置页面
+    if (this.$store.state.app.updateList) {
+      this.pageInit()
+      this.$refs.table.refresh()
+    }
+  }
+}
+</script>

+ 29 - 44
src/views/numsGoodsShelves/settlementManagement/detailModal.vue

@@ -1,7 +1,6 @@
 <template>
   <a-modal
     centered
-    class="chooseImport-modal"
     :footer="null"
     :maskClosable="false"
     title="结算明细"
@@ -9,32 +8,30 @@
     @cancle="isShow=false"
     width="70%">
     <a-spin :spinning="spinning" tip="Loading...">
-      <div class="chooseImport-con">
-        <a-descriptions :column="3">
-          <a-descriptions-item label="结算时间">
-            {{ this.settleData &&this.settleData.payDate?this.settleData.payDate:'--' }}
-          </a-descriptions-item>
-          <a-descriptions-item label="结算金额">
-            {{ this.settleData &&this.settleData.settleAmount?toThousands(this.settleData.settleAmount,2):'--' }}
-          </a-descriptions-item>
-          <a-descriptions-item label="支付方式">
-            {{ this.settleData&&this.settleData.payWayDictValue?this.settleData.payWayDictValue:'--' }}
-          </a-descriptions-item>
-        </a-descriptions>
-        <!-- 可导入数据 -->
-        <s-table
-          class="sTable fixPagination"
-          ref="table"
-          size="small"
-          :rowKey="(record) => record.allocateSn"
-          :columns="nowColumns"
-          :data="loadData"
-          :loading="loading"
-          :defaultLoadData="true"
-          :scroll="{ y: 600 }"
-          bordered>
-        </s-table>
-      </div>
+      <a-descriptions :column="3">
+        <a-descriptions-item label="结算时间">
+          {{ this.settleData &&this.settleData.payDate?this.settleData.payDate:'--' }}
+        </a-descriptions-item>
+        <a-descriptions-item label="结算金额">
+          {{ this.settleData &&this.settleData.settleAmount?toThousands(this.settleData.settleAmount,2):'--' }}
+        </a-descriptions-item>
+        <a-descriptions-item label="支付方式">
+          {{ this.settleData&&this.settleData.payWayDictValue?this.settleData.payWayDictValue:'--' }}
+        </a-descriptions-item>
+      </a-descriptions>
+      <!-- 可导入数据 -->
+      <s-table
+        class="sTable"
+        ref="table"
+        size="small"
+        :rowKey="(record) => record.allocateSn"
+        :columns="nowColumns"
+        :data="loadData"
+        :loading="loading"
+        :defaultLoadData="true"
+        :scroll="{ y: 600 }"
+        bordered>
+      </s-table>
     </a-spin >
   </a-modal>
 </template>
@@ -72,7 +69,7 @@ export default {
         { title: '产品名称', width: '20%', dataIndex: 'productName', align: 'left', customRender: function (text) { return text || '--' }, ellipsis: true },
         { title: '结算价', width: '10%', dataIndex: 'settlePrice', align: 'right', customRender: function (text) { return toThousands(text, 2) || '--' } },
         { title: '下单数量', width: '8%', dataIndex: 'totalQty', align: 'center', customRender: function (text) { return text || '--' } },
-        { title: '合计金额', width: '10%', dataIndex: 'saleAmount', align: 'right', customRender: function (text) { return toThousands(text, 2) || '--' } }
+        { title: '合计金额', width: '10%', dataIndex: 'settleAmount', align: 'right', customRender: function (text) { return toThousands(text, 2) || '--' } }
       ],
       loadData: parameter => {
         this.spinning = true
@@ -106,7 +103,9 @@ export default {
       if (!newValue) {
         this.$emit('close')
       } else {
-        this.$refs.table.refresh(true)
+        this.$nextTick(() => {
+          this.$refs.table.refresh(true)
+        })
       }
     },
     settleData (newValue, oldValue) {
@@ -117,19 +116,5 @@ export default {
 }
 </script>
 
-<style lang="less" scoped>
-  .chooseImport-modal{
-    .chooseImport-con{
-      .red{
-        color: #f30;
-      }
-      .btn-con{
-        text-align: center;
-        margin: 30px 0 20px;
-        .button-cancel,.button-error{
-          font-size: 12px;
-        }
-      }
-    }
-  }
+<style lang="less">
 </style>

+ 1 - 1
src/views/numsGoodsShelves/settlementManagement/settlementDetail.vue

@@ -118,7 +118,7 @@ export default {
   },
   methods: {
     handleBack () {
-      this.$router.go(-1)
+      this.$router.push({ path: '/numsGoodsShelves/settlementManagement/list' })
     },
     dateChange (date) {
 	  this.queryParam.beginDate = moment(date[0]).format('YYYY-MM-DD')

+ 4 - 4
src/views/numsGoodsShelves/settlementManagement/unSettlementDetail.vue

@@ -32,7 +32,7 @@
                 <span>{{ total && toThousands(total.freezeAmount,2) }}</span>
               </a-descriptions-item>
               <a-descriptions-item label="可用额度">
-                <span>{{ total && toThousands(total.activeAmount,2) }}</span>
+                <span>{{ total && toThousands(total.usableAmount,2) }}</span>
               </a-descriptions-item>
             </a-descriptions>
           </a-collapse-panel>
@@ -91,7 +91,7 @@ import { commonMixin } from '@/utils/mixin'
 import { STable, VSelect } from '@/components'
 import { toThousands } from '@/libs/tools.js'
 import moment from 'moment'
-import { queryOrderBillDetailPage, queryOrderBillDetailCount, merchantCashOutDetail } from '@/api/merchant'
+import { queryOrderBillDetailPage, queryOrderBillDetailCount, merchantCashOut } from '@/api/merchant'
 export default {
   mixins: [commonMixin],
   components: { STable, VSelect, commonMixin },
@@ -158,7 +158,7 @@ export default {
 
   methods: {
     handleBack () {
-      this.$router.go(-1)
+      this.$router.push({ path: '/numsGoodsShelves/settlementManagement/list' })
     },
     orderDateChange (date) {
       console.log(date, date)
@@ -177,7 +177,7 @@ export default {
     getPageInfo () {
       this.spinning = true
       const info = JSON.parse(sessionStorage.getItem('settlementDetail'))
-      merchantCashOutDetail({}).then(res => {
+      merchantCashOut({ shelfSn: this.$route.params.shelfSn }).then(res => {
         console.log(res, info, '===========')
         if (res.status == 200) {
           this.total = res.data

+ 18 - 6
src/views/numsGoodsShelves/shelfSet/basicInfoModal.vue

@@ -17,7 +17,15 @@
         :rules="rules"
         :label-col="formItemLayout.labelCol"
         :wrapper-col="formItemLayout.wrapperCol">
-        <a-form-model-item label="关联客户" prop="customerSn">
+        <a-form-model-item prop="customerSn">
+          <template slot="label">
+            <a-tooltip placement="top">
+              <template slot="title">
+                <span>此数字货架,归属于您的哪一位客户。如果没有搜索到客户,请在客户管理功能中新建客户。</span>
+              </template>
+              关联客户<a-icon type="question-circle" style="color: rgba(0,0,0,.65);font-size: 16px;margin-left: 2px;vertical-align: sub;cursor: pointer;" />
+            </a-tooltip>
+          </template>
           <custList ref="custList" :isEnabled="true" @change="custChange"></custList>
         </a-form-model-item>
       </a-form-model>
@@ -56,8 +64,8 @@ export default {
       spinning: false,
       isShow: this.openModal, //  是否打开弹框
       formItemLayout: {
-        labelCol: { span: 4 },
-        wrapperCol: { span: 18 }
+        labelCol: { span: 5 },
+        wrapperCol: { span: 17 }
       },
       form: {
         customerSn: undefined
@@ -114,9 +122,13 @@ export default {
         if (this.nowData.customerSn) {
           const _this = this
           this.$nextTick(() => {
-            _this.form.customerSn = _this.nowData.customerSn
-            _this.$refs.custList.fetchUser(_this.nowData.customerName)
-            _this.$refs.custList.dealerName = { key: _this.nowData.customerSn, label: _this.nowData.customerName, row: _this.nowData }
+            _this.form.customerSn = _this.nowData.customerEntity && _this.nowData.customerEntity.customerSn
+            _this.$refs.custList.fetchUser(_this.nowData.customerEntity && _this.nowData.customerEntity.customerName)
+            _this.$refs.custList.dealerName = {
+              key: _this.nowData.customerEntity && _this.nowData.customerEntity.customerSn,
+              label: _this.nowData.customerEntity && _this.nowData.customerEntity.customerName,
+              row: _this.nowData
+            }
           })
         }
       }

+ 1 - 1
src/views/numsGoodsShelves/withdrawalManagement/applyWithdrawal.vue

@@ -134,7 +134,7 @@ export default {
       this.opened = nVal
       // this.getPageInfo()
     },
-    opend (nVal, oVal) {
+    opened (nVal, oVal) {
       if (nVal) {
         this.getPageInfo()
       } else {

+ 3 - 3
src/views/salesManagement/salesQuery/list.vue

@@ -134,7 +134,7 @@
             size="small"
             type="link"
             class="button-info"
-            v-if="((record.salesBillSource == 'SATELLITE' || record.salesBillSource == 'SALES') && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'WAIT_SUBMIT' || record.billStatus == 'AUDIT_REJECT')) && $hasPermissions('B_salesEdit')"
+            v-if="((record.salesBillSource == 'SATELLITE' || record.salesBillSource == 'SALES' || record.salesBillSource == 'TEMPORARY_DISPATCHING') && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'WAIT_SUBMIT' || record.billStatus == 'AUDIT_REJECT')) && $hasPermissions('B_salesEdit')"
             @click="handleEdit(record)"
           >
             编辑
@@ -143,7 +143,7 @@
             size="small"
             type="link"
             class="button-error"
-            v-if="((record.salesBillSource == 'SATELLITE' || record.salesBillSource == 'SALES') && record.billStatus != 'FINISH') && $hasPermissions('B_salesDel')"
+            v-if="((record.salesBillSource == 'SATELLITE' || record.salesBillSource == 'SALES' || record.salesBillSource == 'TEMPORARY_DISPATCHING') && record.billStatus != 'FINISH') && $hasPermissions('B_salesDel')"
             @click="handleDel(record)"
           >
             删除
@@ -166,7 +166,7 @@
           >
             取消
           </a-button>
-          <span v-if="!(record.billStatus == 'WAIT_AUDIT' && $hasPermissions('B_salesAudit')) && !(record.billStatus == 'WAIT_OUT_WAREHOUSE' && $hasPermissions('B_salesStockOut')) && !(((record.salesBillSource == 'SATELLITE' || record.salesBillSource == 'SALES') && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'WAIT_SUBMIT' || record.billStatus == 'AUDIT_REJECT')) && $hasPermissions('B_salesEdit')) && !(((record.salesBillSource == 'SATELLITE' || record.salesBillSource == 'SALES') && record.billStatus != 'FINISH') && $hasPermissions('B_salesDel')) && !((record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'SUPERIOR_CHANGE')) && $hasPermissions('B_salesEdit')) && !((record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'SUPERIOR_CHANGE')) && $hasPermissions('B_salesDel'))">--</span>
+          <span v-if="!(record.billStatus == 'WAIT_AUDIT' && $hasPermissions('B_salesAudit')) && !(record.billStatus == 'WAIT_OUT_WAREHOUSE' && $hasPermissions('B_salesStockOut')) && !(((record.salesBillSource == 'SATELLITE' || record.salesBillSource == 'SALES' || record.salesBillSource == 'TEMPORARY_DISPATCHING') && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'WAIT_SUBMIT' || record.billStatus == 'AUDIT_REJECT')) && $hasPermissions('B_salesEdit')) && !(((record.salesBillSource == 'SATELLITE' || record.salesBillSource == 'SALES' || record.salesBillSource == 'TEMPORARY_DISPATCHING') && record.billStatus != 'FINISH') && $hasPermissions('B_salesDel')) && !((record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'SUPERIOR_CHANGE')) && $hasPermissions('B_salesEdit')) && !((record.salesBillSource == 'PURCHASE' && (record.billStatus == 'WAIT_AUDIT' || record.billStatus == 'SUPERIOR_CHANGE')) && $hasPermissions('B_salesDel'))">--</span>
         </template>
       </s-table>
     </a-spin>