yusheng 1 год назад
Родитель
Сommit
bbae364a19
24 измененных файлов с 1086 добавлено и 664 удалено
  1. 1 1
      src/BIZComponents/inventoryTable.vue
  2. 1 1
      src/BIZComponents/inventoryTableDetails.vue
  3. 33 0
      src/api/exceptionManagement/index.js
  4. 8 3
      src/enum/dict.js
  5. 2 1
      src/views/purchasingManage/purchaseOrder/components/addDialog.vue
  6. 4 3
      src/views/purchasingManage/purchaseOrder/components/detailDialog.vue
  7. 9 5
      src/views/purchasingManage/purchaseOrder/invoice/components/detailDialog.vue
  8. 2 5
      src/views/purchasingManage/purchaseOrder/invoice/components/inventoryTable.vue
  9. 2 1
      src/views/purchasingManage/purchaseOrder/outSourceSend/components/detailDialog.vue
  10. 2 5
      src/views/purchasingManage/purchaseOrder/returnGoods/components/detailDialog.vue
  11. 2 1
      src/views/purchasingManage/purchaseOrder/returnGoods/components/inventoryTable.vue
  12. 3 2
      src/views/saleManage/saleOrder/components/darwerComponents/saleOrderInfo.vue
  13. 2 1
      src/views/saleManage/saleOrder/entrustedReceive/components/detailDialog.vue
  14. 2 1
      src/views/saleManage/saleOrder/entrustedReceive/components/inventoryTable.vue
  15. 409 0
      src/views/saleManage/saleOrder/exceptionManagement/components/addOrEditDialog.vue
  16. 6 55
      src/views/saleManage/saleOrder/exceptionManagement/components/order-search.vue
  17. 83 102
      src/views/saleManage/saleOrder/exceptionManagement/exceptionList/index.vue
  18. 2 0
      src/views/saleManage/saleOrder/invoice/components/addInvoiceDialog.vue
  19. 2 1
      src/views/saleManage/saleOrder/invoice/components/detailDialog.vue
  20. 2 1
      src/views/saleManage/saleOrder/invoice/components/inventoryTable.vue
  21. 59 58
      src/views/saleManage/saleOrder/invoiceConfirm/components/addInvoiceDialog.vue
  22. 435 411
      src/views/saleManage/saleOrder/invoiceConfirm/components/detailDialog.vue
  23. 2 1
      src/views/saleManage/saleOrder/returnGoods/components/detailDialog.vue
  24. 13 5
      src/views/saleManage/saleOrder/returnGoods/components/inventoryTable.vue

+ 1 - 1
src/BIZComponents/inventoryTable.vue

@@ -1324,7 +1324,7 @@
         });
         if (singleWeightData.name) {
           this.$message.warning(
-            singleWeightData.name + '计价方式为重量,单重不能为空'
+            singleWeightData.name + '计价方式为按重量计费,单重不能为空'
           );
           callback(false);
         }

+ 1 - 1
src/BIZComponents/inventoryTableDetails.vue

