huminmin
2026-03-16 2fc20934018994b7a8abe5199d717a29283cbb8e
协同审批:增加原料管理页面
已修改4个文件
74 ■■■■ 文件已修改
src/views/collaborativeApproval/approvalProcess/components/approvalDia.vue 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/collaborativeApproval/approvalProcess/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/qualityManagement/rawMaterial/components/formDia.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/qualityManagement/rawMaterial/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/collaborativeApproval/approvalProcess/components/approvalDia.vue
@@ -168,6 +168,43 @@
        </el-skeleton>
      </div>
      <div v-if="isRawMaterialApproval" style="margin: 10px 0 18px;">
        <el-divider content-position="left">原料详情</el-divider>
        <el-skeleton :loading="rawMaterialLoading" animated>
          <template #template>
            <el-skeleton-item variant="h3" style="width: 30%" />
            <el-skeleton-item variant="text" style="width: 100%" />
            <el-skeleton-item variant="text" style="width: 100%" />
          </template>
          <template #default>
            <el-empty v-if="!currentRawMaterial" description="未查询到对应原料详情" />
            <template v-else>
              <el-descriptions :column="2" border>
                <el-descriptions-item label="产品名称">{{ currentRawMaterial.productName }}</el-descriptions-item>
                <el-descriptions-item label="规格">{{ currentRawMaterial.model }}</el-descriptions-item>
                <el-descriptions-item label="单位">{{ currentRawMaterial.unit }}</el-descriptions-item>
                <el-descriptions-item label="批号">{{ currentRawMaterial.batchNo }}</el-descriptions-item>
                <el-descriptions-item label="检验类型">{{ currentRawMaterial.checkTypeText }}</el-descriptions-item>
                <el-descriptions-item label="检测结果">{{ currentRawMaterial.checkResultText }}</el-descriptions-item>
                <el-descriptions-item label="检验员">{{ currentRawMaterial.checkUserName }}</el-descriptions-item>
                <el-descriptions-item label="检测日期">{{ currentRawMaterial.checkTime }}</el-descriptions-item>
              </el-descriptions>
              <div style="margin-top: 20px;">
                <h4>检测项目明细</h4>
                <el-table :data="currentRawMaterial.qualityInspectItem || []" border style="width: 100%">
                  <el-table-column prop="name" label="检测项目" />
                  <el-table-column prop="unit" label="单位" />
                  <el-table-column prop="standardValue" label="标准值" />
                  <el-table-column prop="internalControl" label="内控值" />
                  <el-table-column prop="testValue" label="化验值" />
                </el-table>
              </div>
            </template>
          </template>
        </el-skeleton>
      </div>
      <el-form :model="{ activities }" ref="formRef" label-position="top">
        <el-steps :active="getActiveStep()" finish-status="success" process-status="process" align-center direction="vertical">
          <el-step
