Prechádzať zdrojové kódy

feat(采购收货): 新增生产性物资采购收货多人审批详情页

接入 purchase_receive_approve3 流程,详情只展示收货单不含入库单
lihaiting 1 týždeň pred
rodič
commit
46a31276dd

+ 88 - 0
src/views/bpm/handleTask/components/purchaseReceiveMultiApproval/detailDialog.vue

@@ -0,0 +1,88 @@
+<template>
+  <div class="ele-body" v-loading="loading">
+    <headerTitle title="收货单详情"></headerTitle>
+    <receiptInfo
+      v-if="form.id"
+      :form="form"
+      :detailData="form"
+      :taskDefinitionKey="taskDefinitionKey"
+    />
+  </div>
+</template>
+
+<script>
+  import {
+    getReceiveSaleOrderrecordDetail,
+    getReceiveTaskDetail
+  } from '@/api/bpm/components/purchasingManage/purchaseorderreceive';
+  import receiptInfo from '@/views/bpm/handleTask/components/purchaseOrder/invoice/receiptInfo.vue';
+
+  /**
+   * 生产性物资采购收货多人审批 - 详情
+   * 只展示「收货单详情 + 物品清单」,不含入库单(入库单在收货单审批流程里处理)
+   */
+  export default {
+    name: 'PurchaseReceiveMultiApprovalDetail',
+    components: { receiptInfo },
+    props: {
+      // 收货单主键
+      businessId: {
+        default: ''
+      },
+      taskId: {
+        default: ''
+      },
+      taskDefinitionKey: {
+        default: ''
+      },
+      // 流程实例主键
+      id: {
+        default: ''
+      }
+    },
+    data() {
+      return {
+        loading: false,
+        form: {
+          productList: [],
+          receiveFiles: [],
+          receiveNo: ''
+        }
+      };
+    },
+    watch: {
+      businessId: {
+        immediate: true,
+        handler() {
+          this.getInfo();
+        }
+      }
+    },
+    methods: {
+      async getInfo() {
+        if (!this.businessId) return;
+        this.loading = true;
+        try {
+          // 仓管节点用任务维度明细,其余节点用收货单详情
+          const detail =
+            this.taskDefinitionKey === 'storeManagerApprove'
+              ? await getReceiveTaskDetail(this.businessId, this.taskId)
+              : await getReceiveSaleOrderrecordDetail(this.businessId);
+          this.form = Object.assign(
+            { productList: [], receiveFiles: [], receiveNo: '' },
+            detail || {}
+          );
+        } catch (error) {
+          this.form = { productList: [], receiveFiles: [], receiveNo: '' };
+          this.$message.error(error.message || '收货单详情加载失败');
+        } finally {
+          this.loading = false;
+        }
+      },
+      // 详情只读,无编辑项;保留 save 供父级统一调用
+      save() {
+        return this.form;
+      }
+    }
+  };
+</script>

+ 134 - 0
src/views/bpm/handleTask/components/purchaseReceiveMultiApproval/submit.vue

@@ -0,0 +1,134 @@
+<template>
+  <el-col :span="16" :offset="6">
+    <el-form label-width="100px" ref="formRef" :model="form">
+      <el-form-item label="审批意见" style="margin-bottom: 20px">
+        <ApprovalOpinion ref="approvalOpinion" v-model="form.reason" />
+      </el-form-item>
+    </el-form>
+    <div style="margin-left: 10%; margin-bottom: 20px; font-size: 14px">
+      <el-button
+        icon="el-icon-edit-outline"
+        type="success"
+        size="mini"
+        :loading="isLoading"
+        v-click-once
+        @click="$refs.approvalOpinion.validate(1) && handleAudit(1)"
+        >通过
+      </el-button>
+      <el-button
+        icon="el-icon-circle-close"
+        type="danger"
+        size="mini"
+        :loading="isLoading"
+        v-click-once
+        @click="$refs.approvalOpinion.validate(0) && handleAudit(0)"
+        >驳回
+      </el-button>
+      <el-dropdown
+        @command="(command) => handleCommand(command)"
+        style="margin-left: 30px"
+      >
+        <span class="el-dropdown-link">
+          更多<i class="el-icon-arrow-down el-icon--right"></i>
+        </span>
+        <el-dropdown-menu slot="dropdown">
+          <el-dropdown-item command="cancel">作废</el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown>
+    </div>
+  </el-col>
+</template>
+
+<script>
+  import {
+    approveTaskWithVariables,
+    rejectTask,
+    cancelTask
+  } from '@/api/bpm/task';
+
+  /**
+   * 生产性物资采购收货多人审批 - 审批操作
+   * 详情只读,不涉及入库,只做通过 / 驳回 / 作废
+   */
+  export default {
+    name: 'PurchaseReceiveMultiApprovalSubmit',
+    props: {
+      businessId: {
+        default: ''
+      },
+      taskId: {
+        default: ''
+      },
+      id: {
+        default: ''
+      },
+      taskDefinitionKey: {
+        default: ''
+      }
+    },
+    data() {
+      return {
+        isLoading: false,
+        form: {
+          reason: '同意'
+        }
+      };
+    },
+    methods: {
+      async handleAudit(status) {
+        if (!this.form.reason && !!status) {
+          this.$message.warning('请填写审批意见');
+          return;
+        }
+        await this._approveTaskWithVariables(status);
+      },
+      handleCommand(command) {
+        if (command === 'cancel') {
+          this.$confirm('是否确认作废?', {
+            type: 'warning',
+            cancelButtonText: '取消',
+            confirmButtonText: '确定'
+          })
+            .then(() => {
+              cancelTask({
+                id: this.id,
+                taskId: this.taskId,
+                reason: this.form.reason,
+                businessId: this.businessId
+              })
+                .then(() => {
+                  this.$emit('handleClose');
+                })
+                .catch(() => {
+                  this.$message.error('流程作废失败');
+                });
+            })
+            .catch(() => {});
+        }
+      },
+      async _approveTaskWithVariables(status) {
+        const API = !!status ? approveTaskWithVariables : rejectTask;
+        try {
+          this.isLoading = true;
+          const res = await API({
+            id: this.taskId,
+            reason: this.form.reason,
+            variables: {
+              pass: !!status
+            }
+          });
+          if (res.data.code != '-1') {
+            this.$emit('handleAudit', {
+              status,
+              title: status === 0 ? '驳回' : ''
+            });
+          }
+        } finally {
+          this.isLoading = false;
+        }
+      }
+    }
+  };
+</script>
+
+<style lang="scss"></style>

+ 7 - 0
src/views/bpm/handleTask/index.vue

@@ -346,6 +346,13 @@
       pcView: '/bpm/handleTask/components/contact/contactDetailDialog.vue',
       pcHandle: '/bpm/handleTask/components/contact/submit.vue'
     },
+    // 生产性物资采购收货多人审批(只展示收货单详情,不含入库单)
+    purchase_receive_approve3: {
+      pcView:
+        '/bpm/handleTask/components/purchaseReceiveMultiApproval/detailDialog.vue',
+      pcHandle:
+        '/bpm/handleTask/components/purchaseReceiveMultiApproval/submit.vue'
+    },
     hr_recruit_hiring_approval: {
       pcView:
         '/bpm/handleTask/components/hiringApproval/hiringApprovalDetail.vue',