Procházet zdrojové kódy

采购入库单打印

yusheng před 1 rokem
rodič
revize
523975c7cc

+ 67 - 8
src/BIZComponents/procedure/taskinstanceDialog.vue

@@ -72,18 +72,29 @@
       :columns="columns"
       :datasource="datasource"
       @cell-click="cellClick"
+      v-if="form.produceRoutingId"
       row-key="id"
     >
-      <template v-slot:orderNum="{ row }">
-        {{ row.orderNum }}
+      <template v-slot:action="{ row }">
+        <el-radio class="radio" v-model="radio" :label="row.id"
+          ><i></i
+        ></el-radio>
       </template>
+    </ele-pro-table>
+    <ele-pro-table
+      ref="table"
+      :columns="columns1"
+      :datasource="datasource"
+      @cell-click="cellClick"
+      v-if="!form.produceRoutingId"
+      row-key="id"
+    >
       <template v-slot:action="{ row }">
         <el-radio class="radio" v-model="radio" :label="row.id"
           ><i></i
         ></el-radio>
       </template>
     </ele-pro-table>
-
     <template v-slot:footer>
       <el-button type="primary" @click="save"> 确定 </el-button>
       <el-button @click="updateVisible(false)"> 返回 </el-button>
@@ -92,7 +103,12 @@
 </template>
 
 <script>
