ソースを参照

Merge remote-tracking branch 'origin/fix-bug' into develop

Howie 2 年 前
コミット
fabecc7254
100 ファイル変更32410 行追加2859 行削除
  1. 0 37
      .history/src/api/stock_20220720145422.js
  2. 0 46
      .history/src/api/stock_20220818144734.js
  3. 0 7
      .history/src/views/basic_data/stock/product_list_20220818143421.vue
  4. 0 7
      .history/src/views/basic_data/stock/product_list_20220818143532.vue
  5. 0 73
      .history/src/views/basic_data/stock/product_list_20220818143704.vue
  6. 0 73
      .history/src/views/basic_data/stock/product_list_20220818143730.vue
  7. 0 68
      .history/src/views/basic_data/stock/product_list_20220818143739.vue
  8. 0 71
      .history/src/views/basic_data/stock/product_list_20220818144052.vue
  9. 0 81
      .history/src/views/basic_data/stock/product_list_20220818144133.vue
  10. 0 110
      .history/src/views/basic_data/stock/product_list_20220818144316.vue
  11. 0 112
      .history/src/views/basic_data/stock/product_list_20220818144338.vue
  12. 0 124
      .history/src/views/basic_data/stock/product_list_20220818144428.vue
  13. 0 138
      .history/src/views/basic_data/stock/product_list_20220818144456.vue
  14. 0 141
      .history/src/views/basic_data/stock/product_list_20220818144523.vue
  15. 0 166
      .history/src/views/basic_data/stock/product_list_20220818144541.vue
  16. 0 167
      .history/src/views/basic_data/stock/product_list_20220818144800.vue
  17. 0 177
      .history/src/views/basic_data/stock/product_list_20220818144930.vue
  18. 0 177
      .history/src/views/basic_data/stock/product_list_20220818144933.vue
  19. 0 177
      .history/src/views/basic_data/stock/product_list_20220818144956.vue
  20. 0 177
      .history/src/views/basic_data/stock/product_list_20220818145008.vue
  21. 0 177
      .history/src/views/basic_data/stock/product_list_20220818145018.vue
  22. 0 175
      .history/src/views/basic_data/stock/product_list_20220818145031.vue
  23. 0 0
      .history/src/views/stock/product_list_20220818143314.vue
  24. 0 3
      .history/src/views/stock/product_list_20220818143351.vue
  25. 0 3
      .history/src/views/stock/product_list_20220818143354.vue
  26. 0 7
      .history/src/views/stock/product_list_20220818143422.vue
  27. 27296 1
      package-lock.json
  28. 1 1
      package.json
  29. 103 0
      src/api/barcode.js
  30. 19 0
      src/api/barcodeVerification.js
  31. 26 0
      src/api/basic_data/dailyWarehouseRent.js
  32. 60 1
      src/api/basic_data/dealer.js
  33. 17 0
      src/api/basic_data/fullCargo.js
  34. 9 0
      src/api/basic_data/material.js
  35. 17 0
      src/api/basic_data/monthlyWarehouseRent.js
  36. 47 0
      src/api/basic_data/numerusClausus.js
  37. 47 0
      src/api/basic_data/partya.js
  38. 31 0
      src/api/basic_data/sectorAllocation.js
  39. 9 0
      src/api/basic_data/taker.js
  40. 28 1
      src/api/common.js
  41. 50 0
      src/api/crossDistrict.js
  42. 20 1
      src/api/dashboard.js
  43. 17 0
      src/api/dataAnalysis.js
  44. 19 0
      src/api/deposit_list_v2.js
  45. 10 1
      src/api/engin_deposit/refund_list.js
  46. 65 0
      src/api/executionRecord.js
  47. 8 0
      src/api/finance/receivable_list.js
  48. 136 0
      src/api/frock.js
  49. 48 0
      src/api/homeDecoration.js
  50. 49 0
      src/api/logisticsBill.js
  51. 17 0
      src/api/orderException.js
  52. 95 3
      src/api/policy_list.js
  53. 107 0
      src/api/priceType.js
  54. 34 0
      src/api/reconciliation.js
  55. 15 0
      src/api/sales.js
  56. 26 0
      src/api/salesReconciliation.js
  57. 53 0
      src/api/setting.js
  58. 19 0
      src/api/stock.js
  59. 17 0
      src/api/summaryTable.js
  60. 9 0
      src/api/supply/engin.js
  61. 11 0
      src/api/supply/implement.js
  62. 68 0
      src/api/supply/salesReturnOrder.js
  63. 73 0
      src/api/transferOrder.js
  64. 2 1
      src/components/Common/edit-date-dialog.vue
  65. 20 10
      src/components/Common/file-upload.vue
  66. 957 0
      src/components/LogisticsTabs/index.vue
  67. 52 0
      src/components/MenuRouter/index.vue
  68. 248 19
      src/components/NotifyBox/index.vue
  69. 2 2
      src/components/ReturnSalesHeader/ReturnSalesHeader.vue
  70. 93 68
      src/components/SalesDialog/SalesDialog.vue
  71. 44 41
      src/components/SalesHeader/SalesHeader.vue
  72. 6 12
      src/components/SalesTable/SalesTable.vue
  73. 69 37
      src/components/template/sel-export-column-list.vue
  74. 60 22
      src/components/template/template-page-1.vue
  75. 7 1
      src/filters/index.js
  76. 86 8
      src/layout/components/AppMain.vue
  77. 1 1
      src/layout/components/Sidebar/Logo.vue
  78. 3 3
      src/layout/components/Sidebar/SidebarItem.vue
  79. 19 2
      src/main.js
  80. 22 18
      src/mixin/print.js
  81. 9 7
      src/permission.js
  82. 1 1
      src/settings.js
  83. 4 3
      src/store/getters.js
  84. 14 9
      src/store/modules/user.js
  85. 48 0
      src/utils/common.js
  86. 240 0
      src/utils/common_select.js
  87. 136 0
      src/utils/lbs.js
  88. 1 1
      src/utils/panel2.js
  89. 7 0
      src/utils/select_data.js
  90. 97 0
      src/views/barcode/barcodeImport.vue
  91. 98 0
      src/views/barcode/barcodeVerification.vue
  92. 80 0
      src/views/barcode/largeStockBarcode.vue
  93. 72 0
      src/views/barcode/utboundBarcode.vue
  94. 275 0
      src/views/barcodeVerification/batchEquipment.vue
  95. 462 0
      src/views/barcodeVerification/code_list.vue
  96. 167 0
      src/views/basic_data/dailyWarehouseRent.vue
  97. 186 75
      src/views/basic_data/dealer/components/dealer_list-detail.vue
  98. 45 12
      src/views/basic_data/dealer/dealer_list.vue
  99. 83 0
      src/views/basic_data/fullCargo.vue
  100. 18 3
      src/views/basic_data/material/modify_list.vue

+ 0 - 37
.history/src/api/stock_20220720145422.js

@@ -1,37 +0,0 @@
-import request from '@/utils/request'
-
-// 获取库存列表
-export function getStockList(params) {
-  return request({
-    url: '/stock/manager/list',
-    method: 'get',
-    params
-  })
-}
-
-// 获取仓库列表
-export function getWarehouseList(params) {
-  return request({
-    url: '/stock/listStock',
-    method: 'get',
-    params
-  })
-}
-
-// 获取销售类型列表
-export function getSalesTypeList(params) {
-  return request({
-    url: '/sale/type/list',
-    method: 'get',
-    params
-  })
-}
-
-// 获取预留库存列表
-export function getReservedList(params) {
-  return request({
-    url: '/stock/manager/listCustomer',
-    method: 'get',
-    params
-  })
-}

+ 0 - 46
.history/src/api/stock_20220818144734.js

@@ -1,46 +0,0 @@
-import request from '@/utils/request'
-
-// 获取库存列表
-export function getStockList(params) {
-  return request({
-    url: '/stock/manager/list',
-    method: 'get',
-    params
-  })
-}
-
-// 获取仓库列表
-export function getWarehouseList(params) {
-  return request({
-    url: '/stock/listStock',
-    method: 'get',
-    params
-  })
-}
-
-// 获取销售类型列表
-export function getSalesTypeList(params) {
-  return request({
-    url: '/sale/type/list',
-    method: 'get',
-    params
-  })
-}
-
-// 获取预留库存列表
-export function getReservedList(params) {
-  return request({
-    url: '/stock/manager/listCustomer',
-    method: 'get',
-    params
-  })
-}
-
-// 获取仓库现存列表
-export function getListStockToDay(params) {
-  return request({
-    url: '/stock/manager/listStockToDay',
-    method: 'get',
-    params
-  })
-}

+ 0 - 7
.history/src/views/basic_data/stock/product_list_20220818143421.vue

@@ -1,7 +0,0 @@
-<template>
-  <div class="app-container">554</div>
-</template>
-
-<script>
-export default {}
-</script>

+ 0 - 7
.history/src/views/basic_data/stock/product_list_20220818143532.vue

@@ -1,7 +0,0 @@
-<template>
-  <div class="app-container">554</div>
-</template>
-
-<script>
-export default {}
-</script>

+ 0 - 73
.history/src/views/basic_data/stock/product_list_20220818143704.vue

@@ -1,73 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品大类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择产品大类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="规格型号" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入规格型号"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="经销商编号" prop="jxsNum">
-              <el-input v-model="screenForm.jxsNum" placeholder="请输入经销商编号"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="经销商名称" prop="jxsName">
-              <el-input v-model="screenForm.jxsName" placeholder="请输入经销商名称"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      screenForm: {
-        // 筛选表单数据
-        type: '',
-        goodsName: '',
-        goodsNum: '',
-        model: '',
-        jxsName: '',
-        jxsNum: ''
-      }
-    }
-  }
-}
-</script>

+ 0 - 73
.history/src/views/basic_data/stock/product_list_20220818143730.vue

@@ -1,73 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品大类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择产品大类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="规格型号" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入规格型号"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="经销商编号" prop="jxsNum">
-              <el-input v-model="screenForm.jxsNum" placeholder="请输入经销商编号"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="经销商名称" prop="jxsName">
-              <el-input v-model="screenForm.jxsName" placeholder="请输入经销商名称"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      screenForm: {
-        // 筛选表单数据
-        type: '',
-        goodsName: '',
-        goodsNum: '',
-        model: '',
-        jxsName: '',
-        jxsNum: ''
-      }
-    }
-  }
-}
-</script>

+ 0 - 68
.history/src/views/basic_data/stock/product_list_20220818143739.vue

@@ -1,68 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <!-- <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品大类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择产品大类" clearable>
-                <el-option v-for="item in typeList" :key="item.dictCode" :label="item.dictValue" :value="item.dictCode"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col> -->
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="规格型号" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入规格型号"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="经销商编号" prop="jxsNum">
-              <el-input v-model="screenForm.jxsNum" placeholder="请输入经销商编号"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="经销商名称" prop="jxsName">
-              <el-input v-model="screenForm.jxsName" placeholder="请输入经销商名称"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      screenForm: {
-        // 筛选表单数据
-        type: '',
-        goodsName: '',
-        goodsNum: '',
-        model: '',
-        jxsName: '',
-        jxsNum: ''
-      }
-    }
-  }
-}
-</script>

+ 0 - 71
.history/src/views/basic_data/stock/product_list_20220818144052.vue

@@ -1,71 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <!-- <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option v-for="item in typeList" :key="item.dictCode" :label="item.dictValue" :value="item.dictCode"></el-option>
-              </el-select> -->
-            </el-form-item>
-          </el-col>
-
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      screenForm: {
-        // 筛选表单数据
-        type: '',
-        goodsName: '',
-        goodsNum: '',
-        model: '',
-        jxsName: '',
-        jxsNum: ''
-      }
-    }
-  }
-}
-</script>

+ 0 - 81
.history/src/views/basic_data/stock/product_list_20220818144133.vue

@@ -1,81 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <!-- <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option v-for="item in typeList" :key="item.dictCode" :label="item.dictValue" :value="item.dictCode"></el-option>
-              </el-select> -->
-            </el-form-item>
-          </el-col>
-
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getDictList } from '@/api/common'
-export default {
-  data() {
-    return {
-      screenForm: {
-        // 筛选表单数据
-        type: '',
-        goodsName: '',
-        goodsNum: '',
-        model: '',
-        jxsName: '',
-        jxsNum: ''
-      },
-      typeList: []
-    }
-  },
-
-  methods: {
-    getDictList() {
-      getDictList({ sysDictEnum: 'PRODUCT_TYPE' }).then(res => {
-        this.typeList = res.data
-      })
-    }
-  }
-}
-</script>

+ 0 - 110
.history/src/views/basic_data/stock/product_list_20220818144316.vue

@@ -1,110 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getDictList } from '@/api/common'
-export default {
-  data() {
-    return {
-      screenForm: {
-        // 筛选表单数据
-        type: '',
-        goodsName: '',
-        goodsNum: '',
-        model: '',
-        jxsName: '',
-        jxsNum: ''
-      },
-      typeList: []
-    }
-  },
-
-  methods: {
-    getDictList() {
-      getDictList({ sysDictEnum: 'PRODUCT_TYPE' }).then(res => {
-        this.typeList = res.data
-      })
-    }
-  }
-}
-</script>

+ 0 - 112
.history/src/views/basic_data/stock/product_list_20220818144338.vue

@@ -1,112 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getDictList } from '@/api/common'
-export default {
-  data() {
-    return {
-      screenForm: {
-        // 筛选表单数据
-        type: '',
-        goodsName: '',
-        goodsNum: '',
-        model: '',
-        jxsName: '',
-        jxsNum: ''
-      },
-      typeList: [],
-      dataList: [],
-      listLoading: false
-    }
-  },
-
-  methods: {
-    getDictList() {
-      getDictList({ sysDictEnum: 'PRODUCT_TYPE' }).then(res => {
-        this.typeList = res.data
-      })
-    }
-  }
-}
-</script>

+ 0 - 124
.history/src/views/basic_data/stock/product_list_20220818144428.vue

@@ -1,124 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getDictList } from '@/api/common'
-export default {
-  data() {
-    return {
-      screenForm: {
-        // 筛选表单数据
-        type: '',
-        goodsName: '',
-        goodsNum: '',
-        model: '',
-        jxsName: '',
-        jxsNum: ''
-      },
-      typeList: [],
-      dataList: [],
-      listLoading: false
-    }
-  },
-
-  computed: {
-    exParams() {
-      return {
-        materialName: this.screenForm.goodsName,
-        materialNumber: this.screenForm.goodsNum,
-        specification: this.screenForm.model,
-        mainNumber: this.screenForm.type,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum
-      }
-    }
-  },
-  methods: {
-    getDictList() {
-      getDictList({ sysDictEnum: 'PRODUCT_TYPE' }).then(res => {
-        this.typeList = res.data
-      })
-    }
-  }
-}
-</script>

+ 0 - 138
.history/src/views/basic_data/stock/product_list_20220818144456.vue

@@ -1,138 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-    <div class="pagination clearfix">
-      <div class="fr">
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getDictList } from '@/api/common'
-export default {
-  data() {
-    return {
-      screenForm: {
-        // 筛选表单数据
-        type: '',
-        goodsName: '',
-        goodsNum: '',
-        model: '',
-        jxsName: '',
-        jxsNum: ''
-      },
-      typeList: [],
-      dataList: [],
-      listLoading: false
-    }
-  },
-
-  computed: {
-    exParams() {
-      return {
-        materialName: this.screenForm.goodsName,
-        materialNumber: this.screenForm.goodsNum,
-        specification: this.screenForm.model,
-        mainNumber: this.screenForm.type,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum
-      }
-    }
-  },
-  methods: {
-    getDictList() {
-      getDictList({ sysDictEnum: 'PRODUCT_TYPE' }).then(res => {
-        this.typeList = res.data
-      })
-    }
-  }
-}
-</script>

+ 0 - 141
.history/src/views/basic_data/stock/product_list_20220818144523.vue

@@ -1,141 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-    <div class="pagination clearfix">
-      <div class="fr">
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getDictList } from '@/api/common'
-export default {
-  data() {
-    return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: null, // 列表数据
-      listLoading: false, // 列表加载loading
-      screenForm: {
-        // 筛选表单数据
-        type: '',
-        goodsName: '',
-        goodsNum: '',
-        model: '',
-        jxsName: '',
-        jxsNum: ''
-      },
-      typeList: []
-    }
-  },
-
-  computed: {
-    exParams() {
-      return {
-        materialName: this.screenForm.goodsName,
-        materialNumber: this.screenForm.goodsNum,
-        specification: this.screenForm.model,
-        mainNumber: this.screenForm.type,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum
-      }
-    }
-  },
-  methods: {
-    getDictList() {
-      getDictList({ sysDictEnum: 'PRODUCT_TYPE' }).then(res => {
-        this.typeList = res.data
-      })
-    }
-  }
-}
-</script>

+ 0 - 166
.history/src/views/basic_data/stock/product_list_20220818144541.vue

@@ -1,166 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-    <div class="pagination clearfix">
-      <div class="fr">
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getDictList } from '@/api/common'
-export default {
-  data() {
-    return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: null, // 列表数据
-      listLoading: false, // 列表加载loading
-      screenForm: {
-        // 筛选表单数据
-        type: '',
-        goodsName: '',
-        goodsNum: '',
-        model: '',
-        jxsName: '',
-        jxsNum: ''
-      },
-      typeList: []
-    }
-  },
-
-  computed: {
-    exParams() {
-      return {
-        materialName: this.screenForm.goodsName,
-        materialNumber: this.screenForm.goodsNum,
-        specification: this.screenForm.model,
-        mainNumber: this.screenForm.type,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum
-      }
-    }
-  },
-  methods: {
-    getDictList() {
-      getDictList({ sysDictEnum: 'PRODUCT_TYPE' }).then(res => {
-        this.typeList = res.data
-      })
-    },
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 重置筛选表单
-    resetScreenForm() {
-      this.$refs.screenForm.resetFields()
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val
-      this.getList()
-    }
-  }
-}
-</script>

+ 0 - 167
.history/src/views/basic_data/stock/product_list_20220818144800.vue

@@ -1,167 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-    <div class="pagination clearfix">
-      <div class="fr">
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getListStockToDay } "@/api/stock"
-import { getDictList } from "@/api/common";
-export default {
-  data() {
-    return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: null, // 列表数据
-      listLoading: false, // 列表加载loading
-      screenForm: {
-        // 筛选表单数据
-        type: "",
-        goodsName: "",
-        goodsNum: "",
-        model: "",
-        jxsName: "",
-        jxsNum: "",
-      },
-      typeList: [],
-    };
-  },
-
-  computed: {
-    exParams() {
-      return {
-        materialName: this.screenForm.goodsName,
-        materialNumber: this.screenForm.goodsNum,
-        specification: this.screenForm.model,
-        mainNumber: this.screenForm.type,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum,
-      };
-    },
-  },
-  methods: {
-    getDictList() {
-      getDictList({ sysDictEnum: "PRODUCT_TYPE" }).then((res) => {
-        this.typeList = res.data;
-      });
-    },
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 重置筛选表单
-    resetScreenForm() {
-      this.$refs.screenForm.resetFields();
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val;
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val;
-      this.getList();
-    },
-  },
-};
-</script>

+ 0 - 177
.history/src/views/basic_data/stock/product_list_20220818144930.vue

@@ -1,177 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-    <div class="pagination clearfix">
-      <div class="fr">
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getListStockToDay } "@/api/stock"
-import { getDictList } from "@/api/common";
-export default {
-  data() {
-    return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: null, // 列表数据
-      listLoading: false, // 列表加载loading
-      screenForm: {
-        // 筛选表单数据
-        type: "",
-        goodsName: "",
-        goodsNum: "",
-        model: "",
-        jxsName: "",
-        jxsNum: "",
-      },
-      typeList: [],
-    };
-  },
-
-  computed: {
-    exParams() {
-      return {
-        materialName: this.screenForm.goodsName,
-        materialNumber: this.screenForm.goodsNum,
-        specification: this.screenForm.model,
-        mainNumber: this.screenForm.type,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum,
-      };
-    },
-  },
-  methods: {
-
-    getList(){
-      const parmas = {
-        pageNum:
-      }
-      getListStockToDay().then(res=>{
-        this.dataList = res.data.records
-      })
-    }
-
-    getDictList() {
-      getDictList({ sysDictEnum: "PRODUCT_TYPE" }).then((res) => {
-        this.typeList = res.data;
-      });
-    },
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 重置筛选表单
-    resetScreenForm() {
-      this.$refs.screenForm.resetFields();
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val;
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val;
-      this.getList();
-    },
-  },
-};
-</script>

+ 0 - 177
.history/src/views/basic_data/stock/product_list_20220818144933.vue

@@ -1,177 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-    <div class="pagination clearfix">
-      <div class="fr">
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getListStockToDay } "@/api/stock"
-import { getDictList } from "@/api/common";
-export default {
-  data() {
-    return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: null, // 列表数据
-      listLoading: false, // 列表加载loading
-      screenForm: {
-        // 筛选表单数据
-        type: "",
-        goodsName: "",
-        goodsNum: "",
-        model: "",
-        jxsName: "",
-        jxsNum: "",
-      },
-      typeList: [],
-    };
-  },
-
-  computed: {
-    exParams() {
-      return {
-        materialName: this.screenForm.goodsName,
-        materialNumber: this.screenForm.goodsNum,
-        specification: this.screenForm.model,
-        mainNumber: this.screenForm.type,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum,
-      };
-    },
-  },
-  methods: {
-
-    getList(){
-      const parmas = {
-        pageNum:1
-      }
-      getListStockToDay().then(res=>{
-        this.dataList = res.data.records
-      })
-    }
-
-    getDictList() {
-      getDictList({ sysDictEnum: "PRODUCT_TYPE" }).then((res) => {
-        this.typeList = res.data;
-      });
-    },
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 重置筛选表单
-    resetScreenForm() {
-      this.$refs.screenForm.resetFields();
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val;
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val;
-      this.getList();
-    },
-  },
-};
-</script>

+ 0 - 177
.history/src/views/basic_data/stock/product_list_20220818144956.vue

@@ -1,177 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-    <div class="pagination clearfix">
-      <div class="fr">
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getListStockToDay } "@/api/stock";
-import { getDictList } from "@/api/common";
-export default {
-  data() {
-    return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: null, // 列表数据
-      listLoading: false, // 列表加载loading
-      screenForm: {
-        // 筛选表单数据
-        type: "",
-        goodsName: "",
-        goodsNum: "",
-        model: "",
-        jxsName: "",
-        jxsNum: "",
-      },
-      typeList: [],
-    };
-  },
-
-  computed: {
-    exParams() {
-      return {
-        materialName: this.screenForm.goodsName,
-        materialNumber: this.screenForm.goodsNum,
-        specification: this.screenForm.model,
-        mainNumber: this.screenForm.type,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum,
-      };
-    },
-  },
-  methods: {
-
-    getList(){
-      const parmas = {
-        pageNum:1
-      }
-      getListStockToDay().then(res=>{
-        this.dataList = res.data.records
-      })
-    }
-
-    getDictList() {
-      getDictList({ sysDictEnum: "PRODUCT_TYPE" }).then((res) => {
-        this.typeList = res.data;
-      });
-    },
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 重置筛选表单
-    resetScreenForm() {
-      this.$refs.screenForm.resetFields();
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val;
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val;
-      this.getList();
-    },
-  },
-};
-</script>

+ 0 - 177
.history/src/views/basic_data/stock/product_list_20220818145008.vue

@@ -1,177 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-    <div class="pagination clearfix">
-      <div class="fr">
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getListStockToDay } "@/api/stock";
-import { getDictList } from "@/api/common";
-export default {
-  data() {
-    return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: null, // 列表数据
-      listLoading: false, // 列表加载loading
-      screenForm: {
-        // 筛选表单数据
-        type: "",
-        goodsName: "",
-        goodsNum: "",
-        model: "",
-        jxsName: "",
-        jxsNum: "",
-      },
-      typeList: [],
-    };
-  },
-
-  computed: {
-    exParams() {
-      return {
-        materialName: this.screenForm.goodsName,
-        materialNumber: this.screenForm.goodsNum,
-        specification: this.screenForm.model,
-        mainNumber: this.screenForm.type,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum,
-      };
-    },
-  },
-  methods: {
-
-    getList(){
-      const parmas = {
-        pageNum:1
-      }
-      getListStockToDay().then(res=>{
-        this.dataList = res.data.records
-      })
-    }
-
-    getDictList() {
-      getDictList({ sysDictEnum: "PRODUCT_TYPE" }).then((res) => {
-        this.typeList = res.data;
-      });
-    },
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 重置筛选表单
-    resetScreenForm() {
-      this.$refs.screenForm.resetFields();
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val;
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val;
-      this.getList();
-    },
-  },
-};
-</script>

+ 0 - 177
.history/src/views/basic_data/stock/product_list_20220818145018.vue

