浏览代码

Merge branch 'dev_v2' of https://gogs.zfire.top/zfire-front/supply-front into dev_v2

zh 2 年之前
父节点
当前提交
9a3b9a3f92

+ 4 - 10
src/api/supply/pickup.js

@@ -1,6 +1,7 @@
 import request, { postBlob, handleImport, getBlob } from '@/utils/request'
 
-export function getPickupListV2(data) {
+// 提货-列表V2
+export function pickListV2(data) {
   return request({
     url: `/pick/listV2?moduleId=${data.moduleId}`,
     method: 'post',
@@ -8,7 +9,8 @@ export function getPickupListV2(data) {
   })
 }
 
-export function exportPickupListV2(data, name) {
+//提货-列表V2导出
+export function pickListV2Export(data, name) {
   return postBlob({
     url: '/pick/listV2/export',
     method: 'post',
@@ -17,13 +19,6 @@ export function exportPickupListV2(data, name) {
   })
 }
 
-export function getListInvoiceNumberV2(data) {
-  return request({
-    url: `/invoice/listInvoiceNumberV2?moduleId=${data.moduleId}`,
-    method: 'post',
-    data
-  })
-}
 // 获取列表
 export function getPickupList(params) {
   return request({
@@ -218,4 +213,3 @@ export function getListOrderTrack(params) {
     params
   })
 }
-

+ 34 - 1
src/api/supply/reserve.js

@@ -1,4 +1,37 @@
-import request from '@/utils/request'
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
+
+// 导入
+export function reserveImportData(data) {
+  return handleImport('/reserve/importData', data.formdata, data.id || '')
+}
+
+// 下载模板
+export function reserveImportDataExcel(data, name) {
+  return getBlob({
+    url: '/reserve/download',
+    data,
+    name
+  })
+}
+
+// 提货-列表V2
+export function reserveListV2(data) {
+  return request({
+    url: `/reserve/listV2?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+//提货-列表V2导出
+export function reserveListV2Export(data, name) {
+  return postBlob({
+    url: '/reserve/listV2/export',
+    method: 'post',
+    data,
+    name
+  })
+}
 
 // 获取列表
 export function getList(params) {

+ 275 - 564
src/views/supply/apply/apply_list.vue

@@ -1,521 +1,31 @@
 <template>
-  <div class="app-container">
-    <div v-show="!isShowDetail && !isShowExamine && !isShowForm && !isShowReturnForm">
-      <!-- 筛选条件 -->
-      <div class="screen-container">
-        <Collapse :screen-form="screenForm">
-          <template #left_btn>
-            <el-radio-group v-model="screenForm.status" size="mini" @change="getList()">
-              <el-radio-button label="">全部</el-radio-button>
-              <template v-for="(item, index) in statusList">
-                <el-radio-button v-if="index !== 3" :key="index" :label="item.value">{{
-                    item.label
-                  }}
-                </el-radio-button>
-              </template>
-            </el-radio-group>
-          </template>
-          <template #right_btn>
-            <div>
-              <el-button size="mini" @click="resetScreenForm">清空</el-button>
-              <el-button type="primary" size="mini" @click="submitScreenForm">搜索</el-button>
-            </div>
-          </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="warehouse">
-                    <el-input v-model="screenForm.warehouse" 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="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="date">
-                    <el-date-picker
-                      v-model="screenForm.date"
-                      type="datetimerange"
-                      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="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="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="k3ServiceId">
-                    <el-select
-                      v-model="screenForm.k3ServiceId"
-                      placeholder="选择表头业务员"
-                      size="small"
-                      clearable
-                      filterable
-                      style="width: 100%"
-                    >
-                      <el-option
-                        v-for="item in salesmanList"
-                        :key="item.adminUserId"
-                        :label="item.nickName"
-                        :value="item.adminUserId"
-                      />
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="表体业务员" prop="serviceId">
-                    <el-select
-                      v-model="screenForm.serviceId"
-                      placeholder="选择表体业务员"
-                      size="mini"
-                      clearable
-                      filterable
-                      style="width: 100%"
-                    >
-                      <el-option
-                        v-for="item in salesmanList"
-                        :key="item.adminUserId"
-                        :label="item.nickName"
-                        :value="item.adminUserId"
-                      />
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="订单类型" prop="orderType">
-                    <el-select v-model="screenForm.orderType" placeholder="请选择" clearable>
-                      <el-option
-                        v-for="item in orderTypeList"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value"
-                      />
-                    </el-select>
-                  </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="产品类别">
-                    <el-select
-                      v-model="screenForm.categoryId"
-                      style="width: 100%"
-                      placeholder="选择产品类别"
-                      filterable
-                      clearable
-                    >
-                      <el-option v-for="item in categoryList" :key="item.name" :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="approvalName">
-                    <el-input v-model="screenForm.approvalName" placeholder="请输入审核人" />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="制单人" prop="createBy">
-                    <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="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-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('add', $route.meta.roles)"
-              size="mini"
-              type="primary"
-              icon="el-icon-plus"
-              @click="toForm()"
-            >发货申请
-            </el-button
-            >
-            <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="'invoice/listExport'" :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" :selectable="selectable" />
-            <el-table-column align="left" label="订单状态" prop="type" min-width="120" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.automaticStatus ? '非计划单推发货' : '计划单推发货' }}
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="订单类型" prop="type" min-width="100" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.type | orderTypeFilter }}
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="发货申请单" prop="id" min-width="130" show-overflow-tooltip>
-              <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="createTime"
-              min-width="160"
-              show-overflow-tooltip
-            />
-            <el-table-column align="left" label="仓库" prop="correspondName" min-width="100" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.type === 3 ? scope.row.stockName : scope.row.correspondName }}
-              </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.mainOrderId" />
-                <span>{{ scope.row.mainOrderId }}</span>
-              </template>
-            </el-table-column>
-            <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="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="categoryName" min-width="100" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <span>{{ scope.row.categoryName }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="销售政策名称"
-              prop="policyTitle"
-              min-width="100"
-              show-overflow-tooltip
-            />
-            <el-table-column align="left" label="文件编号" prop="itemFileNo" min-width="100" show-overflow-tooltip />
-            <el-table-column align="left" label="单位" prop="unit" min-width="100" show-overflow-tooltip />
-            <el-table-column align="right" label="数量" prop="refundableQty" min-width="100" show-overflow-tooltip />
-            <el-table-column align="right" label="已退数量" prop="retiredQty" min-width="100" show-overflow-tooltip />
-            <el-table-column align="right" label="含税单价" prop="singlePayPrice" min-width="100" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.singlePayPrice | numToFixed }}
-              </template>
-            </el-table-column>
-            <el-table-column align="right" label="价税合计" prop="payAmount" min-width="100" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.payAmount | numToFixed }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="right"
-              label="返利金额"
-              prop="payRebateAmount"
-              min-width="100"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                {{ scope.row.payRebateAmount | numToFixed }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="right"
-              label="格力折扣"
-              prop="totalDiscAmount"
-              min-width="100"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                {{ scope.row.totalDiscAmount | numToFixed }}
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="订单备注" prop="headerRemark" min-width="160" show-overflow-tooltip />
-            <el-table-column align="left" label="发货申请备注" prop="remark" min-width="160" show-overflow-tooltip />
-            <el-table-column align="left" label="表体备注" prop="invoiceRemark" min-width="160" show-overflow-tooltip />
-            <el-table-column
-              align="left"
-              label="审批说明"
-              prop="approvalRemark"
-              min-width="160"
-              show-overflow-tooltip
-            />
-            <el-table-column align="left" label="业务员" prop="serviceName" min-width="100" show-overflow-tooltip />
-            <el-table-column
-              align="left"
-              label="表头业务员"
-              prop="k3ServiceName"
-              min-width="100"
-              show-overflow-tooltip
-            />
-            <el-table-column align="left" label="制单人" prop="createBy" min-width="100" show-overflow-tooltip />
-            <el-table-column align="left" label="制单日期" prop="createTime" min-width="160" show-overflow-tooltip />
-            <el-table-column align="left" label="审核人" prop="approvalName" min-width="100" show-overflow-tooltip />
-            <el-table-column align="left" label="审核日期" prop="approvalTime" min-width="160" show-overflow-tooltip />
-            <el-table-column align="left" label="审核状态" prop="examineStatus" min-width="100" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.examineStatus | statusFilter }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              v-if="this.$store.getters.customerNumber === '100093' || this.$store.getters.customerNumber === '600023'"
-              align="left"
-              label="同步到格匠采购入库单"
-              prop="gejiangSync"
-              min-width="160"
-              show-overflow-tooltip
-            >
-              <template slot-scope="{row}">
-                {{ row.gejiangSync === 1 ? '同步成功' : row.gejiangSync === 0 ? '待同步' : row.gejiangSync === -1 ? '同步失败' : '未同步'
-                }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              v-if="this.$store.getters.customerNumber === '100093' || this.$store.getters.customerNumber === '600023'"
-              label="同步格匠失败原因"
-              prop="gejiangSyncRemark"
-              min-width="160"
-              show-overflow-tooltip
-            />
-            <el-table-column align="center" label="操作" width="180" fixed="right">
-              <template slot-scope="scope">
-                <el-popconfirm
-                  v-if="
-                    $checkBtnRole('apply', $route.meta.roles) &&
-                    (( !isCustomer && !scope.row.automaticStatus &&
-                    (scope.row.examineStatus === 'SAVE'|| scope.row.examineStatus === 'FAIL'))||(isCustomer && !scope.row.automaticStatus &&
-                    (scope.row.examineStatus === 'SAVE'|| scope.row.examineStatus === 'FAIL') && scope.row.type!=2) || (
-                    !isCustomer  &&  scope.row.automaticStatus &&
-                     (scope.row.examineStatus === 'SAVE'|| scope.row.examineStatus === 'FAIL') &&
-                     scope.row.type===2
-                    ) )
-                  "
-                  style="margin-right: 10px"
-                  title="确定申请吗?"
-                  @onConfirm="handleSubmit(scope.row.id, 'WAIT')"
-                >
-                  <el-button slot="reference" type="text">申请</el-button>
-                </el-popconfirm>
-                <el-popconfirm
-                  v-if="
-                    $checkBtnRole('apply', $route.meta.roles) &&
-                    ((!isCustomer &&!scope.row.automaticStatus &&
-                    scope.row.examineStatus === 'WAIT') ||(isCustomer && !scope.row.automaticStatus &&
-                    scope.row.examineStatus === 'WAIT' && scope.row.type!=2)||( !isCustomer  && scope.row.automaticStatus &&
-                    scope.row.examineStatus === 'WAIT'&& scope.row.type==2))
-                  "
-                  style="margin-right: 10px"
-                  title="确定撤回吗?"
-                  @onConfirm="handleSubmit(scope.row.id, 'SAVE')"
-                >
-                  <el-button slot="reference" type="text">撤回</el-button>
-                </el-popconfirm>
-                <el-popconfirm
-                  v-if="
-                    $checkBtnRole('examine', $route.meta.roles) &&
-                    ((!isCustomer &&!scope.row.automaticStatus &&
-                    scope.row.examineStatus === 'OK')||(isCustomer && !scope.row.automaticStatus &&
-                    scope.row.examineStatus === 'OK' && scope.row.type!=2)||( !isCustomer && scope.row.automaticStatus &&
-                    scope.row.examineStatus === 'OK' && scope.row.type==2))
-                  "
-                  style="margin-right: 10px"
-                  title="确定弃审吗?"
-                  @onConfirm="handleAbandon(scope.row.id)"
-                >
-                  <el-button slot="reference" type="text">弃审</el-button>
-                </el-popconfirm>
-                <el-button
-                  v-if="
-                    $checkBtnRole('edit', $route.meta.roles) &&
-                    !scope.row.automaticStatus &&
-                    (scope.row.examineStatus === 'SAVE' || scope.row.examineStatus === 'FAIL') &&
-                    scope.row.type === 1
-                  "
-                  type="text"
-                  @click="toForm(scope.row)"
-                >
-                  编辑
-                </el-button>
-                <el-button
-                  v-if="
-                    $checkBtnRole('edit', $route.meta.roles) &&
-                      ((!isCustomer && !scope.row.automaticStatus &&
-                      (scope.row.examineStatus === 'SAVE' || scope.row.examineStatus === 'FAIL') &&
-                      scope.row.type === 2)||(isCustomer && !scope.row.automaticStatus &&
-                    (scope.row.examineStatus === 'SAVE' || scope.row.examineStatus === 'FAIL') && scope.row.type!=2 && scope.row.type !==1)  ||
-                      ( !isCustomer && scope.row.automaticStatus &&
-                     (scope.row.examineStatus === 'SAVE' || scope.row.examineStatus === 'FAIL') &&
-                     scope.row.type===2)
-                      )
-                  "
-                  type="text"
-                  @click="toReturnForm(scope.row)"
-                >
-                  编辑
-                </el-button>
-                <el-button
-                  v-if="
-                    $checkBtnRole('examine', $route.meta.roles) &&
-                    ((!isCustomer &&!scope.row.automaticStatus &&
-                    scope.row.examineStatus === 'WAIT') ||(isCustomer && !scope.row.automaticStatus &&
-                    scope.row.examineStatus !== 'WAIT' && scope.row.type!=2) || (!isCustomer && scope.row.automaticStatus &&
-                    scope.row.examineStatus === 'WAIT' && scope.row.type==2))
-                  "
-                  type="text"
-                  @click="toExamine(scope.row)"
-                >
-                  审核
-                </el-button>
-                <el-button type="text" @click="toDetail(scope.row)"> 详情</el-button>
-                <el-popconfirm
-                  v-if="
-                    $checkBtnRole('del', $route.meta.roles) &&
-                    ((!isCustomer && !scope.row.automaticStatus &&
-                    scope.row.examineStatus !== 'OK' ) ||(isCustomer && !scope.row.automaticStatus &&
-                    scope.row.examineStatus !== 'OK' && scope.row.type!=2)   || ( !isCustomer &&scope.row.automaticStatus && scope.row.examineStatus !== 'OK' && scope.row.type==2 ) )
-                  "
-                  style="margin-left: 10px"
-                  title="确定删除吗?"
-                  @onConfirm="handleDelete(scope.row.id)"
-                >
-                  <el-button slot="reference" type="text" style="color: #f56c6c">删除</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]"
-            :page-size="10"
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="listTotal"
-            @size-change="handleSizeChange"
-            @current-change="handleCurrentChange"
-          />
-        </div>
-      </div>
-    </div>
-
+  <div style="width: 100%; height: 100%; overflow-y: auto">
+    <template-page
+      v-show="!isShowDetail && !isShowExamine && !isShowForm && !isShowReturnForm"
+      ref="pageRef"
+      :tableEvents="tableEvents"
+      :tableAttributes="tableAttributes"
+      :getList="getList"
+      :exportList="exportList"
+      :operation="operation()"
+      :operationColumnWidth="200"
+      :columnParsing="columnParsing"
+      :optionsEvensGroup="optionsEvensGroup"
+    >
+    </template-page>
     <ExamineDialog :is-show.sync="isShowExamineDialog" :examine-form.sync="examineForm" />
-
-    <ApplyDetail v-if="isShowDetail" ref="refDetail" :list-item="queryItem" @backListFormDetail="backList" />
-    <ApplyExamine v-if="isShowExamine" :list-item="queryItem" @backListFormDetail="backList" />
-    <ApplyForm v-if="isShowForm" :list-item="queryItem" @backListFormDetail="backList" />
-    <ApplyReturnForm v-if="isShowReturnForm" :list-item="queryItem" :is-show="isShow" @backListFormDetail="backList" />
+    <div class="app-container" v-if="isShowDetail">
+      <ApplyDetail ref="refDetail" :list-item="queryItem" @backListFormDetail="backList" />
+    </div>
+    <div class="app-container" v-if="isShowExamine">
+      <ApplyExamine :list-item="queryItem" @backListFormDetail="backList" />
+    </div>
+    <div class="app-container" v-if="isShowForm">
+      <ApplyForm :list-item="queryItem" @backListFormDetail="backList" />
+    </div>
+    <div class="app-container" v-if="isShowReturnForm">
+      <ApplyReturnForm :list-item="queryItem" :is-show="isShow" @backListFormDetail="backList" />
+    </div>
   </div>
 </template>
 
@@ -527,10 +37,12 @@ import ApplyExamine from '@/views/supply/apply/components/apply_examine'
 import ApplyForm from '@/views/supply/apply/components/apply_form'
 import ApplyReturnForm from '@/views/supply/apply/components/apply_return_form'
 import ExamineDialog from '@/components/Common/examine-dialog'
-
+import { invoiceListRetailV2, invoiceListRetailV2Export } from '@/api/deliver_list_v2'
+import TemplatePage from '@/components/template/template-page-1.vue'
 let that
 export default {
   components: {
+    TemplatePage,
     ApplyDetail,
     ApplyExamine,
     ApplyForm,
@@ -572,7 +84,7 @@ export default {
         categoryId: '',
         approvalName: '',
         createBy: '',
-        automaticStatus:''
+        automaticStatus: ''
       },
       statusList: [
         { label: '已保存', value: 'SAVE' },
@@ -602,12 +114,59 @@ export default {
         remark: ''
       },
       categoryList: [],
-      isCustomer: JSON.parse(localStorage.getItem('supply_user')).isCustomer
-
+      isCustomer: JSON.parse(localStorage.getItem('supply_user')).isCustomer,
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true,
+        summaryMethod: this.$getSummaries
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
     }
   },
 
   computed: {
+    optionsEvensGroup() {
+      return [
+        [
+          [
+            {
+              isRole: this.$checkBtnRole('add', this.$route.meta.roles),
+              name: '发货申请',
+              click: this.toForm
+            }
+          ]
+        ],
+        [
+          [
+            {
+              isRole: this.$checkBtnRole('refund', this.$route.meta.roles),
+              name: '退货申请',
+              click: this.toReturnForm
+            }
+          ]
+        ],
+        [
+          [
+            {
+              isRole: this.$checkBtnRole('examine', this.$route.meta.roles),
+              name: '批量审批',
+              click: () => {
+                if (!this.multipleSelection.length) {
+                  this.$message.info('请选择数据!')
+                  return
+                }
+                this.batchExamine()
+              }
+            }
+          ]
+        ]
+      ]
+    },
     exParams() {
       return {
         id: this.screenForm.orderNum,
@@ -616,7 +175,7 @@ export default {
         customerName: this.screenForm.jxsName,
         productName: this.screenForm.chName,
         specification: this.screenForm.model,
-        automaticStatus:this.screenForm.automaticStatus,
+        automaticStatus: this.screenForm.automaticStatus,
 
         startTime: this.screenForm.date ? this.screenForm.date[0] : '',
         endTime: this.screenForm.date ? this.screenForm.date[1] : '',
@@ -650,12 +209,11 @@ export default {
 
   created() {
     this.getSalesmanList()
-    this.getList()
+    // this.getList()
     this.getCategoryList()
     this.isShow = false
     if (this.$route.query && this.$route.query.isShow) {
       this.isShow = this.$route.query.isShow
-
       this.toReturnForm()
     }
   },
@@ -669,6 +227,159 @@ export default {
 
   // },
   methods: {
+    // 列表请求函数
+    getList: invoiceListRetailV2,
+    // 列表导出函数
+    exportList: invoiceListRetailV2Export,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.multipleSelection = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            {this.$checkBtnRole('apply', this.$route.meta.roles) &&
+            ((!this.isCustomer &&
+              !row.automaticStatus &&
+              (row.examineStatus === '保存' || row.examineStatus === '不通过')) ||
+              (this.isCustomer &&
+                !row.automaticStatus &&
+                (row.examineStatus === '保存' || row.examineStatus === '不通过') &&
+                row.type != 2) ||
+              (!this.isCustomer &&
+                row.automaticStatus &&
+                (row.examineStatus === '保存' || row.examineStatus === '不通过') &&
+                row.type === 2)) ? (
+              <el-popconfirm
+                style="margin-right: 10px"
+                title="确定申请吗?"
+                onOnConfirm={() => {
+                  this.handleSubmit(row.id, 'WAIT')
+                }}
+              >
+                <el-button slot="reference" type="text">
+                  申请
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+
+            {this.$checkBtnRole('apply', this.$route.meta.roles) &&
+            ((!this.isCustomer && !row.automaticStatus && row.examineStatus === '待审核') ||
+              (this.isCustomer && !row.automaticStatus && row.examineStatus === '待审核' && row.type != 2) ||
+              (!this.isCustomer && row.automaticStatus && row.examineStatus === '待审核' && row.type == 2)) ? (
+              <el-popconfirm
+                style="margin-right: 10px"
+                title="确定撤回吗?"
+                onOnConfirm={() => {
+                  this.handleSubmit(row.id, 'SAVE')
+                }}
+              >
+                <el-button slot="reference" type="text">
+                  撤回
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+            {this.$checkBtnRole('examine', this.$route.meta.roles) &&
+            ((!this.isCustomer && !row.automaticStatus && row.examineStatus === '通过') ||
+              (this.isCustomer && !row.automaticStatus && row.examineStatus === '通过' && row.type != 2) ||
+              (!this.isCustomer && row.automaticStatus && row.examineStatus === '通过' && row.type == 2)) ? (
+              <el-popconfirm
+                style="margin-right: 10px"
+                title="确定弃审吗?"
+                onOnConfirm={() => {
+                  this.handleAbandon(row.id)
+                }}
+              >
+                <el-button slot="reference" type="text">
+                  弃审
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+
+            {this.$checkBtnRole('edit', this.$route.meta.roles) &&
+            !row.automaticStatus &&
+            (row.examineStatus === '保存' || row.examineStatus === '不通过') &&
+            row.type === 1 ? (
+              <el-button
+                type="text"
+                onClick={() => {
+                  this.toForm(row)
+                }}
+              >
+                编辑
+              </el-button>
+            ) : null}
+            {this.$checkBtnRole('edit', this.$route.meta.roles) &&
+            ((!this.isCustomer &&
+              !row.automaticStatus &&
+              (row.examineStatus === '保存' || row.examineStatus === '不通过') &&
+              row.type === 2) ||
+              (this.isCustomer &&
+                !row.automaticStatus &&
+                (row.examineStatus === '保存' || row.examineStatus === '不通过') &&
+                row.type != 2 &&
+                row.type !== 1) ||
+              (!this.isCustomer &&
+                row.automaticStatus &&
+                (row.examineStatus === '保存' || row.examineStatus === '不通过') &&
+                row.type === 2)) ? (
+              <el-button
+                type="text"
+                onClick={() => {
+                  this.toReturnForm(row)
+                }}
+              >
+                编辑
+              </el-button>
+            ) : null}
+
+            {this.$checkBtnRole('examine', this.$route.meta.roles) &&
+            ((!this.isCustomer && !row.automaticStatus && row.examineStatus === '待审核') ||
+              (this.isCustomer && !row.automaticStatus && row.examineStatus !== '待审核' && row.type != 2) ||
+              (!this.isCustomer && row.automaticStatus && row.examineStatus === '待审核' && row.type == 2)) ? (
+              <el-button
+                type="text"
+                onClick={() => {
+                  this.toExamine(row)
+                }}
+              >
+                审核
+              </el-button>
+            ) : null}
+
+            {this.$checkBtnRole('del', this.$route.meta.roles) &&
+            ((!this.isCustomer && !row.automaticStatus && row.examineStatus !== '通过') ||
+              (this.isCustomer && !row.automaticStatus && row.examineStatus !== '通过' && row.type != 2) ||
+              (!this.isCustomer && row.automaticStatus && row.examineStatus !== '通过' && row.type == 2)) ? (
+              <el-popconfirm
+                style="margin-left: 10px"
+                title="确定删除吗?"
+                onOnConfirm={() => {
+                  this.handleDelete(row.id)
+                }}
+              >
+                <el-button slot="reference" type="text" style="color: #f56c6c">
+                  删除
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+            <el-button
+              type="text"
+              onClick={() => {
+                this.toDetail(row)
+              }}
+            >
+              详情
+            </el-button>
+          </div>
+        )
+      }
+    },
     // 获取业务员列表
     getSalesmanList() {
       getSalesmanList({
@@ -681,41 +392,41 @@ export default {
       })
     },
 
-    // 查询列表
-    getList() {
-      this.listLoading = true
-
-      const params = {
-        pageNum: this.currentPage,
-        pageSize: this.pageSize,
-        id: this.screenForm.orderNum,
-        correspondName: this.screenForm.warehouse,
-        customerNumber: this.screenForm.jxsNum,
-        createBy: this.screenForm.createBy,
-        automaticStatus:this.screenForm.automaticStatus,
-        customerName: this.screenForm.jxsName,
-        productName: this.screenForm.chName,
-        specification: this.screenForm.model,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        examineStatus: this.screenForm.status,
-        serviceId: this.screenForm.serviceId,
-        type: this.screenForm.orderType,
-        k3ServiceId: this.screenForm.k3ServiceId,
-        mainOrderId: this.screenForm.mainOrderId,
-        categoryId: this.screenForm.categoryId,
-        approvalName: this.screenForm.approvalName
-      }
-      getApplyList(params).then(res => {
-        res.data.records.forEach(item => {
-          item.sums1 = ['refundableQty', 'retiredQty']
-          item.sums2 = ['singlePayPrice', 'payAmount', 'payRebateAmount', 'totalDiscAmount']
-        })
-        this.dataList = res.data.records
-        this.listTotal = res.data.total
-        this.listLoading = false
-      })
-    },
+    // // 查询列表
+    // getList() {
+    //   this.listLoading = true
+
+    //   const params = {
+    //     pageNum: this.currentPage,
+    //     pageSize: this.pageSize,
+    //     id: this.screenForm.orderNum,
+    //     correspondName: this.screenForm.warehouse,
+    //     customerNumber: this.screenForm.jxsNum,
+    //     createBy: this.screenForm.createBy,
+    //     automaticStatus: this.screenForm.automaticStatus,
+    //     customerName: this.screenForm.jxsName,
+    //     productName: this.screenForm.chName,
+    //     specification: this.screenForm.model,
+    //     startTime: this.screenForm.date ? this.screenForm.date[0] : '',
+    //     endTime: this.screenForm.date ? this.screenForm.date[1] : '',
+    //     examineStatus: this.screenForm.status,
+    //     serviceId: this.screenForm.serviceId,
+    //     type: this.screenForm.orderType,
+    //     k3ServiceId: this.screenForm.k3ServiceId,
+    //     mainOrderId: this.screenForm.mainOrderId,
+    //     categoryId: this.screenForm.categoryId,
+    //     approvalName: this.screenForm.approvalName
+    //   }
+    //   getApplyList(params).then(res => {
+    //     res.data.records.forEach(item => {
+    //       item.sums1 = ['refundableQty', 'retiredQty']
+    //       item.sums2 = ['singlePayPrice', 'payAmount', 'payRebateAmount', 'totalDiscAmount']
+    //     })
+    //     this.dataList = res.data.records
+    //     this.listTotal = res.data.total
+    //     this.listLoading = false
+    //   })
+    // },
 
     // 提交筛选表单
     submitScreenForm() {
@@ -725,7 +436,7 @@ export default {
 
     // 重置筛选表单
     resetScreenForm() {
-        this.$refs.screenForm.resetFields()
+      this.$refs.screenForm.resetFields()
       this.currentPage = 1
       this.getList()
     },
@@ -783,7 +494,7 @@ export default {
     handleDelete(id) {
       deleteApply({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
 
@@ -791,7 +502,7 @@ export default {
     handleSubmit(id, examineStatus) {
       submitApply({ id, examineStatus }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
 
@@ -799,7 +510,7 @@ export default {
     handleAbandon(id) {
       abandonApply({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
 
@@ -835,7 +546,7 @@ export default {
         approvalRemark: this.examineForm.remark
       }).then(res => {
         this.isShowExamineDialog = false
-        this.getList()
+        this.$refs.pageRef.refreshList()
         this.$successMsg('审批成功')
       })
     },
@@ -855,7 +566,7 @@ export default {
      * @param {String} index - 索引值
      * @return Boolean
      */
-    selectable: function(row, index) {
+    selectable: function (row, index) {
       if (row.automaticStatus) {
         return false
       }

+ 1 - 1
src/views/supply/apply/components/engin_examine.vue

@@ -397,7 +397,7 @@ export default {
           examineEngin(params).then(res => {
             this.$successMsg()
             this.goBack()
-            this.$parent.getList()
+            // this.$parent.getList()
           })
         })
         .catch(() => {})

+ 7 - 7
src/views/supply/apply/components/engin_form.vue

@@ -134,7 +134,7 @@
       <el-row :gutter="20">
         <el-col :xs="24" :sm="8" :lg="8">
           <el-form-item label="附件" prop="fileUrl">
-            <fileUpload :fileList="fileList" multiple/>
+            <fileUpload :fileList="fileList" multiple />
           </el-form-item>
         </el-col>
       </el-row>
@@ -269,7 +269,7 @@
       </div>
     </div>
 
-    <el-dialog title="添加引用" :visible.sync="isShowDialog" width="80%">
+    <el-dialog title="添加引用" append-to-body :visible.sync="isShowDialog" width="80%">
       <el-form ref="screenForm" :model="screenForm" size="small" label-position="left" label-width="100px">
         <el-row :gutter="20">
           <el-col :xs="12" :sm="12" :lg="6">
@@ -297,7 +297,7 @@
               <el-date-picker
                 v-model="screenForm.date"
                 type="datetimerange"
-:default-time="['00:00:00','23:59:59']"
+                :default-time="['00:00:00', '23:59:59']"
                 range-separator="至"
                 style="width: 100%; height: 33px"
                 value-format="yyyy-MM-dd HH:mm:ss"
@@ -677,7 +677,7 @@ export default {
           k.name = k.fileName
           k.url = k.fileUrl
         })
-        this.fileList =  data.salesOrderPictures
+        this.fileList = data.salesOrderPictures
         // data.orders.forEach(item => {
         //   item.orderId = item.id;
         // })
@@ -808,7 +808,7 @@ export default {
 
     // 重置筛选表单
     resetScreenForm() {
-        this.$refs.screenForm.resetFields()
+      this.$refs.screenForm.resetFields()
       this.currentPage = 1
       this.tableGoodsList = []
       // this.getGoodsList();
@@ -960,13 +960,13 @@ export default {
             editEngin(params).then(res => {
               this.$successMsg('编辑成功')
               this.goBack()
-              this.$parent.getList()
+              // this.$parent.getList()
             })
           } else {
             addEngin(params).then(res => {
               this.$successMsg('添加成功')
               this.goBack()
-              this.$parent.getList()
+              // this.$parent.getList()
             })
           }
         }

+ 6 - 6
src/views/supply/apply/components/engin_return_form.vue

@@ -268,7 +268,7 @@
       </div>
     </div>
 
-    <el-dialog title="添加引用" :visible.sync="isShowDialog" width="80%">
+    <el-dialog title="添加引用" append-to-body :visible.sync="isShowDialog" width="80%">
       <el-form ref="screenForm" :model="screenForm" size="mini" label-position="left" label-width="100px">
         <el-row :gutter="20">
           <el-col :xs="12" :sm="12" :lg="6">
@@ -638,7 +638,7 @@ export default {
   methods: {
     // 返回列表
     goBack() {
-      if (this.$parent.isShow) {
+      if (this.isShow) {
         this.$router.replace('/supply/implement/sum_list')
       } else {
         this.$emit('backListFormDetail')
@@ -688,7 +688,7 @@ export default {
           k.name = k.fileName
           k.url = k.fileUrl
         })
-        this.fileList =  data.salesOrderPictures
+        this.fileList = data.salesOrderPictures
         // data.orders.forEach(item => {
         //   item.orderId = item.id;
         // })
@@ -814,7 +814,7 @@ export default {
 
     // 重置筛选表单
     resetScreenForm() {
-        this.$refs.screenForm.resetFields()
+      this.$refs.screenForm.resetFields()
       this.currentPage = 1
       // this.tableGoodsList = [];
       this.getGoodsList()
@@ -975,13 +975,13 @@ export default {
             editEngin(params).then(res => {
               this.$successMsg('编辑成功')
               this.goBack()
-              this.$parent.getList()
+              // this.$parent.getList()
             })
           } else {
             addApplyReturn(params).then(res => {
               this.$successMsg('添加成功')
               this.goBack()
-              this.$parent.getList()
+              // this.$parent.getList()
             })
           }
         }

文件差异内容过多而无法显示
+ 318 - 600
src/views/supply/apply/engin_list.vue


+ 3 - 1
src/views/supply/deliver/deliver_list.vue

@@ -51,7 +51,9 @@
         <el-button @click="isShowDialog = false">关 闭</el-button>
       </div>
     </el-dialog>
-    <DeliverDetail :listItem="queryItem" v-if="isShowDetail" @backListFormDetail="backList" ref="refDetail" />
+    <div class="app-container" v-if="isShowDetail">
+      <DeliverDetail :listItem="queryItem" @backListFormDetail="backList" ref="refDetail" />
+    </div>
   </div>
 </template>
 

+ 14 - 0
src/views/supply/engin/commerce_list.vue

@@ -8,6 +8,8 @@
     :columnParsing="columnParsing"
     :tableAttributes="tableAttributes"
     :tableEvents="tableEvents"
+    :fieldBeansHook="fieldBeansHook"
+    :operationColumnWidth="200"
   >
     <!-- <EditDateDialog :is-show.sync="isShowEditDateDialog" :date-form.sync="dateForm" /> -->
     <Popu v-if="isShowDetail || isShowForm || isShowExamine || isShowReturn">
@@ -214,6 +216,17 @@ export default {
     selectionChange(data) {
       this.recordSelected = data
     },
+
+    fieldBeansHook(val) {
+      if (this.isCustomer !== '') {
+        let res = val.filter(
+          v => v.jname !== 'refPowerCategory' && v.jname !== 'geLiInerNote' && v.jname !== 'geLiNote'
+        )
+        return res
+      } else {
+        return val
+      }
+    },
     operation() {
       return (h, { row, index, column }) => {
         return (
@@ -461,6 +474,7 @@ export default {
       this.isShowForm = false
       this.isShowExamine = false
       this.isShowReturn = false
+      this.$refs.pageRef.refreshList()
     },
 
     // 申请

+ 10 - 9
src/views/supply/engin/components/commerce_form.vue

@@ -615,10 +615,11 @@ export default {
         newValue.forEach(item => {
           item.dd = (item.price || 0) * (item.qty || 0)
           item.zk = item.qty * item.discAmount
-          item.sf =   (item.price * item.qty * 100 -
-                ((item.price * item.qty * (item.rebateRate * 100)) / 100) * 100 -
-                ((item.qty * (item.discAmount * 100)) / 100) * 100) /
-              100
+          item.sf =
+            (item.price * item.qty * 100 -
+              ((item.price * item.qty * (item.rebateRate * 100)) / 100) * 100 -
+              ((item.qty * (item.discAmount * 100)) / 100) * 100) /
+            100
 
           item.fl = (item.price * item.qty * (item.rebateRate * 100)) / 100
           item.sums1 = [
@@ -632,7 +633,7 @@ export default {
             'retiredQty',
             'zk'
           ]
-          item.sums2 = ['totalAmount', 'dd','fl','sf','payAmount', 'price', 'payRebateAmount', 'discAmount']
+          item.sums2 = ['totalAmount', 'dd', 'fl', 'sf', 'payAmount', 'price', 'payRebateAmount', 'discAmount']
         })
 
         if (this.goodsList && this.goodsList.length) {
@@ -920,7 +921,7 @@ export default {
             customerWalletId: '',
             isDirectTransfer: false,
             directTransferQty: 0,
-            retiredQty:0,
+            retiredQty: 0,
             hasSendQty: 0,
             hasOrderQty: item.hasOrderQty,
             remark: item.remark,
@@ -1098,7 +1099,7 @@ export default {
               editCom(params).then(res => {
                 this.$successMsg('编辑成功')
                 this.goBack()
-                this.$parent.getList()
+                // this.$parent.getList()
               })
             } else {
               params.customerNumber = this.mainForm.jxsNum
@@ -1107,7 +1108,7 @@ export default {
               addCom(params).then(res => {
                 this.$successMsg('新增成功')
                 this.goBack()
-                this.$parent.getList()
+                // this.$parent.getList()
               })
             }
           } else if (type === 2) {
@@ -1117,7 +1118,7 @@ export default {
             submitCom(params).then(res => {
               this.$successMsg('提交审核成功')
               this.goBack()
-              this.$parent.getList()
+              // this.$parent.getList()
             })
           }
         }

+ 3 - 3
src/views/supply/engin/components/home_form.vue

@@ -1577,7 +1577,7 @@ export default {
                 .then(res => {
                   this.$successMsg('编辑成功')
                   this.goBack()
-                  this.$parent.getList()
+                  // this.$parent.getList()
                 })
                 .finally(res => {
                   this.formLoading = false
@@ -1587,7 +1587,7 @@ export default {
                 .then(res => {
                   this.$successMsg('新增成功')
                   this.goBack()
-                  this.$parent.getList()
+                  // this.$parent.getList()
                 })
                 .finally(res => {
                   this.formLoading = false
@@ -1598,7 +1598,7 @@ export default {
               .then(res => {
                 this.$successMsg('提交审核成功')
                 this.goBack()
-                this.$parent.getList()
+                // this.$parent.getList()
               })
               .finally(res => {
                 this.formLoading = false

+ 14 - 2
src/views/supply/engin/home_list.vue

@@ -8,6 +8,8 @@
     :columnParsing="columnParsing"
     :tableAttributes="tableAttributes"
     :tableEvents="tableEvents"
+    :fieldBeansHook="fieldBeansHook"
+    :operationColumnWidth="200"
   >
     <!-- <div slot="moreSearch">
       <ul class="ulStyle">
@@ -250,6 +252,16 @@ export default {
     selectionChange(data) {
       this.recordSelected = data
     },
+    fieldBeansHook(val) {
+      if (this.isCustomer !== '') {
+        let res = val.filter(
+          v => v.jname !== 'refPowerCategory' && v.jname !== 'geLiInerNote' && v.jname !== 'geLiNote'
+        )
+        return res
+      } else {
+        return val
+      }
+    },
     operation() {
       return (h, { row, index, column }) => {
         return (
@@ -314,8 +326,7 @@ export default {
               ''
             )}
 
-            {this.$checkBtnRole('examine', this.$route.meta.roles) &&
-            (row.examineStatus === '保存' || row.examineStatus === '待审核') ? (
+            {this.$checkBtnRole('examine', this.$route.meta.roles) && row.examineStatus === '待审核' ? (
               <el-button
                 size="mini"
                 type="text"
@@ -544,6 +555,7 @@ export default {
       this.isShowForm = false
       this.isShowExamine = false
       this.isShowReturn = false
+      this.$refs.pageRef.refreshList()
     },
 
     // 申请

+ 5 - 5
src/views/supply/pickup/components/pickup_form.vue

@@ -569,9 +569,9 @@ export default {
             }
           }
           if (e == 1) {
-            item.refLinkman = item.copyRefLinkman || item.copyReceivingName  || item.refLinkman 
-            item.refPhone = item.copyRefPhone || item.copyPhone ||  item.refPhone 
-            item.refInstallAddress = item.copyRefInstallAddress || item.copyAddress || item.refInstallAddress 
+            item.refLinkman = item.copyRefLinkman || item.copyReceivingName || item.refLinkman
+            item.refPhone = item.copyRefPhone || item.copyPhone || item.refPhone
+            item.refInstallAddress = item.copyRefInstallAddress || item.copyAddress || item.refInstallAddress
           }
           if (e == 2) {
             item.receivingName = item.copyReceivingName
@@ -933,7 +933,7 @@ export default {
           .then(res => {
             this.$successMsg('提交成功')
             this.goBack()
-            this.$parent.getList()
+            // this.$parent.getList()
           })
           .finally(res => {
             this.formLoading = false
@@ -943,7 +943,7 @@ export default {
           .then(res => {
             this.$successMsg('提交成功')
             this.goBack()
-            this.$parent.getList()
+            // this.$parent.getList()
           })
           .finally(res => {
             this.formLoading = false

+ 137 - 353
src/views/supply/pickup/pickup_list.vue

@@ -1,339 +1,61 @@
 <template>
-  <div class="app-container">
-    <div v-show="!isShowForm">
-      <!-- 筛选条件 -->
-      <div class="screen-container">
-        <Collapse :screen-form="screenForm">
-          <template #right_btn>
-            <el-button size="mini" @click="resetScreenForm">清空</el-button>
-            <el-button type="primary" size="mini" @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="请选择">
-                      <el-option
-                        v-for="item in pickupManList"
-                        :key="item.id"
-                        :label="item.takerName"
-                        :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="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="createBy">
-                    <el-input v-model="screenForm.createBy" placeholder="请输入制单人" />
-                  </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('add', $route.meta.roles)"
-              size="mini"
-              type="primary"
-              icon="el-icon-plus"
-              @click="toForm()"
-              >新增</el-button
-            >
-          </div>
-          <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="isUp" min-width="160" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.isUp == 'YES' ? '是' : '否' }}
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="是否卸货" prop="isDischarge" min-width="160" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.isDischarge == 'YES' ? '是' : '否' }}
-              </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 :copy-text="scope.row.informationKey" />
-                <span>{{ scope.row.informationKey }}</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="invoiceId" min-width="120" 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="saleTypeName" min-width="100" show-overflow-tooltip />
-
-            <el-table-column align="left" label="工程订单号" prop="enginOrderNo" min-width="140" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <CopyButton :copy-text="scope.row.enginOrderNo" />
-                <span>{{ scope.row.enginOrderNo }}</span>
-              </template>
-            </el-table-column>
-
-            <el-table-column align="left" label="预约日期" prop="pickTime" min-width="100" 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="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="remark" 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="150" show-overflow-tooltip />
-            <el-table-column align="left" label="提货物流" prop="pickLogistics" min-width="200" show-overflow-tooltip />
-            <el-table-column align="left" label="制单人" prop="createBy" min-width="100" show-overflow-tooltip />
-            <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="center" label="操作" width="100" fixed="right">
-              <template slot-scope="scope">
-                <el-button type="text" @click="toForm(scope.row, true)">详情</el-button>
-                <el-button
-                  v-if="$checkBtnRole('edit', $route.meta.roles) && !scope.row.printNum"
-                  type="text"
-                  @click="toForm(scope.row)"
-                  >编辑</el-button
-                >
-                <el-popconfirm
-                  v-if="$checkBtnRole('cancel', $route.meta.roles) && ((isDealer && !scope.row.printNum) || !isDealer)"
-                  style="margin-left: 10px"
-                  :title="'确定' + (scope.row.printNum ? '作废' : '取消') + '吗?'"
-                  @onConfirm="handleCancel(scope.row.id)"
-                >
-                  <el-button slot="reference" type="text">{{ scope.row.printNum ? '作废' : '取消' }}</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]"
-            :page-size="10"
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="listTotal"
-            @size-change="handleSizeChange"
-            @current-change="handleCurrentChange"
-          />
-        </div>
-      </div>
-    </div>
-
-    <PickupForm v-if="isShowForm" :list-item="queryItem" :flag="flag" @backListFormDetail="backList" />
-  </div>
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :operation="operation()"
+    :optionsEvensGroup="optionsEvensGroup"
+    :exportList="exportList"
+    :columnParsing="columnParsing"
+    :tableAttributes="tableAttributes"
+    :tableEvents="tableEvents"
+  >
+    <Popu v-if="isShowForm">
+      <PickupForm :list-item="queryItem" :flag="flag" @backListFormDetail="backList" />
+    </Popu>
+  </template-page>
 </template>
 
 <script>
-import { getPickupList, cancelData, getPickupManList } from '@/api/supply/pickup'
+import TemplatePage from '@/components/template/template-page-1.vue'
+import Popu from '@/components/template/popu.vue'
+
+import { getPickupList, cancelData, getPickupManList, pickListV2, pickListV2Export } from '@/api/supply/pickup'
 import { getWarehouseList } from '@/api/supply/engin'
 import PickupForm from '@/views/supply/pickup/components/pickup_form'
 
 export default {
   components: {
-    PickupForm
+    PickupForm,
+    TemplatePage,
+    Popu
   },
   data() {
     return {
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '新增',
+              click: () => {
+                this.toForm()
+              },
+              isRole: this.$checkBtnRole('add', this.$route.meta.roles)
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
+
       currentPage: 1, // 当前页码
       pageSize: 10, // 每页数量
       listTotal: 0, // 列表总数
@@ -386,12 +108,72 @@ export default {
   },
 
   created() {
-    this.getList()
-    this.getWarehouseList()
-    this.getPickupManList()
+    // this.getList()
+    // this.getWarehouseList()
+    // this.getPickupManList()
   },
 
   methods: {
+    // 列表请求函数
+    getList: pickListV2,
+    // 列表导出函数
+    exportList: pickListV2Export,
+    // 表格列解析渲染数据更改
+    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={async () => {
+                this.toForm(row, true)
+              }}
+            >
+              详情
+            </el-button>
+
+            {this.$checkBtnRole('edit', this.$route.meta.roles) && !row.printNum ? (
+              <el-button
+                size="mini"
+                type="text"
+                onClick={async () => {
+                  this.toForm(row)
+                }}
+              >
+                编辑
+              </el-button>
+            ) : (
+              ''
+            )}
+
+            {this.$checkBtnRole('cancel', this.$route.meta.roles) &&
+            ((this.isDealer && !row.printNum) || !this.isDealer) ? (
+              <el-popconfirm
+                onOnConfirm={async () => {
+                  this.handleCancel(row.id)
+                }}
+                title={`是否确定需要${row.printNum ? '作废' : '取消'}该项内容?`}
+              >
+                <el-button slot="reference" size="mini" type="text">
+                  {row.printNum ? '作废' : '取消'}
+                </el-button>
+              </el-popconfirm>
+            ) : (
+              ''
+            )}
+          </div>
+        )
+      }
+    },
+
     // 获取仓库列表
     getWarehouseList() {
       getWarehouseList({
@@ -416,33 +198,33 @@ export default {
       })
     },
     // 查询列表
-    getList() {
-      this.listLoading = true
+    // getList() {
+    //   this.listLoading = true
 
-      const params = {
-        pageNum: this.currentPage,
-        pageSize: this.pageSize,
-        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,
-        createBy: this.screenForm.createBy,
+    //   const params = {
+    //     pageNum: this.currentPage,
+    //     pageSize: this.pageSize,
+    //     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,
+    //     createBy: this.screenForm.createBy,
 
-        printStartTime: this.screenForm.printTime[0],
-        printEndTime: this.screenForm.printTime[1],
-        salesOrderId: this.screenForm.salesOrderId
-      }
-      getPickupList(params).then(res => {
-        this.dataList = res.data.records
-        this.listTotal = res.data.total
-        this.listLoading = false
-      })
-    },
+    //     printStartTime: this.screenForm.printTime[0],
+    //     printEndTime: this.screenForm.printTime[1],
+    //     salesOrderId: this.screenForm.salesOrderId
+    //   }
+    //   getPickupList(params).then(res => {
+    //     this.dataList = res.data.records
+    //     this.listTotal = res.data.total
+    //     this.listLoading = false
+    //   })
+    // },
 
     // 提交筛选表单
     submitScreenForm() {
@@ -480,13 +262,15 @@ export default {
     backList() {
       this.queryItem = {}
       this.isShowForm = false
+      this.$refs.pageRef.refreshList()
     },
 
     // 取消/作废
     handleCancel(id) {
       cancelData({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        // this.getList()
+        this.$refs.pageRef.refreshList()
       })
     }
   }

+ 6 - 5
src/views/supply/reserve/components/reserve_form.vue

@@ -293,7 +293,7 @@
       </div>
     </div>
 
-    <el-dialog title="添加引用" :visible.sync="isShowDialog" width="80%">
+    <el-dialog title="添加引用" append-to-body :visible.sync="isShowDialog" width="80%">
       <el-form ref="screenForm" :model="screenForm" size="small" label-position="left">
         <el-row :gutter="20">
           <el-col :xs="12" :sm="6" :lg="4">
@@ -573,6 +573,7 @@ export default {
     // await this.getWarehouseList();
     // await this.getListStock()
     if (this.listItem) {
+      console.log(this.listItem)
       this.getDetail()
     } else {
       this.mainForm.createMan = JSON.parse(localStorage.getItem('supply_user')).nickName
@@ -695,7 +696,7 @@ export default {
 
     // 重置筛选表单
     resetScreenForm() {
-        this.$refs.screenForm.resetFields()
+      this.$refs.screenForm.resetFields()
       this.currentPage = 1
       this.dialogGoodsList = []
       this.getGoodsList()
@@ -712,7 +713,7 @@ export default {
 
     // 关闭 弹窗
     closeDialog() {
-        this.$refs.screenForm.resetFields()
+      this.$refs.screenForm.resetFields()
       this.isShowDialog = false
     },
 
@@ -891,13 +892,13 @@ export default {
             editData(params).then(res => {
               this.$successMsg('编辑成功')
               this.goBack()
-              this.$parent.getList()
+              // this.$parent.getList()
             })
           } else {
             addData(params).then(res => {
               this.$successMsg('添加成功')
               this.goBack()
-              this.$parent.getList()
+              // this.$parent.getList()
             })
           }
         }

+ 181 - 372
src/views/supply/reserve/reserve_list.vue

@@ -1,352 +1,46 @@
 <template>
-  <div class="app-container">
-    <div v-show="!isShowDetail && !isShowForm">
-      <!-- 筛选条件 -->
-      <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="85px" size="mini" label-position="left">
-              <el-row :gutter="20">
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="产品名称" prop="goodsName">
-                    <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="物料编码" prop="goodsNum">
-                    <el-input v-model="screenForm.goodsNum" placeholder="请输入物料编码"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="规格型号" prop="model">
-                    <el-input v-model="screenForm.model" placeholder="请输入规格型号"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="销售订单号" prop="saleNum">
-                    <el-input v-model="screenForm.saleNum" placeholder="请输入销售订单号"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="经销商名称" prop="jxsName">
-                    <el-input v-model="screenForm.jxsName" placeholder="请输入经销商名称"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="经销商编号" prop="jxsNum">
-                    <el-input v-model="screenForm.jxsNum" placeholder="请输入经销商编号"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="预留日期" prop="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-date-picker>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="制表人" prop="createMan">
-                    <el-input v-model="screenForm.createMan" placeholder="请输入制表人"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="修改人" prop="updateMan">
-                    <el-input v-model="screenForm.updateMan" placeholder="请输入修改人"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="预留单号" prop="orderNum">
-                    <el-input v-model="screenForm.orderNum" placeholder="请输入预留单号"></el-input>
-                  </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="选择预留仓库" clearable>
-                      <el-option
-                        :label="item.name"
-                        :value="item.id"
-                        v-for="(item, index) in warehouseList"
-                        :key="index"
-                      ></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 flex">
-            <el-button
-              size="mini"
-              type="primary"
-              icon="el-icon-plus"
-              @click="toForm()"
-              v-if="$checkBtnRole('add', $route.meta.roles)"
-              >新增</el-button
-            >
-            <ExportButton class="ml" :exUrl="'reserve/download'" v-if="!isDealer" exText="下载模板" :exParams="{}" />
-            <ImportButton :imUrl="'reserve/importData'" v-if="!isDealer" @importSuccess="getList" />
-          </div>
-          <div class="fr">
-            <ExportButton :exUrl="'reserve/export'" :exParams="exParams" />
-          </div>
-        </div>
-        <div class="table">
-          <el-table
-            v-loading="listLoading"
-            :data="dataList"
-            element-loading-text="Loading"
-            border
-            fit
-            highlight-current-row
-            stripe
-            show-summary
-            :summary-method="$getSummaries"
-          >
-            <!--            <el-table-column type="index" width="50" label="序号"> </el-table-column>-->
-            <el-table-column align="left" label="状态" prop="status" min-width="100" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.status | statusFilter }}
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="预留单号" prop="id" min-width="180" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <CopyButton :copyText="scope.row.id" />
-                <span>{{ scope.row.id }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="预留日期"
-              prop="createTime"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column align="left" label="销售订单号" prop="mainOrderId" min-width="140" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <CopyButton :copyText="scope.row.mainOrderId" />
-                <span>{{ scope.row.mainOrderId }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="订单日期" prop="orderTime" min-width="120" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.orderTime | dateToDayFilter }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="序号"
-              prop="frequency"
-              min-width="50"
-              show-overflow-tooltip
-            ></el-table-column>
-
-            <el-table-column align="left" label="物料编码" prop="materialCode" min-width="120" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <CopyButton :copyText="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 :copyText="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 :copyText="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 :copyText="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
-            ></el-table-column>
-            <el-table-column
-              align="right"
-              label="原预留数量"
-              prop="oldNum"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="right"
-              label="预留数量"
-              prop="reservedNum"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="right"
-              label="订单数量"
-              prop="qty"
-              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>
-            <el-table-column
-              align="left"
-              label="备注"
-              prop="remark"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="经销商编码"
-              prop="customerNumber"
-              min-width="100"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                <CopyButton :copyText="scope.row.customerNumber" />
-                <span>{{ scope.row.customerNumber }}</span>
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="经销商名称" prop="customerName" min-width="250" 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="createBy"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="制表日期"
-              prop="createTime"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="修改人"
-              prop="updateBy"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="修改日期"
-              prop="updateTime"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="关闭人"
-              prop="closureBy"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="关闭日期"
-              prop="closureTime"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column align="center" label="操作" width="160" fixed="right">
-              <template slot-scope="scope">
-                <el-button type="text" @click="toForm(scope.row)" v-if="$checkBtnRole('edit', $route.meta.roles)"
-                  >编辑</el-button
-                >
-                <el-button type="text" @click="toDetail(scope.row)">详情</el-button>
-                <el-popconfirm
-                  style="margin-left: 10px"
-                  title="确定关闭吗?"
-                  @onConfirm="handleClose(scope.row.itemId)"
-                  v-if="$checkBtnRole('examine', $route.meta.roles) && scope.row.status === 1"
-                >
-                  <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
-            @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>
-
-    <ReserveDetail :listItem="queryItem" v-if="isShowDetail" @backListFormDetail="backList" />
-    <ReserveForm :listItem="queryItem" v-if="isShowForm" @backListFormDetail="backList" />
-  </div>
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :operation="operation()"
+    :optionsEvensGroup="optionsEvensGroup"
+    :exportList="exportList"
+    :columnParsing="columnParsing"
+    :tableAttributes="tableAttributes"
+    :tableEvents="tableEvents"
+  >
+    <Popu v-if="isShowForm || isShowDetail">
+      <ReserveDetail :listItem="queryItem" v-if="isShowDetail" @backListFormDetail="backList" />
+      <ReserveForm :listItem="queryItem" v-if="isShowForm" @backListFormDetail="backList" />
+    </Popu>
+  </template-page>
 </template>
 
 <script>
-import { getList, closeData, getWarehouseList } from '@/api/supply/reserve'
+import TemplatePage from '@/components/template/template-page-1.vue'
+import Popu from '@/components/template/popu.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+
+import {
+  getList,
+  closeData,
+  getWarehouseList,
+  reserveListV2,
+  reserveListV2Export,
+  reserveImportData,
+  reserveImportDataExcel
+} from '@/api/supply/reserve'
 import ReserveDetail from '@/views/supply/reserve/components/reserve_detail'
 import ReserveForm from '@/views/supply/reserve/components/reserve_form'
 
 let that
 export default {
+  mixins: [import_mixin],
   components: {
     ReserveDetail,
-    ReserveForm
+    ReserveForm,
+    TemplatePage,
+    Popu
   },
   filters: {
     statusFilter(val) {
@@ -356,6 +50,60 @@ export default {
   },
   data() {
     return {
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '新增',
+              click: () => {
+                this.toForm()
+              },
+              isRole: this.$checkBtnRole('add', this.$route.meta.roles)
+            }
+          ]
+        ],
+        [
+          [
+            {
+              name: '下载模板',
+              click: () => {
+                reserveImportDataExcel({}, `${this.$route.meta.title}`)
+                  .then(res => {
+                    this.$message({
+                      message: '下载成功',
+                      type: 'success'
+                    })
+                  })
+                  .catch(err => {
+                    this.$message.error('下载失败')
+                  })
+              },
+              isRole: !this.isDealer
+            }
+          ]
+        ],
+        [
+          [
+            {
+              name: '',
+              render: this.importButton(reserveImportData),
+              isRole: !this.isDealer
+            }
+          ]
+        ]
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      },
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
+
       currentPage: 1, // 当前页码
       pageSize: 10, // 每页数量
       listTotal: 0, // 列表总数
@@ -416,12 +164,71 @@ export default {
   },
 
   created() {
-    this.getWarehouseList()
-    this.getList()
-    console.log(this.$route.meta.roles)
+    // this.getWarehouseList()
+    // this.getList()
+    // console.log(this.$route.meta.roles)
   },
 
   methods: {
+    // 列表请求函数
+    getList: reserveListV2,
+    // 列表导出函数
+    exportList: reserveListV2Export,
+    // 表格列解析渲染数据更改
+    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={async () => {
+                this.toDetail(row)
+              }}
+            >
+              详情
+            </el-button>
+
+            {this.$checkBtnRole('edit', this.$route.meta.roles) && !row.printNum ? (
+              <el-button
+                size="mini"
+                type="text"
+                onClick={async () => {
+                  this.toForm(row)
+                }}
+              >
+                编辑
+              </el-button>
+            ) : (
+              ''
+            )}
+
+            {this.$checkBtnRole('examine', this.$route.meta.roles) && row.status === 1 ? (
+              <el-popconfirm
+                onOnConfirm={async () => {
+                  this.handleClose(row.itemId)
+                }}
+                title="是否确定需要关闭该项内容?"
+              >
+                <el-button slot="reference" size="mini" type="text">
+                  关闭
+                </el-button>
+              </el-popconfirm>
+            ) : (
+              ''
+            )}
+          </div>
+        )
+      }
+    },
+
     // 获取仓库列表
     getWarehouseList() {
       getWarehouseList({
@@ -433,36 +240,36 @@ export default {
     },
 
     // 查询列表
-    getList() {
-      this.listLoading = true
+    // getList() {
+    //   this.listLoading = true
 
-      let params = {
-        pageNum: this.currentPage,
-        pageSize: this.pageSize,
-        materialName: this.screenForm.goodsName,
-        materialCode: this.screenForm.goodsNum,
-        customerNumber: this.screenForm.jxsNum,
-        customerName: this.screenForm.jxsName,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        createBy: this.screenForm.createMan,
-        updateBy: this.screenForm.updateMan,
-        id: this.screenForm.orderNum,
-        orderId: this.screenForm.saleNum,
-        specification: this.screenForm.model,
-        status: this.screenForm.status,
-        correspondId: this.screenForm.warehouse
-      }
-      getList(params).then(res => {
-        res.data.records.forEach(item => {
-          item.sums1 = ['oldNum', 'reservedNum', 'qty']
-          item.sums2 = []
-        })
-        this.dataList = res.data.records
-        this.listTotal = res.data.total
-        this.listLoading = false
-      })
-    },
+    //   let params = {
+    //     pageNum: this.currentPage,
+    //     pageSize: this.pageSize,
+    //     materialName: this.screenForm.goodsName,
+    //     materialCode: this.screenForm.goodsNum,
+    //     customerNumber: this.screenForm.jxsNum,
+    //     customerName: this.screenForm.jxsName,
+    //     startTime: this.screenForm.date ? this.screenForm.date[0] : '',
+    //     endTime: this.screenForm.date ? this.screenForm.date[1] : '',
+    //     createBy: this.screenForm.createMan,
+    //     updateBy: this.screenForm.updateMan,
+    //     id: this.screenForm.orderNum,
+    //     orderId: this.screenForm.saleNum,
+    //     specification: this.screenForm.model,
+    //     status: this.screenForm.status,
+    //     correspondId: this.screenForm.warehouse
+    //   }
+    //   getList(params).then(res => {
+    //     res.data.records.forEach(item => {
+    //       item.sums1 = ['oldNum', 'reservedNum', 'qty']
+    //       item.sums2 = []
+    //     })
+    //     this.dataList = res.data.records
+    //     this.listTotal = res.data.total
+    //     this.listLoading = false
+    //   })
+    // },
 
     // 提交筛选表单
     submitScreenForm() {
@@ -472,7 +279,7 @@ export default {
 
     // 重置筛选表单
     resetScreenForm() {
-        this.$refs.screenForm.resetFields()
+      this.$refs.screenForm.resetFields()
       this.currentPage = 1
       this.getList()
     },
@@ -506,13 +313,15 @@ export default {
       this.queryItem = {}
       this.isShowDetail = false
       this.isShowForm = false
+      this.$refs.pageRef.refreshList()
     },
 
     // 关闭
     handleClose(id) {
       closeData({ itemId: id }).then(res => {
         this.$successMsg()
-        this.getList()
+        // this.getList()
+        this.$refs.pageRef.refreshList()
       })
     }
   }

部分文件因为文件数量过多而无法显示