-  import { bomListByPlan, bomRoutingList, taskinstanceList } from '@/api/aps';
+  import {
+    bomListByPlan,
+    bomRoutingList,
+    taskinstanceList,
+    producetask
+  } from '@/api/aps';
 
   export default {
     components: {},
@@ -126,7 +142,45 @@
         loading: false,
         // 是否是修改
         isUpdate: false,
+        columns1: [
+          {
+            action: 'action',
+            slot: 'action',
+            align: 'center',
+            label: '选择',
+            width: 80
+          },
+          {
+            prop: 'code',
+            label: '工序编码',
+            // sortable: 'custom',
+            showOverflowTooltip: true,
+            align: 'center',
+            minWidth: 110
+          },
 
+          {
+            prop: 'name',
+            label: '工序名称',
+            showOverflowTooltip: true,
+            align: 'center',
+            minWidth: 110
+          },
+          {
+            align: 'center',
+            prop: 'controlName',
+            label: '工序控制码',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'workCenterName',
+            label: '所属工作中心',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          }
+        ],
         columns: [
           {
             action: 'action',
@@ -236,7 +290,8 @@
         this.$refs.table.reload();
       },
       /* 表格数据源 */
-      async datasource() {
+      async datasource({ page, limit, where, order }) {
+
         if (this.form.produceRoutingId) {
           const res = await taskinstanceList({
             routingId: this.form.produceRoutingId,
@@ -253,9 +308,13 @@
             list: arr
           };
         } else {
-          return {
-            list: []
-          };
+       
+          return await producetask({
+            pageNum: page,
+            size: limit,
+            ...where
+          });
+          
         }
 
         //this.$refs.table.reload()

+ 15 - 10
src/api/aps/index.js

@@ -3,18 +3,16 @@ import request from '@/utils/request';
 /**
  * 列表
  */
- export async function getList (data) {
-    const res = await request.post('/aps/productionplan/page', data);
-    if (res.data.code == 0) {
-      return res.data.data;
-    }
-    return Promise.reject(new Error(res.data.message));
+export async function getList(data) {
+  const res = await request.post('/aps/productionplan/page', data);
+  if (res.data.code == 0) {
+    return res.data.data;
   }
+  return Promise.reject(new Error(res.data.message));
+}
 // aps生产计划获取产品的多个bom版本
 export async function bomListByPlan(params) {
-  const res = await request.get(
-    `/main/bomCategory/bomListByPlan`, { params }
-  );
+  const res = await request.get(`/main/bomCategory/bomListByPlan`, { params });
   if (res.data.code == 0) {
     return res.data.data;
   }
@@ -30,7 +28,7 @@ export async function bomRoutingList(id) {
   return Promise.reject(new Error(res.data.message));
 }
 //工艺路线工序实例-分页
-export async function taskinstanceList (data) {
+export async function taskinstanceList(data) {
   const res = await request.post(
     '/main/producerouting/taskinstance/page',
     data
@@ -39,3 +37,10 @@ export async function taskinstanceList (data) {
     return res.data.data;
   }
 }
+//工序分页
+export async function producetask(params) {
+  const res = await request.get('/main/producetask/page', { params });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+}

+ 8 - 0
src/api/main/index.js

@@ -46,3 +46,11 @@ export async function parameterPageList(params) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+//获取系统参数 
+export async function parameterGetByCode (data) {
+  const res = await request.post('/sys/parameter/getByCode', data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 155 - 0
src/views/purchasingManage/purchaseOrder/invoice/components/print-template-wl.vue

@@ -0,0 +1,155 @@
+<template>
+  <ele-modal
+    title="出库单"
+    :visible.sync="QRvisible"
+    v-if="QRvisible"
+    width="90%"
+  >
+    <div
+      id="printSection"
+      style="
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        flex-direction: column;
+      "
+    >
+      <div
+        style="
+          text-align: center;
+          font-size: 20px;
+          font-weight: 800;
+          text-decoration: underline;
+        "
+        >湖南万隆智能科技有限公司采购入库单</div
+      >
+      <div style="display: flex; justify-content: space-between;width: 100%;margin-bottom: 10px;">
+        <span style="flex: 3">供应商:{{ formData.supplierName }}</span>
+        <span style="flex: 1">日期:{{ formData.receiveDate }}</span>
+        <span style="flex: 2">编号:{{ formData.receiveNo }}</span>
+      </div>
+      <div style="display: flex; justify-content: space-between;width: 100%;margin-bottom: 10px;">
+        <span style="flex: 1">摘要:</span>
+      </div>
+      <table
+        cellspacing="0"
+        border
+        style="
+          width: 100%;
+          table-layout: fixed;
+          word-break: break-all;
+          word-wrap: break-word;
+          font-size: 12px;margin-bottom: 10px;
+        "
+      >
+        <tbody>
+          <tr align="center">
+            <td style="padding: 5px"> 行号 </td>
+            <td style="padding: 5px"> 物料编码 </td>
+            <td style="padding: 5px"> 物料名称 </td>
+            <td style="padding: 5px">规格型号 </td>
+            <td style="padding: 5px">单位 </td>
+            <td style="padding: 5px"> 数量</td>
+            <td style="padding: 5px"> 单价</td>
+            <td style="padding: 5px"> 金额</td>
+            <td style="padding: 5px"> 备注</td>
+          </tr>
+
+          <tr align="center" v-for="(item, index) in formData?.productList">
+            <td style="padding: 5px"> {{ index + 1 }} </td>
+            <td style="padding: 5px"> {{ item.productCode }} </td>
+            <td style="padding: 5px"> {{ item.productName }} </td>
+            <td style="padding: 5px">
+              {{ item.specification || ''
+              }}{{ item.modelType ? '/' + item.modelType : '' }}
+            </td>
+            <td style="padding: 5px"> {{ item.measuringUnit }}</td>
+            <td style="padding: 5px"> {{ item.totalCount }}</td>
+            <td style="padding: 5px"> {{ item.singlePrice }}</td>
+            <td style="padding: 5px"> {{ item.totalPrice }}</td>
+            <td style="padding: 5px"> {{ item.remark }}</td>
+          </tr>
+          <tr align="center">
+            <td style="padding: 5px" colspan="2">合计 </td>
+            <td style="padding: 5px" colspan="7">
+              <div style="display: flex; justify-content: space-between">
+                <span style="flex: 1">本页数量小计:{{ this.getAll('totalCount') }}</span>
+                <span style="flex: 1">本页金额小计:{{ this.getAll('totalPrice') }}</span>
+                <span style="flex: 1">汇总数量:{{ this.getAll('totalCount') }}</span>
+                <span style="flex: 1">汇总金额:{{ this.getAll('totalPrice') }}</span>
+              </div>
+            </td>
+          </tr>
+        </tbody>
+      </table>
+      <div style="display: flex; justify-content: space-between;width: 100%;">
+        <span style="flex: 1">审核:</span>
+        <span style="flex: 1">业务员:</span>
+        <span style="flex: 1">验收:</span>
+        <span style="flex: 1">保管:</span>
+        <span style="flex: 1">制单:{{ formData.createUserName }}</span>
+      </div>
+    </div>
+    <div slot="footer">
+      <el-button @click="print">打印预览</el-button>
+      <el-button @click="close">关闭</el-button>
+    </div>
+  </ele-modal>
+</template>
+
+<script>
+  import { getReceiveSaleOrderrecordDetail } from '@/api/purchasingManage/purchaseorderreceive';
+
+  import { mapGetters } from 'vuex';
+  export default {
+    name: 'print',
+    computed: {
+      ...mapGetters(['user'])
+    },
+    props: {},
+    data() {
+      return {
+        QRvisible: false,
+        formData: {}
+      };
+    },
+
+    methods: {
+      async open(id) {
+        this.formData = await getReceiveSaleOrderrecordDetail(id);
+        this.QRvisible = true;
+      },
+      close() {
+        this.QRvisible = false;
+      },
+      getAll(key) {
+        let num = 0;
+        this.formData.productList.forEach((item) => {
+          if (item[key]) {
+            num += Number(item[key]);
+          }
+        });
+        return num;
+      },
+      print() {
+        const printSection = document.getElementById('printSection');
+        // 创建打印任务
+        const printWindow = window.open('', '_blank');
+        printWindow.document.open();
+        printWindow.document.write('<html><head><title>打印预览</title>');
+        printWindow.document.write(
+          '<link rel="stylesheet" href="your-stylesheet-url.css" type="text/css" />'
+        );
+        printWindow.document.write('</head><body>');
+        printWindow.document.write(printSection.innerHTML);
+        printWindow.document.write('</body></html>');
+        printWindow.document.close();
+        printWindow.onload = function () {
+          printWindow.print();
+        };
+      }
+    }
+  };
+</script>
+
+<style lang="scss"></style>

+ 315 - 292
src/views/purchasingManage/purchaseOrder/invoice/index.vue

@@ -40,6 +40,17 @@
             >
               批量删除
             </el-button>
+            <el-dropdown trigger="click" :disabled="selection?.length === 0">
+              <el-button type="primary" class="el-icon-printer" size="small">
+                打印<i class="el-icon-arrow-down el-icon--right"></i>
+              </el-button>
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item
+                  @click.native="handlePrint('printTemplateWlRef')"
+                  >采购入库单</el-dropdown-item
+                >
+              </el-dropdown-menu>
+            </el-dropdown>
           </template>
 
           <!-- 查看详情列 -->
@@ -51,8 +62,7 @@
               @click="openorderDetail(row, 'receiveNo')"
             >
               {{ row.receiveNo }}
-            </el-link
-            >
+            </el-link>
           </template>
           <template v-slot:orderNo="{ row }">
             <el-link
@@ -61,8 +71,7 @@
               @click="openorderDetail(row, 'orderNo')"
             >
               {{ row.orderNo }}
-            </el-link
-            >
+            </el-link>
           </template>
           <!-- 操作列 -->
           <template v-slot:action="{ row }">
@@ -71,7 +80,11 @@
               :underline="false"
               icon="el-icon-edit"
               @click="openEdit('edit', row)"
-              v-if="(isNeed_process_is_close&&[0, 3].includes(row.reviewStatus))||!isNeed_process_is_close"
+              v-if="
+                (isNeed_process_is_close &&
+                  [0, 3].includes(row.reviewStatus)) ||
+                !isNeed_process_is_close
+              "
             >
               修改
             </el-link>
@@ -80,7 +93,9 @@
               :underline="false"
               icon="el-icon-plus"
               @click="sub(row)"
-              v-if="isNeed_process_is_close&&[0, 3].includes(row.reviewStatus)"
+              v-if="
+                isNeed_process_is_close && [0, 3].includes(row.reviewStatus)
+              "
             >
               提交
             </el-link>
@@ -88,7 +103,11 @@
               class="ele-action"
               title="确定要删除此信息吗?"
               @confirm="remove([row.id])"
-              v-if="(isNeed_process_is_close&&[0, 3].includes(row.reviewStatus))||!isNeed_process_is_close"
+              v-if="
+                (isNeed_process_is_close &&
+                  [0, 3].includes(row.reviewStatus)) ||
+                !isNeed_process_is_close
+              "
             >
               <template v-slot:reference>
                 <el-link type="danger" :underline="false" icon="el-icon-delete">
@@ -134,312 +153,316 @@
       content="是否确定删除?"
       @done="commitBtn"
     />
-    <process-submit-dialog :isNotNeedProcess="false" :processSubmitDialogFlag.sync="processSubmitDialogFlag" v-if="processSubmitDialogFlag" ref="processSubmitDialogRef" @reload="reload"></process-submit-dialog>
-
+    <process-submit-dialog
+      :isNotNeedProcess="false"
+      :processSubmitDialogFlag.sync="processSubmitDialogFlag"
+      v-if="processSubmitDialogFlag"
+      ref="processSubmitDialogRef"
+      @reload="reload"
+    ></process-submit-dialog>
+    <printTemplateWl ref="printTemplateWlRef"></printTemplateWl>
   </div>
 </template>
 
 <script>
-import searchTable from './components/searchTable.vue';
-import addInvoiceDialog from './components/addInvoiceDialog.vue';
-import detailDialog from './components/detailDialog.vue';
-import popModal from '@/components/pop-modal';
-import {reviewStatusEnum} from '@/enum/dict';
-import orderDetailDialog from '@/views/purchasingManage/purchaseOrder/components/detailDialog.vue';
-
-import addReturnGoodsDialog from '@/views/purchasingManage/purchaseOrder/returnGoods/components/addReturnGoodsDialog';
-
-import {
-  deleteReceiveInformation,
-  getReceiveSaleOrderrecordDetail,
-  getReceiveTableList,
-  receiveGenerateQualityPlan
-} from '@/api/purchasingManage/purchaseorderreceive';
-import dictMixins from '@/mixins/dictMixins';
-import {getWarehouseListByIds} from "@/api/purchasingManage/returnGoods";
-import processSubmitDialog from "@/BIZComponents/processSubmitDialog/processSubmitDialog.vue";
-import tabMixins from '@/mixins/tableColumnsMixin';
-
-export default {
-  mixins: [dictMixins,tabMixins],
-  components: {
-    processSubmitDialog,
-    searchTable,
-    popModal,
-    addReturnGoodsDialog,
-    orderDetailDialog,
-    addInvoiceDialog,
-    detailDialog
-  },
-  data() {
-    return {
-      activeComp: 'saleorder',
-
-      selection: [], //单选中集合
-      delVisible: false, //批量删除弹框状态
-      loading: false, // 加载状态
-      processSubmitDialogFlag: false, // 加载状态
-      columns: [
-        {
-          width: 45,
-          type: 'selection',
-          columnKey: 'selection',
-          align: 'center'
-        },
-        {
-          columnKey: 'index',
-          label: '序号',
-          type: 'index',
-          width: 55,
-          align: 'center',
-          showOverflowTooltip: true,
-        },
-        {
-          prop: 'receiveNo',
-          label: '收货单编码',
-          sortable: true,
-          align: 'center',
-          slot: 'receiveNo',
-          showOverflowTooltip: true,
-          minWidth: 180
-        },
-        {
-          prop: 'orderNo',
-          label: '采购订单编码',
-          sortable: true,
-          align: 'center',
-          slot: 'orderNo',
-          showOverflowTooltip: true,
-          minWidth: 180
-        },
-        {
-          prop: 'productNames',
-          label: '产品名称',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 140
-        },
-        {
-          prop: 'batchNo',
-          label: '批次号',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 140
-        },
-        
-        {
-          prop: 'supplierName',
-          label: '供应商名称',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 300
-        },
-        {
-          prop: 'sendNoteNo',
-          label: '送货单号',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 200
-        },
-        // {
-        //   prop: 'replied',
-        //   label: '是否回执',
-        //   align: 'center',
-        //   showOverflowTooltip: true,
-        //   minWidth: 200,
-        //   formatter: (_row, _column, cellValue) => {
-        //   return _row.replied==1?'是':'否';
-        // }
-        // },
-        {
-          prop: 'reviewStatus',
-          label: '状态',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 200,
-          formatter: (_row, _column, cellValue) => {
-            return reviewStatusEnum[_row.reviewStatus].label;
-          }
-        },
-        {
-          prop: 'createTime',
-          label: '创建时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 170
-        },
-        {
-          columnKey: 'action',
-          label: '操作',
-          width: 280,
-          align: 'center',
-          resizable: false,
-          slot: 'action',
-          showOverflowTooltip: true,
-          fixed: 'right'
-        }
-      ],
-      cacheKeyUrl:'eos-8f646c6a-purchaseOrder-invoice',
-    };
-  },
-  computed: {},
-
-  methods: {
-    /* 表格数据源 */
-    datasource({page, limit, where, order}) {
-      return getReceiveTableList({
-        pageNum: page,
-        size: limit,
-        ...where
-      });
-    },
-
-    //创建退货单
-    creatReturnGoods(type, row) {
-      this.$refs.addReturnGoodsRef.open(type, {}, row.id);
+  import searchTable from './components/searchTable.vue';
+  import addInvoiceDialog from './components/addInvoiceDialog.vue';
+  import detailDialog from './components/detailDialog.vue';
+  import printTemplateWl from './components/print-template-wl.vue';
+  import popModal from '@/components/pop-modal';
+  import { reviewStatusEnum } from '@/enum/dict';
+  import orderDetailDialog from '@/views/purchasingManage/purchaseOrder/components/detailDialog.vue';
+
+  import addReturnGoodsDialog from '@/views/purchasingManage/purchaseOrder/returnGoods/components/addReturnGoodsDialog';
+
+  import {
+    deleteReceiveInformation,
+    getReceiveSaleOrderrecordDetail,
+    getReceiveTableList,
+    receiveGenerateQualityPlan
+  } from '@/api/purchasingManage/purchaseorderreceive';
+  import dictMixins from '@/mixins/dictMixins';
+  import { getWarehouseListByIds } from '@/api/purchasingManage/returnGoods';
+  import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
+  import tabMixins from '@/mixins/tableColumnsMixin';
+
+  export default {
+    mixins: [dictMixins, tabMixins],
+    components: {
+      processSubmitDialog,
+      searchTable,
+      popModal,
+      addReturnGoodsDialog,
+      orderDetailDialog,
+      addInvoiceDialog,
+      detailDialog,printTemplateWl
     },
-    //生成质检计划
-    async creatQualityPlan(row) {
-      await receiveGenerateQualityPlan(row.id)
-      this.$message.success('生成质检计划成功');
-    },
-
-    /* 刷新表格 */
-    reload(where) {
-      this.$refs.table.reload({page: 1, where});
-    },
-
-    //新增编辑
-    openEdit(type, row) {
-      this.$refs.invoiceDialogRef.open(type, row);
-      this.$refs.invoiceDialogRef.$refs.form &&
-      this.$refs.invoiceDialogRef.$refs.form.clearValidate();
-    },
-
-    //批量删除
-    allDelBtn() {
-      if (this.selection.length === 0) return;
-      let flag = this.selection.some(item => [1, 2].includes(item.reviewStatus))
-      if (flag) return this.$message.warning('抱歉已审核、审核中的数据不能删除,请检查')
-      this.delVisible = true;
-    },
-
-    //删除接口
-    remove(delData) {
-      deleteReceiveInformation(delData).then((res) => {
-        this.$message.success('删除成功!');
-        this.reload();
-      });
-    },
-    async sub(res) {
-      const data = await getReceiveSaleOrderrecordDetail(res.id);
-      let storemanIds = ''
-      let ids = data.productList.map((item) => item.warehouseId);
-      let warehouseList = await getWarehouseListByIds(ids || []);
-      storemanIds = warehouseList.map((item) => item.ownerId);
-
-      this.processSubmitDialogFlag = true
-      let key = res.sourceType =='1'? 'purchase_receive_approve':'purchase_receive_approve_2'
-      this.$nextTick(() => {
-        let params = {
-          businessId: res.id,
-          businessKey: key,
-          formCreateUserId: res.createUserId,
-          variables: {
-            businessCode: res.receiveNo,
-            receiveType: res.receiveType,
-            sourceType: res.sourceType,
-            storemanIds: storemanIds.toString(),
+    data() {
+      return {
+        activeComp: 'saleorder',
+
+        selection: [], //单选中集合
+        delVisible: false, //批量删除弹框状态
+        loading: false, // 加载状态
+        processSubmitDialogFlag: false, // 加载状态
+        columns: [
+          {
+            width: 45,
+            type: 'selection',
+            columnKey: 'selection',
+            align: 'center'
+          },
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'receiveNo',
+            label: '收货单编码',
+            sortable: true,
+            align: 'center',
+            slot: 'receiveNo',
+            showOverflowTooltip: true,
+            minWidth: 180
+          },
+          {
+            prop: 'orderNo',
+            label: '采购订单编码',
+            sortable: true,
+            align: 'center',
+            slot: 'orderNo',
+            showOverflowTooltip: true,
+            minWidth: 180
+          },
+          {
+            prop: 'productNames',
+            label: '产品名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 140
+          },
+          {
+            prop: 'batchNo',
+            label: '批次号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 140
           },
-          // callBackMethodType : '1',
-          // callBackMethod : 'proTargetPlanApproveApiImpl.updatePlanApprovalStatus',
-          // pcHandle : '/bpm/handleTask/components/project-manage/plan-manage/submit.vue',
-          // pcView : '/bpm/handleTask/components/project-manage/plan-manage/detailDialog.vue',
-          // miniHandle : '',
-          // miniView : '',
-        }
-
-
-        this.$refs.processSubmitDialogRef.init(params)
-      })
-
 
-      // submit({
-      //   businessId: res.id,
-      //   receiveType: res.receiveType,
-      //   sourceType: res.sourceType,
-      //   variables: {
-      //     storemanIds: storemanIds.toString(),
-      //   }
-      // }).then((res) => {
-      //   this.$message.success('提交成功');
-      //   this.reload();
-      // });
-    },
-    //删除弹框确定
-    commitBtn() {
-      const dataId = this.selection.map((v) => v.id);
-      this.remove(dataId);
+          {
+            prop: 'supplierName',
+            label: '供应商名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 300
+          },
+          {
+            prop: 'sendNoteNo',
+            label: '送货单号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 200
+          },
+          // {
+          //   prop: 'replied',
+          //   label: '是否回执',
+          //   align: 'center',
+          //   showOverflowTooltip: true,
+          //   minWidth: 200,
+          //   formatter: (_row, _column, cellValue) => {
+          //   return _row.replied==1?'是':'否';
+          // }
+          // },
+          {
+            prop: 'reviewStatus',
+            label: '状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 200,
+            formatter: (_row, _column, cellValue) => {
+              return reviewStatusEnum[_row.reviewStatus].label;
+            }
+          },
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 170
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 280,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true,
+            fixed: 'right'
+          }
+        ],
+        cacheKeyUrl: 'eos-8f646c6a-purchaseOrder-invoice'
+      };
     },
-
-    //查看详情
-    openorderDetail(row, type) {
-      if (type === 'receiveNo') {
-        this.$refs.DetailDialogRef.open(row);
-      }
-      if (type === 'orderNo') {
-        this.$refs.orderDetailDialogRef.open({id: row.orderId});
+    computed: {},
+
+    methods: {
+      /* 表格数据源 */
+      datasource({ page, limit, where, order }) {
+        return getReceiveTableList({
+          pageNum: page,
+          size: limit,
+          ...where
+        });
+      },
+
+      //创建退货单
+      creatReturnGoods(type, row) {
+        this.$refs.addReturnGoodsRef.open(type, {}, row.id);
+      },
+      //生成质检计划
+      async creatQualityPlan(row) {
+        await receiveGenerateQualityPlan(row.id);
+        this.$message.success('生成质检计划成功');
+      },
+
+      /* 刷新表格 */
+      reload(where) {
+        this.$refs.table.reload({ page: 1, where });
+      },
+
+      //新增编辑
+      openEdit(type, row) {
+        this.$refs.invoiceDialogRef.open(type, row);
+        this.$refs.invoiceDialogRef.$refs.form &&
+          this.$refs.invoiceDialogRef.$refs.form.clearValidate();
+      },
+
+      //批量删除
+      allDelBtn() {
+        if (this.selection.length === 0) return;
+        let flag = this.selection.some((item) =>
+          [1, 2].includes(item.reviewStatus)
+        );
+        if (flag)
+          return this.$message.warning(
+            '抱歉已审核、审核中的数据不能删除,请检查'
+          );
+        this.delVisible = true;
+      },
+
+      //删除接口
+      remove(delData) {
+        deleteReceiveInformation(delData).then((res) => {
+          this.$message.success('删除成功!');
+          this.reload();
+        });
+      },
+      async sub(res) {
+        const data = await getReceiveSaleOrderrecordDetail(res.id);
+        let storemanIds = '';
+        let ids = data.productList.map((item) => item.warehouseId);
+        let warehouseList = await getWarehouseListByIds(ids || []);
+        storemanIds = warehouseList.map((item) => item.ownerId);
+
+        this.processSubmitDialogFlag = true;
+        let key =
+          res.sourceType == '1'
+            ? 'purchase_receive_approve'
+            : 'purchase_receive_approve_2';
+        this.$nextTick(() => {
+          let params = {
+            businessId: res.id,
+            businessKey: key,
+            formCreateUserId: res.createUserId,
+            variables: {
+              businessCode: res.receiveNo,
+              receiveType: res.receiveType,
+              sourceType: res.sourceType,
+              storemanIds: storemanIds.toString()
+            }
+          };
+          this.$refs.processSubmitDialogRef.init(params);
+        });
+      },
+      handlePrint(ref) {
+        if (this.selection.length > 1)
+          return this.$message.warning('请选择一条');
+        let flag = this.selection.some((item) =>
+          [2].includes(item.reviewStatus)
+        );
+        if (!flag)
+          return this.$message.warning('抱歉需要已审核的发货单才能打印,请检查');
+        this.$refs[ref].open(this.selection[0].id);
+      },
+      //删除弹框确定
+      commitBtn() {
+        const dataId = this.selection.map((v) => v.id);
+        this.remove(dataId);
+      },
+
+      //查看详情
+      openorderDetail(row, type) {
+        if (type === 'receiveNo') {
+          this.$refs.DetailDialogRef.open(row);
+        }
+        if (type === 'orderNo') {
+          this.$refs.orderDetailDialogRef.open({ id: row.orderId });
+        }
       }
     }
-  }
-};
+  };
 </script>
 
 <style lang="scss" scoped>
-.ele-body {
-  padding-top: 0;
-  padding-bottom: 0;
-}
+  .ele-body {
+    padding-top: 0;
+    padding-bottom: 0;
+  }
 
-:deep .el-card__body {
-  padding: 0;
-}
+  :deep .el-card__body {
+    padding: 0;
+  }
 
-:deep(.el-link--inner) {
-  margin-left: 0px !important;
-}
+  :deep(.el-link--inner) {
+    margin-left: 0px !important;
+  }
 
-.sys-organization-list {
-  height: calc(100vh - 264px);
-  box-sizing: border-box;
-  border-width: 1px;
-  border-style: solid;
-  overflow: auto;
-}
+  .sys-organization-list {
+    height: calc(100vh - 264px);
+    box-sizing: border-box;
+    border-width: 1px;
+    border-style: solid;
+    overflow: auto;
+  }
 
-.sys-organization-list :deep(.el-tree-node__content) {
-  height: 40px;
+  .sys-organization-list :deep(.el-tree-node__content) {
+    height: 40px;
 
-  & > .el-tree-node__expand-icon {
-    margin-left: 10px;
+    & > .el-tree-node__expand-icon {
+      margin-left: 10px;
+    }
   }
-}
 
-.switch_left ul .active {
-  border-top: 4px solid var(--color-primary);
-  color: var(--color-primary-5);
-}
+  .switch_left ul .active {
+    border-top: 4px solid var(--color-primary);
+    color: var(--color-primary-5);
+  }
 
-.switch {
-  padding-bottom: 20px;
-}
+  .switch {
+    padding-bottom: 20px;
+  }
 
-.el-dropdown-link {
-  cursor: pointer;
-  color: var(--color-primary-5);
-}
+  .el-dropdown-link {
+    cursor: pointer;
+    color: var(--color-primary-5);
+  }
 
-.el-icon-arrow-down {
-  font-size: 12px;
-}
+  .el-icon-arrow-down {
+    font-size: 12px;
+  }
 </style>

+ 3 - 3
src/views/saleManage/saleOrder/invoice/components/detailDialog.vue

@@ -42,8 +42,8 @@
               <el-input v-model="form.linkPhone" disabled></el-input>
             </el-form-item>
 
-            <el-form-item label="客户地址:" prop="partaAddress">
-              <el-input v-model="form.partaAddress" disabled></el-input>
+            <el-form-item label="客户地址:" prop="receiveAddress">
+              <el-input v-model="form.receiveAddress" disabled></el-input>
             </el-form-item>
             <!-- <el-form-item label="计价方式:">
               <el-select v-model="form.pricingWay" disabled style="width: 100%">
@@ -51,7 +51,7 @@
                 <el-option label="按重量计费" :value="2"></el-option>
               </el-select>
             </el-form-item> -->
-            <el-form-item label="车牌号:" prop="partaAddress">
+            <el-form-item label="车牌号:" prop="carNo">
               <el-input v-model="form.carNo" disabled></el-input>
             </el-form-item>
             <el-form-item label="托盘数:">