zhangwei
2025-08-27 dade6a8b4772abc113383246d05ab59162630e7c
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";
@@ -9,15 +9,132 @@
import {
  fabuzhaobiao,
  changezhaobiao,
  getTenderOrderDetail
  getTenderOrderDetail,
  updateTittle,
  changeDetail,
  cHangeDelete
} from "@/api/item/index";
const formRef = ref();
export function useDetail() {
  function openUploadDialog(title = "上传", row?: TenderInfo) {
  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: row?.id ?? "",
          projectName: row?.projectName ?? "",
          toubiaoStartDate: row?.toubiaoStartDate ?? "", //投标报名开始时间
          toubiaoEndDate: row?.toubiaoEndDate ?? "", //投标报名结束时间
          kaibiaoDate: row?.kaibiaoDate ?? "", //开标时间
          fujian: row?.fujian ?? "", //附件
          fujianName: row?.fujianName ?? "", //附件
          kaibiaodidian: row?.kaibiaodidian ?? "", //开标地点
          biangengwenjian: row?.biangengwenjian ?? "",
          // 变更文件
          biangengwenjianName: row?.biangengwenjianName ?? ""
        }
      },
      width: "30%",
      draggable: true,
      fullscreen: deviceDetection(),
      fullscreenIcon: true,
      sureBtnLoading: true,
      closeOnClickModal: false,
      contentRenderer: () =>
        h(tenderForm, {
          ref: formRef,
          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") {
                    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);
        async function chores() {
          // message(`您${title}了项目名称为${curData.projectName}的这条数据`, {
          //   type: "success"
          // });
          // curData.dingbiaoguize = curData.dingbiaoguize.join("");
          let res;
          if (title == "上传") {
            curData.id = state.nowInfo.id;
            res = await fabuzhaobiao(curData);
          } else {
            res = await changezhaobiao(curData);
          }
          if (res.code == "200") {
            getTenderOrderDetail({ id: row?.id }).then(res => {
              state.nowInfo = res.result;
            });
            done(); // 关闭弹框
          } else {
            closeLoading();
            message(res.message, {
              type: "error"
            });
          }
        }
        FormRef.validate((valid, obj) => {
          if (valid) {
            // 表单规则校验通过
            if (title === "新增") {
              // 实际开发先调用新增接口,再进行下面操作
              chores();
            } else {
              // 实际开发先调用修改接口,再进行下面操作
              chores();
            }
          } else {
            closeLoading();
            const fail = [];
            for (const key in obj) {
              fail.push(obj[key][0].message);
            }
            message(fail[0], {
              type: "warning"
            });
            return false;
          }
        });
      }
    });
  }
  function changeDialog(title = "上传", row?: TenderInfo) {
    addDialog({
      title: `修改标题`,
      props: {
        formInline: {
          tenderId: title == "上传变更" ? row?.id : "",
@@ -41,7 +158,8 @@
        h(tenderForm, {
          ref: formRef,
          formInline: null,
          isChange: title == "上传" ? false : true
          changeDetail: true,
          isChange: true
        }),
      beforeSure: (done, { options, closeLoading }) => {
        const FormRef = formRef.value.getRef();
@@ -51,15 +169,12 @@
          //   type: "success"
          // });
          // curData.dingbiaoguize = curData.dingbiaoguize.join("");
          let res;
          if (title == "上传") {
            curData.id = state.nowInfo.id;
            res = await fabuzhaobiao(curData);
          } else {
            res = await changezhaobiao(curData);
          }
          curData.id = state.nowInfo.id;
          const res = await updateTittle(curData);
          if (res.code == "200") {
            getTenderOrderDetail({ id: row?.id });
            getTenderOrderDetail({ id: row?.id }).then(res => {
              state.nowInfo = res.result;
            });
            done(); // 关闭弹框
          } else {
            closeLoading();
@@ -101,7 +216,8 @@
      Authorization: `Bearer ${getToken()?.accessToken}`
    },
    nowInfo: Object as PropType<FormItemProps>,
    formDataNew: {}
    formDataNew: {},
    srcList: []
  });
  //生成时间戳+随机数
  // 生成时间戳+随机数的函数
@@ -129,12 +245,14 @@
    );
    // 拼接时间戳和随机数
    return (
      `${dirPath}/${timestamp}_${randomNumber}` + filename.match(/\.[^.]+$/)
      `${dirPath}${filename}${timestamp}_${randomNumber}` +
      filename.match(/\.[^.]+$/)
    );
  }
  return {
    openUploadDialog,
    state,
    generateTimestampWithRandom
    generateTimestampWithRandom,
    changeDialog
  };
}