@@ -1,177 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-    <div class="pagination clearfix">
-      <div class="fr">
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getListStockToDay } from "@/api/stock";
-import { getDictList } from "@/api/common";
-export default {
-  data() {
-    return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: null, // 列表数据
-      listLoading: false, // 列表加载loading
-      screenForm: {
-        // 筛选表单数据
-        type: "",
-        goodsName: "",
-        goodsNum: "",
-        model: "",
-        jxsName: "",
-        jxsNum: "",
-      },
-      typeList: [],
-    };
-  },
-
-  computed: {
-    exParams() {
-      return {
-        materialName: this.screenForm.goodsName,
-        materialNumber: this.screenForm.goodsNum,
-        specification: this.screenForm.model,
-        mainNumber: this.screenForm.type,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum,
-      };
-    },
-  },
-  methods: {
-
-    getList(){
-      const parmas = {
-        pageNum:1
-      }
-      getListStockToDay().then(res=>{
-        this.dataList = res.data.records
-      })
-    }
-
-    getDictList() {
-      getDictList({ sysDictEnum: "PRODUCT_TYPE" }).then((res) => {
-        this.typeList = res.data;
-      });
-    },
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 重置筛选表单
-    resetScreenForm() {
-      this.$refs.screenForm.resetFields();
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val;
-      this.currentPage = 1;
-      this.getList();
-    },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val;
-      this.getList();
-    },
-  },
-};
-</script>

+ 0 - 175
.history/src/views/basic_data/stock/product_list_20220818145031.vue

@@ -1,175 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
-        <el-row :gutter="20">
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="仓库" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择仓库" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品编码" prop="goodsNum">
-              <el-input v-model="screenForm.goodsNum" placeholder="请输入产品编码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="厂产品代码" prop="model">
-              <el-input v-model="screenForm.model" placeholder="请输入厂产品代码"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="产品名称" prop="goodsName">
-              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :lg="6">
-            <el-form-item label="品类" prop="type">
-              <el-select v-model="screenForm.type" placeholder="请选择品类" clearable>
-                <el-option
-                  v-for="item in typeList"
-                  :key="item.dictCode"
-                  :label="item.dictValue"
-                  :value="item.dictCode"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <!-- <el-col :xs="24" :sm="24" :lg="12" class="tr">
-            <el-form-item label="">
-              <el-button @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" @click="submitScreenForm">搜索</el-button>
-            </el-form-item>
-          </el-col> -->
-        </el-row>
-      </el-form>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'stock/manager/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-    <div class="pagination clearfix">
-      <div class="fr">
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import { getListStockToDay } from '@/api/stock'
-import { getDictList } from '@/api/common'
-export default {
-  data() {
-    return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: null, // 列表数据
-      listLoading: false, // 列表加载loading
-      screenForm: {
-        // 筛选表单数据
-        type: '',
-        goodsName: '',
-        goodsNum: '',
-        model: '',
-        jxsName: '',
-        jxsNum: ''
-      },
-      typeList: []
-    }
-  },
-
-  computed: {
-    exParams() {
-      return {
-        materialName: this.screenForm.goodsName,
-        materialNumber: this.screenForm.goodsNum,
-        specification: this.screenForm.model,
-        mainNumber: this.screenForm.type,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum
-      }
-    }
-  },
-  methods: {
-    getList() {
-      const parmas = {
-        pageNum: 1
-      }
-      getListStockToDay().then(res => {
-        this.dataList = res.data.records
-      })
-    },
-    getDictList() {
-      getDictList({ sysDictEnum: 'PRODUCT_TYPE' }).then(res => {
-        this.typeList = res.data
-      })
-    },
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 重置筛选表单
-    resetScreenForm() {
-      this.$refs.screenForm.resetFields()
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val
-      this.getList()
-    }
-  }
-}
-</script>

+ 0 - 0
.history/src/views/stock/product_list_20220818143314.vue


+ 0 - 3
.history/src/views/stock/product_list_20220818143351.vue

@@ -1,3 +0,0 @@
-<template>
-  <div class="app-container"></div>
-</template>

+ 0 - 3
.history/src/views/stock/product_list_20220818143354.vue

@@ -1,3 +0,0 @@
-<template>
-  <div class="app-container">554</div>
-</template>

+ 0 - 7
.history/src/views/stock/product_list_20220818143422.vue

@@ -1,7 +0,0 @@
-<template>
-  <div class="app-container">554</div>
-</template>
-
-<script>
-export default {}
-</script>

ファイルの差分が大きいため隠しています
+ 27296 - 1
package-lock.json


+ 1 - 1
package.json

