销售退货新增页面基本信息加上发货类型下拉框,可选货车或者快递。货车 展示发货车牌号,选择快递则展示快递公司,快递单号。对应的列表也要加上相应的字段,采购退货也是一样加下
已修改7个文件
248 ■■■■■ 文件已修改
src/views/financialManagement/payable/purchaseReturn.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/financialManagement/receivable/salesReturn.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/purchaseReturnOrder/New.vue 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/purchaseReturnOrder/index.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/returnOrder/components/detailDia.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/returnOrder/components/formDia.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/returnOrder/index.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/financialManagement/payable/purchaseReturn.vue
@@ -85,6 +85,30 @@
  { label: "退货单号", prop: "returnNo", minWidth: "150" },
  { label: "供应商", prop: "supplierName", minWidth: "180" },
  { label: "关联入库单号", prop: "inboundBatches", minWidth: "150" },
  {
    label: "发货类型",
    prop: "shippingType",
    minWidth: "110",
    formatData: (val) => ({ 1: "货车", 2: "快递" }[String(val)] || "--"),
  },
  {
    label: "发货车牌号",
    prop: "truckPlateNo",
    minWidth: "140",
    formatData: (_val, row) => (String(row?.shippingType) === "1" ? row?.truckPlateNo || "--" : "--"),
  },
  {
    label: "快递公司",
    prop: "expressCompany",
    minWidth: "140",
    formatData: (_val, row) => (String(row?.shippingType) === "2" ? row?.expressCompany || "--" : "--"),
  },
  {
    label: "快递单号",
    prop: "expressNo",
    minWidth: "150",
    formatData: (_val, row) => (String(row?.shippingType) === "2" ? row?.expressNo || "--" : "--"),
  },
  { label: "退货日期", prop: "preparedAt", minWidth: "170" },
  {
    label: "退款总额",
src/views/financialManagement/receivable/salesReturn.vue
@@ -77,6 +77,30 @@
  { label: "退货单号", prop: "returnNo", minWidth: "150" },
  { label: "客户名称", prop: "customerName", minWidth: "180" },
  { label: "关联发货单号", prop: "shippingNo", minWidth: "150" },
  {
    label: "发货类型",
    prop: "shippingType",
    minWidth: "110",
    formatData: (val) => ({ 1: "货车", 2: "快递" }[String(val)] || "--"),
  },
  {
    label: "发货车牌号",
    prop: "truckPlateNo",
    minWidth: "140",
    formatData: (_val, row) => (String(row?.shippingType) === "1" ? row?.truckPlateNo || "--" : "--"),
  },
  {
    label: "快递公司",
    prop: "expressCompany",
    minWidth: "140",
    formatData: (_val, row) => (String(row?.shippingType) === "2" ? row?.expressCompany || "--" : "--"),
  },
  {
    label: "快递单号",
    prop: "expressNo",
    minWidth: "150",
    formatData: (_val, row) => (String(row?.shippingType) === "2" ? row?.expressNo || "--" : "--"),
  },
  { label: "退货日期", prop: "makeTime", minWidth: "170" },
  {
    label: "退款总额",
src/views/procurementManagement/purchaseReturnOrder/New.vue
@@ -58,6 +58,63 @@
        </el-form-item>
        <el-form-item
            label="发货类型"
            prop="shippingType"
            :rules="[
                {
                  required: true,
                  message: '请选择发货类型',
                  trigger: 'change',
                }
              ]"
        >
          <el-select
              v-model="formState.shippingType"
              placeholder="请选择发货类型"
              style="width: 240px"
              @change="handleShippingTypeChange"
          >
            <el-option label="货车" :value="1" />
            <el-option label="快递" :value="2" />
          </el-select>
        </el-form-item>
        <el-form-item
            v-if="formState.shippingType === 1"
            label="发货车牌号"
            prop="truckPlateNo"
        >
          <el-input
              v-model="formState.truckPlateNo"
              placeholder="请输入发货车牌号"
              style="width: 240px"
          />
        </el-form-item>
        <template v-else-if="formState.shippingType === 2">
          <el-form-item
              label="快递公司"
              prop="expressCompany"
          >
            <el-input
                v-model="formState.expressCompany"
                placeholder="请输入快递公司"
                style="width: 240px"
            />
          </el-form-item>
          <el-form-item
              label="快递单号"
              prop="expressNo"
          >
            <el-input
                v-model="formState.expressNo"
                placeholder="请输入快递单号"
                style="width: 240px"
            />
          </el-form-item>
        </template>
        <el-form-item
            label="供应商名称"
            prop="supplierId"
            :rules="[
@@ -458,6 +515,10 @@
  no: '',
  isDefaultNo: true,
  returnType: 0,
  shippingType: undefined,
  truckPlateNo: '',
  expressCompany: '',
  expressNo: '',
  incomeType: undefined,
  remark: '',
  supplierId: undefined,
@@ -503,6 +564,19 @@
const purchaseLedgerOptions = ref([])
// 是否展示产品列表数据
const isShowProductsModal = ref(false)
const handleShippingTypeChange = (val) => {
  if (val === 1) {
    formState.value.expressCompany = '';
    formState.value.expressNo = '';
  } else if (val === 2) {
    formState.value.truckPlateNo = '';
  } else {
    formState.value.truckPlateNo = '';
    formState.value.expressCompany = '';
    formState.value.expressNo = '';
  }
};
const isShow = computed({
  get() {
@@ -576,6 +650,10 @@
}
const closeModal = () => {
  formState.value.shippingType = undefined;
  formState.value.truckPlateNo = '';
  formState.value.expressCompany = '';
  formState.value.expressNo = '';
  isShow.value = false;
};
src/views/procurementManagement/purchaseReturnOrder/index.vue
@@ -89,6 +89,20 @@
          <el-descriptions-item label="退料人">{{
            detailData.returnUserName || "--"
          }}</el-descriptions-item>
          <el-descriptions-item label="发货类型">{{
            getShippingTypeLabel(detailData.shippingType)
          }}</el-descriptions-item>
          <el-descriptions-item v-if="String(detailData.shippingType) === '1'" label="发货车牌号">{{
            detailData.truckPlateNo || "--"
          }}</el-descriptions-item>
          <template v-else-if="String(detailData.shippingType) === '2'">
            <el-descriptions-item label="快递公司">{{
              detailData.expressCompany || "--"
            }}</el-descriptions-item>
            <el-descriptions-item label="快递单号">{{
              detailData.expressNo || "--"
            }}</el-descriptions-item>
          </template>
          <el-descriptions-item label="整单折扣额">{{
            formatAmount(detailData.totalDiscountAmount)
          }}</el-descriptions-item>
@@ -290,6 +304,15 @@
    prop: "returnUserName",
    width: 110,
  },
  {
    label: "发货类型",
    prop: "shippingType",
    width: 100,
    formatData: (val) => getShippingTypeLabel(val),
  },
  { label: "发货车牌号", prop: "truckPlateDisplay", width: 140 },
  { label: "快递公司", prop: "expressCompanyDisplay", width: 140 },
  { label: "快递单号", prop: "expressNoDisplay", width: 150 },
  {
    label: "整单折扣额",
@@ -423,7 +446,12 @@
  findPurchaseReturnOrderListPage({ ...searchForm.value, ...page })
    .then((res) => {
      tableLoading.value = false;
      tableData.value = res.data.records;
      tableData.value = (res.data.records || []).map((row) => ({
        ...row,
        truckPlateDisplay: String(row?.shippingType) === "1" ? (row?.truckPlateNo || "--") : "--",
        expressCompanyDisplay: String(row?.shippingType) === "2" ? (row?.expressCompany || "--") : "--",
        expressNoDisplay: String(row?.shippingType) === "2" ? (row?.expressNo || "--") : "--",
      }));
      page.total = res.data.total;
    })
    .catch(() => {
@@ -451,6 +479,14 @@
  );
};
const getShippingTypeLabel = (value) => {
  const shippingTypeMap = {
    1: "货车",
    2: "快递",
  };
  return shippingTypeMap[String(value)] || shippingTypeMap[value] || "--";
};
const formatAmount = (value) => {
  if (value === null || value === undefined || value === "") {
    return "--";
src/views/salesManagement/returnOrder/components/detailDia.vue
@@ -11,6 +11,12 @@
        <el-descriptions-item label="销售单号">{{ detail.salesContractNo }}</el-descriptions-item>
        <el-descriptions-item label="业务员">{{ detail.salesman }}</el-descriptions-item>
        <el-descriptions-item label="关联发货单号">{{ detail.shippingNo }}</el-descriptions-item>
        <el-descriptions-item label="发货类型">{{ getShippingTypeText(detail.shippingType) }}</el-descriptions-item>
        <el-descriptions-item v-if="String(detail.shippingType) === '1'" label="发货车牌号">{{ detail.truckPlateNo || "--" }}</el-descriptions-item>
        <template v-else-if="String(detail.shippingType) === '2'">
          <el-descriptions-item label="快递公司">{{ detail.expressCompany || "--" }}</el-descriptions-item>
          <el-descriptions-item label="快递单号">{{ detail.expressNo || "--" }}</el-descriptions-item>
        </template>
        <!-- <el-descriptions-item label="项目名称">{{ detail.projectName }}</el-descriptions-item> -->
        <el-descriptions-item label="制单人">{{ detail.maker }}</el-descriptions-item>
        <el-descriptions-item label="制单时间">{{ detail.makeTime }}</el-descriptions-item>
@@ -41,6 +47,10 @@
const detail = ref({});
const tableData = ref([]);
const availableProducts = ref([]);
const shippingTypeMap = {
  1: "货车",
  2: "快递",
};
const sameKey = (a, b) => a != null && b != null && String(a) === String(b);
@@ -111,6 +121,8 @@
  return Math.max(total - un, 0);
};
const getShippingTypeText = (value) => shippingTypeMap[String(value)] || shippingTypeMap[value] || "--";
/** 详情表用 productName / model;合并时勿让空串盖掉出库行字段 */
const mergeDetailProductRow = (product, normalized) => {
  const row = { ...product, ...normalized };
src/views/salesManagement/returnOrder/components/formDia.vue
@@ -69,6 +69,31 @@
              </el-form-item>
            </el-col>
            <el-col :span="4">
              <el-form-item label="发货类型:" prop="shippingType">
                <el-select v-model="form.shippingType" placeholder="请选择发货类型" @change="handleShippingTypeChange">
                  <el-option label="货车" :value="1" />
                  <el-option label="快递" :value="2" />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="4" v-if="form.shippingType === 1">
              <el-form-item label="发货车牌号:" prop="truckPlateNo">
                <el-input v-model="form.truckPlateNo" placeholder="请输入发货车牌号" />
              </el-form-item>
            </el-col>
            <template v-else-if="form.shippingType === 2">
              <el-col :span="4">
                <el-form-item label="快递公司:" prop="expressCompany">
                  <el-input v-model="form.expressCompany" placeholder="请输入快递公司" />
                </el-form-item>
              </el-col>
              <el-col :span="4">
                <el-form-item label="快递单号:" prop="expressNo">
                  <el-input v-model="form.expressNo" placeholder="请输入快递单号" />
                </el-form-item>
              </el-col>
            </template>
            <el-col :span="4">
              <el-form-item label="退款总额:" prop="refundAmount">
                <el-input v-model="form.refundAmount" disabled placeholder="自动计算" />
              </el-form-item>
@@ -186,6 +211,10 @@
    returnNo: "",
    customerId: "",
    shippingId: "",
    shippingType: "",
    truckPlateNo: "",
    expressCompany: "",
    expressNo: "",
    projectId: "",
    maker: "",
    makeTime: "",
@@ -203,6 +232,7 @@
    }],
    customerId: [{ required: true, message: "请选择客户", trigger: "change" }],
    shippingId: [{ required: true, message: "请选择关联出库单号", trigger: "change" }],
    shippingType: [{ required: true, message: "请选择发货类型", trigger: "change" }],
  }
});
const { form, rules } = toRefs(data);
@@ -491,6 +521,10 @@
      returnNo: "",
      customerId: "",
      shippingId: "",
      shippingType: "",
      truckPlateNo: "",
      expressCompany: "",
      expressNo: "",
      projectId: "",
      maker: "",
      makeTime: "",