@@ -209,7 +209,7 @@
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1 ? '数量' : row.pricingWay == 2 ? '重量':'';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
             }
           },
           {

+ 33 - 0
src/api/exceptionManagement/index.js

@@ -0,0 +1,33 @@
+import request from '@/utils/request';
+
+/**
+ * 列表
+ */
+ export async function getList (params) {
+    const res = await request.get('/eom/exceptionmanagement/page', {params});
+    if (res.data.code == 0) {
+      return res.data.data;
+    }
+    return Promise.reject(new Error(res.data.message));
+  }
+/**
+ * 详情
+ */
+export async function getById (id) {
+  const res = await request.get('/eom/exceptionmanagement/getById/'+id);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+/**
+ * 跟新
+ */
+  // 编辑
+  export async function update (data) {
+    const res = await request.put(`/eom/exceptionmanagement/update`, data);
+    if (res.data.code == 0) {
+      return res.data.message;
+    }
+    return Promise.reject(new Error(res.data.message));
+  }

+ 8 - 3
src/enum/dict.js

@@ -208,6 +208,11 @@ export const outputSceneStateEnum = [
 ];
 // 计价方式
 export const pricingWayList= [
-  { id: 1, name: '按数量计价' },
-  { id: 2, name: '按重量计价' }
-]
+  { id: 1, name: '按数量计费' },
+  { id: 2, name: '按重量计费' }
+]
+//来源类型
+export const relationType= {
+  1: '收货确认单',
+
+}

+ 2 - 1
src/views/purchasingManage/purchaseOrder/components/addDialog.vue

@@ -734,9 +734,10 @@
       }
     },
     created() {
-      this.changePersonel()
       this.getGroupAll();
       this.getEnterprisePage();
+      this.changePersonel()
+
     },
     methods: {
       // 选择负责人部门

+ 4 - 3
src/views/purchasingManage/purchaseOrder/components/detailDialog.vue

@@ -188,12 +188,12 @@
                 <template slot="append">元</template>
               </el-input>
             </el-form-item>
-            <el-form-item label="计价方式:">
+            <!-- <el-form-item label="计价方式:">
               <el-select v-model="form.pricingWay" disabled style="width: 100%">
                 <el-option :value="1" label="按数量计费"></el-option>
                 <el-option :value="2" label="按重量计费"></el-option>
               </el-select>
-            </el-form-item>
+            </el-form-item> -->
           </el-col>
           <el-col :span="8">
           <el-form-item label="订单总金额" prop="orderTotalPrice">
@@ -694,7 +694,8 @@
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1 ? '数量' : row.pricingWay == 2 ? '重量':'';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
           {

+ 9 - 5
src/views/purchasingManage/purchaseOrder/invoice/components/detailDialog.vue

@@ -296,6 +296,13 @@
             slot: 'modelType',
             align: 'center'
           },
+          {
+            width: 120,
+            prop: 'supplierMark',
+            label: '供应商代号',
+            slot: 'supplierMark',
+            align: 'center'
+          },
           {
             width: 120,
             prop: 'specification',
@@ -381,11 +388,8 @@
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1
-                ? '数量'
-                : row.pricingWay == 2
-                ? '重量'
-                : '';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
           {

+ 2 - 5
src/views/purchasingManage/purchaseOrder/invoice/components/inventoryTable.vue

@@ -429,11 +429,8 @@
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1
-                ? '数量'
-                : row.pricingWay == 2
-                ? '重量'
-                : '';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
           {

+ 2 - 1
src/views/purchasingManage/purchaseOrder/outSourceSend/components/detailDialog.vue

@@ -336,7 +336,8 @@ export default {
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1 ? '数量' : row.pricingWay == 2 ? '重量':'';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
           {

+ 2 - 5
src/views/purchasingManage/purchaseOrder/returnGoods/components/detailDialog.vue

@@ -373,11 +373,8 @@
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1
-                ? '数量'
-                : row.pricingWay == 2
-                ? '重量'
-                : '';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
           {

+ 2 - 1
src/views/purchasingManage/purchaseOrder/returnGoods/components/inventoryTable.vue

@@ -457,7 +457,8 @@ export default {
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1 ? '数量' : row.pricingWay == 2 ? '重量':'';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
         {

+ 3 - 2
src/views/saleManage/saleOrder/components/darwerComponents/saleOrderInfo.vue

@@ -180,14 +180,15 @@
     <inventoryTabledetail
       ref="inventoryTabledetailRef"
       :isCustomerMark="true"
-      :isDiscountTotalPrice="true"
+        :isDiscountTotalPrice="true"
+        pageName="send"
     ></inventoryTabledetail>
   </div>
 </template>
 
 <script>
 import { getFile } from '@/api/system/file';
-import inventoryTabledetail from '../inventoryTabledetail.vue';
+import inventoryTabledetail from '@/BIZComponents/inventoryTableDetails.vue';
 
 import dictMixins from '@/mixins/dictMixins';
 export default {

+ 2 - 1
src/views/saleManage/saleOrder/entrustedReceive/components/detailDialog.vue

@@ -315,7 +315,8 @@ export default {
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1 ? '数量' : '重量';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
         {

+ 2 - 1
src/views/saleManage/saleOrder/entrustedReceive/components/inventoryTable.vue

@@ -340,7 +340,8 @@ export default {
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1 ? '数量' : '重量';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
         {

+ 409 - 0
src/views/saleManage/saleOrder/exceptionManagement/components/addOrEditDialog.vue

@@ -0,0 +1,409 @@
+<template>
+  <ele-modal
+    custom-class="ele-dialog-form long-dialog-form"
+    :centered="true"
+    :visible.sync="addOrEditDialogFlag"
+    :title="title"
+    :close-on-click-modal="false"
+    width="70%"
+    :before-close="cancel"
+    :fullscreen="fullscreen"
+  >
+    <template slot="title">
+      <modalTitle
+        :title="title"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
+    </template>
+    <el-form ref="form" :model="form" label-width="120px" class="el-form-box">
+      <headerTitle title="基本信息"></headerTitle>
+
+      <el-row :gutter="12">
+        <el-col :span="8">
+          <el-form-item label="编码" prop="code">
+            <el-input
+              v-model="form.code"
+              placeholder="请输入"
+              :disabled="true"
+            />
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="8">
+          <el-form-item label="名称" prop="name">
+            <el-input clearable v-model="form.name" :disabled="true" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="来源类型" prop="relationType">
+            <el-input
+              clearable
+              v-model="form.relationTypeName"
+              :disabled="true"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="来源编码" prop="relationCode">
+            <el-input clearable v-model="form.relationCode" :disabled="true" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="来源名称" prop="relationName">
+            <el-input clearable v-model="form.relationName" :disabled="true" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="创建人" prop="createUserName">
+            <el-input
+              clearable
+              v-model="form.createUserName"
+              :disabled="true"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="创建时间" prop="createTime">
+            <el-input clearable v-model="form.createTime" :disabled="true" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+
+    <headerTitle title="产品清单" style="margin-top: 30px"></headerTitle>
+    <ele-pro-table
+      ref="table"
+      :needPage="false"
+      :columns="columns"
+      :toolkit="[]"
+      :datasource="form.detailList"
+      row-key="id"
+    >
+      <template v-slot:headerExceptionDispose="{ column }">
+        <span class="is-required">{{ column.label }}</span>
+      </template>
+      <template v-slot:exceptionDispose="scope">
+        <el-select v-model="scope.row.exceptionDispose" 
+        :disabled="title!='处置'"
+        placeholder="请选择">
+          <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+      </template>
+    </ele-pro-table>
+
+    <div slot="footer" class="footer">
+      <el-button
+        type="primary"
+        @click="save"
+        v-click-once
+        v-if="title == '处置'"
+        >保存</el-button
+      >
+      <el-button
+        type="primary"
+        @click="save('sub')"
+        v-click-once
+        v-if="title == '处置'"
+        >提交</el-button
+      >
+
+      <el-button @click="cancel">返回</el-button>
+    </div>
+
+    <process-submit-dialog
+      :isNotNeedProcess="false"
+      :processSubmitDialogFlag.sync="processSubmitDialogFlag"
+      v-if="processSubmitDialogFlag"
+      ref="processSubmitDialogRef"
+      @reload="reload"
+    ></process-submit-dialog>
+  </ele-modal>
+</template>
+
+<script>
+  import dictMixins from '@/mixins/dictMixins';
+  import { getById, update } from '@/api/exceptionManagement/index';
+  import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
+  import { relationType } from '@/enum/dict.js';
+  import modalTitle from '@/BIZComponents/modalTitle.vue';
+
+  export default {
+    mixins: [dictMixins],
+    components: {
+      processSubmitDialog,modalTitle
+    },
+    data() {
+      return {
+        title: '',
+        addOrEditDialogFlag: false,
+        fullscreen: false,
+        processSubmitDialogFlag: false,
+        options: [
+          { label: '退货入库', value: 1 },
+          { label: '返工返修', value: 2 },
+          { label: '报损', value: 3 },
+          { label: '报废', value: 4 }
+        ],
+        form: {},
+        columns: [
+          {
+            width: 45,
+            type: 'index',
+            columnKey: 'index',
+            align: 'center',
+            fixed: 'left'
+          },
+          {
+            width: 220,
+            prop: 'exceptionDispose',
+            label: '处置方式',
+            slot: 'exceptionDispose',
+            fixed: 'left',
+            align: 'center',
+            headerSlot: 'headerExceptionDispose'
+          },
+          {
+            minWidth: 160,
+            prop: 'productCode',
+            label: '编码',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+          {
+            minWidth: 120,
+            prop: 'productName',
+            label: '名称',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+
+          {
+            minWidth: 160,
+            prop: 'batchNo',
+            label: '批次号',
+            showOverflowTooltip: true,
+            slot: 'batchNo',
+            align: 'center'
+          },
+          {
+            minWidth: 160,
+            prop: 'barcodes',
+            label: '发货条码',
+            showOverflowTooltip: true,
+            slot: 'barcodes',
+            align: 'center'
+          },
+          {
+            minWidth: 120,
+            prop: 'materielDesignation',
+            label: '物料代号',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+          {
+            minWidth: 120,
+            prop: 'clientCode',
+            label: '客户代号',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+          {
+            minWidth: 120,
+            prop: 'engrave',
+            label: '刻码',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+          {
+            minWidth: 160,
+            prop: 'packageNo',
+            align: 'center',
+            label: '包装编码',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 100,
+            prop: 'packingQuantity',
+            align: 'center',
+            label: '包装数量',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 120,
+            prop: 'packingUnit',
+            align: 'center',
+            label: '包装单位',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 100,
+            prop: 'totalCount',
+            label: '计量数量',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+          {
+            minWidth: 150,
+            prop: 'measuringUnit',
+            label: '计量单位',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+          {
+            width: 160,
+            prop: 'pricingWay',
+            label: '计价方式',
+            slot: 'pricingWay',
+            align: 'center',
+            formatter: (row, column) => {
+              return row.pricingWay == 1
+                ? '按数量计费'
+                : row.pricingWay == 2
+                ? '按重量计费'
+                : '';
+            }
+          },
+          {
+            width: 100,
+            prop: 'singlePrice',
+            label: '单价',
+            slot: 'singlePrice',
+            align: 'center'
+          },
+
+          {
+            width: 100,
+            prop: 'totalPrice',
+            label: '合计',
+            align: 'center'
+          },
+
+          {
+            minWidth: 80,
+            prop: 'receiveTotalWeight',
+            label: '重量',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+          {
+            minWidth: 100,
+            prop: 'weightUnit',
+            label: '重量单位',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+
+          {
+            width: 220,
+            prop: 'describes',
+            label: '描述',
+            slot: 'describes',
+            align: 'center'
+          }
+        ]
+      };
+    },
+
+    methods: {
+      //打开新增编辑弹框
+      async open(type, row) {
+        console.log(type,'type')
+        this.title = type == 'edit' ? '处置' : '详情';
+
+        this.addOrEditDialogFlag = true;
+        if (row && row?.id) {
+          await this.getById(row?.id);
+        }
+      },
+
+      //获取订单详情
+      async getById(id) {
+        this.loading = true;
+        let data = await getById(id);
+        data['relationTypeName'] = relationType[data.relationType];
+
+        this.loading = false;
+        if (data) {
+          this.form = data;
+        }
+      },
+      async save(type) {
+        try {
+          this.loading = true;
+          let is = false;
+          this.form.detailList.forEach((item) => {
+            if (!item.exceptionDispose) {
+              is = true;
+            }
+          });
+          if (is) {
+            this.$message.error('处置方式不能为空');
+            return;
+          }
+          update(this.form)
+            .then((res) => {
+              this.loading = false;
+              this.$message.success('操作成功');
+              if (type === 'sub') {
+                this.submit(res);
+                return;
+              }
+              this.cancel();
+            })
+            .catch((e) => {
+              this.loading = false;
+            });
+        } catch (error) {
+          console.log(error);
+          // 表单验证未通过,不执行保存操作
+        }
+      },
+      async submit() {
+        this.processSubmitDialogFlag = true;
+
+        this.$nextTick(() => {
+          let params = {
+            businessId: this.form.id,
+            businessKey: 'eom_exception_approve',
+            formCreateUserId: this.form.createUserId,
+            variables: {
+              businessCode: this.form.code
+            }
+          };
+          this.$refs.processSubmitDialogRef.init(params);
+        });
+      },
+      reload() {
+        this.cancel();
+      },
+      cancel() {
+        this.addOrEditDialogFlag = false;
+        this.$emit('done');
+      }
+    }
+  };
+</script>
+<style scoped lang="scss">
+  .TotalAmount {
+    font-size: 16px;
+    padding-right: 30px;
+  }
+
+  .headbox {
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+
+    .amount {
+      font-size: 14px;
+      font-weight: bold;
+      margin-right: 20px;
+    }
+  }
+</style>

+ 6 - 55
src/views/saleManage/saleOrder/exceptionManagement/components/order-search.vue

@@ -7,15 +7,7 @@
     @submit.native.prevent
   >
     <el-row :gutter="15">
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="类型:">
-            <DictSelection
-              dictName="异常类型"
-              clearable
-              v-model="where.type"
-            ></DictSelection>
-        </el-form-item>
-      </el-col>
+
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="编码:">
           <el-input
@@ -35,21 +27,7 @@
         </el-form-item>
       </el-col>
  
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="状态:">
 
-          <el-select v-model="where.approvalStatus" style="width:100%" clearable>
-            <el-option
-                v-for="item in options"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
-              >
-              </el-option>
-          </el-select>
-        </el-form-item>
-
-      </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="创建人:">
           <el-input
@@ -59,29 +37,8 @@
           />
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="创建时间:">
-          <el-date-picker
-            class="w100"
-            style="width: 100%"
-            v-model="where.createTime"
-            type="daterange"
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            :default-time="['00:00:00', '23:59:59']"
-          >
-          </el-date-picker>
-        </el-form-item>
-      </el-col>
- 
-   
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="组织机构:">
-          <auth-selection data-type="Array" v-model="where.deptIds" style="width: 100%"></auth-selection>
-        </el-form-item>
-      </el-col>
+
+
       <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
         <el-form-item>
           <div style="display:flex;justify-content: end;">
@@ -110,13 +67,11 @@ export default {
   data() {
     // 默认表单数据
     const defaultWhere = {
-      type: '',
       name:'',
       code:'',
-      approvalStatus: '',
-      createTime: [],
+
       createUserName:"",
-      deptIds:'',
+
     };
     return {
       // 表单数据
@@ -142,11 +97,7 @@ export default {
     /* 搜索 */
     search() {
       const where = { ...this.where };
-      if (where.createTime?.length) {
-        where.startTime = where.createTime[0];
-        where.endTime = where.createTime[1];
-      }
-      delete where.createTime;
+
       this.$emit('search', where);
     },
     /*  重置 */

+ 83 - 102
src/views/saleManage/saleOrder/exceptionManagement/exceptionList/index.vue

@@ -35,7 +35,7 @@
                 ? '审核不通过'
                 : row.approvalStatus == 4
                 ? '已处置'
-                : '草稿'
+                : '未提交'
             }}
           </span>
           <span v-else>关闭</span>
@@ -44,7 +44,7 @@
           <el-link
             type="primary"
             :underline="false"
-            @click="open('detail', row)"
+            @click="dispose('detail', row)"
           >
             {{ row.code }}
           </el-link>
@@ -103,15 +103,7 @@
         </template>
 
         <!-- <template v-slot:action="{ row }">
-          <el-link
-            type="primary"
-            :underline="false"
-            icon="el-icon-truck"
-            v-if="row.approvalStatus == 0 || row.approvalStatus == 3"
-            @click="open('edit', row)"
-          >
-            编辑
-          </el-link>
+
           <el-popconfirm
             class="ele-action"
             title="确定要删除吗?"
@@ -124,57 +116,46 @@
               </el-link>
             </template>
           </el-popconfirm>
+ 
           <el-link
             type="primary"
             :underline="false"
             icon="el-icon-circle-plus-outline"
-            v-if="row.approvalStatus == 2&&row.exceptionClose==2"
-            @click="dispose(row)"
+            v-if="(row.approvalStatus == 0 || row.approvalStatus == 3)&&(!row.exceptionClose||row.exceptionClose==2)"
+            @click="submit(row.id)"
           >
-            处置
+            提交
           </el-link>
+        </template> -->
+         <template v-slot:action="{ row }">
           <el-link
             type="primary"
             :underline="false"
-            icon="el-icon-circle-plus-outline"
-            v-if="(row.approvalStatus == 0 || row.approvalStatus == 3)&&(!row.exceptionClose||row.exceptionClose==2)"
-            @click="submit(row.id)"
+            icon="el-icon-truck"
+            v-if="row.approvalStatus == 0 || row.approvalStatus == 3"
+            @click="dispose('edit', row)"
+          >
+            编辑
+          </el-link>
+        <el-link
+            type="primary"
+            :underline="false"
+            v-if="row.approvalStatus == 0||row.approvalStatus==3"
+            @click="submit(row)"
           >
             提交
           </el-link>
-        </template> -->
+          </template>
+          <dispose ref="disposeRef"></dispose>
       </ele-pro-table>
     </el-card>
-    <!-- <Create ref="create" @refresh="reload" />
-    <dispose ref="dispose" @refresh="reload" /> -->
-    
-    <ele-modal :visible.sync="visible" width="20vw" append-to-body>
-      <el-form ref="form" label-width="100px" class="create-form">
-        <el-form-item
-          label="审核人"
-          prop="qualityInspector"
-          style="margin-bottom: 20px"
-        >
-          <el-select
-            v-model="qualityInspector"
-            clearable
-            style="width: 100%"
-            :filterable="true"
-          >
-            <el-option
-              v-for="item in userOptions"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id"
-            />
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <template v-slot:footer>
-        <el-button @click="visible = false">取消</el-button>
-        <el-button type="primary" @click="submit()"> 确定 </el-button>
-      </template></ele-modal
-    >
+    <process-submit-dialog
+      :isNotNeedProcess="false"
+      :processSubmitDialogFlag.sync="processSubmitDialogFlag"
+      v-if="processSubmitDialogFlag"
+      ref="processSubmitDialogRef"
+      @reload="reload"
+    ></process-submit-dialog>
   </div>
 </template>
   
@@ -182,22 +163,22 @@
 import OrderSearch from '../components/order-search.vue';
 import dictMixins from '@/mixins/dictMixins';
 // import Create from '../components/create';
-// import dispose from '../components/dispose';
-
-// import { getList, remove,submit } from '@/api/exceptionManagement/index';
-// import { listAllUserBind } from '@/api/bpm/index';
-// import { btnList } from '../components/transition';
+import dispose from '../components/addOrEditDialog';
+import { getList, remove,submit } from '@/api/exceptionManagement/index';
+import { relationType } from '@/enum/dict.js';
+import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
 
 export default {
   components: {
     OrderSearch,
-    // Create,dispose
+    dispose,processSubmitDialog
   },
   mixins: [dictMixins],
   data() {
     return {
       visible: false,
       loading: false,
+      processSubmitDialogFlag: false,
       releasParams: {
         teamId: '',
         id: ''
@@ -228,12 +209,7 @@ export default {
           showOverflowTooltip: true,
           fixed: 'left'
         },
-        {
-          prop: 'type',
-          label: '类型',
-          align: 'center',
-          slot: 'type'
-        },
+     
         {
           prop: 'code',
           label: '编码',
@@ -246,40 +222,48 @@ export default {
           align: 'center'
         },
         {
-          prop: 'describes',
-          label: '异常描述',
-          align: 'center'
-        },
-        {
-          prop: 'disposalStatus',
-          label: '处置类型',
+          prop: 'progress',
+          label: '进度',
           align: 'center',
           formatter: (row, column, cellValue) => {
-            return btnList.find(item=>item.type==cellValue)?.name
+            return cellValue == 1
+              ? '处置中'
+              :cellValue == 2
+              ? '处置完毕':cellValue == 3
+              ? '暂时搁置':cellValue == 4
+              ? '关闭':'未开始';
           }
         },
+        
+        // {
+        //   prop: 'describes',
+        //   label: '异常描述',
+        //   align: 'center'
+        // },
+        // {
+        //   prop: 'disposalStatus',
+        //   label: '处置类型',
+        //   align: 'center',
+
+        // },
         {
           prop: 'relationType',
-          label: '关联类型',
+          label: '来源类型',
           align: 'center',
           formatter: (row, column, cellValue) => {
-            return cellValue == 1
-              ? '生产计划'
-              : cellValue == 2
-              ? '生产订单'
-              : '生产工单';
+            return relationType[cellValue]||''
           }
         },
         {
           prop: 'relationCode',
-          label: '关联编码',
+          label: '来源编码',
+          align: 'center'
+        },
+        {
+          prop: 'relationName',
+          label: '来源名称',
           align: 'center'
         },
-        // {
-        //   prop: 'a',
-        //   label: '关联名称',
-        //   align: 'center'
-        // },
 
         {
           prop: 'createUserName',
@@ -295,7 +279,7 @@ export default {
 
         {
           prop: 'approvalStatus',
-          label: '状态',
+          label: '审批状态',
           align: 'center',
           slot: 'approvalStatus'
         },
@@ -303,7 +287,7 @@ export default {
         {
           columnKey: 'action',
           label: '操作',
-          width: 240,
+          width: 140,
           align: 'center',
           resizable: false,
           fixed: 'right',
@@ -324,12 +308,11 @@ export default {
   filters: {},
   methods: {
     //处置
-    dispose(row) {
-      this.$refs.dispose.open(row);
+    dispose(type,row) {
+      this.$refs.disposeRef.open(type,row);
     },
     /* 表格数据源 */
     datasource({ page, limit, where }) {
-      return[]
       return getList({
         pageNum: page,
         size: limit,
@@ -347,23 +330,21 @@ export default {
       });
     },
     
-    submit(id) {
-      if(id){
-        this.visible=true
-        this.viewId=id
-        return;
-      }
-      if (!this.qualityInspector) {
-        this.$message.error('审核人不能为空');
-        return;
-      }
-      submit({businessId: this.viewId,approvalUserId:this.qualityInspector}).then((res) => {
-        this.$message.success('提交' + res.message);
-        this.reload();
-        this.visible=false
-      });
-      
-    },
+    async submit(res) {
+        this.processSubmitDialogFlag = true;
+
+        this.$nextTick(() => {
+          let params = {
+            businessId: res.id,
+            businessKey: 'eom_exception_approve',
+            formCreateUserId: res.createUserId,
+            variables: {
+              businessCode:res.code
+            }
+          };
+          this.$refs.processSubmitDialogRef.init(params);
+        });
+      },
     /* 刷新表格 */
     reload(where) {
       this.$nextTick(() => {

+ 2 - 0
src/views/saleManage/saleOrder/invoice/components/addInvoiceDialog.vue

@@ -352,6 +352,7 @@
               payAmount,
               projectName,
               projectId,
+              totalPrice,
               receiveAddress
             } = data;
             if (productList && productList.length > 0) {
@@ -372,6 +373,7 @@
               trakNoteList,
               trayList,
               totalAmount,
+              totalPrice,
               payAmount,
               projectName,
               projectId

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

@@ -444,7 +444,8 @@
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1 ? '数量' :  row.pricingWay == 2 ? '重量':'';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
           {

+ 2 - 1
src/views/saleManage/saleOrder/invoice/components/inventoryTable.vue

@@ -587,7 +587,8 @@
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1 ? '数量' : '重量';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
           {

+ 59 - 58
src/views/saleManage/saleOrder/invoiceConfirm/components/addInvoiceDialog.vue

@@ -152,14 +152,6 @@
     </el-form>
     <el-tabs v-model="activeName" style="margin-top: 15px" type="border-card">
       <el-tab-pane label="收货产品明细" name="first">
-        <el-button
-          size="small"
-          type="primary"
-          icon="el-icon-plus"
-          class="ele-btn-icon"
-          @click="handlAdd"
-          >选择出库单
-        </el-button>
         <ele-pro-table
           ref="table"
           :needPage="false"
@@ -168,20 +160,30 @@
           :datasource="form.productList"
           row-key="id"
         >
-        <template v-slot:action="{ $index }">
-        <el-popconfirm
-       
-          class="ele-action"
-          title="确定要删除吗?"
-          @confirm="remove($index)"
-        >
-          <template v-slot:reference>
-            <el-link type="danger" :underline="false" icon="el-icon-delete">
-              删除
-            </el-link>
+          <template v-slot:isException="scope">
+              <el-select v-model="scope.row.isException" placeholder="请选择">
+                <el-option
+                  v-for="item in options"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                >
+                </el-option>
+              </el-select>
           </template>
-        </el-popconfirm>
-      </template>
+          <!-- <template v-slot:action="{ $index }">
+            <el-popconfirm
+              class="ele-action"
+              title="确定要删除吗?"
+              @confirm="remove($index)"
+            >
+              <template v-slot:reference>
+                <el-link type="danger" :underline="false" icon="el-icon-delete">
+                  删除
+                </el-link>
+              </template>
+            </el-popconfirm>
+          </template> -->
         </ele-pro-table>
       </el-tab-pane>
 
@@ -342,6 +344,7 @@
       };
 
       return {
+        
         fullscreen: false,
         outboundDetailsDialogFlag: false,
         payWayOptions: [],
@@ -356,7 +359,10 @@
         row: {},
         activeName: 'first',
         formDef,
-
+        options:[
+          {value:0,label:'已收货'},
+          {value:1,label:'未收货'},
+        ],
         qualityStatus: {
           0: '未质检',
           1: '已质检'
@@ -460,16 +466,17 @@
             showOverflowTooltip: true,
             align: 'center'
           },
-          {
-            width: 160,
-            prop: 'pricingWay',
-            label: '计价方式',
-            slot: 'pricingWay',
-            align: 'center',
-            formatter: (row, column) => {
-              return row.pricingWay == 1 ? '数量' : '重量';
-            }
-          },
+          // {
+          //   width: 160,
+          //   prop: 'pricingWay',
+          //   label: '计价方式',
+          //   slot: 'pricingWay',
+          //   align: 'center',
+          //   formatter: (row, column) => {
+          //     return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
+          //   }
+          // },
           {
             width: 100,
             prop: 'singlePrice',
@@ -487,7 +494,7 @@
 
           {
             minWidth: 80,
-            prop: 'receiveTotalWeight',
+            prop: 'sendTotalWeight',
             label: '重量',
             showOverflowTooltip: true,
             align: 'center'
@@ -508,14 +515,12 @@
             align: 'center'
           },
           {
-            columnKey: 'action',
-            label: '操作',
             width: 120,
+            slot: 'isException',
+            prop: 'isException',
+            label: '收货状态',
             align: 'center',
-            resizable: false,
-            slot: 'action',
-            fixed: 'right',
-            showOverflowTooltip: true
+            fixed: 'right'
           }
         ],
 
@@ -709,6 +714,7 @@
             align: 'center'
           },
 
+
           {
             width: 160,
             prop: 'singlePrice',
@@ -795,16 +801,6 @@
             label: '备注',
             slot: 'remark',
             align: 'center'
-          },
-          {
-            width: 120,
-            prop: 'isException',
-            label: '状态',
-            align: 'center',
-            fixed: 'right',
-            formatter: (_row) => {
-              return _row.isException == 1 ? '异常' : '无异常';
-            }
           }
         ];
       }
@@ -849,31 +845,38 @@
       handleSelectGoods(list) {
         this.outboundDetailsDialogFlag = true;
         this.$nextTick(() => {
-          this.$refs.outboundDetailsDialogRef.init(this.form, list);
+          this.$refs.outboundDetailsDialogRef.init({...this.form,type:10}, list);
         });
       },
       saveDate(data) {
+        console.log(data,'data')
         data.forEach((item) => {
           item['totalCount'] = item.measureQuantity;
           item['qmsResult'] = item.result;
           item['qmsStatus'] = item.status;
-
+          item['sendProductId'] = item.categoryId;
+          item['sendTotalWeight'] = item.weight;
+          
           this.productList.forEach((val) => {
             if (item.productCode == val.productCode) {
               item['singlePrice'] = val.singlePrice;
               item['clientCode'] = item.clientCode || val.customerMark;
-              item['pricingWay'] = item.pricingWay || this.form.pricingWay || 1;
+              item['pricingWay'] = val.pricingWay || this.form.pricingWay || 1;
+
               if (item.pricingWay == 1) {
                 item.totalPrice = item.singlePrice * item.totalCount;
               }
               if (item.pricingWay == 2) {
                 item.totalPrice =
-                  item.singlePrice * item.totalCount * receiveTotalWeight;
+                  item.singlePrice * item.totalCount * item.sendTotalWeight;
               }
             }
           });
         });
         this.form.productList = data;
+        this.form.productList.forEach((item,index)=>{
+          this.$set(this.form.productList[index],'isException',0)
+        })
       },
       // //发货单确认详情
       async getSendSaleOrderDetail(id) {
@@ -974,10 +977,9 @@
       },
       // 添加
       handlAdd() {
-        if (!this.form.sendNo)
-          return this.$message.error('请先选择来源单据');
-          this.handleSelectGoods()
-       
+        if (!this.form.sendNo) return this.$message.error('请先选择来源单据');
+        this.handleSelectGoods();
+
         // this.$refs.productListRef.open(this.form.datasource);
       },
       async save(type) {
@@ -1053,7 +1055,6 @@
       },
       remove(index) {
         this.form.productList.splice(index, 1);
-    
       },
       reload() {
         this.cancel();

+ 435 - 411
src/views/saleManage/saleOrder/invoiceConfirm/components/detailDialog.vue

@@ -11,8 +11,11 @@
     width="70%"
     @close="cancel"
   >
-  <template slot="title">
-     <modalTitle :title="title" @setFullscreen="fullscreen=!fullscreen"></modalTitle>
+    <template slot="title">
+      <modalTitle
+        :title="title"
+        @setFullscreen="fullscreen = !fullscreen"
+      ></modalTitle>
     </template>
     <div class="switch">
       <div class="switch_left">
@@ -28,30 +31,22 @@
         </ul>
       </div>
     </div>
-    <div v-if="activeComp==='main'">
+    <div v-if="activeComp === 'main'">
       <el-form ref="form" :model="form" :rules="rules" label-width="140px">
         <headerTitle title="发货信息"></headerTitle>
         <el-row>
           <el-col :span="12">
-            <el-form-item
-              label="客户名称:"
-              prop="contactName">
+            <el-form-item label="客户名称:" prop="contactName">
               <el-input v-model="form.contactName" disabled></el-input>
             </el-form-item>
-            <el-form-item
-              label="客户联系人:"
-              prop="linkName">
+            <el-form-item label="客户联系人:" prop="linkName">
               <el-input v-model="form.linkName" disabled></el-input>
             </el-form-item>
-            <el-form-item
-              label="客户电话:"
-              prop="linkPhone">
+            <el-form-item label="客户电话:" prop="linkPhone">
               <el-input v-model="form.linkPhone" disabled></el-input>
             </el-form-item>
 
-            <el-form-item
-              label="客户地址:"
-              prop="partaAddress">
+            <el-form-item label="客户地址:" prop="partaAddress">
               <el-input v-model="form.partaAddress" disabled></el-input>
             </el-form-item>
             <!-- <el-form-item
@@ -61,9 +56,7 @@
                 <el-option label="按重量计费" :value="2"></el-option>
               </el-select>
             </el-form-item> -->
-            <el-form-item
-              label="发货附件:"
-              prop="sendFiles">
+            <el-form-item label="发货附件:" prop="sendFiles">
               <fileMain v-model="form.sendFiles" type="view"></fileMain>
               <!--            <div v-if="detailData.sendFiles && detailData.sendFiles?.length">-->
               <!--              <el-link-->
@@ -77,10 +70,7 @@
               <!--              >-->
               <!--            </div>-->
             </el-form-item>
-            <el-form-item
-              label="回执附件:"
-              prop="sendFiles"
-            >
+            <el-form-item label="回执附件:" prop="sendFiles">
               <fileMain v-model="form.repliedFiles" type="view"></fileMain>
               <!--            <div v-if="detailData.repliedFiles && detailData.repliedFiles?.length">-->
               <!--              <el-link-->
@@ -92,7 +82,6 @@
               <!--                {{ link.name }}</el-link>-->
               <!--            </div>-->
             </el-form-item>
-
           </el-col>
 
           <el-col :span="12">
@@ -104,24 +93,20 @@
               prop="carNo">
               <el-input v-model="form.carNo" disabled></el-input>
             </el-form-item> -->
-            <el-form-item
-              label="收货确认单编码:"
-              prop="entrustedCode">
+            <el-form-item label="收货确认单编码:" prop="entrustedCode">
               <el-input v-model="form.docNo" disabled></el-input>
             </el-form-item>
-<!--            <el-form-item-->
-<!--              label="受托收货单编码:"-->
-<!--              prop="entrustedCode">-->
-<!--              <el-input v-model="form.entrustedCode" disabled></el-input>-->
-<!--            </el-form-item>-->
-            <el-form-item
-              label="发货单编码:"
-              prop="docNo">
+            <!--            <el-form-item-->
+            <!--              label="受托收货单编码:"-->
+            <!--              prop="entrustedCode">-->
+            <!--              <el-input v-model="form.entrustedCode" disabled></el-input>-->
+            <!--            </el-form-item>-->
+            <el-form-item label="发货单编码:" prop="docNo">
               <el-input v-model="form.sendNo" disabled></el-input>
             </el-form-item>
-<!--            <el-form-item prop="orderNo" label="订单编码:">-->
-<!--              <el-input v-model="form.orderNo" disabled></el-input>-->
-<!--            </el-form-item>-->
+            <!--            <el-form-item prop="orderNo" label="订单编码:">-->
+            <!--              <el-input v-model="form.orderNo" disabled></el-input>-->
+            <!--            </el-form-item>-->
             <el-form-item prop="replied" label="是否回执:">
               <el-select v-model="form.replied" disabled style="width: 100%">
                 <el-option label="是" :value="1"></el-option>
@@ -129,33 +114,38 @@
               </el-select>
             </el-form-item>
 
-            <el-form-item
-              label="审核状态:"
-              prop="reviewStatus">
-              <el-select v-model="form.reviewStatus" disabled style="width: 100%">
-                <el-option v-for="item in reviewStatusEnum" :value="item.value" :label="item.label"></el-option>
+            <el-form-item label="审核状态:" prop="reviewStatus">
+              <el-select
+                v-model="form.reviewStatus"
+                disabled
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="item in reviewStatusEnum"
+                  :value="item.value"
+                  :label="item.label"
+                ></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item
-              label="制单人:"
-              prop="makerName">
+            <el-form-item label="制单人:" prop="makerName">
               <el-input v-model="form.makerName" disabled></el-input>
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
       <el-tabs type="border-card">
-      <el-tab-pane label="收货产品明细">
-        <ele-pro-table
-          ref="table"
-          :needPage="false"
-          :columns="columns"
-          :toolkit="[]"
-          :datasource="form.productList"
-          row-key="id"
-        >
-        </ele-pro-table>
-      </el-tab-pane>
+        <el-tab-pane label="收货产品明细">
+          <ele-pro-table
+            ref="table"
+            :needPage="false"
+            :columns="columns"
+            :toolkit="[]"
+            :datasource="form.productList"
+            row-key="id"
+          >
+
+          </ele-pro-table>
+        </el-tab-pane>
         <el-tab-pane label="托盘清单">
           <palletTable ref="palletTableRef" type="view"></palletTable>
         </el-tab-pane>
@@ -163,13 +153,19 @@
           <stowageTable ref="stowageTableRef" dialog-type="view"></stowageTable>
         </el-tab-pane>
         <el-tab-pane label="运输清单">
-          <taskInfoTable ref="taskInfoTableRef" dialog-type="view"></taskInfoTable>
+          <taskInfoTable
+            ref="taskInfoTableRef"
+            dialog-type="view"
+          ></taskInfoTable>
         </el-tab-pane>
       </el-tabs>
     </div>
 
-    <bpmDetail v-if="activeComp==='bpm'&&form.processInstanceId" :id="form.processInstanceId"></bpmDetail>
-<!--    <out-bound-details v-if="activeComp==='store'" ref="innerBoundDetailsRef"></out-bound-details>-->
+    <bpmDetail
+      v-if="activeComp === 'bpm' && form.processInstanceId"
+      :id="form.processInstanceId"
+    ></bpmDetail>
+    <!--    <out-bound-details v-if="activeComp==='store'" ref="innerBoundDetailsRef"></out-bound-details>-->
     <div slot="footer" class="footer">
       <el-button @click="cancel">返回</el-button>
     </div>
@@ -177,54 +173,58 @@
 </template>
 
 <script>
-import {getFile} from '@/api/system/file';
-import dictMixins from '@/mixins/dictMixins';
-import {reviewStatusEnum} from '@/enum/dict';
-import {copyObj} from '@/utils/util';
-import {getSendSaleOrderrecordDetailSplit} from '@/api/saleManage/saleordersendrecord';
-import bpmDetail from '@/views/bpm/processInstance/detail.vue';
-import outBoundDetails from "@/BIZComponents/outdetails.vue";
-import taskInfoTable from "@/views/saleManage/saleOrder/invoice/components/taskInfoTable.vue";
-import stowageTable from "@/views/saleManage/saleOrder/invoice/components/stowageTable.vue";
-import getDynamicsColumns from "@/mixins/getDynamicsColumns";
-import fileMain from "@/components/addDoc/index.vue";
-import PalletTable from "@/views/saleManage/saleOrder/invoice/components/palletTable.vue";
-import {getSendSaleOrderConfirmDetail, getSendSaleOrderConfirmDetailSplit} from "@/api/saleManage/invoiceConfirm";
-import modalTitle from '@/BIZComponents/modalTitle.vue';
-
+  import { getFile } from '@/api/system/file';
+  import dictMixins from '@/mixins/dictMixins';
+  import { reviewStatusEnum } from '@/enum/dict';
+  import { copyObj } from '@/utils/util';
+  import { getSendSaleOrderrecordDetailSplit } from '@/api/saleManage/saleordersendrecord';
+  import bpmDetail from '@/views/bpm/processInstance/detail.vue';
+  import outBoundDetails from '@/BIZComponents/outdetails.vue';
+  import taskInfoTable from '@/views/saleManage/saleOrder/invoice/components/taskInfoTable.vue';
+  import stowageTable from '@/views/saleManage/saleOrder/invoice/components/stowageTable.vue';
+  import getDynamicsColumns from '@/mixins/getDynamicsColumns';
+  import fileMain from '@/components/addDoc/index.vue';
+  import PalletTable from '@/views/saleManage/saleOrder/invoice/components/palletTable.vue';
+  import {
+    getSendSaleOrderConfirmDetail,
+    getSendSaleOrderConfirmDetailSplit
+  } from '@/api/saleManage/invoiceConfirm';
+  import modalTitle from '@/BIZComponents/modalTitle.vue';
 
-export default {
-  mixins: [dictMixins, getDynamicsColumns],
-  components: {
-    PalletTable,
-    fileMain,
-    taskInfoTable,
-    outBoundDetails,
-    bpmDetail, stowageTable,modalTitle
-  },
-  data() {
-    return {
-      fullscreen:false,
+  export default {
+    mixins: [dictMixins, getDynamicsColumns],
+    components: {
+      PalletTable,
+      fileMain,
+      taskInfoTable,
+      outBoundDetails,
+      bpmDetail,
+      stowageTable,
+      modalTitle
+    },
+    data() {
+      return {
+        fullscreen: false,
 
-      activeComp: 'main',
-      tabOptions: [
-        {key: 'main', name: '收货确认单详情'},
-        {key: 'bpm', name: '流程详情'},
-        // {key: 'store', name: '出库单详情'},
-      ],
-      reviewStatusEnum,
-      visible: false,
-      outboundDetailsDialogFlag: false,
-      detailId: '',
-      title: '详情',
-      row: {},
-      activeName: 'base',
-      form: {
-        orderFiles: []
-      },
-      rules: {},
-      detailData: {},
-      columns: [
+        activeComp: 'main',
+        tabOptions: [
+          { key: 'main', name: '收货确认单详情' },
+          { key: 'bpm', name: '流程详情' }
+          // {key: 'store', name: '出库单详情'},
+        ],
+        reviewStatusEnum,
+        visible: false,
+        outboundDetailsDialogFlag: false,
+        detailId: '',
+        title: '详情',
+        row: {},
+        activeName: 'base',
+        form: {
+          orderFiles: []
+        },
+        rules: {},
+        detailData: {},
+        columns: [
           {
             width: 45,
             type: 'index',
@@ -326,7 +326,8 @@ export default {
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1 ? '数量' : '重量';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
           {
@@ -366,333 +367,356 @@ export default {
             slot: 'remark',
             align: 'center'
           },
+
           {
-            columnKey: 'action',
-            label: '操作',
-            width: 120,
-            align: 'center',
-            resizable: false,
-            slot: 'action',
+            width: 150,
+            prop: 'isException',
+            label: '收货状态',
+            slot: 'isException',
+            formatter: (row, column) => {
+              return row.isException == 1
+                ? '未收货'
+                : '已收货'
+            },
             fixed: 'right',
-            showOverflowTooltip: true
+            align: 'center'
           }
+          // {
+          //   columnKey: 'action',
+          //   label: '操作',
+          //   width: 120,
+          //   align: 'center',
+          //   resizable: false,
+          //   slot: 'action',
+          //   fixed: 'right',
+          //   showOverflowTooltip: true
+          // }
         ],
-      childrenColumns: [
-        {
-          width: 45,
-          type: 'index',
-          columnKey: 'index',
-          align: 'center',
-          fixed: 'left',
-        },
-        {
-          minWidth: 100,
-          prop: 'code',
-          label: '编码',
-          align: 'center',
-        },
-        {
-          minWidth: 140,
-          prop: 'barcodes',
-          label: '发货条码',
-          align: 'center',
-        },
-        {
-          minWidth: 100,
-          prop: 'engrave',
-          label: '刻码',
-          align: 'center',
-        }
-      ],
-
-    };
-  },
-  computed: {
-    competAnalysisListcolumns() {
-      return [
-        {
-          width: 45,
-          type: 'index',
-          columnKey: 'index',
-          align: 'center',
-          fixed: 'left'
-        },
-        {
-          width: 200,
-          prop: 'productName',
-          label: '名称',
-          slot: 'productName',
-          align: 'center',
-        },
-        {
-          width: 120,
-          prop: 'productCode',
-          label: '编码',
-          slot: 'productCode',
-          align: 'center',
-        },
-        {
-          width: 200,
-          prop: 'productCategoryName',
-          label: '类型',
-          slot: 'productCategoryName',
-          align: 'center',
-        },
-        {
-          width: 160,
-          prop: 'productBrand',
-          label: '牌号',
-          slot: 'productBrand',
-          align: 'center',
-        },
-        {
-          width: 160,
-          prop: 'batchNo',
-          label: '批次号',
-          slot: 'batchNo',
-          align: 'center',
-        },
-        {
-          width: 120,
-          prop: 'modelType',
-          label: '型号',
-          slot: 'modelType',
-          align: 'center',
-        },
-        {
-          width: 120,
-          prop: 'specification',
-          label: '规格',
-          slot: 'specification',
-          align: 'center',
-        },
+        childrenColumns: [
+          {
+            width: 45,
+            type: 'index',
+            columnKey: 'index',
+            align: 'center',
+            fixed: 'left'
+          },
+          {
+            minWidth: 100,
+            prop: 'code',
+            label: '编码',
+            align: 'center'
+          },
+          {
+            minWidth: 140,
+            prop: 'barcodes',
+            label: '发货条码',
+            align: 'center'
+          },
+          {
+            minWidth: 100,
+            prop: 'engrave',
+            label: '刻码',
+            align: 'center'
+          }
+        ]
+      };
+    },
+    computed: {
+      competAnalysisListcolumns() {
+        return [
+          {
+            width: 45,
+            type: 'index',
+            columnKey: 'index',
+            align: 'center',
+            fixed: 'left'
+          },
+          {
+            width: 200,
+            prop: 'productName',
+            label: '名称',
+            slot: 'productName',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'productCode',
+            label: '编码',
+            slot: 'productCode',
+            align: 'center'
+          },
+          {
+            width: 200,
+            prop: 'productCategoryName',
+            label: '类型',
+            slot: 'productCategoryName',
+            align: 'center'
+          },
+          {
+            width: 160,
+            prop: 'productBrand',
+            label: '牌号',
+            slot: 'productBrand',
+            align: 'center'
+          },
+          {
+            width: 160,
+            prop: 'batchNo',
+            label: '批次号',
+            slot: 'batchNo',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'modelType',
+            label: '型号',
+            slot: 'modelType',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'specification',
+            label: '规格',
+            slot: 'specification',
+            align: 'center'
+          },
 
-        {
-          width: 200,
-          prop: 'customerMark',
-          label: '客户代号',
-          slot: 'customerMark',
-          align: 'center',
-        },
-        {
-          width: 200,
-          prop: 'warehouseName',
-          label: '仓库名称',
-          slot: 'warehouseName',
-          align: 'center',
-        },
-        {
-          width: 100,
-          prop: 'stockLedger',
-          label: '发货明细',
-          slot: 'stockLedger',
-          align: 'center'
-        },
+          {
+            width: 200,
+            prop: 'customerMark',
+            label: '客户代号',
+            slot: 'customerMark',
+            align: 'center'
+          },
+          {
+            width: 200,
+            prop: 'warehouseName',
+            label: '仓库名称',
+            slot: 'warehouseName',
+            align: 'center'
+          },
+          {
+            width: 100,
+            prop: 'stockLedger',
+            label: '发货明细',
+            slot: 'stockLedger',
+            align: 'center'
+          },
 
-        {
-          width: 120,
-          prop: 'sendTotalCount',
-          label: '发货数量',
-          align: 'center',
-        },
-        {
+          {
+            width: 120,
+            prop: 'sendTotalCount',
+            label: '发货数量',
+            align: 'center'
+          },
+          {
             width: 120,
             prop: 'totalCount',
             label: '实收数量',
             slot: 'totalCount',
             align: 'center'
           },
-        {
-          width: 120,
-          prop: 'measuringUnit',
-          label: '计量单位',
-          slot: 'measuringUnit',
-          align: 'center',
-        },
-        {
-          width: 120,
-          prop: 'singleWeight',
-          label: '单重',
-          slot: 'singleWeight',
-          align: "center"
-        },
-        {
-          width: 100,
-          prop: 'receiveTotalWeight',
-          label: '收货总重',
-          slot: 'receiveTotalWeight',
-          align: "center"
-        },
-        {
-          width: 200,
-          prop: 'sendTotalWeight',
-          label: '发货总重',
-          slot: 'sendTotalWeight',
-          align: "center",
-          headerSlot: 'headerTotalCount'
-        },
+          {
+            width: 120,
+            prop: 'measuringUnit',
+            label: '计量单位',
+            slot: 'measuringUnit',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'singleWeight',
+            label: '单重',
+            slot: 'singleWeight',
+            align: 'center'
+          },
+          {
+            width: 100,
+            prop: 'receiveTotalWeight',
+            label: '收货总重',
+            slot: 'receiveTotalWeight',
+            align: 'center'
+          },
+          {
+            width: 200,
+            prop: 'sendTotalWeight',
+            label: '发货总重',
+            slot: 'sendTotalWeight',
+            align: 'center',
+            headerSlot: 'headerTotalCount'
+          },
 
-        {
-          width: 100,
-          prop: 'increaseTotalWeight',
-          label: '增重重量',
-          slot: 'increaseTotalWeight',
-          align: "center"
-        },
-        {
-          width: 100,
-          prop: 'weightUnit',
-          label: '重量单位',
-          slot: 'weightUnit',
-          align: "center"
-        },
-        {
-          width: 160,
-          prop: 'singlePrice',
-          label: '单价',
-          slot: 'singlePrice',
-          align: 'center',
-        },
-        {
-          width: 160,
-          prop: 'discountSinglePrice',
-          label: '折后单价',
-          slot: 'discountSinglePrice',
-          align: 'center'
-        },
-        {
-          width: 120,
-          prop: 'totalPrice',
-          label: '合计',
-          slot: 'totalPrice',
-          align: 'center'
-        },
-        {
-          width: 120,
-          prop: 'discountTotalPrice',
-          label: '折后合计',
-          slot: 'discountTotalPrice',
-          align: 'center'
-        },
-        //...this.dynamicsColumns,
-        {
-          width: 120,
-          prop: 'deliveryDays',
-          label: '交期(天)',
-          slot: 'deliveryDays',
-          align: 'center',
-        },
-        {
-          width: 200,
-          prop: 'guaranteePeriod',
-          label: '质保期',
-          slot: 'guaranteePeriod',
-          formatter: (_row, _column, cellValue) => {
-            return (_row.guaranteePeriod || '') + (_row.guaranteePeriodUnitName|| '');
-          },
-          align: 'center',
-        },
-        // {
-        //   width: 120,
-        //   prop: 'guaranteePeriodUnitCode',
-        //   label: '',
-        //   slot: 'guaranteePeriodUnitCode'
-        // },
-        {
-          width: 120,
-          prop: 'technicalAnswerName',
-          label: '技术答疑人',
-          slot: 'technicalAnswerName',
-          align: 'center',
-        },
-        {
-          width: 220,
-          prop: 'technicalParams',
-          label: '技术参数',
-          slot: 'technicalParams',
-          align: 'center',
-        },
-        {
-          width: 240,
-          prop: 'technicalDrawings',
-          label: '技术图纸',
-          slot: 'technicalDrawings',
-          formatter: (_row, _column, cellValue) => {
-            return (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName;
-          },
-          align: 'center',
-        },
-        {
-          width: 220,
-          prop: 'remark',
-          label: '备注',
-          slot: 'remark',
-          align: 'center',
-        }
-      ]
-    }
-  },
-  methods: {
-    async open(row) {
-      this.form = row;
-      this.visible = true;
-      await this.getDetailData(row.id);
-      this.detailId = row.id;
-    },
-    handleTag(val) {
-      this.activeComp = val
-      if (val == 'store') {
-        this.$nextTick(() => {
-          this.$refs.innerBoundDetailsRef._getInfo(this.form.docNo);
-        })
+          {
+            width: 100,
+            prop: 'increaseTotalWeight',
+            label: '增重重量',
+            slot: 'increaseTotalWeight',
+            align: 'center'
+          },
+          {
+            width: 100,
+            prop: 'weightUnit',
+            label: '重量单位',
+            slot: 'weightUnit',
+            align: 'center'
+          },
+          {
+            width: 160,
+            prop: 'singlePrice',
+            label: '单价',
+            slot: 'singlePrice',
+            align: 'center'
+          },
+          {
+            width: 160,
+            prop: 'discountSinglePrice',
+            label: '折后单价',
+            slot: 'discountSinglePrice',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'totalPrice',
+            label: '合计',
+            slot: 'totalPrice',
+            align: 'center'
+          },
+          {
+            width: 120,
+            prop: 'discountTotalPrice',
+            label: '折后合计',
+            slot: 'discountTotalPrice',
+            align: 'center'
+          },
+          //...this.dynamicsColumns,
+          {
+            width: 120,
+            prop: 'deliveryDays',
+            label: '交期(天)',
+            slot: 'deliveryDays',
+            align: 'center'
+          },
+          {
+            width: 200,
+            prop: 'guaranteePeriod',
+            label: '质保期',
+            slot: 'guaranteePeriod',
+            formatter: (_row, _column, cellValue) => {
+              return (
+                (_row.guaranteePeriod || '') +
+                (_row.guaranteePeriodUnitName || '')
+              );
+            },
+            align: 'center'
+          },
+          // {
+          //   width: 120,
+          //   prop: 'guaranteePeriodUnitCode',
+          //   label: '',
+          //   slot: 'guaranteePeriodUnitCode'
+          // },
+          {
+            width: 120,
+            prop: 'technicalAnswerName',
+            label: '技术答疑人',
+            slot: 'technicalAnswerName',
+            align: 'center'
+          },
+          {
+            width: 220,
+            prop: 'technicalParams',
+            label: '技术参数',
+            slot: 'technicalParams',
+            align: 'center'
+          },
+          {
+            width: 240,
+            prop: 'technicalDrawings',
+            label: '技术图纸',
+            slot: 'technicalDrawings',
+            formatter: (_row, _column, cellValue) => {
+              return (
+                (_row.guaranteePeriod || '') + _row.guaranteePeriodUnitName
+              );
+            },
+            align: 'center'
+          },
+          {
+            width: 220,
+            prop: 'remark',
+            label: '备注',
+            slot: 'remark',
+            align: 'center'
+          }
+        ];
       }
     },
-    cancel() {
-      this.$nextTick(() => {
-        // 关闭后,销毁所有的表单数据
-        (this.form = copyObj(this.formDef)),
-          (this.otherForm = copyObj(this.otherFormDef)),
-          (this.tableBankData = []);
-        this.tableLinkData = [];
-        this.visible = false;
-      });
-    },
-    downloadFile(file) {
-      getFile({objectName: file.storePath}, file.name);
-    },
-    async getDetailData(id) {
-      this.loading = true;
-      const data = await getSendSaleOrderConfirmDetail(id);
-      this.loading = false;
-      if (data) {
-        this.form = data;
-        this.detailData = data;
-        this.$refs.taskInfoTableRef && this.$refs.taskInfoTableRef.putTableValue(data.logisticTrakListNoteVOList)
-        this.$refs.stowageTableRef && this.$refs.stowageTableRef.putTableValue(data.carList)
-        this.$refs.palletTableRef && this.$refs.palletTableRef.putTableValue(data.trayList);
-        this.form.pricingWay = data?.saleOrder?.pricingWay
+    methods: {
+      async open(row) {
+        this.form = row;
+        this.visible = true;
+        await this.getDetailData(row.id);
+        this.detailId = row.id;
+      },
+      handleTag(val) {
+        this.activeComp = val;
+        if (val == 'store') {
+          this.$nextTick(() => {
+            this.$refs.innerBoundDetailsRef._getInfo(this.form.docNo);
+          });
+        }
+      },
+      cancel() {
+        this.$nextTick(() => {
+          // 关闭后,销毁所有的表单数据
+          (this.form = copyObj(this.formDef)),
+            (this.otherForm = copyObj(this.otherFormDef)),
+            (this.tableBankData = []);
+          this.tableLinkData = [];
+          this.visible = false;
+        });
+      },
+      downloadFile(file) {
+        getFile({ objectName: file.storePath }, file.name);
+      },
+      async getDetailData(id) {
+        this.loading = true;
+        const data = await getSendSaleOrderConfirmDetail(id);
+        this.loading = false;
+        if (data) {
+          this.form = data;
+          this.detailData = data;
+          this.$refs.taskInfoTableRef &&
+            this.$refs.taskInfoTableRef.putTableValue(
+              data.logisticTrakListNoteVOList
+            );
+          this.$refs.stowageTableRef &&
+            this.$refs.stowageTableRef.putTableValue(data.carList);
+          this.$refs.palletTableRef &&
+            this.$refs.palletTableRef.putTableValue(data.trayList);
+          this.form.pricingWay = data?.saleOrder?.pricingWay;
+        }
       }
     }
-  }
-};
+  };
 </script>
 
 <style scoped lang="scss">
-.ele-dialog-form {
-  .el-form-item {
-    margin-bottom: 10px;
+  .ele-dialog-form {
+    .el-form-item {
+      margin-bottom: 10px;
+    }
   }
-}
 
-.headbox {
-  display: flex;
-  justify-content: flex-start;
-  align-items: center;
+  .headbox {
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
 
-  .amount {
-    font-size: 14px;
-    font-weight: bold;
-    margin-right: 20px;
+    .amount {
+      font-size: 14px;
+      font-weight: bold;
+      margin-right: 20px;
+    }
   }
-}
 </style>

+ 2 - 1
src/views/saleManage/saleOrder/returnGoods/components/detailDialog.vue

@@ -563,7 +563,8 @@
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1 ? '数量' : '重量';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
           {

+ 13 - 5
src/views/saleManage/saleOrder/returnGoods/components/inventoryTable.vue

@@ -166,7 +166,7 @@
           />
         </el-form-item>
       </template>
-      <template v-slot:returnType="{ row, $index }">
+      <!-- <template v-slot:returnType="{ row, $index }">
         <el-form-item
           style="margin-bottom: 20px"
           :prop="'datasource.' + $index + '.returnType'"
@@ -177,7 +177,7 @@
             v-model="row.returnType"
           />
         </el-form-item>
-      </template>
+      </template> -->
       <template v-slot:totalCount="scope">
         <el-form-item
           style="margin-bottom: 20px"
@@ -449,7 +449,8 @@
             slot: 'pricingWay',
             align: 'center',
             formatter: (row, column) => {
-              return row.pricingWay == 1 ? '数量' : '重量';
+              return row.pricingWay == 1 ? '按数量计费' : row.pricingWay == 2 ? '按重量计费':'';
+
             }
           },
           {
@@ -522,7 +523,14 @@
           //   label: '采购日期',
           //   align: 'center'
           // },
-
+          {
+            minWidth: 100,
+            prop: 'renturnType',
+            label: '状态',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+          
           {
             minWidth: 200,
             prop: 'returnReason',
@@ -766,7 +774,7 @@
         if (data) {
           data.forEach((v) => {
             // v.returnReason = v.returnReason || '';
-            v.returnType = '';
+            // v.returnType = '';
             v.sendTotalCount = v.packingQuantity || 0;
             v.sendProductId = v.sendProductId || v.categoryId;
           });