Browse Source

Merge branch '11_3_week'

zhouhao 2 years ago
parent
commit
6fb50a76a2
100 changed files with 9129 additions and 305 deletions
  1. 410 16
      package-lock.json
  2. 1 0
      package.json
  3. 18 1
      src/api/basic_data/dealer.js
  4. 9 0
      src/api/engin_deposit/refund_list.js
  5. 142 0
      src/api/sales.js
  6. 113 3
      src/api/stock.js
  7. 9 0
      src/api/supply/engin.js
  8. 13 3
      src/components/Common/image-upload.vue
  9. 92 0
      src/components/ReturnSalesHeader/ReturnSalesHeader.vue
  10. 13 0
      src/components/ReturnSalesTable/ReturnSalesTable.vue
  11. 423 0
      src/components/SalesDialog/SalesDialog.vue
  12. 282 0
      src/components/SalesHeader/SalesHeader.vue
  13. 163 0
      src/components/SalesTable/SalesTable.vue
  14. 147 0
      src/components/WarehousingHeader/WarehousingHeader.vue
  15. 34 0
      src/components/template/import_mixin.js
  16. 49 0
      src/components/template/operation_mixin.js
  17. 118 0
      src/components/template/sel-export-column-list.vue
  18. 342 0
      src/components/template/template-page-1.vue
  19. 1 1
      src/layout/index.vue
  20. 4 1
      src/main.js
  21. 1 1
      src/store/modules/user.js
  22. 1 1
      src/utils/panel.js
  23. 98 2
      src/utils/request.js
  24. 44 10
      src/views/basic_data/dealer/components/dealer_list-detail.vue
  25. 8 5
      src/views/basic_data/dealer/dealer_list.vue
  26. 2 0
      src/views/basic_data/stock/Issue_list.vue
  27. 1 0
      src/views/basic_data/stock/material_list.vue
  28. 6 0
      src/views/basic_data/stock/stock_fee_list.vue
  29. 378 0
      src/views/basic_data/stock/tableData.js
  30. 1 0
      src/views/basic_data/stock/warehousing_list.vue
  31. 1 1
      src/views/deposit_commerce/components/deposit-apply-deduction.vue
  32. 4 4
      src/views/deposit_commerce/components/deposit-apply-surrender.vue
  33. 4 4
      src/views/deposit_commerce/components/deposit_list-detail.vue
  34. 6 6
      src/views/deposit_commerce/components/refund_list-detail.vue
  35. 20 2
      src/views/deposit_commerce/deposit_list.vue
  36. 45 20
      src/views/deposit_commerce/refund_list.vue
  37. 1 1
      src/views/deposit_home/components/deposit-apply-deduction.vue
  38. 4 4
      src/views/deposit_home/components/deposit-apply-surrender.vue
  39. 4 4
      src/views/deposit_home/components/deposit_list-detail.vue
  40. 5 5
      src/views/deposit_home/components/refund_list-detail.vue
  41. 21 3
      src/views/deposit_home/deposit_list.vue
  42. 119 150
      src/views/deposit_home/refund_list.vue
  43. 1 1
      src/views/engin_deposit/components/deposit-apply-deduction.vue
  44. 1 1
      src/views/engin_deposit/components/deposit-apply-surrender.vue
  45. 1 1
      src/views/engin_deposit/components/deposit_list-detail.vue
  46. 2 2
      src/views/engin_deposit/components/refund_list-detail.vue
  47. 2 2
      src/views/engin_deposit/deposit_list.vue
  48. 2 2
      src/views/engin_deposit/refund_list.vue
  49. 38 4
      src/views/finance/change_apply.vue
  50. 1 0
      src/views/finance/components/balance_sum-detail.vue
  51. 6 0
      src/views/finance/components/rebate_list-confirm.vue
  52. 14 1
      src/views/finance/rebate_list.vue
  53. 22 17
      src/views/finance/receipt_list.vue
  54. 190 14
      src/views/finance/receivable_list.vue
  55. 1 1
      src/views/finance/wallet.vue
  56. 1 0
      src/views/notice/index.vue
  57. 11 0
      src/views/sales/sales_management.vue
  58. 170 0
      src/views/sales_control/adjust_warehouse.vue
  59. 118 0
      src/views/sales_control/components/WarehouseDetails.vue
  60. 141 0
      src/views/sales_control/components/WarehouseExamine.vue
  61. 203 0
      src/views/sales_control/components/WarehouseForm.vue
  62. 112 0
      src/views/sales_control/customer_warehouse.vue
  63. 112 0
      src/views/sales_control/preposition_stock_list.vue
  64. 244 0
      src/views/sales_control/sales_management/components/customer_sales_details.vue
  65. 353 0
      src/views/sales_control/sales_management/components/customer_sales_form.vue
  66. 155 0
      src/views/sales_control/sales_management/components/return_sales_details.vue
  67. 358 0
      src/views/sales_control/sales_management/components/return_sales_form.vue
  68. 118 0
      src/views/sales_control/sales_management/components/sel-export-column-list.vue
  69. 378 0
      src/views/sales_control/sales_management/components/tableData.js
  70. 199 0
      src/views/sales_control/sales_management/customer_sales_list.vue
  71. 164 0
      src/views/sales_control/sales_management/return_sales_list.vue
  72. 112 0
      src/views/sales_control/stock_three_level.vue
  73. 17 0
      src/views/sales_policy/components/AddPolicy.vue
  74. 6 0
      src/views/sales_policy/components/TabelTransfer.vue
  75. 16 0
      src/views/sales_policy/components/editPolicy.vue
  76. 12 6
      src/views/sales_rebate/rebate_list.vue
  77. 2 2
      src/views/setting/account.vue
  78. 2 0
      src/views/setting/components/log-examine.vue
  79. 1 0
      src/views/setting/components/log-login.vue
  80. 1 0
      src/views/setting/components/log-operation.vue
  81. 7 0
      src/views/stock/stock_list.vue
  82. 167 0
      src/views/stock_control/adjust_warehouse.vue
  83. 115 0
      src/views/stock_control/components/WarehouseDetails.vue
  84. 138 0
      src/views/stock_control/components/WarehouseExamine.vue
  85. 151 0
      src/views/stock_control/components/WarehouseForm.vue
  86. 112 0
      src/views/stock_control/customer_warehouse.vue
  87. 112 0
      src/views/stock_control/preposition_stock_list.vue
  88. 246 0
      src/views/stock_control/sales_management/components/customer_sales_details.vue
  89. 231 0
      src/views/stock_control/sales_management/components/customer_sales_form.vue
  90. 173 0
      src/views/stock_control/sales_management/components/return_sales_details.vue
  91. 235 0
      src/views/stock_control/sales_management/components/return_sales_form.vue
  92. 118 0
      src/views/stock_control/sales_management/components/sel-export-column-list.vue
  93. 378 0
      src/views/stock_control/sales_management/components/tableData.js
  94. 191 0
      src/views/stock_control/sales_management/customer_sales_list.vue
  95. 180 0
      src/views/stock_control/sales_management/return_sales_list.vue
  96. 112 0
      src/views/stock_control/stock_three_level.vue
  97. 1 0
      src/views/supply/adjust/adjust_list.vue
  98. 2 1
      src/views/supply/allot/allot_list.vue
  99. 14 2
      src/views/supply/apply/apply_list.vue
  100. 2 0
      src/views/supply/apply/components/apply_return_form.vue

File diff suppressed because it is too large
+ 410 - 16
package-lock.json


+ 1 - 0
package.json

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

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

@@ -1,4 +1,4 @@
-import request from '@/utils/request'
+import request, { handleImport, postBlob } from '@/utils/request'
 
 //获取经销商列表
 export function getDealerList(params) {
@@ -16,7 +16,15 @@ export function getDealerInfo(params) {
     params
   })
 }
+// 基础上设置前置仓或商家仓
 
+export function updateCustomer(params) {
+  return request({
+    url: '/customer/update',
+    method: 'post',
+    params
+  })
+}
 //经销商客户存货分类列表
 export function getDealerStockList(params) {
   return request({
@@ -171,3 +179,12 @@ export function getK3DepartmentList(params) {
     params
   })
 }
+
+// 客户销售单导出
+export function importCustomer(data, name) {
+  return handleImport({
+    url: '/customer/import',
+    data,
+    name
+  })
+}

+ 9 - 0
src/api/engin_deposit/refund_list.js

@@ -81,3 +81,12 @@ export function secondRefund(params) {
     data: params
   })
 }
+
+// 工程订单列表统计
+export function getDepositCountList(params) {
+  return request({
+    url: '/deposit-manage/count-list',
+    method: 'get',
+    params
+  })
+}

+ 142 - 0
src/api/sales.js

@@ -0,0 +1,142 @@
+import request, { postBlob } from '@/utils/request'
+
+// 客户销售单
+export function getFrontOrderList(params) {
+  return request({
+    url: '/customer/frontOrder/list',
+    method: 'post',
+    data: params
+  })
+}
+
+// 客户销售单导出
+export function exportCustomerFrontOrder(data, name) {
+  return postBlob({
+    url: '/customer/frontOrder/list/export',
+    data,
+    name
+  })
+}
+
+// 客户销售单
+export function getFrontOrderListRefund(params) {
+  return request({
+    url: '/customer/frontOrder/listRefund',
+    method: 'post',
+    data: params
+  })
+}
+
+// 客户退货单导出
+export function exportRefund(data, name) {
+  return postBlob({
+    url: '/customer/frontOrder/list/exportRefund',
+    data,
+    name
+  })
+}
+
+///customer/frontOrder/add 新增客户销售单
+
+export function addFrontOrder(params) {
+  return request({
+    url: '/customer/frontOrder/add',
+    method: 'post',
+    data: params
+  })
+}
+export function addRefund(params) {
+  return request({
+    url: '/customer/frontOrder/addRefund',
+    method: 'post',
+    data: params
+  })
+}
+export function getFrontOrderDetail(params) {
+  return request({
+    url: '/customer/frontOrder/detail',
+    method: 'get',
+    params
+  })
+}
+
+export function getRegion(params) {
+  return request({
+    url: '/common/region/list',
+    method: 'get',
+    params
+  })
+}
+
+export function sbumitFrontOrder(params) {
+  return request({
+    url: '/customer/frontOrder/send',
+    method: 'post',
+    params
+  })
+}
+
+export function delFrontOrder(params) {
+  return request({
+    url: '/customer/frontOrder/delete',
+    method: 'post',
+    params
+  })
+}
+
+export function delDeleteRefund(params) {
+  return request({
+    url: '/customer/frontOrder/deleteRefund',
+    method: 'post',
+    params
+  })
+}
+
+// 修改客户销售单
+export function updateFrontOrder(params) {
+  return request({
+    url: '/customer/frontOrder/update',
+    method: 'post',
+    data: params
+  })
+}
+
+// 修改客户退货单
+export function updateRefund(params) {
+  return request({
+    url: '/customer/frontOrder/updateRefund',
+    method: 'post',
+    data: params
+  })
+}
+
+export function sendRefund(params) {
+  return request({
+    url: '/customer/frontOrder/sendRefund',
+    method: 'post',
+    params
+  })
+}
+
+export function detailRefund(params) {
+  return request({
+    url: '/customer/frontOrder/detailRefund',
+    method: 'get',
+    params
+  })
+}
+
+export function signIn(params) {
+  return request({
+    url: '/customer/frontOrder/signIn',
+    method: 'post',
+    params
+  })
+}
+export function listOrder(params) {
+  return request({
+    url: '/customer/frontOrder/listOrder',
+    method: 'post',
+    data: params
+  })
+}

+ 113 - 3
src/api/stock.js

@@ -1,4 +1,4 @@
-import request from '@/utils/request'
+import request, { postBlob } from '@/utils/request'
 
 // 获取库存列表
 export function getStockList(params) {
@@ -44,6 +44,7 @@ export function getListStockToDayCustomer(params) {
     params
   })
 }