@@ -537,6 +571,11 @@
    const payload = { ...form.value, returnSaleProducts };
    delete payload.returnNoCheckbox;
    if (operationType.value === "add" && form.value.returnNoCheckbox) delete payload.returnNo;
    if (payload.shippingType !== 1) payload.truckPlateNo = "";
    if (payload.shippingType !== 2) {
      payload.expressCompany = "";
      payload.expressNo = "";
    }
    if (operationType.value === "add") {
      returnManagementAdd(payload).then(() => {
        proxy.$modal.msgSuccess("新增成功");
@@ -560,6 +599,10 @@
        returnNo: "",
        customerId: "",
        shippingId: "",
        shippingType: "",
        truckPlateNo: "",
        expressCompany: "",
        expressNo: "",
        projectId: "",
        maker: "",
        makeTime: "",
@@ -603,6 +646,19 @@
  formRef.value?.validateField('returnNo');
};
const handleShippingTypeChange = (val) => {
  if (val === 1) {
    form.value.expressCompany = "";
    form.value.expressNo = "";
  } else if (val === 2) {
    form.value.truckPlateNo = "";
  } else {
    form.value.truckPlateNo = "";
    form.value.expressCompany = "";
    form.value.expressNo = "";
  }
};
const customerNameChange = async (val, clearDownstream = true) => {
  // val is customerId now
  if (clearDownstream) {
src/views/salesManagement/returnOrder/index.vue
@@ -123,6 +123,15 @@
  { label: "销售单号", prop: "salesContractNo", minWidth: 160 },
  { label: "业务员", prop: "salesman", minWidth: 120 },
  { label: "关联发货单号", prop: "shippingNo", minWidth: 170 },
  {
    label: "发货类型",
    prop: "shippingType",
    minWidth: 100,
    formatData: (val) => ({ 1: "货车", 2: "快递" }[String(val)] || "--"),
  },
  { label: "发货车牌号", prop: "truckPlateDisplay", minWidth: 140 },
  { label: "快递公司", prop: "expressCompanyDisplay", minWidth: 140 },
  { label: "快递单号", prop: "expressNoDisplay", minWidth: 150 },
  { label: "项目名称", prop: "projectName", minWidth: 180 },
  { label: "制单人", prop: "maker", minWidth: 120 },
  {
@@ -168,7 +177,12 @@
  tableLoading.value = true;
  returnManagementList({ ...searchForm.value, ...page }).then(res => {
    tableLoading.value = false;
    tableData.value = res?.data?.records || [];
    tableData.value = (res?.data?.records || []).map((row) => ({
      ...row,
      truckPlateDisplay: String(row?.shippingType) === "1" ? (row?.truckPlateNo || "--") : "--",
      expressCompanyDisplay: String(row?.shippingType) === "2" ? (row?.expressCompany || "--") : "--",
      expressNoDisplay: String(row?.shippingType) === "2" ? (row?.expressNo || "--") : "--",
    }));
    page.total = res?.data?.total || 0;
  }).finally(() => tableLoading.value = false);
};