소스 검색

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

aXin-0810 2 년 전
부모
커밋
9d31171de4

+ 61 - 0
src/api/supply/purchase.js

@@ -13,6 +13,67 @@ export function exportPlanCustomerListV2(data, name) {
     name
   })
 }
+
+export function getPurchaseOutListV2(params) {
+  return request({
+    url: `/stock/orderOutIn/listPurchaseOrderOutV2?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+export function exportPurchaseOutListV2(data, name) {
+  return postBlob({
+    url: '/stock/orderOutIn/listPurchaseOrderOutV2/export',
+    data,
+    name
+  })
+}
+
+export function getOtherStockInListV2(params) {
+  return request({
+    url: `/stock/orderOutIn/listOtherStockInV2?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+export function exportOtherStockInListV2(data, name) {
+  return postBlob({
+    url: '/stock/orderOutIn/listOtherStockInV2/export',
+    data,
+    name
+  })
+}
+export function getListOtherStockOutV2(params) {
+  return request({
+    url: `/stock/orderOutIn/listOtherStockOutV2?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+export function exportListOtherStockOutV2(data, name) {
+  return postBlob({
+    url: '/stock/orderOutIn/listOtherStockOutV2/export',
+    data,
+    name
+  })
+}
+
+export function getPlanListV2(params) {
+  return request({
+    url: `/plan/listCustomerV2?moduleId=${params.moduleId}`,
+    method: 'post',
+    data: params
+  })
+}
+export function exportPlanListV2(data, name) {
+  return postBlob({
+    url: '/plan/listCustomerV2/export/export',
+    data,
+    name
+  })
+}
+
+
 // 获取采购单列表
 export function getPurchaseList(params) {
   return request({

+ 41 - 2
src/components/template/selectData.js

@@ -1,6 +1,6 @@
 import { getWarehouseList } from '@/api/supply/engin'
-import { getCategoryList } from '@/api/common'
-
+import { getCategoryList, getSalesmanList } from '@/api/common'
+import { getDealerList, getWalletCustomerList } from '@/api/basic_data/dealer'
 export default {
   // 仓库下拉数据
   STOCK() {
@@ -27,5 +27,44 @@ export default {
         })
         .catch(j)
     })
+  },
+  // 经销商列表
+  CUSTOMER() {
+    return new Promise((r, j) => {
+      getDealerList({
+        pageNum: 1,
+        pageSize: -1
+      })
+        .then(res => {
+          r({ data: res.data.records.map(item => ({ dictCode: item.id, dictValue: item.name })) })
+        })
+        .catch(j)
+    })
+  },
+  // 经销商钱包列表
+  WALLET() {
+    return new Promise((r, j) => {
+      getWalletCustomerList({
+        pageNum: 1,
+        pageSize: -1
+      })
+        .then(res => {
+          r({ data: res.data.map(item => ({ dictCode: item.customerId, dictValue: item.customerWalletName })) })
+        })
+        .catch(j)
+    })
+  },
+  // 业务员列表
+  SERVICE() {
+    return new Promise((r, j) => {
+      getSalesmanList({
+        pageNum: 1,
+        pageSize: -1
+      })
+        .then(res => {
+          r({ data: res.data.records.map(item => ({ dictCode: item.adminUserId, dictValue: item.nickName })) })
+        })
+        .catch(j)
+    })
   }
 }

+ 74 - 300
src/views/basic_data/stock/Issue_list.vue

@@ -1,323 +1,97 @@
 <template>
-  <!--  退料单-->
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <Collapse :screen-form="screenForm">
-        <template #right_btn>
-          <el-button size="mini" @click="resetScreenForm">清空</el-button>
-          <el-button size="mini" type="primary" @click="submitScreenForm">搜索</el-button>
-        </template>
-        <template #search>
-          <el-form ref="screenForm" :model="screenForm" label-width="70px" size="mini" label-position="left">
-            <el-row :gutter="20">
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="单据编号" prop="billNo">
-                  <el-input v-model="screenForm.billNo" placeholder="请输入单据编号" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="产品名称" prop="materialName">
-                  <el-input v-model="screenForm.materialName" placeholder="请输入产品名称" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="物料编码" prop="materialNumber">
-                  <el-input v-model="screenForm.materialNumber" 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"
-                    :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="company">-->
-              <!--              <el-input-->
-              <!--                v-model="screenForm.company"-->
-              <!--                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"
-                    multiple
-                    style="width: 100%"
-                    placeholder="请选择仓库"
-                    size="mini"
-                    filterable
-                    clearable
-                  >
-                    <el-option
-                      v-for="(item, index) in warehouseList"
-                      :key="index"
-                      :label="item.name"
-                      :value="item.id"
-                    />
-                  </el-select>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </el-form>
-        </template>
-      </Collapse>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <!--        <div class="fr">-->
-        <!--          <ExportButton-->
-        <!--            :ex-url="'admin/user/mch/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
-          show-summary
-          :summary-method="$getSummaries"
-        >
-          <el-table-column label="序号" align="left" width="50" type="index" show-overflow-tooltip></el-table-column>
-
-          <el-table-column align="left" label="单据编号" prop="billNo" min-width="130" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.billNo" />
-              <span>{{ scope.row.billNo }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="库存方向" prop="stockId" min-width="100" show-overflow-tooltip>
-            <template v-slot="scope">
-              {{ '普通' }}
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="退料日期" prop="fdate" min-width="120" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ scope.row.fdate | dateToDayFilter }}
-            </template>
-          </el-table-column>
-
-          <el-table-column align="left" label="单据状态" prop="fdDocumentStatus" min-width="120" show-overflow-tooltip>
-            <template v-slot="scope">
-              {{ scope.row.fdDocumentStatus === 'C' ? '已审核' : '' }}
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="入库类型" min-width="100" show-overflow-tooltip>
-            <template v-slot="scope">
-              {{ '其他入库' }}
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="产品编码" prop="materialOldNumber" min-width="200" 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="materialNumber" min-width="200" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.materialNumber" />
-              <span>{{ scope.row.materialNumber }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="产品名称" prop="materialName" min-width="200" 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="300" 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="unit" 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="stockName" min-width="100" show-overflow-tooltip>
-          </el-table-column>
-
-          <el-table-column align="center" label="操作" width="100" fixed="right">
-            <template slot-scope="scope">
-              <el-popconfirm title="弃审吗?" @onConfirm="handleUnapprove(scope.row.id, scope.row.billNo)">
-                <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]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        />
-      </div>
-    </div>
-  </div>
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :exportList="exportList"
+    :operation="operation()"
+    :optionsEvensGroup="optionsEvensGroup"
+    :columnParsing="columnParsing"
+  >
+   
+  </template-page>
 </template>
 
 <script>
-import { getOtherStockInList, setApprovalPurchaseOrderIn } from '@/api/supply/purchase'
+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 { getOtherStockInListV2, setApprovalPurchaseOrderIn, exportOtherStockInListV2 } from '@/api/supply/purchase'
 import { getWarehouseList } from '@/api/supply/apply'
-
 export default {
-  name: 'MaterialList',
+  components: { TemplatePage, Popu },
+  mixins: [import_mixin, add_callback_mixin],
   data() {
     return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: null, // 列表数据
-      listLoading: false, // 列表加载loading
-      screenForm: {
-        billNo: '',
-        correspondId: [],
-        endTime: '',
-        materialName: '',
-        date: [],
-        materialNumber: '',
-        materialOldNumber: '',
-        specification: '',
-        startTime: ''
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+        //  [
+        //     [
+        //       {
+        //         name: '导入',
+        //         render: this.importButton(importCustomerV2)
+        //       }
+        //     ]
+        //   ],
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
       },
-      isCollapse: true,
-      warehouseList: []
-    }
-  },
-  computed: {
-    exParams() {
-      return {
-        billNo: this.screenForm.billNo,
-        correspondId: this.screenForm.correspondId.join(','),
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        materialName: this.screenForm.materialName,
-        materialNumber: this.screenForm.materialNumber,
-        materialOldNumber: this.screenForm.materialOldNumber,
-        specification: this.screenForm.specification,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : ''
-      }
-    },
-    isShowDetail() {
-      // eslint-disable-next-line no-prototype-builtins
-      return this.queryItem.hasOwnProperty('id')
+      recordSelected: [],
+
+      detailsId: ''
     }
   },
-  created() {
-    this.getWarehouseList()
-    this.getList()
-  },
   methods: {
-    // 查询按钮权限
-    checkBtnRole(value) {
-      // let btnRole = this.$route.meta.roles;
-      // if(!btnRole) {return true}
-      // let index = btnRole.indexOf(value);
-      // return index >= 0;
-      return true
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getOtherStockInListV2(...p)
     },
-    // 获取仓库列表
-    getWarehouseList() {
-      getWarehouseList({
-        pageNum: 1,
-        pageSize: -1
-      }).then(res => {
-        this.warehouseList = res.data.records
-      })
+    // 列表导出函数
+    exportList: exportOtherStockInListV2,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
     },
-    handleUnapprove(id, billNo) {
-      setApprovalPurchaseOrderIn({ id, billNo }).then(res => {
-        this.$successMsg('弃审成功')
-        this.getList()
-      })
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
     },
-    // 查询列表
-    getList() {
-      this.listLoading = true
-
-      const params = {
-        pageNum: this.currentPage,
-        pageSize: this.pageSize,
-        billNo: this.screenForm.billNo,
-        correspondId: this.screenForm.correspondId.join(','),
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        materialName: this.screenForm.materialName,
-        materialNumber: this.screenForm.materialNumber,
-        materialOldNumber: this.screenForm.materialOldNumber,
-        specification: this.screenForm.specification,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : ''
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            <el-popconfirm title="弃审吗?" onOnConfirm={() => this.handleUnapprove(row.id, row.billNo)}>
+              <el-button slot="reference" type="text">
+                弃审
+              </el-button>
+            </el-popconfirm>
+          </div>
+        )
       }
-      getOtherStockInList(params).then(res => {
-        res.data.records.forEach(item => {
-          item.sums1 = ['auxUnitQty']
-          item.sums2 = ['taxPrice', 'amount', 'entryTaxAmount', 'allAmount']
-        })
-        this.dataList = res.data.records
-        this.listTotal = res.data.total
-        this.listLoading = false
-      })
-    },
-
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 重置筛选表单
-    resetScreenForm() {
-        this.$refs.screenForm.resetFields()
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val
-      this.currentPage = 1
-      this.getList()
     },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val
-      this.getList()
-    },
-
-    // 进入详情
-    toDetail(item) {
-      this.queryItem = item
+    handleClose() {
+      this.addOff(() => {
+        this.visible = false
+      })()
     },
-
-    backList() {
-      this.queryItem = {}
+    handleUnapprove(id, billNo) {
+      setApprovalPurchaseOrderIn({ id, billNo }).then(res => {
+        this.$successMsg('弃审成功')
+        this.$refs.pageRef.refreshList()
+      })
     }
   }
 }
 </script>
 
-<style scoped></style>
+<style lang="scss" scoped></style>

+ 73 - 265
src/views/basic_data/stock/material_list.vue

@@ -1,183 +1,51 @@
 <template>
-  <!--  退料单-->
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <Collapse :screen-form="screenForm">
-        <template #right_btn>
-          <el-button size="mini" @click="resetScreenForm">清空</el-button>
-          <el-button size="mini" type="primary" @click="submitScreenForm">搜索</el-button>
-        </template>
-        <template #search>
-          <el-form ref="screenForm" :model="screenForm" label-width="70px" size="mini" label-position="left">
-            <el-row :gutter="20">
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="单据编号" prop="billNo">
-                  <el-input v-model="screenForm.billNo" placeholder="请输入单据编号" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="产品名称" prop="materialName">
-                  <el-input v-model="screenForm.materialName" placeholder="请输入产品名称" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="物料编码" prop="materialNumber">
-                  <el-input v-model="screenForm.materialNumber" 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"
-: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="supplierName">
-                  <el-input v-model="screenForm.supplierName" 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"
-                    multiple
-                    style="width: 100%"
-                    placeholder="请选择仓库"
-                    size="mini"
-                    filterable
-                    clearable
-                  >
-                    <el-option
-                      v-for="(item, index) in warehouseList"
-                      :key="index"
-                      :label="item.name"
-                      :value="item.id"
-                    />
-                  </el-select>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </el-form>
-        </template>
-      </Collapse>
-    </div>
-    <div class="mymain-container">
-      <!--      <div class="btn-group clearfix">-->
-      <!--        <div class="fr">-->
-      <!--          <ExportButton-->
-      <!--            :ex-url="'admin/user/mch/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 label="序号" align="left" width="50" type="index" show-overflow-tooltip></el-table-column>
-
-          <el-table-column align="left" label="单据编号" prop="billNo" min-width="130" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.billNo" />
-              <span>{{ scope.row.billNo }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="退料日期" prop="fdate" min-width="150" show-overflow-tooltip>
-          </el-table-column>
-          <el-table-column align="left" label="供货商" prop="supplierName" min-width="200" show-overflow-tooltip />
-          <el-table-column align="left" label="单据状态" prop="fdDocumentStatus" min-width="120" show-overflow-tooltip>
-            <template v-slot="scope">
-              {{ scope.row.fdDocumentStatus === 'C' ? '已审核' : '' }}
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="产品编码" prop="materialOldNumber" min-width="200" 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="materialNumber" min-width="200" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.materialNumber" />
-              <span>{{ scope.row.materialNumber }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="产品名称" prop="materialName" min-width="200" 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="materialName" min-width="300" 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="unit" 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 align="right" label="仓库" prop="stockName" min-width="100" show-overflow-tooltip />
-          <!--          <el-table-column-->
-          <!--            align="right"-->
-          <!--            label="开票状态"-->
-          <!--            prop="taxPrice"-->
-          <!--            min-width="120"-->
-          <!--            show-overflow-tooltip-->
-          <!--          >-->
-          <!--            <template slot-scope="scope">-->
-          <!--              {{ scope.row.taxPrice | numToFixed }}-->
-          <!--            </template>-->
-          <!--          </el-table-column>-->
-          <el-table-column align="center" label="操作" width="100" fixed="right">
-            <template slot-scope="scope">
-              <el-popconfirm title="弃审吗?" @onConfirm="handleUnapprove(scope.row.id, scope.row.billNo)">
-                <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]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        />
-      </div>
-    </div>
-  </div>
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :exportList="exportList"
+    :operation="operation()"
+    :optionsEvensGroup="optionsEvensGroup"
+    :columnParsing="columnParsing"
+  >
+  </template-page>
 </template>
 
 <script>
-import { getPurchaseOutList, setApprovalPurchaseOrderOut } from '@/api/supply/purchase'
+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 { getPurchaseOutListV2, setApprovalPurchaseOrderOut, exportPurchaseOutListV2 } from '@/api/supply/purchase'
 import { getWarehouseList } from '@/api/supply/apply'
-
+import { thisExpression } from '@babel/types'
 export default {
-  name: 'MaterialList',
+  components: { TemplatePage, Popu },
+  mixins: [import_mixin, add_callback_mixin],
   data() {
     return {
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+        //  [
+        //     [
+        //       {
+        //         name: '导入',
+        //         render: this.importButton(importCustomerV2)
+        //       }
+        //     ]
+        //   ],
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: [],
       currentPage: 1, // 当前页码
       pageSize: 10, // 每页数量
       listTotal: 0, // 列表总数
@@ -199,37 +67,39 @@ export default {
       warehouseList: []
     }
   },
-  computed: {
-    exParams() {
-      return {
-        billNo: this.screenForm.billNo,
-        correspondId: this.screenForm.correspondId.join(','),
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        materialName: this.screenForm.materialName,
-        materialNumber: this.screenForm.materialNumber,
-        materialOldNumber: this.screenForm.materialOldNumber,
-        specification: this.screenForm.specification,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        supplierName: this.screenForm.supplierName
+  methods: {
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getPurchaseOutListV2(...p)
+    },
+    // 列表导出函数
+    exportList: exportPurchaseOutListV2,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
+    },
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
+    },
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            <el-popconfirm title="弃审吗?" onOnConfirm={() => this.handleUnapprove(row.id, row.billNo)}>
+              <el-button slot="reference" type="text">
+                弃审
+              </el-button>
+            </el-popconfirm>
+          </div>
+        )
       }
     },
-    isShowDetail() {
-      // eslint-disable-next-line no-prototype-builtins
-      return this.queryItem.hasOwnProperty('id')
-    }
-  },
-  created() {
-    this.getWarehouseList()
-    this.getList()
-  },
-  methods: {
-    // 查询按钮权限
-    checkBtnRole(value) {
-      // let btnRole = this.$route.meta.roles;
-      // if(!btnRole) {return true}
-      // let index = btnRole.indexOf(value);
-      // return index >= 0;
-      return true
+    handleClose() {
+      this.addOff(() => {
+        this.visible = false
+      })()
     },
     // 获取仓库列表
     getWarehouseList() {
@@ -243,73 +113,11 @@ export default {
     handleUnapprove(id, billNo) {
       setApprovalPurchaseOrderOut({ id, billNo }).then(res => {
         this.$successMsg('弃审成功')
-        this.getList()
-      })
-    },
-    // 查询列表
-    getList() {
-      this.listLoading = true
-
-      const params = {
-        pageNum: this.currentPage,
-        pageSize: this.pageSize,
-        billNo: this.screenForm.billNo,
-        correspondId: this.screenForm.correspondId.join(','),
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        materialName: this.screenForm.materialName,
-        materialNumber: this.screenForm.materialNumber,
-        materialOldNumber: this.screenForm.materialOldNumber,
-        specification: this.screenForm.specification,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : '',
-        supplierName: this.screenForm.supplierName
-      }
-      getPurchaseOutList(params).then(res => {
-        res.data.records.forEach(item => {
-          item.sums1 = ['auxUnitQty']
-          item.sums2 = ['taxPrice', 'amount', 'entryTaxAmount', 'allAmount']
-        })
-        this.dataList = res.data.records
-        this.listTotal = res.data.total
-        this.listLoading = false
+        this.$refs.pageRef.refreshList()
       })
-    },
-
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 重置筛选表单
-    resetScreenForm() {
-        this.$refs.screenForm.resetFields()
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val
-      this.getList()
-    },
-
-    // 进入详情
-    toDetail(item) {
-      this.queryItem = item
-    },
-
-    backList() {
-      this.queryItem = {}
     }
   }
 }
 </script>
 
-<style scoped></style>
+<style lang="scss" scoped></style>

+ 73 - 292
src/views/basic_data/stock/warehousing_list.vue

@@ -1,316 +1,97 @@
 <template>
-  <!--  退料单-->
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <Collapse :screen-form="screenForm">
-        <template #right_btn>
-          <el-button size="mini" @click="resetScreenForm">清空</el-button>
-          <el-button size="mini" type="primary" @click="submitScreenForm">搜索</el-button>
-        </template>
-        <template #search>
-          <el-form ref="screenForm" :model="screenForm" label-width="70px" size="mini" label-position="left">
-            <el-row :gutter="20">
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="单据编号" prop="billNo">
-                  <el-input v-model="screenForm.billNo" placeholder="请输入单据编号" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="产品名称" prop="materialName">
-                  <el-input v-model="screenForm.materialName" placeholder="请输入产品名称" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="物料编码" prop="materialNumber">
-                  <el-input v-model="screenForm.materialNumber" 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"
-: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="company">-->
-              <!--              <el-input-->
-              <!--                v-model="screenForm.company"-->
-              <!--                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"
-                    multiple
-                    style="width: 100%"
-                    placeholder="请选择仓库"
-                    size="mini"
-                    filterable
-                    clearable
-                  >
-                    <el-option
-                      v-for="(item, index) in warehouseList"
-                      :key="index"
-                      :label="item.name"
-                      :value="item.id"
-                    />
-                  </el-select>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </el-form>
-        </template>
-      </Collapse>
-    </div>
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <!--        <div class="fr">-->
-        <!--          <ExportButton-->
-        <!--            :ex-url="'admin/user/mch/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
-          show-summary
-          :summary-method="$getSummaries"
-        >
-          <el-table-column label="序号" align="left" width="50" type="index" show-overflow-tooltip></el-table-column>
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :exportList="exportList"
+    :operation="operation()"
+    :optionsEvensGroup="optionsEvensGroup"
+    :columnParsing="columnParsing"
+  >
 
-          <el-table-column align="left" label="库存方向" prop="billNo" min-width="120" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ '普通' }}
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="单据状态" prop="fdDocumentStatus" min-width="120" show-overflow-tooltip>
-            <template v-slot="scope">
-              {{ scope.row.fdDocumentStatus === 'C' ? '已审核' : '' }}
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="业务类型" prop="fdate" min-width="120" show-overflow-tooltip>
-            <template slot-scope="scope">
-              {{ '物料领用' }}
-            </template>
-          </el-table-column>
-
-          <el-table-column align="left" label="单据编号" prop="billNo" min-width="200" show-overflow-tooltip />
-          <el-table-column align="left" label="日期" prop="fdate" min-width="150" show-overflow-tooltip />
-          <el-table-column align="left" label="产品编码" prop="materialOldNumber" min-width="200" 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="materialNumber" min-width="200" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copy-text="scope.row.materialNumber" />
-              <span>{{ scope.row.materialNumber }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column align="left" label="产品名称" prop="materialOldNumber" min-width="200" 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="300" 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="unit" min-width="100" show-overflow-tooltip />
-          <el-table-column align="left" label="实发数量" prop="qty" min-width="100" show-overflow-tooltip />
-          <el-table-column align="left" label="发货仓库" prop="stockName" min-width="100" show-overflow-tooltip />
-          <!--          <el-table-column-->
-          <!--            align="left"-->
-          <!--            label="货主"-->
-          <!--            prop="uom"-->
-          <!--            min-width="100"-->
-          <!--            show-overflow-tooltip-->
-          <!--          />-->
-          <el-table-column align="center" label="操作" width="100" fixed="right">
-            <template slot-scope="scope">
-              <el-popconfirm title="弃审吗?" @onConfirm="handleUnapprove(scope.row.id, scope.row.billNo)">
-                <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]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        />
-      </div>
-    </div>
-  </div>
+  </template-page>
 </template>
 
 <script>
-import { getOtherStockOutList, setApprovalOtherStockOut } from '@/api/supply/purchase'
+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 { getListOtherStockOutV2, setApprovalPurchaseOrderIn, exportListOtherStockOutV2 } from '@/api/supply/purchase'
 import { getWarehouseList } from '@/api/supply/apply'
-
 export default {
-  name: 'MaterialList',
+  components: { TemplatePage, Popu },
+  mixins: [import_mixin, add_callback_mixin],
   data() {
     return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: null, // 列表数据
-      listLoading: false, // 列表加载loading
-      screenForm: {
-        billNo: '',
-        correspondId: [],
-        endTime: '',
-        date: [],
-        materialName: '',
-        materialNumber: '',
-        materialOldNumber: '',
-        specification: '',
-        startTime: ''
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [
+        //  [
+        //     [
+        //       {
+        //         name: '导入',
+        //         render: this.importButton(importCustomerV2)
+        //       }
+        //     ]
+        //   ],
+      ],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
+
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
       },
-      isCollapse: true,
-      warehouseList: []
-    }
-  },
-  computed: {
-    exParams() {
-      return {
-        billNo: this.screenForm.billNo,
-        correspondId: this.screenForm.correspondId.join(','),
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        materialName: this.screenForm.materialName,
-        materialNumber: this.screenForm.materialNumber,
-        materialOldNumber: this.screenForm.materialOldNumber,
-        specification: this.screenForm.specification,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : ''
-      }
-    },
-    isShowDetail() {
-      // eslint-disable-next-line no-prototype-builtins
-      return this.queryItem.hasOwnProperty('id')
+      recordSelected: [],
+
+      detailsId: ''
     }
   },
-  created() {
-    this.getWarehouseList()
-    this.getList()
-  },
   methods: {
-    // 查询按钮权限
-    checkBtnRole(value) {
-      // let btnRole = this.$route.meta.roles;
-      // if(!btnRole) {return true}
-      // let index = btnRole.indexOf(value);
-      // return index >= 0;
-      return true
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getListOtherStockOutV2(...p)
     },
-    // 获取仓库列表
-    getWarehouseList() {
-      getWarehouseList({
-        pageNum: 1,
-        pageSize: -1
-      }).then(res => {
-        this.warehouseList = res.data.records
-      })
+    // 列表导出函数
+    exportList: exportListOtherStockOutV2,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
     },
-    handleUnapprove(id, billNo) {
-      setApprovalOtherStockOut({ id, billNo }).then(res => {
-        this.$successMsg('弃审成功')
-        this.getList()
-      })
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
     },
-    // 查询列表
-    getList() {
-      this.listLoading = true
-
-      const params = {
-        pageNum: this.currentPage,
-        pageSize: this.pageSize,
-        billNo: this.screenForm.billNo,
-        correspondId: this.screenForm.correspondId.join(','),
-        endTime: this.screenForm.date ? this.screenForm.date[1] : '',
-        materialName: this.screenForm.materialName,
-        materialNumber: this.screenForm.materialNumber,
-        materialOldNumber: this.screenForm.materialOldNumber,
-        specification: this.screenForm.specification,
-        startTime: this.screenForm.date ? this.screenForm.date[0] : ''
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            <el-popconfirm title="弃审吗?" onOnConfirm={() => this.handleUnapprove(row.id, row.billNo)}>
+              <el-button slot="reference" type="text">
+                弃审
+              </el-button>
+            </el-popconfirm>
+          </div>
+        )
       }
-      getOtherStockOutList(params).then(res => {
-        res.data.records.forEach(item => {
-          item.sums1 = ['auxUnitQty']
-          item.sums2 = ['taxPrice', 'amount', 'entryTaxAmount', 'allAmount']
-        })
-        this.dataList = res.data.records
-        this.listTotal = res.data.total
-        this.listLoading = false
-      })
-    },
-
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 重置筛选表单
-    resetScreenForm() {
-        this.$refs.screenForm.resetFields()
-      this.currentPage = 1
-      this.getList()
-    },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val
-      this.currentPage = 1
-      this.getList()
     },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val
-      this.getList()
-    },
-
-    // 进入详情
-    toDetail(item) {
-      this.queryItem = item
+    handleClose() {
+      this.addOff(() => {
+        this.visible = false
+      })()
     },
-
-    backList() {
-      this.queryItem = {}
+    handleUnapprove(id, billNo) {
+      setApprovalPurchaseOrderIn({ id, billNo }).then(res => {
+        this.$successMsg('弃审成功')
+        this.$refs.pageRef.refreshList()
+      })
     }
   }
 }
 </script>
 
-<style scoped></style>
+<style lang="scss" scoped></style>

+ 62 - 253
src/views/supply/purchase/plan_list.vue

@@ -1,272 +1,81 @@
 <template>
-  <div class="app-container">
-    <!-- 筛选条件 -->
-    <div class="screen-container">
-      <Collapse :screen-form="screenForm">
-        <template #right_btn>
-          <el-button size="mini" @click="resetScreenForm">清空</el-button>
-          <el-button size="mini" type="primary" @click="submitScreenForm">搜索</el-button>
-        </template>
-        <template #search>
-          <el-form ref="screenForm" :model="screenForm" label-width="100px" size="mini" label-position="left">
-            <el-row :gutter="20">
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="采购计划单号" prop="orderNum">
-                  <el-input v-model="screenForm.orderNum" placeholder="请输入采购计划单号"></el-input>
-                </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-input>
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :lg="6">
-                <el-form-item label="产品编码" prop="chNum">
-                  <el-input v-model="screenForm.chNum" placeholder="请输入产品编码"></el-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="type">
-                  <el-select v-model="screenForm.type" placeholder="全部">
-                    <el-option label="全部" value=""></el-option>
-                    <el-option
-                      v-for="item in typeList"
-                      :key="item.dictCode"
-                      :label="item.dictValue"
-                      :value="item.dictCode"
-                    ></el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </el-form>
-        </template>
-      </Collapse>
-    </div>
-
-    <div class="mymain-container">
-      <div class="btn-group clearfix">
-        <div class="fr">
-          <ExportButton :exUrl="'admin/user/mch/export'" :exParams="exParams" />
-        </div>
-      </div>
-      <div class="table">
-        <el-table
-          v-loading="listLoading"
-          :data="dataList"
-          element-loading-text="Loading"
-          border
-          fit
-          highlight-current-row
-          stripe
-        >
-          <el-table-column
-            align="left"
-            label="单据号"
-            prop="billNo"
-            min-width="160"
-            show-overflow-tooltip
-          ></el-table-column>
-          <el-table-column
-            align="left"
-            label="销售类型"
-            prop="saleName"
-            min-width="160"
-            show-overflow-tooltip
-          ></el-table-column>
-          <el-table-column align="left" label="物料编码" prop="materialNumber" min-width="120" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <CopyButton :copyText="scope.row.materialNumber" />
-              <span>{{ scope.row.materialNumber }}</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="number"
-            min-width="100"
-            show-overflow-tooltip
-          ></el-table-column>
-          <el-table-column
-            align="right"
-            label="单价"
-            prop="price"
-            min-width="100"
-            show-overflow-tooltip
-          ></el-table-column>
-          <el-table-column
-            align="right"
-            label="金额"
-            prop="amount"
-            min-width="100"
-            show-overflow-tooltip
-          ></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>
-      </div>
-    </div>
-    <div class="pagination clearfix">
-      <div class="fr">
-        <el-pagination
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-          :current-page="currentPage"
-          :page-sizes="[10, 20, 30, 50]"
-          :page-size="10"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="listTotal"
-        >
-        </el-pagination>
-      </div>
-    </div>
-  </div>
+  <template-page
+    ref="pageRef"
+    :getList="getList"
+    :exportList="exportList"
+    :operation="operation()"
+    :optionsEvensGroup="optionsEvensGroup"
+    :columnParsing="columnParsing"
+  >
+  </template-page>
 </template>
 
 <script>
-import { getPlanList } from '@/api/supply/purchase'
+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 { getPlanListV2, exportPlanListV2 } from '@/api/supply/purchase'
 import { getDictList } from '@/api/common'
-
 export default {
-  filters: {
-    statusFilter(val) {
-      const MAP = {
-        0: '待采购',
-        1: '已采购'
-      }
-      return MAP[val]
-    }
-  },
+  components: { TemplatePage, Popu },
+  mixins: [import_mixin, add_callback_mixin],
   data() {
     return {
-      currentPage: 1, // 当前页码
-      pageSize: 10, // 每页数量
-      listTotal: 0, // 列表总数
-      dataList: null, // 列表数据
-      listLoading: false, // 列表加载loading
-      screenForm: {
-        // 筛选表单数据
-        orderNum: '',
-        chName: '',
-        chNum: '',
-        model: '',
-        type: ''
-      },
-      isCollapse: true,
-      typeList: []
-    }
-  },
+      visible: false,
+      // 事件组合
+      optionsEvensGroup: [],
+      // 表格属性
+      tableAttributes: {
+        // 启用勾选列
+        selectColumn: true
+      }, // 关闭新增弹窗
 
-  computed: {
-    exParams() {
-      return {
-        billNo: this.screenForm.orderNum,
-        materialName: this.screenForm.chName,
-        materialNumber: this.screenForm.chNum,
-        specification: this.screenForm.model,
-        materialType: this.screenForm.type
-      }
+      // 表格事件
+      tableEvents: {
+        'selection-change': this.selectionChange
+      },
+      recordSelected: []
     }
   },
-
-  created() {
-    this.getDictList()
-    this.getList()
-  },
-
   methods: {
-    // 查询按钮权限
-    checkBtnRole(value) {
-      // let btnRole = this.$route.meta.roles;
-      // if(!btnRole) {return true}
-      // let index = btnRole.indexOf(value);
-      // return index >= 0;
-      return true
-    },
-
-    getDictList() {
-      getDictList({ sysDictEnum: 'PRODUCT_TYPE' }).then(res => {
-        this.typeList = res.data
-      })
-    },
-
-    // 查询列表
-    getList() {
-      this.listLoading = true
-
-      let params = {
-        pageNum: this.currentPage,
-        pageSize: this.pageSize,
-        billNo: this.screenForm.orderNum,
-        materialName: this.screenForm.chName,
-        materialNumber: this.screenForm.chNum,
-        specification: this.screenForm.model,
-        materialType: this.screenForm.type
-      }
-      getPlanList(params).then(res => {
-        this.dataList = res.data.records
-        this.listTotal = res.data.total
-        this.listLoading = false
-      })
+    // 列表请求函数
+    getList(...p) {
+      this.recordSelected = []
+      return getPlanListV2(...p)
     },
-
-    // 提交筛选表单
-    submitScreenForm() {
-      this.currentPage = 1
-      this.getList()
+    // 列表导出函数
+    exportList: exportPlanListV2,
+    // 表格列解析渲染数据更改
+    columnParsing(item, defaultData) {
+      return defaultData
     },
-
-    // 重置筛选表单
-    resetScreenForm() {
-        this.$refs.screenForm.resetFields()
-      this.currentPage = 1
-      this.getList()
+    // 监听勾选变化
+    selectionChange(data) {
+      this.recordSelected = data
     },
-
-    // 更改每页数量
-    handleSizeChange(val) {
-      this.pageSize = val
-      this.currentPage = 1
-      this.getList()
+    operation() {
+      return (h, { row, index, column }) => {
+        return (
+          <div class="operation-btns">
+            {/* <el-button
+              size="mini"
+              type="text"
+              onClick={ () => {
+                this.visible = true
+                this.detailsId = row.id
+              }}
+            >
+              查看
+            </el-button> */}
+          </div>
+        )
+      }
     },
-
-    // 更改当前页
-    handleCurrentChange(val) {
-      this.currentPage = val
-      this.getList()
+    handleClose() {
+      this.addOff(() => {
+        this.visible = false
+      })()
     }
   }
 }