Browse Source

feat: 发货汇总——其他零售

zh 2 years ago
parent
commit
3354f4ffa2

+ 18 - 0
src/api/supply/deliver.js

@@ -1,5 +1,23 @@
 import request, { postBlob, handleImport, getBlob } from '@/utils/request'
 
+export function getSumListV2(data) {
+  return request({
+    url: `/invoice/listV2?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+
+export function exportSumListV2(data, name) {
+  return postBlob({
+    url: '/invoice/listV2/export',
+    method: 'post',
+    data,
+    name
+  })
+}
+
 // 获取列表 - 零售发货单
 export function getDeliverList(params) {
   return request({

+ 8 - 0
src/api/supply/pickup.js

@@ -16,6 +16,14 @@ export function exportPickupListV2(data, name) {
     name
   })
 }
+
+export function getListInvoiceNumberV2(data) {
+  return request({
+    url: `/invoice/listInvoiceNumberV2?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
 // 获取列表
 export function getPickupList(params) {
   return request({

+ 19 - 2
src/api/supply/policy.js

@@ -1,5 +1,22 @@
-import request from '@/utils/request'
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
 
+export function getRetailListV2(data) {
+  return request({
+    url: `/retail/listP/v2?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+
+export function exportRetailListV2(data, name) {
+  return postBlob({
+    url: '/retail/listP/v2/export',
+    method: 'post',
+    data,
+    name
+  })
+}
 // 获取列表
 export function getList(params) {
   return request({
@@ -8,7 +25,7 @@ export function getList(params) {
     params
   })
 }
-
+ 
 // 获取详情
 export function getDetail(params) {
   return request({

+ 19 - 2
src/api/supply/retail.js

@@ -1,5 +1,22 @@
-import request from '@/utils/request'
+import request, { postBlob, handleImport, getBlob } from '@/utils/request'
 
+export function getRetaillListV2(data) {
+  return request({
+    url: `/retail/list/v2?moduleId=${data.moduleId}`,
+    method: 'post',
+    data
+  })
+}
+
+
+export function exportRetaillListV2(data, name) {
+  return postBlob({
+    url: '/retail/list/v2/export',
+    method: 'post',
+    data,
+    name
+  })
+}
 // 获取列表
 export function getList(params) {
   return request({
@@ -8,7 +25,7 @@ export function getList(params) {
     params
   })
 }
-
+ 
 // 获取详情
 export function getDetail(params) {
   return request({

+ 0 - 1
src/views/finance/change_list.vue

@@ -152,7 +152,6 @@ export default {
     refreshFn() {
       this.$refs.pageRef.refreshList()
       this.addOff(() => {
-        console.log(this.showPage)
         this.showPage = 1
       })()
     },

File diff suppressed because it is too large
+ 88 - 877
src/views/supply/deliver/sum_list.vue


+ 19 - 27
src/views/supply/pickup/sum_list.vue

@@ -6,6 +6,7 @@
     :operation="operation()"
     :optionsEvensGroup="optionsEvensGroup"
     :columnParsing="columnParsing"
+    :defaultSearchData="searchData"
   >
     <el-dialog title="物流信息" :visible.sync="visible" width="60%" @close="onClose" :close-on-click-modal="false">
       <el-timeline class="logistics" :reverse="false" v-if="logisticsDetail.length">
@@ -91,44 +92,35 @@ export default {
       visible: false,
       orderId: '',
       logisticsDetail: [],
-      flag: false
+      flag: false,
+      searchData: []
     }
   },
   watch: {
     '$route.query.id'(val, oval) {
       if (val) {
         this.screenForm.orderNum = val
-        this.getList({
-          pageNum: 1,
-          pageSize: -1,
-          orderBy: '',
-          params: [
-            {
-              param: 'sale_type_id',
-              compare: '=',
-              value: val
-            }
-          ],
-          moduleId: this.$route.meta.moduleId
-        })
+        this.searchData = [
+          {
+            param: 'invoice_id',
+            compare: '=',
+            value: val
+          }
+        ]
+        this.$refs.pageRef.refreshList()
       }
     }
   },
   activated() {
     if (this.$route.query && this.$route.query.id) {
-      this.getList({
-        pageNum: 1,
-        pageSize: -1,
-        orderBy: '',
-        params: [
-          {
-            param: 'sale_type_id',
-            compare: '=',
-            value: this.$route.query.id
-          }
-        ],
-        moduleId: this.$route.meta.moduleId
-      })
+      this.searchData = [
+        {
+          param: 'invoice_id',
+          compare: '=',
+          value: this.$route.query.id
+        }
+      ]
+      this.$refs.pageRef.refreshList()
     } else {
       this.screenForm.orderNum = ''
     }

+ 132 - 622
src/views/supply/policy/policy_list.vue

@@ -1,530 +1,28 @@
 <template>
-  <div class="app-container">
-    <div v-show="!isShowDetail && !isShowForm && !isShowExamine && !isShowReturn">
-      <!-- 筛选条件 -->
-      <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" size="mini" @change="getList()">
-              <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="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="policyCode">
-                    <el-input v-model="screenForm.policyCode" placeholder="请输入销售政策编号" />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="销售政策说明" prop="policyRemark">
-                    <el-input v-model="screenForm.policyRemark" 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"
-                      class="dateStyle"
-                      type="datetime"
-                      value-format="yyyy-MM-dd HH:mm:ss"
-                      placeholder="选择订单日期"
-                    >
-                    </el-date-picker> -->
-                    <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="zbMan">
-                    <el-input v-model="screenForm.zbMan" placeholder="请输入制表人" />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="审核人" prop="shMan">
-                    <el-input v-model="screenForm.shMan" 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-option>
-                    </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="选择表体业务员"
-                      clearable
-                      filterable
-                      style="width: 100%"
-                    >
-                      <el-option
-                        v-for="item in salesmanList"
-                        :key="item.adminUserId"
-                        :label="item.nickName"
-                        :value="item.adminUserId"
-                      >
-                      </el-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="是否直调" prop="isDirectTransfer">
-                    <el-select v-model="screenForm.isDirectTransfer" placeholder="选择是否直" style="width: 100%">
-                      <el-option :value="null" label="默认"></el-option>
-                      <el-option v-for="item in transfer" :key="item.value" :label="item.label" :value="item.value">
-                      </el-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="规格型号" prop="specification">
-                    <el-input v-model="screenForm.specification" placeholder="请输入规格型号" />
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="产品类别">
-                    <el-select
-                      v-model="screenForm.categoryNumber"
-                      style="width: 100%"
-                      placeholder="选择产品类别"
-                      filterable
-                      clearable
-                    >
-                      <el-option
-                        v-for="item in categoryList"
-                        :key="item.name"
-                        :label="item.name"
-                        :value="item.number"
-                      />
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="钱包" prop="customerWalletId">
-                    <el-select
-                      v-model="screenForm.customerWalletId"
-                      placeholder="选择钱包"
-                      clearable
-                      filterable
-                      style="width: 100%"
-                    >
-                      <el-option v-for="item in NoRebateWalletList" :key="item.id" :label="item.name" :value="item.id">
-                      </el-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="销售类型" prop="saleTypeId">
-                    <el-select
-                      v-model="screenForm.saleTypeId"
-                      placeholder="选择销售类型"
-                      clearable
-                      filterable
-                      style="width: 100%"
-                    >
-                      <el-option v-for="item in typeList" :key="item.id" :label="item.saleName" :value="item.id">
-                      </el-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-            </el-form>
-          </template>
-        </Collapse>
-      </div>
-      <div class="mymain-container">
-        <div class="btn-group clearfix">
-          <div class="fl">
-            <el-button
-              v-if="$checkBtnRole('add', $route.meta.roles)"
-              size="mini"
-              type="primary"
-              icon="el-icon-plus"
-              @click="toForm()"
-              >新增</el-button
-            >
-            <el-button
-              size="mini"
-              type="warning"
-              icon="el-icon-finished"
-              @click="batchExamine"
-              v-if="$checkBtnRole('examine', $route.meta.roles)"
-              >批量审批</el-button
-            >
-          </div>
-          <div class="fr">
-            <ExportButton :ex-url="'retail/export'" :ex-params="exParams" />
-          </div>
-        </div>
-        <div class="table">
-          <el-table
-            v-loading="listLoading"
-            :data="dataList"
-            element-loading-text="Loading"
-            border
-            fit
-            show-summary
-            :row-style="rowClass"
-            :summary-method="$getSummaries"
-            @select-all="handleSelectionAllChange"
-            @selection-change="handleSelectionAllChange"
-          >
-            <!-- <el-table-column
-              align="center"
-              label="提货进度"
-              prop="thjd"
-              min-width="180"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                <el-progress :percentage="scope.row.thjd || 0"></el-progress>
-              </template>
-            </el-table-column> -->
-            <el-table-column align="center" type="selection" width="55" fixed="left" />
-            <el-table-column align="left" label="订单号" prop="id" min-width="180" show-overflow-tooltip />
-            <el-table-column align="left" label="订单日期" prop="theTime" min-width="150" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <div>
-                  <span>{{ scope.row.theTime | dateToDayFilter }}</span>
-                  <el-button
-                    v-if="$checkBtnRole('date', $route.meta.roles)"
-                    type="text"
-                    icon="el-icon-edit"
-                    style="padding: 0; margin-left: 6px"
-                    @click="editDate(scope.row)"
-                  />
-                </div>
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="销售类型" prop="saleTypeName" min-width="200" show-overflow-tooltip />
-            <el-table-column
-              align="left"
-              label="销售政策编号"
-              prop="policyCode"
-              min-width="200"
-              show-overflow-tooltip
-            />
-            <el-table-column
-              align="left"
-              label="销售政策名称"
-              prop="policyTitle"
-              min-width="160"
-              show-overflow-tooltip
-            />
-            <el-table-column
-              align="left"
-              label="销售政策说明"
-              prop="policyRemark"
-              min-width="160"
-              show-overflow-tooltip
-            />
-            <el-table-column align="left" label="经销商" prop="customerName" min-width="200" 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="materialCode" min-width="160" 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="160"
-              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="300" 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="k3CategoryName"
-              min-width="100"
-              show-overflow-tooltip
-            />
-            <el-table-column align="left" label="计量单位" prop="unit" min-width="100" show-overflow-tooltip />
-            <el-table-column align="left" label="文件编号" prop="fileNo" min-width="100" show-overflow-tooltip />
-            <el-table-column
-              align="left"
-              label="是否直调"
-              prop="isDirectTransfer"
-              min-width="100"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                {{ scope.row.isDirectTransfer ? '是' : '否' }}
-              </template>
-            </el-table-column>
-            <el-table-column align="right" label="总数量" prop="qty" min-width="100" show-overflow-tooltip />
-
-            <el-table-column align="right" label="单价" prop="price" min-width="100" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.price | numToFixed }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="right"
-              label="实付金额"
-              sortable
-              prop="payAmount"
-              min-width="100"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                {{ scope.row.payAmount | numToFixed }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="返利类型"
-              prop="customerWalletName2"
-              min-width="100"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                <el-tag v-if="scope.row.customerWalletName2" type="success" size="small">
-                  {{ scope.row.customerWalletName2 }}
-                </el-tag>
-              </template>
-            </el-table-column>
-
-            <el-table-column
-              align="right"
-              label="返利金额"
-              sortable
-              prop="payRebateAmount"
-              min-width="100"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                <div>{{ scope.row.payRebateAmount | numToFixed }}</div>
-              </template>
-            </el-table-column>
-
-            <el-table-column
-              align="right"
-              label="格力折扣"
-              sortable
-              prop="totalDiscAmount"
-              min-width="100"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                {{ scope.row.totalDiscAmount | numToFixed }}
-              </template></el-table-column
-            >
-            <el-table-column
-              align="right"
-              label="直调数量"
-              prop="directTransferQty"
-              min-width="100"
-              show-overflow-tooltip
-            />
-            <el-table-column align="right" label="出库数量" prop="hasSendQty" min-width="100" show-overflow-tooltip />
-            <el-table-column
-              align="left"
-              label="表体备注"
-              prop="itemRemark"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="表头备注"
-              prop="remark"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="表头业务员"
-              prop="k3ServiceName"
-              min-width="100"
-              show-overflow-tooltip
-            />
-            <el-table-column align="left" label="表体业务员" prop="serviceName" min-width="100" show-overflow-tooltip />
-
-            <el-table-column align="left" label="制表人" prop="createName" min-width="100" show-overflow-tooltip />
-            <el-table-column align="left" label="制表日期" prop="createTime" min-width="200" show-overflow-tooltip />
-            <el-table-column align="left" label="审核人" prop="examineName" min-width="200" show-overflow-tooltip />
-            <el-table-column align="left" label="审核日期" prop="examineTime" 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 align="center" label="操作" width="220" fixed="right">
-              <template slot-scope="scope">
-                <el-popconfirm
-                  v-if="scope.row.examineStatus === 'SAVE'"
-                  style="margin-left: 10px"
-                  title="确定提审?"
-                  @onConfirm="handleSubmit(scope.row.id)"
-                >
-                  <el-button slot="reference" type="text">提审</el-button>
-                </el-popconfirm>
-                <el-button
-                  style="margin-left: 10px"
-                  v-if="scope.row.examineStatus == 'WAIT' && $checkBtnRole('examine', $route.meta.roles)"
-                  type="text"
-                  @click="toExamine(scope.row)"
-                  >审核</el-button
-                >
-                <el-popconfirm
-                  v-if="$checkBtnRole('del', $route.meta.roles) && scope.row.examineStatus === 'SAVE'"
-                  style="margin-left: 10px"
-                  title="确定删除吗?"
-                  @onConfirm="handleDelete(scope.row.id)"
-                >
-                  <el-button slot="reference" type="text">删除</el-button>
-                </el-popconfirm>
-                <el-button
-                  style="margin-left: 10px"
-                  v-if="scope.row.examineStatus === 'SAVE' && $checkBtnRole('edit', $route.meta.roles)"
-                  type="text"
-                  @click="toForm(scope.row)"
-                  >编辑</el-button
-                >
-                <el-popconfirm
-                  style="margin-left: 10px"
-                  v-if="$checkBtnRole('examine', $route.meta.roles) && scope.row.examineStatus === 'OK'"
-                  title="确定弃审吗?"
-                  @onConfirm="handleAbandon(scope.row.id)"
-                >
-                  <el-button slot="reference" type="text">弃审</el-button>
-                </el-popconfirm>
-                <el-popconfirm
-                  v-if="scope.row.examineStatus == 'WAIT' && $checkBtnRole('apply', $route.meta.roles)"
-                  style="margin-left: 10px"
-                  title="确定撤回?"
-                  @onConfirm="handleCancel(scope.row.id)"
-                >
-                  <el-button slot="reference" type="text">撤回</el-button>
-                </el-popconfirm>
-                <el-button style="margin-left: 10px" type="text" @click="toDetail(scope.row)">详情</el-button>
-
-                <el-button
-                  style="margin-left: 10px"
-                  v-if="scope.row.examineStatus === 'OK' && $checkBtnRole('examine', $route.meta.roles)"
-                  type="text"
-                  @click="toReturn(scope.row)"
-                  >退订</el-button
-                >
-                <el-popconfirm
-                  v-if="scope.row.examineStatus === 'SAVE' && $checkBtnRole('examine', $route.meta.roles)"
-                  style="margin-left: 10px"
-                  title="确定关闭吗?"
-                  @onConfirm="handleClose(scope.row.id)"
-                >
-                  <el-button slot="reference" type="text">关闭</el-button>
-                </el-popconfirm>
-              </template>
-            </el-table-column>
-          </el-table>
-        </div>
-      </div>
-      <div class="pagination clearfix">
-        <div class="fr">
-          <el-pagination
-            :current-page="currentPage"
-            :page-sizes="[10, 20, 30, 50, 500]"
-            :page-size="10"
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="listTotal"
-            @size-change="handleSizeChange"
-            @current-change="handleCurrentChange"
-          />
-        </div>
-      </div>
-    </div>
-    <RetailDetail v-if="isShowDetail" :list-item="queryItem" @backListFormDetail="backList" />
-    <RetailForm v-if="isShowForm" :list-item="queryItem" @backListFormDetail="backList" />
-    <RetailExamine v-if="isShowExamine" :list-item="queryItem" @backListFormDetail="backList" />
-    <RetailReturn v-if="isShowReturn" :list-item="queryItem" @backListFormDetail="backList" />
-    <EditDateDialog :is-show.sync="isShowEditDateDialog" :date-form.sync="dateForm" />
-    <ExamineDialog :isShow.sync="isShowExamineDialog" :examineForm.sync="examineForm" />
-  </div>
-  <!-- <template-page
+  <template-page
     ref="pageRef"
     :getList="getList"
+    :exportList="exportList"
     :operation="operation()"
     :optionsEvensGroup="optionsEvensGroup"
-    :exportList="exportList"
     :columnParsing="columnParsing"
-    :tableAttributes="tableAttributes"
-    :tableEvents="tableEvents"
   >
-  </template-page> -->
+    <Popu v-if="isShowDetail || isShowForm || isShowExamine || isShowReturn">
+      <RetailDetail v-if="isShowDetail" :list-item="queryItem" @backListFormDetail="backList" />
+      <RetailForm v-if="isShowForm" :list-item="queryItem" @backListFormDetail="backList" />
+      <RetailExamine v-if="isShowExamine" :list-item="queryItem" @backListFormDetail="backList" />
+      <RetailReturn v-if="isShowReturn" :list-item="queryItem" @backListFormDetail="backList" />
+      <EditDateDialog :is-show.sync="isShowEditDateDialog" :date-form.sync="dateForm" />
+      <ExamineDialog :isShow.sync="isShowExamineDialog" :examineForm.sync="examineForm" />
+    </Popu>
+  </template-page>
 </template>
 
 <script>
 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 add_callback_mixin from '@/components/template/add_callback_mixin.js'
+import Popu from '@/components/template/popu.vue'
 import {
   abandonData,
   closeData,
@@ -533,7 +31,9 @@ import {
   examineData,
   getList,
   submitCancel,
-  submitData
+  submitData,
+  getRetailListV2,
+  exportRetailListV2
 } from '@/api/supply/policy'
 import RetailDetail from './components/retail_detail'
 import RetailForm from './components/retail_form'
@@ -544,48 +44,57 @@ import ExamineDialog from '@/components/Common/examine-dialog'
 import { getSalesmanList, getCategoryList, getTypeList } from '@/api/common'
 import { getNoRebateWalletList } from '@/api/policy_list'
 
-let that
 export default {
-  mixins: [add_callback_mixin],
   components: {
+    TemplatePage,
+    Popu,
     RetailDetail,
     RetailForm,
     RetailExamine,
     RetailReturn,
     EditDateDialog,
-    ExamineDialog,
-    TemplatePage,
-    Popu
-  },
-  filters: {
-    statusFilter(val) {
-      const obj = that.statusList.find(o => o.value == val)
-      return obj ? obj.label : ''
-    }
+    ExamineDialog
   },
+  mixins: [import_mixin, add_callback_mixin],
   data() {
     return {
+      visible: false,
       // 事件组合
       optionsEvensGroup: [
         [
           [
             {
               name: '新增',
-              click: this.addOn(() => {})
+              click: this.addOn(() => {
+                this.toForm()
+              }),
+              isRole: this.$checkBtnRole('add', this.$route.meta.roles)
             }
           ]
         ],
-
         [
           [
             {
               name: '批量审批',
-              click: async () => {}
+              click: this.addOn(() => {
+                this.batchExamine()
+              }),
+              isRole: this.$checkBtnRole('examine', this.$route.meta.roles)
             }
           ]
         ]
       ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
 
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
       currentPage: 1, // 当前页码
       pageSize: 10, // 每页数量
       listTotal: 0, // 列表总数
@@ -631,7 +140,7 @@ export default {
       },
       salesmanList: [],
       selectRow: [],
-      selectData: [],
+      recordSelected: [],
       isShowExamineDialog: false,
       examineForm: {
         status: 'OK',
@@ -643,31 +152,8 @@ export default {
       typeList: []
     }
   },
-  computed: {
-    exParams() {
-      return {
-        examineStatus: this.screenForm.status,
-        id: this.screenForm.orderNum,
-        policyCode: this.screenForm.policyCode,
-        policyRemark: this.screenForm.policyRemark,
-        customer: this.screenForm.jxsName,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        createBy: this.screenForm.zbMan,
-        status: true,
-        examineBy: this.screenForm.shMan,
-        k3ServiceId: this.screenForm.k3ServiceId,
-        serviceId: this.screenForm.serviceId,
-        isDirectTransfer: this.screenForm.isDirectTransfer,
-        specification: this.screenForm.specification,
-        k3CategoryNumber: this.screenForm.categoryNumber,
-        type: 2 // 1:普通零售单,2:政策零售单
-      }
-    }
-  },
-
   watch: {
-    selectData(data) {
+    recordSelected(data) {
       // 监听选中状态
       this.selectRow = []
       if (data.length > 0) {
@@ -677,22 +163,14 @@ export default {
       }
     }
   },
-
-  beforeCreate() {
-    that = this
-  },
-
-  created() {
-    this.getList()
-    this.getSalesmanList()
-    this.getCategoryList()
-  },
-
   methods: {
     // 列表请求函数
-    // getList: levelList,
+    getList(...p) {
+      this.recordSelected = []
+      return getRetailListV2(...p)
+    },
     // 列表导出函数
-    // exportList: exportLevelList,
+    exportList: exportRetailListV2,
     // 表格列解析渲染数据更改
     columnParsing(item, defaultData) {
       return defaultData
@@ -705,9 +183,72 @@ export default {
       return (h, { row, index, column }) => {
         return (
           <div class="operation-btns">
-            <el-button size="mini" type="text" onClick={async () => {}}>
+            {row.examineStatus === 'SAVE' ? (
+              <el-popconfirm style="margin-left: 10px" title="确定提审?" onOnConfirm={() => this.handleSubmit(row.id)}>
+                <el-button slot="reference" type="text">
+                  提审
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+            {row.examineStatus == 'WAIT' && this.$checkBtnRole('examine', this.$route.meta.roles) ? (
+              <el-button style="margin-left: 10px" type="text" onClick={() => this.toExamine(row)}>
+                审核
+              </el-button>
+            ) : null}
+            {this.$checkBtnRole('del', this.$route.meta.roles) && row.examineStatus === 'SAVE' ? (
+              <el-popconfirm
+                style="margin-left: 10px"
+                title="确定删除吗?"
+                onOnConfirm={() => this.handleDelete(row.id)}
+              >
+                <el-button slot="reference" type="text">
+                  删除
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+            {row.examineStatus === 'SAVE' && this.$checkBtnRole('edit', this.$route.meta.roles) ? (
+              <el-button style="margin-left: 10px" type="text" onClick="toForm(row)">
+                编辑
+              </el-button>
+            ) : null}
+            {this.$checkBtnRole('examine', this.$route.meta.roles) && row.examineStatus === 'OK' ? (
+              <el-popconfirm
+                style="margin-left: 10px"
+                title="确定弃审吗?"
+                onOnConfirm={() => this.handleAbandon(row.id)}
+              >
+                <el-button slot="reference" type="text">
+                  弃审
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+            {row.examineStatus == 'WAIT' && this.$checkBtnRole('apply', this.$route.meta.roles) ? (
+              <el-popconfirm style="margin-left: 10px" title="确定撤回?" onOnConfirm={() => this.handleCancel(row.id)}>
+                <el-button slot="reference" type="text">
+                  撤回
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+            <el-button style="margin-left: 10px" type="text" onClick={() => this.toDetail(row)}>
               详情
             </el-button>
+
+            {row.examineStatus === 'OK' && this.$checkBtnRole('examine', this.$route.meta.roles) ? (
+              <el-button style="margin-left: 10px" type="text" onClick={() => this.toReturn(row)}>
+                退订
+              </el-button>
+            ) : null}
+            {row.examineStatus === 'SAVE' && this.$checkBtnRole('examine', this.$route.meta.roles) ? (
+              <el-popconfirm
+                style="margin-left: 10px"
+                title="确定关闭吗?"
+                onOnConfirm={() => this.handleClose(row.id)}
+              >
+                <el-button slot="reference" type="text">
+                  关闭
+                </el-button>
+              </el-popconfirm>
+            ) : null}
           </div>
         )
       }
@@ -736,7 +277,7 @@ export default {
       })
     },
     handleSelectionAllChange(e) {
-      this.selectData = e
+      this.recordSelected = e
       if (e) {
         this.selections = e
       } else {
@@ -752,7 +293,7 @@ export default {
 
     // 打开 批量审批
     batchExamine() {
-      if (this.selectData.length) {
+      if (this.recordSelected.length) {
         this.isShowExamineDialog = true
         return
       }
@@ -760,7 +301,7 @@ export default {
     },
     // 提交 批量审批
     submitExamineForm() {
-      let ids = this.selectData.map(item => {
+      let ids = this.recordSelected.map(item => {
         return item.id
       })
       ids = [...new Set(ids)]
@@ -772,7 +313,7 @@ export default {
       }).then(res => {
         this.isShowExamineDialog = false
         this.$successMsg('修改成功')
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
     // 查询按钮权限
@@ -786,69 +327,34 @@ export default {
     handleDelete(id) {
       deleteList({ id }).then(res => {
         this.$successMsg('删除成功')
-        this.getList()
-      })
-    },
-    // 查询列表
-    getList() {
-      this.listLoading = true
-      const params = {
-        pageNum: this.currentPage,
-        pageSize: this.pageSize,
-        examineStatus: this.screenForm.status,
-        id: this.screenForm.orderNum,
-        policyCode: this.screenForm.policyCode,
-        policyRemark: this.screenForm.policyRemark,
-        customer: this.screenForm.jxsName,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        createBy: this.screenForm.zbMan,
-        status: true,
-        examineBy: this.screenForm.shMan,
-        k3ServiceId: this.screenForm.k3ServiceId,
-        serviceId: this.screenForm.serviceId,
-        isDirectTransfer: this.screenForm.isDirectTransfer,
-        specification: this.screenForm.specification,
-        k3CategoryNumber: this.screenForm.categoryNumber,
-        saleTypeId: this.screenForm.saleTypeId,
-        customerWalletId: this.screenForm.customerWalletId,
-        type: 2 // 1:普通零售单,2:政策零售单
-      }
-      getList(params).then(res => {
-        res.data.records.forEach(item => {
-          item.sums1 = ['qty', 'directTransferQty', 'hasSendQty', 'refundableQty', 'payRebateAmount']
-          item.sums2 = ['price', 'payAmount', 'rebateAmount', 'payRebateAmount', 'totalDiscAmount']
-        })
-        this.dataList = res.data.records
-        this.listTotal = res.data.total
-        this.listLoading = false
+        this.$refs.pageRef.refreshList()
       })
     },
 
     // 提交筛选表单
     submitScreenForm() {
       this.currentPage = 1
-      this.getList()
+      this.$refs.pageRef.refreshList()
     },
 
     // 重置筛选表单
     resetScreenForm() {
       this.$refs.screenForm.resetFields()
       this.currentPage = 1
-      this.getList()
+      this.$refs.pageRef.refreshList()
     },
 
     // 更改每页数量
     handleSizeChange(val) {
       this.pageSize = val
       this.currentPage = 1
-      this.getList()
+      this.$refs.pageRef.refreshList()
     },
 
     // 更改当前页
     handleCurrentChange(val) {
       this.currentPage = val
-      this.getList()
+      this.$refs.pageRef.refreshList()
     },
 
     // 进入表单
@@ -879,22 +385,26 @@ export default {
     handleAbandon(id) {
       abandonData({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
     backList() {
       this.queryItem = {}
-      this.isShowDetail = false
-      this.isShowForm = false
-      this.isShowExamine = false
-      this.isShowReturn = false
+
+      this.addOff(() => {
+        this.isShowDetail = false
+        this.isShowForm = false
+        this.isShowExamine = false
+        this.isShowReturn = false
+      })()
+      this.$refs.pageRef.refreshList()
     },
 
     // 关闭
     handleClose(id) {
       closeData({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
 
@@ -902,14 +412,14 @@ export default {
     handleSubmit(id) {
       submitData({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
     // 撤回
     handleCancel(id) {
       submitCancel({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
     // 打开 修改订单日期
@@ -926,7 +436,7 @@ export default {
         theTime: this.dateForm.date + ' 00:00:00'
       }).then(res => {
         this.isShowEditDateDialog = false
-        this.getList()
+        this.$refs.pageRef.refreshList()
         this.$successMsg('修改成功')
       })
     },

+ 177 - 646
src/views/supply/retail/retail_list.vue

@@ -1,561 +1,39 @@
 <template>
-  <div class="app-container">
-    <div v-show="!isShowDetail && !isShowForm && !isShowExamine && !isShowReturn">
-      <!-- 筛选条件 -->
-      <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="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-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="产品名称" prop="goodsName">
-                    <el-input v-model="screenForm.goodsName" placeholder="请输入产品名称"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="规格型号" prop="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="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="date" size="mini">
-                    <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="isDirectTransfer">
-                    <el-select v-model="screenForm.isDirectTransfer" placeholder="请选择是否直调" size="mini">
-                      <el-option label="是" :value="true"></el-option>
-                      <el-option label="否" :value="false"></el-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="制表人" prop="zbMan">
-                    <el-input v-model="screenForm.zbMan" placeholder="请输入制表人"></el-input>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="审核人" prop="shMan">
-                    <el-input v-model="screenForm.shMan" placeholder="请输入审核人"></el-input>
-                  </el-form-item>
-                </el-col>
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :exportList="exportList"
+    :operation="operation()"
+    :optionsEvensGroup="optionsEvensGroup"
+    :columnParsing="columnParsing"
+  >
+    <Popu v-if="isShowDetail || isShowForm || isShowExamine || isShowReturn">
+      <EditDateDialog :isShow.sync="isShowEditDateDialog" :dateForm.sync="dateForm" />
 
-                <!-- <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="业务员" prop="salesMan">
-                    <el-select v-model="screenForm.salesMan" placeholder="选择业务员" clearable filterable style="width: 100%">
-                      <el-option
-                        v-for="item in salesmanList"
-                        :key="item.adminUserId"
-                        :label="item.nickName"
-                        :value="item.adminUserId">
-                      </el-option>
-                    </el-select>
-                  </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="mini"
-                      clearable
-                      filterable
-                      style="width: 100%"
-                    >
-                      <el-option
-                        v-for="item in salesmanList"
-                        :key="item.adminUserId"
-                        :label="item.nickName"
-                        :value="item.adminUserId"
-                      >
-                      </el-option>
-                    </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-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="钱包" prop="customerWalletId">
-                    <el-select
-                      v-model="screenForm.customerWalletId"
-                      placeholder="选择钱包"
-                      clearable
-                      filterable
-                      style="width: 100%"
-                    >
-                      <el-option v-for="item in NoRebateWalletList" :key="item.id" :label="item.name" :value="item.id">
-                      </el-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-                <el-col :xs="24" :sm="12" :lg="6">
-                  <el-form-item label="销售类型" prop="saleTypeId">
-                    <el-select
-                      v-model="screenForm.saleTypeId"
-                      placeholder="选择销售类型"
-                      clearable
-                      filterable
-                      style="width: 100%"
-                    >
-                      <el-option v-for="item in typeList" :key="item.id" :label="item.saleName" :value="item.id">
-                      </el-option>
-                    </el-select>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-            </el-form>
-          </template>
-        </Collapse>
-      </div>
-
-      <div class="mymain-container">
-        <div class="btn-group clearfix">
-          <div class="fl">
-            <el-button
-              size="mini"
-              type="primary"
-              icon="el-icon-plus"
-              @click="toForm()"
-              v-if="$checkBtnRole('add', $route.meta.roles)"
-              >新增</el-button
-            >
-          </div>
-          <div class="fr">
-            <ExportButton :exUrl="'retail/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 align="left" label="提货进度" min-width="120" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <el-progress :text-inside="true" :stroke-width="26" :percentage="((scope.row.hasSendQty * 100) / (scope.row.totalQty * 100)) || 0"></el-progress>
-              </template>
-            </el-table-column> -->
-            <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 align="left" label="开票状态" prop="isInvoicing" min-width="100" show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.isInvoicing ? '已开票' : '未开票' }}
-              </template>
-            </el-table-column>
-            <el-table-column align="left" label="订单号" prop="id" min-width="140" 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="theTime" min-width="120" show-overflow-tooltip>
-              <template slot-scope="scope">
-                <div>
-                  <span>{{ scope.row.theTime | dateToDayFilter }}</span>
-                  <el-button
-                    type="text"
-                    icon="el-icon-edit"
-                    style="padding: 0; margin-left: 4px"
-                    v-if="$checkBtnRole('date', $route.meta.roles)"
-                    @click="editDate(scope.row)"
-                  ></el-button>
-                </div>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="销售类型"
-              prop="saleTypeName"
-              min-width="100"
-              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="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="left" label="文件编号" prop="fileNo" min-width="100" show-overflow-tooltip />
-            <el-table-column
-              align="left"
-              label="是否直调"
-              prop="isDirectTransfer"
-              min-width="100"
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                {{ scope.row.isDirectTransfer ? '是' : '否' }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="right"
-              label="总数量"
-              prop="qty"
-              min-width="100"
-              sortable
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="right"
-              label="直调数量"
-              prop="directTransferQty"
-              min-width="110"
-              sortable
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="right"
-              label="出库数量"
-              prop="hasSendQty"
-              min-width="110"
-              sortable
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="right"
-              label="可退数量"
-              prop="refundableQty"
-              min-width="110"
-              sortable
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column align="right" label="单价" prop="price" min-width="100" sortable show-overflow-tooltip>
-              <template slot-scope="scope">
-                {{ scope.row.price | numToFixed }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="right"
-              label="订单金额"
-              prop="totalAmount"
-              min-width="110"
-              sortable
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                {{ scope.row.totalAmount | numToFixed }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="right"
-              label="实付金额"
-              prop="payAmount"
-              min-width="110"
-              sortable
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                {{ scope.row.payAmount | numToFixed }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="返利类型"
-              prop="customerWalletName2"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="right"
-              label="返利金额"
-              prop="rebateAmount"
-              min-width="110"
-              sortable
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                <div>{{ scope.row.rebateAmount | numToFixed }}</div>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="right"
-              label="实际返利金额"
-              prop="payRebateAmount"
-              min-width="130"
-              sortable
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                <div>{{ scope.row.payRebateAmount | numToFixed }}</div>
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="right"
-              label="格力折扣"
-              prop="totalDiscAmount"
-              min-width="110"
-              sortable
-              show-overflow-tooltip
-            >
-              <template slot-scope="scope">
-                {{ scope.row.totalDiscAmount | numToFixed }}
-              </template>
-            </el-table-column>
-            <el-table-column
-              align="left"
-              label="备注"
-              prop="itemRemark"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="表头备注"
-              prop="remark"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="表头业务员"
-              prop="k3ServiceName"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="表体业务员"
-              prop="serviceName"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="制表人"
-              prop="createName"
-              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="examineName"
-              min-width="100"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column
-              align="left"
-              label="审核日期"
-              prop="examineTime"
-              min-width="160"
-              show-overflow-tooltip
-            ></el-table-column>
-            <el-table-column align="center" label="操作" width="220" fixed="right">
-              <template slot-scope="scope">
-                <el-popconfirm
-                  style="margin-right: 10px"
-                  title="确定申请吗?"
-                  @onConfirm="handleSubmit(scope.row.id)"
-                  v-if="$checkBtnRole('apply', $route.meta.roles) && scope.row.examineStatus === 'SAVE'"
-                >
-                  <el-button slot="reference" type="text">申请</el-button>
-                </el-popconfirm>
-                <el-popconfirm
-                  style="margin-right: 10px"
-                  title="确定撤回吗?"
-                  @onConfirm="handleWithdraw(scope.row.id)"
-                  v-if="$checkBtnRole('apply', $route.meta.roles) && scope.row.examineStatus === 'WAIT'"
-                >
-                  <el-button slot="reference" type="text">撤回</el-button>
-                </el-popconfirm>
-                <el-popconfirm
-                  style="margin-right: 10px"
-                  title="确定弃审吗?"
-                  @onConfirm="handleAbandon(scope.row.id)"
-                  v-if="$checkBtnRole('examine', $route.meta.roles) && scope.row.examineStatus === 'OK'"
-                >
-                  <el-button slot="reference" type="text">弃审</el-button>
-                </el-popconfirm>
-                <el-popconfirm
-                  style="margin-right: 10px"
-                  title="确定关闭吗?"
-                  @onConfirm="handleClose(scope.row.id)"
-                  v-if="
-                    $checkBtnRole('examine', $route.meta.roles) &&
-                    !scope.row.closeTime &&
-                    (scope.row.examineStatus === 'SAVE' || scope.row.examineStatus === 'WAIT')
-                  "
-                >
-                  <el-button slot="reference" type="text">关闭</el-button>
-                </el-popconfirm>
-                <el-popconfirm
-                  style="margin-right: 10px"
-                  title="确定删除吗?"
-                  @onConfirm="handleDelete(scope.row.id)"
-                  v-if="$checkBtnRole('del', $route.meta.roles) && scope.row.examineStatus === 'SAVE'"
-                >
-                  <el-button slot="reference" type="text" style="color: #f56c6c">删除</el-button>
-                </el-popconfirm>
-                <el-button
-                  type="text"
-                  @click="toExamine(scope.row)"
-                  v-if="$checkBtnRole('examine', $route.meta.roles) && scope.row.examineStatus === 'WAIT'"
-                >
-                  审批
-                </el-button>
-                <el-button
-                  type="text"
-                  @click="toForm(scope.row)"
-                  v-if="$checkBtnRole('edit', $route.meta.roles) && scope.row.examineStatus === 'SAVE'"
-                >
-                  编辑
-                </el-button>
-                <el-button
-                  type="text"
-                  @click="toReturn(scope.row)"
-                  v-if="$checkBtnRole('examine', $route.meta.roles) && scope.row.examineStatus === 'OK'"
-                >
-                  退订
-                </el-button>
-                <el-button type="text" @click="toDetail(scope.row)"> 详情 </el-button>
-              </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>
-
-    <EditDateDialog :isShow.sync="isShowEditDateDialog" :dateForm.sync="dateForm" />
-
-    <RetailDetail :listItem="queryItem" v-if="isShowDetail" @backListFormDetail="backList" />
-    <RetailForm :listItem="queryItem" v-if="isShowForm" @backListFormDetail="backList" />
-    <RetailExamine :listItem="queryItem" v-if="isShowExamine" @backListFormDetail="backList" />
-    <RetailReturn :listItem="queryItem" v-if="isShowReturn" @backListFormDetail="backList" />
-  </div>
+      <RetailDetail :listItem="queryItem" v-if="isShowDetail" @backListFormDetail="backList" />
+      <RetailForm :listItem="queryItem" v-if="isShowForm" @backListFormDetail="backList" />
+      <RetailExamine :listItem="queryItem" v-if="isShowExamine" @backListFormDetail="backList" />
+      <RetailReturn :listItem="queryItem" v-if="isShowReturn" @backListFormDetail="backList" />
+    </Popu>
+  </template-page>
 </template>
 
 <script>
-import { getList, closeData, submitData, editData, abandonData, deleteData, withdrawData } from '@/api/supply/retail'
+import TemplatePage from '@/components/template/template-page-1.vue'
+import import_mixin from '@/components/template/import_mixin.js'
+import add_callback_mixin from '@/components/template/add_callback_mixin.js'
+import Popu from '@/components/template/popu.vue'
+import {
+  getList,
+  closeData,
+  submitData,
+  editData,
+  abandonData,
+  deleteData,
+  withdrawData,
+  getRetaillListV2,
+  exportRetaillListV2
+} from '@/api/supply/retail'
 import { getSalesmanList, getTypeList } from '@/api/common'
 import RetailDetail from '@/views/supply/retail/components/retail_detail'
 import RetailForm from '@/views/supply/retail/components/retail_form'
@@ -563,24 +41,37 @@ import RetailExamine from '@/views/supply/retail/components/retail_examine'
 import RetailReturn from '@/views/supply/retail/components/retail_return'
 import EditDateDialog from '@/components/Common/edit-date-dialog'
 import { getNoRebateWalletList } from '@/api/policy_list'
-
-let that
 export default {
-  components: {
-    RetailDetail,
-    RetailForm,
-    RetailExamine,
-    RetailReturn,
-    EditDateDialog
-  },
-  filters: {
-    statusFilter(val) {
-      let obj = that.statusList.find(o => o.value == val)
-      return obj ? obj.label : ''
-    }
-  },
+  components: { TemplatePage, Popu, RetailDetail, RetailForm, RetailExamine, RetailReturn, EditDateDialog },
+  mixins: [import_mixin, add_callback_mixin],
   data() {
     return {
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+        [
+          [
+            {
+              name: '新增',
+              click: this.addOn(() => {
+                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, // 列表总数
@@ -625,38 +116,108 @@ export default {
       }
     }
   },
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getRetaillListV2(...p)
+    },
+    // 列表导出函数
+    exportList: exportRetaillListV2,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            {this.$checkBtnRole('apply', this.$route.meta.roles) && row.examineStatus === 'SAVE' ? (
+              <el-popconfirm
+                style="margin-right: 10px"
+                title="确定申请吗?"
+                onOnConfirm={() => this.handleSubmit(row.id)}
+              >
+                <el-button slot="reference" type="text">
+                  申请
+                </el-button>
+              </el-popconfirm>
+            ) : null}
 
-  computed: {
-    exParams() {
-      return {
-        examineStatus: this.screenForm.status,
-        id: this.screenForm.orderNum,
-        materialName: this.screenForm.goodsName,
-        specification: this.screenForm.model,
-        customer: this.screenForm.jxsName,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        createBy: this.screenForm.zbMan,
-        examineBy: this.screenForm.shMan,
-        isDirectTransfer: this.screenForm.isDirectTransfer,
-
-        k3ServiceId: this.screenForm.k3ServiceId,
-        serviceId: this.screenForm.serviceId,
-        type: 1 // 1:普通零售单,2:政策零售单
+            {this.$checkBtnRole('apply', this.$route.meta.roles) && row.examineStatus === 'WAIT' ? (
+              <el-popconfirm
+                style="margin-right: 10px"
+                title="确定撤回吗?"
+                onOnConfirm={() => this.handleWithdraw(row.id)}
+              >
+                <el-button slot="reference" type="text">
+                  撤回
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+            {this.$checkBtnRole('examine', this.$route.meta.roles) && row.examineStatus === 'OK' ? (
+              <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('examine', this.$route.meta.roles) &&
+            !row.closeTime &&
+            (row.examineStatus === 'SAVE' || row.examineStatus === 'WAIT') ? (
+              <el-popconfirm
+                style="margin-right: 10px"
+                title="确定关闭吗?"
+                onOnConfirm={() => this.handleClose(row.id)}
+              >
+                <el-button slot="reference" type="text">
+                  关闭
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+            {this.$checkBtnRole('del', this.$route.meta.roles) && row.examineStatus === 'SAVE' ? (
+              <el-popconfirm
+                style="margin-right: 10px"
+                title="确定删除吗?"
+                onOnConfirm={() => this.handleDelete(row.id)}
+              >
+                <el-button slot="reference" type="text" style="color: #f56c6c">
+                  删除
+                </el-button>
+              </el-popconfirm>
+            ) : null}
+            {this.$checkBtnRole('examine', this.$route.meta.roles) && row.examineStatus === 'WAIT' ? (
+              <el-button type="text" onClick={() => this.toExamine(row)}>
+                审批
+              </el-button>
+            ) : null}
+            {this.$checkBtnRole('edit', this.$route.meta.roles) && row.examineStatus === 'SAVE' ? (
+              <el-button type="text" onClick={() => toForm(row)}>
+                编辑
+              </el-button>
+            ) : null}
+            {this.$checkBtnRole('examine', this.$route.meta.roles) && row.examineStatus === 'OK' ? (
+              <el-button type="text" onClick={() => this.toReturn(row)}>
+                退订
+              </el-button>
+            ) : null}
+            <el-button type="text" onClick={() => this.toDetail(row)}>
+              {' '}
+              详情{' '}
+            </el-button>
+          </div>
+        )
       }
-    }
-  },
-
-  beforeCreate() {
-    that = this
-  },
-
-  created() {
-    this.getSalesmanList()
-    this.getList()
-  },
+    },
 
-  methods: {
     // 获取业务员列表
     getSalesmanList() {
       getSalesmanList({
@@ -680,64 +241,30 @@ export default {
       })
     },
 
-    // 查询列表
-    getList() {
-      this.listLoading = true
-
-      let params = {
-        pageNum: this.currentPage,
-        pageSize: this.pageSize,
-        examineStatus: this.screenForm.status,
-        id: this.screenForm.orderNum,
-        materialName: this.screenForm.goodsName,
-        specification: this.screenForm.model,
-        customer: this.screenForm.jxsName,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        createBy: this.screenForm.zbMan,
-        examineBy: this.screenForm.shMan,
-        isDirectTransfer: this.screenForm.isDirectTransfer,
-        k3ServiceId: this.screenForm.k3ServiceId,
-        serviceId: this.screenForm.serviceId,
-        saleTypeId: this.screenForm.saleTypeId,
-        customerWalletId: this.screenForm.customerWalletId,
-        type: 1 // 1:普通零售单,2:政策零售单
-      }
-      getList(params).then(res => {
-        res.data.records.forEach(item => {
-          item.sums1 = ['qty', 'directTransferQty', 'hasSendQty', 'refundableQty']
-          item.sums2 = ['price', 'totalAmount', 'payAmount', 'rebateAmount', 'payRebateAmount', 'totalDiscAmount']
-        })
-        this.dataList = res.data.records
-        this.listTotal = res.data.total
-        this.listLoading = false
-      })
-    },
-
     // 提交筛选表单
     submitScreenForm() {
       this.currentPage = 1
-      this.getList()
+      this.$refs.pageRef.refreshList()
     },
 
     // 重置筛选表单
     resetScreenForm() {
-        this.$refs.screenForm.resetFields()
+      this.$refs.screenForm.resetFields()
       this.currentPage = 1
-      this.getList()
+      this.$refs.pageRef.refreshList()
     },
 
     // 更改每页数量
     handleSizeChange(val) {
       this.pageSize = val
       this.currentPage = 1
-      this.getList()
+      this.$refs.pageRef.refreshList()
     },
 
     // 更改当前页
     handleCurrentChange(val) {
       this.currentPage = val
-      this.getList()
+      this.$refs.pageRef.refreshList()
     },
 
     // 进入表单
@@ -769,17 +296,20 @@ export default {
 
     backList() {
       this.queryItem = {}
-      this.isShowDetail = false
-      this.isShowForm = false
-      this.isShowExamine = false
-      this.isShowReturn = false
+      this.addOff(() => {
+        this.isShowDetail = false
+        this.isShowForm = false
+        this.isShowExamine = false
+        this.isShowReturn = false
+      })()
+      this.$refs.pageRef.refreshList()
     },
 
     // 关闭
     handleClose(id) {
       closeData({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
 
@@ -787,7 +317,7 @@ export default {
     handleDelete(id) {
       deleteData({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
 
@@ -795,7 +325,7 @@ export default {
     handleAbandon(id) {
       abandonData({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
 
@@ -803,7 +333,7 @@ export default {
     handleSubmit(id) {
       submitData({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
 
@@ -811,7 +341,7 @@ export default {
     handleWithdraw(id) {
       withdrawData({ id }).then(res => {
         this.$successMsg()
-        this.getList()
+        this.$refs.pageRef.refreshList()
       })
     },
 
@@ -829,7 +359,8 @@ export default {
         theTime: this.dateForm.date + ' 00:00:00'
       }).then(res => {
         this.isShowEditDateDialog = false
-        this.getList()
+        this.$refs.pageRef.refreshList()
+
         this.$successMsg('修改成功')
       })
     }

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