+
 // 获取预留库存列表
 export function getReservedList(params) {
   return request({
@@ -62,7 +63,7 @@ export function getListStockToDay(params) {
   })
 }
 
-//库存到货访问通知-列表
+// 库存到货访问通知-列表
 export function getNoticeList(params) {
   return request({
     url: '/stock/visit/list',
@@ -71,7 +72,7 @@ export function getNoticeList(params) {
   })
 }
 
-//库存到货访问通知-数量
+// 库存到货访问通知-数量
 export function getNoticeNum(params) {
   return request({
     url: '/stock/visit/count',
@@ -79,3 +80,112 @@ export function getNoticeNum(params) {
     params
   })
 }
+
+// 经销商仓库库存列表(前置)
+export function getcustomerFrontList(params) {
+  return request({
+    url: '/customer/front/list',
+    method: 'post',
+    data: params
+  })
+}
+
+// 经销商仓库库存导出(前置)
+export function partsNewInExport(data, name) {
+  return postBlob({
+    url: '/customer/front/list/export',
+    data,
+    name
+  })
+}
+
+// 经销商仓库库存列表(商家)
+export function getFrontListCustomer(params) {
+  return request({
+    url: '/customer/front/listCustomer',
+    method: 'post',
+    data: params
+  })
+}
+
+// 经销商仓库库存导出(商家)
+
+export function exportCustomer(data, name) {
+  return postBlob({
+    url: '/customer/front/list/exportCustomer',
+    data,
+    name
+  })
+}
+
+// 库存调整管理
+export function getFrontListCustomerAcc(params) {
+  return request({
+    url: '/customer/front/listCustomerAcc',
+    method: 'post',
+    data: params
+  })
+}
+
+// 经销商仓库库存导出(商家)
+export function exportCustomerStockOrderBean(data, name) {
+  return postBlob({
+    url: '/customer/front/list/exportCustomerStockOrderBean',
+    data,
+    name
+  })
+}
+
+// 库存调整管理三级帐
+export function getFrontListStockAcc(params) {
+  return request({
+    url: '/customer/front/listStockAcc',
+    method: 'post',
+    data: params
+  })
+}
+
+// 经销商三级帐
+export function exportListStockAcc(data, name) {
+  return postBlob({
+    url: '/customer/front/listStockAcc/exportListStockAcc',
+    data,
+    name
+  })
+}
+
+// 新增库存调整
+export function addCustomerStockOrder(params) {
+  return request({
+    url: '/customer/front/addCustomerStockOrder',
+    method: 'post',
+    data: params
+  })
+}
+
+// 审批库存调整
+export function approvalCustomerStockOrder(params) {
+  return request({
+    url: '/customer/front/approvalCustomerStockOrder',
+    method: 'post',
+    data: params
+  })
+}
+
+// 库存调整详情
+export function getFrontDetail(params) {
+  return request({
+    url: '/customer/front/detail',
+    method: 'get',
+    params
+  })
+}
+
+// 库存调整详情
+export function deleteCustomerStockOrder(params) {
+  return request({
+    url: '/customer/front/deleteCustomerStockOrder',
+    method: 'post',
+    data: params
+  })
+}

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

@@ -494,3 +494,12 @@ export function delItem(params) {
     params
   })
 }
+
+// 工程订单列表统计
+export function getEnginCountList(params) {
+  return request({
+    url: '/engin-order/count-list',
+    method: 'get',
+    params
+  })
+}

+ 13 - 3
src/components/Common/image-upload.vue

@@ -5,7 +5,6 @@
       :action="oss_url"
       :data="dataObj"
       :multiple="multiple"
-      :limit="limit"
       name="file"
       :accept="accept"
       :show-file-list="false"
@@ -39,9 +38,17 @@
           </div>
         </div>
       </div>
-      <div v-if="multiple|| (!multiple && fileList.length < 1) " class="add" @click="uploadImage()">
-        <i class="el-icon-plus" />
+      <div v-if="limit">
+        <div v-if="limit !==fileList.length" class="add" @click="uploadImage()">
+          <i class="el-icon-plus" />
+        </div>
+      </div>
+      <div v-else>
+        <div v-if="multiple  || (!multiple && fileList.length < 1) " class="add" @click="uploadImage()">
+          <i class="el-icon-plus" />
+        </div>
       </div>
+
     </div>
   </div>
 </template>
@@ -198,8 +205,10 @@ export default {
 
     // 删除图片
     deleteImage(url) {
+
       const index = findElem(this.fileList, 'url', url)
       this.fileList.splice(index, 1)
+      console.log(this.fileList)
     },
 
     // 点击上传
@@ -210,6 +219,7 @@ export default {
 
     // 上传文件之前
     async beforeUpload(file) {
+
       const loading = this.$loading({
         lock: true,
         text: 'Loading',

+ 92 - 0
src/components/ReturnSalesHeader/ReturnSalesHeader.vue

@@ -0,0 +1,92 @@
+<template>
+  <div class="sales">
+    <div class="diy-table-1">
+      <el-row>
+        <el-col :span="8" class="item">
+          <div class="label">销售订单号</div>
+          <div class="value" style="padding: 0">
+            <el-input disabled v-model="details.customerOrderNo" placeholder="引用销售单"></el-input>
+          </div>
+        </el-col>
+        <el-col :span="16" class="item" v-if="details.detailsId">
+          <div class="label">退货订单号</div>
+          <div class="value">{{ details.id }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">商家编号</div>
+          <div class="value">{{ details.customerNumber }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">商家名称</div>
+          <div class="value">{{ details.customerName }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">配送日期</div>
+          <div class="value">{{ details.pickTime }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">用户名称</div>
+          <div class="value">{{ details.userName }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">用户电话</div>
+          <div class="value">{{ details.phone }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">备注</div>
+          <div class="value">{{ details.notes }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">地址</div>
+          <div class="value">{{ details.receAddress }}</div>
+        </el-col>
+        <el-col :span="8" class="item">
+          <div class="label">发货仓库编码</div>
+          <div class="value"></div>
+        </el-col>
+        <el-col :span="details.id?8:24" class="item">
+          <div class="label">发货仓库名称</div>
+          <div class="value">{{ storeObj[details.stockType] || '' }}</div>
+        </el-col>
+        <el-col :span="24" class="item">
+          <div class="label">退货备注</div>
+          <div class="value">{{ details.refundRemark }}</div>
+        </el-col>
+      </el-row>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'ReturnSalesHeader',
+  props: {
+    details: {
+      type: Object,
+      default: () => {
+        return {}
+      }
+    }
+  },
+  data() {
+    return {
+      storeObj: {
+        1: '前置仓', 2: '商家仓'
+      }
+    }
+  },
+  methods: {
+    aa() {
+
+    }
+  }
+}
+</script>
+
+<style scoped>
+.sales {
+  margin: 20px;
+  padding: 20px;
+  box-shadow: 0 0 8px 0 rgb(0 0 0 / 20%);
+}
+</style>

+ 13 - 0
src/components/ReturnSalesTable/ReturnSalesTable.vue

@@ -0,0 +1,13 @@
+<template>
+  <div></div>
+</template>
+
+<script>
+export default {
+  name: 'ReturnSalesTable'
+}
+</script>
+
+<style scoped>
+
+</style>

+ 423 - 0
src/components/SalesDialog/SalesDialog.vue

@@ -0,0 +1,423 @@
+<template>
+  <div>
+    <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>
+      <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-dialog>
+  </div>
+</template>
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin],
+  props: {
+    dialogVisible: false,
+    func: Function,
+    customerNumber:String,
+    returnId:String,
+    itemId:String
+  },
+  data() {
+    return {
+      pageType: 0,
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          // [
+          //   {
+          //     name: '批量删除',
+          //     click: this.dels,
+          //     // isRole: this.$checkBtnRole('del', this.$route.meta.roles)
+          //   }
+          // ],
+          [
+            {
+              name: '审核',
+              click: this.examineWarehouse
+            }
+          ]
+        ],
+        [
+          [
+            {
+              name: '库存调整',
+              click: this.addWarehouse
+              // isRole: this.$checkBtnRole('add', this.$route.meta.roles)
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true,
+        selectable:this.selectable
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return this.func(p)
+    },
+    // 列表导出函数
+    // exportList: exportCustomerStockOrderBean,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+
+
+      this.recordSelected = data
+    },
+    addWarehouse() {
+      this.pageType = 1
+    },
+    examineWarehouse() {
+      this.pageType = 2
+    },
+    detailsWarehouse() {
+      this.pageType = 3
+    },
+    onClose(){
+      this.$parent.dialogVisible = false
+
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            (
+            <el-button
+              size="mini"
+              type="primary"
+              onClick={() => {
+              }}
+            >
+              查看
+            </el-button>
+            ) }
+            (
+            <el-button
+              size="mini"
+              type="primary"
+              onClick={() => {
+              }}
+            >
+              审批
+            </el-button>
+            ) }
+            {(
+              <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{
+        this.$errorMsg('请选择产品')
+      }
+      // this.$parent.dialogVisible = false
+    },
+    selectable(row,index){
+      if (this.customerNumber){
+        if (row.customerNumber == this.customerNumber && row.disabled){
+          return true
+        }else{
+          return  false
+        }
+      }else if(this.returnId){
+        if (row.id == this.returnId && row.disabled){
+          return true
+
+        }else{
+          return  false
+        }
+      }
+      else {
+        return  true
+      }
+
+    }
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 600px !important;
+}
+
+::v-deep .page-button-collection {
+  display: none;
+}
+</style>
+<!--<template>-->
+<!--  <div>-->
+<!--    <el-dialog-->
+<!--      title="添加产品"-->
+<!--      :visible.sync="dialogVisible"-->
+<!--      width="75%"-->
+<!--      :before-close="handleClose"-->
+<!--    >-->
+<!--      <div>-->
+<!--        <el-form label-position="left" label-width="80px" :model="screenForm">-->
+<!--          <el-form-item label="名称">-->
+<!--            <el-input v-model="screenForm.name"></el-input>-->
+<!--          </el-form-item>-->
+<!--          <el-form-item label="活动区域">-->
+<!--            <el-input v-model="screenForm.region"></el-input>-->
+<!--          </el-form-item>-->
+<!--          <el-form-item label="活动形式">-->
+<!--            <el-input v-model="screenForm.type"></el-input>-->
+<!--          </el-form-item>-->
+<!--        </el-form>-->
+<!--      </div>-->
+<!--      <div>-->
+<!--        <el-table-->
+<!--          :data="dataList"-->
+<!--          style="width: 100%"-->
+<!--          v-bind="tableAttributes"-->
+<!--        >-->
+<!--          <el-table-column-->
+<!--            v-if="isSelection"-->
+<!--            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"-->
+<!--            v-bind="{...item,...columnAttributes}"-->
+<!--          >-->
+<!--            <template v-slot="{row}">-->
+<!--              <template v-if="item.isInput">-->
+<!--                {{ row.prop }}-->
+<!--              </template>-->
+<!--              <template v-else>-->
+<!--                <el-input-->
+<!--                  v-model.number="row.prop"-->
+<!--                  class="yinput"-->
+<!--                  :type="item.type?item.type:'number'"-->
+<!--                  :placeholder="item.placeholder"-->
+<!--                  size="mini"-->
+<!--                  @mousewheel.native.prevent-->
+<!--                />-->
+<!--              </template>-->
+<!--            </template>-->
+<!--          </el-table-column>-->
+<!--          <el-table-column v-if="isOperation" fixed="left" label="操作" min-width="250" align="center">-->
+<!--            <slot>-->
+<!--              <template v-slot="{row}">-->
+<!--                <el-popconfirm-->
+<!--                  style="margin-left: 10px"-->
+<!--                  title="删除?"-->
+<!--                  @onConfirm="handleDel(row)"-->
+<!--                >-->
+<!--                  <el-button slot="reference" type="text" size="mini">提审</el-button>-->
+<!--                </el-popconfirm>-->
+<!--              </template>-->
+<!--            </slot>-->
+<!--          </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>-->
+
+<!--    </el-dialog>-->
+<!--  </div>-->
+<!--</template>-->
+
+<!--<script>-->
+<!--export default {-->
+<!--  name: 'SalesDialog',-->
+<!--  props: {-->
+<!--    isShow: {-->
+<!--      type: Boolean,-->
+<!--      default: false-->
+<!--    },-->
+<!--    screenForm: {-->
+<!--      type: Object,-->
+<!--      default: () => {-->
+<!--        return {}-->
+<!--      }-->
+<!--    },-->
+<!--    isSelection: {-->
+<!--      type: Boolean,-->
+<!--      default: false-->
+<!--    },-->
+<!--    isIndex: {-->
+<!--      type: Boolean,-->
+<!--      default: false-->
+<!--    },-->
+<!--    isOperation: {-->
+<!--      type: Boolean,-->
+<!--      default: false-->
+<!--    },-->
+<!--    tableAttributes: {-->
+<!--      type: Object,-->
+<!--      default: () => {-->
+<!--        return {}-->
+<!--      }-->
+<!--    },-->
+<!--    columnAttributes: {-->
+<!--      type: Object,-->
+<!--      default: () => {-->
+<!--        return {}-->
+<!--      }-->
+<!--    },-->
+<!--    dataList: {-->
+<!--      type: Array,-->
+<!--      default: () => {-->
+<!--        return []-->
+<!--      }-->
+<!--    }-->
+<!--  },-->
+<!--  data() {-->
+<!--    return {-->
+<!--      dialogVisible: false,-->
+<!--      column: [-->
+<!--        {-->
+<!--          prop: 'date',-->
+<!--          label: '日期'-->
+<!--        },-->
+<!--        {-->
+<!--          prop: 'date',-->
+<!--          label: '日期'-->
+
+<!--        },-->
+<!--        {-->
+<!--          prop: 'date',-->
+<!--          label: '日期'-->
+
+<!--        }-->
+<!--      ],-->
+<!--      currentPage: 1,-->
+<!--      listTotal: 0-->
+<!--    }-->
+<!--  },-->
+<!--  created() {-->
+<!--    this.dialogVisible = this.isShow-->
+<!--  },-->
+<!--  methods: {-->
+<!--    handleClose(done) {-->
+<!--      this.$confirm('确认关闭?')-->
+<!--        .then(_ => {-->
+<!--          done()-->
+<!--        })-->
+<!--        .catch(_ => {-->
+<!--        })-->
+<!--    },-->
+<!--    handleDel(row) {-->
+<!--      console.log(row)-->
+<!--    },-->
+<!--    handleSizeChange() {-->
+
+<!--    },-->
+<!--    handleCurrentChange() {-->
+
+<!--    }-->
+<!--  }-->
+<!--}-->
+<!--</script>-->
+
+<!--<style scoped>-->
+
+<!--</style>-->

+ 282 - 0
src/components/SalesHeader/SalesHeader.vue

@@ -0,0 +1,282 @@
+<template>
+  <div class="sales">
+    <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-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-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-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"
+              type="datetime"
+              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="stockType">
+            <el-select disabled v-model="screenForm.stockType" placeholder="请选择" clearable>
+              <el-option
+                label="前置仓"
+                :value="1"
+              />
+              <el-option
+                label="商家仓"
+                :value="2"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :ms="6" :lg="6">
+          <el-form-item label="用户名称" prop="userName">
+            <el-input v-model="screenForm.userName" placeholder="用户名称" size="mini" />
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :ms="6" :lg="6">
+          <el-form-item label="用户电话" prop="phone">
+            <el-input v-model="screenForm.phone" placeholder="用户电话" size="mini" />
+          </el-form-item>
+        </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-option v-for="item in provinceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            </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>
+          </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>
+          </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>
+
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :ms="6" :lg="6">
+          <el-form-item label="送货地址" prop="receAddress">
+            <el-input v-model="screenForm.receAddress" placeholder="送货地址" size="mini" />
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :ms="24" :lg="24">
+          <el-form-item label="备注" prop="notes">
+            <el-input v-model="screenForm.notes" placeholder="备注" size="mini" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+  </div>
+</template>
+
+<script>
+import { getRegion } from '@/api/sales'
+
+export default {
+  name: 'SalesHeader',
+  data() {
+    return {
+      screenForm: {
+        id: '',
+        city: '',
+        area: '',
+        province: '',
+        street: '',
+        cityId: '',
+        areaId: '',
+        provinceId: '',
+        streetId: '',
+        customerNumber: '',
+        customerName: '',
+        pickTime: '',
+        stockType: '',
+        userName: '',
+        phone: '',
+        receAddress: '',
+        notes: ''
+      },
+      rules: {
+        // id: [
+        //   { required: true, message: '请输入销售订单号', trigger: 'change' },
+        //
+        // ],
+        cityId: [{
+          required: true, message: '请输入市', trigger: 'change'
+        }],
+        areaId: [{
+          required: true, message: '请输入区', trigger: 'change'
+        }],
+        provinceId: [{
+          required: true, message: '请输入省', trigger: 'change'
+        }],
+        streetId: [{
+          required: true, message: '请输入街道', trigger: 'change'
+        }],
+        // customerNumber: [          { required: true, message: '请输入商家编号', trigger: 'change' },
+        // ],
+        // customerName: [{
+        //   required: true, message: '请输入商家名称', trigger: 'change'
+        // }],
+        pickTime: [{
+          required: true, message: '请输入配送日期', trigger: 'change'
+        }],
+        stockType: [{
+          required: true, message: '请输入发货仓库名称', trigger: 'change'
+        }],
+        userName: [{
+          required: true, message: '请输入用户名称', trigger: 'change'
+        }],
+        phone: [{
+          required: true, message: '请输入用户电话', trigger: 'change'
+        }],
+        receAddress: [{
+          required: true, message: '请输入送货地址', trigger: 'change'
+        }]
+      },
+      provinceList: [],
+      cityList: [],
+      areaList: [],
+      streetList: [],
+      areaValue:''
+    }
+  },
+  created() {
+    this.getRegion()
+  },
+  methods: {
+
+    // 获取省市区街道
+    getRegion(level = 0, id = 0) {
+      getRegion({ pid: id }).then(res => {
+        if (level === 0) {
+          this.provinceList = res.data
+        } else if (level === 1) {
+          this.cityList = res.data
+        } else if (level === 2) {
+          this.areaList = res.data
+        } else if (level === 3) {
+          this.streetList = res.data
+        }
+      })
+    },
+    handleArea(value,type){
+
+      this.screenForm[type] =  this[type+'List'].find(k=>k.id===value).name
+
+    },
+    // 切换省
+    changeProvince(value) {
+      this.screenForm.cityId = ''
+      this.screenForm.areaId = ''
+      this.screenForm.streetId = ''
+      this.cityList = []
+      this.areaList = []
+      this.streetList = []
+      this.getRegion(1, value)
+      this.handleArea(value,'province')
+    },
+
+    // 切换市
+    changeCity(value) {
+      this.screenForm.areaId = ''
+      this.screenForm.streetId = ''
+      this.areaList = []
+      this.streetList = []
+      this.getRegion(2, value)
+      this.handleArea(value,'city')
+
+    },
+
+    // 切换区
+    changeArea(value) {
+      this.areaValue = value
+      this.screenForm.streetId = ''
+      this.streetList = []
+      this.getRegion(3, value)
+      this.handleArea(value,'area')
+
+    },
+
+    // 切换街道
+    changeStreet(value) {
+      this.getRegion(3, this.areaValue)
+      this.handleArea(value,'street')
+    },
+
+    // 初始化省市区街道
+    initRegion(level, item, id = 0) {
+      let { province, city, area, street } = item
+      let nextId = null
+      getRegion({ pid: id }).then(res => {
+        if (level === 0) {
+          this.provinceList = res.data
+          nextId = this.screenForm.provinceId = this.provinceList[findElem(this.provinceList, 'name', province)].id
+        } else if (level === 1) {
+          this.cityList = res.data
+          nextId = this.screenForm.cityId = this.cityList[findElem(this.cityList, 'name', city)].id
+        } else if (level === 2) {
+          this.areaList = res.data
+          nextId = this.screenForm.areaId = this.areaList[findElem(this.areaList, 'name', area)].id
+        } else if (level === 3) {
+          this.streetList = res.data
+          nextId = this.screenForm.streetId = this.streetList[findElem(this.streetList, 'name', street)].id
+        }
+        if (level < 3) {
+          level = level + 1
+          this.initRegion(level, item, nextId)
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+.sales {
+  margin: 20px;
+  padding: 20px;
+  box-shadow: 0 0 8px 0 rgb(0 0 0 / 20%);
+}
+
+.custom {
+  .item {
+    ::v-deep .el-form-item__label:first-child {
+      text-align: left;
+    }
+  }
+
+  ::v-deep .el-form-item__label {
+    text-align: center;
+  }
+}
+</style>

+ 163 - 0
src/components/SalesTable/SalesTable.vue

@@ -0,0 +1,163 @@
+<template>
+  <div class="sales">
+    <slot name="title">
+      <h5>销售订单明细</h5>
+    </slot>
+    <slot name="bts">
+    </slot>
+    <div class="table">
+      <el-table
+        :data="dataList"
+        style="width: 100%"
+        v-bind="tableAttributes"
+        @select-all="handleSelectionAllChange"
+        @selection-change="handleSelectionAllChange"
+      >
+        <el-table-column
+          v-if="isSelection"
+          align="left"
+          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"
+          show-overflow-tooltip
+          v-bind="{...item,...columnAttributes}"
+          :prop="item.prop"
+        >
+          <template v-slot="{row,$index}">
+            <template v-if="!item.isInput">
+              {{ row[item.prop] }}
+            </template>
+            <template v-else>
+              <el-input
+                v-model="row[item.prop] "
+                class="yinput"
+                :type="item.type?item.type:'number'"
+                :placeholder="item.placeholder"
+                size="mini"
+                @mousewheel.native.prevent
+              />
+            </template>
+            <template v-if="item.isCustom">
+                <slot name="custom" v-bind:item="{row,$index}">
+                </slot>
+            </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>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+
+    <slot />
+    <slot name="events">
+      <div>
+        <!--        <el-button type="primary" size="mini">保存</el-button>-->
+        <!--        <el-button size="mini">重置</el-button>-->
+        <!--        <el-button type="primary" size="mini">提交</el-button>-->
+        <!--        <el-button size="mini">重置</el-button>-->
+        <!--        <el-button size="mini">通知退货</el-button>-->
+      </div>
+    </slot>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'SalesTable',
+  props: {
+    isSelection: {
+      type: Boolean,
+      default: false
+    },
+    isIndex: {
+      type: Boolean,
+      default: false
+    },
+    isOperation: {
+      type: Boolean,
+      default: false
+    },
+    tableAttributes: {
+      type: Object,
+      default: () => {
+        return {}
+      }
+    },
+    columnAttributes: {
+      type: Object,
+      default: () => {
+        return {}
+      }
+    },
+    dataList: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    },
+    column: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    }
+  },
+  data() {
+    return {
+      activities: [{
+        content: '活动按期开始',
+        color: '#0bbd87',
+        timestamp: '2018-04-15'
+      }, {
+        content: '通过审核',
+        timestamp: '2018-04-13'
+      }, {
+        content: '创建成功',
+        timestamp: '2018-04-11'
+      }],
+      selection: []
+    }
+  },
+  methods: {
+    handleDel(row) {
+      console.log(row)
+    },
+    handleSelectionAllChange(data) {
+      this.$emit('handleSelection', data)
+    },
+
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.sales {
+  margin: 20px;
+  padding: 20px;
+  box-shadow: 0 0 8px 0 rgb(0 0 0 / 20%);
+}
+
+::v-deep .el-table-column--selection .cell {
+  padding: 0 10px 0 10px;
+}
+
+.diy-table-1 {
+  margin: 20px 0;
+}
+</style>

+ 147 - 0
src/components/WarehousingHeader/WarehousingHeader.vue

@@ -0,0 +1,147 @@
+<template>
+  <div class="warehousing">
+    <el-form
+      v-if="pageType==='add'"
+      label-position="left"
+      label-width="120px"
+      :model="screenForm"
+      size="mini"
+    >
+      <el-row :gutter="20">
+        <el-col :xs="24" :ms="8" :lg="8">
+          <el-form-item label="商家编号" prop="customerNumber">
+            <el-input disabled v-model="screenForm.customerNumber" placeholder="商家编号" size="mini" />
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :ms="8" :lg="8">
+          <el-form-item label="商家名称" prop="customerName">
+            <el-input disabled v-model="screenForm.customerName" placeholder="商家名称" size="mini" />
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :ms="8" :lg="8" >
+          <el-form-item label="调整日期" prop="changeTime">
+            <el-date-picker
+              disabled
+              v-model="screenForm.changeTime"
+              type="datetime"
+              size="mini"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              placeholder="选择日期" />
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :ms="8" :lg="8">
+          <el-form-item label="制单人" prop="createBy">
+            <el-input disabled v-model="screenForm.createBy" placeholder="制单人" size="mini" />
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :ms="8" :lg="8">
+          <el-form-item label="制单时间" prop="createTime">
+            <el-date-picker
+              disabled
+              v-model="screenForm.createTime"
+              type="datetime"
+              size="mini"
+              value-format="yyyy-MM-dd HH:mm:ss"
+              placeholder="选择日期" />
+          </el-form-item>
+        </el-col>
+        <el-col :xs="24" :ms="24" :lg="24">
+          <el-form-item label="备注" prop="remark">
+            <el-input v-model="screenForm.remark" placeholder="备注" size="mini" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <div v-else>
+      <h5>单据信息</h5>
+      <div class="diy-table-1">
+        <el-row>
+          <el-col :span="6" class="item">
+            <div class="label">调整单号</div>
+            <div class="value">{{ details.id }}</div>
+          </el-col>
+          <el-col :span="6" class="item">
+            <div class="label">商家编号</div>
+            <div class="value">{{ details.customerNumber }}</div>
+          </el-col>
+          <el-col :span="6" class="item">
+            <div class="label">商家名称</div>
+            <div class="value">{{ details.customerName }}</div>
+          </el-col>
+          <el-col :span="6" class="item">
+            <div class="label">调整日期</div>
+            <div class="value">{{ details.changeTime }}</div>
+          </el-col>
+          <el-col :span="6" class="item">
+            <div class="label">制单人</div>
+            <div class="value">{{ details.createBy }}</div>
+          </el-col>
+          <el-col :span="18" class="item">
+            <div class="label">制单时间</div>
+            <div class="value">{{ details.createTime }}</div>
+          </el-col>
+          <el-col :span="24" class="item">
+            <div class="label">备注</div>
+            <div class="value">{{ details.remark }}</div>
+          </el-col>
+
+        </el-row>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'WarehousingHeader',
+  props: {
+    pageType: {
+      type: String,
+      default: 'add'
+    },
+    details: {
+      type: Object,
+      default: () => {
+        return {}
+      }
+    }
+  },
+  data() {
+    return {
+      screenForm: {
+        changeTime: '',
+        createBy: JSON.parse(localStorage.getItem('supply_user')).nickName || '',
+        createTime:'',
+        customerName: '',
+        customerNumber: '',
+        remark: ''
+      },
+      rules: {
+        customerNumber: [
+          { required: true, message: '请输入商家编号', trigger: 'blur' }
+        ],
+        customerName: [
+          { required: true, message: '请输入商家名称', trigger: 'blur' }
+        ],
+        changeTime: [
+          { required: true, message: '请选择调整日期', trigger: 'blur' }
+        ],
+        createBy: [
+          { required: true, message: '请选择制单人', trigger: 'blur' }
+        ],
+        createTime: [
+          { required: true, message: '请选择制单时间', trigger: 'blur' }
+        ]
+      }
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+.warehousing {
+  margin: 20px;
+  padding: 20px;
+  box-shadow: 0 0 8px 0 rgb(0 0 0 / 20%);
+}
+</style>

+ 34 - 0
src/components/template/import_mixin.js

@@ -0,0 +1,34 @@
+export default {
+  methods: {
+    // 导入按钮
+    importButton(func, name = '导入') {
+      return () => {
+        return (
+          <el-upload
+            action={'_'}
+            http-request={data => {
+              var formdata = new FormData()
+              formdata.append('file', data.file)
+              func({ formdata })
+                .then(res => {
+                  this.$refs.pageRef.refreshList()
+                  this.$message({
+                    type: 'success',
+                    message: '导入成功!'
+                  })
+                })
+                .catch(err => {
+                  this.$message({
+                    type: 'error',
+                    message: err.message || '导入失败'
+                  })
+                })
+            }}
+          >
+            <span>{name}</span>
+          </el-upload>
+        )
+      }
+    }
+  }
+}

+ 49 - 0
src/components/template/operation_mixin.js

@@ -0,0 +1,49 @@
+export default {
+  methods: {
+    operation(opt = {}) {
+      if (opt.view || opt.editor || opt.del) {
+        return (h, { row, index, column }) => {
+          return (
+            <div class="operation-btns">
+              {opt.view ? (
+                <el-button
+                  size="mini"
+                  type="primary"
+                  onClick={() => {
+                    opt.view({ row, index, column });
+                  }}
+                >
+                  查看
+                </el-button>
+              ) : null}
+              {opt.editor ? (
+                <el-button
+                  size="mini"
+                  type="primary"
+                  onClick={() => {
+                    opt.editor({ row, index, column });
+                  }}
+                >
+                  编辑
+                </el-button>
+              ) : null}
+              {opt.del ? (
+                <el-popconfirm
+                  title="这是一段内容确定删除吗?"
+                  onConfirm={() => {
+                    opt.del({ row, index, column });
+                  }}
+                >
+                  <el-button size="mini" type="danger" slot="reference">
+                    删除
+                  </el-button>
+                </el-popconfirm>
+              ) : null}
+            </div>
+          );
+        };
+      }
+      return undefined;
+    }
+  }
+};

+ 118 - 0
src/components/template/sel-export-column-list.vue

@@ -0,0 +1,118 @@
+<template>
+  <el-dialog
+    title="勾选导出列"
+    :before-close="cancel"
+    :visible.sync="dialogVisible"
+    width="400px"
+  >
+    <el-table
+      :data="exportColumnList"
+      v-bind="{
+        height: '100%',
+        style: 'width: 100%',
+        border: true,
+        headerCellClassName: 'headerRowColor',
+        size: 'mini'
+      }"
+    >
+      <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>
+    <span slot="footer" class="dialog-footer">
+      <el-button size="mini" @click="cancel">取 消</el-button>
+      <el-button size="mini" type="primary" @click="determine">确 定</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  props: {
+    columnList: {
+      type: Array,
+      default: () => []
+    }
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      isExport: true,
+      exportColumnList: []
+    };
+  },
+  watch: {
+    columnList: {
+      handler() {
+        if (this.columnList && this.columnList.length) {
+          this.exportColumnList = this.columnList.map(item => {
+            return { ...item.exportField, isExport: true };
+          });
+          this.dialogVisible = true;
+        } else {
+          this.exportColumnList = [];
+          this.dialogVisible = false;
+        }
+      },
+      deep: true
+    },
+    exportColumnList: {
+      handler() {
+        this.isExport = this.exportColumnList.every(
+          item => item.isExport === true
+        );
+      },
+      deep: true
+    },
+    isExport() {
+      if (
+        this.exportColumnList.every(item => item.isExport === true) !==
+        this.isExport
+      ) {
+        this.exportColumnList.map(item => {
+          item.isExport = this.isExport;
+        });
+      }
+    }
+  },
+  methods: {
+    cancel() {
+      this.$emit("cancel");
+    },
+    determine() {
+      this.$emit(
+        "determine",
+        this.exportColumnList.filter(item => item.isExport)
+      );
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped></style>

+ 342 - 0
src/components/template/template-page-1.vue

@@ -0,0 +1,342 @@
+<template>
+  <zj-page-template
+    ref="zjpage"
+    style="width: 100%;height: 100%;"
+    :get-table-data="getTableData"
+    :options-evens="evens"
+    :options-evens-group="selBtn(optionsEvensGroup)"
+    :table-attributes="{ ...defaultTableAttributes, ...tableAttributes }"
+    :table-events="{ ...defaultTableEvents, ...tableEvents }"
+    :column-parsing="columnParsing"
+    :reduction="reduction"
+    :plan="[...plan, ...morePlan]"
+    :operation="operation"
+    :operation-column-width="operationColumnWidth"
+    :show-table="showTable"
+    :code-gather="codeGather"
+    @columnWidthChange="columnWidthChange"
+    @columnListChange="columnListChange"
+  >
+    <sel-export-column-list
+      :column-list="columnList"
+      @determine="exportDetermine"
+      @cancel="columnList = []"
+    />
+    <slot />
+  </zj-page-template>
+</template>
+
+<script>
+
+import SelExportColumnList from './sel-export-column-list'
+
+export default {
+  components: {
+    SelExportColumnList
+  },
+  props: {
+    // 事件组合
+    optionsEvensGroup: {
+      type: Array,
+      default: () => []
+    },
+    // 表格属性
+    tableAttributes: {
+      type: Object,
+      default: () => ({})
+    },
+    // 表格事件
+    tableEvents: {
+      type: Object,
+      default: () => ({})
+    },
+    // 表格列解析渲染数据更改
+    columnParsing: {
+      type: Function
+    },
+    // 获取列表的方法
+    getList: {
+      type: Function
+    },
+    // 导出的方法
+    exportList: {
+      type: Function
+    },
+    morePlan: {
+      type: Array,
+      default: () => []
+    },
+    operation: {
+      type: Function
+    },
+    operationColumnWidth: {
+      type: Number,
+      default: 140
+    }
+  },
+  data() {
+    return {
+      // 菜单id
+      moduleId: this.$route.meta.moduleId,
+      // 菜单名
+      moduleName: this.$route.meta.title,
+      // 搜索的参数
+      parameter: {},
+      plan: [
+        {
+          name: '默认方案',
+          paramCallback: () => {
+            return []
+          }
+        }
+      ],
+      // 按钮集合
+      evens: [],
+      // 表格属性
+      defaultTableAttributes: {},
+      // 表格事件
+      defaultTableEvents: {},
+      // 记录初始的id
+      columnsIds: {},
+      // 导出弹窗
+      columnList: [],
+      showTable: false,
+      codeGather: {}
+    }
+  },
+  computed: {
+    userid() {
+      return this.$store.getters.userid
+    }
+  },
+  mounted() {
+    if (this.exportList) {
+      this.evens = [
+        [
+          {
+            name: '导出',
+            click: this.export,
+            loading: false
+          }
+        ]
+      ]
+    }
+    // commonDict().then(res => {
+    //   var codeGather = {}
+    //   res.data.map(item => {
+    //     if (!codeGather[item.dictCode]) {
+    //       codeGather[item.dictCode] = []
+    //     }
+    //     codeGather[item.dictCode].push({
+    //       label: item.dictName,
+    //       value: item.dictValue
+    //     })
+    //   })
+    //   this.codeGather = codeGather
+    // })
+  },
+  methods: {
+    selBtn(arr) {
+      for (var i = 0; i < arr.length; i++) {
+        if (Array.isArray(arr[i])) {
+          this.selBtn(arr[i])
+        }
+        if (
+          !(arr[i].isRole || arr[i].isRole === undefined) ||
+          arr[i].length == 0
+        ) {
+          arr.splice(i, 1)
+          i--
+        }
+      }
+      return arr
+    },
+    // 获取列表数据函数
+    async getTableData(data) {
+      if (!this.getList) {
+        return
+      }
+      try {
+        this.parameter = {
+          pageNum: data.page,
+          pageSize: data.size,
+          orderBy: data.orderBy,
+          params: data.querylist,
+          moduleId: this.moduleId
+        }
+        var res = await this.getList(this.parameter)
+        // res.data.records = []
+        if (res.code == 200) {
+          if (!this.showTable) {
+            this.$nextTick(() => {
+              this.showTable = true
+            })
+          }
+          return res
+        }
+      } catch (error) {
+        console.log(error)
+      }
+    },
+    // 监听列表显示状态与排序变化
+    columnListChange(columnList) {
+      // zfireSave(
+      //   this.$refs.zjpage.columnList.map((item, index) => {
+      //     var data = {
+      //       ...item.exportField,
+      //       sortNum: index,
+      //       isCopy: item.isCopy,
+      //       isTotal: item.isTotal,
+      //       isShow: !item.hidden,
+      //       moduleId: this.moduleId,
+      //       adminUserId: this.userid
+      //     }
+      //     return data
+      //   }),
+      //   this.moduleId
+      // )
+      //   .then(res => {
+      //   })
+      //   .catch(err => {
+      //     this.$message.error('保存失败')
+      //   })
+    },
+    // 监听列宽度变化
+    columnWidthChange({ newWidth, oldWidth, column }) {
+      // zfireSave(
+      //   this.$refs.zjpage.columnList.map((item, index) => {
+      //     if (item.exportField.jname === column.property) {
+      //       item.exportField.width = newWidth
+      //     }
+      //     return {
+      //       ...item.exportField,
+      //       sortNum: index,
+      //       isCopy: item.isCopy,
+      //       isTotal: item.isTotal,
+      //       isShow: !item.hidden,
+      //       moduleId: this.moduleId,
+      //       adminUserId: this.userid
+      //     }
+      //   }),
+      //   this.moduleId
+      // )
+      //   .then(res => {
+      //   })
+      //   .catch(err => {
+      //     this.$message.error('保存失败')
+      //   })
+    },
+    // 表格恢复初始默认状态
+    reduction() {
+      // zfireDel({}, this.userid, this.moduleId)
+      //   .then(res => {
+      //     this.$refs.zjpage.refresh()
+      //   })
+      //   .catch(err => {
+      //     this.$message.error('操作失败')
+      //   })
+    },
+    // 导出
+    export() {
+      this.columnList = this.$refs.zjpage.columnList
+    },
+    exportDetermine(data) {
+      if (!this.exportList) {
+        return
+      }
+      this.evens[0][0].loading = true
+      this.exportList(
+        {
+          ...this.parameter,
+          pageSize: -1,
+          exportFields: data
+        },
+        `${this.moduleName}.xlsx`
+      )
+        .then(res => {
+          this.$message({
+            message: '导出成功',
+            type: 'success'
+          })
+          this.columnList = []
+          this.evens[0][0].loading = false
+        })
+        .catch(() => {
+          this.$message.error('导出失败')
+          this.columnList = []
+          this.evens[0][0].loading = false
+        })
+    },
+    refreshList() {
+      this.$refs.zjpage.refresh()
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+@font-face {
+  font-family: "aliyun_iconfont";
+  src: url("//at.alicdn.com/t/font_2075393_0cjq4n8ykvds.woff2?t=1647587689181")
+  format("woff2"),
+  url("//at.alicdn.com/t/font_2075393_0cjq4n8ykvds.woff?t=1647587689181")
+  format("woff"),
+  url("//at.alicdn.com/t/font_2075393_0cjq4n8ykvds.ttf?t=1647587689181")
+  format("truetype");
+}
+
+::v-deep .el-table__cell {
+  padding: 0 !important;
+}
+
+::v-deep .el-table__column-filter-trigger {
+  .el-icon-arrow-down {
+    font-family: aliyun_iconfont !important;
+    font-size: 13px;
+    line-height: 34px;
+    font-style: normal;
+    font-weight: 400;
+    font-variant: normal;
+    text-transform: none;
+    vertical-align: baseline;
+    display: inline-block;
+    -webkit-font-smoothing: antialiased;
+    transform: translate(-2px, 1px);
+    color: #c0c4cc;
+  }
+
+  .el-icon-arrow-down:before {
+    content: "\e64c" !important;
+  }
+}
+
+::v-deep .zj-buttons-group {
+  .el-upload-list {
+    display: none !important;
+  }
+}
+
+::v-deep .operation-btns {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+
+  & > *:not(:last-child) {
+    margin-right: 5px;
+  }
+
+  .el-button {
+    margin-left: 0 !important;
+  }
+}
+
+::v-deep .is-disabled {
+  .el-textarea__inner,
+  .el-input__inner {
+    background-color: #fff;
+    color: #606266;
+  }
+}
+</style>

+ 1 - 1
src/layout/index.vue

@@ -85,7 +85,7 @@ export default {
   position: fixed;
   top: 0;
   right: 0;
-  z-index: 9;
+  z-index: 999;
   width: calc(100% - #{$sideBarWidth});
   transition: width 0.28s;
 }

+ 4 - 1
src/main.js

@@ -22,7 +22,7 @@ function endLoading() {
 import * as echarts from 'echarts'
 Vue.prototype.$echarts = echarts
 import '@/styles/index.scss' // global css
-
+console.log('333')
 import App from './App'
 import store from './store'
 import router from './router'
@@ -32,6 +32,9 @@ import '@/permission' // permission control
 
 import * as filters from './filters' // global filters
 import directives from './directives'
+import '@zjlib/element-plugins/dest/element-plugins.css'
+import ElementPlugins from '@zjlib/element-plugins'
+Vue.use(ElementPlugins)
 
 // 成功/错误提示
 import { successMsg, errorMsg, warningNotify, checkBtnRole, getSummaries, numToFixed } from '@/utils/common.js'

+ 1 - 1
src/store/modules/user.js

@@ -108,7 +108,7 @@ const actions = {
           }
           console.log(data)
           let websitNumber
-          const { nickName, userName, customerId, customerName, customerNumber } = data
+          const { nickName, userName, customerId, customerName, customerNumber, isFront } = data
 
           if (data.adminWebsit) {
             websitNumber = data.adminWebsit.websitNumber

+ 1 - 1
src/utils/panel.js

@@ -146,7 +146,7 @@ export default {
             lineHeight: 13,
             width: 328,
             fontSize: 12.5,
-            title: '工程登录编号',
+            title: '工程信息单号',
             fontFamily: '黑体,宋体,微软雅黑',
             field: 'refEnginRecordNo',
             color: '#000',

+ 98 - 2
src/utils/request.js

@@ -42,8 +42,7 @@ service.interceptors.response.use(
    * Determine the request status by custom code
    * Here is just an example
    * You can also judge the status by HTTP Status Code
-   */
-  response => {
+   */ response => {
     const res = response.data
 
     // if the custom code is not 20000, it is judged as an error.
@@ -84,3 +83,100 @@ service.interceptors.response.use(
 )
 
 export default service
+
+// post方式导出文件
+export function postBlob(data) {
+  return new Promise(function (r, j) {
+    axios({
+      method: 'post',
+      url: process.env.VUE_APP_BASE_API + data.url, // 后端接口地址
+      responseType: 'blob', // bolb格式的请求方式
+      headers: {
+        'x-token': getToken() // 请求头
+      },
+      data: data.data // 需要传给后端的请求参数体
+    })
+      .then(res => {
+        const BLOB = res.data
+        const fileReader = new FileReader()
+        fileReader.readAsDataURL(BLOB) // 对请求返回的文件进行处理
+        fileReader.onload = e => {
+          const a = document.createElement('a')
+          a.download = data.name
+          a.href = e.target.result
+          document.body.appendChild(a)
+          a.click()
+          document.body.removeChild(a)
+        }
+        r()
+      })
+      .catch(err => {
+        console.log(err.message)
+        j()
+      })
+  })
+}
+
+// get方式导出文件
+export function getBlob(data) {
+  return new Promise(function (r, j) {
+    axios({
+      url: process.env.VUE_APP_BASE_API + data.url,
+      method: 'get',
+      responseType: 'blob',
+      params: data.data, // 与post传参方式不同之处
+      headers: {
+        'x-token': getToken() // 请求头
+      }
+    })
+      .then(res => {
+        var blob = new Blob([res.data], {
+          type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8'
+        })
+        var filename = data.name + '.xlsx'
+        var downloadElement = document.createElement('a')
+        var href = window.URL.createObjectURL(blob) // 创建下载的链接
+        downloadElement.style.display = 'none'
+        downloadElement.href = href
+        downloadElement.download = filename // 下载后文件名
+        document.body.appendChild(downloadElement)
+        downloadElement.click() // 点击下载
+        document.body.removeChild(downloadElement) // 下载完成移除元素
+        window.URL.revokeObjectURL(href) // 释放掉blob对象
+        r()
+      })
+      .catch(err => {
+        console.log(err.message)
+        j()
+      })
+  })
+}
+
+/**
+ * 导入功能
+ * @param {*} url
+ * @param {*} formData
+ * @param {*} id
+ */
+export async function handleImport(url, formData, id = '') {
+  return await new Promise((resolve, reject) => {
+    axios
+      .post(process.env.VUE_APP_BASE_API + url, formData, {
+        headers: {
+          'Content-Type': 'multipart/form-data',
+          'x-token': getToken(),
+          id
+        }
+      })
+      .then(res => {
+        if (res.data.code !== 1) {
+          reject(new Error(res.data.message || 'Error'))
+          return
+        }
+        resolve(res.data)
+      })
+      .catch(err => {
+        reject(err)
+      })
+  })
+}

+ 44 - 10
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 @back="goBack" content="详情页面"></el-page-header>
     </div>
     <el-form :model="infoList" label-width="130px" size="small" label-position="right">
       <el-card class="">
@@ -257,12 +257,24 @@
       <div slot="header" class="clearfix">
         <strong>标签信息</strong>
       </div>
-      <div class="diy-table-1">
+      <div class="diy-table-1" style="width: 100%">
         <el-form label-width="120px" class="demo-ruleForm">
-          <el-form-item label="集团客户" prop="">
-            <el-radio v-model="infoList.isGroupCompany" :label="true">是</el-radio>
-            <el-radio v-model="infoList.isGroupCompany" :label="false">否</el-radio>
-          </el-form-item>
+          <el-row>
+            <el-col :span="12">
+              <el-form-item label="集团客户" prop="">
+                <el-radio v-model="infoList.isGroupCompany" :label="true">是</el-radio>
+                <el-radio v-model="infoList.isGroupCompany" :label="false">否</el-radio>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="是否前置仓" prop="">
+                <el-radio v-model="infoList.isFront" :label="true">前置仓</el-radio>
+                <el-radio v-model="infoList.isFront" :label="false">经销商自有仓库</el-radio>
+                <el-button type="primary" size="mini" @click="handelSubmit">修改</el-button>
+              </el-form-item>
+
+            </el-col>
+          </el-row>
           <el-form-item label="分子公司" prop="">
             <el-tag class="tagStyle" v-for="v in infoList.kingDeeCustomers" :key="v.id">{{ v.name }}</el-tag>
           </el-form-item>
@@ -273,24 +285,42 @@
         </el-form>
       </div>
     </el-card>
+
   </div>
 </template>
 
 <script>
+import { getDealerInfo, updateCustomer } from '@/api/basic_data/dealer'
+
 export default {
   props: {
-    infoList: {
-      type: Object,
+
+    detailsId: {
+      type: String,
       required: true
     }
   },
   data() {
-    return {}
+    return {
+      infoList: {}
+    }
+  },
+
+  async created() {
+    const res = await getDealerInfo({ id: this.detailsId })
+    this.infoList = res.data
   },
-  created() {},
   methods: {
     goBack() {
       this.$parent.isShow = true
+    },
+    handelSubmit(){
+      updateCustomer({
+        id:this.infoList.id,
+        isFront:this.infoList.isFront
+      }).then(res=>{
+        this.$successMsg(this.infoList.isFront?'已更改为前置仓':'已更改为经销商自有仓库')
+      })
     }
   }
 }
@@ -300,15 +330,19 @@ export default {
 .sty {
   margin-bottom: 20px;
 }
+
 ::v-deep .diy-table-1 {
   width: 50%;
+
   .xyed {
     border-top: 1px solid #ebeef5;
+
     .item {
       margin-bottom: 18px;
     }
   }
 }
+
 .tagStyle {
   margin: 0 18px;
 }

+ 8 - 5
src/views/basic_data/dealer/dealer_list.vue

@@ -26,6 +26,10 @@
         <div class="fr">
           <ExportButton :exUrl="'customer/export'" :exParams="exParams" />
         </div>
+        <div class="fl">
+          <ImportButton :imUrl="'customer/import'" @importSuccess="getList" />
+        </div>
+
       </div>
 
       <div class="mymain-container">
@@ -115,7 +119,7 @@
         </div>
       </div>
     </div>
-    <DealerListDetail :infoList="inforList" v-else />
+    <DealerListDetail :infoList="inforList" :detailsId="detailsId" v-else />
   </div>
 </template>
 
@@ -128,7 +132,7 @@ export default {
     return {
       isShow: true,
       dataList: [], // 列表数据
-
+      detailsId: '',
       listLoading: false, // 列表加载loading
       screenForm: {},
       currentPage: 1, // 当前页码
@@ -197,10 +201,9 @@ export default {
       this.dataList = res.data.records
       this.listTotal = res.data.total
     },
-    async editFn(id) {
+    editFn(id) {
       this.isShow = false
-      const res = await getDealerInfo({ id })
-      this.inforList = res.data
+      this.detailsId = id
     }
   }
 }

+ 2 - 0
src/views/basic_data/stock/Issue_list.vue

@@ -31,6 +31,8 @@
                   <el-date-picker
                     v-model="screenForm.date"
                     type="datetimerange"
+                    :default-time="['00:00:00','23:59:59']"
+
                     range-separator="至"
                     style="width: 100%"
                     value-format="yyyy-MM-dd HH:mm:ss"

+ 1 - 0
src/views/basic_data/stock/material_list.vue

@@ -31,6 +31,7 @@
                   <el-date-picker
                     v-model="screenForm.date"
                     type="datetimerange"
+:default-time="['00:00:00','23:59:59']"
                     range-separator="至"
                     style="width: 100%"
                     value-format="yyyy-MM-dd HH:mm:ss"

+ 6 - 0
src/views/basic_data/stock/stock_fee_list.vue

@@ -38,6 +38,7 @@
                   <el-date-picker
                     v-model="screenForm.orderDate"
                     type="datetimerange"
+                    :default-time="['00:00:00','23:59:59']"
                     range-separator="至"
                     style="width: 100%"
                     value-format="yyyy-MM-dd HH:mm:ss"
@@ -52,6 +53,7 @@
                   <el-date-picker
                     v-model="screenForm.invoiceDate"
                     type="datetimerange"
+:default-time="['00:00:00','23:59:59']"
                     range-separator="至"
                     style="width: 100%"
                     value-format="yyyy-MM-dd HH:mm:ss"
@@ -106,6 +108,7 @@
                   <el-date-picker
                     v-model="screenForm.approvalDate"
                     type="datetimerange"
+:default-time="['00:00:00','23:59:59']"
                     range-separator="至"
                     style="width: 100%"
                     value-format="yyyy-MM-dd HH:mm:ss"
@@ -133,6 +136,7 @@
                   <el-date-picker
                     v-model="screenForm.saleDate"
                     type="datetimerange"
+:default-time="['00:00:00','23:59:59']"
                     range-separator="至"
                     style="width: 100%"
                     value-format="yyyy-MM-dd HH:mm:ss"
@@ -440,9 +444,11 @@ export default {
           item.sums1 = ['qty', 'sendQty', 'directTransferQty', 'hasSendQty', 'refundableQty']
           item.sums2 = ['price', 'totalAmount', 'payAmount', 'rebateAmount', 'payRebateAmount', 'totalDiscAmount']
         })
+
         this.dataList = res.data.records
         this.listTotal = res.data.total
         this.listLoading = false
+        console.log(res,this.dataList)
       })
       this.getWarehouseList()
       this.getCategoryList()

+ 378 - 0
src/views/basic_data/stock/tableData.js

@@ -0,0 +1,378 @@
+export default {
+  data: {
+    records: [
+      {
+        id: '1529270679017484289',
+        identity: '431003199803271316',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: -25,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-05-25 09:18:37',
+      },
+      {
+        id: '1529270679738904578',
+        identity: '431003199803271316',
+        goodsId: 'W1006',
+        goodsName: '保温棉',
+        saleUnit: '条',
+        qty: -24,
+        categoryId: '4',
+        categoryName: '保温',
+        createTime: '2022-05-25 09:18:37',
+      },
+      {
+        id: '1529280470703071233',
+        identity: '452226198504073614',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: 30,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-05-25 09:57:32',
+      },
+      {
+        id: '1529282123955101698',
+        identity: '452226198504073614',
+        goodsId: 'W1001',
+        goodsName: '金冷R600a/90G',
+        saleUnit: '瓶',
+        qty: 10,
+        categoryId: '11',
+        categoryName: '冷媒',
+        createTime: '2022-05-25 10:04:06',
+      },
+      {
+        id: '1529284045793583105',
+        identity: '431003199803271316',
+        goodsId: 'W1001',
+        goodsName: '金冷R600a/90G',
+        saleUnit: '瓶',
+        qty: 10,
+        categoryId: '11',
+        categoryName: '冷媒',
+        createTime: '2022-05-25 10:11:44',
+      },
+      {
+        id: '1529286318682726402',
+        identity: '511321198104074414',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: 0,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-05-25 10:20:46',
+      },
+      {
+        id: '1529293433069559809',
+        identity: '440229197310010077',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: 8,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-05-25 10:49:02',
+      },
+      {
+        id: '1529300002167513089',
+        identity: '440229197310010077',
+        goodsId: 'W1015',
+        goodsName: '3-5匹角铁地架',
+        saleUnit: '副',
+        qty: 0,
+        categoryId: '13',
+        categoryName: '支架',
+        createTime: '2022-05-25 11:15:08',
+      },
+      {
+        id: '1529392526345297922',
+        identity: '431003199803271316',
+        goodsId: 'W1005',
+        goodsName: '包扎带(挂机)',
+        saleUnit: '卷',
+        qty: -20,
+        categoryId: '30',
+        categoryName: '包扎带',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1529392527217713154',
+        identity: '431003199803271316',
+        goodsId: 'W1052',
+        goodsName: '包扎带(柜机)',
+        saleUnit: '卷',
+        qty: -2,
+        categoryId: '30',
+        categoryName: '包扎带',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1529392527284822018',
+        identity: '431003199803271316',
+        goodsId: 'W1003',
+        goodsName: '连接器',
+        saleUnit: '个',
+        qty: -6,
+        categoryId: '31',
+        categoryName: '连接器',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1529392527356125186',
+        identity: '431003199803271316',
+        goodsId: 'W1002',
+        goodsName: '双壁热缩套管',
+        saleUnit: '条',
+        qty: -6,
+        categoryId: '32',
+        categoryName: '双壁热缩套管',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1529392527473565698',
+        identity: '431003199803271316',
+        goodsId: 'W1008',
+        goodsName: '电缆',
+        saleUnit: '米',
+        qty: -2,
+        categoryId: '18',
+        categoryName: '电缆',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1539450903616245761',
+        identity: '430725198907104353',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: -4,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-06-22 11:31:12',
+      },
+      {
+        id: '1539450903687548929',
+        identity: '430725198907104353',
+        goodsId: 'W1006',
+        goodsName: '保温棉',
+        saleUnit: '条',
+        qty: -2,
+        categoryId: '4',
+        categoryName: '保温',
+        createTime: '2022-06-22 11:31:12',
+      },
+    ],
+    total: 23,
+    size: 15,
+    current: 1,
+    orders: [],
+    optimizeCountSql: true,
+    searchCount: true,
+    countId: null,
+    maxLimit: null,
+    pages: 2,
+  },
+  message: 'success',
+  code: 1,
+  fieldBeans: [
+    {
+      id: '1584740968445440002',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '创建时间',
+      placeholder: null,
+      type: 'datetime',
+      multiple: false,
+      frontCode: null,
+      tbName: null,
+      colName: 'createTime',
+      width: null,
+      sortNum: 0,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'createTime',
+    },
+    {
+      id: '1584740968458022913',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: 'id',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_stock',
+      colName: 'id',
+      width: null,
+      sortNum: 1,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'id',
+    },
+    {
+      id: '1584740968466411522',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '身份证',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_stock',
+      colName: 'identity',
+      width: null,
+      sortNum: 2,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'identity',
+    },
+    {
+      id: '1584740968466411523',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '商品id',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_stock',
+      colName: 'goodsId',
+      width: null,
+      sortNum: 3,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'goodsId',
+    },
+    {
+      id: '1584740968466411524',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '商品名称',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_goods',
+      colName: 'goodsName',
+      width: null,
+      sortNum: 4,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'goodsName',
+    },
+    {
+      id: '1584740968470605827',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '数量',
+      placeholder: null,
+      type: 'number',
+      isTotal: true,
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_stock',
+      colName: 'qty',
+      width: null,
+      sortNum: 5,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'qty',
+    },
+    {
+      id: '1584740968470605826',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '销售单位',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_goods',
+      colName: 'saleUnit',
+      width: null,
+      sortNum: 6,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'saleUnit',
+    },
+    {
+      id: '1584740968470605828',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '类型id',
+      placeholder: null,
+      type: 'number',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_goods',
+      colName: 'categoryId',
+      width: null,
+      sortNum: 7,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'categoryId',
+    },
+    {
+      id: '1584740968470605829',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '类型名称',
+      placeholder: null,
+      type: 'select',
+      multiple: false,
+      frontCode: 'category',
+      tbName: 'worker_goods',
+      colName: 'categoryName',
+      width: null,
+      sortNum: 8,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'categoryName',
+    },
+  ],
+  typeReference: {
+    type: 'com.gree.material.manager.bean.worker.ZStockBean',
+    typeName: 'class com.gree.material.manager.bean.worker.ZStockBean',
+  },
+};

+ 1 - 0
src/views/basic_data/stock/warehousing_list.vue

@@ -31,6 +31,7 @@
                   <el-date-picker
                     v-model="screenForm.date"
                     type="datetimerange"
+:default-time="['00:00:00','23:59:59']"
                     range-separator="至"
                     style="width: 100%"
                     value-format="yyyy-MM-dd HH:mm:ss"

+ 1 - 1
src/views/deposit_commerce/components/deposit-apply-deduction.vue

@@ -9,7 +9,7 @@
     <div class="diy-table-1">
       <el-row :gutter="0">
         <el-col :xs="12" :sm="8" :lg="8" class="item">
-          <div class="label">工程登录编号</div>
+          <div class="label">工程信息单号</div>
           <div class="value">2022123233435342</div>
         </el-col>
         <el-col :xs="12" :sm="8" :lg="8" class="item">

+ 4 - 4
src/views/deposit_commerce/components/deposit-apply-surrender.vue

@@ -10,7 +10,7 @@
       <el-form ref="form" :model="details">
         <el-row :gutter="0">
           <el-col :xs="12" :sm="8" :lg="8" class="item">
-            <div class="label">工程登录编号</div>
+            <div class="label">工程信息单号</div>
             <div class="value">{{ details.refEnginRecordNo }}</div>
           </el-col>
           <el-col :xs="12" :sm="8" :lg="8" class="item">
@@ -134,18 +134,18 @@
             align="center"
             label="物料编码"
             prop="materialNumber"
-            min-width="160"
+            min-width="130"
             show-overflow-tooltip
           />
           <el-table-column
             align="center"
             label="产品编码"
             prop="materialOldNumber"
-            min-width="160"
+            min-width="130"
             show-overflow-tooltip
           />
           <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip />
-          <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip />
+          <el-table-column align="center" label="规格型号" prop="specification" min-width="300" show-overflow-tooltip />
           <el-table-column align="center" label="单价" prop="price" min-width="160" show-overflow-tooltip />
           <el-table-column align="center" label="数量" prop="qty" min-width="160" show-overflow-tooltip />
           <el-table-column align="center" label="金额" prop="totalAmount" min-width="160" show-overflow-tooltip />

+ 4 - 4
src/views/deposit_commerce/components/deposit_list-detail.vue

@@ -18,7 +18,7 @@
         <el-form ref="form" :model="details">
           <el-row :gutter="0">
             <el-col :xs="12" :sm="8" :lg="8" class="item">
-              <div class="label">工程登录编号</div>
+              <div class="label">工程信息单号</div>
               <div class="value">{{ details.refEnginRecordNo }}</div>
             </el-col>
             <el-col :xs="12" :sm="8" :lg="8" class="item">
@@ -157,7 +157,7 @@
                 align="left"
                 label="物料编码"
                 prop="materialNumber"
-                min-width="160"
+                min-width="130"
                 show-overflow-tooltip
               >
                 <template slot-scope="scope">
@@ -171,7 +171,7 @@
               align="left"
               label="产品编码"
               prop="materialOldNumber"
-              min-width="160"
+              min-width="130"
               show-overflow-tooltip
             >
               <template slot-scope="scope">
@@ -185,7 +185,7 @@
                 <span>{{ scope.row.materialName }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="left" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip>
+            <el-table-column align="left" label="规格型号" prop="specification" min-width="300" show-overflow-tooltip>
               <template slot-scope="scope">
                 <CopyButton :copyText="scope.row.specification" />
                 <span>{{ scope.row.specification }}</span>

+ 6 - 6
src/views/deposit_commerce/components/refund_list-detail.vue

@@ -11,7 +11,7 @@
       <el-row :gutter="0">
         <el-col :xs="12" :sm="24" :lg="8" class="item">
           <div class="label">
-            {{ detailList.enginOrderType == 'HOME' ? '工程登录编号' : '工程信息编号' }}
+            {{ detailList.enginOrderType == 'HOME' ? '工程信息单号' : '工程信息编号' }}
           </div>
           <div class="value">
             <CopyButton :copy-text="detailList.refEnginRecordNo" /> {{ detailList.refEnginRecordNo }}
@@ -99,7 +99,7 @@
           <div class="value">{{ detailList.customerName }}</div>
         </el-col> -->
         <el-col :xs="24" :sm="24" :lg="8" class="item">
-          <div class="label">第几申报</div>
+          <div class="label">第几申报</div>
           <div class="value">{{ detailList.refDeclareNo }}</div>
         </el-col>
         <el-col :xs="24" :sm="24" :lg="8" class="item">
@@ -239,7 +239,7 @@
                 <span>{{ scope.row.factoryNo }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="left" label="物料编码" prop="materialNumber" min-width="160" show-overflow-tooltip>
+            <el-table-column align="left" label="物料编码" prop="materialNumber" min-width="130" show-overflow-tooltip>
               <template slot-scope="scope">
                 <CopyButton :copyText="scope.row.materialNumber" />
                 <span>{{ scope.row.materialNumber }}</span>
@@ -247,7 +247,7 @@
             </el-table-column>
           </template>
 
-          <el-table-column align="left" label="产品编码" prop="materialOldNumber" min-width="160" show-overflow-tooltip>
+          <el-table-column align="left" label="产品编码" prop="materialOldNumber" min-width="130" show-overflow-tooltip>
             <template slot-scope="scope">
               <CopyButton :copyText="scope.row.materialOldNumber" />
               <span>{{ scope.row.materialOldNumber }}</span>
@@ -259,7 +259,7 @@
               <span>{{ scope.row.materialName }}</span>
             </template>
           </el-table-column>
-          <el-table-column align="left" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip>
+          <el-table-column align="left" label="规格型号" prop="specification" min-width="300" show-overflow-tooltip>
             <template slot-scope="scope">
               <CopyButton :copyText="scope.row.specification" />
               <span>{{ scope.row.specification }}</span>
@@ -685,7 +685,7 @@ export default {
         type: 'warning'
       })
         .then(() => {
-        
+
           let data = {
             ...this.detailList,
             checkBy: this.checkBy,

+ 20 - 2
src/views/deposit_commerce/deposit_list.vue

@@ -18,7 +18,7 @@
             <el-form ref="screenForm" :model="screenForm" label-width="140px" size="mini" label-position="left">
               <el-row :gutter="20">
                 <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="工程登录编号" prop="refEnginRecordNo">
+                  <el-form-item label="工程信息单号" prop="refEnginRecordNo">
                     <el-input v-model="screenForm.refEnginRecordNo" placeholder="请输入" />
                   </el-form-item>
                 </el-col>
@@ -232,6 +232,22 @@
                       />
                     </el-form-item>
                   </el-col>
+                  <el-col :xs="24" :sm="12" :lg="6">
+                    <el-form-item label="结算日期 " prop="settlementStatus">
+                      <el-select style="width: 100%" v-model="screenForm.settlementStatus" clearable placeholder="请选择">
+                        <el-option label="为空" :value="1"></el-option>
+                        <el-option label="不为空" :value="0"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :xs="24" :sm="12" :lg="6">
+                    <el-form-item label="寄厂日期 " prop="mailFactoryStatus">
+                      <el-select style="width: 100%" v-model="screenForm.mailFactoryStatus" clearable placeholder="请选择">
+                        <el-option label="为空" :value="1"></el-option>
+                        <el-option label="不为空" :value="0"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
                 </template>
               </el-row>
             </el-form>
@@ -271,7 +287,7 @@
             <el-table-column align="left" type="selection" width="55" />
             <el-table-column
               align="left"
-              label="工程登录编号"
+              label="工程信息单号"
               prop="refEnginRecordNo"
               min-width="160"
               show-overflow-tooltip
@@ -441,6 +457,8 @@ export default {
         refFactoryNo: '',
         factoryNo: '',
         specialNo: '',
+        mailFactoryStatus:''  ,
+        settlementStatus:'',
         refRegionWork: '',
         endSubmitTime: '',
         startAcceptTime: '',

+ 45 - 20
src/views/deposit_commerce/refund_list.vue

@@ -21,7 +21,7 @@
             <el-form ref="screenForm" :model="screenForm" label-width="120px" size="mini" label-position="left">
               <el-row :gutter="20">
                 <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="工程登录编号" prop="refEnginRecordNo">
+                  <el-form-item label="工程信息单号" prop="refEnginRecordNo">
                     <el-input v-model="screenForm.refEnginRecordNo" placeholder="请输入" />
                   </el-form-item>
                 </el-col>
@@ -230,6 +230,22 @@
                       />
                     </el-form-item>
                   </el-col>
+                  <el-col :xs="24" :sm="12" :lg="6">
+                    <el-form-item label="结算日期 " prop="settlementStatus">
+                      <el-select style="width: 100%" v-model="screenForm.settlementStatus" clearable placeholder="请选择">
+                        <el-option label="为空" :value="1"></el-option>
+                        <el-option label="不为空" :value="0"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :xs="24" :sm="12" :lg="6">
+                    <el-form-item label="寄厂日期 " prop="mailFactoryStatus">
+                      <el-select style="width: 100%" v-model="screenForm.mailFactoryStatus" clearable placeholder="请选择">
+                        <el-option label="为空" :value="1"></el-option>
+                        <el-option label="不为空" :value="0"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
                   <!-- <el-col :xs="24" :sm="12" :lg="6">
                     <el-form-item label="产品编码" >
                       <div class="fanwei">
@@ -292,7 +308,7 @@
           >
             >
             <el-table-column type="selection" align="center" width="55"> </el-table-column>
-            <el-table-column align="left" label="状态" prop="" min-width="160" show-overflow-tooltip>
+            <el-table-column align="left" label="状态" prop="" min-width="60" show-overflow-tooltip>
               <template v-slot="{ row }">
                 <el-tag size="mini" v-show="row.examineStatus == 'SAVE'">保存</el-tag>
                 <el-tag size="mini" v-show="row.examineStatus == 'WAIT'" type="warning">待审核</el-tag>
@@ -300,11 +316,11 @@
                 <el-tag size="mini" v-show="row.examineStatus == 'FAIL'" type="danger">不通过</el-tag>
               </template>
             </el-table-column>
-            <el-table-column align="right" label="数量" prop="hasSendQty" min-width="160" show-overflow-tooltip />
-            <el-table-column align="right" label="金额" prop="hasSendQty" min-width="160" show-overflow-tooltip />
+            <el-table-column align="right" label="数量" prop="hasSendQty" min-width="60" show-overflow-tooltip />
+            <el-table-column align="right" label="金额" prop="hasSendQty" min-width="100" show-overflow-tooltip />
             <el-table-column
               align="left"
-              label="工程登录编号"
+              label="工程信息单号"
               prop="refEnginRecordNo"
               min-width="160"
               show-overflow-tooltip
@@ -328,7 +344,7 @@
               align="left"
               label="经销商编码"
               prop="customerNumber"
-              min-width="160"
+              min-width="100"
               show-overflow-tooltip
             >
               <template slot-scope="scope">
@@ -342,15 +358,15 @@
                 <span>{{ scope.row.customerName }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="left" label="跨厂区标号" prop="refFactoryNo" min-width="260" show-overflow-tooltip>
+            <el-table-column align="left" label="跨厂区标号" prop="refFactoryNo" min-width="100" show-overflow-tooltip>
               <template slot-scope="scope">
                 <CopyButton :copyText="scope.row.refFactoryNo" />
                 <span>{{ scope.row.refFactoryNo }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="right" label="厂编号" prop="factoryNo" min-width="160" show-overflow-tooltip>
+            <el-table-column align="right" label="厂编号" prop="factoryNo" min-width="120" show-overflow-tooltip>
             </el-table-column>
-            <el-table-column align="right" label="特价编号" prop="specialNo" min-width="160" show-overflow-tooltip>
+            <el-table-column align="right" label="特价编号" prop="specialNo" min-width="120" show-overflow-tooltip>
             </el-table-column>
             <el-table-column
               align="left"
@@ -369,7 +385,7 @@
               label="使用单位
 "
               prop="refUseUnit"
-              min-width="160"
+              min-width="250"
               show-overflow-tooltip
             >
               <template slot-scope="scope">
@@ -378,7 +394,7 @@
               </template>
             </el-table-column>
 
-            <el-table-column align="left" label="区域" prop="refRegionWork" min-width="160" show-overflow-tooltip>
+            <el-table-column align="left" label="区域" prop="refRegionWork" min-width="250" show-overflow-tooltip>
               <template slot-scope="scope">
                 <CopyButton :copyText="scope.row.refRegionWork" />
                 <span>{{ scope.row.refRegionWork }}</span>
@@ -396,7 +412,7 @@
                 <span>{{ scope.row.geLiInerNote }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="left" label="物料编码" prop="materialNumber" min-width="260" show-overflow-tooltip>
+            <el-table-column align="left" label="物料编码" prop="materialNumber" min-width="120" show-overflow-tooltip>
               <template slot-scope="scope">
                 <CopyButton :copyText="scope.row.materialNumber" />
                 <span>{{ scope.row.materialNumber }}</span>
@@ -406,7 +422,7 @@
               align="left"
               label="产品编码"
               prop="materialOldNumber"
-              min-width="260"
+              min-width="150"
               show-overflow-tooltip
             >
               <template slot-scope="scope">
@@ -415,13 +431,13 @@
               </template>
             </el-table-column>
 
-            <el-table-column align="left" label="产品名称" prop="materialName" min-width="260" show-overflow-tooltip>
+            <el-table-column align="left" label="产品名称" prop="materialName" min-width="180" show-overflow-tooltip>
               <template slot-scope="scope">
                 <CopyButton :copyText="scope.row.materialName" />
                 <span>{{ scope.row.materialName }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="left" label="规格型号" prop="specification" min-width="260" show-overflow-tooltip>
+            <el-table-column align="left" label="规格型号" prop="specification" min-width="350" show-overflow-tooltip>
               <template slot-scope="scope">
                 <CopyButton :copyText="scope.row.specification" />
                 <span>{{ scope.row.specification }}</span>
@@ -431,7 +447,7 @@
               align="right"
               label="押金金额"
               prop="itemDepositAmount"
-              min-width="160"
+              min-width="100"
               show-overflow-tooltip
             >
               <template slot-scope="scope">
@@ -442,25 +458,32 @@
             </el-table-column> -->
             <el-table-column align="right" label="安装日期" prop="installDate" min-width="160" show-overflow-tooltip>
             </el-table-column>
-            <el-table-column align="left" label="审核人" prop="confirmName" min-width="160" show-overflow-tooltip>
+            <el-table-column align="left" label="审核人" prop="confirmName" min-width="100" show-overflow-tooltip>
               <template slot-scope="scope">
                 <CopyButton :copyText="scope.row.confirmName" />
                 <span>{{ scope.row.confirmName }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="right" label="金额" prop="totalPrice" min-width="160" show-overflow-tooltip>
+            <el-table-column
+              align="left"
+              label="资料审核日期"
+              prop="refDatumAcceptDate"
+              min-width="160"
+              show-overflow-tooltip
+            />
+            <el-table-column align="right" label="金额" prop="totalPrice" min-width="100" show-overflow-tooltip>
               <template slot-scope="scope">
                 {{ scope.row.totalPrice | numToFixed }}
               </template>
             </el-table-column>
-            <el-table-column align="right" label="订单数量" prop="itemQty" min-width="160" show-overflow-tooltip />
+            <el-table-column align="right" label="订单数量" prop="itemQty" min-width="80" show-overflow-tooltip />
             <!-- <el-table-column align="right" label="合同单价" prop="contractPrice" min-width="160" show-overflow-tooltip >
                 <template slot-scope="scope">
                   {{ scope.row.contractPrice | numToFixed}}
                 </template>
               </el-table-column> -->
 
-            <el-table-column align="right" label="发货数量" prop="hasSendQty" min-width="160" show-overflow-tooltip />
+            <el-table-column align="right" label="发货数量" prop="hasSendQty" min-width="80" show-overflow-tooltip />
             <!-- <el-table-column align="right" label="押金金额" prop="depositAmount" min-width="160" show-overflow-tooltip>
               <template slot-scope="scope">
                 {{ scope.row.depositAmount | numToFixed}}
@@ -548,6 +571,8 @@ export default {
         specification: '',
         refFactoryNo: '',
         factoryNo: '',
+        mailFactoryStatus:''  ,
+        settlementStatus:'',
         specialNo: '',
         refRegionWork: '',
         endSubmitTime: '',

+ 1 - 1
src/views/deposit_home/components/deposit-apply-deduction.vue

@@ -9,7 +9,7 @@
     <div class="diy-table-1">
       <el-row :gutter="0">
         <el-col :xs="12" :sm="8" :lg="8" class="item">
-          <div class="label">工程登录编号</div>
+          <div class="label">工程信息单号</div>
           <div class="value">2022123233435342</div>
         </el-col>
         <el-col :xs="12" :sm="8" :lg="8" class="item">

+ 4 - 4
src/views/deposit_home/components/deposit-apply-surrender.vue

@@ -10,7 +10,7 @@
       <el-form ref="form" :model="details">
         <el-row :gutter="0">
           <el-col :xs="12" :sm="8" :lg="8" class="item">
-            <div class="label">工程登录编号</div>
+            <div class="label">工程信息单号</div>
             <div class="value">{{ details.refEnginRecordNo }}</div>
           </el-col>
           <el-col :xs="12" :sm="8" :lg="8" class="item">
@@ -139,18 +139,18 @@
             align="center"
             label="物料编码"
             prop="materialNumber"
-            min-width="160"
+            min-width="130"
             show-overflow-tooltip
           />
           <el-table-column
             align="center"
             label="产品编码"
             prop="materialOldNumber"
-            min-width="160"
+            min-width="130"
             show-overflow-tooltip
           />
           <el-table-column align="center" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip />
-          <el-table-column align="center" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip />
+          <el-table-column align="center" label="规格型号" prop="specification" min-width="300" show-overflow-tooltip />
           <el-table-column
             align="left"
             label="实装规格型号"

+ 4 - 4
src/views/deposit_home/components/deposit_list-detail.vue

@@ -18,7 +18,7 @@
         <el-form ref="form" :model="details">
           <el-row :gutter="0">
             <el-col :xs="12" :sm="8" :lg="8" class="item">
-              <div class="label">工程登录编号</div>
+              <div class="label">工程信息单号</div>
               <div class="value">{{ details.refEnginRecordNo }}</div>
             </el-col>
             <el-col :xs="12" :sm="8" :lg="8" class="item">
@@ -172,7 +172,7 @@
                 <span>{{ scope.row.specialNo }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="left" label="物料编码" prop="materialNumber" min-width="160" show-overflow-tooltip>
+            <el-table-column align="left" label="物料编码" prop="materialNumber" min-width="130" show-overflow-tooltip>
               <template slot-scope="scope">
                 <CopyButton :copyText="scope.row.materialNumber" />
                 <span>{{ scope.row.materialNumber }}</span>
@@ -182,7 +182,7 @@
               align="left"
               label="产品编码"
               prop="materialOldNumber"
-              min-width="160"
+              min-width="130"
               show-overflow-tooltip
             >
               <template slot-scope="scope">
@@ -196,7 +196,7 @@
                 <span>{{ scope.row.materialName }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="left" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip>
+            <el-table-column align="left" label="规格型号" prop="specification" min-width="300" show-overflow-tooltip>
               <template slot-scope="scope">
                 <CopyButton :copyText="scope.row.specification" />
                 <span>{{ scope.row.specification }}</span>

+ 5 - 5
src/views/deposit_home/components/refund_list-detail.vue

@@ -11,7 +11,7 @@
       <el-row :gutter="0">
         <el-col :xs="12" :sm="24" :lg="8" class="item">
           <div class="label">
-            {{ detailList.enginOrderType == 'HOME' ? '工程登录编号' : '工程信息编号' }}
+            {{ detailList.enginOrderType == 'HOME' ? '工程信息单号' : '工程信息编号' }}
           </div>
           <div class="value">
             <CopyButton :copy-text="detailList.refEnginRecordNo" />
@@ -100,7 +100,7 @@
           <div class="value">{{ detailList.customerName }}</div>
         </el-col> -->
         <el-col :xs="24" :sm="24" :lg="8" class="item">
-          <div class="label">第几申报</div>
+          <div class="label">第几申报</div>
           <div class="value">{{ detailList.refDeclareNo }}</div>
         </el-col>
         <el-col :xs="24" :sm="24" :lg="8" class="item">
@@ -386,7 +386,7 @@
                 align="left"
                 label="物料编码"
                 prop="materialNumber"
-                min-width="160"
+                min-width="130"
                 show-overflow-tooltip
               >
                 <template slot-scope="scope">
@@ -400,7 +400,7 @@
               align="left"
               label="产品编码"
               prop="materialOldNumber"
-              min-width="160"
+              min-width="130"
               show-overflow-tooltip
             >
               <template slot-scope="scope">
@@ -414,7 +414,7 @@
                 <span>{{ scope.row.materialName }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="left" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip>
+            <el-table-column align="left" label="规格型号" prop="specification" min-width="300" show-overflow-tooltip>
               <template slot-scope="scope">
                 <CopyButton :copy-text="scope.row.specification" />
                 <span>{{ scope.row.specification }}</span>

+ 21 - 3
src/views/deposit_home/deposit_list.vue

@@ -18,7 +18,7 @@
             <el-form ref="screenForm" :model="screenForm" label-width="140px" size="mini" label-position="left">
               <el-row :gutter="20">
                 <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="工程登录编号" prop="refEnginRecordNo">
+                  <el-form-item label="工程信息单号" prop="refEnginRecordNo">
                     <el-input v-model="screenForm.refEnginRecordNo" placeholder="请输入" />
                   </el-form-item>
                 </el-col>
@@ -380,6 +380,23 @@
                       <el-input v-model="screenForm.inFactoryType" placeholder="请输入入厂类型" />
                     </el-form-item>
                   </el-col>
+                  <el-col :xs="24" :sm="12" :lg="6">
+                    <el-form-item label="结算日期 " prop="settlementStatus">
+                      <el-select style="width: 100%" v-model="screenForm.settlementStatus" clearable placeholder="请选择">
+                        <el-option label="为空" :value="1"></el-option>
+                        <el-option label="不为空" :value="0"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :xs="24" :sm="12" :lg="6">
+                    <el-form-item label="寄厂日期 " prop="mailFactoryStatus">
+                      <el-select style="width: 100%" v-model="screenForm.mailFactoryStatus" clearable placeholder="请选择">
+                        <el-option label="为空" :value="1"></el-option>
+                        <el-option label="不为空" :value="0"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+
                 </template>
               </el-row>
             </el-form>
@@ -421,7 +438,7 @@
             <el-table-column align="left" type="selection" width="55" />
             <el-table-column
               align="left"
-              label="工程登录编号"
+              label="工程信息单号"
               prop="refEnginRecordNo"
               min-width="160"
               show-overflow-tooltip
@@ -845,7 +862,8 @@ export default {
           value: false
         }
       ],
-
+      mailFactoryStatus:''  ,
+      settlementStatus:'',
       examineStatusArr: [
         {
           label: '保存',

+ 119 - 150
src/views/deposit_home/refund_list.vue

@@ -21,7 +21,7 @@
             <el-form ref="screenForm" :model="screenForm" label-width="140px" size="mini" label-position="left">
               <el-row :gutter="20">
                 <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="工程登录编号" prop="refEnginRecordNo">
+                  <el-form-item label="工程信息单号" prop="refEnginRecordNo">
                     <el-input v-model="screenForm.refEnginRecordNo" placeholder="请输入" />
                   </el-form-item>
                 </el-col>
@@ -222,6 +222,22 @@
                       />
                     </el-form-item>
                   </el-col>
+                  <el-col :xs="24" :sm="12" :lg="6">
+                    <el-form-item label="结算日期 " prop="settlementStatus">
+                      <el-select style="width: 100%"  v-model="screenForm.settlementStatus" clearable placeholder="请选择">
+                        <el-option label="为空" :value="1"></el-option>
+                        <el-option label="不为空" :value="0"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :xs="24" :sm="12" :lg="6">
+                    <el-form-item label="寄厂日期 " prop="mailFactoryStatus">
+                      <el-select style="width: 100%" v-model="screenForm.mailFactoryStatus" clearable placeholder="请选择">
+                        <el-option label="为空" :value="1"></el-option>
+                        <el-option label="不为空" :value="0"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
                   <!-- <el-col :xs="24" :sm="12" :lg="6">
                     <el-form-item label="产品编码" >
                       <div class="fanwei">
@@ -254,6 +270,10 @@
           </template>
         </Collapse>
       </div>
+      <ul class="ulStyle">
+        <li class="title">金额:<span class="num">{{numSum.amountC || 0}}</span></li>
+        <li class="title">数量:<span class="num">{{numSum.totalC || 0}}</span></li>
+      </ul>
       <!-- 按钮 -->
       <div class="btn-group clearfix">
         <div class="fl">
@@ -300,31 +320,31 @@
             fit
             highlight-current-row
             stripe
+            @selection-change="handleSelectionChange"
             show-summary
             :summary-method="$getSummaries"
-            @selection-change="handleSelectionChange"
           >
             >
-            <el-table-column type="selection" align="center" width="55" />
-            <el-table-column align="left" label="状态" prop="" min-width="160" show-overflow-tooltip>
+            <el-table-column type="selection" align="center" width="55"> </el-table-column>
+            <el-table-column align="left" label="状态" prop="" min-width="60" show-overflow-tooltip>
               <template v-slot="{ row }">
-                <el-tag v-show="row.examineStatus == 'SAVE'" size="mini">保存</el-tag>
-                <el-tag v-show="row.examineStatus == 'WAIT'" size="mini" type="warning">待审核</el-tag>
-                <el-tag v-show="row.examineStatus == 'OK'" size="mini" type="success">通过</el-tag>
-                <el-tag v-show="row.examineStatus == 'FAIL'" size="mini" type="danger">不通过</el-tag>
+                <el-tag size="mini" v-show="row.examineStatus == 'SAVE'">保存</el-tag>
+                <el-tag size="mini" v-show="row.examineStatus == 'WAIT'" type="warning">待审核</el-tag>
+                <el-tag size="mini" v-show="row.examineStatus == 'OK'" type="success">通过</el-tag>
+                <el-tag size="mini" v-show="row.examineStatus == 'FAIL'" type="danger">不通过</el-tag>
               </template>
             </el-table-column>
-            <!--            <el-table-column align="right" label="数量" prop="hasSendQty" min-width="160" show-overflow-tooltip />-->
-            <!--            <el-table-column align="right" label="金额" prop="hasSendQty" min-width="160" show-overflow-tooltip />-->
+            <el-table-column align="right" label="数量" prop="hasSendQty" min-width="60" show-overflow-tooltip />
+            <el-table-column align="right" label="金额" prop="hasSendQty" min-width="100" show-overflow-tooltip />
             <el-table-column
               align="left"
-              label="工程登录编号"
+              label="工程信息单号"
               prop="refEnginRecordNo"
               min-width="160"
               show-overflow-tooltip
             >
               <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.refEnginRecordNo" />
+                <CopyButton :copyText="scope.row.refEnginRecordNo" />
                 <span>{{ scope.row.refEnginRecordNo }}</span>
               </template>
             </el-table-column>
@@ -342,28 +362,30 @@
               align="left"
               label="经销商编码"
               prop="customerNumber"
-              min-width="160"
+              min-width="100"
               show-overflow-tooltip
             >
               <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.customerNumber" />
+                <CopyButton :copyText="scope.row.customerNumber" />
                 <span>{{ scope.row.customerNumber }}</span>
               </template>
             </el-table-column>
             <el-table-column align="left" label="经销商名称" prop="customerName" min-width="260" show-overflow-tooltip>
               <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.customerName" />
+                <CopyButton :copyText="scope.row.customerName" />
                 <span>{{ scope.row.customerName }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="left" label="跨厂区编号" prop="refFactoryNo" min-width="260" show-overflow-tooltip>
+            <el-table-column align="left" label="跨厂区标号" prop="refFactoryNo" min-width="100" show-overflow-tooltip>
               <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.refFactoryNo" />
+                <CopyButton :copyText="scope.row.refFactoryNo" />
                 <span>{{ scope.row.refFactoryNo }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="right" label="厂编号" prop="factoryNo" min-width="160" show-overflow-tooltip />
-            <el-table-column align="right" label="特价编号" prop="specialNo" min-width="160" show-overflow-tooltip />
+            <el-table-column align="right" label="厂编号" prop="factoryNo" min-width="120" show-overflow-tooltip>
+            </el-table-column>
+            <el-table-column align="right" label="特价编号" prop="specialNo" min-width="120" show-overflow-tooltip>
+            </el-table-column>
             <el-table-column
               align="left"
               label="行业类别"
@@ -372,23 +394,31 @@
               show-overflow-tooltip
             >
               <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.refTradeCategory" />
+                <CopyButton :copyText="scope.row.refTradeCategory" />
                 <span>{{ scope.row.refTradeCategory }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="left" label="使用单位" prop="refUseUnit" min-width="160" show-overflow-tooltip>
+            <el-table-column
+              align="left"
+              label="使用单位
+"
+              prop="refUseUnit"
+              min-width="250"
+              show-overflow-tooltip
+            >
               <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.refUseUnit" />
+                <CopyButton :copyText="scope.row.refUseUnit" />
                 <span>{{ scope.row.refUseUnit }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="left" label="区域" prop="refRegionWork" min-width="160" show-overflow-tooltip>
+
+            <el-table-column align="left" label="区域" prop="refRegionWork" min-width="250" show-overflow-tooltip>
               <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.refRegionWork" />
+                <CopyButton :copyText="scope.row.refRegionWork" />
                 <span>{{ scope.row.refRegionWork }}</span>
               </template>
             </el-table-column>
-            <!-- <el-table-column
+            <el-table-column
               v-if="!isCustomer"
               align="left"
               label="格力内部备注"
@@ -399,10 +429,10 @@
               <template slot-scope="scope">
                 <span>{{ scope.row.geLiInerNote }}</span>
               </template>
-            </el-table-column> -->
-            <el-table-column align="left" label="物料编码" prop="materialNumber" min-width="260" show-overflow-tooltip>
+            </el-table-column>
+            <el-table-column align="left" label="物料编码" prop="materialNumber" min-width="120" show-overflow-tooltip>
               <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.materialNumber" />
+                <CopyButton :copyText="scope.row.materialNumber" />
                 <span>{{ scope.row.materialNumber }}</span>
               </template>
             </el-table-column>
@@ -410,77 +440,32 @@
               align="left"
               label="产品编码"
               prop="materialOldNumber"
-              min-width="260"
+              min-width="150"
               show-overflow-tooltip
             >
               <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.materialOldNumber" />
+                <CopyButton :copyText="scope.row.materialOldNumber" />
                 <span>{{ scope.row.materialOldNumber }}</span>
               </template>
             </el-table-column>
 
-            <el-table-column align="left" label="产品名称" prop="materialName" min-width="260" show-overflow-tooltip>
+            <el-table-column align="left" label="产品名称" prop="materialName" min-width="180" show-overflow-tooltip>
               <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.materialName" />
+                <CopyButton :copyText="scope.row.materialName" />
                 <span>{{ scope.row.materialName }}</span>
               </template>
             </el-table-column>
-            <el-table-column align="left" label="规格型号" prop="specification" min-width="300" show-overflow-tooltip>
+            <el-table-column align="left" label="规格型号" prop="specification" min-width="350" show-overflow-tooltip>
               <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.specification" />
+                <CopyButton :copyText="scope.row.specification" />
                 <span>{{ scope.row.specification }}</span>
               </template>
             </el-table-column>
             <el-table-column
-              align="left"
-              label="实装规格型号"
-              prop="realSpecification"
-              min-width="300"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                <div :style="scope.row.realSpecification != scope.row.specification ? { color: 'blue' } : ''">
-                  {{ scope.row.realSpecification }}
-                </div>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="实装物料编号"
-              prop="realMaterialNumber"
-              min-width="150"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                <div :style="scope.row.realMaterialNumber != scope.row.materialNumber ? { color: 'blue' } : ''">
-                  {{ scope.row.realMaterialNumber }}
-                </div>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="实装厂产品编码"
-              prop="realMaterialOldNumber"
-              min-width="200"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                <div :style="scope.row.realMaterialOldNumber != scope.row.materialOldNumber ? { color: 'blue' } : ''">
-                  {{ scope.row.realMaterialOldNumber }}
-                </div>
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="是否退押" prop="isRefundDeposit" min-width="160" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <el-tag v-if="scope.row.isRefundDeposit" type="success" size="small">是</el-tag>
-                <el-tag v-else type="warning" size="small">否</el-tag>
-              </template>
-            </el-table-column>
-            <el-table-column
               align="right"
               label="押金金额"
               prop="itemDepositAmount"
-              min-width="160"
+              min-width="100"
               show-overflow-tooltip
             >
               <template slot-scope="scope">
@@ -489,102 +474,61 @@
             </el-table-column>
             <!-- <el-table-column align="right" label="规格型号" prop="specification" min-width="160" show-overflow-tooltip>
             </el-table-column> -->
-
-            <el-table-column align="right" label="安装日期" prop="installDate" min-width="160" show-overflow-tooltip />
-            <el-table-column align="left" label="审核人" prop="confirmName" min-width="160" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.confirmName" />
-                <span>{{ scope.row.confirmName }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column align="right" label="金额" prop="totalPrice" min-width="160" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.totalPrice | numToFixed }}
-              </template>
+            <el-table-column align="right" label="安装日期" prop="installDate" min-width="160" show-overflow-tooltip>
             </el-table-column>
-            <el-table-column align="right" label="订单数量" prop="itemQty" min-width="160" show-overflow-tooltip />
-
-            <!-- <el-table-column
-              align="right"
-              label="合同数量"
-              prop="itemContractQty"
-              min-width="160"
-              show-overflow-tooltip
-            >
+            <el-table-column align="left" label="审核人" prop="confirmName" min-width="100" show-overflow-tooltip>
               <template slot-scope="scope">
-                {{ scope.row.itemContractQty || 0}}
+                <CopyButton :copyText="scope.row.confirmName" />
+                <span>{{ scope.row.confirmName }}</span>
               </template>
             </el-table-column>
             <el-table-column
-              align="right"
-              label="合同单价"
-              prop="itemContractPrice"
+              align="left"
+              label="资料审核日期"
+              prop="refDatumAcceptDate"
               min-width="160"
               show-overflow-tooltip
-            >
+            />
+            <el-table-column align="right" label="金额" prop="totalPrice" min-width="100" show-overflow-tooltip>
               <template slot-scope="scope">
-                {{ scope.row.itemContractPrice | numToFixed }}
+                {{ scope.row.totalPrice | numToFixed }}
               </template>
             </el-table-column>
-            <el-table-column
-              align="right"
-              label="合同金额"
-              prop="itemContractAmount"
-              min-width="160"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                {{ scope.row.itemContractAmount | numToFixed }}
-              </template>
-            </el-table-column> -->
-            <el-table-column
-              align="right"
-              label="发货数量"
-              prop="orderHasSendQty"
-              min-width="160"
-              show-overflow-tooltip
-            />
+            <el-table-column align="right" label="订单数量" prop="itemQty" min-width="80" show-overflow-tooltip />
+            <!-- <el-table-column align="right" label="合同单价" prop="contractPrice" min-width="160" show-overflow-tooltip >
+                <template slot-scope="scope">
+                  {{ scope.row.contractPrice | numToFixed}}
+                </template>
+              </el-table-column> -->
+
+            <el-table-column align="right" label="发货数量" prop="hasSendQty" min-width="80" show-overflow-tooltip />
             <!-- <el-table-column align="right" label="押金金额" prop="depositAmount" min-width="160" show-overflow-tooltip>
               <template slot-scope="scope">
                 {{ scope.row.depositAmount | numToFixed}}
               </template>
             </el-table-column> -->
-
-            <el-table-column align="right" label="上交资料" prop="itemDataQty" min-width="160" show-overflow-tooltip />
+            <!--            <el-table-column align="right" label="上交资料" prop="itemDataQty" min-width="160" show-overflow-tooltip />-->
             <el-table-column fixed="right" align="center" label="操作" min-width="160" show-overflow-tooltip>
               <template slot-scope="scope">
                 <el-button
-                  v-if="scope.row.examineStatus == 'WAIT' && $checkBtnRole('examine', $route.meta.roles)"
                   type="text"
                   class="textColor"
+                  v-if="scope.row.examineStatus == 'WAIT' && $checkBtnRole('examine', $route.meta.roles)"
                   @click="examineFn(scope.row.depositManageId)"
-                >审批
-                </el-button>
+                >审批</el-button
+                >
 
                 <el-button
+                  type="text"
+                  class="textColor"
                   v-if="
                     scope.row.examineStatus == 'SAVE' ||
-                      scope.row.examineStatus == 'OK' ||
-                      scope.row.examineStatus == 'FAIL'
+                    scope.row.examineStatus == 'OK' ||
+                    scope.row.examineStatus == 'FAIL'
                   "
-                  type="text"
-                  class="textColor"
                   @click="infoFn(scope.row.depositManageId)"
-                >详情
-                </el-button>
-                <el-popconfirm
-                  v-if="scope.row.examineStatus == 'OK' && !scope.row.isRefundDeposit && scope.row.takeDeposit!==true"
-                  style="margin-left: 10px"
-                  title="二次退押吗?"
-                  @onConfirm="secondRefund(scope.row)"
+                >详情</el-button
                 >
-                  <el-button
-                    slot="reference"
-                    type="text"
-                    size="mini"
-                  >二次退押
-                  </el-button>
-                </el-popconfirm>
               </template>
             </el-table-column>
           </el-table>
@@ -614,7 +558,8 @@ import {
   getDepositManageList,
   getDepositManageDate,
   getDepositManagExport,
-  secondRefund
+  secondRefund,
+  getDepositCountList
 } from '@/api/engin_deposit/refund_list'
 import { downloadFiles, handleImport } from '@/utils/util'
 import ExamineDialog from '@/components/Common/examine-dialog'
@@ -703,11 +648,14 @@ export default {
       showSurrender: true,
       detailId: '',
       selectData: [],
+      mailFactoryStatus:''  ,
+      settlementStatus:'',
       isShowExamineDialog: false,
       examineForm: {
         status: 'OK',
         remark: ''
-      }
+      },
+      numSum:{}
     }
   },
   computed: {
@@ -716,6 +664,11 @@ export default {
     }
   },
   created() {
+    getDepositCountList({
+      enginOrderType: this.enginOrderType
+    }).then(res=>{
+      this.numSum = res.data
+    })
     this.getDataList({
       pageSize: this.pageSize,
       pageNum: this.currentPage,
@@ -1000,4 +953,20 @@ export default {
     margin: 0 20px;
   }
 }
+.ulStyle{
+  list-style: none;
+  margin: 0;
+  padding: 10px 0;
+  background-color: #ffffff;
+  z-index: 1;
+}
+.title{
+  display: inline-block;
+  font-weight: 700;
+  margin-right: 20px;
+}
+.num{
+  padding-left: 6px;
+  font-weight: 400;
+}
 </style>

+ 1 - 1
src/views/engin_deposit/components/deposit-apply-deduction.vue

@@ -9,7 +9,7 @@
     <div class="diy-table-1">
       <el-row :gutter="0">
         <el-col :xs="12" :sm="8" :lg="8" class="item">
-          <div class="label">工程登录编号</div>
+          <div class="label">工程信息单号</div>
           <div class="value">2022123233435342</div>
         </el-col>
         <el-col :xs="12" :sm="8" :lg="8" class="item">

+ 1 - 1
src/views/engin_deposit/components/deposit-apply-surrender.vue

@@ -10,7 +10,7 @@
       <el-form ref="form" :model="details">
         <el-row :gutter="0">
           <el-col :xs="12" :sm="8" :lg="8" class="item">
-            <div class="label">工程登录编号</div>
+            <div class="label">工程信息单号</div>
             <div class="value">{{ details.refEnginRecordNo }}</div>
           </el-col>
           <el-col :xs="12" :sm="8" :lg="8" class="item">

+ 1 - 1
src/views/engin_deposit/components/deposit_list-detail.vue

@@ -17,7 +17,7 @@
         <el-form ref="form" :model="details">
           <el-row :gutter="0">
             <el-col :xs="12" :sm="8" :lg="8" class="item">
-              <div class="label">工程登录编号</div>
+              <div class="label">工程信息单号</div>
               <div class="value">{{ details.refEnginRecordNo }}</div>
             </el-col>
             <el-col :xs="12" :sm="8" :lg="8" class="item">

+ 2 - 2
src/views/engin_deposit/components/refund_list-detail.vue

@@ -11,7 +11,7 @@
       <el-row :gutter="0">
         <el-col :xs="12" :sm="24" :lg="8" class="item">
           <div class="label">
-            {{ detailList.enginOrderType == 'HOME' ? '工程登录编号' : '工程信息编号' }}
+            {{ detailList.enginOrderType == 'HOME' ? '工程信息单号' : '工程信息编号' }}
           </div>
           <div class="value">{{ detailList.refEnginRecordNo }}</div>
         </el-col>
@@ -97,7 +97,7 @@
           <div class="value">{{ detailList.customerName }}</div>
         </el-col> -->
         <el-col :xs="24" :sm="24" :lg="8" class="item">
-          <div class="label">第几申报</div>
+          <div class="label">第几申报</div>
           <div class="value">{{ detailList.refDeclareNo }}</div>
         </el-col>
         <el-col :xs="24" :sm="24" :lg="8" class="item">

+ 2 - 2
src/views/engin_deposit/deposit_list.vue

@@ -11,7 +11,7 @@
         <el-form ref="screenForm" :model="screenForm" label-width="120px" size="mini" label-position="left">
           <el-row :gutter="20">
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="工程登录编号" prop="refEnginRecordNo">
+              <el-form-item label="工程信息单号" prop="refEnginRecordNo">
                 <el-input v-model="screenForm.refEnginRecordNo" placeholder="请输入" />
               </el-form-item>
             </el-col>
@@ -95,7 +95,7 @@
             <el-table-column align="left" type="selection" width="55" />
             <el-table-column
               align="left"
-              label="工程登录编号"
+              label="工程信息单号"
               prop="refEnginRecordNo"
               min-width="160"
               show-overflow-tooltip

+ 2 - 2
src/views/engin_deposit/refund_list.vue

@@ -14,7 +14,7 @@
         <el-form ref="searchForm" :model="searchForm" label-width="160px" size="mini" label-position="left">
           <el-row :gutter="20">
             <el-col :xs="24" :sm="12" :lg="6">
-              <el-form-item label="工程登录编号" prop="refEnginRecordNo">
+              <el-form-item label="工程信息单号" prop="refEnginRecordNo">
                 <el-input v-model="searchForm.refEnginRecordNo" placeholder="请输入"></el-input>
               </el-form-item>
             </el-col>
@@ -130,7 +130,7 @@
             </el-table-column>
             <el-table-column
               align="left"
-              label="工程登录编号"
+              label="工程信息单号"
               prop="refEnginRecordNo"
               min-width="160"
               show-overflow-tooltip

+ 38 - 4
src/views/finance/change_apply.vue

@@ -61,8 +61,39 @@
           <el-table-column label="序号" type="index" align="left" width="100" show-overflow-tooltip></el-table-column>
           <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="160" show-overflow-tooltip>
             <template slot-scope="scope">
-              <div v-if="scope.$index == 0">{{ searchForm.customerNumber }}</div>
-              <div v-if="scope.$index == 1">{{ scope.row.customerNumber }}</div>
+              <div v-if="scope.$index == 0">
+                <div v-if="isCustomer">{{ searchForm.customerNumber }}</div>
+              <div v-else>
+                <el-select
+                  size="mini"
+                  class="dateStyle"
+                  @change="changeCustomerNumber($event,0)"
+                  filterable
+                  v-model="scope.row.customerNumber"
+                  placeholder="请选择"
+                >
+                  <el-option v-for="item in customerData" :key="item.id" :label="item.number" :value="item.number"> </el-option>
+                </el-select>
+
+              </div>
+              </div>
+              <div v-if="scope.$index == 1">
+                <div v-if="isCustomer">{{ scope.row.customerNumber }}</div>
+                <div v-else>
+                  <el-select
+                    size="mini"
+                    class="dateStyle"
+                    @change="changeCustomerNumber($event,1)"
+
+                    filterable
+                    v-model="scope.row.customerNumber"
+                    placeholder="请选择"
+                  >
+                    <el-option v-for="item in customerData" :key="item.id" :label="item.number" :value="item.number"> </el-option>
+                  </el-select>
+
+                </div>
+                </div>
             </template>
           </el-table-column>
           <el-table-column align="left" label="经销商名称" prop="customerName" min-width="260" show-overflow-tooltip>
@@ -174,7 +205,7 @@ export default {
         customerNumber: ''
       },
       customerData: [], //经销商数据
-      typeList: [] //返利类型数据
+      typeList: [], //返利类型数据
       // rules: {
       //   theTime: [
       //     {
@@ -184,6 +215,7 @@ export default {
       //     },
       //   ],
       // },
+      isCustomer: JSON.parse(localStorage.getItem('supply_user')).isCustomer
     }
   },
   computed: {
@@ -225,7 +257,9 @@ export default {
     //   }
     //   return null;
     // },
-
+    changeCustomerNumber(e,index){
+      this.$set(this.dataList[index],'customerNumber',e)
+    },
     resetFn() {
       this.searchForm.theTime = null
       this.dataList.forEach(v => {

+ 1 - 0
src/views/finance/components/balance_sum-detail.vue

@@ -36,6 +36,7 @@
             <el-form-item label="日期时间" prop="">
               <el-date-picker
                 type="datetimerange"
+:default-time="['00:00:00','23:59:59']"
                 range-separator="至"
                 start-placeholder="开始日期"
                 end-placeholder="结束日期"

+ 6 - 0
src/views/finance/components/rebate_list-confirm.vue

@@ -273,6 +273,12 @@ export default {
       this.examineStatus = res.data.items[0].examineStatus
       this.saveDataList = this.deepCopy(res.data.items)
       this.dataList = res.data.items
+
+      if (this.state !=1){
+        this.dataList.forEach(k=>{
+          k.rebateAmount = k.amount
+        })
+      }
     },
     goBack() {
       this.$parent.showPage = 1

+ 14 - 1
src/views/finance/rebate_list.vue

@@ -69,6 +69,15 @@
                   </el-form-item>
                 </el-col>
                 <el-col :xs="24" :sm="12" :lg="6" >
+                  <el-form-item label="制单人" prop="createBy">
+                    <el-input v-model="searchForm.createBy" placeholder="请输入制单人"></el-input>
+                  </el-form-item>
+                </el-col><el-col :xs="24" :sm="12" :lg="6" >
+                <el-form-item label="审核人" prop="examineBy">
+                  <el-input v-model="searchForm.examineBy" placeholder="请输入审核人"></el-input>
+                </el-form-item>
+              </el-col>
+                <el-col :xs="24" :sm="12" :lg="6" >
                   <el-form-item label="备注1" prop="remark1">
                     <el-input v-model="searchForm.remark1" placeholder="请输入备注1"></el-input>
                   </el-form-item>
@@ -622,7 +631,9 @@ export default {
         endTime: '',
         examineStatus: '',
         isConfirm: '',
-        remark1:''
+        remark1:'',
+        examineBy:'',
+        createBy:''
       }, //搜索表单
       listLoading: false, // 列表加载loading
       showPage: 1,
@@ -769,6 +780,8 @@ export default {
         customerNumber: this.searchForm.customerNumber,
         endTime: this.searchForm.endTime,
         remark1: this.searchForm.remark1,
+        examineBy:this.searchForm.examineBy,
+        createBy:this.searchForm.createBy,
         examineStatus: this.searchForm.examineStatus,
         id: this.searchForm.id,
         isConfirm: this.searchForm.isConfirm,

+ 22 - 17
src/views/finance/receipt_list.vue

@@ -15,9 +15,9 @@
                   <el-form-item label="单据类型" prop="billType">
                     <!-- <el-input v-model="searchForm.billType" placeholder="请输入"></el-input> -->
                     <el-select v-model="searchForm.billType" class="selectStyle" placeholder="请选择" filterable>
-                      <el-option label="收款单" value="1"> </el-option>
-                      <el-option label="付款单" value="3"> </el-option>
-                      <el-option label="退款单" value="2"> </el-option>
+                      <el-option label="收款单" value="1"></el-option>
+                      <el-option label="付款单" value="3"></el-option>
+                      <el-option label="退款单" value="2"></el-option>
                     </el-select>
                   </el-form-item>
                 </el-col>
@@ -36,7 +36,7 @@
                       filterable
                       clearable
                     >
-                      <el-option v-for="(v, i) in customerList" :key="i" :label="v.name" :value="v.name"> </el-option>
+                      <el-option v-for="(v, i) in customerList" :key="i" :label="v.name" :value="v.name"></el-option>
                     </el-select>
                   </el-form-item>
                 </el-col>
@@ -50,7 +50,7 @@
                       filterable
                       clearable
                     >
-                      <el-option v-for="(v, i) in customerList" :key="i" :label="v.name" :value="v.name"> </el-option>
+                      <el-option v-for="(v, i) in customerList" :key="i" :label="v.name" :value="v.name"></el-option>
                     </el-select>
                   </el-form-item>
                 </el-col>
@@ -100,7 +100,7 @@
                       filterable
                       clearable
                     >
-                      <el-option v-for="(v, i) in orage" :key="i" :label="v.label" :value="v.value"> </el-option>
+                      <el-option v-for="(v, i) in orage" :key="i" :label="v.label" :value="v.value"></el-option>
                     </el-select>
                   </el-form-item>
                 </el-col>
@@ -112,14 +112,14 @@
       <!-- 按钮 -->
       <div class="btn-group clearfix">
         <div class="fl">
-          <!-- <el-button
+          <el-button
             type="primary"
             size="mini"
             v-if="$checkBtnRole('print', $route.meta.roles)"
             @click="toPrint"
             :disabled="tableSelection.length < 1"
             >打印发货单
-          </el-button> -->
+          </el-button>
         </div>
         <div class="fr">
           <!-- <ExportButton :exUrl="'k3/receipt/export'" :exParams="exParams" class="exportClass" /> -->
@@ -150,10 +150,10 @@
                   scope.row.billType == 1
                     ? '收款单'
                     : scope.row.billType == 2
-                    ? '退款单'
-                    : scope.row.billType == 3
-                    ? '付款单'
-                    : ''
+                      ? '退款单'
+                      : scope.row.billType == 3
+                        ? '付款单'
+                        : ''
                 }}
               </template>
             </el-table-column>
@@ -242,16 +242,18 @@
                   class="textColor"
                   v-if="$checkBtnRole('examine', $route.meta.roles) && scope.row.status == 'C'"
                   @click="NoExamineFn(scope.row.id)"
-                  >弃审</el-button
+                >弃审
+                </el-button
                 >
                 <el-button type="text" class="textColor" @click="seeFn(scope.row.id)">查看</el-button>
-                <!-- <el-button
+                <el-button
                   type="text"
                   class="textColor"
                   v-if="$checkBtnRole('print', $route.meta.roles)"
                   @click="toPrint(scope.row, 2)"
-                  >打印</el-button
-                > -->
+                >打印
+                </el-button
+                >
               </template>
             </el-table-column>
           </el-table>
@@ -280,6 +282,7 @@
 
 <script>
 import { disAutoConnect, hiprint } from 'vue-plugin-hiprint'
+
 disAutoConnect()
 import printPreview from './components/design/preview.vue'
 import { getCompanyList } from '@/api/user'
@@ -289,6 +292,7 @@ import ReceiptListDetail from './components/receipt_list-detail'
 import ReceiptPrint from '@/views/finance/components/receipt_print.vue'
 import { changeNumberMoneyToChinese, dateFormat } from '@/utils/util'
 import { numToFixed } from '@/filters'
+
 export default {
   components: {
     ReceiptPrint,
@@ -345,7 +349,8 @@ export default {
     this.getCustomerDataList()
     this.getCompanyList()
   },
-  mounted() {},
+  mounted() {
+  },
   methods: {
     //获取经销商列表
     async getCustomerDataList() {

+ 190 - 14
src/views/finance/receivable_list.vue

@@ -22,10 +22,10 @@
                 <el-col :xs="24" :sm="12" :lg="6">
                   <el-form-item label="单据来源" prop="source">
                     <el-select v-model="searchForm.source" class="selectStyle" placeholder="请选择" filterable>
-                      <el-option value="工程押金"> </el-option>
-                      <el-option value="保证金"> </el-option>
-                      <el-option value="工程价差"> </el-option>
-                      <el-option value="仓储费"> </el-option>
+                      <el-option value="工程押金"></el-option>
+                      <el-option value="保证金"></el-option>
+                      <el-option value="工程价差"></el-option>
+                      <el-option value="仓储费"></el-option>
                     </el-select>
                   </el-form-item>
                 </el-col>
@@ -38,7 +38,7 @@
                   <el-form-item label="往来单位" prop="userName">
                     <!-- <el-input v-model="searchForm.userName" placeholder="请输入"></el-input> -->
                     <el-select class="selectStyle" v-model="searchForm.userName" placeholder="请选择" filterable>
-                      <el-option v-for="(v, i) in customerList" :key="i" :label="v.name" :value="v.name"> </el-option>
+                      <el-option v-for="(v, i) in customerList" :key="i" :label="v.name" :value="v.name"></el-option>
                     </el-select>
                   </el-form-item>
                 </el-col>
@@ -82,12 +82,21 @@
       <div class="btn-group clearfix">
         <div class="fl">
           <el-button
+            type="primary"
+            size="mini"
+            v-if="$checkBtnRole('print', $route.meta.roles)"
+            @click="toPrint"
+            :disabled="tableSelection.length < 1"
+          >打印发货单
+          </el-button>
+          <el-button
             v-if="$checkBtnRole('add', $route.meta.roles)"
             type="primary"
             icon="el-icon-plus"
             size="mini"
             @click="addFn"
-            >新建</el-button
+          >新建
+          </el-button
           >
 
           <el-popconfirm
@@ -97,7 +106,8 @@
             title="这是一段内容确定删除吗?"
           >
             <el-button :disabled="deleList.length < 1" slot="reference" type="danger" icon="el-icon-minus" size="mini"
-              >批量删除</el-button
+            >批量删除
+            </el-button
             >
           </el-popconfirm>
         </div>
@@ -109,6 +119,7 @@
       <div class="mymain-container">
         <div class="table">
           <el-table
+            ref="table"
             v-loading="listLoading"
             :data="dataList"
             element-loading-text="Loading"
@@ -119,8 +130,10 @@
             @selection-change="selectionChangeFn"
             show-summary
             :summary-method="$getSummaries"
+            @select="handleSelectAll"
+            @select-all="handleSelectAll"
           >
-            <el-table-column align="center" type="selection" width="51"> </el-table-column>
+            <el-table-column align="center" type="selection" width="51"></el-table-column>
             <el-table-column
               align="left"
               label="单据类型"
@@ -206,25 +219,37 @@
             <el-table-column align="center" label="操作" min-width="160" show-overflow-tooltip fixed="right">
               <template slot-scope="scope">
                 <el-button
+                  type="text"
+                  class="textColor"
+                  v-if="$checkBtnRole('print', $route.meta.roles)"
+                  @click="toPrint(scope.row, 2)"
+                >打印
+                </el-button
+                >
+                <el-button
                   v-if="
                     (scope.row.examineStatus == 'WAIT' || scope.row.examineStatus == 'FAIL') &&
                     $checkBtnRole('examine', $route.meta.roles)
                   "
                   type="text"
                   @click="approvalFn(scope.row.id)"
-                  >审批</el-button
+                >审批
+                </el-button
                 >
                 <el-button type="text" v-if="scope.row.examineStatus == 'SAVE'" @click="bringFn(scope.row.id)"
-                  >提审</el-button
+                >提审
+                </el-button
                 >
                 <el-button
                   type="text"
                   v-if="scope.row.examineStatus == 'OK' || scope.row.examineStatus == 'FAIL'"
                   @click="unApprovalFn(scope.row.id)"
-                  >弃审</el-button
+                >弃审
+                </el-button
                 >
                 <el-button type="text" v-if="scope.row.examineStatus == 'SAVE'" @click="detailFn(scope.row.id, 'edit')"
-                  >编辑</el-button
+                >编辑
+                </el-button
                 >
                 <el-button type="text" @click="detailFn(scope.row.id, 'detail')">详情</el-button>
               </template>
@@ -249,25 +274,38 @@
     <ReceivableListAdd @updateList="updateList" v-else-if="showPage == 2" />
     <ReceivableListApproval :approvalId="approvalId" @updateList="updateList" v-else-if="showPage == 3" />
     <ReceivableListDetail :approvalId="approvalId" :czType="czType" v-else-if="showPage == 4" />
+    <print-preview ref="preView" />
   </div>
 </template>
 
 <script>
+
 import { getCustomerList } from '@/api/finance/wallet'
 import {
   getFinanceOtherReceList,
   getFinanceOtherReceDelete,
+  getFinanceOtherReceDetail,
   getFinanceOtherReceApply,
   getFinanceOtherReceAbandon
 } from '@/api/finance/receivable_list'
 import ReceivableListAdd from './components/receivable_list-add'
 import ReceivableListApproval from './components/receivable_list-approval'
 import ReceivableListDetail from './components/receivable_list-detail'
+import { disAutoConnect, hiprint } from 'vue-plugin-hiprint'
+
+disAutoConnect()
+import printPreview from './components/design/preview.vue'
+
+import { getCompanyList } from '@/api/user'
+import { numToFixed } from '@/filters'
+import { changeNumberMoneyToChinese } from '@/utils/util'
+
 export default {
   components: {
     ReceivableListAdd,
     ReceivableListApproval,
-    ReceivableListDetail
+    ReceivableListDetail,
+    printPreview
   },
   data() {
     return {
@@ -290,7 +328,10 @@ export default {
       approvalId: null,
       czType: '',
       isCollapse: true,
-      deleList: []
+      deleList: [],
+      hiprintTemplate: '',
+      company: '',
+      tableSelection: []
     }
   },
   computed: {
@@ -309,6 +350,7 @@ export default {
   created() {
     this.getDataList({ pageSize: this.pageSize, pageNum: this.currentPage })
     this.getCustomerDataList()
+    this.getCompanyList()
   },
   methods: {
     //获取经销商列表
@@ -339,6 +381,9 @@ export default {
         examineStatus: this.examine
       })
     },
+    handleSelectAll(selection) {
+      this.tableSelection = this.$refs.table.selection
+    },
     //radio切换'
     changeRadioGroupFn(v) {
       this.getDataList({
@@ -424,6 +469,135 @@ export default {
     //新建
     addFn() {
       this.showPage = 2
+    },
+    // 点击打印
+    async toPrint(row, type) {
+      // 初始化模板,否则生成的模板叠加
+      hiprint.init()
+      this.hiprintTemplate = new hiprint.PrintTemplate()
+      // 兼容批量打印
+      let params = !type ? this.tableSelection : [row.id]
+      let len = params.length
+      let loadingLen = len
+      // 使用 i-- 提升for效率
+      this.$startLoading()
+      for (let i = len; i > 0; i--) {
+        try {
+          const { data } = await getFinanceOtherReceDetail({
+            id: params[i - 1].id || params[i - 1]
+          })
+          // 模板基础配置
+          this.panel = this.hiprintTemplate.addPrintPanel({
+            height: 140,
+            width: 241,
+            fontFamily: '黑体',
+            fontSize: 13,
+            paperFooter: 340,
+            paperHeader: 10,
+            paperNumberDisabled: true
+          })
+
+          // 获取收款单模板和基础配置
+          this.panel.addPrintHtml({
+            options: {
+              width: 633,
+              top: 30,
+              left: 20,
+              fontFamily: '黑体',
+              fontSize: 13,
+              content: this.setTableDom(data)
+            }
+          })
+
+          loadingLen--
+        } catch (error) {
+          console.log(999)
+          this.$endLoading()
+          return
+        }
+      }
+      if (loadingLen === 0) {
+        this.$endLoading()
+      }
+      console.log(333)
+      // 预览打印内容
+      this.$refs.preView.show(this.hiprintTemplate, this.panel)
+    },
+    getCompanyList() {
+      getCompanyList().then(res => {
+        this.company = res.data ? res.data[0].companyName : ''
+      })
+    },
+    // 收款单打印模板
+    setTableDom(data) {
+      console.log(this.company, this.nowDate())
+      return `
+       <div style="font-family:'黑体';">
+          <h1 style="text-align:center">${this.company}其他应收单</h1>
+          <div >
+            <table border=".5" cellspacing="0" width="856" height="250"
+             style="border-color: rgb(0,0,0);
+              border-collapse: collapse;
+              border-style: none;
+              border: 1px solid rgb(0,0,0);
+              font-weight: normal;
+              direction: ltr;
+              padding-bottom: 0pt;
+              padding-left: 4pt;
+              padding-right: 4pt;
+              padding-top: 0pt;
+              text-decoration: none;
+              vertical-align: middle;
+              box-sizing: border-box;
+              word-wrap: break-word;
+              word-break: break-all;">
+                <tr>
+                  <td>单据编号</td>
+                  <td>${data.code}</td>
+                  <td>业务日期</td>
+                  <td>${data.createTime}</td>
+                  <td>打印日期</td>
+                <td>${this.nowDate()}</td>
+                </tr>
+                <tr>
+                  <td>付款单位</td>
+                  <td colspan="5">${data.items[0].customerName}</td>
+                </tr>
+                <tr>
+                  <td>钱包</td>
+                  <td>${data.items[0].customerWalletName}</td>
+                  <td>实收金额</td>
+                  <td style="text-align:right">${numToFixed(data.totalAmount)}</td>
+                  <td colspan="2">${changeNumberMoneyToChinese(data.totalAmount)}</td>
+                </tr>
+                <tr>
+                  <td>备注</td>
+                  <td colspan="5">${data.remark}</td>
+                </tr>
+            </table>
+          </div>
+          <div style="margin:100px 0 0 0">
+            <div>打印</div>
+          </div>
+       </div>
+      `
+    },
+    // 获取当前时间
+    nowDate() {
+      var date = new Date()
+      var seperator1 = '-'
+      var year = date.getFullYear()
+      var month = date.getMonth() + 1
+      var strDate = date.getDate()
+      if (month >= 1 && month <= 9) {
+        month = '0' + month
+      }
+      if (strDate >= 0 && strDate <= 9) {
+        strDate = '0' + strDate
+      }
+      var currentdate = year + seperator1 + month + seperator1 + strDate
+      console.log(currentdate)
+      return currentdate
     }
   }
 }
@@ -432,9 +606,11 @@ export default {
 .selectStyle {
   width: 100%;
 }
+
 .dateStyle {
   width: 100%;
 }
+
 .delClass {
   margin-left: 10px;
 }

+ 1 - 1
src/views/finance/wallet.vue

@@ -79,7 +79,7 @@
             <el-table-column align="left" label="更新时间" prop="updateTime" min-width="160" show-overflow-tooltip />
             <el-table-column align="right" label="余额" prop="amount" min-width="160" show-overflow-tooltip>
               <template slot-scope="scope">
-                {{ scope.row.amount | numToFixed }}
+                {{ (scope.row.amount-scope.row.usedCreditAmount)  | numToFixed }}
               </template>
             </el-table-column>
             <el-table-column

+ 1 - 0
src/views/notice/index.vue

@@ -30,6 +30,7 @@
                   <el-date-picker
                     v-model="screenForm.date"
                     type="datetimerange"
+:default-time="['00:00:00','23:59:59']"
                     range-separator="至"
                     style="width: 100%"
                     value-format="yyyy-MM-dd HH:mm:ss"

+ 11 - 0
src/views/sales/sales_management.vue

@@ -0,0 +1,11 @@
+<template>
+  <div>
+      <keep-alive>
+        <router-view />
+      </keep-alive>
+  </div>
+</template>
+
+<script>
+export default {}
+</script>

+ 170 - 0
src/views/sales_control/adjust_warehouse.vue

@@ -0,0 +1,170 @@
+<template>
+  <div>
+    <template-page
+      v-if="!pageType"
+      style="width: 100%;
+      height: 100%;"
+      ref="pageRef"
+      :getList="getList"
+      :exportList="exportList"
+      :operation="operation()"
+      :columnParsing="columnParsing"
+      :optionsEvensGroup="optionsEvensGroup"
+    >
+    </template-page>
+    <warehouse-form v-else-if="pageType==1" />
+    <warehouse-examine v-else-if="pageType==2" :detailsId="detailsId" />
+    <warehouse-details v-else :detailsId="detailsId" />
+  </div>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+
+import { getFrontListCustomerAcc, exportCustomerStockOrderBean, deleteCustomerStockOrder } from '@/api/stock'
+import WarehouseForm from '@/views/sales_control/components/WarehouseForm'
+import WarehouseExamine from '@/views/sales_control/components/WarehouseExamine'
+import WarehouseDetails from '@/views/sales_control/components/WarehouseDetails'
+
+export default {
+  components: { TemplatePage, WarehouseForm, WarehouseExamine, WarehouseDetails },
+  mixins: [import_mixin],
+  data() {
+    return {
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '库存调整',
+              click: this.addWarehouse
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
+      detailsId: '',
+      pageType: 0
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getFrontListCustomerAcc(...p)
+    },
+    // 列表导出函数
+    exportList: exportCustomerStockOrderBean,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    addWarehouse() {
+      this.pageType = 1
+      console.log(this.pageType, '333')
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            <el-button
+              size="mini"
+              type="text" onClick={() => {
+              this.detailsId = row.id
+              this.pageType = 3
+
+            }}
+            >
+              查看
+            </el-button>
+            {row.examineStatus != 'OK'&& row.examineStatus != 'FAIL' ? (
+              <el-button
+                size="mini"
+                type="text" onClick={() => {
+                this.detailsId = row.id
+                this.pageType = 2
+              }}
+              >
+                审批
+              </el-button>
+            ) : null}
+            {row.examineStatus != 'OK'&&row.examineStatus != 'FAIL'  ? (
+            <el-popconfirm
+              onOnConfirm={() => {
+                deleteCustomerStockOrder({ id: row.id }).then(res => {
+                  this.$successMsg('删除成功')
+                  this.$refs.pageRef.refreshList()
+                })
+              }}
+              title="删除吗?"
+            >
+              <el-button slot="reference" size="mini" type="text">删除</el-button>
+            </el-popconfirm>
+            ) : null}
+          </div>
+        )
+      }
+
+    }
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 100% !important;
+}
+</style>

+ 118 - 0
src/views/sales_control/components/WarehouseDetails.vue

@@ -0,0 +1,118 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" content="详情" style=" padding: 20px 20px 0 20px;"></el-page-header>
+    <warehousing-header page-type="details" :details="details" />
+    <sales-table :dataList="dataList" :column="column">
+    </sales-table>
+    <div class="warehousing" v-if="details.approvalName">
+      <div class="diy-table-1">
+        <el-row>
+          <el-col :span="8" class="item">
+            <div class="label">审核人</div>
+            <div class="value">{{ details.approvalName }}</div>
+          </el-col>
+          <el-col :span="8" class="item">
+            <div class="label">制单时间</div>
+            <div class="value">{{ details.approvalTime }}</div>
+          </el-col>
+          <el-col :span="8" class="item">
+            <div class="label">审核结果</div>
+            <div class="value">{{ statusFilter[details.examineStatus] }}</div>
+          </el-col>
+          <el-col :span="24" class="item">
+            <div class="label">备注</div>
+            <div class="value">{{ details.approvalRemark }}</div>
+          </el-col>
+        </el-row>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import WarehousingHeader from '@/components/WarehousingHeader/WarehousingHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import { getFrontDetail } from '@/api/stock'
+
+export default {
+  name: 'WarehouseExamine',
+  props: ['detailsId'],
+  components: {
+    WarehousingHeader,
+    SalesTable
+  },
+  data() {
+    return {
+      dataList: [],
+      details: {},
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialOldNumber',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+        {
+          prop: 'stockLockQty',
+          label: '库存',
+          width: '180'
+        },
+        {
+          prop: 'directFlag',
+          label: '发生方向',
+          width: '180'
+        },
+        {
+          prop: 'stockChangeQty',
+          label: '数量',
+          width: '180',
+        },
+        {
+          prop: 'remark',
+          label: '备注',
+
+
+        }
+      ],
+      statusFilter: {
+        SAVE: '保存',
+        WAIT: '待审核',
+        OK: '通过',
+        FAIL: '不通过',
+        CLOSE: '关闭'
+      }
+    }
+  },
+  created() {
+    this.getFrontDetail()
+  },
+  methods: {
+    getFrontDetail() {
+      getFrontDetail({ id: this.detailsId }).then(res => {
+        this.details = res.data
+        res.data.orders.forEach(k=>{
+          k.directFlag = k.directFlag ==1?'增加':'减少'
+        })
+        this.dataList = res.data.orders
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.warehousing {
+  margin: 20px;
+  padding: 20px;
+  box-shadow: 0 0 8px 0 rgb(0 0 0 / 20%);
+}
+</style>

+ 141 - 0
src/views/sales_control/components/WarehouseExamine.vue

@@ -0,0 +1,141 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" content="审核" style=" padding: 20px 20px 0 20px;"></el-page-header>
+    <warehousing-header page-type="examine" :details="details" />
+    <sales-table :dataList="dataList" :column="column">
+    </sales-table>
+    <div class="warehousing">
+      <el-form
+        label-position="left"
+        label-width="120px"
+        :model="screenForm"
+        size="mini"
+      >
+        <el-row :gutter="20">
+          <el-col :xs="24" :ms="8" :lg="8">
+            <el-form-item label="审核人" prop="customerNumber" >
+              <el-input disabled v-model="screenForm.customerNumber" placeholder="审核人" size="mini" />
+            </el-form-item>
+          </el-col>
+
+          <el-col :xs="24" :ms="8" :lg="8">
+            <el-form-item label="审核时间" prop="changeTime">
+              <el-date-picker
+                disabled
+                v-model="screenForm.changeTime"
+                type="datetime"
+                size="mini"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                placeholder="选择日期"
+              />
+            </el-form-item>
+          </el-col>
+
+          <el-col :xs="24" :ms="24" :lg="24">
+            <el-form-item label="备注" prop="approvalRemark">
+              <el-input v-model="screenForm.approvalRemark" placeholder="备注" size="mini" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :ms="24" :lg="24">
+            <div>
+              <el-button type="primary" size="mini" @click="handelSubmit('OK')">同意</el-button>
+              <el-button size="mini" @click="handelSubmit('FAIL')">驳回</el-button>
+            </div>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+  </div>
+</template>
+
+<script>
+import WarehousingHeader from '@/components/WarehousingHeader/WarehousingHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import { approvalCustomerStockOrder, getFrontDetail } from '@/api/stock'
+
+export default {
+  name: 'WarehouseExamine',
+  props: ['detailsId'],
+  components: {
+    WarehousingHeader,
+    SalesTable
+  },
+  data() {
+    return {
+      dataList: [],
+      screenForm: {approvalRemark:''},
+      details: {},
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialOldNumber',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+        {
+          prop: 'stockLockQty',
+          label: '库存',
+          width: '180'
+        },
+        {
+          prop: 'directFlagText',
+          label: '发生方向',
+          width: '180'
+        },
+        {
+          prop: 'stockChangeQty',
+          label: '数量',
+          width: '180',
+        },
+        {
+          prop: 'remark',
+          label: '备注',
+
+
+        }
+      ]
+    }
+  },
+  created() {
+    this.getFrontDetail()
+  },
+  methods: {
+    getFrontDetail() {
+      getFrontDetail({ id: this.detailsId }).then(res => {
+        this.details = res.data
+        res.data.orders.forEach(k=>{
+          k.directFlagText = k.directFlag ==1?'增加':'减少'
+        })
+        this.dataList = res.data.orders
+      })
+    },
+    handelSubmit(type){
+      approvalCustomerStockOrder({
+        ...this.details,
+        examineStatus:type,
+        approvalRemark:this.screenForm.approvalRemark
+      } ).then(res=>{
+        this.$successMsg(type==='OK'?'审核成功':'驳回成功')
+        this.$parent.pageType=0
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.warehousing {
+  margin: 20px;
+  padding: 20px;
+  box-shadow: 0 0 8px 0 rgb(0 0 0 / 20%);
+}
+</style>

+ 203 - 0
src/views/sales_control/components/WarehouseForm.vue

@@ -0,0 +1,203 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" content="新增"
+                    style=" padding: 20px 20px 0 20px;"
+    ></el-page-header>
+    <warehousing-header ref="header" />
+    <sales-table :dataList="dataList" :column="column" isOperation isSelection @handleSelection="handleSelection">
+      <template #bts>
+        <div>
+          <el-button type="primary" size="mini" @click="dialogVisible=true">添加</el-button>
+          <el-button type="danger" size="mini" @click="delChange">删除</el-button>
+        </div>
+      </template>
+      <template #events>
+        <div>
+          <el-button type="primary" size="mini" @click="handelSubmit">提交</el-button>
+          <el-button size="mini" @click="onReset">重置</el-button>
+        </div>
+      </template>
+      <template v-slot:custom="{item:{row,$index}}">
+        <el-radio :label="1" v-model="row.flag">增加</el-radio>
+        <el-radio :label="0" v-model="row.flag">减少</el-radio>
+      </template>
+      <template v-slot:operation="{item:{row,$index}}">
+        <el-popconfirm
+          style="margin-left: 10px"
+          title="删除?"
+          @onConfirm="handleDel(row,$index)"
+        >
+          <el-button slot="reference" type="text" size="mini">删除</el-button>
+        </el-popconfirm>
+      </template>
+    </sales-table>
+    <sales-dialog ref="dia" :dialogVisible="dialogVisible" :customerNumber="customerNumber" :func="getDialogList"
+                  @confirm="confirm"
+    />
+  </div>
+</template>
+
+<script>
+import SalesDialog from '@/components/SalesDialog/SalesDialog'
+import WarehousingHeader from '@/components/WarehousingHeader/WarehousingHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import { getcustomerFrontList, addCustomerStockOrder } from '@/api/stock'
+import {
+  addFrontOrder
+} from '@/api/sales'
+
+export default {
+  name: 'WarehouseForm',
+  components: {
+    WarehousingHeader,
+    SalesTable,
+    SalesDialog
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      customerNumber: '',
+      dataList: [],
+      selection: [],
+      flag: 1,
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialOldNumber',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+        {
+          prop: 'stockQty',
+          label: '库存',
+          width: '180'
+        },
+        {
+          prop: 'directFlag',
+          label: '发生方向',
+          width: '180',
+          isCustom: true
+
+        },
+        {
+          prop: 'stockChangeQty',
+          label: '数量',
+          width: '180',
+          isInput: true
+        },
+        {
+          prop: 'remark',
+          label: '备注',
+          width: '180',
+          isInput: true,
+          type: 'text'
+        }
+      ]
+    }
+  },
+  methods: {
+    onReset() {
+      Object.assign(this.$data, this.$options.data())
+      Object.assign(this.$refs.header.$data, this.$refs.header.$options.data())
+
+    },
+    getDialogList(p) {
+      return getcustomerFrontList(...p)
+    },
+    confirm(selected) {
+      // console.log(selected)
+      this.dataList = [...this.dataList, ...JSON.parse(JSON.stringify(selected))]
+      for (let i = 0; i <this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.length ; i++) {
+        for (let j = 0; j < this.dataList.length; j++) {
+          if ( this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].id == this.dataList[j].id || this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].disabled ===false){
+            this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i],'disabled',false)
+          }else{
+            this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i],'disabled',true)
+          }
+        }
+      }
+      this.$refs.header.screenForm.customerName = this.dataList[0].customerName
+      this.$refs.header.screenForm.customerNumber = this.dataList[0].customerNumber
+      this.customerNumber = this.dataList[0].customerNumber
+      this.dialogVisible = false
+      this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.$refs.tableView.clearSelection()
+
+    },
+    handleDel(item, index) {
+      this.dataList.splice(index, 1)
+      this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.find(k => {
+        if (k.id == item.id) {
+          this.$set(k, 'disabled', true)
+          return
+        }
+      })
+      if (!this.dataList.length) {
+        this.customerNumber = ''
+      }
+    },
+    //去掉相同数据
+    resArr(arr1, arr2) {
+      return arr1.filter(v => arr2.every(val => val.id != v.id))
+    },
+    delChange() {
+      if (this.dataList.length) {
+        this.dataList = this.resArr(this.dataList, this.selection)
+        for (let i = 0; i < this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.length; i++) {
+          for (let j = 0; j < this.selected.length; j++) {
+            if (this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].id == this.selected[j].id|| this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].disabled ===true) {
+              // k.disabled = true
+              this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i], 'disabled', true)
+            }
+
+          }
+        }
+
+        if (!this.dataList.length) {
+          this.customerNumber = ''
+        }
+      }
+    },
+    handleSelection(data) {
+      this.selection = data
+    },
+    handelSubmit() {
+
+      for (let i = 0; i < this.dataList.length; i++) {
+        this.dataList[i].id = ''
+        this.dataList[i].directFlag = this.dataList[i].flag
+        if (Number(this.dataList[i].stockChangeQty) < 0) {
+          this.$errorMsg(`第${i + 1}产品数量有误`)
+          return
+        }
+        if (Number(this.dataList[i].stockChangeQty) == 0 && this.dataList[i].directFlag == 0) {
+          this.$errorMsg(`第${i + 1}产品数量为0时发生方向只能做增加`)
+          return
+        }
+      }
+      const params = {
+        ...this.$refs.header.screenForm,
+        orders: this.dataList
+      }
+      addCustomerStockOrder(params).then(res => {
+        this.$successMsg('新增成功')
+        this.$parent.pageType = 0
+        this.$forceUpdate()
+      })
+    }
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 112 - 0
src/views/sales_control/customer_warehouse.vue

@@ -0,0 +1,112 @@
+<template>
+  <div>
+    <template-page
+      style="width: 100%;
+      height: 100%;"
+      ref="pageRef"
+      :getList="getList"
+      :exportList="exportList"
+      :columnParsing="columnParsing"
+    >
+    </template-page>
+  </div>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+
+import { getFrontListCustomer, exportCustomer } from '@/api/stock'
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin],
+  data() {
+    return {
+      // 事件组合
+      optionsEvensGroup: [
+        // [
+        //   [
+        //     {
+        //       name: '批量删除',
+        //       click: this.dels,
+        //       isRole: this.$checkBtnRole('del', this.$route.meta.roles)
+        //     }
+        //   ]
+        // ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getFrontListCustomer(...p)
+    },
+    // 列表导出函数
+    exportList: exportCustomer,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    }
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 100% !important;
+}
+</style>

+ 112 - 0
src/views/sales_control/preposition_stock_list.vue

@@ -0,0 +1,112 @@
+<template>
+  <div>
+    <template-page
+      style="width: 100%;
+      height: 100%;"
+      ref="pageRef"
+      :getList="getList"
+      :exportList="exportList"
+      :columnParsing="columnParsing"
+    >
+    </template-page>
+  </div>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+
+import { getcustomerFrontList, partsNewInExport } from '@/api/stock'
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin],
+  data() {
+    return {
+      // 事件组合
+      optionsEvensGroup: [
+        // [
+        //   [
+        //     {
+        //       name: '批量删除',
+        //       click: this.dels,
+        //       isRole: this.$checkBtnRole('del', this.$route.meta.roles)
+        //     }
+        //   ]
+        // ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getcustomerFrontList(...p)
+    },
+    // 列表导出函数
+    exportList: partsNewInExport,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    }
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 100% !important;
+}
+</style>

+ 244 - 0
src/views/sales_control/sales_management/components/customer_sales_details.vue

@@ -0,0 +1,244 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" content="详情" style=" padding: 20px 20px 0 20px;"></el-page-header>
+    <sales-header ref="header" />
+    <sales-table :dataList="dataList" :column="column" @handleSelection="handleSelection">
+
+      <template #events>
+        <el-button v-if="details.status==1 && isFront!==false" type="primary" size="mini" @click="handleInform(2)">通知发货</el-button>
+        <el-button v-if="details.status==2 && isFront!==false" size="mini">撤销发货</el-button>
+        <el-button v-if="isFront===false && details.status==1" type="primary" size="mini" @click="handleSignIn(4)">
+          签收
+        </el-button>
+      </template>
+
+      <!--      <template v-slot:operation="{item:{row,$index}}">-->
+      <!--        <el-popconfirm-->
+      <!--          style="margin-left: 10px"-->
+      <!--          title="删除?"-->
+      <!--          @onConfirm="handleDel(row,$index)"-->
+      <!--        >-->
+      <!--          <el-button slot="reference" type="text" size="mini">删除</el-button>-->
+      <!--        </el-popconfirm>-->
+      <!--      </template>-->
+      <!--      <div>-->
+      <!--        <h5>物流信息</h5>-->
+      <!--        <div class="diy-table-1">-->
+      <!--          <el-row>-->
+      <!--            <el-col :span="6" class="item">-->
+      <!--              <div class="label">销售政策编号</div>-->
+      <!--              <div class="value">2222</div>-->
+      <!--            </el-col>-->
+      <!--            <el-col :span="6" class="item">-->
+      <!--              <div class="label">销售政策编号</div>-->
+      <!--              <div class="value">2222</div>-->
+      <!--            </el-col>-->
+      <!--            <el-col :span="6" class="item">-->
+      <!--              <div class="label">销售政策编号</div>-->
+      <!--              <div class="value">2222</div>-->
+      <!--            </el-col>-->
+      <!--            <el-col :span="6" class="item">-->
+      <!--              <div class="label">销售政策编号</div>-->
+      <!--              <div class="value">2222</div>-->
+      <!--            </el-col>-->
+      <!--            <el-col :span="24" class="item">-->
+      <!--              <div class="label">销售政策编号</div>-->
+      <!--              <div class="value">2222</div>-->
+      <!--            </el-col>-->
+      <!--          </el-row>-->
+      <!--        </div>-->
+      <!--        <el-timeline :reverse="reverse">-->
+      <!--          <el-timeline-item-->
+      <!--            v-for="(activity, index) in activities"-->
+      <!--            :key="index"-->
+      <!--            :timestamp="activity.timestamp"-->
+      <!--            :color="activity.color"-->
+      <!--          >-->
+      <!--            {{ activity.content }}-->
+      <!--          </el-timeline-item>-->
+      <!--        </el-timeline>-->
+      <!--      </div>-->
+    </sales-table>
+    <sales-dialog :dialogVisible="dialogVisible" :customerNumber="customerNumber" :func="getDialogList"
+                  @confirm="confirm"
+    />
+  </div>
+</template>
+
+<script>
+import SalesDialog from '@/components/SalesDialog/SalesDialog'
+import SalesHeader from '@/components/SalesHeader/SalesHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import { addFrontOrder, getFrontOrderDetail, sbumitFrontOrder, signIn } from '@/api/sales'
+import { getcustomerFrontList } from '@/api/stock'
+
+export default {
+  name: 'WarehouseForm',
+  components: {
+    SalesHeader,
+    SalesTable,
+    SalesDialog
+  },
+  props: ['detailsId'],
+  data() {
+    return {
+      dialogVisible: false,
+      customerNumber: '',
+      dataList: [],
+      details: {},
+      selection: [],
+      flag: 1,
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialCode',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+        // {
+        //   prop: 'stockQty',
+        //   label: '库存数量',
+        //   width: '180'
+        // },
+        {
+          prop: 'qty',
+          label: '数量',
+          width: '180'
+        },
+        // {
+        //   prop: 'volume',
+        //   label: '体积',
+        //   width: '180'
+        // },
+        // {
+        //   prop: 'totalVolume',
+        //   label: '总体积',
+        //   width: '180'
+        // },
+        {
+          prop: 'notes',
+          label: '备注'
+
+        }
+      ],
+      activities: [{
+        content: '活动按期开始',
+        color: '#0bbd87',
+        timestamp: '2018-04-15'
+      }, {
+        content: '通过审核',
+        timestamp: '2018-04-13'
+      }, {
+        content: '创建成功',
+        timestamp: '2018-04-11'
+      }],
+      isFront: null
+
+    }
+  },
+  created() {
+    this.isFront = JSON.parse(localStorage.getItem('supply_user')).isFront
+    console.log(this.isFront)
+    if (this.detailsId) {
+      getFrontOrderDetail({ id: this.detailsId }).then(res => {
+        this.dataList = res.data.orders
+        this.details = res.data
+        this.$refs.header.screenForm = res.data
+        this.$refs.header.screenForm.disabled = true
+
+        this.$refs.header.screenForm.provinceId = res.data.province
+        this.$refs.header.screenForm.cityId = res.data.city
+        this.$refs.header.screenForm.areaId = res.data.area
+        this.$refs.header.screenForm.streetId = res.data.street
+        this.$refs.header.screenForm.stockType = res.data.stockType == 1 ? '前置仓' : '商家仓'
+
+      })
+    }
+  },
+  methods: {
+    getDialogList(p) {
+      return getcustomerFrontList(...p)
+    },
+    confirm(selected) {
+      // console.log(selected)
+      this.dataList = selected
+      this.$refs.header.screenForm.customerName = this.dataList[0].customerName
+      this.$refs.header.screenForm.customerNumber = this.dataList[0].customerNumber
+      this.customerNumber = this.dataList[0].customerNumber
+      this.dialogVisible = false
+
+    },
+    handleDel(item, index) {
+      this.dataList.splice(index, 1)
+    },
+    delChange() {
+      this.dataList.forEach((k, i) => {
+        this.selection.forEach((l, e) => {
+          if (k.id === l.id) {
+            this.dataList.splice(i, 1)
+            this.selection.splice(e, 1)
+          }
+        })
+      })
+    },
+    handleSelection(data) {
+      this.selection = data
+    },
+    handelSubmit() {
+      this.dataList.forEach(k => {
+        k.id = ''
+        k.directFlag = k.flag
+      })
+      const params = {
+        ...this.$refs.header.screenForm,
+        orders: this.dataList
+      }
+      addFrontOrder(params).then(res => {
+        this.$successMsg('新增成功')
+        this.$parent.pageType = 0
+        this.$forceUpdate()
+      })
+    },
+    handelSigning() {
+
+    },
+    handleInform(status = 2) {
+      sbumitFrontOrder({ id: this.$refs.header.screenForm.id, status }).then(res => {
+        this.$successMsg('发货通知')
+        this.$parent.pageType = 0
+
+      })
+    },
+    handleSignIn(status) {
+      this.$confirm('请确定,订单产品客户已完成签收,一旦签收则不能撤销', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(res => {
+        signIn({ id: this.$refs.header.screenForm.id, status }).then(res => {
+          this.$successMsg('签收')
+          this.$parent.pageType = 0
+
+        })
+      }).catch(err => {
+
+      })
+
+    }
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 353 - 0
src/views/sales_control/sales_management/components/customer_sales_form.vue

@@ -0,0 +1,353 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" :content="detailsId?'编辑':'新增'" style=" padding: 20px 20px 0 20px;"
+    ></el-page-header>
+    <sales-header ref="header" />
+    <sales-table :dataList="dataList" :column="column" :isOperation="detailsId ?false:true" isSelection
+                 @handleSelection="handleSelection"
+    >
+      <template #bts>
+        <div v-if="!detailsId ">
+          <el-button type="primary" v-if="dis"
+                     size="mini" @click="dialogVisible=true"
+          >添加
+          </el-button>
+          <el-button type="danger" v-if="dis"
+                     size="mini" @click="delChange"
+          >删除
+          </el-button>
+        </div>
+      </template>
+      <template #events>
+        <div v-if="!detailsId">
+          <el-button type="primary" :disabled="!dis" size="mini" @click="handelSubmit(1)">提交</el-button>
+          <el-button size="mini" @click="onReset" v-if="dis"
+          >重置
+          </el-button>
+          <el-button size="mini" v-if="isFront!==false"  :disabled="dis" @click="handleInform(2)">通知发货</el-button>
+        </div>
+        <div v-else>
+          <el-button type="primary" size="mini" @click="handelSubmit(2)">保存</el-button>
+          <el-button size="mini" v-if="!detailsId" @click="onReset">重置</el-button>
+        </div>
+      </template>
+
+      <template v-slot:operation="{item:{row,$index}}">
+        <el-popconfirm
+          v-if="dis"
+          style="margin-left: 10px"
+          title="删除?"
+          @onConfirm="handleDel(row,$index)"
+        >
+          <el-button slot="reference" type="text" size="mini">删除</el-button>
+        </el-popconfirm>
+      </template>
+    </sales-table>
+    <sales-dialog ref="dia" :dialogVisible="dialogVisible" :customerNumber="customerNumber" :func="getDialogList"
+                  @confirm="confirm"
+    />
+  </div>
+</template>
+
+<script>
+import SalesDialog from '@/components/SalesDialog/SalesDialog'
+import SalesHeader from '@/components/SalesHeader/SalesHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import { addFrontOrder, getFrontOrderDetail, sbumitFrontOrder, updateFrontOrder } from '@/api/sales'
+import { getcustomerFrontList, getFrontListCustomer } from '@/api/stock'
+
+export default {
+  name: 'WarehouseForm',
+  components: {
+    SalesHeader,
+    SalesTable,
+    SalesDialog
+  },
+  props: ['detailsId'],
+  data() {
+    return {
+      dialogVisible: false,
+      customerNumber: '',
+      dataList: [],
+      selection: [],
+      disabled: false,
+      flag: 1,
+      dis: true,
+      column:  [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialCode',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+        {
+          prop: 'stockQty',
+          label: '库存数量',
+          width: '180'
+        },
+        {
+          prop: 'qty',
+          label: '数量',
+          width: '180',
+          isInput: true
+        },
+        {
+          prop: 'notes',
+          label: '备注',
+          width: '180',
+          isInput: true,
+          type: 'text'
+
+        }
+      ],
+      isFront: JSON.parse(localStorage.getItem('supply_user')).isFront,
+      salesId: ''
+    }
+  },
+  created() {
+    if (this.detailsId) {
+
+      getFrontOrderDetail({ id: this.detailsId }).then(res => {
+        this.dataList = res.data.orders
+        this.customerNumber = res.data.customerNumber
+        this.$refs.header.screenForm = res.data
+        this.$refs.header.screenForm.disabled = this.disabled = true
+        this.$refs.header.screenForm.provinceId = res.data.province
+        this.$refs.header.screenForm.cityId = res.data.city
+        this.$refs.header.screenForm.areaId = res.data.area
+        this.$refs.header.screenForm.streetId = res.data.street
+        this.$refs.header.screenForm.stockType = Number(res.data.stockType)
+      })
+    } else {
+      Object.assign(this.$data, this.$options.data())
+        this.column = [
+          {
+            prop: 'materialName',
+            label: '产品名称',
+            width: '180'
+          },
+          {
+            prop: 'materialCode',
+            label: '物料编码',
+            width: '180'
+          },
+          {
+            prop: 'specification',
+            label: '规格型号',
+            width: '300'
+          },
+          {
+            prop: 'stockQty',
+            label: '库存数量',
+            width: '180'
+          },
+          {
+            prop: 'qty',
+            label: '数量',
+            width: '180',
+            isInput: true
+          },
+          {
+            prop: 'notes',
+            label: '备注',
+            width: '180',
+            isInput: true,
+            type: 'text'
+
+          }
+        ]
+    }
+  },
+  methods: {
+
+    getDialogList(p) {
+      let func = getcustomerFrontList
+      if (this.isFront === true) {
+        func = getcustomerFrontList
+      }
+      if (this.isFront === false) {
+        func = getFrontListCustomer
+      }
+      return func(...p)
+    },
+    confirm(selected) {
+      this.dataList = [...this.dataList, ...selected]
+      for (let i = 0; i <this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.length ; i++) {
+        for (let j = 0; j < this.dataList.length; j++) {
+          if ( this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].id == this.dataList[j].id || this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].disabled ===false){
+            this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i],'disabled',false)
+          }else{
+            this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i],'disabled',true)
+          }
+        }
+      }
+      console.log(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData)
+      if (!this.detailsId) {
+        this.$refs.header.screenForm.customerName = this.dataList[0].customerName
+        this.$refs.header.screenForm.customerNumber = this.dataList[0].customerNumber
+        this.$refs.header.screenForm.stockType = this.dataList[0].stockType
+      }
+
+      this.customerNumber = this.dataList[0].customerNumber
+      this.dialogVisible = false
+      this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.$refs.tableView.clearSelection()
+    },
+    handleDel(item, index) {
+      this.dataList.splice(index, 1)
+      this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.find(k => {
+        if (k.id == item.id) {
+          this.$set(k, 'disabled', true)
+          return
+        }
+      })
+      // this.$refs.multipleTable.clearSelection()
+
+      // console.log(this.$refs.dia)
+      // if (!this.dataList.length) {
+      //   this.$nextTick(() => {
+      //     Object.assign(this.$refs.header.$data, this.$refs.header.$options.data())
+      //     this.customerNumber = ''
+      //   })
+      // }
+    },
+    //去掉相同数据
+    resArr(arr1, arr2) {
+      return arr1.filter(v => arr2.every(val => val.id != v.id))
+    },
+    delChange() {
+      if (this.dataList.length) {
+        this.dataList = this.resArr(this.dataList, this.selection)
+        for (let i = 0; i <this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.length ; i++) {
+          for (let j = 0; j < this.selected.length; j++) {
+            if ( this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].id == this.selected[j].id|| this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].disabled ===true){
+              // k.disabled = true
+              this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i],'disabled',true)
+            }
+
+          }
+        }
+        if (!this.dataList.length) {
+          this.customerNumber = ''
+        }
+      }
+
+    },
+    handleSelection(data) {
+      this.selection = data
+    },
+    handleInform(status = 2) {
+      console.log(33)
+      sbumitFrontOrder({ id: this.salesId, status }).then(res => {
+        this.$successMsg('通知发货')
+        this.$parent.pageType = 0
+      })
+    },
+    handelSubmit(type, status = 1) {
+
+      if (!this.dataList.length) {
+        this.$errorMsg('请添加产品')
+        return
+      }
+      for (let i = 0; i < this.dataList.length; i++) {
+        this.dataList[i].id = ''
+        this.dataList[i].directFlag = this.dataList[i].flag
+        console.log(Number(this.dataList[i].qty))
+
+        if (Number(this.dataList[i].qty) < 0 || !this.dataList[i].qty) {
+          this.$errorMsg(`第${i + 1}产品数量有误`)
+          return
+        }
+      }
+
+      const params = {
+        ...this.$refs.header.screenForm,
+        orders: this.dataList,
+        status: status
+      }
+      this.$refs.header.$refs.form.validate((valid) => {
+        if (valid) {
+          if (type == 1) {
+            params.id = ''
+            addFrontOrder(params).then(res => {
+              this.$successMsg('新增成功')
+              this.dis = false
+              this.disabled = true
+              this.$set(this.$refs.header.screenForm,'disabled',true)
+              this.column = [
+                {
+                  prop: 'materialName',
+                  label: '产品名称',
+                  width: '180'
+                },
+                {
+                  prop: 'materialCode',
+                  label: '物料编码',
+                  width: '180'
+                },
+                {
+                  prop: 'specification',
+                  label: '规格型号',
+                  width: '300'
+                },
+                {
+                  prop: 'stockQty',
+                  label: '库存数量',
+                  width: '180'
+                },
+                {
+                  prop: 'qty',
+                  label: '数量',
+                  width: '180',
+
+                },
+                {
+                  prop: 'notes',
+                  label: '备注',
+                  width: '180',
+
+                  type: 'text'
+
+                }
+              ]
+              if (this.isFront ===false){
+                this.$parent.pageType = 0
+              }              this.salesId = res.data
+              this.$forceUpdate()
+            })
+
+          } else {
+            updateFrontOrder(params).then(res => {
+              this.$successMsg('编辑成功')
+              this.$parent.pageType = 0
+              this.$forceUpdate()
+            })
+
+          }
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    },
+    onReset() {
+      Object.assign(this.$data, this.$options.data())
+      Object.assign(this.$refs.header.$data, this.$refs.header.$options.data())
+
+    }
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 155 - 0
src/views/sales_control/sales_management/components/return_sales_details.vue

@@ -0,0 +1,155 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" content="详情" style=" padding: 20px 20px 0 20px;"></el-page-header>
+    <return-sales-header ref="header" :details="details" />
+    <sales-table :dataList="dataList" :column="column" @handleSelection="handleSelection">
+
+
+
+
+<!--      <template v-slot:operation="{item:{row,$index}}">-->
+<!--        <el-popconfirm-->
+<!--          style="margin-left: 10px"-->
+<!--          title="删除?"-->
+<!--          @onConfirm="handleDel(row,$index)"-->
+<!--        >-->
+<!--          <el-button slot="reference" type="text" size="mini">删除</el-button>-->
+<!--        </el-popconfirm>-->
+<!--      </template>-->
+    </sales-table>
+    <sales-dialog :dialogVisible="dialogVisible" :customerNumber="customerNumber" :func="getDialogList"
+                  @confirm="confirm"
+    />
+  </div>
+</template>
+
+<script>
+import SalesDialog from '@/components/SalesDialog/SalesDialog'
+import ReturnSalesHeader from '@/components/ReturnSalesHeader/ReturnSalesHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import { addFrontOrder, detailRefund, sbumitFrontOrder, sendRefund } from '@/api/sales'
+import { getcustomerFrontList } from '@/api/stock'
+
+export default {
+  name: 'WarehouseForm',
+  components: {
+    ReturnSalesHeader,
+    SalesTable,
+    SalesDialog
+  },
+  props: ['detailsId'],
+  data() {
+    return {
+      dialogVisible: false,
+      customerNumber: '',
+      dataList: [],
+      selection: [],
+      flag: 1,
+      details: {},
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialCode',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+
+        {
+          prop: 'qty',
+          label: '已退数量',
+          width: '180',
+        },
+        // {
+        //   prop: 'volume',
+        //   label: '体积',
+        //   width: '180'
+        // },
+        // {
+        //   prop: 'totalVolume',
+        //   label: '总体积',
+        //   width: '180'
+        // },
+        {
+          prop: 'notes',
+          label: '备注',
+
+
+        }
+      ]    }
+  },
+  created() {
+    if (this.detailsId) {
+      detailRefund({ id: this.detailsId }).then(res => {
+        this.dataList = res.data.orders
+        this.details = res.data
+      })
+    }
+  },
+  methods: {
+    getDialogList(p) {
+      return getcustomerFrontList(...p)
+    },
+    confirm(selected) {
+      // console.log(selected)
+      this.dataList = selected
+      this.$refs.header.screenForm.customerName = this.dataList[0].customerName
+      this.$refs.header.screenForm.customerNumber = this.dataList[0].customerNumber
+      this.customerNumber = this.dataList[0].customerNumber
+      this.dialogVisible = false
+
+    },
+    handleDel(item, index) {
+      this.dataList.splice(index, 1)
+    },
+    delChange() {
+      this.dataList.forEach((k, i) => {
+        this.selection.forEach((l, e) => {
+          if (k.id === l.id) {
+            this.dataList.splice(i, 1)
+            this.selection.splice(e, 1)
+          }
+        })
+      })
+    },
+    handleSelection(data) {
+      this.selection = data
+    },
+    handleInform(status = 2) {
+      sendRefund({ id: this.details.id, status }).then(res => {
+        this.$successMsg('退货通知')
+        this.$parent.pageType = 0
+
+      })
+    },
+    handelSubmit() {
+      this.dataList.forEach(k => {
+        k.id = ''
+        k.directFlag = k.flag
+      })
+      const params = {
+        ...this.$refs.header.screenForm,
+        orders: this.dataList
+      }
+      addFrontOrder(params).then(res => {
+        this.$successMsg('新增成功')
+        this.$parent.pageType = 0
+        this.$forceUpdate()
+      })
+    }
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 358 - 0
src/views/sales_control/sales_management/components/return_sales_form.vue

@@ -0,0 +1,358 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" :content="detailsId?'编辑':'新增'" style=" padding: 20px 20px 0 20px;"
+    ></el-page-header>
+    <return-sales-header ref="header" :details="details" />
+    <sales-table :dataList="dataList" :column="column" :isOperation="detailsId?false:true" isSelection @handleSelection="handleSelection">
+      <template #bts>
+        <div v-if="!detailsId">
+          <el-button  type="primary" v-if="dis" size="mini" @click="dialogVisible=true">添加</el-button>
+          <el-button type="danger" v-if="dis" size="mini" @click="delChange">删除</el-button>
+        </div>
+      </template>
+      <template #events>
+        <div v-if="!detailsId">
+          <el-button type="primary" :disabled="!dis" size="mini" @click="handelSubmit(1)">提交</el-button>
+          <el-button size="mini" @click="onReset" v-if="dis">重置</el-button>
+          <el-button size="mini" v-if="isFront!==false" :disabled="dis" @click="handleInform(2)">退货通知</el-button>
+        </div>
+        <div v-else>
+          <el-button type="primary" size="mini" @click="handelSubmit(2)">保存</el-button>
+          <el-button size="mini" @click="onReset" v-if="!detailsId">重置</el-button>
+        </div>
+
+      </template>
+      <template v-slot:custom="{item:{row,$index}}">
+        <div>{{ diffQty(row) }}</div>
+      </template>
+      <template v-slot:custom="{item:{row,$index}}">
+        <el-radio label="1" v-model="row.flag">增加</el-radio>
+        <el-radio label="-1" v-model="row.flag">减少</el-radio>
+      </template>
+      <template v-slot:operation="{item:{row,$index}}">
+        <el-popconfirm
+          v-if="dis"
+          style="margin-left: 10px"
+          title="删除?"
+          @onConfirm="handleDel(row,$index)"
+        >
+          <el-button slot="reference" type="text" size="mini">删除</el-button>
+        </el-popconfirm>
+      </template>
+    </sales-table>
+    <sales-dialog ref="dia" :dialogVisible="dialogVisible" :returnId="returnId" :itemId="itemId" :func="getDialogList"
+                  @confirm="confirm"
+    />
+  </div>
+</template>
+
+<script>
+import SalesDialog from '@/components/SalesDialog/SalesDialog'
+import ReturnSalesHeader from '@/components/ReturnSalesHeader/ReturnSalesHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import {
+  addFrontOrder, detailRefund,
+  getFrontOrderDetail,
+  addRefund,
+  getFrontOrderList,
+  sbumitFrontOrder,
+  sendRefund,
+  updateRefund, listOrder
+} from '@/api/sales'
+import { getcustomerFrontList, getFrontListCustomer } from '@/api/stock'
+
+export default {
+  name: 'WarehouseForm',
+  components: {
+    ReturnSalesHeader,
+    SalesTable,
+    SalesDialog
+  },
+  props: ['detailsId'],
+  data() {
+    return {
+      dialogVisible: false,
+      returnId: '',
+      itemId:"",
+      dataList: [],
+      selection: [],
+      flag: 1,
+      dis: true,
+      details: {},
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialCode',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+
+        {
+          prop: 'qty',
+          align: 'left',
+          label: '退货数量',
+          width: '180',
+          isInput: true
+        },
+
+        // {
+        //   prop: 'volume',
+        //   label: '体积',
+        //   width: '180'
+        // },
+        // {
+        //   prop: 'totalVolume',
+        //   label: '总体积',
+        //   width: '180'
+        // },
+        {
+          prop: 'notes',
+          label: '备注',
+          width: '180',
+          isInput: true,
+          type: 'text'
+        }
+      ],
+      isFront: JSON.parse(localStorage.getItem('supply_user')).isFront,
+      salesId: ''
+    }
+  },
+  computed: {
+    diffQty() {
+      return (row) => {
+        return Number(row.qty) - Number(row.refundQty)
+      }
+    }
+  },
+  created() {
+    if (this.detailsId) {
+      detailRefund({ id: this.detailsId }).then(res => {
+        this.dataList = res.data.orders
+        this.details = res.data
+        this.dataList.forEach(k => {
+
+          this.$set(k,'refundQty',k.qty)
+          k.diffQty = Number(k.qty) - Number(k.refundQty||0)
+
+        })
+        this.details.customerOrderNo =  res.data.customerOrderNo
+        this.returnId = res.data.id + this.dataList[0].materialCode
+      })
+    } else {
+      Object.assign(this.$data, this.$options.data())
+    }
+  },
+
+  methods: {
+    getDialogList(p) {
+      // let func = getcustomerFrontList
+      // if (this.isFront===true){
+      //   func = getcustomerFrontList
+      // }
+      // if (this.isFront===false){
+      //   func = getFrontListCustomer
+      // }
+      return listOrder(...p)
+    },
+    confirm(selected) {
+        for (let i = 0; i < selected.length; i++) {
+          if (selected[0].id != selected[i].id){
+            this.$errorMsg('不能选择不一样的销售单')
+            return
+          }
+        }
+
+      // console.log(selected)
+      this.dataList = [...this.dataList, ...selected]
+      for (let i = 0; i <this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.length ; i++) {
+        for (let j = 0; j < this.dataList.length; j++) {
+          if ( this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].id == this.dataList[j].id || this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].disabled ===false){
+            if (this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].itemId == this.dataList[j].itemId  || this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].disabled ===false){
+              this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i],'disabled',false)
+            }else {
+              this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i],'disabled',true)
+            }
+          }else{
+            this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i],'disabled',true)
+          }
+        }
+      }
+      console.log(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData)
+      selected.forEach(k => {
+        k.diffQty = Number(k.qty) - Number(k.refundQty)
+        k.qty = k.refundQty
+      })
+      let obj = {
+        id:Object.freeze(this.dataList[0].id)
+      }
+      if (!this.detailsId) {
+        this.details = this.dataList[0]
+        this.details.customerOrderNo =  obj.id
+      }
+      this.detailsId = this.detailsId
+
+      this.returnId = obj.id
+      this.itemId = this.dataList[0].itemId
+      this.dialogVisible = false
+      this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.$refs.tableView.clearSelection()
+
+    },
+    handleDel(item, index) {
+      this.dataList.splice(index, 1)
+      this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.find(k=>{
+        if (k.id==item.id){
+          if (k.itemId ==item.itemId ){
+            this.$set(k,'disabled',true)
+
+          }else {
+            this.$set(k,'disabled',false)
+
+          }
+          return
+        }
+      })
+      if (!this.dataList.length) {
+        this.returnId = ''
+      }
+      // if (!this.dataList.length){
+      //   this.$nextTick(()=>{
+      //     this.details = {}
+      //     this.returnId = ''
+      //   })
+      // }
+    },
+    //去掉相同数据
+    resArr(arr1, arr2) {
+      return arr1.filter(v => arr2.every(val => val.id != v.id))
+    },
+    delChange() {
+      if (this.dataList.length) {
+        this.dataList = this.resArr(this.dataList, this.selection)
+        for (let i = 0; i <this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.length ; i++) {
+          for (let j = 0; j < this.dataList.length; j++) {
+            if ( this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].id == this.dataList[j].id || this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].disabled ===false){
+              if (this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].itemId == this.dataList[j].itemId  || this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i].disabled ===false){
+                this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i],'disabled',false)
+              }else {
+                this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i],'disabled',true)
+              }
+            }else{
+              this.$set(this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData[i],'disabled',true)
+            }
+          }
+        }
+        if (!this.dataList.length) {
+          this.returnId = ''
+        }
+      }
+
+    },
+    handleSelection(data) {
+      this.selection = data
+    },
+
+    handelSubmit(type, status = 1) {
+
+      if (!this.dataList.length) {
+        this.$errorMsg('请添加产品')
+        return
+      }
+      for (let i = 0; i < this.dataList.length; i++) {
+
+        this.dataList[i].directFlag = this.dataList[i].flag
+        if (Number(this.dataList[i].qty) < 0 || !this.dataList[i].qty) {
+          this.$errorMsg(`第${i + 1}产品退货数量有误`)
+          return
+        }
+        // this.dataList[i].id = ''
+      }
+
+      const params = {
+        ...this.$refs.header.details,
+        orders: this.dataList,
+        customerOrderNo: this.details.customerOrderNo,
+        status
+      }
+      if (type === 1) {
+        params.id = ''
+        addRefund(params).then(res => {
+          this.$successMsg('新增成功')
+          this.salesId = res.data
+          this.column=[
+            {
+              prop: 'materialName',
+              label: '产品名称',
+              width: '180'
+            },
+            {
+              prop: 'materialCode',
+              label: '物料编码',
+              width: '180'
+            },
+            {
+              prop: 'specification',
+              label: '规格型号',
+              width: '300'
+            },
+
+            {
+              prop: 'qty',
+              align: 'left',
+              label: '退货数量',
+              width: '180',
+
+            },
+
+
+            {
+              prop: 'notes',
+              label: '备注',
+              width: '180',
+
+              type: 'text'
+            }
+          ]
+          if (this.isFront ===false){
+            this.$parent.pageType = 0
+          }
+
+          this.dis = false
+          this.$forceUpdate()
+        })
+
+      } else {
+        updateRefund(params).then(res => {
+          this.$successMsg('编辑成功')
+          this.$parent.pageType = 0
+          this.$forceUpdate()
+        })
+      }
+    },
+    handleInform(status = 2) {
+      sendRefund({ id: this.salesId, status }).then(res => {
+        this.$successMsg('退货通知')
+        this.$parent.pageType = 0
+      })
+    },
+
+    onReset() {
+      Object.assign(this.$data, this.$options.data())
+
+    }
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 118 - 0
src/views/sales_control/sales_management/components/sel-export-column-list.vue

@@ -0,0 +1,118 @@
+<template>
+  <el-dialog
+    title="勾选导出列"
+    :before-close="cancel"
+    :visible.sync="dialogVisible"
+    width="400px"
+  >
+    <el-table
+      :data="exportColumnList"
+      v-bind="{
+        height: '100%',
+        style: 'width: 100%',
+        border: true,
+        headerCellClassName: 'headerRowColor',
+        size: 'mini'
+      }"
+    >
+      <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>
+    <span slot="footer" class="dialog-footer">
+      <el-button size="mini" @click="cancel">取 消</el-button>
+      <el-button size="mini" type="primary" @click="determine">确 定</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  props: {
+    columnList: {
+      type: Array,
+      default: () => []
+    }
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      isExport: true,
+      exportColumnList: []
+    };
+  },
+  watch: {
+    columnList: {
+      handler() {
+        if (this.columnList && this.columnList.length) {
+          this.exportColumnList = this.columnList.map(item => {
+            return { ...item.exportField, isExport: true };
+          });
+          this.dialogVisible = true;
+        } else {
+          this.exportColumnList = [];
+          this.dialogVisible = false;
+        }
+      },
+      deep: true
+    },
+    exportColumnList: {
+      handler() {
+        this.isExport = this.exportColumnList.every(
+          item => item.isExport === true
+        );
+      },
+      deep: true
+    },
+    isExport() {
+      if (
+        this.exportColumnList.every(item => item.isExport === true) !==
+        this.isExport
+      ) {
+        this.exportColumnList.map(item => {
+          item.isExport = this.isExport;
+        });
+      }
+    }
+  },
+  methods: {
+    cancel() {
+      this.$emit("cancel");
+    },
+    determine() {
+      this.$emit(
+        "determine",
+        this.exportColumnList.filter(item => item.isExport)
+      );
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped></style>

+ 378 - 0
src/views/sales_control/sales_management/components/tableData.js

@@ -0,0 +1,378 @@
+export default {
+  data: {
+    records: [
+      {
+        id: '1529270679017484289',
+        identity: '431003199803271316',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: -25,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-05-25 09:18:37',
+      },
+      {
+        id: '1529270679738904578',
+        identity: '431003199803271316',
+        goodsId: 'W1006',
+        goodsName: '保温棉',
+        saleUnit: '条',
+        qty: -24,
+        categoryId: '4',
+        categoryName: '保温',
+        createTime: '2022-05-25 09:18:37',
+      },
+      {
+        id: '1529280470703071233',
+        identity: '452226198504073614',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: 30,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-05-25 09:57:32',
+      },
+      {
+        id: '1529282123955101698',
+        identity: '452226198504073614',
+        goodsId: 'W1001',
+        goodsName: '金冷R600a/90G',
+        saleUnit: '瓶',
+        qty: 10,
+        categoryId: '11',
+        categoryName: '冷媒',
+        createTime: '2022-05-25 10:04:06',
+      },
+      {
+        id: '1529284045793583105',
+        identity: '431003199803271316',
+        goodsId: 'W1001',
+        goodsName: '金冷R600a/90G',
+        saleUnit: '瓶',
+        qty: 10,
+        categoryId: '11',
+        categoryName: '冷媒',
+        createTime: '2022-05-25 10:11:44',
+      },
+      {
+        id: '1529286318682726402',
+        identity: '511321198104074414',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: 0,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-05-25 10:20:46',
+      },
+      {
+        id: '1529293433069559809',
+        identity: '440229197310010077',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: 8,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-05-25 10:49:02',
+      },
+      {
+        id: '1529300002167513089',
+        identity: '440229197310010077',
+        goodsId: 'W1015',
+        goodsName: '3-5匹角铁地架',
+        saleUnit: '副',
+        qty: 0,
+        categoryId: '13',
+        categoryName: '支架',
+        createTime: '2022-05-25 11:15:08',
+      },
+      {
+        id: '1529392526345297922',
+        identity: '431003199803271316',
+        goodsId: 'W1005',
+        goodsName: '包扎带(挂机)',
+        saleUnit: '卷',
+        qty: -20,
+        categoryId: '30',
+        categoryName: '包扎带',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1529392527217713154',
+        identity: '431003199803271316',
+        goodsId: 'W1052',
+        goodsName: '包扎带(柜机)',
+        saleUnit: '卷',
+        qty: -2,
+        categoryId: '30',
+        categoryName: '包扎带',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1529392527284822018',
+        identity: '431003199803271316',
+        goodsId: 'W1003',
+        goodsName: '连接器',
+        saleUnit: '个',
+        qty: -6,
+        categoryId: '31',
+        categoryName: '连接器',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1529392527356125186',
+        identity: '431003199803271316',
+        goodsId: 'W1002',
+        goodsName: '双壁热缩套管',
+        saleUnit: '条',
+        qty: -6,
+        categoryId: '32',
+        categoryName: '双壁热缩套管',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1529392527473565698',
+        identity: '431003199803271316',
+        goodsId: 'W1008',
+        goodsName: '电缆',
+        saleUnit: '米',
+        qty: -2,
+        categoryId: '18',
+        categoryName: '电缆',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1539450903616245761',
+        identity: '430725198907104353',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: -4,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-06-22 11:31:12',
+      },
+      {
+        id: '1539450903687548929',
+        identity: '430725198907104353',
+        goodsId: 'W1006',
+        goodsName: '保温棉',
+        saleUnit: '条',
+        qty: -2,
+        categoryId: '4',
+        categoryName: '保温',
+        createTime: '2022-06-22 11:31:12',
+      },
+    ],
+    total: 23,
+    size: 15,
+    current: 1,
+    orders: [],
+    optimizeCountSql: true,
+    searchCount: true,
+    countId: null,
+    maxLimit: null,
+    pages: 2,
+  },
+  message: 'success',
+  code: 1,
+  fieldBeans: [
+    {
+      id: '1584740968445440002',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '创建时间',
+      placeholder: null,
+      type: 'datetime',
+      multiple: false,
+      frontCode: null,
+      tbName: null,
+      colName: 'createTime',
+      width: null,
+      sortNum: 0,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'createTime',
+    },
+    {
+      id: '1584740968458022913',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: 'id',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_stock',
+      colName: 'id',
+      width: null,
+      sortNum: 1,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'id',
+    },
+    {
+      id: '1584740968466411522',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '身份证',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_stock',
+      colName: 'identity',
+      width: null,
+      sortNum: 2,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'identity',
+    },
+    {
+      id: '1584740968466411523',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '商品id',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_stock',
+      colName: 'goodsId',
+      width: null,
+      sortNum: 3,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'goodsId',
+    },
+    {
+      id: '1584740968466411524',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '商品名称',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_goods',
+      colName: 'goodsName',
+      width: null,
+      sortNum: 4,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'goodsName',
+    },
+    {
+      id: '1584740968470605827',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '数量',
+      placeholder: null,
+      type: 'number',
+      isTotal: true,
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_stock',
+      colName: 'qty',
+      width: null,
+      sortNum: 5,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'qty',
+    },
+    {
+      id: '1584740968470605826',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '销售单位',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_goods',
+      colName: 'saleUnit',
+      width: null,
+      sortNum: 6,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'saleUnit',
+    },
+    {
+      id: '1584740968470605828',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '类型id',
+      placeholder: null,
+      type: 'number',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_goods',
+      colName: 'categoryId',
+      width: null,
+      sortNum: 7,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'categoryId',
+    },
+    {
+      id: '1584740968470605829',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '类型名称',
+      placeholder: null,
+      type: 'select',
+      multiple: false,
+      frontCode: 'category',
+      tbName: 'worker_goods',
+      colName: 'categoryName',
+      width: null,
+      sortNum: 8,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'categoryName',
+    },
+  ],
+  typeReference: {
+    type: 'com.gree.material.manager.bean.worker.ZStockBean',
+    typeName: 'class com.gree.material.manager.bean.worker.ZStockBean',
+  },
+};

+ 199 - 0
src/views/sales_control/sales_management/customer_sales_list.vue

@@ -0,0 +1,199 @@
+<template>
+  <div>
+    <template-page
+      v-if="!pageType"
+      style="width: 100%;
+      height: 100%;"
+      ref="pageRef"
+      :getList="getList"
+      :exportList="exportList"
+      :operation="operation()"
+      :columnParsing="columnParsing"
+      :optionsEvensGroup="optionsEvensGroup"
+    >
+    </template-page>
+    <customer_sales_form :detailsId="detailsId" v-else-if="pageType===1 || pageType ===2" />
+    <customer_sales_details :detailsId="detailsId" v-else />
+  </div>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import { delFrontOrder, exportCustomerFrontOrder, getFrontOrderList } from '@/api/sales'
+import customer_sales_form from '@/views/sales_control/sales_management/components/customer_sales_form'
+import customer_sales_details from '@/views/sales_control/sales_management/components/customer_sales_details'
+
+export default {
+  components: { TemplatePage, customer_sales_form, customer_sales_details },
+  mixins: [import_mixin],
+  data() {
+    return {
+      pageType: 0,
+      detailsId: '',
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '新增',
+              click: () => {
+                this.pageType = 1
+                this.detailsId = ''
+              }
+            }
+          ]
+        ]
+        // [
+        //   [
+        //     {
+        //       name: '编辑',
+        //       click: ()=>{
+        //         this.pageType = 2
+        //       }
+        //     }
+        //   ]
+        // ],
+        // [
+        //   [
+        //     {
+        //       name: '删除',
+        //       click: this.dels
+        //     }
+        //   ]
+        // ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
+      isFront: JSON.parse(localStorage.getItem('supply_user')).isFront,
+
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getFrontOrderList(...p)
+    },
+    // 列表导出函数
+    exportList: exportCustomerFrontOrder,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            <el-button
+              size="mini"
+              type="text" onClick={() => {
+              this.detailsId = row.id
+              this.pageType = 3
+
+            }}
+            >
+              查看
+            </el-button>
+
+            {
+              row.status == 1 ? (<el-button
+                size="mini"
+                type="text" onClick={() => {
+                this.detailsId = row.id
+                this.pageType = 2
+              }}
+              >
+                编辑
+              </el-button>) : null}
+            {
+              row.status == 1 ?
+                (<el-popconfirm
+                  onOnConfirm={() => {
+                    delFrontOrder({ id: row.id }).then(res => {
+                      this.$successMsg('删除成功')
+                      this.$refs.pageRef.refreshList()
+                    })
+                  }}
+                  title="删除吗?"
+                >
+                  <el-button slot="reference" size="mini" type="text">删除</el-button>
+                </el-popconfirm>)
+                : null
+            }
+          </div>
+        )
+      }
+
+    }
+// <el-popconfirm
+//   onOnConfirm = {()=>{
+//     deleteCustomerStockOrder({ id: row.id }).then(res => {
+//       this.$successMsg('删除成功')
+//       this.$refs.pageRef.getTableData()
+//     })              }}
+//   title="删除吗?"
+// >
+//   <el-button slot="reference" type="text">删除</el-button>
+// </el-popconfirm>
+
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 100% !important;
+}
+</style>

+ 164 - 0
src/views/sales_control/sales_management/return_sales_list.vue

@@ -0,0 +1,164 @@
+<template>
+  <div>
+    <template-page
+      v-if="!pageType"
+      style="width: 100%;
+      height: 100%;"
+      ref="pageRef"
+      :getList="getList"
+      :exportList="exportList"
+      :operation="operation()"
+      :columnParsing="columnParsing"
+      :optionsEvensGroup="optionsEvensGroup"
+    >
+    </template-page>
+    <return_sales_form v-else-if="pageType===1 || pageType ===2" :details-id="detailsId" />
+    <return_sales_details v-else :details-id="detailsId" />
+  </div>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import { delDeleteRefund, exportRefund, getFrontOrderListRefund } from '@/api/sales'
+import return_sales_form from '@/views/sales_control/sales_management/components/return_sales_form'
+import return_sales_details from '@/views/sales_control/sales_management/components/return_sales_details'
+
+export default {
+  components: { TemplatePage, return_sales_form, return_sales_details },
+  mixins: [import_mixin],
+  data() {
+    return {
+      detailsId: '',
+      pageType: 0,
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '新增',
+              click: () => {
+                this.pageType = 1
+                this.detailsId = ''
+              }
+            }
+          ]
+        ],
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getFrontOrderListRefund(...p)
+    },
+    // 列表导出函数
+    exportList: exportRefund,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            <el-button
+              size="mini"
+              type="text" onClick={() => {
+              this.detailsId = row.id
+              this.pageType = 3
+
+            }}
+            >
+              查看
+            </el-button>
+
+            {row.status == 1 ? (<el-button size="mini"
+                                           type="text" onClick={() => {
+              this.detailsId = row.id
+              this.pageType = 2
+            }}
+            >
+              编辑
+            </el-button>) : null}
+            {row.status == 1 ? (<el-popconfirm
+              onOnConfirm={() => {
+                delDeleteRefund({ id: row.id }).then(res => {
+                  this.$successMsg('删除成功')
+                  this.$refs.pageRef.refreshList()
+
+                })
+              }}
+              title="删除吗?"
+            >
+              <el-button slot="reference" size="mini" type="text">删除</el-button>
+            </el-popconfirm>) : null}
+          </div>
+        )
+      }
+
+    }
+
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 100% !important;
+}
+</style>

+ 112 - 0
src/views/sales_control/stock_three_level.vue

@@ -0,0 +1,112 @@
+<template>
+  <div>
+    <template-page
+      style="width: 100%;
+      height: 100%;"
+      ref="pageRef"
+      :getList="getList"
+      :exportList="exportList"
+      :columnParsing="columnParsing"
+    >
+    </template-page>
+  </div>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+
+import { getFrontListStockAcc, exportListStockAcc } from '@/api/stock'
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin],
+  data() {
+    return {
+      // 事件组合
+      optionsEvensGroup: [
+        // [
+        //   [
+        //     {
+        //       name: '批量删除',
+        //       click: this.dels,
+        //       isRole: this.$checkBtnRole('del', this.$route.meta.roles)
+        //     }
+        //   ]
+        // ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getFrontListStockAcc(...p)
+    },
+    // 列表导出函数
+    exportList: exportListStockAcc,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    }
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 100% !important;
+}
+</style>

+ 17 - 0
src/views/sales_policy/components/AddPolicy.vue

@@ -193,6 +193,9 @@
                   v-model="scope.row.saleTypeId"
                   size="mini"
                   filterable
+                  remote
+                  reserve-keyword
+                  :remote-method="query => remoteMethodType(query, 'saleTypeId')"
                   @change="handleSalesType($event, scope.row, scope.$index, 'saleTypeId')"
                 >
                   <el-option v-for="item in typeList" :key="item.id" :label="item.saleName" :value="item.id" />
@@ -627,6 +630,19 @@ export default {
         this.k3List = [...this.k3List, ...res.data.records]
       })
     },
+    async remoteMethodType(query, type){
+      console.log(111)
+      // 获取销售类型列表
+      const params = {
+        pageNum: 1,
+        pageSize:-1,
+        saleCode:query,
+        saleName: '',
+        status: ''
+      }
+      const typeData = await getTypeList(params)
+      this.typeList = typeData.data.records
+    },
     remoteMethod(query, type) {
       console.log(query, type)
       if (query !== '') {
@@ -674,6 +690,7 @@ export default {
       this.typeList = typeData.data.records
     },
     handleSalesType(e, row, index, name) {
+      console.log(e)
       const item = this.typeList.filter(k => {
         return k.id === e
       })[0]

+ 6 - 0
src/views/sales_policy/components/TabelTransfer.vue

@@ -64,6 +64,7 @@
               ><template slot-scope="scope">
                 <CopyButton :copy-text="scope.row.name" />
                 <span>{{ scope.row.name }}</span>
+                <span class="red">{{scope.row.number}}</span>
               </template>
             </el-table-column>
           </el-table>
@@ -113,6 +114,7 @@
               <template slot-scope="scope">
                 <CopyButton :copy-text="scope.row.customerName" />
                 <span>{{ scope.row.customerName }}</span>
+                <span class="red">{{scope.row.customerNumber}}</span>
               </template>
             </el-table-column>
           </el-table>
@@ -745,4 +747,8 @@ export default {
   display: flex;
   align-items: center;
 }
+.red{
+
+  color: #f00;
+}
 </style>

+ 16 - 0
src/views/sales_policy/components/editPolicy.vue

@@ -194,6 +194,9 @@
                   <el-select
                     v-else
                     v-model="scope.row.saleTypeId"
+                    remote
+                    reserve-keyword
+                    :remote-method="query => remoteMethodType(query, 'saleTypeId')"
                     size="mini"
                     filterable
                     @change="handleSalesType($event, scope.row, scope.$index, 'saleTypeId')"
@@ -645,6 +648,19 @@ export default {
         this.k3List = [...this.k3List, ...res.data.records]
       })
     },
+    async remoteMethodType(query, type){
+      console.log(111)
+      // 获取销售类型列表
+      const params = {
+        pageNum: 1,
+        pageSize:-1,
+        saleCode:query,
+        saleName: '',
+        status: ''
+      }
+      const typeData = await getTypeList(params)
+      this.typeList = typeData.data.records
+    },
     remoteMethod(query, type) {
       console.log(query, type)
       if (query !== '') {

+ 12 - 6
src/views/sales_rebate/rebate_list.vue

@@ -163,18 +163,23 @@
               </el-option>
             </el-select>
           </el-form-item>
-
           <el-form-item label="销售类型名称" prop="saleTypeId">
             <el-select
               v-model="dialogForm.saleTypeId"
               :disabled="type == 3"
               filterable
               @change="handleChange"
-              placeholder="请选择销售类型编码"
+              placeholder="请选择销售类型名称"
             >
               <el-option v-for="item in typeList" :key="item.id" :label="item.saleName" :value="item.id"> </el-option>
             </el-select>
           </el-form-item>
+          <el-form-item label="销售类型编码" prop="saleTypeCode">
+          <el-input disabled type="text" v-model="dialogForm.saleTypeCode"
+                    placeholder="选择销售类型自动获取销售编码"
+          />
+          </el-form-item>
+
           <el-form-item label="返利折扣比例" prop="rebateRate">
             <el-input
               type="number"
@@ -247,7 +252,8 @@ export default {
         walletRebateId: '',
         rebateRate: '',
         saleTypeId: '',
-        status: ''
+        status: '',
+        saleTypeCode:''
       },
       dataList: [],
       columns: [
@@ -386,10 +392,10 @@ export default {
 
     handleChange(e) {
       console.log(e, this.typeList)
-
       this.typeList.find(k => {
-        if (e == k.saleCode) {
+        if (e == k.id) {
           this.dialogForm.saleTypeName = k.saleName
+          this.dialogForm.saleTypeCode = k.saleCode
           // this.dialogForm.mainId = k.mainId;
           // this.dialogForm.mainName = k.mainName;
         }
@@ -424,7 +430,7 @@ export default {
         name: item.name,
         rebateRate: item.rebateRate,
         // rabateSort: item.rabateSort,
-        // saleTypeCode: item.saleTypeCode,
+        saleTypeCode: item.saleTypeCode,
         saleTypeId: item.saleTypeId,
         // saleTypeName: item.saleTypeName,
         status: item.status,

+ 2 - 2
src/views/setting/account.vue

@@ -67,6 +67,7 @@
         <div class="fr">
           <el-button size="mini" @click="handleDownload" v-if="checkBtnRole('download')">下载导入模板</el-button>
           <ExportButton class="import-btn" :exUrl="'admin/user/user/listExport'" :exParams="exParams" />
+          <ImportButton class="import-btn"  im-text="批量变更仓库和产品分类" :imUrl="'admin/user/batch/update'" @importSuccess="getList" />
 
           <el-upload
             class="import-btn"
@@ -81,8 +82,7 @@
               importLoading ? '导入中...' : '导入'
             }}</el-button>
           </el-upload>
-
-          <!--
+          <!--/admin/user/batch/update
           <el-button size="small" type="primary" @click="handleExport">导出</el-button>
 
           <el-button size="small" type="primary" :loading="importLoading" @click="clickImport">{{ importLoading ? '导入中...' : '导入' }}</el-button>

+ 2 - 0
src/views/setting/components/log-examine.vue

@@ -25,6 +25,7 @@
                   <el-date-picker
                     v-model="screenForm.examineDate"
                     type="datetimerange"
+:default-time="['00:00:00','23:59:59']"
                     range-separator="至"
                     style="width: 100%"
                     value-format="yyyy-MM-dd HH:mm:ss"
@@ -39,6 +40,7 @@
                   <el-date-picker
                     v-model="screenForm.submitDate"
                     type="datetimerange"
+:default-time="['00:00:00','23:59:59']"
                     range-separator="至"
                     style="width: 100%"
                     value-format="yyyy-MM-dd HH:mm:ss"

+ 1 - 0
src/views/setting/components/log-login.vue

@@ -25,6 +25,7 @@
                   <el-date-picker
                     v-model="screenForm.date"
                     type="datetimerange"
+:default-time="['00:00:00','23:59:59']"
                     range-separator="至"
                     style="width: 100%"
                     value-format="yyyy-MM-dd HH:mm:ss"

+ 1 - 0
src/views/setting/components/log-operation.vue

@@ -30,6 +30,7 @@
                   <el-date-picker
                     v-model="screenForm.date"
                     type="datetimerange"
+:default-time="['00:00:00','23:59:59']"
                     range-separator="至"
                     style="width: 100%"
                     value-format="yyyy-MM-dd HH:mm:ss"

+ 7 - 0
src/views/stock/stock_list.vue

@@ -107,6 +107,13 @@
             min-width="100"
             show-overflow-tooltip
           ></el-table-column>
+          <el-table-column
+            align="left"
+            label="物料分组"
+            prop="materialGroupName"
+            min-width="200"
+            show-overflow-tooltip
+          ></el-table-column>
           <el-table-column align="left" label="物料编码" prop="materialNumber" min-width="120" show-overflow-tooltip>
             <template slot-scope="scope">
               <CopyButton :copyText="scope.row.materialNumber" />

+ 167 - 0
src/views/stock_control/adjust_warehouse.vue

@@ -0,0 +1,167 @@
+<template>
+  <div>
+    <template-page
+      v-if="!pageType"
+      style="width: 100%;
+      height: 100%;"
+      ref="pageRef"
+      :getList="getList"
+      :exportList="exportList"
+      :operation="operation()"
+      :columnParsing="columnParsing"
+      :optionsEvensGroup="optionsEvensGroup"
+    >
+    </template-page>
+    <warehouse-form v-else-if="pageType==1" />
+    <warehouse-examine v-else-if="pageType==2" :detailsId="detailsId" />
+    <warehouse-details v-else :detailsId="detailsId" />
+  </div>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+
+import { getFrontListCustomerAcc, exportCustomerStockOrderBean, deleteCustomerStockOrder } from '@/api/stock'
+import WarehouseForm from '@/views/stock_control/components/WarehouseForm'
+import WarehouseExamine from '@/views/stock_control/components/WarehouseExamine'
+import WarehouseDetails from '@/views/stock_control/components/WarehouseDetails'
+
+export default {
+  components: { TemplatePage, WarehouseForm, WarehouseExamine, WarehouseDetails },
+  mixins: [import_mixin],
+  data() {
+    return {
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '库存调整2',
+              click:this.addWarehouse
+            }
+          ]
+        ],
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
+      detailsId: '',
+      pageType: 0,
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getFrontListCustomerAcc(...p)
+    },
+    // 列表导出函数
+    exportList: exportCustomerStockOrderBean,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    addWarehouse() {
+      this.pageType = 1
+      console.log(this.pageType,'333')
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            <el-button
+              size="mini"
+              type="text" onClick={() => {
+              this.detailsId = row.id
+              this.pageType = 3
+
+            }}
+            >
+              查看
+            </el-button>
+            {row.examineStatus != 'OK' || row.examineStatus != 'CLOSE' ? (
+              <el-button
+                size="mini"
+                type="text" onClick={() => {
+                this.detailsId = row.id
+                this.pageType = 2
+              }}
+              >
+                审批
+              </el-button>
+            ) : null}
+            <el-popconfirm
+              onOnConfirm = {()=>{
+                deleteCustomerStockOrder({ id: row.id }).then(res => {
+                  this.$successMsg('删除成功')
+                  this.$refs.pageRef.refreshList();
+                })              }}
+              title="删除吗?"
+            >
+              <el-button slot="reference" size="mini" type="text">删除</el-button>
+            </el-popconfirm>
+          </div>
+        )
+      }
+
+    }
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 100% !important;
+}
+</style>

+ 115 - 0
src/views/stock_control/components/WarehouseDetails.vue

@@ -0,0 +1,115 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" content="详情" style=" padding: 20px 20px 0 20px;"></el-page-header>
+    <warehousing-header page-type="details" :details="details" />
+    <sales-table :dataList="dataList" :column="column">
+    </sales-table>
+    <div class="warehousing">
+      <div class="diy-table-1">
+        <el-row>
+          <el-col :span="8" class="item">
+            <div class="label">审核人</div>
+            <div class="value">{{ details.approvalName }}</div>
+          </el-col>
+          <el-col :span="8" class="item">
+            <div class="label">制单时间</div>
+            <div class="value">{{ details.approvalTime }}</div>
+          </el-col>
+          <el-col :span="8" class="item">
+            <div class="label">审核结果</div>
+            <div class="value">{{ statusFilter[details.examineStatus] }}</div>
+          </el-col>
+          <el-col :span="24" class="item">
+            <div class="label">备注</div>
+            <div class="value">{{ details.approvalRemark }}</div>
+          </el-col>
+        </el-row>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import WarehousingHeader from '@/components/WarehousingHeader/WarehousingHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import { getFrontDetail } from '@/api/stock'
+
+export default {
+  name: 'WarehouseExamine',
+  props: ['detailsId'],
+  components: {
+    WarehousingHeader,
+    SalesTable
+  },
+  data() {
+    return {
+      dataList: [],
+      details: {},
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialOldNumber',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+        {
+          prop: 'stockLockQty',
+          label: '库存',
+          width: '180'
+        },
+        {
+          prop: 'directFlag',
+          label: '发生方向',
+          width: '180'
+        },
+        {
+          prop: 'stockChangeQty',
+          label: '数量',
+          width: '180',
+        },
+        {
+          prop: 'remark',
+          label: '备注',
+          width: '180',
+
+        }
+      ],
+      statusFilter: {
+        SAVE: '保存',
+        WAIT: '待审核',
+        OK: '通过',
+        FAIL: '不通过',
+        CLOSE: '关闭'
+      }
+    }
+  },
+  created() {
+    this.getFrontDetail()
+  },
+  methods: {
+    getFrontDetail() {
+      getFrontDetail({ id: this.detailsId }).then(res => {
+        this.details = res.data
+        this.dataList = res.data.orders
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.warehousing {
+  margin: 20px;
+  padding: 20px;
+  box-shadow: 0 0 8px 0 rgb(0 0 0 / 20%);
+}
+</style>

+ 138 - 0
src/views/stock_control/components/WarehouseExamine.vue

@@ -0,0 +1,138 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" content="审核" style=" padding: 20px 20px 0 20px;"></el-page-header>
+    <warehousing-header page-type="examine" :details="details" />
+    <sales-table :dataList="dataList" :column="column">
+    </sales-table>
+    <div class="warehousing">
+      <el-form
+        label-position="left"
+        label-width="120px"
+        :model="screenForm"
+        size="mini"
+      >
+        <el-row :gutter="20">
+          <el-col :xs="24" :ms="8" :lg="8">
+            <el-form-item label="审核人" prop="customerNumber" >
+              <el-input disabled v-model="screenForm.customerNumber" placeholder="审核人" size="mini" />
+            </el-form-item>
+          </el-col>
+
+          <el-col :xs="24" :ms="8" :lg="8">
+            <el-form-item label="审核时间" prop="changeTime">
+              <el-date-picker
+                disabled
+                v-model="screenForm.changeTime"
+                type="datetime"
+                size="mini"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                placeholder="选择日期"
+              />
+            </el-form-item>
+          </el-col>
+
+          <el-col :xs="24" :ms="24" :lg="24">
+            <el-form-item label="备注" prop="approvalRemark">
+              <el-input v-model="screenForm.approvalRemark" placeholder="备注" size="mini" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :ms="24" :lg="24">
+            <div>
+              <el-button type="primary" size="mini" @click="handelSubmit('OK')">同意</el-button>
+              <el-button size="mini" @click="handelSubmit('WAIT')">驳回</el-button>
+            </div>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+  </div>
+</template>
+
+<script>
+import WarehousingHeader from '@/components/WarehousingHeader/WarehousingHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import { approvalCustomerStockOrder, getFrontDetail } from '@/api/stock'
+
+export default {
+  name: 'WarehouseExamine',
+  props: ['detailsId'],
+  components: {
+    WarehousingHeader,
+    SalesTable
+  },
+  data() {
+    return {
+      dataList: [],
+      screenForm: {approvalRemark:''},
+      details: {},
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialOldNumber',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+        {
+          prop: 'stockLockQty',
+          label: '库存',
+          width: '180'
+        },
+        {
+          prop: 'directFlag',
+          label: '发生方向',
+          width: '180'
+        },
+        {
+          prop: 'stockChangeQty',
+          label: '数量',
+          width: '180',
+        },
+        {
+          prop: 'remark',
+          label: '备注',
+          width: '180',
+
+        }
+      ]
+    }
+  },
+  created() {
+    this.getFrontDetail()
+  },
+  methods: {
+    getFrontDetail() {
+      getFrontDetail({ id: this.detailsId }).then(res => {
+        this.details = res.data
+        this.dataList = res.data.orders
+      })
+    },
+    handelSubmit(type){
+      approvalCustomerStockOrder({
+        ...this.details,
+        examineStatus:type,
+        approvalRemark:this.screenForm.approvalRemark
+      } ).then(res=>{
+        this.$successMsg(type==='OK'?'审核成功':'驳回成功')
+        $parent.pageType=0
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.warehousing {
+  margin: 20px;
+  padding: 20px;
+  box-shadow: 0 0 8px 0 rgb(0 0 0 / 20%);
+}
+</style>

+ 151 - 0
src/views/stock_control/components/WarehouseForm.vue

@@ -0,0 +1,151 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" content="新增" style=" padding: 20px 20px 0 20px;"></el-page-header>
+    <warehousing-header ref="header" />
+    <sales-table :dataList="dataList" :column="column" isOperation isSelection @handleSelection="handleSelection">
+      <template #bts>
+        <div>
+          <el-button type="primary" size="mini" @click="dialogVisible=true">添加</el-button>
+          <el-button type="danger" size="mini" @click="delChange">删除</el-button>
+        </div>
+      </template>
+      <template #events>
+        <div>
+          <el-button type="primary" size="mini" @click="handelSubmit">提交</el-button>
+          <el-button size="mini">重置</el-button>
+        </div>
+      </template>
+      <template v-slot:custom="{item:{row,$index}}">
+        <el-radio label="1" v-model="row.flag">增加</el-radio>
+        <el-radio label="-1" v-model="row.flag">减少</el-radio>
+      </template>
+      <template v-slot:operation="{item:{row,$index}}">
+        <el-popconfirm
+          style="margin-left: 10px"
+          title="删除?"
+          @onConfirm="handleDel(row,$index)"
+        >
+          <el-button slot="reference" type="text" size="mini">删除</el-button>
+        </el-popconfirm>
+      </template>
+    </sales-table>
+    <sales-dialog :dialogVisible="dialogVisible" :customerNumber="customerNumber" :func="getDialogList" @confirm="confirm" />
+  </div>
+</template>
+
+<script>
+import SalesDialog from '@/components/SalesDialog/SalesDialog'
+import WarehousingHeader from '@/components/WarehousingHeader/WarehousingHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import { getcustomerFrontList, addFrontOrder } from '@/api/stock'
+
+export default {
+  name: 'WarehouseForm',
+  components: {
+    WarehousingHeader,
+    SalesTable,
+    SalesDialog
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      customerNumber:'',
+      dataList: [],
+      selection: [],
+      flag:1,
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialOldNumber',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+        {
+          prop: 'stockLockQty',
+          label: '库存',
+          width: '180'
+        },
+        {
+          prop: 'directFlag',
+          label: '发生方向',
+          width: '180',
+          isCustom: true
+
+        },
+        {
+          prop: 'stockChangeQty',
+          label: '数量',
+          width: '180',
+          isInput: true
+        },
+        {
+          prop: 'remark',
+          label: '备注',
+          width: '180',
+          isInput: true
+
+        }
+      ]
+    }
+  },
+  methods: {
+    getDialogList(p) {
+      return getcustomerFrontList(...p)
+    },
+    confirm(selected) {
+      // console.log(selected)
+      this.dataList = selected
+      this.$refs.header.screenForm.customerName = this.dataList[0].customerName
+      this.$refs.header.screenForm.customerNumber = this.dataList[0].customerNumber
+      this.customerNumber = this.dataList[0].customerNumber
+      this.dialogVisible = false
+
+    },
+    handleDel(item, index) {
+      this.dataList.splice(index, 1)
+    },
+    delChange() {
+      this.dataList.forEach((k, i) => {
+        this.selection.forEach((l, e) => {
+          if (k.id === l.id) {
+            this.dataList.splice(i, 1)
+            this.selection.splice(e, 1)
+          }
+        })
+      })
+    },
+    handleSelection(data) {
+      this.selection = data
+    },
+    handelSubmit() {
+      this.dataList.forEach(k => {
+        k.id = ''
+        k.directFlag = k.flag
+      })
+      const params = {
+        ...this.$refs.header.screenForm,
+        orders: this.dataList
+      }
+      addFrontOrder(params).then(res => {
+        this.$successMsg('新增成功')
+        this.$parent.pageType = 0
+        this.$forceUpdate()
+      })
+    },
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 112 - 0
src/views/stock_control/customer_warehouse.vue

@@ -0,0 +1,112 @@
+<template>
+  <div>
+    <template-page
+      style="width: 100%;
+      height: 100%;"
+      ref="pageRef"
+      :getList="getList"
+      :exportList="exportList"
+      :columnParsing="columnParsing"
+    >
+    </template-page>
+  </div>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+
+import { getFrontListCustomer, exportCustomer } from '@/api/stock'
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin],
+  data() {
+    return {
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '批量删除',
+              click: this.dels,
+              isRole: this.$checkBtnRole('del', this.$route.meta.roles)
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getFrontListCustomer(...p)
+    },
+    // 列表导出函数
+    exportList: exportCustomer,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    }
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 100% !important;
+}
+</style>

+ 112 - 0
src/views/stock_control/preposition_stock_list.vue

@@ -0,0 +1,112 @@
+<template>
+  <div>
+    <template-page
+      style="width: 100%;
+      height: 100%;"
+      ref="pageRef"
+      :getList="getList"
+      :exportList="exportList"
+      :columnParsing="columnParsing"
+    >
+    </template-page>
+  </div>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+
+import { getcustomerFrontList, partsNewInExport } from '@/api/stock'
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin],
+  data() {
+    return {
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '批量删除',
+              click: this.dels,
+              isRole: this.$checkBtnRole('del', this.$route.meta.roles)
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getcustomerFrontList(...p)
+    },
+    // 列表导出函数
+    exportList: partsNewInExport,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    }
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 100% !important;
+}
+</style>

+ 246 - 0
src/views/stock_control/sales_management/components/customer_sales_details.vue

@@ -0,0 +1,246 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" content="详情" style=" padding: 20px 20px 0 20px;"></el-page-header>
+    <sales-header ref="header" />
+    <sales-table :dataList="dataList" :column="column"   @handleSelection="handleSelection">
+      <!--      <template #bts>-->
+      <!--        <div>-->
+      <!--          <el-button type="primary" size="mini" @click="dialogVisible=true">添加</el-button>-->
+      <!--          <el-button type="danger" size="mini" @click="delChange">删除</el-button>-->
+      <!--        </div>-->
+      <!--      </template>-->
+      <template #events>
+        <div v-if="details.status==1 || details.status==2">
+          <el-button type="primary" size="mini" @click="handleInform(2)">通知发货</el-button>
+          <el-button size="mini">撤销发货</el-button>
+        </div>
+        <div v-if="details.status==3">
+          <el-button type="primary" size="mini" @click="handleInform(3)">发货</el-button>
+          <el-button size="mini">撤销发货</el-button>
+        </div>
+        <div v-if="details.status==4">
+          <el-button type="primary" size="mini" @click="handleInform(4)">签收</el-button>
+        </div>
+      </template>
+      <template v-slot:custom="{item:{row,$index}}">
+        <el-radio label="1" v-model="row.flag">增加</el-radio>
+        <el-radio label="-1" v-model="row.flag">减少</el-radio>
+      </template>
+      <template v-slot:operation="{item:{row,$index}}">
+        <el-popconfirm
+          style="margin-left: 10px"
+          title="删除?"
+          @onConfirm="handleDel(row,$index)"
+        >
+          <el-button slot="reference" type="text" size="mini">删除</el-button>
+        </el-popconfirm>
+      </template>
+      <!--      <div>-->
+      <!--        <h5>物流信息</h5>-->
+      <!--        <div class="diy-table-1">-->
+      <!--          <el-row>-->
+      <!--            <el-col :span="6" class="item">-->
+      <!--              <div class="label">销售政策编号</div>-->
+      <!--              <div class="value">2222</div>-->
+      <!--            </el-col>-->
+      <!--            <el-col :span="6" class="item">-->
+      <!--              <div class="label">销售政策编号</div>-->
+      <!--              <div class="value">2222</div>-->
+      <!--            </el-col>-->
+      <!--            <el-col :span="6" class="item">-->
+      <!--              <div class="label">销售政策编号</div>-->
+      <!--              <div class="value">2222</div>-->
+      <!--            </el-col>-->
+      <!--            <el-col :span="6" class="item">-->
+      <!--              <div class="label">销售政策编号</div>-->
+      <!--              <div class="value">2222</div>-->
+      <!--            </el-col>-->
+      <!--            <el-col :span="24" class="item">-->
+      <!--              <div class="label">销售政策编号</div>-->
+      <!--              <div class="value">2222</div>-->
+      <!--            </el-col>-->
+      <!--          </el-row>-->
+      <!--        </div>-->
+      <!--        <el-timeline :reverse="reverse">-->
+      <!--          <el-timeline-item-->
+      <!--            v-for="(activity, index) in activities"-->
+      <!--            :key="index"-->
+      <!--            :timestamp="activity.timestamp"-->
+      <!--            :color="activity.color"-->
+      <!--          >-->
+      <!--            {{ activity.content }}-->
+      <!--          </el-timeline-item>-->
+      <!--        </el-timeline>-->
+      <!--      </div>-->
+    </sales-table>
+    <sales-dialog :dialogVisible="dialogVisible" :customerNumber="customerNumber" :func="getDialogList"
+                  @confirm="confirm"
+    />
+  </div>
+</template>
+
+<script>
+import SalesDialog from '@/components/SalesDialog/SalesDialog'
+import SalesHeader from '@/components/SalesHeader/SalesHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import { addFrontOrder, getFrontOrderDetail, sbumitFrontOrder } from '@/api/sales'
+import { getcustomerFrontList } from '@/api/stock'
+
+export default {
+  name: 'WarehouseForm',
+  components: {
+    SalesHeader,
+    SalesTable,
+    SalesDialog
+  },
+  props: ['detailsId'],
+  data() {
+    return {
+      dialogVisible: false,
+      customerNumber: '',
+      dataList: [],
+      details: {},
+      selection: [],
+      flag: 1,
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialOldNumber',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+        {
+          prop: 'stockLockQty',
+          label: '库存数量',
+          width: '180'
+        },
+        {
+          prop: 'qty',
+          label: '数量',
+          width: '180',
+        },
+        {
+          prop: 'volume',
+          label: '体积',
+          width: '180'
+        },
+        {
+          prop: 'totalVolume',
+          label: '总体积',
+          width: '180'
+        },
+        {
+          prop: 'notes',
+          label: '备注',
+          width: '180',
+
+        }
+      ],
+      activities: [{
+        content: '活动按期开始',
+        color: '#0bbd87',
+        timestamp: '2018-04-15'
+      }, {
+        content: '通过审核',
+        timestamp: '2018-04-13'
+      }, {
+        content: '创建成功',
+        timestamp: '2018-04-11'
+      }]
+
+    }
+  },
+  created() {
+    if (this.detailsId) {
+      getFrontOrderDetail({ id: this.detailsId }).then(res => {
+        this.dataList = res.data.orders
+        this.details = res.data
+        this.$refs.header.screenForm = res.data
+        this.$refs.header.screenForm.disabled = true
+
+        this.$refs.header.screenForm.provinceId = res.data.province
+        this.$refs.header.screenForm.cityId = res.data.city
+        this.$refs.header.screenForm.areaId = res.data.area
+        this.$refs.header.screenForm.streetId = res.data.street
+        this.$refs.header.screenForm.stockType = res.data.stockType == 1 ? '前置仓' : '商家仓'
+
+      })
+    }
+  },
+  methods: {
+    getDialogList(p) {
+      return getcustomerFrontList(...p)
+    },
+    confirm(selected) {
+      // console.log(selected)
+      this.dataList = selected
+      this.$refs.header.screenForm.customerName = this.dataList[0].customerName
+      this.$refs.header.screenForm.customerNumber = this.dataList[0].customerNumber
+      this.customerNumber = this.dataList[0].customerNumber
+      this.dialogVisible = false
+
+    },
+    handleDel(item, index) {
+      this.dataList.splice(index, 1)
+    },
+    delChange() {
+      this.dataList.forEach((k, i) => {
+        this.selection.forEach((l, e) => {
+          if (k.id === l.id) {
+            this.dataList.splice(i, 1)
+            this.selection.splice(e, 1)
+          }
+        })
+      })
+    },
+    handleSelection(data) {
+      this.selection = data
+    },
+    handelSubmit() {
+      this.dataList.forEach(k => {
+        k.id = ''
+        k.directFlag = k.flag
+      })
+      const params = {
+        ...this.$refs.header.screenForm,
+        orders: this.dataList
+      }
+      addFrontOrder(params).then(res => {
+        this.$successMsg('新增成功')
+        this.$parent.pageType = 0
+        this.$forceUpdate()
+      })
+    },
+    handelSigning() {
+      this.$confirm('请确定,订单产品客户已完成签收,一旦签收则不能撤销', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(res => {
+
+      }).catch(err => {
+
+      })
+    },
+    handleInform(status = 2) {
+      sbumitFrontOrder({ id: this.$refs.header.screenForm.id, status }).then(res => {
+        this.$successMsg('退货通知')
+      })
+    }
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 231 - 0
src/views/stock_control/sales_management/components/customer_sales_form.vue

@@ -0,0 +1,231 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" :content="detailsId?'编辑':'新增'" style=" padding: 20px 20px 0 20px;"
+    ></el-page-header>
+    <sales-header ref="header" />
+    <sales-table :dataList="dataList" :column="column" isOperation isSelection @handleSelection="handleSelection">
+      <template #bts>
+        <div>
+          <el-button type="primary" size="mini" @click="dialogVisible=true">添加</el-button>
+          <el-button type="danger" size="mini" @click="delChange">删除</el-button>
+        </div>
+      </template>
+      <template #events>
+        <div v-if="!detailsId">
+          <el-button type="primary" size="mini" @click="handelSubmit(1)">提交</el-button>
+          <el-button size="mini">重置</el-button>
+          <el-button size="mini" :disabled="dis" @click="handleInform(2)">通知发货</el-button>
+        </div>
+        <div v-else>
+          <el-button type="primary" size="mini" @click="handelSubmit(2)">保存</el-button>
+          <el-button size="mini">重置</el-button>
+        </div>
+      </template>
+      <template v-slot:custom="{item:{row,$index}}">
+        <el-radio label="1" v-model="row.flag">增加</el-radio>
+        <el-radio label="-1" v-model="row.flag">减少</el-radio>
+      </template>
+      <template v-slot:operation="{item:{row,$index}}">
+        <el-popconfirm
+          style="margin-left: 10px"
+          title="删除?"
+          @onConfirm="handleDel(row,$index)"
+        >
+          <el-button slot="reference" type="text" size="mini">删除</el-button>
+        </el-popconfirm>
+      </template>
+    </sales-table>
+    <sales-dialog :dialogVisible="dialogVisible" :customerNumber="customerNumber" :func="getDialogList"
+                  @confirm="confirm"
+    />
+  </div>
+</template>
+
+<script>
+import SalesDialog from '@/components/SalesDialog/SalesDialog'
+import SalesHeader from '@/components/SalesHeader/SalesHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import { addFrontOrder, getFrontOrderDetail, sbumitFrontOrder, updateFrontOrder } from '@/api/sales'
+import { getcustomerFrontList } from '@/api/stock'
+
+export default {
+  name: 'WarehouseForm',
+  components: {
+    SalesHeader,
+    SalesTable,
+    SalesDialog
+  },
+  props: ['detailsId'],
+  data() {
+    return {
+      dialogVisible: false,
+      customerNumber: '',
+      dataList: [],
+      selection: [],
+      disabled:false,
+      flag: 1,
+      dis: true,
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialOldNumber',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+        {
+          prop: 'stockLockQty',
+          label: '库存数量',
+          width: '180'
+        },
+        {
+          prop: 'qty',
+          label: '数量',
+          width: '180',
+          isInput: true
+        },
+        {
+          prop: 'volume',
+          label: '体积',
+          width: '180'
+        },
+        {
+          prop: 'totalVolume',
+          label: '总体积',
+          width: '180'
+        },
+        {
+          prop: 'notes',
+          label: '备注',
+          width: '180',
+          isInput: true,
+          type: 'text'
+
+        }
+      ]
+    }
+  },
+  created() {
+    if (this.detailsId) {
+      getFrontOrderDetail({ id: this.detailsId }).then(res => {
+        this.dataList = res.data.orders
+        this.$refs.header.screenForm = res.data
+        this.$refs.header.screenForm.disabled =this.disabled  = res.data.status !== 1?true:false
+
+        this.$refs.header.screenForm.provinceId = res.data.province
+        this.$refs.header.screenForm.cityId = res.data.city
+        this.$refs.header.screenForm.areaId = res.data.area
+        this.$refs.header.screenForm.streetId = res.data.street
+        this.$refs.header.screenForm.stockType = res.data.stockType == 1 ? '前置仓' : '商家仓'
+      })
+    } else {
+      Object.assign(this.$data, this.$options.data())
+    }
+  },
+  methods: {
+
+    getDialogList(p) {
+      return getcustomerFrontList(...p)
+    },
+    confirm(selected) {
+      console.log(selected)
+      this.dataList = selected
+      this.$refs.header.screenForm.customerName = this.dataList[0].customerName
+      this.$refs.header.screenForm.customerNumber = this.dataList[0].customerNumber
+      this.$refs.header.screenForm.stockType = this.dataList[0].stockType
+      this.customerNumber = this.dataList[0].customerNumber
+      this.dialogVisible = false
+
+    },
+    handleDel(item, index) {
+      this.dataList.splice(index, 1)
+      if (!this.dataList.length) {
+        this.$nextTick(() => {
+          this.$refs.header.screenForm = {}
+          this.customerNumber = ''
+        })
+
+      }
+    },
+    delChange() {
+      this.dataList.forEach((k, i) => {
+        this.selection.forEach((l, e) => {
+          if (k.id === l.id) {
+            this.dataList.splice(i, 1)
+            this.selection.splice(e, 1)
+          }
+        })
+      })
+      if (!this.dataList.length) {
+        this.$nextTick(() => {
+          this.$refs.header.screenForm = {}
+          this.customerNumber = ''
+        })
+
+      }
+    },
+    handleSelection(data) {
+      this.selection = data
+    },
+    handleInform(status = 2) {
+      console.log(33)
+      sbumitFrontOrder({ id: this.$refs.header.screenForm.id, status }).then(res => {
+        console.log(res)
+      })
+    },
+    handelSubmit(type, status = 1) {
+      if (!this.dataList.length) {
+        this.$errorMsg('请添加产品')
+        return
+      }
+      for (let i = 0; i < this.dataList.length; i++) {
+        this.dataList[i].id = ''
+        this.dataList[i].directFlag = this.dataList[i].flag
+        console.log(Number(this.dataList[i].qty))
+
+        if (Number(this.dataList[i].qty) < 0 || !this.dataList[i].qty) {
+          this.$errorMsg(`第${i + 1}产品数量有误`)
+          return
+        }
+      }
+
+      const params = {
+        ...this.$refs.header.screenForm,
+        orders: this.dataList,
+        status: status
+      }
+      if (type == 1) {
+        params.id = ''
+        addFrontOrder(params).then(res => {
+          this.$successMsg('新增成功')
+          this.dis = false
+          // this.$parent.pageType = 0
+
+          this.$forceUpdate()
+        })
+
+      } else {
+        updateFrontOrder(params).then(res => {
+          this.$successMsg('编辑成功')
+          this.$parent.pageType = 0
+          this.$forceUpdate()
+        })
+
+      }
+    }
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 173 - 0
src/views/stock_control/sales_management/components/return_sales_details.vue

@@ -0,0 +1,173 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" content="详情" style=" padding: 20px 20px 0 20px;"></el-page-header>
+    <return-sales-header ref="header" :details="details" />
+    <sales-table :dataList="dataList" :column="column"   @handleSelection="handleSelection">
+      <template #bts>
+        <div>
+          <el-button type="primary" size="mini" @click="dialogVisible=true">添加</el-button>
+          <el-button type="danger" size="mini" @click="delChange">删除</el-button>
+        </div>
+      </template>
+      <template #events>
+        <div>
+          <el-button type="primary" size="mini" @click="handleInform(2)">通知发货</el-button>
+          <el-button size="mini">撤销发货</el-button>
+        </div>
+      </template>
+
+      <template v-slot:custom="{item:{row,$index}}">
+        <el-radio label="1" v-model="row.flag">增加</el-radio>
+        <el-radio label="-1" v-model="row.flag">减少</el-radio>
+      </template>
+      <template v-slot:operation="{item:{row,$index}}">
+        <el-popconfirm
+          style="margin-left: 10px"
+          title="删除?"
+          @onConfirm="handleDel(row,$index)"
+        >
+          <el-button slot="reference" type="text" size="mini">删除</el-button>
+        </el-popconfirm>
+      </template>
+    </sales-table>
+    <sales-dialog :dialogVisible="dialogVisible" :customerNumber="customerNumber" :func="getDialogList"
+                  @confirm="confirm"
+    />
+  </div>
+</template>
+
+<script>
+import SalesDialog from '@/components/SalesDialog/SalesDialog'
+import ReturnSalesHeader from '@/components/ReturnSalesHeader/ReturnSalesHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import { addFrontOrder, detailRefund, sbumitFrontOrder, sendRefund } from '@/api/sales'
+import { getcustomerFrontList } from '@/api/stock'
+
+export default {
+  name: 'WarehouseForm',
+  components: {
+    ReturnSalesHeader,
+    SalesTable,
+    SalesDialog
+  },
+  props: ['detailsId'],
+  data() {
+    return {
+      dialogVisible: false,
+      customerNumber: '',
+      dataList: [],
+      selection: [],
+      flag: 1,
+      details: {},
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialOldNumber',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+        {
+          prop: 'stockLockQty',
+          label: '库存数量',
+          width: '180'
+        },
+        {
+          prop: 'qty',
+          label: '数量',
+          width: '180',
+        },
+        {
+          prop: 'volume',
+          label: '体积',
+          width: '180'
+        },
+        {
+          prop: 'totalVolume',
+          label: '总体积',
+          width: '180'
+        },
+        {
+          prop: 'notes',
+          label: '备注',
+          width: '180',
+
+        }
+      ]
+    }
+  },
+  created() {
+    if (this.detailsId) {
+      detailRefund({ id: this.detailsId }).then(res => {
+        this.dataList = res.data.orders
+        this.details = res.data
+      })
+    }
+  },
+  methods: {
+    getDialogList(p) {
+      return getcustomerFrontList(...p)
+    },
+    confirm(selected) {
+      // console.log(selected)
+      this.dataList = selected
+      this.$refs.header.screenForm.customerName = this.dataList[0].customerName
+      this.$refs.header.screenForm.customerNumber = this.dataList[0].customerNumber
+      this.customerNumber = this.dataList[0].customerNumber
+      this.dialogVisible = false
+
+    },
+    handleDel(item, index) {
+      this.dataList.splice(index, 1)
+    },
+    delChange() {
+      this.dataList.forEach((k, i) => {
+        this.selection.forEach((l, e) => {
+          if (k.id === l.id) {
+            this.dataList.splice(i, 1)
+            this.selection.splice(e, 1)
+          }
+        })
+      })
+    },
+    handleSelection(data) {
+      this.selection = data
+    },
+    handleInform(status = 2) {
+      console.log(33)
+      sendRefund({ id: this.details.id, status }).then(res => {
+        this.$successMsg('退货通知')
+
+      })
+    },
+    handelSubmit() {
+      this.dataList.forEach(k => {
+        k.id = ''
+        k.directFlag = k.flag
+      })
+      const params = {
+        ...this.$refs.header.screenForm,
+        orders: this.dataList
+      }
+      addFrontOrder(params).then(res => {
+        this.$successMsg('新增成功')
+        this.$parent.pageType = 0
+        this.$forceUpdate()
+      })
+    }
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 235 - 0
src/views/stock_control/sales_management/components/return_sales_form.vue

@@ -0,0 +1,235 @@
+<template>
+  <div>
+    <el-page-header @back="$parent.pageType=0" :content="detailsId?'编辑':'新增'" style=" padding: 20px 20px 0 20px;"></el-page-header>
+    <return-sales-header ref="header" :details="details"/>
+    <sales-table :dataList="dataList" :column="column" isOperation isSelection @handleSelection="handleSelection">
+      <template #bts>
+        <div>
+          <el-button type="primary" size="mini" @click="dialogVisible=true">添加</el-button>
+          <el-button type="danger" size="mini" @click="delChange">删除</el-button>
+        </div>
+      </template>
+      <template #events>
+        <div v-if="!detailsId">
+          <el-button type="primary" size="mini" @click="handelSubmit(1)">提交</el-button>
+          <el-button size="mini">重置</el-button>
+          <el-button size="mini" :disabled="dis" @click="handleInform(2)">通知发货</el-button>
+        </div>
+        <div v-else>
+          <el-button type="primary" size="mini" @click="handelSubmit(2)">保存</el-button>
+          <el-button size="mini">重置</el-button>
+        </div>
+
+      </template>
+      <template v-slot:custom="{item:{row,$index}}">
+        <el-radio label="1" v-model="row.flag">增加</el-radio>
+        <el-radio label="-1" v-model="row.flag">减少</el-radio>
+      </template>
+      <template v-slot:operation="{item:{row,$index}}">
+        <el-popconfirm
+          style="margin-left: 10px"
+          title="删除?"
+          @onConfirm="handleDel(row,$index)"
+        >
+          <el-button slot="reference" type="text" size="mini">删除</el-button>
+        </el-popconfirm>
+      </template>
+    </sales-table>
+    <sales-dialog :dialogVisible="dialogVisible" :customerNumber="customerNumber" :func="getDialogList" @confirm="confirm" />
+  </div>
+</template>
+
+<script>
+import SalesDialog from '@/components/SalesDialog/SalesDialog'
+import ReturnSalesHeader from '@/components/ReturnSalesHeader/ReturnSalesHeader'
+import SalesTable from '@/components/SalesTable/SalesTable'
+import {
+  addFrontOrder, detailRefund,
+  getFrontOrderDetail,
+  addRefund,
+  getFrontOrderList,
+  sbumitFrontOrder,
+  sendRefund,
+  updateRefund
+} from '@/api/sales'
+
+export default {
+  name: 'WarehouseForm',
+  components: {
+    ReturnSalesHeader,
+    SalesTable,
+    SalesDialog
+  },
+  props:['detailsId'],
+  data() {
+    return {
+      dialogVisible: false,
+      customerNumber:'',
+      dataList: [],
+      selection: [],
+      flag:1,
+      dis:true,
+      details:{},
+      column: [
+        {
+          prop: 'materialName',
+          label: '产品名称',
+          width: '180'
+        },
+        {
+          prop: 'materialOldNumber',
+          label: '物料编码',
+          width: '180'
+        },
+        {
+          prop: 'specification',
+          label: '规格型号',
+          width: '300'
+        },
+        {
+          prop: 'qty',
+          label: '发货数量',
+          width: '180'
+        },
+        {
+          prop: 'refundQty',
+          label: '退货数量',
+          width: '180',
+          isInput: true
+        },
+        {
+          prop: 'qty',
+          label: '已退数量',
+          width: '180',
+        },
+        {
+          prop: 'volume',
+          label: '体积',
+          width: '180'
+        },
+        {
+          prop: 'totalVolume',
+          label: '总体积',
+          width: '180'
+        },
+        {
+          prop: 'notes',
+          label: '备注',
+          width: '180',
+          isInput: true,
+          type:'text'
+        }
+      ]
+    }
+  },
+  created() {
+    if (this.detailsId) {
+      detailRefund({id:this.detailsId}).then(res=>{
+        this.dataList = res.data.orders
+        this.details = res.data
+        this.details.customerOrderNo = this.dataList[0].id
+        this.customerNumber=this.dataList[0].customerNumber
+      })
+    }else{
+      Object.assign(this.$data, this.$options.data())
+    }
+  },
+
+  methods: {
+    getDialogList(p) {
+      return getFrontOrderList(...p)
+    },
+    confirm(selected) {
+      console.log(selected)
+      // console.log(selected)
+      this.dataList = selected
+      this.details = this.dataList[0]
+      this.details.customerOrderNo = this.dataList[0].id
+      this.details.id = ''
+      this.customerNumber=this.dataList[0].customerNumber
+       // this.$refs.header.details.customerName = this.dataList[0].customerName
+       // this.$refs.header.details.customerNumber = this.dataList[0].customerNumber
+       // this.$refs.header.details.customerNumber = this.dataList[0].pickTime
+       // this.$refs.header.details.customerNumber = this.dataList[0].userName
+       // this.$refs.header.details.customerNumber = this.dataList[0].phone
+       // this.$refs.header.details.customerNumber = this.dataList[0].stockType
+      this.dialogVisible = false
+
+    },
+    handleDel(item, index) {
+      this.dataList.splice(index, 1)
+      if (!this.dataList.length){
+        this.$nextTick(()=>{
+          this.details = {}
+          this.customerNumber = ''
+        })
+      }
+    },
+    delChange() {
+      this.dataList.forEach((k, i) => {
+        this.selection.forEach((l, e) => {
+          if (k.id === l.id) {
+            this.dataList.splice(i, 1)
+            this.selection.splice(e, 1)
+          }
+        })
+      })
+      if (!this.dataList.length){
+        this.$nextTick(()=>{
+          this.details = {}
+          this.customerNumber = ''
+        })
+      }
+    },
+    handleSelection(data) {
+      this.selection = data
+    },
+
+    handelSubmit(type,status=1) {
+      if (!this.dataList.length){
+        this.$errorMsg('请添加产品')
+        return
+      }
+      for (let i = 0; i < this.dataList.length; i++) {
+        this.dataList[i].id = ''
+        this.dataList[i].directFlag = this.dataList[i].flag
+        if (Number(this.dataList[i].refundQty)<0 || !this.dataList[i].refundQty){
+          this.$errorMsg(`第${i+1}产品退货数量有误`)
+          return
+        }
+      }
+
+      const params = {
+        ...this.$refs.header.details,
+        orders: this.dataList,
+        customerOrderNo:this.details.customerOrderNo,
+        status
+      }
+      if (type===1){
+        params.id = ''
+        addRefund(params).then(res => {
+          this.$successMsg('新增成功')
+          // this.$parent.pageType = 0
+          this.dis =false
+          this.$forceUpdate()
+        })
+
+      }else {
+        updateRefund(params).then(res=>{
+          this.$successMsg('编辑成功')
+          this.$parent.pageType = 0
+          this.$forceUpdate()
+        })
+      }
+    },
+    handleInform(status=2){
+      sendRefund({id:this.$refs.header.details.id,status})
+    }
+
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 118 - 0
src/views/stock_control/sales_management/components/sel-export-column-list.vue

@@ -0,0 +1,118 @@
+<template>
+  <el-dialog
+    title="勾选导出列"
+    :before-close="cancel"
+    :visible.sync="dialogVisible"
+    width="400px"
+  >
+    <el-table
+      :data="exportColumnList"
+      v-bind="{
+        height: '100%',
+        style: 'width: 100%',
+        border: true,
+        headerCellClassName: 'headerRowColor',
+        size: 'mini'
+      }"
+    >
+      <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>
+    <span slot="footer" class="dialog-footer">
+      <el-button size="mini" @click="cancel">取 消</el-button>
+      <el-button size="mini" type="primary" @click="determine">确 定</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  props: {
+    columnList: {
+      type: Array,
+      default: () => []
+    }
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      isExport: true,
+      exportColumnList: []
+    };
+  },
+  watch: {
+    columnList: {
+      handler() {
+        if (this.columnList && this.columnList.length) {
+          this.exportColumnList = this.columnList.map(item => {
+            return { ...item.exportField, isExport: true };
+          });
+          this.dialogVisible = true;
+        } else {
+          this.exportColumnList = [];
+          this.dialogVisible = false;
+        }
+      },
+      deep: true
+    },
+    exportColumnList: {
+      handler() {
+        this.isExport = this.exportColumnList.every(
+          item => item.isExport === true
+        );
+      },
+      deep: true
+    },
+    isExport() {
+      if (
+        this.exportColumnList.every(item => item.isExport === true) !==
+        this.isExport
+      ) {
+        this.exportColumnList.map(item => {
+          item.isExport = this.isExport;
+        });
+      }
+    }
+  },
+  methods: {
+    cancel() {
+      this.$emit("cancel");
+    },
+    determine() {
+      this.$emit(
+        "determine",
+        this.exportColumnList.filter(item => item.isExport)
+      );
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped></style>

+ 378 - 0
src/views/stock_control/sales_management/components/tableData.js

@@ -0,0 +1,378 @@
+export default {
+  data: {
+    records: [
+      {
+        id: '1529270679017484289',
+        identity: '431003199803271316',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: -25,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-05-25 09:18:37',
+      },
+      {
+        id: '1529270679738904578',
+        identity: '431003199803271316',
+        goodsId: 'W1006',
+        goodsName: '保温棉',
+        saleUnit: '条',
+        qty: -24,
+        categoryId: '4',
+        categoryName: '保温',
+        createTime: '2022-05-25 09:18:37',
+      },
+      {
+        id: '1529280470703071233',
+        identity: '452226198504073614',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: 30,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-05-25 09:57:32',
+      },
+      {
+        id: '1529282123955101698',
+        identity: '452226198504073614',
+        goodsId: 'W1001',
+        goodsName: '金冷R600a/90G',
+        saleUnit: '瓶',
+        qty: 10,
+        categoryId: '11',
+        categoryName: '冷媒',
+        createTime: '2022-05-25 10:04:06',
+      },
+      {
+        id: '1529284045793583105',
+        identity: '431003199803271316',
+        goodsId: 'W1001',
+        goodsName: '金冷R600a/90G',
+        saleUnit: '瓶',
+        qty: 10,
+        categoryId: '11',
+        categoryName: '冷媒',
+        createTime: '2022-05-25 10:11:44',
+      },
+      {
+        id: '1529286318682726402',
+        identity: '511321198104074414',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: 0,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-05-25 10:20:46',
+      },
+      {
+        id: '1529293433069559809',
+        identity: '440229197310010077',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: 8,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-05-25 10:49:02',
+      },
+      {
+        id: '1529300002167513089',
+        identity: '440229197310010077',
+        goodsId: 'W1015',
+        goodsName: '3-5匹角铁地架',
+        saleUnit: '副',
+        qty: 0,
+        categoryId: '13',
+        categoryName: '支架',
+        createTime: '2022-05-25 11:15:08',
+      },
+      {
+        id: '1529392526345297922',
+        identity: '431003199803271316',
+        goodsId: 'W1005',
+        goodsName: '包扎带(挂机)',
+        saleUnit: '卷',
+        qty: -20,
+        categoryId: '30',
+        categoryName: '包扎带',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1529392527217713154',
+        identity: '431003199803271316',
+        goodsId: 'W1052',
+        goodsName: '包扎带(柜机)',
+        saleUnit: '卷',
+        qty: -2,
+        categoryId: '30',
+        categoryName: '包扎带',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1529392527284822018',
+        identity: '431003199803271316',
+        goodsId: 'W1003',
+        goodsName: '连接器',
+        saleUnit: '个',
+        qty: -6,
+        categoryId: '31',
+        categoryName: '连接器',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1529392527356125186',
+        identity: '431003199803271316',
+        goodsId: 'W1002',
+        goodsName: '双壁热缩套管',
+        saleUnit: '条',
+        qty: -6,
+        categoryId: '32',
+        categoryName: '双壁热缩套管',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1529392527473565698',
+        identity: '431003199803271316',
+        goodsId: 'W1008',
+        goodsName: '电缆',
+        saleUnit: '米',
+        qty: -2,
+        categoryId: '18',
+        categoryName: '电缆',
+        createTime: '2022-05-25 17:22:48',
+      },
+      {
+        id: '1539450903616245761',
+        identity: '430725198907104353',
+        goodsId: 'W1000',
+        goodsName: '铜管',
+        saleUnit: '米',
+        qty: -4,
+        categoryId: '6',
+        categoryName: '铜管',
+        createTime: '2022-06-22 11:31:12',
+      },
+      {
+        id: '1539450903687548929',
+        identity: '430725198907104353',
+        goodsId: 'W1006',
+        goodsName: '保温棉',
+        saleUnit: '条',
+        qty: -2,
+        categoryId: '4',
+        categoryName: '保温',
+        createTime: '2022-06-22 11:31:12',
+      },
+    ],
+    total: 23,
+    size: 15,
+    current: 1,
+    orders: [],
+    optimizeCountSql: true,
+    searchCount: true,
+    countId: null,
+    maxLimit: null,
+    pages: 2,
+  },
+  message: 'success',
+  code: 1,
+  fieldBeans: [
+    {
+      id: '1584740968445440002',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '创建时间',
+      placeholder: null,
+      type: 'datetime',
+      multiple: false,
+      frontCode: null,
+      tbName: null,
+      colName: 'createTime',
+      width: null,
+      sortNum: 0,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'createTime',
+    },
+    {
+      id: '1584740968458022913',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: 'id',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_stock',
+      colName: 'id',
+      width: null,
+      sortNum: 1,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'id',
+    },
+    {
+      id: '1584740968466411522',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '身份证',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_stock',
+      colName: 'identity',
+      width: null,
+      sortNum: 2,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'identity',
+    },
+    {
+      id: '1584740968466411523',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '商品id',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_stock',
+      colName: 'goodsId',
+      width: null,
+      sortNum: 3,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'goodsId',
+    },
+    {
+      id: '1584740968466411524',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '商品名称',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_goods',
+      colName: 'goodsName',
+      width: null,
+      sortNum: 4,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'goodsName',
+    },
+    {
+      id: '1584740968470605827',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '数量',
+      placeholder: null,
+      type: 'number',
+      isTotal: true,
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_stock',
+      colName: 'qty',
+      width: null,
+      sortNum: 5,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'qty',
+    },
+    {
+      id: '1584740968470605826',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '销售单位',
+      placeholder: null,
+      type: 'input',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_goods',
+      colName: 'saleUnit',
+      width: null,
+      sortNum: 6,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'saleUnit',
+    },
+    {
+      id: '1584740968470605828',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '类型id',
+      placeholder: null,
+      type: 'number',
+      multiple: false,
+      frontCode: '',
+      tbName: 'worker_goods',
+      colName: 'categoryId',
+      width: null,
+      sortNum: 7,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'categoryId',
+    },
+    {
+      id: '1584740968470605829',
+      adminUserId: '1417020624153350146',
+      moduleId: 'P1001002',
+      label: '类型名称',
+      placeholder: null,
+      type: 'select',
+      multiple: false,
+      frontCode: 'category',
+      tbName: 'worker_goods',
+      colName: 'categoryName',
+      width: null,
+      sortNum: 8,
+      isShow: true,
+      isCopy: false,
+      createTime: null,
+      createBy: null,
+      updateTime: null,
+      updateBy: null,
+      jname: 'categoryName',
+    },
+  ],
+  typeReference: {
+    type: 'com.gree.material.manager.bean.worker.ZStockBean',
+    typeName: 'class com.gree.material.manager.bean.worker.ZStockBean',
+  },
+};

+ 191 - 0
src/views/stock_control/sales_management/customer_sales_list.vue

@@ -0,0 +1,191 @@
+<template>
+  <div>
+    <template-page
+      v-if="!pageType"
+      style="width: 100%;
+      height: 100%;"
+      ref="pageRef"
+      :getList="getList"
+      :exportList="exportList"
+      :operation="operation()"
+      :columnParsing="columnParsing"
+      :optionsEvensGroup="optionsEvensGroup"
+    >
+    </template-page>
+    <customer_sales_form :detailsId="detailsId" v-else-if="pageType===1 || pageType ===2" />
+    <customer_sales_details :detailsId="detailsId" v-else />
+  </div>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import { delFrontOrder, exportCustomerFrontOrder, getFrontOrderList } from '@/api/sales'
+import customer_sales_form from '@/views/sales_control/sales_management/components/customer_sales_form'
+import customer_sales_details from '@/views/sales_control/sales_management/components/customer_sales_details'
+
+export default {
+  components: { TemplatePage, customer_sales_form, customer_sales_details },
+  mixins: [import_mixin],
+  data() {
+    return {
+      pageType: 0,
+      detailsId: '',
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '新增',
+              click: () => {
+                this.pageType = 1
+                this.detailsId = ''
+              }
+            }
+          ]
+        ]
+        // [
+        //   [
+        //     {
+        //       name: '编辑',
+        //       click: ()=>{
+        //         this.pageType = 2
+        //       }
+        //     }
+        //   ]
+        // ],
+        // [
+        //   [
+        //     {
+        //       name: '删除',
+        //       click: this.dels
+        //     }
+        //   ]
+        // ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getFrontOrderList(...p)
+    },
+    // 列表导出函数
+    exportList: exportCustomerFrontOrder,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            <el-button
+              size="mini"
+              type="text" onClick={() => {
+              this.detailsId = row.id
+              this.pageType = 3
+
+            }}
+            >
+              查看
+            </el-button>
+            <el-button
+              size="mini"
+              type="text" onClick={() => {
+              this.detailsId = row.id
+              this.pageType = 2
+            }}
+            >
+              编辑
+            </el-button>
+            <el-popconfirm
+              onOnConfirm={() => {
+                delFrontOrder({ id: row.id }).then(res => {
+                  this.$successMsg('删除成功')
+                  this.$refs.pageRef.refreshList()
+                })
+              }}
+              title="删除吗?"
+            >
+              <el-button slot="reference" size="mini" type="text">删除</el-button>
+            </el-popconfirm>
+          </div>
+        )
+      }
+
+    }
+// <el-popconfirm
+//   onOnConfirm = {()=>{
+//     deleteCustomerStockOrder({ id: row.id }).then(res => {
+//       this.$successMsg('删除成功')
+//       this.$refs.pageRef.getTableData()
+//     })              }}
+//   title="删除吗?"
+// >
+//   <el-button slot="reference" type="text">删除</el-button>
+// </el-popconfirm>
+
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 100% !important;
+}
+</style>

+ 180 - 0
src/views/stock_control/sales_management/return_sales_list.vue

@@ -0,0 +1,180 @@
+<template>
+  <div>
+    <template-page
+      v-if="!pageType"
+      style="width: 100%;
+      height: 100%;"
+      ref="pageRef"
+      :getList="getList"
+      :exportList="exportList"
+      :operation="operation()"
+      :columnParsing="columnParsing"
+      :optionsEvensGroup="optionsEvensGroup"
+    >
+    </template-page>
+    <return_sales_form v-else-if="pageType===1 || pageType ===2" :details-id="detailsId"/>
+    <return_sales_details v-else :details-id="detailsId"/>
+  </div>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import { delDeleteRefund, exportRefund, getFrontOrderListRefund } from '@/api/sales'
+import return_sales_form from '@/views/sales_control/sales_management/components/return_sales_form'
+import return_sales_details from '@/views/sales_control/sales_management/components/return_sales_details'
+export default {
+  components: { TemplatePage,return_sales_form,return_sales_details },
+  mixins: [import_mixin],
+  data() {
+    return {
+      detailsId:'',
+      pageType:0,
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '新增',
+              click: ()=>{
+                this.pageType = 1
+                this.detailsId =''
+              }
+            }
+          ]
+        ],
+        [
+          [
+            {
+              name: '编辑',
+              click: ()=>{
+                this.pageType = 1
+              }
+            }
+          ]
+        ],
+        [
+          [
+            {
+              name: '删除',
+              click: this.dels
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getFrontOrderListRefund(...p)
+    },
+    // 列表导出函数
+    exportList: exportRefund,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            <el-button
+              size="mini"
+              type="text" onClick={() => {
+              this.detailsId = row.id
+              this.pageType = 3
+
+            }}
+            >
+              查看
+            </el-button>
+            <el-button
+              size="mini"
+              type="text" onClick={() => {
+              this.detailsId = row.id
+              this.pageType = 2
+            }}
+            >
+              编辑
+            </el-button>
+            <el-popconfirm
+              onOnConfirm = {()=>{
+                delDeleteRefund({ id: row.id }).then(res => {
+                  this.$successMsg('删除成功')
+                  this.$refs.pageRef.refreshList();
+
+                })              }}
+              title="删除吗?"
+            >
+              <el-button slot="reference" size="mini" type="text">删除</el-button>
+            </el-popconfirm>
+          </div>
+        )
+      }
+
+    }
+
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 100% !important;
+}
+</style>

+ 112 - 0
src/views/stock_control/stock_three_level.vue

@@ -0,0 +1,112 @@
+<template>
+  <div>
+    <template-page
+      style="width: 100%;
+      height: 100%;"
+      ref="pageRef"
+      :getList="getList"
+      :exportList="exportList"
+      :columnParsing="columnParsing"
+    >
+    </template-page>
+  </div>
+</template>
+
+<script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+
+import { getFrontListStockAcc, exportListStockAcc } from '@/api/stock'
+export default {
+  components: { TemplatePage },
+  mixins: [import_mixin],
+  data() {
+    return {
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '批量删除',
+              click: this.dels,
+              isRole: this.$checkBtnRole('del', this.$route.meta.roles)
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
+    }
+  },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getFrontListStockAcc(...p)
+    },
+    // 列表导出函数
+    exportList: exportListStockAcc,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    }
+    // 批量删除
+    // dels() {
+    //   if (this.recordSelected.length) {
+    //     this.$confirm('此操作将删除数据, 是否继续?', '提示', {
+    //       confirmButtonText: '确定',
+    //       cancelButtonText: '取消',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         partsOldOutDel({
+    //           ids: this.recordSelected.map(item => item.id).join(',')
+    //         })
+    //           .then(res => {
+    //             this.$refs.pageRef.refreshList()
+    //             this.$message({
+    //               type: 'success',
+    //               message: '删除成功!'
+    //             })
+    //           })
+    //           .catch(() => {
+    //             this.$message({
+    //               type: 'error',
+    //               message: '删除失败'
+    //             })
+    //           })
+    //       })
+    //       .catch(() => {
+    //         this.$message({
+    //           type: 'info',
+    //           message: '已取消删除'
+    //         })
+    //       })
+    //   } else {
+    //     this.$message({
+    //       type: 'info',
+    //       message: '请先勾选需要删除的数据!'
+    //     })
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .el-table__body-wrapper {
+  height: 100% !important;
+}
+</style>

+ 1 - 0
src/views/supply/adjust/adjust_list.vue

@@ -38,6 +38,7 @@
                 <el-date-picker
                   v-model="screenForm.date"
                   type="datetimerange"
+:default-time="['00:00:00','23:59:59']"
                   range-separator="至"
                   style="width: 100%"
                   value-format="yyyy-MM-dd HH:mm:ss"

+ 2 - 1
src/views/supply/allot/allot_list.vue

@@ -26,9 +26,10 @@
                     <el-date-picker
                       v-model="screenForm.date"
                       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="结束日期"
                     >

+ 14 - 2
src/views/supply/apply/apply_list.vue

@@ -47,6 +47,7 @@
                     <el-date-picker
                       v-model="screenForm.date"
                       type="datetimerange"
+                      :default-time="['00:00:00','23:59:59']"
                       range-separator="至"
                       style="width: 100%"
                       value-format="yyyy-MM-dd HH:mm:ss"
@@ -143,6 +144,14 @@
                     <el-input v-model="screenForm.createBy" placeholder="请输入制单人" />
                   </el-form-item>
                 </el-col>
+                <el-col :xs="24" :sm="12" :lg="6">
+                  <el-form-item label="订单状态" prop="automaticStatus">
+                    <el-select v-model="screenForm.automaticStatus" clearable placeholder="请选择">
+                      <el-option label="非计划单" :value="true"></el-option>
+                      <el-option label="计划单" :value="false"></el-option>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
                 <el-col :xs="24" :sm="12" :lg="6"></el-col>
               </el-row>
             </el-form>
@@ -548,7 +557,8 @@ export default {
         serviceId: '',
         categoryId: '',
         approvalName: '',
-        createBy: ''
+        createBy: '',
+        automaticStatus: ''
       },
       statusList: [
         { label: '已保存', value: 'SAVE' },
@@ -599,7 +609,8 @@ export default {
         type: this.screenForm.orderType,
         mainOrderId: this.screenForm.mainOrderId,
         categoryId: this.screenForm.categoryId,
-        approvalName: this.screenForm.approvalName
+        approvalName: this.screenForm.approvalName,
+        automaticStatus: this.screenForm.automaticStatus
       }
     }
   },
@@ -664,6 +675,7 @@ export default {
         correspondName: this.screenForm.warehouse,
         customerNumber: this.screenForm.jxsNum,
         createBy: this.screenForm.createBy,
+        automaticStatus: this.screenForm.automaticStatus,
 
         customerName: this.screenForm.jxsName,
         productName: this.screenForm.chName,

+ 2 - 0
src/views/supply/apply/components/apply_return_form.vue

@@ -775,6 +775,7 @@ export default {
   width: 100%;
   height: 100%;
 }
+
 .main-title {
   display: flex;
   justify-content: space-between;
@@ -783,6 +784,7 @@ export default {
   height: 60px;
   border-bottom: 1px solid #dcdfe6;
   margin-bottom: 20px;
+
   .title {
     font-size: 16px;
     font-weight: 600;

Some files were not shown because too many files changed in this diff