@@ -15,7 +15,7 @@
     "test:ci": "npm run lint && npm run test:unit"
   },
   "dependencies": {
-    "@zjlib/element-plugins": "^2.3.4",
+    "@zjlib/element-plugins": "^2.7.1",
     "axios": "0.18.1",
     "clipboard": "^2.0.8",
     "concurrent-tasks": "^1.0.7",

+ 103 - 0
src/api/barcode.js

@@ -0,0 +1,103 @@
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
+export function getListCodeV2(params) {
+  return request({
+    url: `/customer/code/list/v2?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function getListInstallCodeV2(params) {
+  return request({
+    url: `/customer/install/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+export function exportInstallListCodeV2(data, name) {
+  return postBlob({
+    url: '/customer/install/list/export',
+    data,
+    name
+  })
+}
+
+export function exportListCodeV2(data, name) {
+  return postBlob({
+    url: '/customer/code/user/export/v2',
+    data,
+    name
+  })
+}
+
+export function getListCustomerCodeV2(params) {
+  return request({
+    url: `/customer/code/listCustomer/v2?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportListCustomerCodeV2(data, name) {
+  return postBlob({
+    url: '/customer/code/listCustomer/export/v2',
+    data,
+    name
+  })
+}
+
+export function importListCustomerCodeV2(data) {
+  return handleImport('customer/code/import', data.formdata, data.id || '')
+}
+
+export function luBaoDownloadDownload(data, name) {
+  return getBlob({
+    url: '/customer/code/ShangJiaDownload',
+    data,
+    name
+  })
+}
+
+export function getListCustomerCheckV2(params) {
+  return request({
+    url: `/customer/code/listCustomerCheck/v2?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportListCustomerCheck(data, name) {
+  return postBlob({
+    url: '/customer/code/listCustomerCheck/export/v2',
+    data,
+    name
+  })
+}
+
+export function importListCustomerCheck(data) {
+  return handleImport('customer/code/importCheck', data.formdata, data.id || '')
+}
+
+export function listCustomerCheckDownload(data, name) {
+  return getBlob({
+    url: '/customer/code/download',
+    data,
+    name
+  })
+}
+
+export function getListDaCangV2(params) {
+  return request({
+    url: `/customer/code/listDaCang/v2?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportListDaCangV2(data, name) {
+  return postBlob({
+    url: '/customer/code/listDaCang/export/v2',
+    data,
+    name
+  })
+}

+ 19 - 0
src/api/barcodeVerification.js

@@ -0,0 +1,19 @@
+import request from '@/utils/request'
+
+// 条码获取列表
+export function getCodeList(params) {
+  return request({
+    url: '/externalCode/equipment/list',
+    method: 'get',
+    params
+  })
+}
+
+// 批量条码核验记录List
+export function getList(params) {
+  return request({
+    url: '/externalCode/equipment/listBatch',
+    method: 'get',
+    params
+  })
+}

+ 26 - 0
src/api/basic_data/dailyWarehouseRent.js

@@ -0,0 +1,26 @@
+import request, { postBlob } from '@/utils/request'
+
+export function getStockCostListCustomer(data) {
+  return request({
+    url: `/stock/cost/listFullCost?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+export function getStockCostListCustomerV2Export(data, name) {
+  return postBlob({
+    url: '/stock/cost/listCustomerV2/export',
+    data,
+    name
+  })
+}
+
+
+export function updateOrderFull(params) {
+  return request({
+    url: `/stock/cost/updateOrderFull`,
+    method: 'post',
+    params
+  })
+}

+ 60 - 1
src/api/basic_data/dealer.js

@@ -13,6 +13,13 @@ export function exportDealerListV2(data, name) {
     name
   })
 }
+export function exportJiaXianV2(data, name) {
+  return postBlob({
+    url: '/customer/user/export/jiaXianV2',
+    data,
+    name
+  })
+}
 export function getDealerStockListV2(params) {
   return request({
     url: `/customer/pt/list/v2?moduleId=${params.moduleId}`,
@@ -28,6 +35,50 @@ export function exportDealerStockListV2(data, name) {
   })
 }
 
+export function getStagecustomerListV2(params) {
+  return request({
+    url: `/StageCustomer/list/v2?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+export function exportStagecustomerV2(data, name) {
+  return postBlob({
+    url: '/StageCustomer/user/export/v2',
+    data,
+    name
+  })
+}
+export function addStagecustomer(data) {
+  return request({
+    url: '/StageCustomer/add',
+    method: 'post',
+    data
+  })
+}
+export function examineStagecustomer(params) {
+  return request({
+    url: '/StageCustomer/examine',
+    method: 'post',
+    params
+  })
+}
+export function updateStagecustomer(data) {
+  return request({
+    url: '/StageCustomer/update',
+    method: 'post',
+    data
+  })
+}
+
+export function getStageCustomerDetail(params) {
+  return request({
+    url: '/StageCustomer/detail',
+    method: 'get',
+    params
+  })
+}
+
 export function importCustomerV2(data) {
   return handleImport('customer/import', data.formdata, data.id || '')
 }
@@ -230,7 +281,6 @@ export function importCustomer(data, name) {
   })
 }
 
-
 //基础上设置自提和物流
 export function updatePick(params) {
   return request({
@@ -239,3 +289,12 @@ export function updatePick(params) {
     params
   })
 }
+
+// 经销商绑定售后系统
+export function updateSystem(params) {
+  return request({
+    url: '/customer/updateSystem',
+    method: 'post',
+    params
+  })
+}

+ 17 - 0
src/api/basic_data/fullCargo.js

@@ -0,0 +1,17 @@
+import request, { postBlob } from '@/utils/request'
+
+export function getStockCostListFullDate(data) {
+  return request({
+    url: `/stock/cost/listFullDate?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+export function getStockCostListFullDateV2Export(data, name) {
+  return postBlob({
+    url: '/stock/cost/listFullDate/export',
+    data,
+    name
+  })
+}

+ 9 - 0
src/api/basic_data/material.js

@@ -224,6 +224,15 @@ export function getProductRriceEdit(params) {
     data: params
   })
 }
+// 弃审产品调价单
+export function productUpdPriceReview(params) {
+  return request({
+    url: '/product-upd-price/review',
+    method: 'post',
+    params
+  })
+}
+
 
 // 产品调价单-列表
 export function v2ProductUpdPriceList(data) {

+ 17 - 0
src/api/basic_data/monthlyWarehouseRent.js

@@ -0,0 +1,17 @@
+import request, { postBlob } from '@/utils/request'
+
+export function getStockCostListMonthFullCost(data) {
+  return request({
+    url: `/stock/cost/listMonthFullCost?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+export function getStockCostListMonthFullCostExport(data, name) {
+  return postBlob({
+    url: '/stock/cost/listMonthFullCost/export',
+    data,
+    name
+  })
+}

+ 47 - 0
src/api/basic_data/numerusClausus.js

@@ -0,0 +1,47 @@
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
+export function getMerchantLoginQuotaLimitList(params) {
+  return request({
+    url: `/config/merchantLoginQuotaLimit/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+export function exportMerchantLoginQuotaLimit(data, name) {
+  return postBlob({
+    url: '/config/merchantLoginQuotaLimit/export',
+    data,
+    name
+  })
+}
+
+export function editMerchantLoginQuotaLimit(params) {
+  return request({
+    url: `/config/merchantLoginQuotaLimit/edit`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function addMerchantLoginQuotaLimit(params) {
+  return request({
+    url: `/config/merchantLoginQuotaLimit/add`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function getMerchantLoginQuotaLimitDetail(params) {
+  return request({
+    url: `/config/merchantLoginQuotaLimit/detail`,
+    method: 'post',
+    params
+  })
+}
+
+export function delMerchantLoginQuotaLimit(params) {
+  return request({
+    url: `/config/merchantLoginQuotaLimit/del`,
+    method: 'post',
+    data: params
+  })
+}

+ 47 - 0
src/api/basic_data/partya.js

@@ -0,0 +1,47 @@
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
+export function getFirstPartyCustomerManagementList(params) {
+  return request({
+    url: `/config/firstPartyCustomerManagement/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+export function exportFirstPartyCustomerManagement(data, name) {
+  return postBlob({
+    url: '/config/firstPartyCustomerManagement/export',
+    data,
+    name
+  })
+}
+
+export function editFirstPartyCustomerManagement(params) {
+  return request({
+    url: `/config/firstPartyCustomerManagement/edit`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function addFirstPartyCustomerManagement(params) {
+  return request({
+    url: `/config/firstPartyCustomerManagement/add`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function getFirstPartyCustomerManagementDetail(params) {
+  return request({
+    url: `/config/firstPartyCustomerManagement/detail`,
+    method: 'post',
+    params
+  })
+}
+
+export function delFirstPartyCustomerManagement(params) {
+  return request({
+    url: `/config/firstPartyCustomerManagement/del`,
+    method: 'post',
+    params
+  })
+}

+ 31 - 0
src/api/basic_data/sectorAllocation.js

@@ -0,0 +1,31 @@
+import request from '@/utils/request'
+
+export function getTradeConfigList(params) {
+  return request({
+    url: '/config/tradeConfig/listLevel',
+    method: 'post',
+    params
+  })
+}
+
+export function editTradeConfig(params) {
+  return request({
+    url: '/config/tradeConfig/edit',
+    method: 'post',
+    data: params
+  })
+}
+export function addTradeConfig(params) {
+  return request({
+    url: '/config/tradeConfig/add',
+    method: 'post',
+    data: params
+  })
+}
+export function delTradeConfig(params) {
+  return request({
+    url: '/config/tradeConfig/del',
+    method: 'post',
+    params
+  })
+}

+ 9 - 0
src/api/basic_data/taker.js

@@ -127,3 +127,12 @@ export function exportCarList(params) {
     params
   })
 }
+
+export function updateCar(params) {
+  return request({
+    url: '/taker-record/update',
+    method: 'post',
+    data: params
+  })
+}
+

+ 28 - 1
src/api/common.js

@@ -52,7 +52,7 @@ export function getTypeList(params) {
 }
 // 销售类型-家用工程专用
 export function getHomeTypeList(params) {
-  ///sale/type/home/list
+  // /sale/type/home/list
   return request({
     url: '/sale/type/home/list',
     method: 'get',
@@ -131,3 +131,30 @@ export function updateReceipt(params) {
     params
   })
 }
+
+// 起始库存
+export function getStockCostDict(params) {
+  return request({
+    url: '/stock/cost/dict',
+    method: 'get',
+    params
+  })
+}
+
+// 改变起始库存
+export function updateStockCostDict(params) {
+  return request({
+    url: '/stock/cost/update',
+    method: 'post',
+    params
+  })
+}
+
+// 高德省市区街道
+export function getAutonaviRegion(params) {
+  return request({
+    url: '/common/region',
+    method: 'post',
+    params
+  })
+}

+ 50 - 0
src/api/crossDistrict.js

@@ -0,0 +1,50 @@
+import request, { postBlob } from '@/utils/request'
+
+export function getLoginCrossDistrictList(params) {
+  return request({
+    url: `/trade/login/order/span/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+
+export function exportLoginCrossDistrict(data, name) {
+  return postBlob({
+    url: '/trade/login/order/span/list/export',
+    data,
+    name
+  })
+}
+
+export function addLoginHomeDecoration(params) {
+  return request({
+    url: `/trade/login/order/span-add`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function editLoginHomeDecoration(params) {
+  return request({
+    url: `/trade/login/order/span-edit`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function examineLoginHomeDecoration(params) {
+  return request({
+    url: `/trade/login/order/span-examine`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function submitLoginHomeDecoration(params) {
+  return request({
+    url: `/trade/login/order/span-submit`,
+    method: 'post',
+    data: params
+  })
+}

+ 20 - 1
src/api/dashboard.js

@@ -80,7 +80,7 @@ export function setMenuList(params) {
   })
 }
 
-// 常用菜单-列表
+// 物流通知列表
 export function getListInvoiceOrder(params) {
   return request({
     url: `/pick/listInvoiceOrder`,
@@ -88,3 +88,22 @@ export function getListInvoiceOrder(params) {
     params
   })
 }
+
+// 物流通知20秒拉取新消息
+export function getListInvoiceOrderTWO(params) {
+  return request({
+    url: `/pick/listInvoiceOrderTWO`,
+    method: 'get',
+    params
+  })
+}
+
+// 订单满货通知
+export function getStockCostList(params) {
+  return request({
+    url: `/stock/cost/list`,
+    method: 'get',
+    params
+  })
+}
+

+ 17 - 0
src/api/dataAnalysis.js

@@ -0,0 +1,17 @@
+import request, { postBlob } from '@/utils/request'
+
+export function getDataList(params) {
+  return request({
+    url: `/trade/login/order/data/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportDataList(data, name) {
+  return postBlob({
+    url: '/trade/login/order/data/list/export',
+    data,
+    name
+  })
+}

+ 19 - 0
src/api/deposit_list_v2.js

@@ -15,3 +15,22 @@ export function depositManageHomeListExport(data, name) {
     name
   })
 }
+
+export function getCountList(data) {
+  return request({
+    url: `/v2/deposit-manage/home/count-list?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+export function updateDepositManageenginInfo(data) {
+  return request({
+    url: `/deposit-manage/update-engin-info`,
+    method: 'post',
+    data
+  })
+}
+
+
+

+ 10 - 1
src/api/engin_deposit/refund_list.js

@@ -23,6 +23,15 @@ export function getDepositManageDetail(params) {
     params
   })
 }
+// 编辑退押
+export function editManageExamine(data) {
+  return request({
+    url: '/deposit-manage/edit',
+    method: 'post',
+    data
+  })
+}
+
 // 审批退押
 export function getDepositManageExamine(data) {
   return request({
@@ -107,4 +116,4 @@ export function reviewData(params) {
     method: 'post',
     data: params
   })
-}
+}

+ 65 - 0
src/api/executionRecord.js

@@ -0,0 +1,65 @@
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
+export function getListTradeExecV2(params) {
+  return request({
+    url: `/v2/order/trade-e/exec/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportListTradeExecV2(data, name) {
+  return postBlob({
+    url: '/v2/order/trade-e/exec/list/export',
+    data,
+    name
+  })
+}
+
+export function getListRetailExecV2(params) {
+  return request({
+    url: `/v2/order/retail/exec/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportListRetailExecV2(data, name) {
+  return postBlob({
+    url: '/v2/order/retail/exec/list/export',
+    data,
+    name
+  })
+}
+
+export function getListOtherExecV2(params) {
+  return request({
+    url: `/v2/order/other/exec/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportListOtherExecV2(data, name) {
+  return postBlob({
+    url: '/v2/order/other/exec/list/export',
+    data,
+    name
+  })
+}
+
+
+export function getListOrderExecV2(params) {
+  return request({
+    url: `/v2/order/exec/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportListOrderExecV2(data, name) {
+  return postBlob({
+    url: '/v2/order/exec/list/export',
+    data,
+    name
+  })
+}

+ 8 - 0
src/api/finance/receivable_list.js

@@ -97,3 +97,11 @@ export function getFinanceOtherReceUpdate(data) {
     data
   })
 }
+// 其他应收单-关闭
+export function financeOtherReceClose(data) {
+  return request({
+    url: '/finance/other/rece/close',
+    method: 'get',
+    params: data
+  })
+}

+ 136 - 0
src/api/frock.js

@@ -0,0 +1,136 @@
+import request, { postBlob } from '@/utils/request'
+
+export function getLoginFrockList(params) {
+  return request({
+    url: `/trade/login/order/work/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportLoginFrock(data, name) {
+  return postBlob({
+    url: '/trade/login/order/work/list/export',
+    data,
+    name
+  })
+}
+
+export function addLoginFrock(params) {
+  return request({
+    url: `/trade/login/order/work-add`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function editLoginFrock(params) {
+  return request({
+    url: `/trade/login/order/work-edit`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function examineLoginFrock(params) {
+  return request({
+    url: `/trade/login/order/work-examine`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function submitLoginFrock(params) {
+  return request({
+    url: `/trade/login/order/work-submit`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function getCommercialEngineeringDetail(params) {
+  return request({
+    url: `/trade/login/order/detail`,
+    method: 'post',
+    params
+  })
+}
+
+// 商用工程登录单-替换业务员
+export function replaceService(params) {
+  return request({
+    url: `/trade/login/order/replace-service`,
+    method: 'post',
+    data: params
+  })
+}
+// 商用工程登录单-一键更新
+export function batchUpdate(params) {
+  return request({
+    url: `/trade/login/order/batch-update`,
+    method: 'post',
+    data: params
+  })
+}
+//  商用工程登录单-申请修改
+export function applyUpdate(params) {
+  return request({
+    url: `/trade/login/order/apply-update`,
+    method: 'post',
+    data: params
+  })
+}
+
+// 商用工程登录单-申请修改查询
+export function applyUpdateQuery(params) {
+  return request({
+    url: `/trade/login/order/apply-update/query`,
+    method: 'post',
+    params
+  })
+}
+
+// 商用工程登录单-删除
+export function delOrder(params) {
+  return request({
+    url: `/trade/login/order/del`,
+    method: 'post',
+    data: params
+  })
+}
+
+// 商用工程登录单-审核确认
+export function examineUpdate(params) {
+  return request({
+    url: `/trade/login/order/examine-update`,
+    method: 'post',
+    data: params
+  })
+}
+
+// 商用工程登录单-操作记录
+export function getOperationRecord(params) {
+  return request({
+    url: `/trade/login/order/operation/record`,
+    method: 'post',
+    params
+  })
+}
+
+// 商用工程登录单-附近项目
+export function getPositionProject(params) {
+  return request({
+    url: `/trade/login/order/position/project`,
+    method: 'post',
+    params
+  })
+}
+
+// 商用工程登录单-经销商填写历史
+export function getHistory(params) {
+  return request({
+    url: `/trade/login/order/customer/history`,
+    method: 'post',
+    params
+  })
+}

+ 48 - 0
src/api/homeDecoration.js

@@ -0,0 +1,48 @@
+import request, { postBlob } from '@/utils/request'
+
+export function getLoginHomeDecorationList(params) {
+  return request({
+    url: `/trade/login/order/home/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+export function exportLoginHomeDecoration(data, name) {
+  return postBlob({
+    url: '/trade/login/order/home/list/export',
+    data,
+    name
+  })
+}
+
+export function addLoginHomeDecoration(params) {
+  return request({
+    url: `/trade/login/order/home-add`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function editLoginHomeDecoration(params) {
+  return request({
+    url: `/trade/login/order/home-edit`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function examineLoginHomeDecoration(params) {
+  return request({
+    url: `/trade/login/order/home-examine`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function submitLoginHomeDecoration(params) {
+  return request({
+    url: `/trade/login/order/home-submit`,
+    method: 'post',
+    data: params
+  })
+}

+ 49 - 0
src/api/logisticsBill.js

@@ -0,0 +1,49 @@
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
+export function getListCostBillV2(params) {
+  return request({
+    url: `/customer/costBill/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+export function getOrderTrackList2(params) {
+  return request({
+    url: `/customer/frontOrder/orderTrackList?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+
+
+export function exportListCostBillV2(data, name) {
+  return postBlob({
+    url: '/customer/costBill/list/export',
+    data,
+    name
+  })
+}
+
+export function getListSubCostBillV2(params) {
+  return request({
+    url: `/customer/costBill/listV2?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportListSubCostBillV2(data, name) {
+  return postBlob({
+    url: '/customer/costBill/listV2/export',
+    data,
+    name
+  })
+}
+
+export function getInstalDetail(params) {
+  return request({
+    url: '/customer/install/detail',
+    method: 'get',
+    params
+  })
+}

+ 17 - 0
src/api/orderException.js

@@ -0,0 +1,17 @@
+import request, { postBlob } from '@/utils/request'
+
+export function getCostBillListTicketList(params) {
+  return request({
+    url: `/customer/costBill/listTicket?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportCostBillListTicketList(data, name) {
+  return postBlob({
+    url: '/customer/costBill/listTicket/export',
+    data,
+    name
+  })
+}

+ 95 - 3
src/api/policy_list.js

@@ -9,7 +9,7 @@ export function policyListV2(data) {
   })
 }
 
-//政策列表V2-导出
+// 政策列表V2-导出
 export function policyListV2Export(data, name) {
   return postBlob({
     url: '/policy/list/v2/export',
@@ -254,7 +254,7 @@ export function saleTypeRebateListV2(data) {
     data
   })
 }
-//销售类型列表V2-导出
+// 销售类型列表V2-导出
 export function saleTypeRebateListV2Export(data, name) {
   return postBlob({
     url: '/sale/type/list/v2/export',
@@ -453,7 +453,7 @@ export function walletRebateSaletypeListV2(data) {
   })
 }
 
-//返利钱包销售类型V2-导出
+// 返利钱包销售类型V2-导出
 export function walletRebateSaletypeListV2Export(data, name) {
   return postBlob({
     url: '/wallet/rebate_saletype/list/v2/export',
@@ -529,3 +529,95 @@ export function setStauts(params) {
     params
   })
 }
+
+// 政策-批量修改延期时间
+export function updateDelayPolicy(params) {
+  return request({
+    url: '/policy/batch/delay/update',
+    method: 'post',
+    data: params
+  })
+}
+
+// 政策-批量修改机型
+export function updateMaterialPolicy(params) {
+  return request({
+    url: '/policy/batch/material/update',
+    method: 'post',
+    params
+  })
+}
+
+// 政策-批量作废政策机型
+export function cancalMaterialPolicy(params) {
+  return request({
+    url: '/policy/material/batch/cancal',
+    method: 'post',
+    params
+  })
+}
+// 政策对应经销商-批量设置提货数量/批量备注
+export function updateCustomerCountBatch(params) {
+  return request({
+    url: '/policy/customer_count/batch',
+    method: 'post',
+    params
+  })
+}
+
+// 经销商购买上限-批量修改起提数/提数数
+export function updateLimitBatchupdate(params) {
+  return request({
+    url: '/policy/limit/batchupdate',
+    method: 'post',
+    params
+  })
+}
+
+// 经销商配提套数购买上限-列表
+export function getPolicyLimitGroupList(params) {
+  return request({
+    url: '/policy/limit/group/list',
+    method: 'get',
+    params
+  })
+}
+
+// 经销商配提套数上限-批量修改配提套数
+export function updateLimitGrouppdate(params) {
+  return request({
+    url: '/policy/limit/group/batchupdate',
+    method: 'post',
+    params
+  })
+}
+
+export function delLimit(params) {
+  return request({
+    url: '/policy/limit/delete',
+    method: 'post',
+    params
+  })
+}
+export function saveLimit(params) {
+  return request({
+    url: '/policy/limit/save',
+    method: 'post',
+    data: params
+  })
+}
+
+export function delLimitGroup(params) {
+  return request({
+    url: '/policy/limit/group/delete',
+    method: 'post',
+    params
+  })
+}
+export function saveLimitGroup(params) {
+  return request({
+    url: '/policy/limit/group/save',
+    method: 'post',
+    data: params
+  })
+}

+ 107 - 0
src/api/priceType.js

@@ -0,0 +1,107 @@
+import request, { postBlob } from '@/utils/request'
+export function getProductPriceListV2(params) {
+  return request({
+    url: `/product-price/v2/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportProductPriceListV2(data, name) {
+  return postBlob({
+    url: '/product-price/v2/list/export',
+    data,
+    name
+  })
+}
+export function addProductPrice(params) {
+  return request({
+    url: `/price-type/add`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function editProductPrice(params) {
+  return request({
+    url: `/price-type/edit`,
+    method: 'post',
+    data: params
+  })
+}
+export function updateProductPriceStatus(params) {
+  return request({
+    url: `/price-type/status/update`,
+    method: 'post',
+    params
+  })
+}
+export function getProductPriceDetail(params) {
+  return request({
+    url: `/price-type/detail`,
+    method: 'get',
+    params
+  })
+}
+export function delProductPrice(params) {
+  return request({
+    url: `/price-type/del`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function getPriceSalesRelaListV2(params) {
+  return request({
+    url: `/price-sales-rela/v2/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportPriceSalesRelaListV2(data, name) {
+  return postBlob({
+    url: '/price-sales-rela/v2/list/export',
+    data,
+    name
+  })
+}
+
+export function addPriceSalesRela(params) {
+  return request({
+    url: `/price-sales-rela/add`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function editPriceSalesRela(params) {
+  return request({
+    url: `/price-sales-rela/edit`,
+    method: 'post',
+    data: params
+  })
+}
+export function updatePriceSalesRelaStatus(params) {
+  return request({
+    url: `/price-sales-rela/status/update`,
+    method: 'post',
+    params
+  })
+}
+
+export function getPriceSalesRelaDetail(params) {
+  return request({
+    url: `/price-sales-rela/detail`,
+    method: 'get',
+    params
+  })
+}
+
+export function delPriceSalesRela(params) {
+  return request({
+    url: `/price-sales-rela/del`,
+    method: 'post',
+    data: params
+  })
+}

+ 34 - 0
src/api/reconciliation.js

@@ -0,0 +1,34 @@
+import request, { postBlob } from '@/utils/request'
+
+export function getCostBillListMerchantList(params) {
+  return request({
+    url: `/customer/costBill/listMerchant?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportCostBillListMerchantList(data, name) {
+  return postBlob({
+    url: '/customer/costBill/listMerchant/export',
+    data,
+    name
+  })
+}
+
+export function costBillMerchantCheck(params) {
+  return request({
+    url: `/customer/costBill/merchantCheck`,
+    method: 'post',
+    params
+  })
+}
+
+export function ticketGoToReview(params) {
+  return request({
+    url: `/customer/costBill/ticketGoToReview`,
+    method: 'post',
+    data: params
+  })
+}
+

+ 15 - 0
src/api/sales.js

@@ -140,6 +140,21 @@ export function listOrder(params) {
     data: params
   })
 }
+export function setSendRevoke(params) {
+  return request({
+    url: '/customer/frontOrder/sendRevoke',
+    method: 'post',
+    params
+  })
+}
+export function sendRefundRevoke(params) {
+  return request({
+    url: '/customer/frontOrder/sendRefundRevoke',
+    method: 'post',
+    params
+  })
+}
+
 
 
 // 下拉框查询

+ 26 - 0
src/api/salesReconciliation.js

@@ -0,0 +1,26 @@
+import request, { postBlob } from '@/utils/request'
+
+export function getCostBillListSalesList(params) {
+  return request({
+    url: `/customer/costBill/listSales?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportCostBillListSalesList(data, name) {
+  return postBlob({
+    url: '/customer/costBill/listSales/export',
+    data,
+    name
+  })
+}
+
+export function costBillSalesCheck(params) {
+  return request({
+    url: `/customer/costBill/salesCheck`,
+    method: 'post',
+    params
+  })
+}
+

+ 53 - 0
src/api/setting.js

@@ -503,3 +503,56 @@ export function setUserChanging(params) {
 }
 
 
+// 嘉贤子帐号列表
+export function getJiaXianUserList(params) {
+  return request({
+    url: '/admin/user/listJiaXian',
+    method: 'get',
+    params
+  })
+}
+
+
+// 新建嘉贤经销商子账号
+export function addJiaXianUser(params) {
+  return request({
+    url: '/admin/user/user/child/addJiaXian',
+    method: 'post',
+    params
+  })
+}
+
+// 工程子帐号列表
+export function getEngineeringUserList(params) {
+  return request({
+    url: '/admin/user/listGongCheng',
+    method: 'get',
+    params
+  })
+}
+
+// 新建工程子账号
+export function addEngineeringUser(params) {
+  return request({
+    url: '/admin/user/user/child/addGongCheng',
+    method: 'post',
+    params
+  })
+}
+// 编辑工程子账号
+export function editEngineeringUser(params) {
+  return request({
+    url: '/admin/user/user/child/updateGongCheng',
+    method: 'post',
+    params
+  })
+}
+
+// 工程子详情
+export function getDetailGongCheng(params) {
+  return request({
+    url: '/admin/user/detailGongCheng',
+    method: 'get',
+    params
+  })
+}

+ 19 - 0
src/api/stock.js

@@ -311,4 +311,23 @@ export function salseExport(data, name) {
     data,
     name
   })
+}
+
+
+// 导入库存初始化
+export function kunCunImportData(data) {
+  return handleImport("/customer/front/kunCunImportData", data.formdata, data.id || "");
+}
+
+// 导入库存调整
+export function kunCunTiaoImportData(data) {
+  return handleImport("/customer/front/kunCunTiaoImportData", data.formdata, data.id || "");
+}
+
+export function downloadkunCunDownload(data, name) {
+  return getBlob({
+    url: 'customer/front/kunCunDownload',
+    data,
+    name
+  })
 }

+ 17 - 0
src/api/summaryTable.js

@@ -0,0 +1,17 @@
+import request, { postBlob } from '@/utils/request'
+
+export function getLoginList(params) {
+  return request({
+    url: `/trade/login/order/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportLogin(data, name) {
+  return postBlob({
+    url: '/trade/login/order/export',
+    data,
+    name
+  })
+}

+ 9 - 0
src/api/supply/engin.js

@@ -569,3 +569,12 @@ export function getEnginCountList(params) {
     params
   })
 }
+
+// 商用工程登录单-引用
+export function getLoginOrderList(params) {
+  return request({
+    url: '/trade/login/order/ref',
+    method: 'post',
+    params
+  })
+}

+ 11 - 0
src/api/supply/implement.js

@@ -111,3 +111,14 @@ export function v2EnginInfoOrderExcelListExport(data, name) {
     name
   })
 }
+
+
+
+// 改变订单是否生成仓储账单
+export function setUpdateOrderCost(params) {
+  return request({
+    url: '/stock/cost/updateOrderCost',
+    method: 'post',
+    params
+  })
+}

+ 68 - 0
src/api/supply/salesReturnOrder.js

@@ -0,0 +1,68 @@
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
+
+// 销售政策退订单-列表
+export function refundRetailListV2(data) {
+  return request({
+    url: `/v2/refund/retail/list?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+//销售政策退订单-导出
+export function refundRetailListV2Export(data, name) {
+  return postBlob({
+    url: '/v2/refund/retail/list/export',
+    method: 'post',
+    data,
+    name
+  })
+}
+
+// 零售退订单-列表
+export function refundOtherListV2(data) {
+  return request({
+    url: `/v2/refund/other/list?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+//零售退订单-导出
+export function refundOtherListV2Export(data, name) {
+  return postBlob({
+    url: '/v2/refund/other/list/export',
+    method: 'post',
+    data,
+    name
+  })
+}
+
+// 商用工程退订单-列表
+export function refundTradeListV2(data) {
+  return request({
+    url: `/v2/refund/trade-e/list?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+//商用工程退订单-导出
+export function refundTradeListV2Export(data, name) {
+  return postBlob({
+    url: '/v2/refund/trade-e/list/export',
+    method: 'post',
+    data,
+    name
+  })
+}
+
+
+// 退订单-详情
+export function getRefundDetail(data) {
+  return request({
+    url: `/v2/refund/detail`,
+    method: 'post',
+    params: data
+  })
+}

+ 73 - 0
src/api/transferOrder.js

@@ -0,0 +1,73 @@
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
+export function getListTransferV2(params) {
+  return request({
+    url: `/customer/transfer/list?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
+export function exportListTransferV2(data, name) {
+  return postBlob({
+    url: '/customer/transfer/list/export',
+    data,
+    name
+  })
+}
+
+export function addCustomerTransfer(data) {
+  return request({
+    url: '/customer/transfer/add',
+    method: 'post',
+    data
+  })
+}
+
+export function updateCustomerTransfer(data) {
+  return request({
+    url: '/customer/transfer/update',
+    method: 'post',
+    data
+  })
+}
+
+export function getCustomerTransferDetail(params) {
+  return request({
+    url: '/customer/transfer/detail',
+    method: 'get',
+    params
+  })
+}
+
+export function examineCustomerTransfer(data) {
+  return request({
+    url: '/customer/transfer/examine',
+    method: 'post',
+    params: data
+  })
+}
+
+export function invoiceCustomerTransfer(data) {
+  return request({
+    url: '/customer/transfer/invoice',
+    method: 'post',
+    params: data
+  })
+}
+
+export function setNeExamine(data) {
+  return request({
+    url: '/customer/transfer/NeExamine',
+    method: 'post',
+    params: data
+  })
+}
+
+export function dletransferDelete(data) {
+  return request({
+    url: '/customer/transfer/delete',
+    method: 'post',
+    params: data
+  })
+}
+

+ 2 - 1
src/components/Common/edit-date-dialog.vue

@@ -57,7 +57,8 @@ export default {
     submitDateForm() {
       this.$refs.dateForm.validate(valid => {
         if (valid) {
-          this.$parent.submitDateForm()
+          // this.$parent.submitDateForm()
+          this.$emit('submit')
         }
       })
     }

+ 20 - 10
src/components/Common/file-upload.vue

@@ -6,11 +6,12 @@
       :multiple="multiple"
       :show-file-list="isShowFileList"
       :file-list="fileList"
+      :limit="limit"
       :before-upload="beforeUpload"
       :on-remove="handleRemove"
       :on-success="handleUploadSuccess"
     >
-      <el-button size="small" type="primary">{{
+      <el-button :size="size" type="primary">{{
         multiple ? '点击上传' : fileList.length == 0 ? '点击上传' : '重新上传'
       }}</el-button>
     </el-upload>
@@ -20,7 +21,7 @@
 import { getOssConfig } from '@/api/common'
 
 export default {
-  name: 'fileUpload',
+  name: 'FileUpload',
   props: {
     fileList: Array,
     multiple: {
@@ -30,6 +31,14 @@ export default {
     fileType: {
       type: Array,
       default: () => ['image', 'video', 'word', 'excel', 'ppt', 'pdf']
+    },
+    size: {
+      type: String,
+      default: 'small'
+    },
+    limit: {
+      type: Number,
+      default: null
     }
   },
   data() {
@@ -40,15 +49,9 @@ export default {
       flag: false
     }
   },
-  created() {
-    getOssConfig().then(res => {
-      this.oss_url = res.data.host
-      this.dataObj = res.data
-    })
-  },
   computed: {
     isShowFileList: {
-      get: function () {
+      get: function() {
         if (!this.multiple) {
           if (this.fileList.length > 0 && this.fileList[0].url) {
             return true
@@ -57,9 +60,15 @@ export default {
           }
         }
       },
-      set: function (newValue) {}
+      set: function(newValue) {}
     }
   },
+  created() {
+    getOssConfig().then(res => {
+      this.oss_url = res.data.host
+      this.dataObj = res.data
+    })
+  },
   methods: {
     getUUID() {
       return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
@@ -84,6 +93,7 @@ export default {
       // this.fileList = [{ name: '', url: '' }];
     },
     beforeUpload(file) {
+      console.log(file, 999)
       const fileSuffix = file.name.substring(file.name.lastIndexOf('.') + 1)
       const imgList = ['jpg', 'jpeg', 'png']
       const videoList = ['mp4']

+ 957 - 0
src/components/LogisticsTabs/index.vue

@@ -0,0 +1,957 @@
+<template>
+  <div class="logistics">
+    <div style="margin: 20px 0">
+      <el-radio-group v-model="curTarget" size="small" @change="handleChange">
+        <template v-for="(item, index) in tabsList">
+          <el-radio-button v-if="item.show " :key="index" :label="item.value">{{ item.label }}</el-radio-button>
+        </template>
+      </el-radio-group>
+    </div>
+    <el-card v-if="curTarget === 1 && tabsList[curTarget - 1].show ">
+      <div slot="header">
+        <span>物流信息</span>
+      </div>
+      <slot name="header" />
+      <div>
+        <el-timeline v-if="logisticsDetail.length" :reverse="false">
+          <el-timeline-item
+            v-for="(item, index) in logisticsDetail"
+            :key="index"
+            placement="top"
+            type="success"
+            :timestamp="item.time"
+          >
+            <el-row :gutter="20">
+              <el-col class="logistics-title"> {{ item && item.status && statusObj[item.status].label }} </el-col>
+              <el-col>
+                <div class="flex">
+                  <div>{{ item.comment }}</div>
+                  <!-- <div>{{ item.createTime }}</div> -->
+                </div>
+                <div class="flex">
+                  <div>{{ item.statusDetails }}</div>
+                  <!-- <div>{{ item.createTime }}</div> -->
+                </div>
+              </el-col>
+            </el-row>
+          </el-timeline-item>
+        </el-timeline>
+        <div v-else class="tip">暂无物流信息</div>
+      </div>
+    </el-card>
+    <el-card v-if="curTarget === 2 && tabsList[curTarget - 1].show ">
+      <div slot="header">
+        <span>物流费用</span>
+      </div>
+      <zj-table
+        :table-attributes="defaultTableAttributes"
+        :is-drop="true"
+        :columns="formLogistics"
+        :table-data="logisticsData"
+      />
+    </el-card>
+    <el-card v-if="curTarget === 3 && tabsList[curTarget - 1].show">
+      <div slot="header">
+        <span>出库条码</span>
+      </div>
+      <zj-table :is-drop="true" :columns="formOutbound" :table-data="outboundData" />
+    </el-card>
+    <el-card v-if="curTarget === 4 && tabsList[curTarget - 1].show">
+      <div slot="header">
+        <span>安装信息</span>
+      </div>
+
+      <el-form ref="installDetail" :model="installDetail" label-width="120px" :inline="false" size="mini">
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="信息编码">
+              <el-input :value="installDetail.gongDanId" style="width: 85%;" readonly /> <el-button class="tag-read" :data-clipboard-text="installDetail.gongDanId" type="primary" size="mini" @click="copy">复制</el-button>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="创建网点名称">
+              <el-input :value="installDetail.createWname?`${installDetail.createWname} (${installDetail.createNumber})`:''" style="width: 85%;" readonly /><el-button class="tag-read" :data-clipboard-text="`${installDetail.createWname} (${installDetail.createNumber})`" type="primary" size="mini" @click="copy">复制</el-button>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="总部信息编码">
+              <el-input :value="installDetail.pgid" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="销售服务网点">
+              <el-input :value="installDetail.salesWname?`${installDetail.salesWname} (${installDetail.salesNumber})`:''" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="接收派工网点">
+              <el-input :value="installDetail.afterWname?`${installDetail.afterWname} (${installDetail.afterNumber})`:''" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="主要服务人员">
+              <el-input :value="installDetail.workerName" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="联系电话">
+              <el-input :value="installDetail.workerPhone" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="售后服务网点">
+              <el-input :value="installDetail.installName?`${installDetail.installName} (${installDetail.installNumber})`:''" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="辅助服务人员">
+              <el-input :value="installDetail.assistName" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item label="联系电话">
+              <el-input :value="installDetail.assistPhone" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="工单接收时间">
+              <el-input :value="installDetail.afterTime" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="工单状态">
+              <el-input :value=" installDetail.orderState?orderState[installDetail.orderState]:''" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="派工状态">
+              <el-input :value="installDetail.appointState? appointState[installDetail.appointState]:'' " readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="完工情况">
+              <el-input :value="installDetail.orderOver?installDetail.appointState:''" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="跟单信息员">
+              <el-input :value="installDetail.adminOfficerName?`${installDetail.adminOfficerName} (${installDetail.adminOfficerNumber})`:''" readonly />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="工单时间">
+              <el-input :value="installDetail.createTime" readonly />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+
+      <zj-table :is-drop="true" :columns="installInfo" :table-data=" (installDetail && installDetail.logs)|| []" />
+    </el-card>
+    <el-card v-if="curTarget === 5 && tabsList[curTarget - 1].show">
+      <div slot="header">
+        <span>安装条码</span>
+      </div>
+      <zj-table :is-drop="true" :columns="formInstall" :table-data="instalLList" />
+    </el-card>
+  </div>
+</template>
+
+<script>
+import Clipboard from 'clipboard'
+import { getListCostBillV2, getOrderTrackList2, getInstalDetail } from '@/api/logisticsBill'
+import { getListCodeV2, getListInstallCodeV2 } from '@/api/barcode'
+
+export default {
+  props: {
+    jiaxianOrderId: {
+      type: String,
+      default: null
+    },
+    detailsId: {
+      type: String,
+      default: null
+    },
+    returnShow: {
+      type: Boolean,
+      default: true
+    },
+    gongDanId: {
+      type: String,
+      default: null
+    },
+    details: {
+      type: Object,
+      default: () => ({})
+    }
+  },
+  data() {
+    return {
+      tabsList: [
+        {
+          label: '物流状态',
+          value: 1,
+          show: true,
+          fun: this.getOrderTrackList2
+        },
+        {
+          label: '物流费用',
+          value: 2,
+          show: false,
+          fun: this.getListCostBillV2
+        },
+        {
+          label: '出库条码',
+          value: 3,
+          show: true,
+          fun: this.getListCodeV2
+        },
+        {
+          label: '安装信息',
+          value: 4,
+          show: true,
+          fun: this.getInstalDetail
+        },
+        {
+          label: '安装条码',
+          value: 5,
+          show: true,
+          fun: this.getListInstallCodeV2
+        }
+      ],
+      curTarget: 1,
+      statusObj: {
+        COLLECT: {
+          label: '揽收',
+          value: 'COLLECT'
+        },
+        OUT_OF_STOCK: {
+          label: '出库',
+          value: 'OUT_OF_STOCK'
+        },
+        ASSIVE_BRANCH: {
+          label: '到达网点',
+          value: 'ASSIVE_BRANCH'
+        },
+        ASSIGN_BRANCH: {
+          label: '指派网点',
+          value: 'ASSIGN_BRANCH'
+        },
+        DELIVERING: {
+          label: '派送中',
+          value: 'DELIVERING'
+        },
+        SIGNED: {
+          label: '已签收',
+          value: 'SIGNED'
+        },
+        RETURN: {
+          label: '退件',
+          value: 'RETURN'
+        },
+        REJECTION: {
+          label: '拒收',
+          value: 'REJECTION'
+        },
+        RESCHEDULE: {
+          label: '改约',
+          value: 'RESCHEDULE'
+        },
+        OTHER_EXCEPTION: {
+          label: '其他异常',
+          value: 'OTHER_EXCEPTION'
+        }
+      },
+      orderState: {
+        1: '已保存工单', 2: '待分部派工', 3: '待分中心派工', 4: '待网点派工', 5: '待审批改派', 6: '待服务人员处理', 7: '服务人员报完工', 8: '申请售后处理', 9: '已作废工单', 10: '已关闭工单', 99: '非广佛作废'
+      },
+      appointState: {
+        0: '待接收', 1: '待签到', 2: '待采集', 3: '已采集', 4: '已完工', 5: '改约中', 6: '改派中'
+      },
+      defaultTableAttributes: {
+        height: '100%',
+        border: true,
+        size: 'mini',
+        'summary-method': this.$getSummaries,
+        'show-summary': true
+      },
+      logisticsData: [],
+      outboundData: [],
+      logisticsDetail: [],
+      installDetail: {},
+      instalLList: []
+    }
+  },
+  computed: {
+    formLogistics() {
+      return [
+        {
+          columnAttributes: {
+            label: '补贴费用',
+            prop: 'allowanceCost',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '所属销售公司类型',
+            prop: 'belongCompanyType',
+            width: 200
+          },
+          render: (h, { row }) => {
+            const { belongCompanyType } = row
+            const typeObj = {
+              GE_JIANG: '格匠',
+              GUANG_ZHOU: '广州销售公司',
+              FO_SHAN: '佛山销售公司',
+              OTHER: '其他销售公司'
+            }
+            return <div>{typeObj[belongCompanyType]}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '运费结算系数',
+            prop: 'coefficient',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '备注',
+            prop: 'comment',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '最终运费',
+            prop: 'cost',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '客户名称',
+            prop: 'customerName',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '客户电话',
+            prop: 'customerPhone',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '无法生成的原因',
+            prop: 'errorResult',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '是否已经对过帐',
+            prop: 'isAccountChecking',
+            width: 200
+          },
+          render: (h, { row }) => {
+            const { isAccountChecking } = row
+            return <div>{+isAccountChecking ? '是' : '否'}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '是否已经审核',
+            prop: 'isAudit',
+            width: 200
+          },
+          render: (h, { row }) => {
+            const { isAudit } = row
+            return <div>{+isAudit ? '是' : '否'}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '是否完结',
+            prop: 'isFinish',
+            width: 200
+          },
+          render: (h, { row }) => {
+            const { isFinish } = row
+            return <div>{+isFinish ? '已经完结' : '未完结'}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '实际是否卸货',
+            prop: 'isRealUnload',
+            width: 200
+          },
+          render: (h, { row }) => {
+            const { isRealUnload } = row
+            return <div>{+isRealUnload ? '是' : '否'}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '实际是否上楼',
+            prop: 'isRealUpstairs',
+            width: 200
+          },
+          render: (h, { row }) => {
+            const { isRealUpstairs } = row
+            return <div>{+isRealUpstairs ? '是' : '否'}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '是否卸货',
+            prop: 'isUnload',
+            width: 200
+          },
+          render: (h, { row }) => {
+            const { isUnload } = row
+            return <div>{+isUnload ? '是' : '否'}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '是否上楼',
+            prop: 'isUpstairs',
+            width: 200
+          },
+          render: (h, { row }) => {
+            const { isUpstairs } = row
+            return <div>{+isUpstairs ? '是' : '否'}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '物料名称',
+            prop: 'materialCode',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '计费分类',
+            prop: 'materialCostType',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '产品名称',
+            prop: 'materialName',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '规格型号',
+            prop: 'materialSpecification',
+            width: 350
+          }
+        },
+        {
+          columnAttributes: {
+            label: '物料类型',
+            prop: 'materialType',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '商家编码',
+            prop: 'merchantCode',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '商家名称',
+            prop: 'merchantName',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '订单号',
+            prop: 'orderCode',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '订单时间',
+            prop: 'orderDate',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '订单类型',
+            prop: 'orderType',
+            width: 200
+          },
+          render: (h, { row }) => {
+            const { orderType } = row
+            const typeObj = {
+              TOB: '商家机工程机类型',
+              ALL: '所有类型,广州的订单统一 开单价',
+              TOC: '佛山销售销售订单类型公司'
+            }
+            return <div>{typeObj[orderType]}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '订单类型细分',
+            prop: 'orderTypeDetail',
+            width: 200
+          },
+          render: (h, { row }) => {
+            const { orderType } = row
+            const typeObj = {
+              PICKING_UP_ORDER: '前置仓提货订单',
+              SALE_ORDER: '销售订单',
+              MERCHANT_WAREHOUSE_ORDER: '商家仓订单',
+              PROJECT_ORDER: '工程机订单',
+              SALE_RETURN_ORDER: '销售退货单'
+            }
+            return <div>{typeObj[orderType]}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '收货送货地址',
+            prop: 'receiptAddress',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '退货单号',
+            prop: 'returnOrderCode',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '补贴结算系数',
+            prop: 'subsidyCoefficient',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '嘉贤创建时间',
+            prop: 'time',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '费用汇总',
+            prop: 'totalCost',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '单价计算',
+            prop: 'unitPrice',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '卸货上楼结算系数',
+            prop: 'unloadUpstairsCoefficient',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '上楼卸货费用',
+            prop: 'unloadUpstairsCost',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '发货仓库编码',
+            prop: 'warehouseCode',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '发货仓库名称',
+            prop: 'warehouseName',
+            width: 200
+          }
+        }
+      ]
+    },
+    formOutbound() {
+      return [
+        {
+          columnAttributes: {
+            label: '条码',
+            prop: 'barCode',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '出库时间',
+            prop: 'consignerTimeV2',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '创建人',
+            prop: 'createBy',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '创建时间',
+            prop: 'createTime',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '送货时间',
+            prop: 'deliveryTimeV2',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '物料代码',
+            prop: 'materialCode',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '物料类型',
+            prop: 'materialType',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '销售订单号',
+            prop: 'orderNumber',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '收货人',
+            prop: 'receiptCompany',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '商家名称',
+            prop: 'salesCompany',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '规格',
+            prop: 'specification',
+            width: 350
+          }
+        },
+        {
+          columnAttributes: {
+            label: '更新人',
+            prop: 'updateBy',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '修改时间',
+            prop: 'updateTime',
+            width: 200
+          }
+        },
+        {
+          columnAttributes: {
+            label: '发货仓库名称',
+            prop: 'warehouse',
+            width: 200
+          }
+        }
+      ]
+    },
+    installInfo() {
+      return [
+        {
+          columnAttributes: {
+            label: '操作类别',
+            prop: 'type'
+          }
+        },
+        {
+          columnAttributes: {
+            label: '操作内容',
+            prop: 'content'
+          }
+        },
+        {
+          columnAttributes: {
+            label: '最后操作时间',
+            prop: 'updatetime'
+          }
+        },
+        {
+          columnAttributes: {
+            label: '操作人',
+            prop: 'operator'
+          }
+        }
+      ]
+    },
+    installBarCdoe() {
+      return [
+        {
+          columnAttributes: {
+            label: '产品类型',
+            prop: 'barCode'
+          }
+        },
+        {
+          columnAttributes: {
+            label: '机型条码',
+            prop: 'barCode'
+          }
+        },
+        {
+          columnAttributes: {
+            label: '条码类型',
+            prop: 'barCode'
+          }
+        },
+        {
+          columnAttributes: {
+            label: '状态',
+            prop: 'barCode'
+          }
+        },
+        {
+          columnAttributes: {
+            label: '采集来源',
+            prop: 'barCode'
+          }
+        },
+        {
+          columnAttributes: {
+            label: '采集时间',
+            prop: 'barCode'
+          }
+        }
+      ]
+    },
+    formInstall() {
+      return [
+        {
+          columnAttributes: {
+            label: '序号',
+            prop: '',
+            width: 50
+          },
+          render: (h, { row, index }) => {
+            return <div>{index + 1}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '产品类型',
+            prop: 'specification',
+            'min-width': '300'
+          }
+        },
+        {
+          columnAttributes: {
+            label: '机型条码',
+            prop: 'barCode'
+          }
+        },
+        {
+          columnAttributes: {
+            label: '条码类型',
+            prop: 'materialType'
+          }
+        },
+        {
+          columnAttributes: {
+            label: '状态',
+            prop: 'orderState'
+          },
+          render: (h, { row }) => {
+            const { orderState } = row
+            return <div>{this.orderState[orderState]}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '采集来源',
+            prop: 'verificationStatus'
+          },
+          render: (h, { row }) => {
+            const { verificationStatus } = row
+            const typeObj = {
+              1: '广佛设备',
+              2: '非广佛设备'
+
+            }
+            return <div>{typeObj[verificationStatus]}</div>
+          }
+        },
+        {
+          columnAttributes: {
+            label: '采集时间',
+            prop: 'createTime'
+          }
+        }
+      ]
+    }
+  },
+  created() {
+    if (this.details && this.details.stockType == 2) {
+      this.curTarget = 4
+      this.tabsList = this.tabsList.map(k => {
+        return {
+          ...k,
+          show: !(k.value < 4)
+        }
+      })
+      console.log(this.tabsList)
+      this.getInstalDetail()
+    } else {
+      this.getOrderTrackList2()
+    }
+  },
+  methods: {
+    handleChange() {
+      this.tabsList[this.curTarget - 1].fun()
+    },
+    getOrderTrackList2() {
+      getOrderTrackList2({
+        pageNum: 1,
+        pageSize: -1,
+        params: [
+          {
+            param: 'sale_code',
+            compare: '=',
+            value: this.jiaxianOrderId
+          }
+        ]
+      }).then(res => {
+        this.logisticsDetail = res.data.records
+      })
+    },
+    getListCostBillV2() {
+      getListCostBillV2({
+        pageNum: 1,
+        pageSize: -1,
+        params: [
+          {
+            param: 'order_code',
+            compare: '=',
+            value: this.jiaxianOrderId
+          }
+        ]
+      }).then(res => {
+        res.data.records.forEach(item => {
+          item.sums1 = ['orderHasSendQty', 'subsidyCoefficient', 'unloadUpstairsCoefficient', 'coefficient']
+          item.sums2 = ['cost', 'unitPrice', 'totalCost', 'allowanceCost']
+        })
+        this.logisticsData = res.data.records
+      })
+    },
+    getListCodeV2() {
+      getListCodeV2({
+        pageNum: 1,
+        pageSize: -1,
+        params: [
+          {
+            param: 'order_number',
+            compare: '=',
+            value: this.jiaxianOrderId
+          }
+        ]
+      }).then(res => {
+        this.outboundData = res.data.records
+      })
+    },
+    getListInstallCodeV2() {
+      if (this.gongDanId) {
+        getListInstallCodeV2({
+          pageNum: 1,
+          pageSize: -1,
+          params: [
+            {
+              param: 'gong_dan_id',
+              compare: '=',
+              value: this.gongDanId
+            }
+          ]
+        }).then(res => {
+          this.instalLList = res.data.records
+        })
+      }
+    },
+    getInstalDetail() {
+      if (this.gongDanId) {
+        getInstalDetail({ gongDanId: this.gongDanId }).then(res => {
+          this.installDetail = res.data || {}
+          this.installDetail.logs = this.installDetail.logs.sort((a, b) => b.id - a.id)
+        })
+      }
+    },
+    copy() {
+      const clipboard = new Clipboard('.tag-read')
+      // clipboard.on('success', e => {
+      //   this.$successMsg('复制成功');
+      // })
+      clipboard.on('error', e => {
+        console.log('该浏览器不支持复制')
+        return false
+      })
+      this.$successMsg('复制成功')
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-timeline-item__tail {
+  border-left: 2px solid #67c23a;
+}
+::v-deep .el-form-item__content {
+  line-height: 33px;
+}
+.logistics-title {
+  padding: 10px;
+}
+.logistics {
+  margin: 20px 0;
+}
+
+</style>

+ 52 - 0
src/components/MenuRouter/index.vue

@@ -0,0 +1,52 @@
+<template>
+  <div>
+    <div v-for="item in list" :key="item.path">
+      <template v-if="!item.hidden">
+        <template v-if="!item.children || !item.children.length" style="display: block">
+          <el-link class="title" :underline="false" @click="clickMenu(item.path)">{{ item.meta.title }}</el-link>
+        </template>
+        <template v-else>
+          <h5 class="title">{{ item.meta.title }}</h5>
+          <MenuRouter :list="item.children" />
+        </template>
+      </template>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'MenuRouter',
+  props: {
+    list: {
+      type: Array,
+      default: () => []
+    }
+  },
+  methods: {
+    // 点击菜单
+    clickMenu(path) {
+      const curlArr = ['/notice', '/issue']
+      // if (curlArr.includes(path)) {
+      //   path += '/index'
+      // }
+      this.$router.push({
+        path
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.menu {
+  display: flex;
+    flex-direction: row;
+    flex-wrap: wrap;
+}
+
+.title {
+  padding: 3px 10px;
+  margin-top: 16px;
+}
+</style>

+ 248 - 19
src/components/NotifyBox/index.vue

@@ -13,6 +13,8 @@
       <el-radio-button :label="2">返利确认单</el-radio-button>
       <el-radio-button :label="3">物流通知</el-radio-button>
       <el-radio-button :label="4">到货通知</el-radio-button>
+      <el-radio-button :label="5">货满订单</el-radio-button>
+
     </el-radio-group>
     <!-- 系统通知 -->
     <div v-show="type === 0" class="table">
@@ -31,7 +33,7 @@
         <el-table-column align="center" label="标题" prop="title" min-width="160" show-overflow-tooltip />
         <el-table-column align="center" label="来源" prop="source" min-width="160" show-overflow-tooltip />
         <el-table-column align="center" label="时间" prop="issueTime" min-width="160" show-overflow-tooltip />
-        <el-table-column align="center" label="" min-width="160" show-overflow-tooltip>
+        <el-table-column align="center" label="操作" min-width="160" show-overflow-tooltip>
           <template slot-scope="scope">
             <el-button type="text" class="textColor" @click="lookInDialog(scope.row.id)">查看</el-button>
           </template>
@@ -77,7 +79,7 @@
         <el-table-column align="center" label="经销商名称" prop="customerName" min-width="160" show-overflow-tooltip />
         <el-table-column align="center" label="确认人" prop="examineBy" min-width="160" show-overflow-tooltip />
         <el-table-column align="center" label="确认时间" prop="examineTime" min-width="160" show-overflow-tooltip />
-        <el-table-column align="center" label="" min-width="160" show-overflow-tooltip>
+        <el-table-column align="center" label="操作" min-width="160" show-overflow-tooltip>
           <template slot-scope="scope">
             <el-button type="text" class="textColor" @click="secondFn(scope.row.rebateOrderId)">{{
               isCustomer ? '确认' : '复核'
@@ -88,6 +90,50 @@
     </div>
     <!-- 物流通知 -->
     <div v-show="type === 3" class="table">
+      <el-form ref="invoiceOrderForm" :model="invoiceOrderForm" label-width="120px" label-position="left" size="mini">
+        <el-row :gutter="20">
+          <el-col :xs="24" :sm="12" :lg="8">
+            <el-form-item prop="invoiceId" label="发货单">
+              <el-input v-model="invoiceOrderForm.invoiceId" placeholder="请输入发货单" />
+            </el-form-item>
+          </el-col>
+          <el-col
+            :xs="24"
+            :sm="12"
+            :lg="8"
+          ><el-form-item prop="time" label="发货单时间">
+            <el-date-picker
+              v-model="invoiceOrderForm.time"
+              style="width: 100%"
+              type="daterange"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+            /></el-form-item></el-col>
+          <el-col
+            :xs="24"
+            :sm="12"
+            :lg="8"
+          ><el-form-item prop="userName" label="收货客户">
+            <el-input v-model="invoiceOrderForm.userName" placeholder="请输入收货客户" /> </el-form-item></el-col>
+          <el-col
+            :xs="24"
+            :sm="12"
+            :lg="8"
+          ><el-form-item prop="address" label="收货地址">
+            <el-input v-model="invoiceOrderForm.address" placeholder="请输入收货地址" /> </el-form-item></el-col>
+          <el-col
+            :xs="24"
+            :sm="12"
+            :lg="8"
+          ><el-form-item prop="remark" label="内容"> <el-input v-model="invoiceOrderForm.remark" placeholder="请输入内容" /> </el-form-item></el-col>
+          <el-col :xs="24" :sm="12" :lg="8" style="text-align: right;">
+            <el-button size="mini" @click="handleReset($event,'invoiceOrde')">重置</el-button>
+            <el-button size="mini" type="primary" @click="currentPage = 1,getListInvoiceOrder()">查询</el-button>
+          </el-col>
+        </el-row>
+      </el-form>
       <el-table
         ref="table"
         v-loading="listLoading"
@@ -117,7 +163,7 @@
         <el-table-column align="center" label="收货客户" prop="receivingName" min-width="160" show-overflow-tooltip>
           <template slot-scope="scope">{{ scope.row.receivingName ? scope.row.receivingName : '——' }}</template>
         </el-table-column>
-        <el-table-column align="center" label="" min-width="80" show-overflow-tooltip fixed="right">
+        <el-table-column align="center" label="操作" min-width="80" show-overflow-tooltip fixed="right">
           <template slot-scope="scope">
             <el-button type="text" class="textColor" @click="handLogistics(scope.row)">查看</el-button>
           </template>
@@ -132,9 +178,9 @@
             <el-col>
               <el-form-item prop="specification" label="规格型号">
                 <div style="display: flex">
-                  <el-input v-model="specification" clearable style="margin-right: 10px" />
+                  <el-input v-model="specification" clearable style="margin-right: 10px" placeholder="请输入规格型号" />
                   <el-button @click="handleReset">重置</el-button>
-                  <el-button type="primary" @click="getArrivalNotice">查询</el-button>
+                  <el-button type="primary" size="mini" @click="currentPage = 1,getArrivalNotice()">查询</el-button>
                 </div>
               </el-form-item>
             </el-col>
@@ -191,6 +237,109 @@
         </div>
       </div>
     </div>
+    <!-- 订单满货通知 -->
+    <div v-show="type == 5" class="table">
+      <div class="mymain-container">
+        <el-form ref="form" label-width="80px" label-position="left" size="mini">
+          <el-row>
+            <el-col :span="8">
+              <el-form-item prop="stockOrderNo" label="订单号">
+                <div style="display: flex">
+                  <el-input v-model="stockOrderNo" clearable style="margin-right: 10px" placeholder="请输入订单号" />
+                </div>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item prop="stockOrderSpecification" label="机型">
+                <div style="display: flex">
+                  <el-input v-model="stockOrderSpecification" clearable style="margin-right: 10px" placeholder="请输入机型" />
+                </div>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item prop="stockTimes" label="日期">
+                <el-date-picker
+                  v-model="stockTimes"
+                  style="width: 100%;"
+                  type="daterange"
+                  value-format="yyyy-MM-dd HH:mm:ss"
+                  range-separator="至"
+                  start-placeholder="开始日期"
+                  end-placeholder="结束日期"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <div style="float: right;"> <el-button size="mini" @click="handleReset($event, 'stockCost')">重置</el-button>
+                <el-button type="primary" size="mini" @click="currentPage = 1,getStockCostList()">查询</el-button></div>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div class="table">
+          <el-table
+            ref="table"
+            v-loading="listLoading"
+            :data="stockCostList"
+            element-loading-text="Loading"
+            border
+            fit
+            highlight-current-row
+            stripe
+          >
+            <el-table-column
+              type="index"
+              align="left"
+              min-width="50"
+              label="序号"
+            />
+            <el-table-column
+              property="orderId"
+              align="left"
+              min-width="150"
+              label="订单号"
+              show-overflow-tooltip
+            >
+              <template slot-scope="scope">
+                <el-link type="primary" :underline="false" @click="handleToDaily(scope.row.orderId)">{{
+                  scope.row.orderId
+                }}</el-link>
+              </template>
+            </el-table-column>
+            <el-table-column
+              property="specification"
+              align="left"
+              min-width="250"
+              label="机型"
+              show-overflow-tooltip
+            />
+            <el-table-column
+              property="full"
+              align="left"
+              min-width="120"
+              label="是否已生成仓租"
+              show-overflow-tooltip
+            >
+              <template slot-scope="scope">
+                {{ scope.row.full =='YES'? '是': '否' }}
+              </template>
+            </el-table-column>
+            <el-table-column
+              property="fullTime"
+              align="left"
+              min-width="150"
+              label="货满日期"
+              show-overflow-tooltip
+            />
+            <el-table-column property="fullNum" align="left" min-width="80" label="计算天数" show-overflow-tooltip />
+            <el-table-column align="center" label="操作" min-width="80" show-overflow-tooltip fixed="right">
+              <template slot-scope="scope">
+                <el-button type="text" class="textColor" @click="handleToDaily(scope.row.orderId)">查看</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </div>
+    </div>
     <!-- 分页 -->
     <div class="fr">
       <el-pagination
@@ -224,10 +373,10 @@
                 :preview-src-list="[imageURL + item.url]"
               />
               <div v-else class="box2" @click="openLink(item.url)">
-                <img v-if="checkFileType(item.url) == 'word'" src="@/assets/common/word.png" />
-                <img v-if="checkFileType(item.url) == 'excel'" src="@/assets/common/excel.png" />
-                <img v-if="checkFileType(item.url) == 'ppt'" src="@/assets/common/ppt.png" />
-                <img v-if="checkFileType(item.url) == 'pdf'" src="@/assets/common/pdf.png" />
+                <img v-if="checkFileType(item.url) == 'word'" src="@/assets/common/word.png">
+                <img v-if="checkFileType(item.url) == 'excel'" src="@/assets/common/excel.png">
+                <img v-if="checkFileType(item.url) == 'ppt'" src="@/assets/common/ppt.png">
+                <img v-if="checkFileType(item.url) == 'pdf'" src="@/assets/common/pdf.png">
                 <div class="name ellipsis-3">{{ item.name }}</div>
               </div>
             </div>
@@ -253,7 +402,7 @@
           :key="index"
           placement="top"
           type="success"
-          :timestamp="item.time"
+          :stock-timestamp="item.time"
         >
           <el-row :gutter="20">
             <el-col class="logistics-title"> {{ item.status }} </el-col>
@@ -283,12 +432,15 @@ import {
   getNoticeDetail,
   confirmCheck,
   getRebateOrderList,
-  getListInvoiceOrder
+  getListInvoiceOrder,
+  getStockCostList
 } from '@/api/dashboard'
 import { getArrivalNotice } from '@/api/stock'
 import { getListOrderTrack } from '@/api/supply/pickup'
 import { getFileUrl } from '@/api/common'
 export default {
+  // eslint-disable-next-line vue/require-prop-types
+  props: ['mesType'],
   data() {
     return {
       imageURL: this.$imageUrl,
@@ -302,24 +454,50 @@ export default {
       inDialog: false,
       detailData: [],
       rebateList: [],
+      stockCostList: [],
       invoiceOrderList: [],
       visible: false,
       orderId: '',
       logisticsDetail: [],
       arrivalNoticeList: [],
       specification: '',
-      fnArr: ['getDataList', 'getFileList', 'getRebateList', 'getListInvoiceOrder', 'getArrivalNotice']
+      stockOrderNo: '',
+      stockTimes: [],
+      stockOrderSpecification: '',
+      invoiceOrderForm: {
+        time: [],
+        invoiceId: '',
+        address: '',
+        startTime: '',
+        endTime: '',
+        remark: '',
+        userName: ''
+      },
+      fnArr: ['getDataList', 'getFileList', 'getRebateList', 'getListInvoiceOrder', 'getArrivalNotice', 'getStockCostList']
     }
   },
   computed: {
     ...mapGetters(['showMessages', 'isCustomer'])
   },
+  watch: {
+    mesType(newValue, oldValue) {
+      if (!oldValue) {
+        this.type = newValue
+        this[this.fnArr[newValue]]()
+      }
+      this.$emit('reset')
+    }
+  },
   created() {
     this[this.fnArr[this.type]]()
   },
   methods: {
     checkFn(i) {
-      this[this.fnArr[i]]()
+      this.listTotal = 0
+      this.pageSize = 10
+      this.currentPage = 1
+      this.listLoading = false
+      this.fnArr[i] && this[this.fnArr[i]]()
     },
     // 获取文件列表数据
     async getFileList() {
@@ -357,9 +535,13 @@ export default {
     },
     // 获取物流列表
     async getListInvoiceOrder() {
+      const time = this.invoiceOrderForm.time || []
       const data = {
         pageSize: this.pageSize,
-        pageNum: this.currentPage
+        pageNum: this.currentPage,
+        ...this.invoiceOrderForm,
+        startTime: time.length ? time[0] : '',
+        endTime: time.length ? time[1] : ''
       }
       const res = await getListInvoiceOrder(data)
       this.invoiceOrderList = res.data.records
@@ -375,11 +557,40 @@ export default {
       this.arrivalNoticeList = res.data.records
       this.listTotal = res.data.total
     },
-    handleReset() {
+    // 订单满货通知
+    async getStockCostList() {
+      const time = this.stockTimes || []
+
+      const data = {
+        pageSize: this.pageSize,
+        pageNum: this.currentPage,
+        materialName: '',
+        materialNumber: '',
+        materialOldNumber: '',
+        specification: this.stockOrderSpecification,
+        orderId: this.stockOrderNo,
+        endTime: time.length ? time[0] : '',
+        startTime: time.length ? time[1] : ''
+      }
+      const res = await getStockCostList(data)
+      this.stockCostList = res.data.records
+      this.listTotal = res.data.total
+    },
+    handleReset(e, type) {
       this.pageSize = 10
       this.pageNum = 1
-      this.specification = ''
-      this.getArrivalNotice()
+      if (type === 'invoiceOrde') {
+        this.$refs.invoiceOrderForm.resetFields()
+        this.getListInvoiceOrder()
+      } else if (type === 'stockCost') {
+        this.stockOrderNo = ''
+        this.stockOrderSpecification = ''
+        this.stockTimes = []
+        this.getStockCostList()
+      } else {
+        this.specification = ''
+        this.getArrivalNotice()
+      }
     },
     // 更改每页数量
     handleSizeChange(val) {
@@ -406,6 +617,7 @@ export default {
         }
       })
       this.type = 0
+      this.$emit('reset')
       this.$store.commit('user/showMessage', 'no')
     },
     // 确认查收
@@ -451,6 +663,7 @@ export default {
     // 关闭
     closeFn() {
       this.type = 0
+      this.$emit('reset')
       this.$store.commit('user/showMessage', 'no')
     },
     handLogistics(row) {
@@ -466,12 +679,28 @@ export default {
       this.visible = false
     },
     handleJump(id) {
-      this.$router.push({ path: `/supply/pickup/sum_list?id=${id}` })
+      // this.$router.push({ path: `/supply/pickup/sum_list?id=${id}` })
+      this.$router.push({name: 'exwarehouseSum_list', query:{id}})
       this.type = 0
+      this.$emit('reset')
+      this.$store.commit('user/showMessage', 'no')
+    },
+    handleToDaily(orderId) {
+      // this.$router.push({ path: `/basic_data/dailyWarehouseRent?orderId=${orderId}` })
+      this.$router.push({ name: 'dailyWarehouseRent', query:{orderId}})
+      this.type = 0
+      this.$emit('reset')
       this.$store.commit('user/showMessage', 'no')
     }
   }
 }
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+::v-deep .el-form-item--mini .el-form-item__content, ::v-deep .el-form-item--mini .el-form-item__label{
+  line-height: 27px;
+}
+::v-deep .el-range-editor--mini .el-range-separator {
+  line-height: 27px;
+}
+</style>

+ 2 - 2
src/components/ReturnSalesHeader/ReturnSalesHeader.vue

@@ -46,7 +46,7 @@
         </el-col>
         <el-col :span="details.id?8:24" class="item">
           <div class="label">发货仓库名称</div>
-          <div class="value">{{ storeObj[details.stockType] || '' }}</div>
+          <div class="value">{{storeObj[details.stockType]}}</div>
         </el-col>
         <el-col :span="24" class="item">
           <div class="label">退货备注</div>
@@ -71,7 +71,7 @@ export default {
   data() {
     return {
       storeObj: {
-        1: '前置仓', 2: '商家仓'
+        1: '嘉贤前置仓', 2: '商家自提仓'
       }
     }
   },

+ 93 - 68
src/components/SalesDialog/SalesDialog.vue

@@ -1,40 +1,54 @@
 <template>
   <div>
-    <el-dialog
-      title="添加产品"
-      :visible.sync="dialogVisible"
-      :before-close="onClose"
-      width="75%"
-    >
+    <el-dialog title="添加产品" :visible.sync="dialogVisible" :before-close="onClose" width="75%">
       <template-page
-        style="width: 100%;
-        height: 100%;"
         ref="pageRef"
-        :getList="getList"
-        :tableAttributes="tableAttributes"
-        :tableEvents="tableEvents"
-      >
-      </template-page>
+        style="width: 100%; height: 100%"
+        :get-list="getList"
+        :table-attributes="tableAttributes"
+        :table-events="tableEvents"
+        :replace-or-not-map="false"
+      />
       <span slot="footer" class="dialog-footer">
-    <el-button @click="$parent.dialogVisible = false" size="mini">取 消</el-button>
-    <el-button type="primary" @click="confirm" size="mini">确 定</el-button>
-  </span>
+        <el-button size="mini" @click="$parent.dialogVisible = false">取 消</el-button>
+        <el-button type="primary" size="mini" @click="confirm">确 定</el-button>
+      </span>
     </el-dialog>
   </div>
 </template>
 <script>
 import TemplatePage from '@/components/template/template-page-1.vue'
 import import_mixin from '@/components/template/import_mixin.js'
+import { boolean } from 'yargs'
 
 export default {
   components: { TemplatePage },
   mixins: [import_mixin],
   props: {
-    dialogVisible: false,
-    func: Function,
-    customerNumber:String,
-    returnId:String,
-    itemId:String
+    dialogVisible: {
+      type: Boolean,
+      default: false
+    },
+    func: {
+      type: Function,
+      default: () => {}
+    },
+    customerNumber: {
+      type: String,
+      default: null
+    },
+    returnId: {
+      type: String,
+      default: null
+    },
+    itemId: {
+      type: String,
+      default: null
+    },
+    dataList: {
+      type: Array,
+      default: () => []
+    }
   },
   data() {
     return {
@@ -70,7 +84,7 @@ export default {
       tableAttributes: {
         // 启用勾选列
         selectColumn: true,
-        selectable:this.selectable
+        selectable: this.selectable
       },
       // 表格事件
       tableEvents: {
@@ -93,8 +107,6 @@ export default {
     },
     // 监听勾选变化
     selectionChange(data) {
-
-
       this.recordSelected = data
     },
     addWarehouse() {
@@ -106,77 +118,90 @@ export default {
     detailsWarehouse() {
       this.pageType = 3
     },
-    onClose(){
+    onClose() {
       this.$parent.dialogVisible = false
-
     },
     operation() {
       return (h, { row, index, column }) => {
         return (
-          <div class="operation-btns">
+          <div class='operation-btns'>
             (
-            <el-button
-              size="mini"
-              type="primary"
-              onClick={() => {
-              }}
-            >
+            <el-button size='mini' type='primary' onClick={() => {}}>
               查看
             </el-button>
-            ) }
-            (
-            <el-button
-              size="mini"
-              type="primary"
-              onClick={() => {
-              }}
-            >
+            ) } (
+            <el-button size='mini' type='primary' onClick={() => {}}>
               审批
             </el-button>
             ) }
-            {(
-              <el-popconfirm
-                title="是否确定操作?"
-                onConfirm={() => {
-                }}
-              >
-                <el-button size="mini" type="primary" slot="reference">
+            {
+              <el-popconfirm title='是否确定操作?' onConfirm={() => {}}>
+                <el-button size='mini' type='primary' slot='reference'>
                   确认返还
                 </el-button>
               </el-popconfirm>
-            )}
+            }
           </div>
         )
       }
-
     },
-    confirm(){
-      if (this.recordSelected.length){
-        this.$emit('confirm',this.recordSelected)
-      }else{
+    confirm() {
+      if (this.recordSelected.length) {
+        this.$emit('confirm', this.recordSelected)
+      } else {
         this.$errorMsg('请选择产品')
       }
       // this.$parent.dialogVisible = false
     },
-    selectable(row,index){
-      if (this.customerNumber){
-        if (row.customerNumber == this.customerNumber && row.disabled){
+    selectable(row, index) {
+      if (this.dataList.length) {
+        if (this.returnId !== null) {
+          for (let j = 0; j < this.dataList.length; j++) {
+            if (
+              row.id == this.dataList[j].id ||
+            row.disabled === false
+            ) {
+              if (
+                row.itemId == this.dataList[j].itemId ||
+              row.disabled === false
+              ) {
+                this.$set(row, 'disabled', false)
+              } else {
+                this.$set(row, 'disabled', true)
+              }
+            } else {
+              this.$set(row, 'disabled', true)
+            }
+          }
+        } else {
+          for (let j = 0; j < this.dataList.length; j++) {
+            if (
+              row.id == this.dataList[j].id ||
+            row.disabled === false
+            ) {
+              this.$set(row, 'disabled', false)
+            } else {
+              this.$set(row, 'disabled', true)
+            }
+          }
+        }
+      }
+
+      if (this.customerNumber) {
+        if (row.customerNumber == this.customerNumber && row.disabled) {
           return true
-        }else{
-          return  false
+        } else {
+          return false
         }
-      }else if(this.returnId){
-        if (row.id == this.returnId && row.disabled){
+      } else if (this.returnId) {
+        if (row.id == this.returnId && row.disabled) {
           return true
-
-        }else{
-          return  false
+        } else {
+          return false
         }
+      } else {
+        return true
       }
-      else {
-        return  true
-      }
-
     }
     // 批量删除
     // dels() {

+ 44 - 41
src/components/SalesHeader/SalesHeader.vue

@@ -3,47 +3,46 @@
     <el-form ref="form" :rules="rules" label-position="left" :disabled="screenForm.disabled" label-width="120px" :model="screenForm" size="mini">
       <el-row :gutter="20">
         <el-col :xs="24" :ms="6" :lg="6">
-          <el-form-item label="销售订单号" >
+          <el-form-item label="销售订单号">
             <el-input v-model="screenForm.id" disabled placeholder="销售订单号" size="mini" />
           </el-form-item>
         </el-col>
         <el-col :xs="24" :ms="6" :lg="6">
-          <el-form-item label="商家编号" >
+          <el-form-item label="商家编号">
             <el-input v-model="screenForm.customerNumber" disabled placeholder="商家编号" size="mini" />
           </el-form-item>
         </el-col>
         <el-col :xs="24" :ms="6" :lg="6">
-          <el-form-item label="商家名称" >
+          <el-form-item label="商家名称">
             <el-input v-model="screenForm.customerName" disabled placeholder="商家名称" size="mini" />
           </el-form-item>
         </el-col>
         <el-col :xs="24" :ms="6" :lg="6">
           <el-form-item label="配送日期" prop="pickTime">
             <el-date-picker
-              style="width: 100%"
               v-model="screenForm.pickTime"
+              style="width: 100%"
               type="date"
               size="mini"
               value-format="yyyy-MM-dd HH:mm:ss"
               placeholder="选择日期"
-            >
-            </el-date-picker>
+            />
           </el-form-item>
         </el-col>
-<!--        <el-col :xs="24" :ms="6" :lg="6">-->
-<!--          <el-form-item label="发货仓库编号" prop="code">-->
-<!--            <el-input v-model="screenForm.code" placeholder="发货仓库编号" size="mini" />-->
-<!--          </el-form-item>-->
-<!--        </el-col>-->
+        <!--        <el-col :xs="24" :ms="6" :lg="6">-->
+        <!--          <el-form-item label="发货仓库编号" prop="code">-->
+        <!--            <el-input v-model="screenForm.code" placeholder="发货仓库编号" size="mini" />-->
+        <!--          </el-form-item>-->
+        <!--        </el-col>-->
         <el-col :xs="24" :ms="6" :lg="6">
           <el-form-item label="发货仓库名称" prop="stockType">
-            <el-select disabled v-model="screenForm.stockType" placeholder="请选择" clearable>
+            <el-select v-model="screenForm.stockType" placeholder="请选择" clearable @change="handleStokType">
               <el-option
-                label="前置仓"
+                label="嘉贤前置仓"
                 :value="1"
               />
               <el-option
-                label="商家仓"
+                label="商家商家仓"
                 :value="2"
               />
             </el-select>
@@ -61,25 +60,28 @@
         </el-col>
         <el-col :xs="24" :ms="18" :lg="18" style="display: flex;" class="custom">
           <el-form-item label="省" prop="provinceId" class="item">
-            <el-select v-model="screenForm.provinceId" placeholder="请选择省" @change="changeProvince"
-                       style="width: 100%"
+            <el-select
+              v-model="screenForm.provinceId"
+              placeholder="请选择省"
+              style="width: 100%"
+              @change="changeProvince"
             >
-              <el-option v-for="item in provinceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+              <el-option v-for="item in provinceList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
           </el-form-item>
           <el-form-item label="市" prop="cityId" label-width="50px">
-            <el-select v-model="screenForm.cityId" placeholder="请选择市" @change="changeCity" style="width: 100%">
-              <el-option v-for="item in cityList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            <el-select v-model="screenForm.cityId" placeholder="请选择市" style="width: 100%" @change="changeCity">
+              <el-option v-for="item in cityList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
           </el-form-item>
           <el-form-item label="区" prop="areaId" label-width="50px">
-            <el-select v-model="screenForm.areaId" placeholder="请选择区" @change="changeArea" style="width: 100%">
-              <el-option v-for="item in areaList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            <el-select v-model="screenForm.areaId" placeholder="请选择区" style="width: 100%" @change="changeArea">
+              <el-option v-for="item in areaList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
           </el-form-item>
           <el-form-item label="街道" prop="streetId" label-width="50px">
-            <el-select v-model="screenForm.streetId" placeholder="请选择街道" @change="changeStreet" style="width: 100%">
-              <el-option v-for="item in streetList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            <el-select v-model="screenForm.streetId" placeholder="请选择街道" style="width: 100%" @change="changeStreet">
+              <el-option v-for="item in streetList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
 
           </el-form-item>
@@ -150,17 +152,17 @@ export default {
         pickTime: [{
           required: true, message: '请输入配送日期', trigger: 'change'
         }],
-        stockType: [{
-          required: true, message: '请输入发货仓库名称', trigger: 'change'
-        }],
+        // stockType: [{
+        //   required: true, message: '请输入发货仓库名称', trigger: 'change'
+        // }],
         userName: [{
           required: true, message: '请输入用户名称', trigger: 'change'
         }],
         phone: [{
-          required: true, message: '请输入用户电话', trigger: 'change',
+          required: true, message: '请输入用户电话', trigger: 'change'
         },
         { min: 11, max: 11, message: '请输入11位手机号', trigger: 'change' }
-      ],
+        ],
         receAddress: [{
           required: true, message: '请输入送货地址', trigger: 'change'
         }]
@@ -169,7 +171,7 @@ export default {
       cityList: [],
       areaList: [],
       streetList: [],
-      areaValue:''
+      areaValue: ''
     }
   },
   created() {
@@ -191,10 +193,8 @@ export default {
         }
       })
     },
-    handleArea(value,type){
-
-      this.screenForm[type] =  this[type+'List'].find(k=>k.id===value).name
-
+    handleArea(value, type) {
+      this.screenForm[type] = this[type + 'List'].find(k => k.id === value).name
     },
     // 切换省
     changeProvince(value) {
@@ -205,7 +205,7 @@ export default {
       this.areaList = []
       this.streetList = []
       this.getRegion(1, value)
-      this.handleArea(value,'province')
+      this.handleArea(value, 'province')
     },
 
     // 切换市
@@ -215,8 +215,7 @@ export default {
       this.areaList = []
       this.streetList = []
       this.getRegion(2, value)
-      this.handleArea(value,'city')
-
+      this.handleArea(value, 'city')
     },
 
     // 切换区
@@ -225,19 +224,18 @@ export default {
       this.screenForm.streetId = ''
       this.streetList = []
       this.getRegion(3, value)
-      this.handleArea(value,'area')
-
+      this.handleArea(value, 'area')
     },
 
     // 切换街道
     changeStreet(value) {
       this.getRegion(3, this.areaValue)
-      this.handleArea(value,'street')
+      this.handleArea(value, 'street')
     },
 
     // 初始化省市区街道
     initRegion(level, item, id = 0) {
-      let { province, city, area, street } = item
+      const { province, city, area, street } = item
       let nextId = null
       getRegion({ pid: id }).then(res => {
         if (level === 0) {
@@ -258,6 +256,9 @@ export default {
           this.initRegion(level, item, nextId)
         }
       })
+    },
+    handleStokType(e) {
+      this.$emit('setStokType', e)
     }
   }
 }
@@ -269,7 +270,9 @@ export default {
   padding: 20px;
   box-shadow: 0 0 8px 0 rgb(0 0 0 / 20%);
 }
-
+::v-deep .el-select{
+ width: 100%;
+}
 .custom {
   .item {
     ::v-deep .el-form-item__label:first-child {

+ 6 - 12
src/components/SalesTable/SalesTable.vue

@@ -3,8 +3,7 @@
     <slot name="title">
       <h5>销售订单明细</h5>
     </slot>
-    <slot name="bts">
-    </slot>
+    <slot name="bts" />
     <div class="table">
       <el-table
         :data="dataList"
@@ -19,15 +18,12 @@
           style="padding-left: 10px;"
           type="selection"
           width="55"
-
-        >
-        </el-table-column>
+        />
         <el-table-column
           v-if="isIndex"
           type="index"
           width="50"
-        >
-        </el-table-column>
+        />
         <el-table-column
           v-for="(item,index) in column"
           :key="index"
@@ -50,15 +46,13 @@
               />
             </template>
             <template v-if="item.isCustom">
-                <slot name="custom" v-bind:item="{row,$index}">
-                </slot>
+              <slot name="custom" :item="{row,$index}" />
             </template>
           </template>
         </el-table-column>
         <el-table-column v-if="isOperation" fixed="right" label="操作" min-width="100" align="center">
           <template v-slot="{row,$index}">
-            <slot name="operation" v-bind:item="{row,$index}">
-            </slot>
+            <slot name="operation" :item="{row,$index}" />
           </template>
         </el-table-column>
       </el-table>
@@ -140,7 +134,7 @@ export default {
     },
     handleSelectionAllChange(data) {
       this.$emit('handleSelection', data)
-    },
+    }
 
   }
 }

+ 69 - 37
src/components/template/sel-export-column-list.vue

@@ -4,48 +4,61 @@
     :before-close="cancel"
     :append-to-body="true"
     :visible.sync="dialogVisible"
-    width="400px"
+    :width="dialogWidth + 'px'"
   >
-    <el-table
-      v-bind="{
-        height: '100%',
-        style: 'width: 100%',
-        border: true,
-        headerCellClassName: 'headerRowColor',
-        size: 'mini'
-      }"
-      :data="exportColumnList"
-    >
-      <el-table-column
-        v-bind="{
-          label: '显示',
-          prop: '',
-          width: '80px'
-        }"
-      >
-        <template slot="header" slot-scope="scope">
-          <div>
-            <el-checkbox v-model="isExport"></el-checkbox>
-            <span style="margin-left: 5px">导出</span>
+    <div v-if="mode == 'checkbox'">
+      <el-checkbox v-model="isExport">全选</el-checkbox>
+      <div style="margin: 15px 0"></div>
+      <el-row :gutter="20">
+        <el-col :span="6" v-for="(item, index) in exportColumnList" :key="index">
+          <div style="margin-bottom: 3px">
+            <el-checkbox v-model="item.isExport">{{ item.label }}</el-checkbox>
           </div>
-        </template>
-        <template slot-scope="scope">
-          <el-checkbox v-model="scope.row.isExport"></el-checkbox>
-        </template>
-      </el-table-column>
-      <el-table-column
+        </el-col>
+      </el-row>
+    </div>
+    <div v-if="mode == 'table'">
+      <el-table
+        :data="exportColumnList"
         v-bind="{
-          label: '列名',
-          prop: ''
+          height: '100%',
+          style: 'width: 100%',
+          border: true,
+          headerCellClassName: 'headerRowColor',
+          size: 'mini'
         }"
       >
-        <template slot-scope="scope">
-          <div>
-            {{ scope.row.label }}
-          </div>
-        </template>
-      </el-table-column>
-    </el-table>
+        <el-table-column
+          v-bind="{
+            label: '显示',
+            prop: '',
+            width: '80px'
+          }"
+        >
+          <template slot="header" slot-scope="scope">
+            <div>
+              <el-checkbox v-model="isExport"></el-checkbox>
+              <span style="margin-left: 5px">导出</span>
+            </div>
+          </template>
+          <template slot-scope="scope">
+            <el-checkbox v-model="scope.row.isExport"></el-checkbox>
+          </template>
+        </el-table-column>
+        <el-table-column
+          v-bind="{
+            label: '列名',
+            prop: ''
+          }"
+        >
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.label }}
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
     <span slot="footer" class="dialog-footer">
       <el-button size="mini" @click="cancel">取 消</el-button>
       <el-button size="mini" type="primary" @click="determine">确 定</el-button>
@@ -59,6 +72,10 @@ export default {
     columnList: {
       type: Array,
       default: () => []
+    },
+    mode: {
+      type: String,
+      default: 'checkbox'
     }
   },
   data() {
@@ -68,6 +85,21 @@ export default {
       exportColumnList: []
     }
   },
+  computed: {
+    dialogWidth() {
+      var len = 0
+      this.exportColumnList.map(item => {
+        if ((item.label || '').length > len) {
+          len = (item.label || '').length
+        }
+      })
+      if (this.mode == 'checkbox') {
+        return 180 + len * 14 * 4
+      } else if (this.mode == 'table') {
+        return 140 + len * 14
+      }
+    }
+  },
   watch: {
     columnList: {
       handler() {

+ 60 - 22
src/components/template/template-page-1.vue

@@ -2,6 +2,7 @@
   <div class="template-page-1">
     <zj-page-template
       ref="zjpage"
+      tableMinHeight="300px"
       :getTableData="getTableData"
       :optionsEvens="evens"
       :optionsEvensGroup="selBtn(optionsEvensGroup)"
@@ -20,6 +21,10 @@
       :onClosePlain="onClosePlain"
       :defaultSearchData="defaultSearchData"
       :replaceOrNotMap="replaceOrNotMap"
+      :moreParameters="moreParameters"
+      :ellipsis="ellipsis"
+      :pofx="pofx"
+      :pageSizes="[15, 30, 50, 100, 200 ,300]"
       @columnWidthChange="columnWidthChange"
       @columnListChange="columnListChange"
     >
@@ -61,6 +66,10 @@ export default {
     SelExportColumnList
   },
   props: {
+    moreParameters: {
+      type: Array,
+      default: () => []
+    },
     loading: {
       type: Boolean,
       default: false
@@ -137,9 +146,17 @@ export default {
       type: Boolean,
       default: true
     },
+    ellipsis: {
+      type: Boolean,
+      default: true
+    },
     setModuleId: {
       type: [String, Number],
       default: null
+    },
+    pofx: {
+      type: Boolean,
+      default: false
     }
   },
   data() {
@@ -229,17 +246,35 @@ export default {
     this.getZfireParamList()
   },
   methods: {
+    getTimeDay(num = 0) {
+      var day2 = new Date()
+      if (num > 0) {
+        day2.setTime(day2.getTime() + 24 * 60 * 60 * 1000 * Math.abs(num))
+      } else if (num < 0) {
+        day2.setTime(day2.getTime() - 24 * 60 * 60 * 1000 * Math.abs(num))
+      } else {
+        day2.setTime(day2.getTime())
+      }
+      return (
+        day2.getFullYear() +
+        '-' +
+        (day2.getMonth() + 1 < 10 ? `0${day2.getMonth() + 1}` : day2.getMonth() + 1) +
+        '-' +
+        (day2.getDate() < 10 ? `0${day2.getDate()}` : day2.getDate())
+      )
+    },
     setDefaultPlan(createTimeKey) {
       this.$nextTick(() => {
         if (createTimeKey) {
-          var [y, m, d] = new Date(new Date().getTime()).toJSON().split('T').join(' ').substr(0, 10).split('-')
+          var day = this.getTimeDay()
+          var day1 = this.getTimeDay(-1)
           this.timePlan = [
             {
               name: '今日',
               paramCallback: () => {
                 return [
-                  { param: createTimeKey, compare: '>', value: `${y}-${m}-${Number(d) - 1} 23:59:59` },
-                  { param: createTimeKey, compare: '<', value: `${y}-${m}-${Number(d) + 1} 00:00:00` }
+                  { param: createTimeKey, compare: '>=', value: `${day} 00:00:00` },
+                  { param: createTimeKey, compare: '<=', value: `${day} 23:59:59` }
                 ]
               }
             },
@@ -247,8 +282,8 @@ export default {
               name: '昨日',
               paramCallback: () => {
                 return [
-                  { param: createTimeKey, compare: '>', value: `${y}-${m}-${Number(d) - 2} 23:59:59` },
-                  { param: createTimeKey, compare: '<', value: `${y}-${m}-${Number(d)} 00:00:00` }
+                  { param: createTimeKey, compare: '>=', value: `${day1} 00:00:00` },
+                  { param: createTimeKey, compare: '<=', value: `${day1} 23:59:59` }
                 ]
               }
             }
@@ -274,7 +309,7 @@ export default {
             closable: true,
             paramCallback: () => {
               return item.items.map(dav => {
-                if (dav.value[0] == '[' && dav.value[dav.value.length - 1] == ']') {
+                if (dav.value && dav.value[0] == '[' && dav.value[dav.value.length - 1] == ']') {
                   return {
                     param: dav.param,
                     compare: dav.compare,
@@ -404,11 +439,12 @@ export default {
         return
       }
       try {
+        var { querylist, page, size, ...data_ } = data
         this.parameter = {
-          pageNum: data.page,
-          pageSize: data.size,
-          orderBy: data.orderBy,
-          params: data.querylist,
+          ...data_,
+          pageNum: page,
+          pageSize: size,
+          params: querylist,
           moduleId: this.moduleId
         }
         var res = await this.getList(this.parameter)
@@ -463,7 +499,7 @@ export default {
         this.$refs.zjpage.columnList.map((item, index) => {
           var data = {
             ...item.exportField,
-            sortNum: index,
+            sortNum: Number(item.sortNum),
             isCopy: item.isCopy,
             tiling: item.tiling,
             isTotal: item.isTotal,
@@ -514,9 +550,17 @@ export default {
           this.$message.error('操作失败')
         })
     },
+    getParams() {
+      var querylist_ = this.$refs.zjpage.$refs.dynamicCondition.jiexi(
+        JSON.parse(JSON.stringify(this.$refs.zjpage.$refs.dynamicCondition.queryData))
+      )
+      return this.$refs.zjpage.parameterAnalysis({ querylist: querylist_ })
+    },
     // 导出
     export() {
-      this.columnList = this.$refs.zjpage.columnList
+      // filter(k=> k.exportField.isExport!==false) 是不否导出
+      // filter(item => (item.show === undefined ? item.exportField.isShow : item.show)) 是不否展示、导出
+      this.columnList = this.$refs.zjpage.columnList.filter(k=> k.exportField.isExport!==false)
     },
     exportDetermine(data) {
       if (!this.exportList) {
@@ -529,13 +573,12 @@ export default {
         background: 'rgba(0, 0, 0, 0.7)'
       })
       this.evens[0][0].loading = true
-      var querylist = this.$refs.zjpage.$refs.dynamicCondition.jiexi(
-        JSON.parse(JSON.stringify(this.$refs.zjpage.$refs.dynamicCondition.queryData))
-      )
+      var { querylist, ...p } = this.getParams()
       this.exportList(
         {
           ...this.parameter,
           pageSize: -1,
+          ...p,
           params: querylist.map(item => {
             item.param = item.param.replace(/>=/g, '')
             item.param = item.param.replace(/<=/g, '')
@@ -576,12 +619,7 @@ export default {
         })
     },
     refreshList(bool) {
-      if (bool === true) {
-        this.showTable = false
-        this.$refs.zjpage.refresh()
-      } else {
-        this.$refs.zjpage.refresh()
-      }
+      this.$refs.zjpage.refresh()
     }
   }
 }
@@ -593,7 +631,7 @@ export default {
   height: 100%;
   position: relative;
   box-sizing: border-box;
-  min-width: 860px;
+  // min-width: 860px;
   overflow: auto;
 }
 .zj-page-template {

+ 7 - 1
src/filters/index.js

@@ -1,4 +1,4 @@
-import { COMMON_SELECT } from '@/utils/select_data'
+import { COMMON_SELECT,COMMON_SELECT2 } from '@/utils/select_data'
 import { getDictList } from '@/api/common'
 
 /**
@@ -136,3 +136,9 @@ export function ORDER_CURRENT_STATUS_FILTER(value) {
   let obj = COMMON_SELECT.ORDER_CURRENT_STATUS.find(o => o.value === value)
   return obj ? obj.label : ''
 }
+
+export function CODE_CHECK_STATUS_FILTER(value) {
+  if(value === null || value === '') return ''
+  let obj = COMMON_SELECT2.CODE_CHECK_STATUS.find(o => o.value == value);
+  return obj ? obj.label : '';
+}

+ 86 - 8
src/layout/components/AppMain.vue

@@ -1,14 +1,14 @@
 <template>
   <section class="app-main" :style="{ paddingTop: show ? '140px' : '80px' }">
     <div class="app-main-view">
-      <transition name="fade-transform" mode="out-in">
-        <keep-alive v-if="$route.name">
-          <router-view :key="$route.name" />
-        </keep-alive>
-        <router-view v-else />
-      </transition>
+      <!-- <transition name="fade-transform" mode="out-in"> -->
+      <keep-alive v-if="$route.name">
+        <router-view :key="$route.name" />
+      </keep-alive>
+      <router-view v-else />
+      <!-- </transition> -->
       <!-- 通知框 -->
-      <notify-box />
+      <notify-box :mes-type="mesType" @reset="handleReset" />
       <zj-watermark color="rgba(200,200,200,.3)" position="absolute" :str="str" z-index="99" />
     </div>
   </section>
@@ -17,14 +17,25 @@
 <script>
 import { mapGetters } from 'vuex'
 import { setModuleId } from '@/utils/request'
+import { getListInvoiceOrderTWO } from '@/api/dashboard'
 import NotifyBox from '@/components/NotifyBox'
 export default {
   name: 'AppMain',
   components: {
     NotifyBox
   },
+  data() {
+    return {
+      currentPage: 1,
+      pageSize: 10,
+      listTotal: 0,
+      invoiceOrderList: [],
+      timer: null,
+      mesType: null
+    }
+  },
   computed: {
-    ...mapGetters(['show']),
+    ...mapGetters(['show', 'isCustomer']),
     cachedViews() {
       return this.$store.state.tagsView.cachedViews
     },
@@ -42,6 +53,73 @@ export default {
   },
   beforeCreate() {
     setModuleId(this.$route.meta.moduleId)
+  },
+  mounted() {
+    if (this.isCustomer) {
+      this.handleInterVal()
+    }
+  },
+  beforeDestroy() {
+    this.handleClearInterVal()
+  },
+  methods: {
+    handleInterVal() {
+      this.handleClearInterVal()
+      this.timer = setInterval(() => {
+        this.getListInvoiceOrderTWO()
+      }, 20000)
+    },
+    handleClearInterVal() {
+      clearInterval(this.timer)
+      this.timer = null
+    },
+    open() {
+      const That = this
+      this.$notify({
+        title: '通知',
+        type: 'info',
+        duration: 0,
+        position: 'bottom-right',
+        dangerouslyUseHTMLString: true,
+        message: (
+          <div>
+            <div>通知:您有一条新的物流通知发货单号{this.invoiceOrderList.length && this.invoiceOrderList[0].id}</div>
+            <div style="text-align:right">
+              <el-link type="primary" underline={false} onClick={() => That.handleJump()}>
+                点击查看详情
+              </el-link>
+            </div>
+          </div>
+        ),
+        onClose() {
+          That.handleInterVal()
+        }
+      })
+    },
+    // 获取物流列表
+    async getListInvoiceOrderTWO() {
+      const data = {
+        pageSize: this.pageSize,
+        pageNum: this.currentPage
+      }
+      const res = await getListInvoiceOrderTWO(data)
+      this.invoiceOrderList = res.data.records
+      this.listTotal = res.data.total
+      if (res.data.records.length) {
+        this.open()
+        this.handleClearInterVal()
+      } else {
+        this.handleInterVal()
+      }
+    },
+    handleJump() {
+      this.mesType = 3
+      this.$store.commit('user/showMessage', 'yes')
+      this.$notify.closeAll()
+    },
+    handleReset() {
+      this.mesType = null
+    }
   }
 }
 </script>

+ 1 - 1
src/layout/components/Sidebar/Logo.vue

@@ -24,7 +24,7 @@ export default {
   },
   data() {
     return {
-      title: '供应链管理系统',
+      title: '供应链平台',
       logo: '@/assets/logo.png'
     }
   }

+ 3 - 3
src/layout/components/Sidebar/SidebarItem.vue

@@ -1,14 +1,14 @@
 <template>
   <div v-if="!item.hidden || item.noShowingChildren">
     <template v-if="!item.children || !item.children.length">
-      <app-link v-if="item.meta" :to="item.name">
-        <el-menu-item :index="item.name" :class="{ 'submenu-title-noDropdown': !isNest }">
+      <app-link v-if="item.meta" :to="item.path">
+        <el-menu-item :index="item.path" :class="{ 'submenu-title-noDropdown': !isNest }">
           <item :icon="item.meta.icon || (item.meta && item.meta.icon)" :title="item.meta.title" />
         </el-menu-item>
       </app-link>
     </template>
 
-    <el-submenu v-else ref="subMenu" :index="item.name" popper-append-to-body>
+    <el-submenu v-else ref="subMenu" :index="item.path" popper-append-to-body>
       <template slot="title">
         <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
       </template>

+ 19 - 2
src/main.js

@@ -31,11 +31,28 @@ import '@/permission' // permission control
 
 import * as filters from './filters' // global filters
 import directives from './directives'
-
+window._AMapSecurityConfig = {
+  serviceHost: 'https://jiasm.zfire.top/' + '_AMapService'
+}
 import '@zjlib/element-plugins/dest/element-plugins.css'
-import ElementPlugins from '@zjlib/element-plugins'
+import ElementPlugins, { AMap } from '@zjlib/element-plugins'
 Vue.use(ElementPlugins)
 
+Vue.use(AMap)
+AMap.initAMapApiLoader({
+  // 高德的key
+  key: '5894bf90997454b0df3c3d60cab12f64',
+  version: '2.0',
+  plugins: ['AMap.Geocoder', 'AMap.AutoComplete', 'AMap.PlaceSearch', 'AMap.DistrictSearch']
+})
+
+import { getIPAdd } from '@/utils/lbs.js'
+
+getIPAdd()
+  .then(res => {
+    Vue.prototype.$IpAdd = res.data
+  })
+  .catch(() => {})
 // // 本地引用;
 // import ElementPlugins from '@packages'
 // Vue.use(ElementPlugins)

+ 22 - 18
src/mixin/print.js

@@ -102,19 +102,17 @@ export default {
         panelData = panel2
         this.dataLength = 4
       }
-  
-        // eslint-disable-next-line no-undef
-        hiprint.PrintElementTypeManager.buildByHtml($('.ep-draggable-item'))
-        this.hiprintTemplate = new hiprint.PrintTemplate({
-          template: panelData,
-          settingContainer: '#PrintElementOptionSetting',
-          paginationContainer: '.hiprint-printPagination'
-        })
-        // this.hiprintTemplate.design('#hiprint-printTemplate')
-        // 获取当前放大比例, 当zoom时传true 才会有
-        // this.scaleValue = hiprintTemplate.editingPanel.scale || 1;
-  
-     
+
+      // eslint-disable-next-line no-undef
+      hiprint.PrintElementTypeManager.buildByHtml($('.ep-draggable-item'))
+      this.hiprintTemplate = new hiprint.PrintTemplate({
+        template: panelData,
+        settingContainer: '#PrintElementOptionSetting',
+        paginationContainer: '.hiprint-printPagination'
+      })
+      // this.hiprintTemplate.design('#hiprint-printTemplate')
+      // 获取当前放大比例, 当zoom时传true 才会有
+      // this.scaleValue = hiprintTemplate.editingPanel.scale || 1;
     },
     /**
      * 获取需要打印数据详情
@@ -216,8 +214,11 @@ export default {
       return date.slice(0, 10)
     },
     // 添加次数
-    addPrint(funcType = 'getDeliverDetail') {
+    async addPrint(funcType = 'getDeliverDetail') {
       let ids = []
+      console.log(this.clonelData);
+      console.log(this.addIds);
+
       for (let i = this.clonelData.length; i > 0; i--) {
         const tempData = this.clonelData[i - 1].invoicePickBeans
         if (tempData.length) {
@@ -243,16 +244,19 @@ export default {
           }
           funcType = addPrints
         }
-
-        funcType(requestParams)
+        console.log(requestParams,'ddsd');
+        const promise = await funcType(requestParams)
         // 清空当前克隆数据,避免重复添加次数
         this.clonelData = []
+        this.addIds =[]
+        return promise
       } catch (error) {
         // console.error('添加打印次数失败')
         this.clonelData = []
-        this.$errorMsg('添加打印次数失败' + JSON.stringify(requestParams))
+        this.addIds =[]
+        // this.$errorMsg('添加打印次数失败' + JSON.stringify(requestParams))
+        return Promise.reject(error.message)
       }
-      return Promise.resolve()
     },
     /**
      * 设置纸张大小

+ 9 - 7
src/permission.js

@@ -50,7 +50,8 @@ router.beforeEach(async (to, from, next) => {
           for (var route of store.getters.menus) {
             lay.children.push(buildRoute(route))
           }
-          lay.redirect = getc(lay).name
+          lay.redirect = getc(lay).path
+          console.log(lay.redirect, 9999, lay)
           router.addRoutes([lay])
           global.antRouter = lay.children
           next({
@@ -79,11 +80,12 @@ router.afterEach(() => {
   NProgress.done()
 })
 
-function buildRoute(route) {
+function buildRoute(route, parentUrl = '') {
   const { url, moduleName, icon, moduleId, code, type, hidden, fullUrl } = route
   var item = {}
-  item.path = fullUrl || code
-  item.name = fullUrl || code
+  item.path = ~[3, 4].indexOf(type) ? fullUrl : parentUrl + url
+  item.name = ~[3, 4].indexOf(type) ? fullUrl : code
+  item.type = type
   item.meta = {
     url,
     title: moduleName,
@@ -103,14 +105,14 @@ function buildRoute(route) {
         roles.push(role.code)
       }
       item.meta.roles = roles
-    } else {
+    } else if (type == 1) {
       item.component = RouterView
-      item.children = route.children.map(child => buildRoute(child))
+      item.children = route.children.filter(item => item.type !== 3).map(child => buildRoute(child, item.path))
     }
   } else {
     if (type == 4) {
       item.component = IframeView
-    } else {
+    } else if (type == 2) {
       try {
         item.component = _import(`${fullUrl}`)
       } catch (e) {

+ 1 - 1
src/settings.js

@@ -1,5 +1,5 @@
 module.exports = {
-  title: '供应链管理系统',
+  title: '供应链平台',
 
   /**
    * @type {boolean} true | false

+ 4 - 3
src/store/getters.js

@@ -16,8 +16,9 @@ const getters = {
   showMessages: state => state.user.showMessages,
   code: state => state.sales.code,
   isCustomer: state => state.user.customerId && state.user.customerName && state.user.customerNumber,
-  userInfo :state =>state.user.userInfo,
-  isHongGe:state => state.user.userInfo.isHongGe,
-  autoChangeNum:state => state.user.changeNum
+  isTradeExaminer: state => state.user.isTradeExaminer,
+  userInfo: state => state.user.userInfo,
+  isHongGe: state => state.user.userInfo.isHongGe,
+  autoChangeNum: state => state.user.changeNum
 }
 export default getters

+ 14 - 9
src/store/modules/user.js

@@ -9,14 +9,15 @@ const getDefaultState = () => {
     name: '', // 用户名称
     phone: '', // 用户手机
     menus: '', // 菜单
-    customerId: '', //经销商ID
-    customerName: '', //经销商名称
-    customerNumber: '', //经销商编码
+    customerId: '', // 经销商ID
+    customerName: '', // 经销商名称
+    customerNumber: '', // 经销商编码
+    isTradeExaminer: '',
     showMessages: null, //
     isNotice: false,
     websitNumber: '',
     isCollapse: true,
-    changeNum:1,
+    changeNum: 1,
     userInfo: JSON.parse(localStorage.getItem('supply_user')) || {}
   }
 }
@@ -54,6 +55,7 @@ const mutations = {
   SET_CUSTOMERNUMBER: (state, customerNumber) => {
     state.customerNumber = customerNumber
   },
+
   SET_IS_COLLAPSE(state, bool) {
     state.isCollapse = !bool.isCollapse
   },
@@ -63,19 +65,21 @@ const mutations = {
   SET_USETINFO(state, data) {
     state.userInfo = data
   },
-  SET_CHANGEUNM(state, data){
-    state.changeNum = data  || 1
-
+  SET_CHANGEUNM(state, data) {
+    state.changeNum = data || 1
   },
   showMessage: (state, value) => {
     if (value == 'yes') {
       state.showMessages = true
-    }else{
+    } else {
       state.showMessages = false
     }
   },
   SET_MESSAGE(state, value) {
     state.isNotice = value
+  },
+  SET_TRADEEXAMINER: (state, isTradeExaminer) => {
+    state.isTradeExaminer = isTradeExaminer
   }
 }
 
@@ -119,7 +123,7 @@ const actions = {
           }
           console.log(data)
           let websitNumber
-          const { nickName, userName, customerId, customerName, customerNumber, changeNum, isFront } = data
+          const { nickName, userName, customerId, customerName, customerNumber, changeNum, isFront, isTradeExaminer } = data
 
           if (data.adminWebsit) {
             websitNumber = data.adminWebsit.websitNumber
@@ -155,6 +159,7 @@ const actions = {
           commit('SET_CUSTOMERID', customerId)
           commit('SET_CUSTOMERNAME', customerName)
           commit('SET_CUSTOMERNUMBER', customerNumber)
+          commit('SET_TRADEEXAMINER', isTradeExaminer)
           commit('SET_NAME', nickName)
           commit('SET_PHONE', userName)
           commit('SET_USETINFO', data)

+ 48 - 0
src/utils/common.js

@@ -109,7 +109,55 @@ export const numToFixed = num => {
   return num.replace(/(\d)(?=(\d{3})+$)/g, '$1,')
 }
 
+/**
+ *
+ * @param {*} fn  是我们需要包装的事件回调
+ * @param {*} delay 是每次推迟执行的等待时间
+ */
+export const debounce = (fn, delay = 1000) => {
+  // 定时器
+  let timer = null
+  // 将debounce处理结果当作函数返回
+  return function () {
+    // 保留调用时的this上下文
+    let context = this
+    // 保留调用时传入的参数
+    let args = arguments
+    // 每次事件被触发时,都去清除之前的旧定时器
+    // console.log(timer)
+    if (timer) {
+      clearTimeout(timer)
+    }
+    // 设立新定时器
+    timer = setTimeout(function () {
+      fn.apply(context, args)
+    }, delay)
+  }
+}
+/**
+ * 深拷贝
+ * @param
+ * @returns
+ */
+export const deepClone = obj => {
+  //判断拷贝的要进行深拷贝的是数组还是对象,是数组的话进行数组拷贝,对象的话进行对象拷贝
+  var objClone = Array.isArray(obj) ? [] : {}
+  //进行深拷贝的不能为空,并且是对象或者是
+  if (obj && typeof obj === 'object') {
+    for (let key in obj) {
+      if (obj.hasOwnProperty(key)) {
+        if (obj[key] && typeof obj[key] === 'object') {
+          objClone[key] = deepClone(obj[key])
+        } else {
+          objClone[key] = obj[key]
+        }
+      }
+    }
+  }
+  return objClone
+}
 export default {
+  deepClone,
   successMsg,
   errorMsg,
   warningNotify,

+ 240 - 0
src/utils/common_select.js

@@ -0,0 +1,240 @@
+/**
+ * 管理下拉框选项
+ */
+
+
+// 审核状态
+export const EXAMINE_STATUS = [
+  { label: '待审核', value: 'WAIT' },
+  { label: '审核通过', value: 'OK' },
+  { label: '审核失败', value: 'FAIL' }
+]
+
+// 结算状态
+export const SETTLE_STATUS = [
+  { label: '未结算', value: 'wjs' },
+  { label: '部分结算', value: 'bfjs' },
+  { label: '全部结算', value: 'yjs' }
+]
+
+// 结算状态
+export const SETTLE2_STATUS = [
+  { label: '总部未结算', value: 0 },
+  { label: '总部已结算', value: 1 }
+]
+
+// 结算状态
+export const SETTLE3_STATUS = [
+  { label: '待导入开票数据', value: 'DKP' },
+  { label: '待结算', value: 'WAIT' },
+  { label: '成功', value: 'OK' },
+  { label: '失败', value: 'FAIL' },
+]
+
+// 扣单类型
+export const DEDUCT_TYPE = [
+  { label: '扣一次', value: 'ONE' },
+  { label: '每月扣', value: 'MONTH' },
+]
+
+// 执行状态
+export const FINISHED_STATUS = [
+  { label: '已执行', value: true },
+  { label: '未执行', value: false },
+]
+
+// 大类列表
+export const MAIN_LIST = [
+  { label: '家用空调', value: 101 },
+  { label: '商用空调', value: 102 },
+  { label: '家用空气能热水器', value: 103 },
+  { label: '生活电器', value: 104 },
+  { label: '晶弘冰箱', value: 106 },
+  { label: '壁挂炉', value: 109 },
+]
+
+// 大类列表
+export const MAIN2_LIST = [
+  { label: '家用空调', value: 101 },
+  { label: '空气能热水器', value: 103 },
+  { label: '生活电器', value: 104 },
+  { label: '晶弘冰箱', value: 106 },
+]
+
+// 大类列表
+export const MAIN3_LIST = [
+  { label: '家用空调', value: 101 },
+  { label: '空气能热水器', value: 103 },
+  { label: '生活电器', value: 104 },
+  { label: '晶弘冰箱', value: 106 },
+  { label: '清洗', value: 0 },
+]
+
+// 导入状态
+export const IMPORT_STATUS = [
+  { label: '已导入', value: 'ydr' },
+  { label: '未导入', value: 'wdr' },
+]
+
+// 导入状态
+export const IMPORT2_STATUS = [
+  { label: '已导入', value: 1 },
+  { label: '未导入', value: 0 },
+]
+
+// 确定状态
+export const CONFIRM_STATUS = [
+  { label: '已确定', value: 'yqd' },
+  { label: '未确定', value: 'wqd' },
+  { label: '部分确定', value: 'bfqd' }
+]
+
+// 确定状态
+export const CONFIRM2_STATUS = [
+  { label: '未处理', value: 0 },
+  { label: '已同意', value: 1 },
+  { label: '不同意', value: 2 },
+]
+
+// 确定状态
+export const CONFIRM3_STATUS = [
+  { label: '未完成', value: 1 },
+  { label: '部分完成', value: 2 },
+  { label: '已完成', value: 3 },
+]
+
+// 评价列表
+export const EVALUATE_LIST = [
+  { label: '未评价', value: 0 },
+  { label: '差评', value: 1 },
+  { label: '中评', value: 2 },
+  { label: '好评', value: 3 },
+]
+
+// 工单类型
+export const ORDER_TYPE = [
+  { label: '安装单', value: 'INSTALL' },
+  { label: '维修单', value: 'REPAIR' },
+]
+
+// 工单类型
+export const ORDER2_TYPE = [
+  { label: '安装', value: 1 },
+  { label: '维修', value: 2 },
+]
+
+// 师傅类型
+export const WORKER_TYPE = [
+  { label: '主要人员', value: 'MASTER' },
+  { label: '辅助人员', value: 'SLAVE' },
+]
+
+// 支付状态
+export const PAY_STATUS = [
+  { label: '未支付', value: 1 },
+  { label: '支付中', value: 2 },
+  { label: '已支付', value: 3 },
+]
+
+// 发放状态
+export const GRANT_STATUS = [
+  { label: '待中心审核', value: 'WAIT' },
+  { label: '已发放', value: 'OK' },
+  { label: '审核失败', value: 'FAIL' }
+]
+
+// 奖惩类型
+export const REWARD_PUNISHMENT_TYPE = [
+  { label: '奖励', value: 'REWARD' },
+  { label: '惩罚', value: 'PUNISHMENT' },
+]
+
+// 安装类型
+export const INSTALL_TYPE = [
+  { label: '一体机', value: 'all' },
+  { label: '内机', value: 'inside' },
+  { label: '外机', value: 'out' },
+  { label: '一拖二', value: 'insideTwo' },
+  { label: '一内一外', value: 'insideAndOut' },
+]
+
+// 服务人员等级列表
+export const WORKER_GRADE_LIST = [
+  { label: '基础服务人员', value: '0' },
+  { label: 'A级服务人员', value: 'A' },
+  { label: 'B级服务人员', value: 'B' },
+  { label: 'C级服务人员', value: 'C' },
+  { label: 'D级服务人员', value: 'D' },
+  { label: 'E级服务人员', value: 'E' },
+]
+
+// 审核状态
+export const EXAMINE2_STATUS = [
+  { label: '待网点审核', value: 0 },
+  { label: '待中心审核', value: 1 },
+  { label: '审核成功', value: 2 },
+  { label: '审核失败', value: 3 },
+  { label: '中心添加', value: 4 },
+]
+
+// 默认状态
+export const DEFAULT_STATUS = [
+  { label: '正常', value: true },
+  { label: '禁用', value: false },
+]
+
+// 配置状态
+export const CONFIGURE_STATUS = [
+  { label: '已配置', value: 1 },
+  { label: '未配置', value: 0 },
+]
+
+// 销售类型
+export const SALES_TYPE = [
+  { label: '零售机', value: 1 },
+  { label: '工程机', value: 2 },
+]
+
+// 分中心
+export const CENTER_LIST = [
+  { label: '广州', value: 'S9219801' },
+  { label: '佛山', value: 'S9219807' },
+]
+
+// 设备条码核验状态
+export const CODE_CHECK_STATUS = [
+  { label: '广佛设备', value: 1 },
+  { label: '非广佛设备', value: 2 },
+]
+
+export const COMMON_SELECT_DATA = {
+  EXAMINE_STATUS,
+  SETTLE_STATUS,
+  SETTLE2_STATUS,
+  SETTLE3_STATUS,
+  DEDUCT_TYPE,
+  FINISHED_STATUS,
+  MAIN_LIST,
+  MAIN2_LIST,
+  MAIN3_LIST,
+  IMPORT_STATUS,
+  IMPORT2_STATUS,
+  CONFIRM_STATUS,
+  CONFIRM2_STATUS,
+  CONFIRM3_STATUS,
+  EVALUATE_LIST,
+  ORDER_TYPE,
+  ORDER2_TYPE,
+  WORKER_TYPE,
+  PAY_STATUS,
+  GRANT_STATUS,
+  REWARD_PUNISHMENT_TYPE,
+  INSTALL_TYPE,
+  WORKER_GRADE_LIST,
+  EXAMINE2_STATUS,
+  DEFAULT_STATUS,
+  CONFIGURE_STATUS,
+  SALES_TYPE,
+  CENTER_LIST,
+  CODE_CHECK_STATUS
+}

+ 136 - 0
src/utils/lbs.js

@@ -0,0 +1,136 @@
+import axios from 'axios'
+
+export function supervisorChangeList(keyword) {
+  return new Promise(function (r, j) {
+    try {
+      new AMap.Autocomplete({
+        city: '全国'
+      }).search(keyword, function (status, result) {
+        if (status === 'complete') {
+          r(result)
+        } else {
+          console.error('根据地址查询位置失败')
+          j(result)
+        }
+      })
+    } catch (error) {
+      j(error)
+    }
+  })
+}
+
+/**
+ * 根据地址查坐标
+ * @param {*} address 例如:广东省广州市天河区邮通小区
+ * @returns Object
+ */
+export function getLocation(address) {
+  return new Promise(function (r, j) {
+    try {
+      new AMap.Geocoder().getLocation(address, function (status, result) {
+        if (status === 'complete' && result.geocodes?.length) {
+          r(result.geocodes)
+        } else {
+          console.error('根据地址查询位置失败')
+          j(result)
+        }
+      })
+    } catch (error) {
+      j(error)
+    }
+  })
+}
+
+/**
+ * 根据坐标查地址
+ * @param {*} location 例如:[113.36242, 23.1368425]
+ * @returns Object
+ */
+export function getAddress(location) {
+  return new Promise(function (r, j) {
+    try {
+      new AMap.Geocoder().getAddress(location, function (status, result) {
+        if (status === 'complete' && result.regeocode) {
+          r(result.regeocode)
+        } else {
+          console.error('根据地址查询位置失败')
+          j(result)
+        }
+      })
+    } catch (error) {
+      j(error)
+    }
+  })
+}
+
+export function axiosMapZb(params) {
+  return axios({
+    url: `https://restapi.amap.com/v3/place/around`,
+    method: 'get',
+    params: {
+      key: 'b772f8b0ace6bc96c04ae8e48f241e36',
+      ...params
+    }
+  })
+}
+
+// 获取ip定位地址
+export function getIPAdd() {
+  return new Promise(function (r, j) {
+    try {
+      getIPs(ip => {
+        axios
+          .get('https://restapi.amap.com/v3/ip?output=json&key=b772f8b0ace6bc96c04ae8e48f241e36&ip=' + ip)
+          .then(r)
+          .catch(j)
+      })
+    } catch (error) {
+      j(error)
+    }
+  })
+}
+
+// 获取当前ip
+function getIPs(callback) {
+  var ip_dups = {}
+  var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection
+  var useWebKit = !!window.webkitRTCPeerConnection
+  var mediaConstraints = {
+    optional: [{ RtpDataChannels: true }]
+  }
+  var servers = {
+    iceServers: [{ urls: 'stun:stun.services.mozilla.com' }, { urls: 'stun:stun.l.google.com:19302' }]
+  }
+  var pc = new RTCPeerConnection(servers, mediaConstraints)
+  function handleCandidate(candidate) {
+    var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
+    var hasIp = ip_regex.exec(candidate)
+    if (hasIp) {
+      var ip_addr = ip_regex.exec(candidate)[1]
+      if (ip_dups[ip_addr] === undefined) callback(ip_addr)
+      ip_dups[ip_addr] = true
+    }
+  }
+  pc.onicecandidate = function (ice) {
+    if (ice.candidate) {
+      handleCandidate(ice.candidate.candidate)
+    }
+  }
+  pc.createDataChannel('')
+  pc.createOffer(
+    function (result) {
+      pc.setLocalDescription(
+        result,
+        function () {},
+        function () {}
+      )
+    },
+    function () {}
+  )
+  setTimeout(function () {
+    var lines = pc.localDescription.sdp.split('\n')
+    lines.forEach(function (line) {
+      if (line.indexOf('a=candidate:') === 0) handleCandidate(line)
+    })
+  }, 500)
+}

+ 1 - 1
src/utils/panel2.js

@@ -410,7 +410,7 @@ export default {
             top: 393,
             height: 13,
             lineHeight: 13,
-            width: 218,
+            width: 640,
             fontSize: 12.5,
             title: "送货地址",
             fontFamily: "黑体,宋体,微软雅黑",

+ 7 - 0
src/utils/select_data.js

@@ -1,3 +1,5 @@
+import * as COMMON_SELECT_DATA from './common_select'
+
 /**
  * 管理下拉框选项
  */
@@ -16,3 +18,8 @@ export const ORDER_CURRENT_STATUS = [
 export const COMMON_SELECT = {
   ORDER_CURRENT_STATUS
 }
+
+
+export const COMMON_SELECT2 = {
+...COMMON_SELECT_DATA
+}

+ 97 - 0
src/views/barcode/barcodeImport.vue

@@ -0,0 +1,97 @@
+<template>
+  <template-page
+    ref="pageRef"
+    :get-list="getList"
+    :export-list="exportList"
+    :column-parsing="columnParsing"
+  >
+    <Popu v-if="visible" />
+  </template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import add_callback_mixin from '@/components/template/add_callback_mixin.js'
+import Popu from '@/components/template/popu.vue'
+import { getListInstallCodeV2, exportInstallListCodeV2, importListCustomerCodeV2, luBaoDownloadDownload } from '@/api/barcode'
+export default {
+  components: { TemplatePage, Popu },
+  mixins: [import_mixin, add_callback_mixin],
+  data() {
+    return {
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '导入',
+              render: this.importButton(importListCustomerCodeV2)
+            }
+          ]
+        ],
+        [
+          [
+            {
+              name: '导入模版',
+              click: () => {
+                luBaoDownloadDownload({}, `${this.$route.meta.title}`)
+                  .then(res => {
+                    this.$message({
+                      message: '下载成功',
+                      type: 'success'
+                    })
+                  })
+                  .catch(_err => {
+                    this.$message.error('下载失败')
+                  })
+              }
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getListInstallCodeV2(...p)
+    },
+    // 列表导出函数
+    exportList: exportInstallListCodeV2,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return <div class='operation-btns'></div>
+      }
+    },
+    handleClose() {
+      this.addOff(() => {
+        this.visible = false
+      })()
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 98 - 0
src/views/barcode/barcodeVerification.vue

@@ -0,0 +1,98 @@
+<template>
+  <template-page
+    ref="pageRef"
+    :get-list="getList"
+    :export-list="exportList"
+    :options-evens-group="optionsEvensGroup"
+    :column-parsing="columnParsing"
+  >
+    <Popu v-if="visible" />
+  </template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import add_callback_mixin from '@/components/template/add_callback_mixin.js'
+import Popu from '@/components/template/popu.vue'
+import { getListCustomerCheckV2, exportListCustomerCheck, importListCustomerCheck, listCustomerCheckDownload } from '@/api/barcode'
+export default {
+  components: { TemplatePage, Popu },
+  mixins: [import_mixin, add_callback_mixin],
+  data() {
+    return {
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '导入',
+              render: this.importButton(importListCustomerCheck)
+            }
+          ]
+        ],
+        [
+          [
+            {
+              name: '导入模版',
+              click: () => {
+                listCustomerCheckDownload({}, `${this.$route.meta.title}`)
+                  .then(res => {
+                    this.$message({
+                      message: '下载成功',
+                      type: 'success'
+                    })
+                  })
+                  .catch(_err => {
+                    this.$message.error('下载失败')
+                  })
+              }
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getListCustomerCheckV2(...p)
+    },
+    // 列表导出函数
+    exportList: exportListCustomerCheck,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return <div class='operation-btns'></div>
+      }
+    },
+    handleClose() {
+      this.addOff(() => {
+        this.visible = false
+      })()
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 80 - 0
src/views/barcode/largeStockBarcode.vue

@@ -0,0 +1,80 @@
+<template>
+  <template-page
+    ref="pageRef"
+    :get-list="getList"
+    :export-list="exportList"
+    :options-evens-group="optionsEvensGroup"
+    :column-parsing="columnParsing"
+  >
+    <Popu v-if="visible" />
+  </template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import add_callback_mixin from '@/components/template/add_callback_mixin.js'
+import Popu from '@/components/template/popu.vue'
+import { getListDaCangV2, exportListDaCangV2 } from '@/api/barcode'
+export default {
+  components: { TemplatePage, Popu },
+  mixins: [import_mixin, add_callback_mixin],
+  data() {
+    return {
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+        // [
+        //   [
+        //     {
+        //       name: '导入',
+        //       render: this.importButton(importCustomerV2)
+        //     }
+        //   ]
+        // ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getListDaCangV2(...p)
+    },
+    // 列表导出函数
+    exportList: exportListDaCangV2,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return <div class='operation-btns'></div>
+      }
+    },
+    handleClose() {
+      this.addOff(() => {
+        this.visible = false
+      })()
+    }
+  }
+}
+</script>
+
+  <style lang="scss" scoped></style>
+

+ 72 - 0
src/views/barcode/utboundBarcode.vue

@@ -0,0 +1,72 @@
+<template>
+  <template-page
+    ref="pageRef"
+    :get-list="getList"
+    :export-list="exportList"
+    :options-evens-group="optionsEvensGroup"
+    :column-parsing="columnParsing"
+  >
+    <Popu v-if="visible" />
+  </template-page>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import add_callback_mixin from '@/components/template/add_callback_mixin.js'
+import Popu from '@/components/template/popu.vue'
+import { getListCodeV2, exportListCodeV2 } from '@/api/barcode'
+export default {
+  components: { TemplatePage, Popu },
+  mixins: [import_mixin, add_callback_mixin],
+  data() {
+    return {
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getListCodeV2(...p)
+    },
+    // 列表导出函数
+    exportList: exportListCodeV2,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return <div class='operation-btns'></div>
+      }
+    },
+    handleClose() {
+      this.addOff(() => {
+        this.visible = false
+      })()
+    }
+  }
+}
+</script>
+
+  <style lang="scss" scoped></style>
+

+ 275 - 0
src/views/barcodeVerification/batchEquipment.vue

@@ -0,0 +1,275 @@
+<template>
+  <div class="app-container">
+    <!-- 筛选条件 -->
+    <div>
+      <el-form ref="searchForm" :model="searchForm" label-width="100px" size="mini" label-position="left">
+        <el-row :gutter="20">
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="批次号:" prop="batch">
+              <el-input v-model="searchForm.batch" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="外机条码:" prop="barCode">
+              <el-input v-model="searchForm.barCode" placeholder="请输入"></el-input>
+            </el-form-item>
+          </el-col>
+
+          <el-col :xs="24" :sm="12" :lg="12">
+            <el-form-item label="核验日期:" prop="time">
+              <el-date-picker
+                @change="changeTime"
+                v-model="searchForm.time"
+                    type="datetimerange"
+                    :default-time="['00:00:00','23:59:59']"
+                    range-separator="至"
+                    style="width: 100%"
+                    value-format="yyyy-MM-dd HH:mm:ss"
+                    start-placeholder="开始日期"
+                    end-placeholder="结束日期"
+              ></el-date-picker>
+            </el-form-item>
+          </el-col>
+
+          <el-col :xs="24" :sm="24" :lg="24">
+            <el-form-item label="" class="fr">
+              <el-button size="mini" @click="emptyFn">清空</el-button>
+              <el-button size="mini" type="primary" @click="searchFn">搜索</el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+    <!-- 按钮 -->
+    <div class="btn-group clearfix">
+      <div class="fl">
+        <!-- <el-button type="primary" size="mini">导入</el-button> -->
+        <el-upload
+          style="display: inline-block; margin-right: 10px"
+          class="import-btn"
+          action=""
+          :http-request="handleImport"
+          :file-list="importFileList"
+          :show-file-list="false"
+        >
+          <el-button type="primary" size="mini">导入</el-button>
+        </el-upload>
+        <el-button type="danger" size="mini" @click="downloadFn">下载模板</el-button>
+        <el-button type="primary" size="mini" @click="exportFn">导出</el-button>
+      </div>
+    </div>
+    <br />
+    <div class="table">
+      <el-table
+        v-loading="listLoading"
+        :data="dataList"
+        element-loading-text="Loading"
+        border
+        fit
+        highlight-current-row
+        stripe
+      >
+        <el-table-column
+          align="center"
+          label="条形码"
+          prop="barCode"
+          min-width="140"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="产品名称"
+          prop="productName"
+          min-width="220"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column align="center" label="出库采集时间" prop="deliveryTime" min-width="160"></el-table-column>
+        <el-table-column align="center" label="设备仓库" prop="warehouse" min-width="100"></el-table-column>
+        <el-table-column
+          align="center"
+          label="收货地址"
+          prop="address"
+          min-width="220"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column align="center" label="发货日期" prop="consignerTime" min-width="160"></el-table-column>
+        <el-table-column
+          align="center"
+          label="订单号"
+          prop="orderNumber"
+          min-width="140"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column align="center" label="最新核验状态" prop="verificationStatus" min-width="120">
+          <template slot-scope="scope">
+            {{ scope.row.verificationStatus | CODE_CHECK_STATUS_FILTER }}
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="最新核验时间" prop="verificationTime" min-width="160"></el-table-column>
+        <el-table-column align="center" label="核验人员" prop="workerNumber" min-width="160" show-overflow-tooltip>
+          <template slot-scope="scope"> {{ scope.row.workerName }}({{ scope.row.workerNumber }}) </template>
+        </el-table-column>
+        <el-table-column align="center" label="核验人员手机号" prop="workerPhone" min-width="130"></el-table-column>
+        <el-table-column
+          align="center"
+          label="所属网点名称"
+          prop="websitName"
+          min-width="160"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          label="所属网点编号"
+          prop="websitNumber"
+          min-width="120"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column align="center" label="上传人" prop="createByNumber" min-width="160" show-overflow-tooltip>
+          <template slot-scope="scope"> {{ scope.row.createBy }}({{ scope.row.createByNumber }}) </template>
+        </el-table-column>
+        <el-table-column align="center" label="上传时间" prop="createTime" min-width="160"></el-table-column>
+        <el-table-column align="center" label="批次" prop="batch" min-width="160"></el-table-column>
+      </el-table>
+    </div>
+
+    <div class="pagination clearfix">
+      <div class="fr">
+        <el-pagination
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="currentPage"
+          :page-sizes="[10, 20, 30, 50]"
+          :page-size="10"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="listTotal"
+        >
+        </el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { downloadFiles, handleImport } from '@/utils/util'
+import { getList } from '@/api/barcodeVerification'
+export default {
+  data() {
+    return {
+      searchForm: {
+        barCode: '',
+        batch: '',
+        startTime: '',
+        endTime: '',
+        time: []
+      },
+      currentPage: 1, // 当前页码
+      pageSize: 10, // 每页数量
+      listTotal: 0, // 列表总数
+      dataList: [], // 列表数据
+      importFileList: [],
+      listLoading: false // 列表加载loading
+    }
+  },
+  created() {
+    this.getDataList()
+  },
+  methods: {
+    changeTime(val) {
+      if (val) {
+        this.searchForm.startTime = val[0]
+        this.searchForm.endTime = val[1]
+      } else {
+        this.searchForm.startTime = ''
+        this.searchForm.endTime = ''
+      }
+    },
+    //下载模板
+    downloadFn() {
+      downloadFiles('externalCode/equipment/downloadBatch')
+    },
+    // 更改每页数量
+    handleSizeChange(val) {
+      this.pageSize = val
+      this.currentPage = 1
+      this.getDataList()
+    },
+
+    // 更改当前页
+    handleCurrentChange(val) {
+      this.currentPage = val
+      this.getDataList()
+    },
+    //清除
+    async emptyFn() {
+      this.searchForm = {
+        barCode: '',
+        batch: '',
+        startTime: '',
+        endTime: '',
+        time: []
+      }
+    },
+    //搜索
+    searchFn() {
+      if (this.searchForm.time.length === 0) {
+        this.$message.error('请选择核验日期')
+        return
+      } else {
+        this.currentPage = 1
+        this.getDataList()
+      }
+    },
+    //导出
+    exportFn() {
+      if (this.searchForm.time.length === 0) {
+        this.$message.error('请选择导出的时间')
+        return
+      }
+      let params = {
+        pageNo: 1,
+        pageSize: -1,
+        barCode: this.searchForm.barCode,
+        batch: this.searchForm.batch,
+        endTime: this.searchForm.endTime,
+        startTime: this.searchForm.startTime
+      }
+
+      downloadFiles('externalCode/equipment/exportBatch', params)
+    },
+    // 导入
+    async handleImport(param) {
+      this.listLoading = true
+      const file = param.file
+      const formData = new FormData()
+      formData.append('file', file)
+      let result = await handleImport('externalCode/equipment/importBatch', formData)
+      this.importFileList = []
+      if (result.code == 200) {
+        this.$message.success('导入成功')
+        this.searchForm.batch = result.data
+        this.getDataList()
+      } else {
+        this.$message.error(result.message)
+      }
+      this.listLoading = false
+    },
+    //获取列表数据
+    async getDataList() {
+      let params = {
+        pageNo: this.currentPage,
+        pageSize: this.pageSize,
+        barCode: this.searchForm.barCode,
+        batch: this.searchForm.batch,
+        startTime: this.searchForm.startTime,
+        endTime: this.searchForm.endTime
+      }
+      let res = await getList(params)
+      this.dataList = res.data.records
+      this.listTotal = res.data.total
+    }
+  }
+}
+</script>
+
+<style></style>

+ 462 - 0
src/views/barcodeVerification/code_list.vue

@@ -0,0 +1,462 @@
+<template>
+  <div class="app-container">
+    <!-- 筛选条件 -->
+    <div class="screen-container">
+      <div class="top clearfix">
+        <div class="title fl">条件筛选</div>
+        <div class="fr">
+          <el-button size="small" type="primary" @click="isOpen = !isOpen"
+            >{{ isOpen ? '收起' : '展开'
+            }}<i class="el-icon--right" :class="isOpen ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"></i
+          ></el-button>
+          <el-button size="small" @click="resetScreenForm">清空</el-button>
+          <el-button size="small" type="primary" @click="submitScreenForm">搜索</el-button>
+        </div>
+      </div>
+      <el-form ref="screenForm" :model="screenForm" label-width="70px" size="small" label-position="left">
+        <el-row :gutter="20">
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="条形码" prop="code">
+              <el-input v-model="screenForm.code" placeholder="请输入条形码"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="订单号" prop="orderNo">
+              <el-input v-model="screenForm.orderNo" placeholder="请输入订单号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="销售公司" prop="salesCompany">
+              <el-input v-model="screenForm.salesCompany" placeholder="请输入销售公司"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="收货地址" prop="address">
+              <el-input v-model="screenForm.address" placeholder="请输入收货地址"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6" v-if="isOpen">
+            <el-form-item label="扫描时间" prop="scanDate">
+              <el-date-picker
+                v-model="screenForm.scanDate"
+                type="daterange"
+                range-separator="至"
+                style="width: 100%"
+                ref="scanDate"
+                value-format="yyyy-MM-dd"
+                :picker-options="pickerOptions"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6" v-if="isOpen">
+            <el-form-item label="产品名称" prop="goodsName">
+              <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6" v-if="isOpen">
+            <el-form-item label="设备仓库" prop="warehouse">
+              <el-input v-model="screenForm.warehouse" placeholder="请输入设备仓库"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6" v-if="isOpen">
+            <el-form-item label="网点信息" prop="website">
+              <el-input v-model="screenForm.website" placeholder="请输入网点信息"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6" v-if="isOpen">
+            <el-form-item label="服务人员" prop="worker">
+              <el-input v-model="screenForm.worker" placeholder="请输入服务人员"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6" v-if="isOpen">
+            <el-form-item label="核验时间" prop="checkDate">
+              <el-date-picker
+                v-model="screenForm.checkDate"
+                type="daterange"
+                range-separator="至"
+                style="width: 100%"
+                value-format="yyyy-MM-dd"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+
+    <div class="mymain-container">
+      <div class="btn-group clearfix">
+        <div class="fr">
+          <el-button size="small" type="primary" @click="handleExport" v-if="checkBtnRole('export')"
+            >导出数据</el-button
+          >
+        </div>
+      </div>
+
+      <div class="table">
+        <el-table
+          v-loading="listLoading"
+          :data="dataList"
+          element-loading-text="Loading"
+          border
+          fit
+          highlight-current-row
+          stripe
+        >
+          <el-table-column
+            align="center"
+            label="条形码"
+            prop="barCode"
+            min-width="140"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="产品名称"
+            prop="productName"
+            min-width="220"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column align="center" label="出库采集时间" prop="deliveryTime" min-width="160"></el-table-column>
+          <el-table-column align="center" label="设备仓库" prop="warehouse" min-width="100"></el-table-column>
+          <el-table-column
+            align="center"
+            label="收货地址"
+            prop="address"
+            min-width="220"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column align="center" label="发货日期" prop="consignerTime" min-width="160"></el-table-column>
+          <el-table-column
+            align="center"
+            label="订单号"
+            prop="orderNumber"
+            min-width="140"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column align="center" label="最新核验状态" prop="verificationStatus" min-width="120">
+            <template slot-scope="scope">
+              {{ scope.row.verificationStatus | CODE_CHECK_STATUS_FILTER }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            label="最新核验时间"
+            prop="verificationTime"
+            min-width="160"
+          ></el-table-column>
+          <el-table-column align="center" label="核验人员" prop="workerNumber" min-width="160" show-overflow-tooltip>
+            <template slot-scope="scope"> {{ scope.row.workerName }}({{ scope.row.workerNumber }}) </template>
+          </el-table-column>
+          <el-table-column align="center" label="核验人员手机号" prop="workerPhone" min-width="130"></el-table-column>
+          <el-table-column
+            align="center"
+            label="所属网点名称"
+            prop="websitName"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="所属网点编号"
+            prop="websitNumber"
+            min-width="120"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column align="center" label="上传人" prop="createByNumber" min-width="160" show-overflow-tooltip>
+            <template slot-scope="scope"> {{ scope.row.createBy }}({{ scope.row.createByNumber }}) </template>
+          </el-table-column>
+          <el-table-column align="center" label="上传时间" prop="createTime" min-width="160"></el-table-column>
+        </el-table>
+      </div>
+
+      <div class="pagination clearfix">
+        <div class="fr">
+          <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-sizes="[10, 20, 30, 50]"
+            :page-size="10"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="listTotal"
+          >
+          </el-pagination>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getCodeList } from '@/api/barcodeVerification'
+import { downloadFiles, handleImport } from '@/utils/util'
+
+export default {
+  data() {
+    return {
+      isOpen: false, // 是否展开条件筛选
+      dataList: null, // 列表数据
+      listLoading: false, // 列表加载loading
+      currentPage: 1, // 当前页码
+      pageSize: 10, // 每页数量
+      listTotal: 0, // 列表总数
+      screenForm: {
+        // 筛选表单数据
+        code: '',
+        orderNo: '',
+        salesCompany: '',
+        address: '',
+        scanDate: [],
+        goodsName: '',
+        warehouse: '',
+        website: '',
+        worker: '',
+        checkDate: []
+      },
+      pickerOptions: {
+        onPick: ({ maxDate, minDate }) => {
+          this.selectDate = minDate.getTime()
+          if (maxDate) {
+            this.selectDate = ''
+          }
+        },
+        disabledDate: time => {
+          if (this.selectDate !== '') {
+            const one = 30 * 24 * 3600 * 1000
+            const minTime = this.selectDate - one
+            const maxTime = this.selectDate + one
+            return time.getTime() < minTime || time.getTime() > maxTime
+          }
+        }
+      },
+      importLoading_wh: false, // 导入加载loading
+      importFileList_wh: [], // 导入列表
+      importLoading_ss: false, // 导入加载loading
+      importFileList_ss: [], // 导入列表
+      importLoading_ls: false, // 导入加载loading
+      importFileList_ls: [], // 导入列表
+      importLoading_tm: false, // 导入加载loading
+      importFileList_tm: [], // 导入列表
+      importLoading_lb: false, // 导入加载loading
+      importFileList_lb: [] // 导入列表
+    }
+  },
+  computed: {
+    userInfo() {
+      return JSON.parse(localStorage.getItem('settlement_user'))
+    }
+  },
+  created() {
+    // this.getCodeList();
+  },
+  methods: {
+    // 查询按钮权限
+    checkBtnRole(value) {
+      return true
+      let btnRole = this.$route.meta.roles
+      if (!btnRole) {
+        return true
+      }
+      let index = btnRole.indexOf(value)
+      return index >= 0 ? true : false
+    },
+
+    // 获取列表
+    getCodeList() {
+      this.listLoading = true
+      let params = {
+        pageNo: this.currentPage,
+        pageSize: this.pageSize,
+        barCode: this.screenForm.code,
+        orderNumber: this.screenForm.orderNo,
+        salesCompany: this.screenForm.salesCompany,
+        address: this.screenForm.address,
+        startTime:
+          this.screenForm.scanDate && this.screenForm.scanDate.length ? this.screenForm.scanDate[0] + ' 00:00:00' : '',
+        endTime:
+          this.screenForm.scanDate && this.screenForm.scanDate.length ? this.screenForm.scanDate[1] + ' 23:59:59' : '',
+        productName: this.screenForm.goodsName,
+        warehouse: this.screenForm.warehouse,
+        websitNumber: this.screenForm.website,
+        workerName: this.screenForm.worker,
+        verificationStartTime:
+          this.screenForm.checkDate && this.screenForm.checkDate.length
+            ? this.screenForm.checkDate[0] + ' 00:00:00'
+            : '',
+        verificationEndTime:
+          this.screenForm.checkDate && this.screenForm.checkDate.length
+            ? this.screenForm.checkDate[1] + ' 23:59:59'
+            : ''
+      }
+      getCodeList(params).then(res => {
+        this.dataList = res.data.records
+        this.listTotal = res.data.total
+        this.listLoading = false
+      })
+    },
+
+    // 更改每页数量
+    handleSizeChange(val) {
+      this.pageSize = val
+      this.currentPage = 1
+      this.getCodeList()
+    },
+
+    // 更改当前页
+    handleCurrentChange(val) {
+      this.currentPage = val
+      this.getCodeList()
+    },
+
+    // 提交筛选表单
+    submitScreenForm() {
+      this.currentPage = 1
+      this.getCodeList()
+    },
+
+    // 重置筛选表单
+    resetScreenForm() {
+      this.$refs.screenForm.resetFields()
+      this.currentPage = 1
+      this.getCodeList()
+    },
+
+    // 导出
+    handleExport() {
+      if (!this.screenForm.scanDate || this.screenForm.scanDate.length < 1) {
+        this.isOpen = true
+        return this.$errorMsg('请选择扫描时间')
+      }
+      let screenData = {
+        barCode: this.screenForm.code,
+        orderNumber: this.screenForm.orderNo,
+        salesCompany: this.screenForm.salesCompany,
+        address: this.screenForm.address,
+        startTime:
+          this.screenForm.scanDate && this.screenForm.scanDate.length ? this.screenForm.scanDate[0] + ' 00:00:00' : '',
+        endTime:
+          this.screenForm.scanDate && this.screenForm.scanDate.length ? this.screenForm.scanDate[1] + ' 23:59:59' : '',
+        productName: this.screenForm.goodsName,
+        warehouse: this.screenForm.warehouse,
+        websitNumber: this.screenForm.website,
+        workerName: this.screenForm.worker,
+        verificationStartTime:
+          this.screenForm.checkDate && this.screenForm.checkDate.length
+            ? this.screenForm.checkDate[0] + ' 00:00:00'
+            : '',
+        verificationEndTime:
+          this.screenForm.checkDate && this.screenForm.checkDate.length
+            ? this.screenForm.checkDate[1] + ' 23:59:59'
+            : ''
+      }
+      downloadFiles('externalCode/equipment/export', screenData)
+    },
+
+    // 导入
+    async handleImport_wh(param) {
+      this.importLoading_wh = true
+      const file = param.file
+      const formData = new FormData()
+      formData.append('file', file)
+      let result = await handleImport('java/code/equipmentCode/importWanHao', formData)
+      this.importLoading_wh = false
+      this.importFileList_wh = []
+      this.$importMsg(result)
+      if (result.code == 200) {
+        this.getCodeList()
+      }
+    },
+
+    // 导入
+    async handleImport_ss(param) {
+      this.importLoading_ss = true
+      const file = param.file
+      const formData = new FormData()
+      formData.append('file', file)
+      let result = await handleImport('java/code/equipmentCode/importSanShui', formData)
+      this.importLoading_ss = false
+      this.importFileList_ss = []
+      this.$importMsg(result)
+      if (result.code == 200) {
+        this.getCodeList()
+      }
+    },
+
+    // 导入
+    async handleImport_ls(param) {
+      this.importLoading_ls = true
+      const file = param.file
+      const formData = new FormData()
+      formData.append('file', file)
+      let result = await handleImport('java/code/equipmentCode/import', formData)
+      this.importLoading_ls = false
+      this.importFileList_ls = []
+      this.$importMsg(result)
+      if (result.code == 200) {
+        this.getCodeList()
+      }
+    },
+
+    // 导入
+    async handleImport_tm(param) {
+      this.importLoading_tm = true
+      const file = param.file
+      const formData = new FormData()
+      formData.append('file', file)
+      let result = await handleImport('java/code/equipmentCode/importTianMao', formData)
+      this.importLoading_tm = false
+      this.importFileList_tm = []
+      this.$importMsg(result)
+      if (result.code == 200) {
+        this.getCodeList()
+      }
+    },
+
+    // 导入
+    async handleImport_lb(param) {
+      this.importLoading_lb = true
+      const file = param.file
+      const formData = new FormData()
+      formData.append('file', file)
+      let result = await handleImport('java/code/equipmentCode/importLuBao', formData)
+      this.importLoading_lb = false
+      this.importFileList_lb = []
+      this.$importMsg(result)
+      if (result.code == 200) {
+        this.getCodeList()
+      }
+    },
+
+    // 下载导入模版
+    handleDownload_wh() {
+      downloadFiles('java/code/equipmentCode/wanhaoDownload')
+    },
+
+    // 下载导入模版
+    handleDownload_ss() {
+      downloadFiles('java/code/equipmentCode/sanshuiDownload')
+    },
+
+    // 下载导入模版
+    handleDownload_ls() {
+      downloadFiles('java/code/equipmentCode/longshangDownload')
+    },
+
+    // 下载导入模版
+    handleDownload_tm() {
+      downloadFiles('java/code/equipmentCode/tianMaoDownload')
+    },
+
+    // 下载导入模版
+    handleDownload_lb() {
+      downloadFiles('java/code/equipmentCode/luBaoDownload')
+    }
+  }
+}
+</script>

+ 167 - 0
src/views/basic_data/dailyWarehouseRent.vue

@@ -0,0 +1,167 @@
+<template>
+  <template-page
+    ref="pageRef"
+    :get-list="getList"
+    :export-list="exportList"
+    :operation="operation()"
+    :options-evens-group="optionsEvensGroup"
+    :column-parsing="columnParsing"
+    :default-search-data="searchData"
+  />
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import add_callback_mixin from '@/components/template/add_callback_mixin.js'
+
+import {
+  getStockCostListCustomer,
+  getStockCostListCustomerV2Export,
+  updateOrderFull
+} from '@/api/basic_data/dailyWarehouseRent'
+
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin, add_callback_mixin],
+  data() {
+    return {
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
+
+      detailsId: '',
+      searchData: this.$route.query.orderId
+        ? [
+          {
+            param: 'a.order_no',
+            compare: 'like',
+            value: this.$route.query.orderId || ''
+          }
+        ]
+        : this.$route.query.yearTime
+          ? [
+            {
+              param: 'a.year_time',
+              compare: 'like',
+              value: this.$route.query.yearTime
+            },
+            {
+              param: 'a.month_time',
+              compare: 'like',
+              value: this.$route.query.monthTime
+            },
+            {
+              param: 'a.customer_number',
+              compare: 'like',
+              value: this.$route.query.customerNumber
+            },
+            {
+              param: 'a.status',
+              compare: '=',
+              value: 'ENABLE'
+            }
+          ]
+          : []
+    }
+  },
+  watch: {
+    $route(val, oval) {
+      if (val && this.$route.path === '/basic_data/dailyWarehouseRent') {
+        if (this.$route.query.yearTime) {
+          this.searchData = [
+            {
+              param: 'a.year_time',
+              compare: 'like',
+              value: val.query.yearTime
+            },
+            {
+              param: 'a.month_time',
+              compare: 'like',
+              value: val.query.monthTime
+            },
+            {
+              param: 'a.customer_number',
+              compare: 'like',
+              value: val.query.customerNumber
+            },
+            {
+              param: 'a.status',
+              compare: '=',
+              value: 'ENABLE'
+            }
+          ]
+        }
+        if (this.$route.query.orderId) {
+          this.searchData = [
+            {
+              param: 'a.order_no',
+              compare: 'like',
+              value: this.$route.query.orderId
+            }
+          ]
+        }
+      }
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getStockCostListCustomer(...p)
+    },
+    // 列表导出函数
+    exportList: getStockCostListCustomerV2Export,
+    // 表格列解析渲染数据更改
+    columnParsing(_item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (_h, { row, index, column }) => {
+        return (
+          <div class='operation-btns'>
+            {this.$checkBtnRole('tichu', this.$route.meta.roles) ? (
+              <el-popconfirm
+                title='确定剔除吗?'
+                onOnConfirm={() => {
+                  updateOrderFull({ id: row.orderFullCostId }).then(res => {
+                    this.$refs.pageRef.refreshList()
+
+                    this.$successMsg('剔除成功')
+                  })
+                }}
+              >
+                <el-button slot='reference' type='text'>
+                  剔除
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+          </div>
+        )
+      }
+    },
+    handleClose() {
+      this.addOff(() => {
+        this.visible = false
+      })()
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 186 - 75
src/views/basic_data/dealer/components/dealer_list-detail.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <div class="sty">
-      <el-page-header @back="goBack" content="详情页面"></el-page-header>
+      <el-page-header content="详情" @back="goBack" />
     </div>
     <el-form :model="infoList" label-width="130px" size="small" label-position="right">
       <el-card class="">
@@ -13,218 +13,218 @@
           <el-row :gutter="20">
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="创建组织" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="客户编码" prop="">
-                <el-input v-model="infoList.number"></el-input>
+                <el-input v-model="infoList.number" />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="使用组织" prop="">
-                <el-input v-model="infoList.useOrgName"></el-input>
+                <el-input v-model="infoList.useOrgName" />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="简称" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
           </el-row>
           <!-- </el-form> -->
         </div>
       </el-card>
-      <br />
+      <br>
       <el-card class="">
         <div slot="header" class="clearfix">
           <strong>基本信息</strong>
         </div>
         <span>地址</span>
-        <el-divider></el-divider>
+        <el-divider />
         <div>
           <!-- <el-form label-width="130px" size="small" label-position="right"> -->
           <el-row :gutter="20">
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="国家" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="地区" prop="">
-                <el-input v-model="infoList.region"></el-input>
+                <el-input v-model="infoList.region" />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="省份" prop="">
-                <el-input v-model="infoList.province"></el-input>
+                <el-input v-model="infoList.province" />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="城市" prop="">
-                <el-input v-model="infoList.city"></el-input>
+                <el-input v-model="infoList.city" />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="通信地址" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="邮政编码" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="公司网址" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="商城订单对应组织" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="联系邮箱" prop="">
-                <el-input v-model="infoList.email"></el-input>
+                <el-input v-model="infoList.email" />
               </el-form-item>
             </el-col>
           </el-row>
           <!-- </el-form> -->
         </div>
         <span>管理</span>
-        <el-divider></el-divider>
+        <el-divider />
         <div>
           <!-- <el-form label-width="130px" size="small" label-position="right"> -->
           <el-row :gutter="20">
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="联系电话" prop="">
-                <el-input v-model="infoList.mobile"></el-input>
+                <el-input v-model="infoList.mobile" />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="传真" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="公司类别" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="公司性质" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="公司规模" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
           </el-row>
           <!-- </el-form> -->
         </div>
         <span>相关</span>
-        <el-divider></el-divider>
+        <el-divider />
         <div>
           <!-- <el-form label-width="130px" size="small" label-position="right"> -->
           <el-row :gutter="20">
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="对应供应商" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="对应集团客户" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="客户类别" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="客户分组" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="集团客户" prop="">
-                <el-checkbox></el-checkbox>
+                <el-checkbox />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="默认付款方" prop="">
-                <el-checkbox></el-checkbox>
+                <el-checkbox />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="不校验可发量" prop="">
-                <el-checkbox></el-checkbox>
+                <el-checkbox />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="对应组织" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="备注" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
           </el-row>
           <!-- </el-form> -->
         </div>
         <span>开票信息</span>
-        <el-divider></el-divider>
+        <el-divider />
         <div>
           <!-- <el-form label-width="130px" size="small" label-position="right"> -->
           <el-row :gutter="20">
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="发票抬头" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="纳税登记号" prop="">
-                <el-input></el-input>
+                <el-input />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="开户银行" prop="">
-                <el-input v-model="infoList.bank"></el-input>
+                <el-input v-model="infoList.bank" />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="银行账号" prop="">
-                <el-input v-model="infoList.bankAccount"></el-input>
+                <el-input v-model="infoList.bankAccount" />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="开票联系电话" prop="">
-                <el-input v-model="infoList.invoicePhone"></el-input>
+                <el-input v-model="infoList.invoicePhone" />
               </el-form-item>
             </el-col>
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="开票通讯地址" prop="">
-                <el-input v-model="infoList.invoiceAddress"></el-input>
+                <el-input v-model="infoList.invoiceAddress" />
               </el-form-item>
             </el-col>
           </el-row>
           <!-- </el-form> -->
         </div>
         <span>智慧订货</span>
-        <el-divider></el-divider>
+        <el-divider />
         <div>
           <!-- <el-form label-width="130px" size="small" label-position="right"> -->
           <el-row :gutter="20">
             <el-col :xs="24" :sm="12" :lg="6">
               <el-form-item label="允许对接智慧订单" prop="">
-                <el-checkbox></el-checkbox>
+                <el-checkbox />
               </el-form-item>
             </el-col>
           </el-row>
@@ -232,14 +232,14 @@
         </div>
       </el-card>
     </el-form>
-    <br />
+    <br>
     <el-card>
       <div slot="header" class="clearfix">
         <strong>信用额度</strong>
       </div>
       <div class="diy-table-1">
         <el-row :gutter="0" class="xyed">
-          <div v-for="(v, i) in infoList.customerWallets" :key="i" v-show="v.type == 'COMMONLY'">
+          <div v-for="(v, i) in infoList.customerWallets" v-show="v.type == 'COMMONLY'" :key="i">
             <el-col :span="12" class="item">
               <div class="label">信用额度</div>
               <div class="value">{{ v.freeCreditAmount }}</div>
@@ -252,7 +252,7 @@
         </el-row>
       </div>
     </el-card>
-    <br />
+    <br>
     <el-card>
       <div slot="header" class="clearfix">
         <strong>标签信息</strong>
@@ -285,27 +285,45 @@
           </el-row>
           <el-col>
             <el-form-item label="分子公司">
-              <el-tag class="tagStyle" v-for="v in infoList.kingDeeCustomers" :key="v.id">{{ v.name }}</el-tag>
+              <el-tag v-for="v in infoList.kingDeeCustomers" :key="v.id" class="tagStyle">{{ v.name }}</el-tag>
             </el-form-item>
           </el-col>
           <el-col>
             <el-form-item label="提货方式">
-              <el-col :span="12">
+              <div class="pick">
+                <el-row v-if="dataList.length">
+                  <el-col v-for="(item, index) in dataList" :key="index" :span="24" class="pick-item">
+                    <el-checkbox-group v-model="categoryArr">
+                      <el-col :span="6" class="pick-item-category">
+                        <el-checkbox :label="item.id">
+                          {{ item.name }}
+                        </el-checkbox>
+                      </el-col>
+                    </el-checkbox-group>
+                    <el-col :span="18" class="pick-item-way">
+                      <el-checkbox v-model="item.isFront" :label="true"> 物流配送(嘉贤物流)</el-checkbox>
+                      <el-checkbox v-model="item.isPick" :label="true">商家自提</el-checkbox>
+                    </el-col>
+                  </el-col>
+                </el-row>
+              </div>
+              <div>注:设置配送方式后提货预约可根据配置的提货方式进行选择</div>
+              <div style="margin: 20px 0">
+                <el-button type="primary" size="default" @click="onSubmit">保存</el-button>
+              </div>
+
+              <!-- <el-col :span="12">
                 <div>
-                    <el-checkbox v-model="isFront" :label="true"> 物流配送(嘉贤物流)</el-checkbox>
+                  <el-checkbox v-model="isFront" :label="true"> 物流配送(嘉贤物流)</el-checkbox>
                 </div>
                 <div>选择商家自提需配置物流产品类别</div>
                 <div>
-                  <el-checkbox-group v-model="frontCategory">
-                    <el-checkbox v-for="(item, index) in dataList" :key="index" :label="item.id">
-                      {{ item.name }}
-                    </el-checkbox>
-                  </el-checkbox-group>
+
                 </div>
               </el-col>
               <el-col :span="12">
                 <div>
-                    <el-checkbox v-model="isPick" :label="true">商家自提</el-checkbox>
+                  <el-checkbox v-model="isPick" :label="true">商家自提</el-checkbox>
                 </div>
                 <div>选择商家自提需配置自提产品类别</div>
                 <div>
@@ -319,18 +337,43 @@
               <div>注:设置配送方式后提货预约可根据配置的提货方式进行选择</div>
               <div>
                 <el-button type="primary" size="default" @click="onSubmit">保存</el-button>
-              </div>
+              </div> -->
             </el-form-item>
           </el-col>
         </el-form>
       </div>
     </el-card>
+    <br>
+    <el-card>
+      <div slot="header" class="clearfix">
+        <strong>售后系统关联信息</strong>
+      </div>
+      <!-- type="flex" justify="center" align="middle" class="" -->
+      <el-row class="flex">
+        <el-col :span="2">售后系统编号</el-col>
+        <el-col
+          :span="3"
+          style="margin: 0 20px"
+        ><el-input v-model="infoList.afterNumber" placeholder="请输入售后系统编号" size="mini" clearable />
+        </el-col>
+        <el-col :span="4">售后系统绑定状态</el-col>
+        <el-col :span="3">{{ infoList.binding === 'YES' ? '是' : '否' }}</el-col>
+        <el-col :span="3">绑定时间</el-col>
+        <el-col :span="3">{{ infoList.bindingTime }}</el-col>
+        <el-col :span="3">绑定人</el-col>
+        <el-col :span="2">{{ infoList.bindingName }}</el-col>
+      </el-row>
+      <div style="margin: 20px 0">
+        <el-button type="primary" size="default" @click="onSave">保存</el-button>
+      </div>
+      <!-- <zj-table /> -->
+    </el-card>
   </div>
 </template>
 
 <script>
 import { getKingDeeCategory } from '@/api/basic_data/material'
-import { getDealerInfo, updateCustomer, updatePick } from '@/api/basic_data/dealer'
+import { getDealerInfo, updateCustomer, updatePick, updateSystem } from '@/api/basic_data/dealer'
 
 export default {
   props: {
@@ -344,37 +387,59 @@ export default {
       infoList: {},
       dataList: [],
       radio: [],
-      isFront:false,
-      isPick:false,
+      isFront: false,
+      isPick: false,
       pickCategory: [],
-      frontCategory: []
+      frontCategory: [],
+      categoryArr: [],
+      afterNumber: ''
     }
   },
 
   async created() {
-    this.getDataList()
+    await this.getDataList()
     const res = await getDealerInfo({ id: this.detailsId })
-    this.isFront = res.data.isFront
-    this.isPick = res.data.isPick
-    if (res.data.kingDeeCustomerCategoriesFront&& res.data.kingDeeCustomerCategoriesFront.length) {
+    // this.isFront = res.data.isFront
+    // this.isPick = res.data.isPick
+    if (res.data.kingDeeCustomerCategoriesFront && res.data.kingDeeCustomerCategoriesFront.length) {
       this.frontCategory = res.data.kingDeeCustomerCategoriesFront.map(k => {
         return k.categoryId
       })
     }
-    if (res.data.kingDeeCustomerCategories&& res.data.kingDeeCustomerCategories.length) {
+    if (res.data.kingDeeCustomerCategories && res.data.kingDeeCustomerCategories.length) {
       this.pickCategory = res.data.kingDeeCustomerCategories.map(k => {
         return k.categoryId
       })
     }
+    this.frontCategory.forEach(k => {
+      this.dataList.forEach(i => {
+        if (i.id === k) {
+          i.isFront = true
+        }
+      })
+    })
+    this.pickCategory.forEach(k => {
+      this.dataList.forEach(i => {
+        if (i.id === k) {
+          i.isPick = true
+        }
+      })
+    })
+    this.categoryArr = [...new Set([...this.frontCategory, ...this.pickCategory])]
     this.infoList = res.data
+    // this.afterNumber = this.infoList.afterNumber
   },
   methods: {
     goBack() {
       this.$emit('close')
     },
-    //金蝶存货类别列表
+    // 金蝶存货类别列表
     async getDataList() {
       const res = await getKingDeeCategory()
+      res.data.forEach(k => {
+        k.isFront = false
+        k.isPick = false
+      })
       this.dataList = res.data
     },
 
@@ -387,25 +452,52 @@ export default {
       })
     },
     onSubmit() {
-      if (!this.isFront && !this.isPick) {
-        this.$errorMsg('必须选择一种提货方式')
-        return
-      }
-      if ((this.isFront && !this.frontCategory.length) || (this.isPick && !this.pickCategory.length)) {
+      this.pickCategory = []
+      this.frontCategory = []
+      if (this.categoryArr.length) {
+        for (let i = 0; i < this.dataList.length; i++) {
+          const item = this.dataList[i]
+          for (let j = 0; j < this.categoryArr.length; j++) {
+            const category = this.categoryArr[j]
+            if (category === item.id) {
+              if (item.isFront) {
+                this.frontCategory.push(category)
+              }
+              if (item.isPick) {
+                this.pickCategory.push(category)
+              }
+            }
+          }
+        }
+      } else {
         this.$errorMsg('必须选择产品类别')
         return
       }
- 
+
       updatePick({
         id: this.detailsId,
-        isFront: this.isFront?this.isFront:false,
-        isPick: this.isPick?this.isPick:false,
-        pickCategory:this.isPick? this.pickCategory.join(','):'',
-        frontCategory:this.isFront? this.frontCategory.join(','):''
+        isFront: !!this.frontCategory.length,
+        isPick: !!this.pickCategory.length,
+        pickCategory: this.pickCategory.length ? this.pickCategory.join(',') : '',
+        frontCategory: this.frontCategory.length ? this.frontCategory.join(',') : ''
       }).then(res => {
         this.$successMsg('保存成功')
         this.$emit('close')
       })
+    },
+    onSave() {
+      updateSystem({
+        id: this.detailsId,
+        afterNumber: this.infoList.afterNumber
+      }).then(res => {
+        getDealerInfo({ id: this.detailsId }).then(res => {
+          const { afterType, bindingTime, bindingName } = res.data
+          this.infoList.afterType = afterType
+          this.infoList.bindingTime = bindingTime
+          this.infoList.bindingName = bindingName
+          this.$successMsg('保存成功')
+        })
+      })
     }
   }
 }
@@ -427,7 +519,26 @@ export default {
     }
   }
 }
-
+.pick {
+  width: 600px;
+  border: 1px solid #ebeef5;
+  border-bottom: none;
+  &-item {
+    height: 40px;
+    border-bottom: 1px solid #ebeef5;
+    &-category {
+      border-right: 1px solid #ebeef5;
+    }
+    &-category,
+    &-way {
+      padding: 0 20px;
+    }
+  }
+}
+.flex {
+  display: flex;
+  align-items: center;
+}
 .tagStyle {
   margin: 0 18px;
 }

+ 45 - 12
src/views/basic_data/dealer/dealer_list.vue

@@ -1,14 +1,14 @@
 <template>
   <template-page
     ref="pageRef"
-    :getList="getList"
-    :exportList="exportList"
+    :get-list="getList"
+    :export-list="exportList"
     :operation="operation()"
-    :optionsEvensGroup="optionsEvensGroup"
-    :columnParsing="columnParsing"
+    :options-evens-group="optionsEvensGroup"
+    :column-parsing="columnParsing"
   >
     <Popu v-if="visible">
-      <DealerListDetail :detailsId="detailsId" @close="handleClose" />
+      <DealerListDetail :details-id="detailsId" @close="handleClose" />
     </Popu>
   </template-page>
 </template>
@@ -18,7 +18,9 @@ import TemplatePage from '@/components/template/template-page-1.vue'
 import import_mixin from '@/components/template/import_mixin.js'
 import add_callback_mixin from '@/components/template/add_callback_mixin.js'
 import Popu from '@/components/template/popu.vue'
-import { getDealerListV2, exportDealerListV2,importCustomerV2 } from '@/api/basic_data/dealer'
+
+import { getDealerListV2, exportDealerListV2, importCustomerV2, exportJiaXianV2 } from '@/api/basic_data/dealer'
+
 import DealerListDetail from './components/dealer_list-detail.vue'
 export default {
   components: { TemplatePage, Popu, DealerListDetail },
@@ -28,7 +30,7 @@ export default {
       visible: false,
       // 事件组合
       optionsEvensGroup: [
-       [
+        [
           [
             {
               name: '导入',
@@ -36,6 +38,37 @@ export default {
             }
           ]
         ],
+        [
+          [
+            {
+              name: '导出提贷物流存货类别',
+              click: (p) => {
+                const loading = this.$loading({
+                  lock: true,
+                  text: 'Loading',
+                  spinner: 'el-icon-loading',
+                  background: 'rgba(0, 0, 0, 0.7)'
+                })
+                exportJiaXianV2({
+                  pageNum: 1,
+                  pageSize: -1,
+                  params: this.$refs.pageRef.getParams().querylist
+                }, `${this.$route.meta.title}`)
+                  .then(_res => {
+                    this.$message({
+                      message: '导出成功',
+                      type: 'success'
+                    })
+                  })
+                  .catch(_err => {
+
+                  }).finally(() => loading.close()
+                  )
+              }
+            }
+          ]
+
+        ]
       ],
       // 表格属性
       tableAttributes: {
@@ -61,7 +94,7 @@ export default {
     // 列表导出函数
     exportList: exportDealerListV2,
     // 表格列解析渲染数据更改
-    columnParsing(item, defaultData) {
+    columnParsing(_item, defaultData) {
       return defaultData
     },
     // 监听勾选变化
@@ -69,12 +102,12 @@ export default {
       this.recordSelected = data
     },
     operation() {
-      return (h, { row, index, column }) => {
+      return (_h, { row, index, column }) => {
         return (
-          <div class="operation-btns">
+          <div class='operation-btns'>
             <el-button
-              size="mini"
-              type="text"
+              size='mini'
+              type='text'
               onClick={ () => {
                 this.visible = true
                 this.detailsId = row.id

+ 83 - 0
src/views/basic_data/fullCargo.vue

@@ -0,0 +1,83 @@
+<template>
+  <template-page
+    ref="pageRef"
+    :get-list="getList"
+    :options-evens-group="optionsEvensGroup"
+    :column-parsing="columnParsing"
+  />
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import add_callback_mixin from '@/components/template/add_callback_mixin.js'
+import { getStockCostListFullDate, getStockCostListFullDateV2Export } from '@/api/basic_data/fullCargo'
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin, add_callback_mixin],
+  data() {
+    return {
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '月账单更新',
+              click: () => {
+                this.$refs.pageRef.refreshList()
+              }
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
+
+      detailsId: ''
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getStockCostListFullDate(...p)
+    },
+    // 列表导出函数
+    exportList: getStockCostListFullDateV2Export,
+    // 表格列解析渲染数据更改
+    columnParsing(_item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (_h, { row, index, column }) => {
+        return (
+          <div class='operation-btns'>
+
+          </div>
+        )
+      }
+    },
+    handleClose() {
+      this.addOff(() => {
+        this.visible = false
+      })()
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 18 - 3
src/views/basic_data/material/modify_list.vue

@@ -35,7 +35,7 @@ import {
   getPriceSubmit,
   getProductRricedel,
   getProductRriceDetail,
-  getProductRriceList,
+  productUpdPriceReview,
   getTypeList,
   examineData,
   v2ProductUpdPriceList,
@@ -266,7 +266,6 @@ export default {
     },
     operation() {
       return (h, { row, index, column }) => {
-        console.log(row)
         return (
           <div class="operation-btns">
             {row.examineStatus == '保存' ? (
@@ -312,7 +311,23 @@ export default {
             ) : (
               ''
             )}
-
+            {row.examineStatus == '审核通过' ? (
+              <el-popconfirm
+                onOnConfirm={async() => {
+                  productUpdPriceReview({ id: row.updPriceBillId }).then(() => {
+                    this.$successMsg('弃审成功')
+                    this.$refs.pageRef.refreshList()
+                  })
+                }}
+                title='是否确定需要审批该项内容?'
+              >
+                <el-button slot='reference' size='mini' type='text'>
+                  弃审
+                </el-button>
+              </el-popconfirm>
+            ) : (
+              ''
+            )}
             <el-button
               size="mini"
               type="text"

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません