소스 검색

feat: 经销商提货预约汇总 ——其他应收单

zh 2 년 전
부모
커밋
638b96e209

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

@@ -6,6 +6,13 @@ export function getMaterialListV2(params) {
     data: params
   })
 }
+export function exportMaterialListV2(data, name) {
+  return postBlob({
+    url: '/k3/material/export/v2',
+    data,
+    name
+  })
+}
 
 export function getMachineLlistV2(params) {
   return request({

+ 9 - 1
src/api/finance/account_list.js

@@ -1,4 +1,12 @@
-import request from '@/utils/request'
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
+export function getFinanceStandingBookListV2(params) {
+  return request({
+    url: `/finance/standing/book/list/v2?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+
 
 // 台账列表
 export function getFinanceStandingBookList(params) {

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

@@ -1,5 +1,11 @@
-import request from '@/utils/request'
-
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
+export function getFinanceOtherReceListV2(params) {
+  return request({
+    url: `/finance/standing/book/list/v2?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
 // 其他应收单-新增
 export function getFinanceOtherReceAdd(data) {
   return request({

+ 17 - 1
src/api/supply/pickup.js

@@ -1,5 +1,21 @@
-import request from '@/utils/request'
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
 
+export function getPickupListV2(data) {
+  return request({
+    url: `/pick/listV2?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+export function exportPickupListV2(data, name) {
+  return postBlob({
+    url: '/pick/listV2/export',
+    method: 'post',
+    data,
+    name
+  })
+}
 // 获取列表
 export function getPickupList(params) {
   return request({

+ 21 - 0
src/api/supply/sales.js

@@ -19,6 +19,27 @@ export function saleOrderListV2Export(data, name) {
   })
 }
 
+
+
+export function getSaleOrderListV2(data) {
+  return request({
+    url: `/sale/order/listV2?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+
+export function exportSaleOrderListV2(data, name) {
+  return postBlob({
+    url: '/sale/order/listV2/export',
+    method: 'post',
+    data,
+    name
+  })
+}
+
+
 // 获取列表
 export function getList(params) {
   return request({

+ 2 - 2
src/views/basic_data/material/material_list.vue

@@ -18,7 +18,7 @@ import TemplatePage from '@/components/template/template-page-1.vue'
 import import_mixin from '@/components/template/import_mixin.js'
 import add_callback_mixin from '@/components/template/add_callback_mixin.js'
 import Popu from '@/components/template/popu.vue'
-import { getMaterialDetail, getMaterialListV2 } from '@/api/basic_data/material'
+import { getMaterialDetail, getMaterialListV2,exportMaterialListV2 } from '@/api/basic_data/material'
 import MaterialListDetail from './components/material_list-detail.vue'
 
 export default {
@@ -57,7 +57,7 @@ export default {
       return getMaterialListV2(...p)
     },
     // 列表导出函数
-    exportList: () => {},
+    exportList: exportMaterialListV2,
     // 表格列解析渲染数据更改
     columnParsing(item, defaultData) {
       return defaultData

+ 90 - 292
src/views/finance/account_list.vue

@@ -1,265 +1,108 @@
 <template>
-  <div class="app-container">
-    <div v-if="showReconciliation">
-      <!-- 筛选条件 -->
-      <div>
-        <Collapse :screen-form="searchForm">
-          <template #right_btn>
-            <el-button size="mini" @click="clearFn">清空</el-button>
-            <el-button size="mini" type="primary" @click="searchFn">搜索</el-button>
-          </template>
-          <template #search>
-            <el-form ref="searchForm" :model="searchForm" label-width="100px" size="mini" label-position="left">
-              <el-row :gutter="20">
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="经销商名称" prop="customerId">
-                    <el-select
-                      v-model="searchForm.customerId"
-                      class="selectStyle"
-                      placeholder="请选择"
-                      filterable
-                      @change="changeFn"
-                    >
-                      <el-option v-for="(v, i) in customerList" :key="i" :label="v.name" :value="v.id"> </el-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="钱包" prop="customerWalletId">
-                    <el-select
-                      v-model="searchForm.customerWalletId"
-                      class="selectStyle"
-                      placeholder="请选择"
-                      filterable
-                    >
-                      <el-option
-                        v-for="(v, i) in walletList"
-                        :key="i"
-                        :label="v.customerWalletName"
-                        :value="v.customerWalletId"
-                      >
-                      </el-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="单据号" prop="billNo">
-                    <el-input v-model="searchForm.billNo" placeholder="请输入"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="开始时间" prop="startTime">
-                    <el-date-picker
-                      class="selectStyle"
-                      v-model="searchForm.startTime"
-                      placeholder="选择日期"
-                      type="datetime"
-                      default-time="00:00:00"
-                      value-format="yyyy-MM-dd HH:mm:ss"
-                    >
-                    </el-date-picker>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="结束时间" prop="endTime">
-                    <el-date-picker
-                      class="selectStyle"
-                      v-model="searchForm.endTime"
-                      placeholder="选择日期"
-                      type="datetime"
-                      default-time="23:59:59"
-                      value-format="yyyy-MM-dd HH:mm:ss"
-                    >
-                    </el-date-picker>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-            </el-form>
-          </template>
-        </Collapse>
-      </div>
-      <!-- 按钮 -->
-      <div class="btn-group clearfix">
-        <div class="fl">
-          <el-button :disabled="dataList.length == 0" type="primary" size="mini" @click="reconciliationFn"
-            >一键对账</el-button
-          >
-          <el-button type="primary" size="mini" @click="recordFn">记录</el-button>
-        </div>
-        <div class="fr">
-          <ExportButton :exUrl="'finance/standing/book/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <!-- 列表 -->
-      <div class="mymain-container">
-        <div class="table">
-          <el-table
-            v-loading="listLoading"
-            :data="dataList"
-            element-loading-text="Loading"
-            border
-            fit
-            highlight-current-row
-            stripe
-            show-summary
-            :summary-method="getSummaries"
-          >
-            <el-table-column align="left" label="序号" type="index" width="80" show-overflow-tooltip></el-table-column>
-            <el-table-column
-              align="left"
-              label="月份"
-              prop="month"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="对账状态"
-              prop="isReconciliation"
-              min-width="100"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                <el-tag size="mini" type="danger" v-if="scope.row.isReconciliation == false">未对账</el-tag>
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="客户编码" prop="customerCode" min-width="100" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <CopyButton :copyText="scope.row.customerCode" />
-                <span>{{ scope.row.customerCode }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="客户名称" prop="customerName" min-width="260" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <CopyButton :copyText="scope.row.customerName" />
-                <span>{{ scope.row.customerName }}</span>
-              </template>
-            </el-table-column>
-            <!-- <el-table-column
-              align="left"
-              label="部门"
-              prop=""
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column> -->
-            <el-table-column
-              align="left"
-              label="现金钱包类型"
-              prop="walletName"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="单据类型"
-              prop="billType"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column align="left" label="单据号" prop="billNo" min-width="160" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <CopyButton :copyText="scope.row.billNo" />
-                <span>{{ scope.row.billNo }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="单据日期"
-              prop="theTime"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="备注"
-              prop="remark"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column align="right" label="收付款金额" prop="amount" min-width="130" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ (scope.row.amountType == 'OUT' ? -scope.row.amount : scope.row.amount) | numToFixed }}
-              </template>
-            </el-table-column>
-            <!-- <el-table-column
-              align="center"
-              label="发货金额"
-              prop=""
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column> -->
-          </el-table>
-        </div>
-        <!-- 分页 -->
-        <div class="fr">
-          <el-pagination
-            @size-change="handleSizeChange"
-            @current-change="handleCurrentChange"
-            :current-page="currentPage"
-            :page-sizes="[10, 20, 30, 50]"
-            :page-size="10"
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="listTotal"
-          >
-          </el-pagination>
-        </div>
-      </div>
-    </div>
-    <AccountListDetail v-else />
-  </div>
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :exportList="exportList"
+    :operation="operation()"
+    :optionsEvensGroup="optionsEvensGroup"
+    :columnParsing="columnParsing"
+  >
+    <Popu v-if="visible">
+      <AccountListDetail @close="handleClose" />
+    </Popu>
+  </template-page>
 </template>
 
 <script>
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import add_callback_mixin from '@/components/template/add_callback_mixin.js'
+import Popu from '@/components/template/popu.vue'
 import {
   getFinanceStandingBookList,
+  getFinanceStandingBookListV2,
   getFinanceStandingBookCheck,
   getCustomerList,
   getWalletCustomerList
 } from '@/api/finance/account_list'
 import AccountListDetail from './components/account_list-detail'
-import { numToFixed } from '@/filters'
 export default {
-  components: {
-    AccountListDetail
-  },
+  components: { TemplatePage, Popu, AccountListDetail },
+  mixins: [import_mixin, add_callback_mixin],
   data() {
     return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: [], // 列表数据
-      searchForm: {
-        customerId: '',
-        customerWalletId: '',
-        billNo: '',
-        startTime: '',
-        endTime: ''
-      }, //搜索表单
-      listLoading: false, // 列表加载loading
-      showReconciliation: true,
-      customerList: [],
-      walletList: [],
-      isCollapse: true
-    }
-  },
-  computed: {
-    exParams() {
-      return {
-        ...this.searchForm,
-        pageSize: this.pageSize,
-        pageNum: this.currentPage,
-        isReconciliation: false
-      }
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '一键对账',
+              click: this.reconciliationFn
+            }
+          ]
+        ],
+        [
+          [
+            {
+              name: '记录',
+              click: this.recordFn
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
     }
   },
-  created() {
-    this.getDataList()
-    this.getCustomerDataList({
-      pageSize: -1,
-      pageNum: 1
-    })
-  },
   methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getFinanceStandingBookListV2(...p)
+    },
+    // 列表导出函数
+    exportList: ()=>{},
+    // 表格列解析渲染数据更改
+    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.visible = true
+                this.detailsId = row.id
+              }}
+            >
+              查看
+            </el-button> */}
+          </div>
+        )
+      }
+    },
+    handleClose() {
+      this.addOff(() => {
+        this.visible = false
+      })()
+    },
     //合计
     getSummaries(param) {
       const { columns, data } = param
@@ -291,15 +134,6 @@ export default {
       })
       return sums
     },
-    //清空
-    clearFn() {
-      this.$refs.searchForm.resetFields()
-    },
-    //搜索
-    searchFn() {
-      this.currentPage = 1
-      this.getDataList()
-    },
     //改变经销商
     async changeFn(v) {
       this.searchForm.customerWalletId = ''
@@ -313,39 +147,7 @@ export default {
     },
     //记录
     recordFn() {
-      this.showReconciliation = false
-    },
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val
-      this.currentPage = 1
-      this.getDataList()
-    },
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val
-      this.getDataList()
-    },
-    //获取列表
-    async getDataList() {
-      let params = {
-        pageNum: this.currentPage,
-        pageSize: this.pageSize,
-        customerId: this.searchForm.customerId,
-        customerWalletId: this.searchForm.customerWalletId,
-        billNo: this.searchForm.billNo,
-        startTime: this.searchForm.startTime,
-        endTime: this.searchForm.endTime,
-        isReconciliation: false
-      }
-
-      let res = await getFinanceStandingBookList(params)
-      // res.data.records.forEach((item) => {
-      //   item.sums1 = [];
-      //   item.sums2 = ["amount"];
-      // });
-      this.dataList = res.data.records
-      this.listTotal = res.data.total
+      this.visible = true
     },
     //一键对账
     async reconciliationFn() {
@@ -367,8 +169,4 @@ export default {
 }
 </script>
 
-<style lang="scss" scoped>
-.selectStyle {
-  width: 100%;
-}
-</style>
+<style lang="scss" scoped></style>

+ 1 - 1
src/views/finance/components/account_list-detail.vue

@@ -304,7 +304,7 @@ export default {
       this.listTotal = res.data.total
     },
     goBack() {
-      this.$parent.showReconciliation = true
+      this.$emit('close')
     }
   }
 }

+ 1 - 1
src/views/finance/components/receivable_list-add.vue

@@ -534,7 +534,7 @@ export default {
       })
     },
     goBack() {
-      this.$parent.showPage = 1
+      this.$emit('close')
     }
   }
 }

+ 1 - 1
src/views/finance/components/receivable_list-approval.vue

@@ -274,7 +274,7 @@ export default {
       this.dataList = res.data.items
     },
     goBack() {
-      this.$parent.showPage = 1
+      this.$emit('close')
     }
   }
 }

+ 1 - 1
src/views/finance/components/receivable_list-detail.vue

@@ -472,7 +472,7 @@ export default {
       this.dataList = res.data.items
     },
     goBack() {
-      this.$parent.showPage = 1
+      this.$emit('close')
     }
   }
 }

+ 157 - 301
src/views/finance/receivable_list.vue

@@ -1,288 +1,30 @@
 <template>
-  <div class="app-container">
-    <div v-if="showPage == 1">
-      <!-- 筛选条件 -->
-      <div>
-        <Collapse :screen-form="searchForm">
-          <template #right_btn>
-            <el-button size="mini" @click="clearFn">清空</el-button>
-            <el-button size="mini" type="primary" @click="searchFn">搜索</el-button>
-          </template>
-          <template #left_btn>
-            <el-radio-group @change="changeRadioGroupFn" v-model="examine" size="mini">
-              <el-radio-button label="">全部</el-radio-button>
-              <el-radio-button label="WAIT">待审核</el-radio-button>
-              <el-radio-button label="OK">审核通过</el-radio-button>
-              <!-- <el-radio-button label="FAIL">审核驳回</el-radio-button> -->
-            </el-radio-group>
-          </template>
-          <template #search>
-            <el-form ref="searchForm" :model="searchForm" label-width="100px" size="mini" label-position="left">
-              <el-row :gutter="20">
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="单据来源" prop="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-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="单据编号" prop="code">
-                    <el-input v-model="searchForm.code" placeholder="请输入"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <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-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="业务开始时间" prop="startTime">
-                    <el-date-picker
-                      class="dateStyle"
-                      v-model="searchForm.startTime"
-                      placeholder="选择日期"
-                      type="datetime"
-                      default-time="00:00:00"
-                      value-format="yyyy-MM-dd HH:mm:ss"
-                    >
-                    </el-date-picker>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="业务结束时间" prop="endTime">
-                    <el-date-picker
-                      class="dateStyle"
-                      v-model="searchForm.endTime"
-                      placeholder="选择日期"
-                      type="datetime"
-                      default-time="23:59:59"
-                      value-format="yyyy-MM-dd HH:mm:ss"
-                    >
-                    </el-date-picker>
-                  </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-form-item>
-                </el-col>
-              </el-row>
-            </el-form>
-          </template>
-        </Collapse>
-      </div>
-      <!-- 按钮 -->
-      <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-popconfirm
-            v-if="$checkBtnRole('del', $route.meta.roles)"
-            class="delClass"
-            @onConfirm="deleFn"
-            title="这是一段内容确定删除吗?"
-          >
-            <el-button :disabled="deleList.length < 1" slot="reference" type="danger" icon="el-icon-minus" size="mini"
-            >批量删除
-            </el-button
-            >
-          </el-popconfirm>
-        </div>
-        <div class="fr">
-          <ExportButton :exUrl="'finance/other/rece/listExport'" :exParams="exParams" />
-        </div>
-      </div>
-      <!-- 列表 -->
-      <div class="mymain-container">
-        <div class="table">
-          <el-table
-            ref="table"
-            v-loading="listLoading"
-            :data="dataList"
-            element-loading-text="Loading"
-            border
-            fit
-            highlight-current-row
-            stripe
-            @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="left"
-              label="单据类型"
-              prop="billType"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="单据来源"
-              prop="source"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column align="left" label="单据编码" prop="code" min-width="190" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <CopyButton :copyText="scope.row.code" />
-                <span>{{ scope.row.code }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="业务日期"
-              prop="theTime"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column align="left" label="往来单位类型" prop="userType" min-width="140" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.userType == 'BD_Customer' ? '客户' : '' }}
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="往来单位" prop="userName" min-width="260" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <CopyButton :copyText="scope.row.userName" />
-                <span>{{ scope.row.userName }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="币别"
-              prop="amountType"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-
-            <el-table-column align="left" label="单据状态" prop="examineStatus" min-width="160" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <el-tag size="mini" v-show="scope.row.examineStatus == 'SAVE'">保存</el-tag>
-                <el-tag size="mini" v-show="scope.row.examineStatus == 'WAIT'" type="warning">待审核</el-tag>
-                <el-tag size="mini" v-show="scope.row.examineStatus == 'OK'" type="success">通过</el-tag>
-                <el-tag size="mini" v-show="scope.row.examineStatus == 'FAIL'" type="danger">不通过</el-tag>
-                <el-tag size="mini" v-show="scope.row.examineStatus == 'CLOSE'" type="info">已关闭</el-tag>
-              </template>
-            </el-table-column>
-            <el-table-column align="right" label="总金额" prop="itemAmount" min-width="120" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.itemAmount | numToFixed }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="项目费用名称"
-              prop="projectName"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="审核人"
-              prop="examineBy"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="审核时间"
-              prop="examineTime"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-
-            <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 type="text" v-if="scope.row.examineStatus == 'SAVE'" @click="bringFn(scope.row.id)"
-                >提审
-                </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 type="text" v-if="scope.row.examineStatus == 'SAVE'" @click="detailFn(scope.row.id, 'edit')"
-                >编辑
-                </el-button
-                >
-                <el-button type="text" @click="detailFn(scope.row.id, 'detail')">详情</el-button>
-              </template>
-            </el-table-column>
-          </el-table>
-        </div>
-        <!-- 分页 -->
-        <div class="fr">
-          <el-pagination
-            @size-change="handleSizeChange"
-            @current-change="handleCurrentChange"
-            :current-page="currentPage"
-            :page-sizes="[10, 20, 30, 50]"
-            :page-size="pageSize"
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="listTotal"
-          >
-          </el-pagination>
-        </div>
-      </div>
-    </div>
-    <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" />
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :exportList="exportList"
+    :operation="operation()"
+    :optionsEvensGroup="optionsEvensGroup"
+    :columnParsing="columnParsing"
+  >
+    <Popu v-if="showPage !== 1">
+      <ReceivableListAdd v-if="showPage == 2" @close="handleClose" />
+      <ReceivableListApproval :approvalId="approvalId" v-if="showPage == 3" @close="handleClose" />
+      <ReceivableListDetail :approvalId="approvalId" :czType="czType" v-if="showPage == 4" @close="handleClose" />
+    </Popu>
     <print-preview ref="preView" />
-  </div>
+  </template-page>
 </template>
 
 <script>
-
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import add_callback_mixin from '@/components/template/add_callback_mixin.js'
+import Popu from '@/components/template/popu.vue'
 import { getCustomerList } from '@/api/finance/wallet'
 import {
   getFinanceOtherReceList,
+  getFinanceOtherReceListV2,
   getFinanceOtherReceDelete,
   getFinanceOtherReceDetail,
   getFinanceOtherReceApply,
@@ -301,14 +43,72 @@ import { numToFixed } from '@/filters'
 import { changeNumberMoneyToChinese } from '@/utils/util'
 
 export default {
-  components: {
-    ReceivableListAdd,
-    ReceivableListApproval,
-    ReceivableListDetail,
-    printPreview
-  },
+  components: { TemplatePage, Popu, ReceivableListAdd, ReceivableListApproval, ReceivableListDetail, printPreview },
+  mixins: [import_mixin, add_callback_mixin],
   data() {
     return {
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '打印发货单',
+              click: () => {
+                if (!this.tableSelection.length) {
+                  this.$message.info('请选择数据!')
+                  return
+                }
+                this.toPrint()
+              },
+              isRole: this.$checkBtnRole('print', this.$route.meta.roles)
+            }
+          ]
+        ],
+        [
+          [
+            {
+              name: '新增',
+              click: this.addOn(() => {
+                this.addFn()
+              }),
+              isRole: this.$checkBtnRole('add', this.$route.meta.roles)
+            }
+          ]
+        ],
+        [
+          [
+            {
+              name: '批量删除',
+              click: async () => {
+                if (this.recordSelected.length === 0) {
+                  this.$message.error('请选择需要删除的数据')
+                  return
+                }
+                let ids = this.recordSelected.map(v => {
+                  return v.id
+                })
+                let params = { ids: ids.toString() }
+                await getFinanceOtherReceDelete(params)
+                this.$refs.pageRef.refreshList()
+                this.$message.success('批量删除成功')
+              },
+              isRole: this.$checkBtnRole('del', this.$route.meta.roles)
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
       customerList: [],
       currentPage: 1, // 当前页码
       pageSize: 10, // 每页数量
@@ -334,25 +134,81 @@ export default {
       tableSelection: []
     }
   },
-  computed: {
-    exParams() {
-      return {
-        source: this.searchForm.source,
-        code: this.searchForm.code,
-        userName: this.searchForm.userName,
-        startTime: this.searchForm.startTime,
-        endTime: this.searchForm.endTime,
-        examineStatus: this.examine,
-        confirmName: this.searchForm.confirmName
-      }
-    }
-  },
-  created() {
-    this.getDataList({ pageSize: this.pageSize, pageNum: this.currentPage })
-    this.getCustomerDataList()
-    this.getCompanyList()
-  },
   methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getFinanceOtherReceListV2(...p)
+    },
+    // 列表导出函数
+    exportList: () => {},
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            {this.$checkBtnRole('print', this.$route.meta.roles)?
+              <el-button
+                  type="text"
+                  class="textColor"
+                  onClick={()=>this.toPrint(row, 2)}
+                >打印
+                </el-button
+                >:null
+            }
+              {
+               row.examineStatus == 'WAIT' || row.examineStatus == 'FAIL' &&
+                    this.$checkBtnRole('examine', this.$route.meta.roles)?
+                    <el-button
+                  type="text"
+                  onClick={()=>this.approvalFn(row.id)}
+                >审批
+                </el-button
+                >:null
+              }
+                {
+                 row.examineStatus == 'SAVE' ?
+                 <el-button type="text"  onClick={()=>this.bringFn(row.id)}
+                >提审
+                </el-button
+                >:null
+                }
+              {
+                row.examineStatus == 'OK' || row.examineStatus == 'FAIL'?
+                <el-button
+                  type="text"
+                  onClick={()=>this.unApprovalFn(row.id)}
+                >弃审
+                </el-button
+                >:null
+              }
+                {
+                  row.examineStatus == 'SAVE'?
+                  <el-button type="text" onClick={()=>this.detailFn(row.id, 'edit')}
+                >编辑
+                </el-button
+                >:null
+                }
+                {
+                  <el-button type="text" onClick={()=>this.detailFn(row.id, 'detail')}>详情</el-button>
+
+                }
+          </div>
+        )
+      }
+    },
+    handleClose() {
+      this.addOff(() => {
+        this.showPage = 1
+      })()
+    },
     //获取经销商列表
     async getCustomerDataList() {
       let res = await getCustomerList({

+ 95 - 360
src/views/supply/pickup/sum_list.vue

@@ -1,291 +1,12 @@
 <template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <Collapse :screen-form="screenForm">
-        <template #right_btn>
-          <el-button size="mini" @click="resetScreenForm">清空</el-button>
-          <el-button size="mini" type="primary" @click="submitScreenForm">搜索</el-button>
-        </template>
-        <template #search>
-          <el-form ref="screenForm" :model="screenForm" label-width="100px" size="mini" label-position="left">
-            <el-row :gutter="20">
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="申请发货单号" prop="orderNum">
-                  <el-input v-model="screenForm.orderNum" placeholder="请输入申请发货单号" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="经销商名称" prop="jxsName">
-                  <el-input v-model="screenForm.jxsName" placeholder="请输入经销商名称" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="经销商编码" prop="jxsNum">
-                  <el-input v-model="screenForm.jxsNum" placeholder="请输入经销商编码" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="仓库" prop="correspondId">
-                  <el-select
-                    v-model="screenForm.correspondId"
-                    placeholder="请选择发货仓库"
-                    size="mini"
-                    style="margin-right: 10px"
-                  >
-                    <el-option
-                      v-for="(item, index) in warehouseList"
-                      :key="index"
-                      :label="item.name"
-                      :value="item.id"
-                    />
-                  </el-select>
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="状态" prop="status">
-                  <el-select v-model="screenForm.status" placeholder="请选择">
-                    <el-option label="未打单" :value="0" />
-                    <el-option label="已打单" :value="1" />
-                  </el-select>
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="手机号" prop="takerPhone">
-                  <el-input
-                    v-model.number="screenForm.takerPhone"
-                    type="number"
-                    placeholder="请输入手机号"
-                    @mousewheel.native.prevent
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="提货人" prop="takerId">
-                  <el-select v-model="screenForm.takerId" placeholder="请选择" clearable filterable>
-                    <el-option v-for="item in pickupManList" :key="item.id" :label="item.takerName" :value="item.id">
-                      <template>
-                        <span>{{ item.takerName }}</span>
-                        <span style="color: #cccccc"> {{ item.customerName }}</span>
-                      </template>
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="申请日期" prop="date">
-                  <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="结束日期"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="打印时间" prop="printTime">
-                  <el-date-picker
-                    v-model="screenForm.printTime"
-                    type="datetimerange"
-                    :default-time="['00:00:00', '23:59:59']"
-                    range-separator="至"
-                    style="width: 100%"
-                    value-format="yyyy-MM-dd HH:mm:ss"
-                    start-placeholder="开始日期"
-                    end-placeholder="结束日期"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="出库单号" prop="salesOrderId">
-                  <el-input
-                    v-model.number="screenForm.salesOrderId"
-                    type="number"
-                    placeholder="请输入出库单号"
-                    @mousewheel.native.prevent
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="物流公司" prop="logisticsId">
-                  <el-select v-model="screenForm.logisticsId" placeholder="请选择物流公司" clearable filterable>
-                    <el-option
-                      v-for="item in logisticsList"
-                      :key="item.id"
-                      :label="item.logisticsCompany"
-                      :value="item.id"
-                    />
-                  </el-select>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </el-form>
-        </template>
-      </Collapse>
-    </div>
-
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :ex-url="'pick/export'" :ex-params="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column align="left" label="状态" min-width="80" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ scope.row.printNum ? '已打单' : '未打单' }}
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="打单日期" prop="printTime" min-width="160" show-overflow-tooltip />
-          <!-- <el-table-column align="left" label="信息密钥" prop="informationKey" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.informationKey" />
-              <span>{{ scope.row.informationKey }}</span>
-            </template>
-          </el-table-column> -->
-          <el-table-column align="left" label="出库单号" prop="salesOrderId" min-width="130" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.salesOrderId" />
-              <span>{{ scope.row.salesOrderId }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="发货申请单号" prop="invoiceId" min-width="130" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.invoiceId" />
-              <span>{{ scope.row.invoiceId }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="销售订单号" prop="mainOrderId" min-width="140" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton
-                :copy-text="
-                  scope.row.orderType === 'TRADE' ||
-                  scope.row.orderType === 'HOME' ||
-                  scope.row.orderType === 'REQUISITION_TRADE' ||
-                  scope.row.orderType === 'REQUISITION_HOME'
-                    ? scope.row.enginOrderNo
-                    : scope.row.mainOrderId
-                "
-              />
-              <span>{{
-                scope.row.orderType === 'TRADE' ||
-                scope.row.orderType === 'HOME' ||
-                scope.row.orderType === 'REQUISITION_TRADE' ||
-                scope.row.orderType === 'REQUISITION_HOME'
-                  ? scope.row.enginOrderNo
-                  : scope.row.mainOrderId
-              }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="物料编码" prop="materialCode" min-width="120" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.materialCode" />
-              <span>{{ scope.row.materialCode }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="产品编码" prop="materialOldNumber" min-width="140" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.materialOldNumber" />
-              <span>{{ scope.row.materialOldNumber }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="产品名称" prop="materialName" min-width="160" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.materialName" />
-              <span>{{ scope.row.materialName }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="规格型号" prop="specification" min-width="350" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.specification" />
-              <span>{{ scope.row.specification }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="提货总数量" prop="refundableQty" min-width="100" show-overflow-tooltip />
-          <el-table-column align="left" label="提货人" prop="takerName" min-width="100" show-overflow-tooltip />
-          <el-table-column align="left" label="提货人手机号" prop="takerPhone" min-width="100" show-overflow-tooltip />
-          <el-table-column align="left" label="经销商编码" prop="customerNumber" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.customerNumber" />
-              <span>{{ scope.row.customerNumber }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="经销商名称" prop="customerName" min-width="250" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.customerName" />
-              <span>{{ scope.row.customerName }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="工程编号" prop="refEnginRecordNo" min-width="150" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.refEnginRecordNo" />
-              <span>{{ scope.row.refEnginRecordNo }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="预约日期" prop="pickTime" min-width="120" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ scope.row.pickTime | dateToDayFilter }}
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="提货时段" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ scope.row.pickStatus == '1' ? '上午' : '下午' }}
-            </template>
-          </el-table-column>
-          <!-- <el-table-column align="left" label="手机号" prop="phone" min-width="100" show-overflow-tooltip></el-table-column> -->
-          <el-table-column align="left" label="提货仓库" prop="correspondName" min-width="100" show-overflow-tooltip />
-          <el-table-column align="left" label="提货方式" prop="pickType" min-width="100" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ scope.row.pickType == '1' ? '自提' : '物流快递' }}
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="单据日期" prop="theTime" min-width="120" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ scope.row.theTime | dateToDayFilter }}
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="创建时间" prop="createTime" min-width="120" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ scope.row.createTime  }}
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="备注" prop="remark" min-width="100" show-overflow-tooltip />
-          <el-table-column fixed="right" label="操作" width="100">
-            <template slot-scope="scope">
-              <el-button v-if="scope.row.pickType != '1'" @click="handLogistics(scope.row)" type="text" size="small"
-                >物流信息</el-button
-              >
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-    </div>
-    <div class="pagination clearfix">
-      <div class="fr">
-        <el-pagination
-          :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        />
-      </div>
-    </div>
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :exportList="exportList"
+    :operation="operation()"
+    :optionsEvensGroup="optionsEvensGroup"
+    :columnParsing="columnParsing"
+  >
     <el-dialog title="物流信息" :visible.sync="visible" width="60%" @close="onClose" :close-on-click-modal="false">
       <el-timeline class="logistics" :reverse="false" v-if="logisticsDetail.length">
         <el-timeline-item
@@ -308,16 +29,42 @@
       </el-timeline>
       <div v-else class="tip">暂无物流信息</div>
     </el-dialog>
-  </div>
+  </template-page>
 </template>
 
 <script>
-import { getPickupList, getPickupManList, getListOrderTrack } from '@/api/supply/pickup'
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import add_callback_mixin from '@/components/template/add_callback_mixin.js'
+import Popu from '@/components/template/popu.vue'
+import {
+  getPickupList,
+  getPickupManList,
+  getListOrderTrack,
+  getPickupListV2,
+  exportPickupListV2
+} from '@/api/supply/pickup'
 import { getLogisticsList } from '@/api/basic_data/logistics'
 import { getWarehouseList } from '@/api/supply/engin'
 export default {
+  components: { TemplatePage, Popu },
+  mixins: [import_mixin, add_callback_mixin],
   data() {
     return {
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
       currentPage: 1, // 当前页码
       pageSize: 10, // 每页数量
       listTotal: 0, // 列表总数
@@ -347,78 +94,78 @@ export default {
       flag: false
     }
   },
-
-  computed: {
-    exParams() {
-      return {
-        invoiceId: this.screenForm.orderNum,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum,
-        correspondId: this.screenForm.correspondId,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        status: this.screenForm.status,
-        takerPhone: this.screenForm.takerPhone,
-        takerId: this.screenForm.takerId,
-        logisticsId: this.screenForm.logisticsId,
-        printStartTime: this.screenForm.printTime ? this.screenForm.printTime[0] : '',
-        printEndTime: this.screenForm.printTime ? this.screenForm.printTime[1] : '',
-        salesOrderId: this.screenForm.salesOrderId
-      }
-    }
-  },
   watch: {
     '$route.query.id'(val, oval) {
       if (val) {
         this.screenForm.orderNum = val
-        this.getList()
+        this.getList({
+          pageNum: 1,
+          pageSize: -1,
+          orderBy: '',
+          params: [
+            {
+              param: 'sale_type_id',
+              compare: '=',
+              value: val
+            }
+          ],
+          moduleId: this.$route.meta.moduleId
+        })
       }
     }
   },
-  created() {
-    // this.getList()
-    this.getWarehouseList()
-    this.getLogisticsList()
-    this.getPickupManList()
-  },
   activated() {
     if (this.$route.query && this.$route.query.id) {
-      this.screenForm.orderNum = this.$route.query.id
+      this.getList({
+        pageNum: 1,
+        pageSize: -1,
+        orderBy: '',
+        params: [
+          {
+            param: 'sale_type_id',
+            compare: '=',
+            value: this.$route.query.id
+          }
+        ],
+        moduleId: this.$route.meta.moduleId
+      })
     } else {
       this.screenForm.orderNum = ''
     }
-    this.getList()
-  },
-  deactivated() {
-    console.log('ceshi')
   },
   methods: {
-    // 查询列表
-    getList() {
-      this.listLoading = true
-      const params = {
-        pageNum: this.currentPage,
-        pageSize: this.pageSize,
-        invoiceId: this.screenForm.orderNum,
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum,
-        logisticsId: this.screenForm.logisticsId,
-
-        correspondId: this.screenForm.correspondId,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        status: this.screenForm.status,
-        takerPhone: this.screenForm.takerPhone,
-        takerId: this.screenForm.takerId,
-        printStartTime: this.screenForm.printTime ? this.screenForm.printTime[0] : '',
-        printEndTime: this.screenForm.printTime ? this.screenForm.printTime[1] : '',
-        salesOrderId: this.screenForm.salesOrderId
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getPickupListV2(...p)
+    },
+    // 列表导出函数
+    exportList: exportPickupListV2,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            {row.pickType != '1' ? (
+              <el-button onClick={() => this.handLogistics(row)} type="text" size="small">
+                物流信息
+              </el-button>
+            ) : null}
+          </div>
+        )
       }
-      getPickupList(params).then(res => {
-        this.dataList = res.data.records
-        this.listTotal = res.data.total
-        this.listLoading = false
-      })
+    },
+    handleClose() {
+      this.addOff(() => {
+        this.visible = false
+      })()
     },
     // 获取仓库列表
     getWarehouseList() {
@@ -447,31 +194,19 @@ export default {
     // 提交筛选表单
     submitScreenForm() {
       this.currentPage = 1
-      this.getList()
+      this.$refs.pageRef.refreshList()
     },
 
     // 重置筛选表单
     resetScreenForm() {
       this.$refs.screenForm.resetFields()
       this.currentPage = 1
-      this.getList()
+      this.$refs.pageRef.refreshList()
       if (this.$route.query && this.$route.query.id) {
         this.$router.replace('/exwarehouse/sum_list')
       }
     },
 
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val
-      this.getList()
-    },
     handLogistics(row) {
       getListOrderTrack({ orderId: row.invoiceId }).then(res => {
         this.logisticsDetail = res.data

+ 1 - 4
src/views/supply/sales/components/sales_detail.vue

@@ -320,8 +320,7 @@ export default {
   methods: {
     // 返回列表
     goBack() {
-      this.$emit('backListFormDetail')
-      this.$parent.edit = false
+      this.$emit('close')
     },
     updateNum() {
       this.detailData.saleOrderData.forEach(item => {
@@ -343,9 +342,7 @@ export default {
         salesOrderPictures:salesOrderPictures
       }).then(res => {
         this.$successMsg('修改成功')
-        this.$parent.edit = false
         this.goBack()
-        this.$parent.getList()
       })
     },
     // 打开链接

+ 2 - 2
src/views/supply/sales/components/sales_examine.vue

@@ -253,7 +253,8 @@ export default {
 
     // 返回列表
     goBack() {
-      this.$emit('backListFormExamine')
+      this.$emit('close')
+
     },
 
     // 获取详情
@@ -289,7 +290,6 @@ export default {
             .then(res => {
               this.$successMsg()
               this.goBack()
-              this.$parent.getList()
             })
             .finally(res => {
               this.formLoading = false

+ 4 - 3
src/views/supply/sales/components/sales_return_form.vue

@@ -423,7 +423,8 @@ export default {
   methods: {
     // 返回列表
     goBack() {
-      this.$emit('backListFormDetail')
+      this.$emit('close')
+
     },
 
     // 获取详情
@@ -679,13 +680,13 @@ export default {
             editApply(params).then(res => {
               this.$successMsg('编辑成功')
               this.goBack()
-              this.$parent.getList()
+             
             })
           } else {
             addReturn(params).then(res => {
               this.$successMsg('添加成功')
               this.goBack()
-              this.$parent.getList()
+             
             })
           }
         }

+ 135 - 635
src/views/supply/sales/sales_list.vue

@@ -1,535 +1,87 @@
 <template>
-  <div class="app-container">
-    <div v-show="!isShowDetail && !isShowExamine && !isShowReturnForm">
-      <!-- 筛选条件 -->
-      <div class="screen-container">
-        <Collapse :screen-form="screenForm">
-          <template #right_btn>
-            <el-button size="mini" @click="resetScreenForm">清空</el-button>
-            <el-button size="mini" type="primary" @click="submitScreenForm">搜索</el-button>
-          </template>
-          <template #left_btn>
-            <el-radio-group v-model="screenForm.status" @change="getList()" size="mini">
-              <el-radio-button label="">全部</el-radio-button>
-              <el-radio-button v-for="(item, index) in statusList" :key="index" :label="item.value">{{
-                item.label
-              }}</el-radio-button>
-            </el-radio-group>
-          </template>
-          <template #search>
-            <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="orderNum">
-                    <el-input v-model="screenForm.orderNum" placeholder="请输入发货单号(多个单号请用逗号隔开)" />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="订单号" prop="mainOrderId">
-                    <el-input v-model="screenForm.mainOrderId" placeholder="请输入订单号" />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="经销商名称" prop="jxsName">
-                    <el-input v-model="screenForm.jxsName" placeholder="请输入经销商名称" />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="经销商编号" prop="jxsNum">
-                    <el-input v-model="screenForm.jxsNum" placeholder="请输入规格型号" />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="产品名称" prop="chName">
-                    <el-input v-model="screenForm.chName" placeholder="请输入产品名称" />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="物料编码" prop="chNum">
-                    <el-input v-model="screenForm.chNum" placeholder="请输入物料编码" />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="规格型号" prop="model">
-                    <el-input v-model="screenForm.model" placeholder="请输入规格型号" />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="仓库" prop="warehouse">
-                    <el-select
-                      v-model="screenForm.warehouse"
-                      placeholder="请选择仓库"
-                      filterable
-                      clearable
-                      multiple
-                      collapse-tags
-                      style="width: 100%"
-                    >
-                      <el-option
-                        v-for="(item, index) in warehouseList"
-                        :key="index"
-                        :label="item.name"
-                        :value="item.id"
-                      />
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="单据日期" prop="date">
-                    <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="结束日期"
-                    />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="审核日期" prop="approval">
-                    <el-date-picker
-                      v-model="screenForm.approval"
-                      type="datetimerange"
-:default-time="['00:00:00','23:59:59']"
-                      range-separator="至"
-                      style="width: 100%"
-                      value-format="yyyy-MM-dd HH:mm:ss"
-                      start-placeholder="开始日期"
-                      end-placeholder="结束日期"
-                    />
-                  </el-form-item>
-                </el-col>
-                <!-- <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="打印时间排序" prop="printDesc">
-                    <el-select v-model="screenForm.printDesc" clearable filterable>
-                      <el-option label="默认" :value="null"> </el-option>
-                      <el-option label="倒序" :value="1"> </el-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col> -->
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="打印日期" prop="printTime">
-                    <el-date-picker
-                      v-model="screenForm.printTime"
-                      type="datetimerange"
-:default-time="['00:00:00','23:59:59']"
-                      range-separator="至"
-                      style="width: 100%"
-                      value-format="yyyy-MM-dd HH:mm:ss"
-                      start-placeholder="开始日期"
-                      end-placeholder="结束日期"
-                    />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="出库单号" prop="id">
-                    <el-input v-model="screenForm.id" placeholder="请输入出库单号(多个单号请用逗号隔开)" />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="金蝶推送状态" prop="syncStatus">
-                    <el-select v-model="screenForm.syncStatus" clearable filterable>
-                      <el-option label="未推送" :value="0" />
-                      <el-option label="推送成功" :value="1" />
-                      <el-option label="失败推送" :value="-1" />
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="存货类别" prop="categoryId">
-                    <el-select v-model="screenForm.categoryId" filterable clearable placeholder="请选择">
-                      <el-option v-for="item in categoryList" :key="item.id" :label="item.name" :value="item.id">
-                      </el-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-            </el-form>
-          </template>
-        </Collapse>
-      </div>
-
-      <div class="mymain-container">
-        <div class="btn-group clearfix">
-          <div class="fl">
-            <el-button
-              v-if="$checkBtnRole('refund', $route.meta.roles)"
-              size="mini"
-              type="primary"
-              icon="el-icon-plus"
-              @click="toReturnForm()"
-              >退货申请</el-button
-            >
-            <el-button
-              v-if="$checkBtnRole('examine', $route.meta.roles)"
-              size="mini"
-              type="warning"
-              icon="el-icon-finished"
-              :disabled="multipleSelection.length < 1"
-              @click="batchExamine"
-              >批量审批</el-button
-            >
-          </div>
-          <div class="fr">
-            <ExportButton :ex-url="'sale/order/exportChuku'" :ex-params="exParams" />
-          </div>
-        </div>
-        <div class="table">
-          <el-table
-            v-loading="listLoading"
-            :data="dataList"
-            element-loading-text="Loading"
-            border
-            fit
-            :row-style="rowClass"
-            show-summary
-            :summary-method="$getSummaries"
-            @selection-change="handleSelectionChange"
-          >
-            <el-table-column align="center" type="selection" width="55" fixed="left" />
-            <el-table-column
-              align="left"
-              label="金蝶推送状态"
-              prop="syncStatus"
-              min-width="130"
-              show-overflow-tooltip
-              sortable
-            >
-              <template slot-scope="scope">
-                {{ scope.row.syncStatus == 0 ? '未推送' : scope.row.syncStatus == 1 ? '推送成功' : '失败推送' }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="状态"
-              prop="examineStatus"
-              min-width="100"
-              show-overflow-tooltip
-              sortable
-            >
-              <template slot-scope="scope">
-                {{ scope.row.examineStatus | statusFilter }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="打印时间"
-              prop="printTime"
-              min-width="100"
-              show-overflow-tooltip
-              sortable
-            />
-            <el-table-column
-              align="left"
-              label="订单类型"
-              prop="orderType"
-              min-width="100"
-              show-overflow-tooltip
-              sortable
-            >
-              <template slot-scope="scope">
-                {{ scope.row.orderType | orderTypeFilter }}
-              </template>
-            </el-table-column>
-            <!-- <el-table-column
-              align="left"
-              label="发票号"
-              prop="billReceipt"
-              min-width="250"
-              show-overflow-tooltip
-              sortable
-            >
-              <template slot-scope="scope">
-                {{ scope.row.billReceipt }}
-              </template>
-            </el-table-column> -->
-            <el-table-column align="left" label="销售出库单号" prop="id" min-width="140" show-overflow-tooltip sortable>
-              <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.id" />
-                <span>{{ scope.row.id }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="发货单号"
-              prop="orderNo"
-              min-width="130"
-              show-overflow-tooltip
-              sortable
-            >
-              <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.orderNo" />
-                <span>{{ scope.row.orderNo }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="订单号" prop="orderNo" min-width="140" show-overflow-tooltip sortable>
-              <template slot-scope="scope">
-                <CopyButton
-                  :copy-text="
-                    scope.row.orderType === 'TRADE' ||
-                    scope.row.orderType === 'HOME' ||
-                    scope.row.orderType === 'REQUISITION_TRADE' ||
-                    scope.row.orderType === 'REQUISITION_HOME'
-                      ? scope.row.enginOrderNo
-                      : scope.row.mainOrderId
-                  "
-                />
-                <span>{{
-                  scope.row.orderType === 'TRADE' ||
-                  scope.row.orderType === 'HOME' ||
-                  scope.row.orderType === 'REQUISITION_TRADE' ||
-                  scope.row.orderType === 'REQUISITION_HOME'
-                    ? scope.row.enginOrderNo
-                    : scope.row.mainOrderId
-                }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="仓库"
-              prop="correspondName"
-              min-width="100"
-              show-overflow-tooltip
-              sortable
-            />
-            <el-table-column
-              align="left"
-              label="经销商编码"
-              prop="customerNumber"
-              min-width="120"
-              show-overflow-tooltip
-              sortable
-            >
-              <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.customerNumber" />
-                <span>{{ scope.row.customerNumber }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="经销商名称"
-              prop="customerName"
-              min-width="250"
-              show-overflow-tooltip
-              sortable
-            >
-              <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.customerName" />
-                <span>{{ scope.row.customerName }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="物料编码"
-              prop="materialCode"
-              min-width="120"
-              show-overflow-tooltip
-              sortable
-            >
-              <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.materialCode" />
-                <span>{{ scope.row.materialCode }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="产品编码"
-              prop="materialOldNumber"
-              min-width="140"
-              show-overflow-tooltip
-              sortable
-            >
-              <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.materialOldNumber" />
-                <span>{{ scope.row.materialOldNumber }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="产品名称"
-              prop="materialName"
-              min-width="160"
-              show-overflow-tooltip
-              sortable
-            >
-              <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.materialName" />
-                <span>{{ scope.row.materialName }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="规格型号"
-              prop="specification"
-              min-width="350"
-              show-overflow-tooltip
-              sortable
-            >
-              <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.specification" />
-                <span>{{ scope.row.specification }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="单位" prop="unit" min-width="100" show-overflow-tooltip sortable />
-            <el-table-column
-              align="left"
-              label="制单人"
-              prop="createBy"
-              min-width="100"
-              show-overflow-tooltip
-              sortable
-            />
-            <el-table-column
-              align="left"
-              label="审核时间"
-              prop="approvalTime"
-              min-width="150"
-              show-overflow-tooltip
-              sortable
-            />
-
-            <el-table-column
-              align="right"
-              label="数量"
-              prop="refundableQty"
-              min-width="100"
-              show-overflow-tooltip
-              sortable
-            />
-            <el-table-column
-              align="left"
-              label="金蝶部门"
-              prop="k3OrgName"
-              min-width="120"
-              show-overflow-tooltip
-              sortable
-            />
-            <el-table-column
-              align="left"
-              label="钱包"
-              prop="customerWalletName"
-              min-width="100"
-              show-overflow-tooltip
-              sortable
-            />
-            <!-- <el-table-column align="right" label="单价" prop="price" min-width="100" show-overflow-tooltip
-              sortable>
-              <template slot-scope="scope">
-                {{ scope.row.price | numToFixed }}
-              </template>
-            </el-table-column> -->
-            <!-- <el-table-column align="right" label="订单金额" prop="payAmount" min-width="100" show-overflow-tooltip
-              sortable>
-              <template slot-scope="scope">
-                {{ scope.row.payAmount | numToFixed }}
-              </template>
-            </el-table-column> -->
-            <!-- <el-table-column align="left" label="订单备注" prop="headerRemark" min-width="160" show-overflow-tooltip
-              sortable></el-table-column> -->
-            <!-- <el-table-column align="left" label="发货申请备注" prop="remark" min-width="160" show-overflow-tooltip
-              sortable></el-table-column> -->
-            <!-- <el-table-column align="left" label="表体备注" prop="invoiceRemark" min-width="160" show-overflow-tooltip
-              sortable></el-table-column> -->
-            <!-- <el-table-column align="left" label="业务员" prop="serviceName" min-width="100" show-overflow-tooltip
-              sortable></el-table-column> -->
-            <!-- <el-table-column align="left" label="表头业务员" prop="k3ServiceName" min-width="100" show-overflow-tooltip
-              sortable></el-table-column> -->
-
-            <el-table-column align="center" label="操作" width="120" fixed="right">
-              <template slot-scope="scope">
-                <el-button type="text" @click="toDetail(scope.row)">详情</el-button>
-                <el-button
-                  v-if="scope.row.type === 2 && scope.row.examineStatus !== 'OK'"
-                  type="text"
-                  @click="toDetail(scope.row), (edit = true)"
-                  >编辑</el-button
-                >
-                <el-button
-                  v-if="$checkBtnRole('examine', $route.meta.roles) && scope.row.examineStatus === 'WAIT'"
-                  type="text"
-                  @click="toExamine(scope.row)"
-                  >审批</el-button
-                >
-                <el-popconfirm
-                  v-if="$checkBtnRole('examine', $route.meta.roles) && scope.row.examineStatus === 'OK'"
-                  style="margin-left: 10px"
-                  title="确定弃审吗?"
-                  @onConfirm="handleAbandon(scope.row.id)"
-                >
-                  <el-button slot="reference" type="text">弃审</el-button>
-                </el-popconfirm>
-              </template>
-            </el-table-column>
-          </el-table>
-        </div>
-      </div>
-      <div class="pagination clearfix">
-        <div class="fr">
-          <el-pagination
-            :current-page="currentPage"
-            :page-sizes="[10, 20, 30, 50, 100]"
-            :page-size="10"
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="listTotal"
-            @size-change="handleSizeChange"
-            @current-change="handleCurrentChange"
-          />
-        </div>
-      </div>
-    </div>
-
-    <ExamineDialog :is-show.sync="isShowExamineDialog" :examine-form.sync="examineForm" />
-    <SalesDetail v-if="isShowDetail" :list-item="queryItem" :edit="edit" @backListFormDetail="backList" />
-    <SalesExamine v-if="isShowExamine" :list-item="queryItem" @backListFormExamine="backList" />
-    <SalesReturnForm v-if="isShowReturnForm" :list-item="queryItem" @backListFormDetail="backList" />
-  </div>
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :exportList="exportList"
+    :tableEvents="tableEvents"
+    :tableAttributes="tableAttributes"
+    :operation="operation()"
+    :optionsEvensGroup="optionsEvensGroup"
+    :columnParsing="columnParsing"
+  >
+    <Popu v-if="isShowDetail || isShowExamine || isShowReturnForm">
+      <SalesDetail v-if="isShowDetail" :list-item="queryItem" :edit="edit" @close="handleClose" />
+      <SalesExamine v-if="isShowExamine" :list-item="queryItem" @close="handleClose" />
+      <SalesReturnForm v-if="isShowReturnForm" :list-item="queryItem" @close="handleClose" />
+    </Popu>
+  </template-page>
 </template>
 
 <script>
-import { abandonData, examineBatch, examineJudge, getList, getWarehouseList, getListOrderNo } from '@/api/supply/sales'
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import add_callback_mixin from '@/components/template/add_callback_mixin.js'
+import Popu from '@/components/template/popu.vue'
+import {
+  abandonData,
+  examineBatch,
+  examineJudge,
+  getList,
+  getWarehouseList,
+  getListOrderNo,
+  getSaleOrderListV2,
+  exportSaleOrderListV2
+} from '@/api/supply/sales'
 import SalesDetail from '@/views/supply/sales/components/sales_detail'
 import SalesExamine from '@/views/supply/sales/components/sales_examine'
 import SalesReturnForm from '@/views/supply/sales/components/sales_return_form'
 import ExamineDialog from '@/components/Common/examine-dialog'
 import { getCategoryList } from '@/api/common'
 import { getNoRebateWalletList } from '@/api/policy_list'
-
-let that
 export default {
-  components: {
-    SalesDetail,
-    SalesExamine,
-    SalesReturnForm,
-    ExamineDialog
-  },
-  filters: {
-    statusFilter(val) {
-      if (that.statusList.length) {
-        const obj = that.statusList.find(o => o.value == val)
-        return obj ? obj.label : ''
-      }
-      return ''
-    },
-    orderTypeFilter(val) {
-      if (that.orderTypeList.length) {
-        const obj = that.orderTypeList.find(o => o.value == val)
-        return obj ? obj.label : ''
-      }
-      return ''
-    },
-    billStatusFilter(val) {
-      const MAP = {
-        1: '已开票',
-        0: '未开票'
-      }
-      return MAP[val]
-    }
-  },
+  components: { TemplatePage, Popu, SalesDetail, SalesExamine, SalesReturnForm, ExamineDialog },
+  mixins: [import_mixin, add_callback_mixin],
   data() {
     return {
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '退货申请',
+              click: this.toReturnForm,
+              isRole: this.$checkBtnRole('refund', this.$route.meta.roles)
+            }
+          ]
+        ],
+        [
+          [
+            {
+              name: '批量审批',
+              click: () => {
+                if (this.recordSelected.length === 0) {
+                  this.$message.error('请选择需要删除的数据')
+                  return
+                }
+                this.batchExamine()
+              },
+              isRole: this.$checkBtnRole('examine', this.$route.meta.roles)
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
       currentPage: 1, // 当前页码
       pageSize: 10, // 每页数量
       listTotal: 0, // 列表总数
@@ -610,92 +162,68 @@ export default {
       }
     }
   },
-
-  computed: {
-    exParams() {
-      return {
-        examineStatus: this.screenForm.status,
-        orderNo: this.screenForm.orderNum.replace(/,/gi, ','),
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum,
-        materialName: this.screenForm.chName,
-        materialNumber: this.screenForm.chNum,
-        specification: this.screenForm.model,
-        correspondId: this.screenForm.warehouse.join(','),
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        syncStatus: this.screenForm.syncStatus,
-        categoryId: this.screenForm.categoryId,
-        approvalStartTime: this.screenForm.approval ? this.screenForm.approval[0] : '',
-        approvalEndTime: this.screenForm.approval ? this.screenForm.approval[1] : '',
-        printStartTime: this.screenForm.printTime ? this.screenForm.printTime[0] : '',
-        printEndTime: this.screenForm.printTime ? this.screenForm.printTime[1] : '',
-        mainOrderId: this.screenForm.mainOrderId,
-        printTimeDesc: this.screenForm.printDesc,
-        id: this.screenForm.id.replace(/,/gi, ',')
-      }
-    }
-  },
-
-  watch: {
-    multipleSelection(data) {
-      // 监听选中状态
-      this.selectRow = []
-      if (data.length > 0) {
-        data.forEach((item, index) => {
-          this.selectRow.push(item.id)
-        })
-      }
-    }
-  },
-
-  beforeCreate() {
-    that = this
-  },
-
-  created() {
-    this.getWarehouseList()
-    this.getList()
-    this.getCategoryList()
-  },
-
   methods: {
-    // 查询列表
-    getList() {
-      this.listLoading = true
-      const params = {
-        pageNum: this.currentPage,
-        pageSize: this.pageSize,
-        examineStatus: this.screenForm.status,
-        orderNo: this.screenForm.orderNum.replace(/,/gi, ','),
-        customerName: this.screenForm.jxsName,
-        customerNumber: this.screenForm.jxsNum,
-        materialName: this.screenForm.chName,
-        materialNumber: this.screenForm.chNum,
-        specification: this.screenForm.model,
-        correspondId: this.screenForm.warehouse.join(','),
-        syncStatus: this.screenForm.syncStatus,
-        categoryId: this.screenForm.categoryId,
-
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        approvalStartTime: this.screenForm.approval ? this.screenForm.approval[0] : '',
-        approvalEndTime: this.screenForm.approval ? this.screenForm.approval[1] : '',
-        mainOrderId: this.screenForm.mainOrderId,
-        printStartTime: this.screenForm.printTime ? this.screenForm.printTime[0] : '',
-        printEndTime: this.screenForm.printTime ? this.screenForm.printTime[1] : '',
-        printTimeDesc: this.screenForm.printDesc,
-        id: this.screenForm.id.replace(/,/gi, ',')
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getSaleOrderListV2(...p)
+    },
+    // 列表导出函数
+    exportList: exportSaleOrderListV2,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            <el-button type="text" onClick={() => this.toDetail(row)}>
+              详情
+            </el-button>
+            {row.type === 2 && row.examineStatus !== 'OK' ? (
+              <el-button
+                type="text"
+                onClick={() => {
+                  this.toDetail(row)
+                  this.edit = true
+                }}
+              >
+                编辑
+              </el-button>
+            ) : null}
+            {this.$checkBtnRole('examine', this.$route.meta.roles) && row.examineStatus === 'WAIT' ? (
+              <el-button type="text" onClick={() => this.toExamine(row)}>
+                审批
+              </el-button>
+            ) : null}
+            {this.$checkBtnRole('examine', this.$route.meta.roles) && row.examineStatus === 'OK' ? (
+              <el-popconfirm
+                style="margin-left: 10px"
+                title="确定弃审吗?"
+                onOnConfirm={() => this.handleAbandon(row.id)}
+              >
+                <el-button slot="reference" type="text">
+                  弃审
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+          </div>
+        )
       }
-      getList(params).then(res => {
-        res.data.records.forEach(item => {
-          item.sums1 = ['refundableQty']
-          item.sums2 = ['price', 'payAmount']
-        })
-        this.dataList = res.data.records
-        this.listTotal = res.data.total
-        this.listLoading = false
-      })
+    },
+    handleClose() {
+      this.queryItem = {}
+      this.edit = false
+      this.addOff(() => {
+        this.isShowDetail = false
+        this.isShowExamine = false
+        this.isShowReturnForm = false
+      })()
     },
 
     // 获取仓库列表
@@ -727,13 +255,12 @@ export default {
     updateReceipt() {
       if (!this.value1) {
         this.$errorMsg('请选择时间')
-
       }
       // updateReceipt({
       // startTime:this.value1[0],
       // endTime:this.value1[1]
       // }).then(res=>{
-      //    this.getList();
+      //    this.$refs.pageRef.refreshList();
       //   this.$successMsg("已更新");
       //    this.value1 = ''
       // })
@@ -741,7 +268,7 @@ export default {
     // 提交筛选表单
     submitScreenForm() {
       this.currentPage = 1
-      this.getList()
+      this.$refs.pageRef.refreshList()
       if (this.screenForm.orderNum) {
         getListOrderNo({
           orderNo: this.screenForm.orderNum.replace(/,/gi, ',')
@@ -756,26 +283,6 @@ export default {
       }
     },
 
-    // 重置筛选表单
-    resetScreenForm() {
-        this.$refs.screenForm.resetFields()
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val
-      this.getList()
-    },
-
     // 判断是否可以审批
     async examineJudge(item) {
       // 获取页面模版
@@ -813,13 +320,6 @@ export default {
       this.isShowExamine = true
     },
 
-    backList() {
-      this.queryItem = {}
-      this.isShowDetail = false
-      this.isShowExamine = false
-      this.isShowReturnForm = false
-    },
-
     handleSelectionChange(val) {
       this.multipleSelection = val
       if (val) {
@@ -851,7 +351,7 @@ export default {
         approvalRemark: this.examineForm.remark
       }).then(res => {
         this.isShowExamineDialog = false
-        this.getList()
+        this.$refs.pageRef.refreshList()
         this.$successMsg('修改成功')
       })
     },
@@ -860,7 +360,7 @@ export default {
     handleAbandon(id) {
       abandonData({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     }
   }