zhangwei
2025-08-28 06e4c8c1bad514992186d94a65c0dc6250e34716
src/views/system/dept/utils/detail.tsx
@@ -1,6 +1,6 @@
import tenderForm from "../uploadform.vue";
import { ref, h, reactive } from "vue";
import { addDialog } from "@/components/ReDialog";
import { addDialog, closeDialog } from "@/components/ReDialog";
import type { TenderInfo } from "./types";
import { message } from "@/utils/message";
import { cloneDeep, deviceDetection } from "@pureadmin/utils";
@@ -10,27 +10,71 @@
  fabuzhaobiao,
  changezhaobiao,
  getTenderOrderDetail,
  updateTittle
  updateTittle,
  changeDetail,
  cHangeDelete
} from "@/api/item/index";
const formRef = ref();
const convertFujianToObjects = (fujianStr, fujianNameStr) => {
  // 分割字符串为数组并过滤空值
  const srcArray = fujianStr.split(",").filter(Boolean);
  const nameArray = fujianNameStr.split(",").filter(Boolean);
  // 提取文件后缀作为valu
  const getFileExtension = fileName => {
    const lastDotIndex = fileName.lastIndexOf(".");
    // 如果没有后缀或文件名以点结尾,返回空字符串
    if (lastDotIndex === -1 || lastDotIndex === fileName.length - 1) {
      return "";
    }
    return fileName.slice(lastDotIndex + 1).toLowerCase();
  };
  // 映射为目标对象数组
  return srcArray.map((src, index) => {
    // 确保名称数组有对应索引的元素
    const name = nameArray[index]?.trim() || `未知文件${index + 1}`;
    return {
      name: name,
      filePath: src.trim(),
      fileType: getFileExtension(name)
    };
  });
};
export function useDetail() {
  function openUploadDialog(title = "上传", row?: TenderInfo) {
  async function getDetailList(id) {
    const res = await getTenderOrderDetail({ id });
    state.nowInfo = res.result;
    if (state.nowInfo.fujian) {
      state.nowInfo.fujianList = convertFujianToObjects(
        state.nowInfo.fujian,
        state.nowInfo.fujianName
      );
    }
  }
  async function openUploadDialog(title = "上传", row?: TenderInfo) {
    const detail = await changeDetail({ id: row.id });
    if (detail.result) {
      row = detail.result;
    }
    addDialog({
      title: `${title}公告`,
      props: {
        formInline: {
          tenderId: title == "上传变更" ? row?.id : "",
          id: title == "上传" ? row?.id : "",
          id: row?.id ?? "",
          projectName: row?.projectName ?? "",
          toubiaoStartDate: row?.toubiaoStartDate ?? "", //投标报名开始时间
          toubiaoEndDate: row?.toubiaoEndDate ?? "", //投标报名结束时间
          kaibiaoDate: row?.kaibiaoDate ?? "", //开标时间
          biangengwenjian: "", //招标文件
          fujian: row?.fujian ?? "", //附件
          fujianName: row?.fujianName ?? "", //附件
          kaibiaodidian: row?.kaibiaodidian ?? "" //开标地点
          kaibiaodidian: row?.kaibiaodidian ?? "", //开标地点
          biangengwenjian: row?.biangengwenjian ?? "",
          // 变更文件
          biangengwenjianName: row?.biangengwenjianName ?? ""
        }
      },
      width: "30%",
@@ -45,6 +89,34 @@
          formInline: null,
          isChange: title == "上传" ? false : true
        }),
      footerButtons: detail.result
        ? [
            {
              label: "删除",
              type: "danger",
              text: true,
              bg: true,
              popconfirm: { title: "是否确认删除当前变更公告" },
              btnClick: ({ dialog: { options, index }, button }) => {
                console.log(options, index, button);
                cHangeDelete({ id: row?.id }).then(res => {
                  if (res.code == "200") {
                    getDetailList(row?.tenderId);
                    // getTenderOrderDetail({ id: row?.tenderId }).then(res => {
                    //   state.nowInfo = res.result;
                    // });
                    closeDialog(options, index); // 关闭弹框
                  } else {
                    // closeLoading();
                    message(res.message, {
                      type: "error"
                    });
                  }
                });
              }
            }
          ]
        : [],
      beforeSure: (done, { options, closeLoading }) => {
        const FormRef = formRef.value.getRef();
        const curData = cloneDeep(options.props.formInline as TenderInfo);
@@ -61,9 +133,10 @@
            res = await changezhaobiao(curData);
          }
          if (res.code == "200") {
            getTenderOrderDetail({ id: row?.id }).then(res => {
              state.nowInfo = res.result;
            });
            getDetailList(row?.id);
            // getTenderOrderDetail({ id: row?.id }).then(res => {
            //   state.nowInfo = res.result;
            // });
            done(); // 关闭弹框
          } else {
            closeLoading();
@@ -217,6 +290,7 @@
    openUploadDialog,
    state,
    generateTimestampWithRandom,
    changeDialog
    changeDialog,
    getDetailList
  };
}