d5ca5d8855aa27f770e824a8f7159aedb239614d..94fc7aa616090838d703e3bc1576bb68f5c230c8
5 天以前 gaoluyang
1.来票台账附件上传接口中未传文件ID
94fc7a 对比 | 目录
5 天以前 gaoluyang
1.来票台账附件上传接口中未传文件ID
6e3bb3 对比 | 目录
5 天以前 gaoluyang
1.来票台账页面未做分页
792dde 对比 | 目录
5 天以前 gaoluyang
1.权限修改
ab931d 对比 | 目录
5 天以前 gaoluyang
1.销售台账筛选时,展开的内容需收回
e44ce4 对比 | 目录
5 天以前 gaoluyang
1.供应商档案缺少纳税人识别号字段展示
f936f4 对比 | 目录
5 天以前 gaoluyang
1.客户管理-编辑客户联系人和联系电话后保存。列表展示的联系人、联系电话还是编辑前的记录
b57f25 对比 | 目录
5 天以前 gaoluyang
1.新增入职合同开始结束时间做限制(合同起始时间匹配合同年限)
431c0d 对比 | 目录
5 天以前 gaoluyang
1.来票台账删除功能联调
736a4b 对比 | 目录
5 天以前 gaoluyang
1.付款登记-不能删除
642ce8 对比 | 目录
5 天以前 gaoluyang
1.付款登记-优化:删除权限优化
43f105 对比 | 目录
5 天以前 gaoluyang
1.采购管理-优化:不是本条数据录入人不可修改数据。表格展示优化、来票操作后,不能再次编辑。未进行开票、来票操作的台账可以进行编辑
b95f47 对比 | 目录
5 天以前 gaoluyang
1.基础数据-优化:部位本条数据录入人不可修改数据。表格展示优化
496521 对比 | 目录
5 天以前 gaoluyang
1.销售管理-优化:部位本条数据录入人不可修改数据。表格展示优化
482ed6 对比 | 目录
已修改18个文件
313 ■■■■ 文件已修改
src/api/procurementManagement/procurementInvoiceLedger.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/usePaginationApi.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/customerFile/index.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/supplierManage/index.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/receiptManagement/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/stockManagement/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/dimission/components/formDia.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/personnelManagement/onboarding/components/formDia.vue 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/invoiceEntry/components/Modal.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/invoiceEntry/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/paymentEntry/index.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/procurementInvoiceLedger/Modal/UploadModal.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/procurementInvoiceLedger/index.vue 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/procurementLedger/index.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/invoiceLedger/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/receiptPayment/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/receiptPaymentHistory/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/index.vue 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/procurementManagement/procurementInvoiceLedger.js
@@ -33,6 +33,14 @@
    data: query,
  });
}
// 删除来票台账
export function delRegistration(query) {
  return request({
    url: "/purchase/registration/delRegistration",
    method: "delete",
    data: query,
  });
}
// 删除附件
export function delCommonFile(query) {
  return request({
src/hooks/usePaginationApi.jsx
@@ -28,7 +28,7 @@
  /** 分页配置 */
  const pagination = reactive({
    pageSize: 10,
    pageSize: 100,
    currentPage: 1,
    pageSizes: [10, 15, 20],
    total: 0,
src/views/basicData/customerFile/index.vue
@@ -207,13 +207,13 @@
        <template #tip>
          <div class="el-upload__tip text-center">
            <span>仅允许导入xls、xlsx格式文件。</span>
            <el-link
              type="primary"
              :underline="false"
              style="font-size: 12px; vertical-align: baseline"
              @click="importTemplate"
              >下载模板</el-link
            >
<!--            <el-link-->
<!--              type="primary"-->
<!--              :underline="false"-->
<!--              style="font-size: 12px; vertical-align: baseline"-->
<!--              @click="importTemplate"-->
<!--              >下载模板</el-link-->
<!--            >-->
          </div>
        </template>
      </el-upload>
@@ -297,6 +297,7 @@
    dataType: "action",
    label: "操作",
    align: "center",
        fixed: 'right',
    operation: [
      {
        name: "编辑",
@@ -304,6 +305,9 @@
        clickFun: (row) => {
          openForm("edit", row);
        },
                disabled: (row) => {
                    return row.maintainer !== userStore.nickName
                }
      },
    ],
  },
@@ -478,6 +482,8 @@
};
// 提交修改
const submitEdit = () => {
    form.value.contactPerson = formYYs.value.contactList.map(item => item.contactPerson).join(",");
    form.value.contactPhone = formYYs.value.contactList.map(item => item.contactPhone).join(",");
  updateCustomer(form.value).then((res) => {
    proxy.$modal.msgSuccess("提交成功");
    closeDia();
@@ -507,6 +513,12 @@
const handleDelete = () => {
  let ids = [];
  if (selectedRows.value.length > 0) {
    // 检查是否有他人维护的数据
    const unauthorizedData = selectedRows.value.filter(item => item.maintainer !== userStore.nickName);
    if (unauthorizedData.length > 0) {
      proxy.$modal.msgWarning("不可删除他人维护的数据");
      return;
    }
    ids = selectedRows.value.map((item) => item.id);
  } else {
    proxy.$modal.msgWarning("请选择数据");
src/views/basicData/supplierManage/index.vue
@@ -244,6 +244,11 @@
    width: 250,
  },
  {
    label: "纳税人识别号",
    prop: "taxpayerIdentificationNum",
    width: 230,
  },
  {
    label: "公司地址",
    prop: "companyAddress",
    width: 220,
@@ -286,6 +291,7 @@
    dataType: "action",
    label: "操作",
    align: "center",
        fixed: 'right',
    operation: [
      {
        name: "编辑",
@@ -293,6 +299,9 @@
        clickFun: (row) => {
          openForm("edit", row);
        },
                disabled: (row) => {
                    return row.maintainUserName !== userStore.nickName
                }
      },
    ],
  },
@@ -470,6 +479,12 @@
const handleDelete = () => {
  let ids = [];
  if (selectedRows.value.length > 0) {
        // 检查是否有他人维护的数据
        const unauthorizedData = selectedRows.value.filter(item => item.maintainUserName !== userStore.nickName);
        if (unauthorizedData.length > 0) {
            proxy.$modal.msgWarning("不可删除他人维护的数据");
            return;
        }
    ids = selectedRows.value.map((item) => item.id);
  } else {
    proxy.$modal.msgWarning("请选择数据");
src/views/inventoryManagement/receiptManagement/index.vue
@@ -33,7 +33,7 @@
        <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
        <el-table-column fixed="right" label="操作" min-width="60" align="center">
          <template #default="scope">
            <el-button link type="primary" size="small" @click="openForm('edit', scope.row);">编辑</el-button>
            <el-button link type="primary" size="small" @click="openForm('edit', scope.row);" :disabled="scope.row.createUser !== userStore.id">编辑</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -82,7 +82,7 @@
          <el-table-column label="待入库数量" prop="quantity0" width="100" />
          <el-table-column label="本次入库数量" prop="quantityStock" width="150">
            <template #default="scope">
              <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="scope.row.quantityStock"  :max="scope.row.quantity0" />
              <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="scope.row.quantityStock" :max="scope.row.quantity0" />
            </template>
          </el-table-column>
          <el-table-column label="税率(%)" prop="taxRate" width="120" />
@@ -258,7 +258,6 @@
      }
      productList.value = [] // 清空产品列表
    } else {
      form.value = JSON.parse(JSON.stringify(row))
      try {
        loadingProducts.value = true
@@ -269,7 +268,7 @@
        });
        productList.value = res.data.map(item => ({
          ...item,
          quantityStock: item.quantityStock || 0 // 如果已有入库数量则保留
          quantityStock: row.inboundNum // 如果已有入库数量则保留
        }))
        selectedRows.value = productList.value
      } catch (error) {
@@ -388,6 +387,12 @@
  const handleDelete = () => {
    let ids = []
    if (selectedRows.value.length > 0) {
            // 检查是否有他人维护的数据
            const unauthorizedData = selectedRows.value.filter(item => item.createUser !== userStore.id);
            if (unauthorizedData.length > 0) {
                proxy.$modal.msgWarning("不可删除他人维护的数据");
                return;
            }
      ids = selectedRows.value.map(item => item.id);
    } else {
      proxy.$modal.msgWarning('请选择数据')
src/views/inventoryManagement/stockManagement/index.vue
@@ -33,7 +33,7 @@
        <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
        <el-table-column fixed="right" label="操作" min-width="60" align="center">
          <template #default="scope">
            <el-button link type="primary" size="small" @click="openForm('edit', scope.row);">编辑</el-button>
            <el-button link type="primary" size="small" @click="openForm('edit', scope.row);" :disabled="scope.row.createUser !== userStore.id">编辑</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -339,6 +339,12 @@
const handleDelete = () => {
  let ids = []
  if (selectedRows.value.length > 0) {
        // 检查是否有他人维护的数据
        const unauthorizedData = selectedRows.value.filter(item => item.createUser !== userStore.id);
        if (unauthorizedData.length > 0) {
            proxy.$modal.msgWarning("不可删除他人维护的数据");
            return;
        }
    ids = selectedRows.value.map(item => item.id);
  } else {
    proxy.$modal.msgWarning('请选择数据')
src/views/personnelManagement/dimission/components/formDia.vue
@@ -23,14 +23,14 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="员工编号:" prop="staffNo">
              <el-input v-model="form.staffNo" placeholder="请输入" clearable :disabled="operationType !== 'add'"/>
              <el-input v-model="form.staffNo" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="性别:" prop="sex">
              <el-select v-model="form.sex">
              <el-select v-model="form.sex" disabled>
                <el-option label="男" value="男" />
                <el-option label="女" value="女" />
              </el-select>
@@ -38,67 +38,67 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="籍贯:" prop="nativePlace">
              <el-input v-model="form.nativePlace" placeholder="请输入" clearable/>
              <el-input v-model="form.nativePlace" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="岗位:" prop="postJob">
              <el-input v-model="form.postJob" placeholder="请输入" clearable/>
              <el-input v-model="form.postJob" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="家庭住址:" prop="adress">
              <el-input v-model="form.adress" placeholder="请输入" clearable/>
              <el-input v-model="form.adress" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="第一学历:" prop="firstStudy">
              <el-input v-model="form.firstStudy" placeholder="请输入" clearable/>
              <el-input v-model="form.firstStudy" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="专业:" prop="profession">
              <el-input v-model="form.profession" placeholder="请输入" clearable/>
              <el-input v-model="form.profession" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="身份证号:" prop="identityCard">
              <el-input v-model="form.identityCard" placeholder="请输入" clearable/>
              <el-input v-model="form.identityCard" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="年龄:" prop="age">
              <el-input-number v-model="form.age" :precision="0" :step="1" style="width: 100%"/>
              <el-input-number v-model="form.age" :precision="0" :step="1" style="width: 100%" disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="联系电话:" prop="phone">
              <el-input v-model="form.phone" placeholder="请输入" clearable/>
              <el-input v-model="form.phone" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="紧急联系人:" prop="emergencyContact">
              <el-input v-model="form.emergencyContact" placeholder="请输入" clearable/>
              <el-input v-model="form.emergencyContact" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="紧急联系人联系电话:" prop="emergencyContactPhone">
              <el-input v-model="form.emergencyContactPhone" placeholder="请输入" clearable/>
              <el-input v-model="form.emergencyContactPhone" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="合同年限:" prop="contractTerm">
              <el-input-number v-model="form.contractTerm" :precision="0" :step="1" style="width: 100%"/>
              <el-input-number v-model="form.contractTerm" :precision="0" :step="1" style="width: 100%" disabled/>
            </el-form-item>
          </el-col>
        </el-row>
@@ -106,6 +106,7 @@
          <el-col :span="12">
            <el-form-item label="合同开始日期:" prop="contractStartTime">
              <el-date-picker
                                disabled
                  v-model="form.contractStartTime"
                  type="date"
                  placeholder="请选择日期"
@@ -119,6 +120,7 @@
          <el-col :span="12">
            <el-form-item label="合同结束日期:" prop="contractEndTime">
              <el-date-picker
                                disabled
                  v-model="form.contractEndTime"
                  type="date"
                  placeholder="请选择日期"
src/views/personnelManagement/onboarding/components/formDia.vue
@@ -90,7 +90,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="合同年限:" prop="contractTerm">
              <el-input-number v-model="form.contractTerm" :precision="0" :step="1" style="width: 100%"/>
              <el-input-number v-model="form.contractTerm" :precision="0" :step="1" style="width: 100%" :disabled="true"/>
            </el-form-item>
          </el-col>
        </el-row>
@@ -105,6 +105,7 @@
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
                  @change="calculateContractTerm"
              />
            </el-form-item>
          </el-col>
@@ -118,6 +119,7 @@
                  format="YYYY-MM-DD"
                  clearable
                  style="width: 100%"
                  @change="calculateContractTerm"
              />
            </el-form-item>
          </el-col>
@@ -189,6 +191,8 @@
  if (operationType.value === 'edit') {
    getStaffJoinInfo(row.id).then(res => {
      form.value = {...res.data}
      // 编辑时也计算一次合同年限
      calculateContractTerm();
    })
  }
}
@@ -211,6 +215,34 @@
    }
  })
}
// 计算合同年限
const calculateContractTerm = () => {
  if (form.value.contractStartTime && form.value.contractEndTime) {
    const startDate = new Date(form.value.contractStartTime);
    const endDate = new Date(form.value.contractEndTime);
    if (endDate > startDate) {
      // 计算年份差
      const yearDiff = endDate.getFullYear() - startDate.getFullYear();
      const monthDiff = endDate.getMonth() - startDate.getMonth();
      const dayDiff = endDate.getDate() - startDate.getDate();
      let years = yearDiff;
      // 如果结束日期的月日小于开始日期的月日,则减去1年
      if (monthDiff < 0 || (monthDiff === 0 && dayDiff < 0)) {
        years = yearDiff - 1;
      }
      form.value.contractTerm = Math.max(0, years);
    } else {
      form.value.contractTerm = 0;
    }
  } else {
    form.value.contractTerm = 0;
  }
};
// 关闭弹框
const closeDia = () => {
  proxy.resetForm("formRef");
src/views/procurementManagement/invoiceEntry/components/Modal.vue
@@ -220,10 +220,12 @@
  {
    label: "产品大类",
    prop: "productCategory",
        width: 120,
  },
  {
    label: "规格型号",
    prop: "specificationModel",
        width: 120,
  },
  {
    label: "单位",
@@ -410,7 +412,7 @@
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,
src/views/procurementManagement/invoiceEntry/index.vue
@@ -116,12 +116,12 @@
    {
      label: "供应商名称",
      prop: "supplierName",
      width:200
      width:300
    },
    {
      label: "项目名称",
      prop: "projectName",
      width:150
      width:400
    },
    {
      label: "录入人",
src/views/procurementManagement/paymentEntry/index.vue
@@ -30,9 +30,9 @@
              <el-button type="primary" @click="openForm('add')">
                新增付款
              </el-button>
              <el-button type="danger" plain @click="handleDelete">
                删除
              </el-button>
<!--              <el-button type="danger" plain @click="handleDelete">-->
<!--                删除-->
<!--              </el-button>-->
            </el-form-item>
          </el-col>
        </el-row>
@@ -269,6 +269,10 @@
      return params ? parseFloat(params).toFixed(2) : 0;
    },
  },
  {
    label: "录入人",
    prop: "issUer",
  },
]);
const tableData = ref([]);
const selectedRows = ref([]);
@@ -441,6 +445,12 @@
const handleDelete = () => {
  let ids = [];
  if (selectedRows.value.length > 0) {
        // 检查是否有他人维护的数据
        const unauthorizedData = selectedRows.value.filter(item => item.issUer !== userStore.nickName);
        if (unauthorizedData.length > 0) {
            proxy.$modal.msgWarning("不可删除他人维护的数据");
            return;
        }
    ids = selectedRows.value.map((item) => item.id);
  } else {
    proxy.$modal.msgWarning("请选择数据");
src/views/procurementManagement/procurementInvoiceLedger/Modal/UploadModal.vue
@@ -59,18 +59,20 @@
};
const submitFileForm = () => {
  upload.open = false;
  resetForm();
  emits("uploadSuccess", form);
  resetForm();
  upload.open = false;
  // 清空文件列表
  fileUploadRef.value.fileList = [];
};
const handleFileSuccess = (response) => {
  const { code, msg } = response;
  form.tempFileIds.push(response.data.tempId);
  if (code == 200) {
  if (response.code == 200) {
        form.tempFileIds.push(response.data.tempId);
        console.log('form',form);
    ElMessage({ message: "导入成功", type: "success" });
  } else {
    ElMessage({ message: msg, type: "error" });
    ElMessage({ message: response.msg, type: "error" });
  }
};
src/views/procurementManagement/procurementInvoiceLedger/index.vue
@@ -47,13 +47,13 @@
        :tableLoading="loading"
        :tableData="dataList"
        :isSelection="true"
        height="calc(100vh - 15em)"
        height="calc(100vh - 19.5em)"
        :isShowSummary="true"
        :summaryMethod="summarizeMainTable"
        :page="{
          current: pagination.currentPage,
          size: pagination.pageSize,
          total: 0,
          total: pagination.total,
        }"
        @selection-change="handleSelectionChange"
        @pagination="changePage"
@@ -81,10 +81,18 @@
          <el-button
            type="primary"
            text
            :icon="EditPen"
            @click="openEdit(row.id)"
                        :disabled="row.issUerId !== userStore.id"
          >
            编辑
          </el-button>
          <el-button
            type="primary"
            text
                        :disabled="row.issUerId !== userStore.id"
            @click="handleDelete(row)"
          >
            删除
          </el-button>
        </template>
      </PIMTable>
@@ -105,13 +113,17 @@
  EditPen,
} from "@element-plus/icons-vue";
import {
  productRecordPage,
  productUploadFile,
    delRegistration,
    productRecordPage,
    productUploadFile,
} from "@/api/procurementManagement/procurementInvoiceLedger.js";
import { onMounted } from "vue";
import { ElMessageBox } from "element-plus";
import UploadModal from "./Modal/UploadModal.vue";
import EditModal from "./Modal/EditModal.vue";
import useUserStore from "@/store/modules/user.js";
import {delInvoiceLedgerByRegProductId} from "@/api/salesManagement/invoiceLedger.js";
const userStore = useUserStore();
defineOptions({
  name: "来票台账",
@@ -152,7 +164,7 @@
    {
      label: "客户名称",
      prop: "customerName",
      width: 150,
      width: 240,
    },
    {
      label: "供应商名称",
@@ -204,17 +216,22 @@
      width: 200,
    },
    {
      label: "录入人",
      prop: "issUer",
      width: 200,
    },
    {
      label: "附件",
      align: "center",
      prop: "commonFiles",
      dataType: "slot",
            fixed: "right",
      slot: "commonFilesRef",
      width: 150,
      width: 120,
    },
    {
      fixed: "right",
      width: 120,
      width: 150,
      label: "操作",
      dataType: "slot",
      slot: "operation",
@@ -308,6 +325,26 @@
    getTableData();
  }
};
// 删除
const handleDelete = (row) => {
    let ids = [];
    ids.push(row.id);
    ElMessageBox.confirm("该开票台账将被删除,是否确认删除", {
        confirmButtonText: "确认",
        cancelButtonText: "取消",
        type: "warning",
    })
        .then(() => {
            loading.value = true;
            delRegistration(ids).then((res) => {
                getTableData();
            });
            loading.value = false;
        })
        .catch(() => {
            proxy.$modal.msg("已取消");
        });
};
onMounted(() => {
  getTableData();
src/views/procurementManagement/procurementLedger/index.vue
@@ -94,7 +94,7 @@
        <el-table-column
          label="项目名称"
          prop="projectName"
          width="100"
          width="420"
          show-overflow-tooltip
        />
        <el-table-column
@@ -134,6 +134,7 @@
              type="primary"
              size="small"
              @click="openForm('edit', scope.row)"
                            :disabled="scope.row.receiptPaymentAmount>0 || scope.row.recorderName !== userStore.nickName"
              >编辑</el-button
            >
          </template>
@@ -288,7 +289,7 @@
          <el-table-column label="规格型号" prop="specificationModel" />
          <el-table-column label="单位" prop="unit" width="70" />
          <el-table-column label="数量" prop="quantity" width="70" />
          <el-table-column label="税率(%)" prop="taxRate" width="70" />
          <el-table-column label="税率(%)" prop="taxRate" width="80" />
          <el-table-column
            label="含税单价(元)"
            prop="taxInclusiveUnitPrice"
@@ -988,6 +989,12 @@
const handleDelete = () => {
  let ids = [];
  if (selectedRows.value.length > 0) {
        // 检查是否有他人维护的数据
        const unauthorizedData = selectedRows.value.filter(item => item.recorderName !== userStore.nickName);
        if (unauthorizedData.length > 0) {
            proxy.$modal.msgWarning("不可删除他人维护的数据");
            return;
        }
    ids = selectedRows.value.map((item) => item.id);
  } else {
    proxy.$modal.msgWarning("请选择数据");
src/views/salesManagement/invoiceLedger/index.vue
@@ -49,15 +49,15 @@
              @click="handleFile(scope.row.commonFiles)">
              查看附件
            </el-button>
            <el-button v-else link type="primary" @click="handleDownload(scope.row)">
            <el-button v-else link type="primary" @click="handleDownload(scope.row)" :disabled="scope.row.invoicePerson !== userStore.nickName">
              上传
            </el-button>
          </template>
        </el-table-column>
        <el-table-column fixed="right" label="操作" width="150" align="center">
          <template #default="scope">
            <el-button link type="primary" size="small" @click="openForm(scope.row)">编辑</el-button>
            <el-button link type="primary" size="small" @click="delInvoiceLedger(scope.row)">删除</el-button>
            <el-button link type="primary" size="small" @click="openForm(scope.row)" :disabled="scope.row.invoicePerson !== userStore.nickName">编辑</el-button>
            <el-button link type="primary" size="small" @click="delInvoiceLedger(scope.row)" :disabled="scope.row.invoicePerson !== userStore.nickName">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
src/views/salesManagement/receiptPayment/index.vue
@@ -66,7 +66,7 @@
        :expand-row-keys="expandedRowKeys"
        @expand-change="expandChange"
        height="calc(100vh - 18.5em)"
        height="calc(100vh - 21.5em)"
      >
        <el-table-column align="center" type="selection" width="55" />
        <el-table-column type="expand">
@@ -119,6 +119,7 @@
                    size="small"
                    @click="changeEditType(scope.row)"
                    v-if="!scope.row.editType"
                                        :disabled="scope.row.registrant !== userStore.nickName"
                    >编辑</el-button
                  >
                  <el-button
@@ -127,6 +128,7 @@
                    size="small"
                    @click="saveReceiptPayment(scope.row)"
                    v-if="scope.row.editType"
                                        :disabled="scope.row.registrant !== userStore.nickName"
                    >保存</el-button
                  >
                  <el-button
@@ -134,6 +136,7 @@
                    type="primary"
                    size="small"
                    @click="delReceiptRecord(scope.row)"
                                        :disabled="scope.row.registrant !== userStore.nickName"
                    >删除</el-button
                  >
                </template>
@@ -165,7 +168,7 @@
          label="项目名称"
          prop="projectName"
          show-overflow-tooltip
          width="200"
          width="340"
        />
        <el-table-column
          label="产品大类"
src/views/salesManagement/receiptPaymentHistory/index.vue
@@ -56,7 +56,7 @@
        :isShowSummary="isShowSummarySon"
        :summaryMethod="summarizeMainTable1"
        :tableLoading="tableLoading"
        :total="total"
        :total="page.total"
        @pagination="pagination"
        @selection-change="handleSelectionChange"
      ></PIMTable>
@@ -139,6 +139,7 @@
const page = reactive({
  current: 1,
  size: 100,
    total: 0,
});
const total = ref(0);
@@ -174,7 +175,7 @@
  receiptPaymentHistoryListPage({ ...rest, ...page }).then((res) => {
    tableLoading.value = false;
    tableData.value = res.records;
    total.value = res.total;
        page.total = res.total;
  });
};
// 子表合计方法
src/views/salesManagement/salesLedger/index.vue
@@ -69,9 +69,10 @@
        <el-table-column label="录入人" prop="entryPersonName" width="100" show-overflow-tooltip />
        <el-table-column label="录入日期" prop="entryDate" width="120" show-overflow-tooltip />
        <el-table-column label="签订日期" prop="executionDate" width="120" show-overflow-tooltip />
        <el-table-column fixed="right" label="操作" min-width="100" align="center">
        <el-table-column fixed="right" label="操作" min-width="140" align="center">
          <template #default="scope">
            <el-button link type="primary" size="small" @click="openForm('edit', scope.row)">编辑</el-button>
            <el-button link type="primary" size="small" :disabled="scope.row.invoiceTotal>0 || scope.row.entryPersonName !== userStore.nickName" @click="openForm('edit', scope.row)">编辑</el-button>
<!--            <el-button link type="primary" size="small" @click="openForm('view', scope.row)">详情</el-button>-->
            <el-button link type="primary" size="small" @click="downLoadFile(scope.row)">附件</el-button>
          </template>
        </el-table-column>
@@ -90,7 +91,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="业务员:" prop="salesman">
              <el-select v-model="form.salesman" placeholder="请选择" clearable>
              <el-select v-model="form.salesman" placeholder="请选择" clearable :disabled="operationType === 'view'">
                <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
                  :value="item.nickName" />
              </el-select>
@@ -100,12 +101,12 @@
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="客户合同号:" prop="customerContractNo">
              <el-input v-model="form.customerContractNo" placeholder="请输入" clearable />
              <el-input v-model="form.customerContractNo" placeholder="请输入" clearable :disabled="operationType === 'view'"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="客户名称:" prop="customerId">
              <el-select v-model="form.customerId" placeholder="请选择" clearable>
              <el-select v-model="form.customerId" placeholder="请选择" clearable :disabled="operationType === 'view'">
                <el-option v-for="item in customerOption" :key="item.id" :label="item.customerName" :value="item.id">
                  {{
                    item.customerName + "——" + item.taxpayerIdentificationNumber
@@ -118,47 +119,47 @@
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="项目名称:" prop="projectName">
              <el-input v-model="form.projectName" placeholder="请输入" clearable />
              <el-input v-model="form.projectName" placeholder="请输入" clearable :disabled="operationType === 'view'" />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="录入人:" prop="entryPerson">
              <el-select v-model="form.entryPerson" placeholder="请选择" clearable @change="changs" disabled>
                <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
              </el-select>
            </el-form-item>
          </el-col>
                    <el-col :span="12">
                        <el-form-item label="签订日期:" prop="executionDate">
                            <el-date-picker style="width: 100%" v-model="form.executionDate" value-format="YYYY-MM-DD"
                                                            format="YYYY-MM-DD" type="date" placeholder="请选择" clearable :disabled="operationType === 'view'" />
                        </el-form-item>
                    </el-col>
        </el-row>
        <el-row :gutter="30">
                    <el-col :span="12">
                        <el-form-item label="录入人:" prop="entryPerson">
                            <el-select v-model="form.entryPerson" placeholder="请选择" clearable @change="changs" disabled>
                                <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
                            </el-select>
                        </el-form-item>
                    </el-col>
          <el-col :span="12">
            <el-form-item label="录入日期:" prop="entryDate">
              <el-date-picker style="width: 100%" v-model="form.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD"
                type="date" placeholder="请选择" clearable disabled />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="签订日期:" prop="executionDate">
              <el-date-picker style="width: 100%" v-model="form.executionDate" value-format="YYYY-MM-DD"
                format="YYYY-MM-DD" type="date" placeholder="请选择" clearable />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="付款方式">
              <el-input v-model="form.paymentMethod" placeholder="请输入" clearable />
              <el-input v-model="form.paymentMethod" placeholder="请输入" clearable :disabled="operationType === 'view'" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-form-item label="产品信息:" prop="entryDate">
            <el-button type="primary" @click="openProductForm('add')">添加</el-button>
            <el-button plain type="danger" @click="deleteProduct" >删除</el-button>
            <el-button v-if="operationType !== 'view'" type="primary" @click="openProductForm('add')">添加</el-button>
            <el-button v-if="operationType !== 'view'" plain type="danger" @click="deleteProduct" >删除</el-button>
          </el-form-item>
        </el-row>
        <el-table :data="productData" border @selection-change="productSelected" show-summary
          :summary-method="summarizeMainTable">
          <el-table-column align="center" type="selection" width="55" />
          <el-table-column align="center" type="selection" width="55" v-if="operationType !== 'view'" />
          <el-table-column align="center" label="序号" type="index" width="60" />
          <el-table-column label="产品大类" prop="productCategory" />
          <el-table-column label="规格型号" prop="specificationModel" />
@@ -168,7 +169,7 @@
          <el-table-column label="含税单价(元)" prop="taxInclusiveUnitPrice" :formatter="formattedNumber" />
          <el-table-column label="含税总价(元)" prop="taxInclusiveTotalPrice" :formatter="formattedNumber" />
          <el-table-column label="不含税总价(元)" prop="taxExclusiveTotalPrice" :formatter="formattedNumber" />
          <el-table-column fixed="right" label="操作" min-width="60" align="center">
          <el-table-column fixed="right" label="操作" min-width="60" align="center" v-if="operationType !== 'view'">
            <template #default="scope">
              <el-button link type="primary" size="small" @click="openProductForm('edit', scope.row)">编辑</el-button>
            </template>
@@ -177,7 +178,7 @@
        <el-row :gutter="30">
          <el-col :span="24">
            <el-form-item label="备注·:" prop="remark">
              <el-input v-model="form.remark" placeholder="请输入" clearable type="textarea" :rows="2" />
              <el-input v-model="form.remark" placeholder="请输入" clearable type="textarea" :rows="2" :disabled="operationType === 'view'" />
            </el-form-item>
          </el-col>
        </el-row>
@@ -187,8 +188,8 @@
              <el-upload v-model:file-list="fileList" :action="upload.url" multiple ref="fileUpload" auto-upload
                :headers="upload.headers" :before-upload="handleBeforeUpload" :on-error="handleUploadError"
                :on-success="handleUploadSuccess" :on-remove="handleRemove">
                <el-button type="primary">上传</el-button>
                <template #tip>
                <el-button type="primary" v-if="operationType !== 'view'">上传</el-button>
                <template #tip v-if="operationType !== 'view'">
                  <div class="el-upload__tip">
                    文件格式支持
                    doc,docx,xls,xlsx,ppt,pptx,pdf,txt,xml,jpg,jpeg,png,gif,bmp,rar,zip,7z
@@ -438,6 +439,7 @@
/** 搜索按钮操作 */
const handleQuery = () => {
  page.current = 1;
    expandedRowKeys.value = [];
  getList();
};
const paginationChange = (obj) => {
@@ -571,9 +573,8 @@
  customerList().then((res) => {
    customerOption.value = res;
  });
  console.log("userStore.id", userStore.id);
  form.value.entryPerson = userStore.id;
  if (type === "edit") {
  if (type !== "add") {
    currentId.value = row.id;
    getSalesLedgerWithProducts({ id: row.id, type: 1 }).then((res) => {
      form.value = { ...res };