张诺
5 天以前 d8fead89b61acd2b1462559c2fa634b05f73c5d1
src/views/basicInformation/index.vue
@@ -1,5 +1,5 @@
<template>
  <div>    <el-form :inline="true" :model="queryParams" class="search-form" >
  <div> <el-form :inline="true" :model="queryParams" class="search-form">
      <el-form-item label="搜索" v-if="tabName === 'supplier' || tabName === 'customer'">
        <el-input v-model="queryParams.searchAll" placeholder="供应商/识别码/详细地址" clearable />
      </el-form-item>
@@ -16,7 +16,7 @@
      <el-tabs v-model="activeTab" class="info-tabs" @tab-click="handleTabClick">
        <el-tab-pane v-for="tab in tabs" :key="tab.name" :label="tab.label" :name="tab.name" />
      </el-tabs>
      <!-- 操作按钮区 -->
      <el-row :gutter="24" class="table-toolbar">
        <el-button type="primary" :icon="Plus" @click="handleAdd">新建</el-button>
@@ -28,17 +28,21 @@
        <data-table :loading="loading" :table-data="tableData" :columns="columns"
          @selection-change="handleSelectionChange" @edit="handleEdit" :show-selection="true" :border="true" />
      </div>
      <pagination v-if="total>0" :page="pageNum" :limit="pageSizes" :total="total" @pagination="handPagination"
      <pagination v-if="total > 0" :page="pageNum" :limit="pageSizes" :total="total" @pagination="handPagination"
        :layout="'total, prev, pager, next, jumper'" />
      <Supplier v-if="tabName === 'supplier'" v-model:supplierDialogFormVisible="dialogFormVisible" :form="form"
        :title="title" @submit="handleSubmit" @beforeClose="handleBeforeClose"
        @update:dialogFormVisible="handleDialogFormVisible" :addOrEdit="addOrEdit" />
      <Customer v-if="tabName === 'customer'" v-model:customerDialogFormVisible="dialogFormVisible" :form="form"
        :title="title" @submit="handleSubmit" :addOrEdit="addOrEdit" @beforeClose="handleBeforeClose" />
      <Coal v-if="tabName === 'coal'" v-model:coalDialogFormVisible="dialogFormVisible" :form="form" :title="title"
        :addOrEdit="addOrEdit" @submit="handleSubmit" />
      <Supplier v-if="tabName === 'supplier'" v-model:copyForm="copyForm"
        v-model:supplierDialogFormVisible="dialogFormVisible" :form="form" :title="title" @submit="handleSubmit"
        @beforeClose="handleBeforeClose" @update:dialogFormVisible="handleDialogFormVisible" :addOrEdit="addOrEdit" />
      <Customer v-if="tabName === 'customer'" v-model:copyForm="copyForm"
        v-model:customerDialogFormVisible="dialogFormVisible" :form="form" :title="title" @submit="handleSubmit"
        :addOrEdit="addOrEdit" @beforeClose="handleBeforeClose" />
      <Coal v-if="tabName === 'coal'" v-model:copyForm="copyForm" v-model:coalDialogFormVisible="dialogFormVisible"
        :form="form" :title="title" :addOrEdit="addOrEdit" @submit="handleSubmit" />
      <coalQualityMaintenance v-if="tabName === 'coalQualityMaintenance'"
        v-model:coalQualityMaintenanceDialogFormVisible="dialogFormVisible" :form="form" :title="title"
        :addOrEdit="addOrEdit" @submit="handleSubmit" />
      <coalMeiZhiZiDuanWeiHu v-if="tabName === 'coalMeiZhiZiDuanWeiHu'"
        v-model:coalMaintenanceFieldDialogVisible="dialogFormVisible" :form="form" :title="title"
        :addOrEdit="addOrEdit" @submit="handleSubmit" />
    </el-card>
  </div>