@@ -232,6 +269,7 @@
import { WarningFilled, Edit, Check, MoreFilled } from '@element-plus/icons-vue'
import { getQuotationList } from "@/api/salesManagement/salesQuotation.js";
import { getPurchaseByCode } from "@/api/procurementManagement/procurementLedger.js";
import {findRawMaterialDetail} from "@/api/qualityManagement/rawMaterial.js";
const emit = defineEmits(['close'])
const { proxy } = getCurrentInstance()
@@ -252,9 +290,12 @@
const quotationLoading = ref(false)
const currentQuotation = ref({})
const purchaseLoading = ref(false)
const rawMaterialLoading = ref(false)
const currentPurchase = ref({})
const currentRawMaterial = ref({})
const isQuotationApproval = computed(() => Number(props.approveType) === 6)
const isPurchaseApproval = computed(() => Number(props.approveType) === 5)
const isRawMaterialApproval = computed(() => Number(props.approveType) === 9)
const data = reactive({
    form: {
@@ -291,10 +332,12 @@
// 打开弹框
const openDialog = (type, row) => {
  console.log(type, row);
  operationType.value = type;
  dialogFormVisible.value = true;
  currentQuotation.value = {}
  currentPurchase.value = {}
  currentRawMaterial.value = {}
    userListNoPageByTenantId().then((res) => {
        userList.value = res.data;
    });
@@ -355,6 +398,15 @@
    }
  }
  if (isRawMaterialApproval.value) {
    rawMaterialLoading.value = true
    findRawMaterialDetail(row.approveRecordId).then(res => {
      currentRawMaterial.value = res.data;
    }).finally(() => {
      rawMaterialLoading.value = false
    })
  }
  approveProcessDetails(row.approveId).then((res) => {
    activities.value = res.data
    // 增加isApproval字段
src/views/collaborativeApproval/approvalProcess/index.vue
@@ -6,6 +6,7 @@
      <el-tab-pane label="请假管理" name="2"></el-tab-pane>
      <el-tab-pane label="出差管理" name="3"></el-tab-pane>
      <el-tab-pane label="报销管理" name="4"></el-tab-pane>
      <el-tab-pane label="原料管理" name="9"></el-tab-pane>
    </el-tabs>
    
    <div class="search_form">
@@ -35,7 +36,7 @@
        <el-button
          type="primary"
          @click="openForm('add')"
          v-if="currentApproveType !== 5 && currentApproveType !== 6 && currentApproveType !== 7"
          v-if="currentApproveType !== 5 && currentApproveType !== 6 && currentApproveType !== 7 && currentApproveType !== 9"
        >新增</el-button>
        <el-button @click="handleOut">导出</el-button>
        <el-button
@@ -216,6 +217,7 @@
          currentApproveType.value === 5 ||
          currentApproveType.value === 6 ||
          currentApproveType.value === 7 ||
          currentApproveType.value === 9 ||
          row.approveStatus == 2 ||
          row.approveStatus == 1 ||
          row.approveStatus == 4
@@ -297,6 +299,7 @@
    5: "/approveProcess/exportFive",
    6: "/approveProcess/exportSix",
    7: "/approveProcess/exportSeven",
    9: "/approveProcess/exportNine",
  }
  const url = urlMap[type] || urlMap[0]
  const nameMap = {
@@ -308,6 +311,7 @@
    5: "采购申请审批表",
    6: "报价审批表",
    7: "发货审批表",
    9: "原料审批表",
  }
  const fileName = nameMap[type] || nameMap[0]
  proxy.download(url, {}, `${fileName}.xlsx`)
src/views/qualityManagement/rawMaterial/components/formDia.vue
@@ -34,11 +34,6 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="批号:" prop="batchNo">
              <el-input style="width: 100%" v-model="form.batchNo" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
@@ -47,9 +42,8 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="数量(吨):" prop="quantity">
              <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="请输入"
                               clearable :precision="2" controls-position="right"/>
            <el-form-item label="批号:" prop="batchNo">
              <el-input style="width: 100%" v-model="form.batchNo" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
        </el-row>
@@ -147,7 +141,6 @@
    productName: "",
    productId: "",
    productModelId: "",
    quantity: undefined,
    model: "",
    batchNo: "",
    checkType: undefined,
@@ -160,7 +153,6 @@
    checkUserName: [{required: false, message: "请选择检验员", trigger: "blur"}],
    productId: [{required: true, message: "请输入", trigger: "blur"}],
    productModelId: [{required: true, message: "请选择产品型号", trigger: "change"}],
    quantity: [{required: true, message: "请输入数量", trigger: "blur"}],
    batchNo: [{required: true, message: "请输入批次", trigger: "blur"}],
    checkType: [{required: true, message: "请选择检验类型", trigger: "change"}],
    checkResult: [{required: true, message: "请选择检测结果", trigger: "change"}],
src/views/qualityManagement/rawMaterial/index.vue
@@ -108,10 +108,6 @@
    prop: "model",
  },
  {
    label: "数量(吨)",
    prop: "quantity",
  },
  {
    label: "批次号",
    prop: "batchNo",
    width: 120