gaoluyang
2025-12-05 448cbb8d651e4c52817389f43075338192f4c133
src/views/procurementManagement/invoiceEntry/components/Modal.vue
@@ -33,16 +33,7 @@
            />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="项目名称:" prop="projectName">
            <el-input
              v-model="form.projectName"
              placeholder="自动填充"
              clearable
              disabled
            />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="发票号:" prop="invoiceNumber">
            <el-input
@@ -58,6 +49,7 @@
              v-model="form.invoiceAmount"
              placeholder="自动填充"
              clearable
              :disabled="true"
            />
          </el-form-item>
        </el-col>
@@ -67,7 +59,6 @@
              v-model="form.issUer"
              placeholder="请输入"
              clearable
              disabled
            />
          </el-form-item>
        </el-col>
@@ -77,23 +68,9 @@
              style="width: 100%"
              v-model="form.entryDate"
              type="date"
              value-format="YYYY-MM-DD"
              format="YYYY-MM-DD"
              clearable
            />
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="上传附件">
            <FileUpload
              :showTip="false"
              accept="*"
              :autoUpload="true"
              :action="action"
              :headers="{
                Authorization: 'Bearer ' + getToken(),
              }"
              :limit="10"
              @success="uploadSuccess"
              @remove="removeFile"
            />
          </el-form-item>
        </el-col>
@@ -103,10 +80,28 @@
              style="width: 100%"
              v-model="form.enterDate"
              type="date"
              value-format="YYYY-MM-DD"
              format="YYYY-MM-DD"
              clearable
            />
          </el-form-item>
        </el-col>
            <el-col :span="12">
               <el-form-item label="上传附件">
                  <FileUpload
                     :showTip="false"
                     accept="*"
                     :autoUpload="true"
                     :action="action"
                     :headers="{
                Authorization: 'Bearer ' + getToken(),
              }"
                     :limit="10"
                     @success="uploadSuccess"
                     @remove="removeFile"
                  />
               </el-form-item>
            </el-col>
      </el-row>
      <el-form-item label="产品信息:"> </el-form-item>
      <PIMTable
@@ -123,6 +118,7 @@
            placeholder="请输入"
            :min="0"
            :step="0.1"
                  :precision="2"
            clearable
            style="width: 100%"
            @change="invoiceNumBlur(row)"
@@ -133,6 +129,7 @@
            v-model="row.ticketsAmount"
            placeholder="请输入"
            :min="0"
                  :precision="2"
            :step="0.1"
            clearable
            style="width: 100%"
@@ -142,16 +139,17 @@
      </PIMTable>
    </el-form>
    <template #footer>
         <el-button type="primary" :loading="modalLoading" @click="submitForm">
            {{ modalOptions.confirmText }}
         </el-button>
      <el-button @click="closeModal">{{ modalOptions.cancelText }}</el-button>
      <el-button type="primary" :loading="modalLoading" @click="submitForm">
        {{ modalOptions.confirmText }}
      </el-button>
    </template>
  </el-dialog>
</template>
<script setup>
import { ref, getCurrentInstance } from "vue";
import { defineEmits } from 'vue';
import { useModal } from "@/hooks/useModal";
import useFormData from "@/hooks/useFormData";
import FileUpload from "@/components/Upload/FileUpload.vue";
@@ -177,7 +175,6 @@
  purchaseLedgerNo: undefined, // 采购合同号
  salesContractNo: undefined, // 销售合同号
  supplierName: undefined, // 供应商名称
  projectName: undefined, // 项目名称
  invoiceNumber: undefined, // 发票号
  invoiceAmount: undefined, // 发票金额(元)
  issUerId: userStore.id, // 录入人
@@ -213,14 +210,18 @@
  title: "来票登记",
});
const emit = defineEmits(['refreshList']);
const columns = [
  {
    label: "产品大类",
    prop: "productCategory",
      width: 120,
  },
  {
    label: "规格型号",
    prop: "specificationModel",
      width: 120,
  },
  {
    label: "单位",
@@ -305,7 +306,6 @@
    const { data: infoData } = await getInfo({ id });
    form.salesContractNo = infoData.salesContractNo;
    form.projectName = infoData.projectName;
    form.supplierName = infoData.supplierName;
    form.productData = infoData.productData;
  } else if (type == "edit") {
@@ -314,7 +314,6 @@
    form.invoiceAmount = data.invoiceAmount;
    form.invoiceNumber = data.invoiceNumber;
    form.salesContractNo = data.salesContractNo;
    form.projectName = data.projectName;
    form.supplierName = data.supplierName;
    form.entryDate = data.entryDate;
    form.productData = data.productData;
@@ -377,7 +376,7 @@
  let invoiceAmountTotal = 0;
  form.productData.forEach((item) => {
    if (item.ticketsAmount) {
      invoiceAmountTotal += item.ticketsAmount;
      invoiceAmountTotal += Number(item.ticketsAmount);
    }
  });
  form.invoiceAmount = invoiceAmountTotal.toFixed(2);
@@ -399,17 +398,21 @@
  form.tempFileIds = form.tempFileIds.filter((item) => item !== tempId);
};
const closeAndRefresh = () => {
  closeModal();
  emit('refreshList');
};
const submitForm = () => {
  formRef.value.validate(async (valid, fields) => {
    if (valid) {
      modalLoading.value = true;
      // modalLoading.value = true;
      const { code } = await addOrUpdateRegistration({
        purchaseLedgerId: id.value,
        purchaseContractNumber: form.purchaseLedgerNo,
        invoiceNumber: form.invoiceNumber,
        invoiceAmount: form.invoiceAmount,
        salesContractNo: form.salesContractNo,
        projectName: form.projectName,
        productData: form.productData,
        issueDate: form.entryDate,
        issUerId: form.issUerId, // 录入人id
@@ -422,7 +425,7 @@
      });
      modalLoading.value = false;
      if (code == 200) {
        closeModal();
        closeAndRefresh();
      }
    } else {
      modalLoading.value = false;
@@ -432,6 +435,7 @@
defineExpose({
  open,
  closeAndRefresh,
});
</script>