@@ -54,6 +58,7 @@
import Customer from "./mould/customer.vue";
import Coal from "./mould/coal.vue";
import coalQualityMaintenance from "./mould/coalQualityMaintenance.vue";
import coalMeiZhiZiDuanWeiHu from "./mould/coalMeiZhiZiDuanWeiHu.vue";
const { proxy } = getCurrentInstance()
import { getSupply, addOrEditSupply, delSupply } from "@/api/basicInformation/supplier.js";
import { getCoalInfo, delCoalInfo } from "@/api/basicInformation/coal.js";
@@ -63,6 +68,7 @@
import { getCustomerList, delCustomer } from "@/api/basicInformation/customer.js";
// 弹窗
const coalMaintenanceFieldDialogVisible = ref(false);
const coalQualityMaintenanceDialogFormVisible = ref(false);
const customerDialogFormVisible = ref(false);
const coalDialogFormVisible = ref(false);
@@ -120,19 +126,16 @@
// 地址格式化函数
const formatAddressArray = (addressIds) => {
  // 如果地址映射表还没有准备好,显示 --
  if (!addressMap.value || Object.keys(addressMap.value).length === 0||!addressIds || !Array.isArray(addressIds) || addressIds.length === 0 || addressIds.every(id => !id)) {
  if (!addressMap.value || Object.keys(addressMap.value).length === 0 || !addressIds || !Array.isArray(addressIds) || addressIds.length === 0 || addressIds.every(id => !id)) {
    return '--';
  }
  const addressNames = addressIds.map(id => {
    return addressMap.value[id]?.name || '--';
  });
  // 如果所有地址名称都是 '--',则返回 '--'
  if (addressNames.every(name => name === '--')) {
    return '--';
  }
  return addressNames.filter(name => name !== '--').join(' / ');
};
// 获取用户列表数据
@@ -144,13 +147,11 @@
      userList.value.forEach(user => {
        userMap.value[user.userId] = user.username;
      });
      console.log('用户映射表:', userMap.value);
    }
  } catch (error) {
    console.error('获取用户列表失败:', error);
  }
};
onMounted(async () => {
  await handleTabClick({ props: { name: "supplier" } });
  await fetchAreaOptions(); // 先获取地址选择数据并构建映射表
@@ -162,7 +163,8 @@
  { name: "supplier", label: "供应商信息" },
  { name: "customer", label: "客户信息" },
  { name: "coal", label: "煤种信息" },
  { name: "coalQualityMaintenance", label: "煤质维护" },
  { name: "coalQualityMaintenance", label: "煤质方案" },
  { name: "coalMeiZhiZiDuanWeiHu", label: "煤质字段" }
]);
// 是否编辑
const addOrEdit = ref("add");
@@ -171,9 +173,9 @@
// supplier 供应商数据
const supplierColumns = ref([
  { prop: "supplierName", label: "供应商名称", minWidth: 100 },
  { prop: "taxpayerId", label: "统一人识别号", minWidth: 170 },  {
    prop: "bids",
    label: "经营地址",
  { prop: "taxpayerId", label: "统一人识别号", minWidth: 170 }, {
    prop: "bids",
    label: "经营地址",
    minWidth: 150,
    showOverflowTooltip: true,
    formatter: (row, column, cellValue) => {
@@ -188,10 +190,10 @@
  { prop: "businessAddress", label: "经营详细地址", minWidth: 150 },
  { prop: "bankAccount", label: "开户行", minWidth: 120 },
  { prop: "bankName", label: "银行账号", minWidth: 150 },
  { prop: "contactPerson", label: "联系人", minWidth: 100 },
  {
    prop: "cids",
    label: "联系人地址",
  { prop: "contactPerson", label: "联系人", minWidth: 100 },
  {
    prop: "cids",
    label: "联系人地址",
    minWidth: 150,
    showOverflowTooltip: true,
    formatter: (row, column, cellValue) => {
@@ -202,7 +204,7 @@
      ]
      return formatAddressArray(arr);
    }
  },{ prop: "contactAddress", label: "联系人详细地址", minWidth: 120 },
  }, { prop: "contactAddress", label: "联系人详细地址", minWidth: 120 },
  // { 
  //   prop: "maintainerId", 
  //   label: "维护人", 
@@ -230,13 +232,12 @@
const customerColumns = ref([
  { prop: "customerName", label: "客户名称", minWidth: 100 },
  { prop: "taxpayerId", label: "统一人识别号", minWidth: 120 },
{
    prop: "bids",
    label: "经营地址",
  {
    prop: "bids",
    label: "经营地址",
    minWidth: 150,
    showOverflowTooltip: true,
    formatter: (row, column, cellValue) => {
      console.log(row, column, cellValue);
      let arr = [
        row.businessProvinceId,
        row.businessCityId,
@@ -247,12 +248,12 @@
  },
  { prop: "businessAddress", label: "详细地址", minWidth: 150 },
  { prop: "bankName", label: "开户行", minWidth: 120 },
  { prop: "bankAccount", label: "银行账号", minWidth: 150 },
  { prop: "bankAccount", label: "银行账号", minWidth: 150 },
  { prop: "contactPerson", label: "联系人", minWidth: 100 },
  { prop: "contactPhone", label: "联系人电话", minWidth: 100 },
{
    prop: "cids",
    label: "联系人地址",
  {
    prop: "cids",
    label: "联系人地址",
    minWidth: 150,
    showOverflowTooltip: true,
    formatter: (row, column, cellValue) => {
@@ -269,9 +270,9 @@
]);
// coal 煤种数据
const coalColumns = ref([
  { prop: "coal", label: "煤种名称", minWidth: 200 },  {
    prop: "maintainerId",
    label: "维护人",
  { prop: "coal", label: "煤种名称", minWidth: 200 }, {
    prop: "maintainerId",
    label: "维护人",
    minWidth: 120,
    formatter: (row, column, cellValue) => {
      // 如果用户映射表还没有准备好,显示 --
@@ -294,14 +295,18 @@
]);
// coalQualityMaintenance 煤质维护数据
const coalQualityMaintenanceColumns = ref([
  { prop: "supplierName", label: "全水(<)", minWidth: 200 },
  { prop: "identifyNumber", label: "水分析(<)", minWidth: 120 },
  { prop: "address", label: "灰分", minWidth: 150 },
  { prop: "bank", label: "挥发(>)", minWidth: 100 },
  { prop: "bankAccount", label: "硫(<)", minWidth: 100 },
  { prop: "contacts", label: "固定碳", minWidth: 100 },
  { prop: "coal", label: "煤种名称", minWidth: 200 },
  { prop: "totalMoisture", label: "全水含量百分比 (%)", minWidth: 200 },
  { prop: "analysisMoisture", label: "分析水含量百分比 (%)", minWidth: 200 },
  { prop: "volatileMatter", label: "挥发分百分比 (%)", minWidth: 100 },
  { prop: "sulfurContent", label: "硫含量百分比 (%)", minWidth: 100 },
  { prop: "contacts", label: "固定碳百分比 (%)", minWidth: 100 },
  { prop: "contactAddress", label: "高位发热量", minWidth: 100 },
  { prop: "maintainer", label: "低位发热量", minWidth: 100 },
]);
const coalMeiZhiZiDuanWeiHuColumns = ref([
  { prop: "fieldName", label: "字段名称", minWidth: 200 },
  { prop: "fieldDescription", label: "字段描述", minWidth: 200 },
]);
// 标签页点击
const handleTabClick = (tab) => {
@@ -320,7 +325,6 @@
      columns.value = customerColumns.value;
      dialogFormVisible.value = customerDialogFormVisible.value;
      getList("customer");
      break;
    case "coal":
      columns.value = coalColumns.value;
@@ -331,6 +335,11 @@
      columns.value = coalQualityMaintenanceColumns.value;
      dialogFormVisible.value = coalQualityMaintenanceDialogFormVisible.value;
      getList("coalQualityMaintenance");
      break;
    case "coalMeiZhiZiDuanWeiHu":
      columns.value = coalMeiZhiZiDuanWeiHuColumns.value;
      dialogFormVisible.value = coalMaintenanceFieldDialogVisible.value;
      getList("coalMeiZhiZiDuanWeiHu");
      break;
  }
};
@@ -365,7 +374,11 @@
    openDialog();
  } else if (tabName === "coalQualityMaintenance") {
    dialogFormVisible.value = true;
    title.value = title.value + "煤质维护";
    title.value = title.value + "煤质方案维护";
    openDialog();
  } else if (tabName === "coalMeiZhiZiDuanWeiHu") {
    dialogFormVisible.value = true;
    title.value = title.value + "煤质字段维护";
    openDialog();
  }
};
@@ -387,7 +400,6 @@
};
// 提交表单
const handleSubmit = async (val) => {
  console.log(val);
  if (val.result.code !== 200) {
    ElMessage.error("操作失败:" + val.result.msg);
    return;
@@ -406,28 +418,28 @@
// 编辑
const handleEdit = (row) => {
  form.value = JSON.parse(JSON.stringify(row));
  if(form.value.bprovinceId && form.value.bdistrictId && form.value.bcityId  ){
  if (form.value.bprovinceId && form.value.bdistrictId && form.value.bcityId) {
    form.value.bids = [
    row.bprovinceId,
    row.bcityId,
    row.bdistrictId,
  ];
      row.bprovinceId,
      row.bcityId,
      row.bdistrictId,
    ];
  }
   if(form.value.cprovinceId && form.value.cdistrictId && form.value.ccityId  ){
  if (form.value.cprovinceId && form.value.cdistrictId && form.value.ccityId) {
    form.value.cids = [
    row.cprovinceId,
    row.ccityId,
    row.cdistrictId,
  ];
      row.cprovinceId,
      row.ccityId,
      row.cdistrictId,
    ];
  }
  if(form.value.businessCityId && form.value.businessDistrictId && form.value.businessProvinceId) {
  if (form.value.businessCityId && form.value.businessDistrictId && form.value.businessProvinceId) {
    form.value.bids = [
      row.businessProvinceId,
      row.businessCityId,
      row.businessDistrictId,
    ];
  }
  if(form.value.cityId && form.value.districtId && form.value.provinceId) {
  if (form.value.cityId && form.value.districtId && form.value.provinceId) {
    form.value.cids = [
      row.provinceId,
      row.cityId,
@@ -455,21 +467,21 @@
    .then(async () => {
      try {
        let res;
        if( tabName.value === "supplier" ) {
        if (tabName.value === "supplier") {
          res = await delSupply(arr);
        } else if (tabName.value === "coal") {
          res = await delCoalInfo(arr);
        } else if (tabName.value === "coalQualityMaintenance") {
          res = await delCoalQuality(arr);
        } else if( tabName.value === "customer") {
        } else if (tabName.value === "customer") {
          res = await delCustomer(arr);
        }
        if(res.code !== 200 && res.meg == "操作成功") {
        if (res.code !== 200 && res.meg == "操作成功") {
          ElMessage.error("删除失败:" + res.msg);
          return;
        }
        ElMessage.success("删除成功");
        await getList();
        await getList();
      } catch (e) {
        console.error(e);
        ElMessage.error("删除失败,请稍后再试");
@@ -486,7 +498,7 @@
  form.value = {};
};
const handleExport = () => {
  if(tabName.value === "supplier") {
  if (tabName.value === "supplier") {
    Export("/supply/export", "供应商信息");
  } else if (tabName.value === "customer") {
    Export("/customer/export", "客户信息");
@@ -497,7 +509,7 @@
  }
}
const Export = (api,name) => {
const Export = (api, name) => {
  proxy.download(api, {
    ...queryParams.value
  }, `${name}${new Date().getTime()}.xlsx`)
@@ -529,6 +541,23 @@
      pageSize: pageSizes.value,
      searchAll: queryParams.searchAll,
    });
  } else if (tabName.value === "coalMeiZhiZiDuanWeiHu") {
    return {
      code: 200,
          data: {
          records: [
            { fieldName: "字段1", fieldDescription: "描述1" },
            { fieldName: "字段2", fieldDescription: "描述2" },
            { fieldName: "字段3", fieldDescription: "描述3" }
          ],
            total: 10
        }
    };
    // return getCoalQuality({
    //   current: pageNum.value,
    //   pageSize: pageSizes.value,
    //   searchAll: queryParams.searchAll,
    // });
  }
}
const search = () => {
@@ -542,7 +571,8 @@
    await fetchAreaOptions();
  } */
  let { data, code } = await selectInterface()
  if(code !== 200) {
  console.log("获取数据:", code, data);
  if (code !== 200) {
    ElMessage.error("获取数据失败:" + data.msg);
    loading.value = false;
    return;