-
zhangwei
2025-08-25 23a2fff92f73b9759849a8016601a6817d7470b1
src/views/system/dept/detail.vue
@@ -1,45 +1,48 @@
<script setup lang="ts">
import { ref, reactive, onMounted, computed, PropType } from "vue";
<script setup lang="tsx">
import { ref, reactive, onMounted, computed, PropType, h } from "vue";
import { useRenderIcon } from "@/components/ReIcon/src/hooks";
import { useDept } from "./utils/hook";
import { FormItemProps } from "./utils/types";
import { useDetail } from "./utils/detail";
import { getTenderOrderDetail } from "@/api/item/index";
const isLoading = ref(false);
import { addDialog } from "@/components/ReDialog";
import pdfPreview from "@/views/system/component/pdfPreview.vue";
import { deviceDetection } from "@pureadmin/utils";
interface Emits {
  (e: "backListPage"): void;
}
const emit = defineEmits<Emits>();
const props = defineProps({
  nowInfo: Object as PropType<FormItemProps>
  nowID: null
});
import Delete from "~icons/ep/delete";
import EditPen from "~icons/ep/edit-pen";
import IconParkSolidBack from "~icons/icon-park-solid/back";
const {
  state,
  loading,
  selectedNum,
  dataList,
  onSearch,
  resetForm,
  openDialog,
  handleDelete,
  handleSelectionChange,
  handleSizeChange,
  handleCurrentChange,
  pagination,
  checkboxAsRadio,
  onSelectionCancel,
  onbatchDel
} = useDept(ref({}));
const { openDialog } = useDept(ref({}));
const { openUploadDialog, state, changeDialog } = useDetail();
defineOptions({
  name: "itemdetail"
});
onMounted(() => {
  console.log(props.nowInfo);
onMounted(async () => {
  let res = await getTenderOrderDetail({ id: props.nowID });
  state.nowInfo = res.result;
});
const backListPage = () => {
  emit("backListPage");
};
const previewPdf = pdfUrl => {
  addDialog({
    title: `预览pdf`,
    props: {},
    width: "60%",
    draggable: true,
    fullscreen: deviceDetection(),
    fullscreenIcon: true,
    sureBtnLoading: true,
    closeOnClickModal: false,
    contentRenderer: () => h(pdfPreview, { pdfSrc: pdfUrl })
    // jsx 语法 (注意在.vue文件启用jsx语法,需要在script开启lang="tsx")
  });
};
</script>
@@ -48,21 +51,14 @@
    <el-card>
      <template v-slot:header>
        <div class="flex justify-between">
          <div>{{ nowInfo.projectName }}</div>
          <div>{{ state.nowInfo.projectName }}</div>
          <div>
            <el-button
              class="reset-margin"
              link
              type="primary"
              :icon="useRenderIcon(EditPen)"
              @click="openDialog('修改', nowInfo)"
            />
            <el-button
              class="reset-margin"
              link
              type="primary"
              :icon="useRenderIcon(Delete)"
              @click="openDialog('修改', nowInfo)"
              @click="openDialog('修改', state.nowInfo)"
            />
            <el-button
              class="reset-margin"
@@ -75,27 +71,182 @@
        </div>
      </template>
      <div>
        <el-descriptions class="margin-top" :column="3" :size="size" border>
        <el-descriptions
          class="margin-top"
          :column="3"
          border
          label-width="120"
        >
          <el-descriptions-item label="项目编号">
            {{ nowInfo.projectCode }}
            {{ state.nowInfo.projectCode }}
          </el-descriptions-item>
          <el-descriptions-item label="行业品目"
            >18100000000</el-descriptions-item
          >
          <el-descriptions-item label="行业品目">
            {{ state.nowInfo.hangyepinmuName }}
          </el-descriptions-item>
          <el-descriptions-item label="采购方式">
            {{ nowInfo.caigoufangshiName }}
            {{ state.nowInfo.caigoufangshiName }}
          </el-descriptions-item>
          <el-descriptions-item label="联合体投标">
            {{ nowInfo.lianhetitoubiao }}
            {{ state.nowInfo.lianhetitoubiao }}
          </el-descriptions-item>
          <el-descriptions-item label="Remarks">
            <el-tag size="small">School</el-tag>
          <el-descriptions-item label="开标方式">
            {{ state.nowInfo.kaibiaofangshi }}
          </el-descriptions-item>
          <el-descriptions-item label="Address" />
        </el-descriptions>
      </div>
    </el-card>
    <div class="mt-4.5">
      <el-card>
        <el-tabs
          tab-position="left"
          style="height: calc(100vh - 380px)"
          class="demo-tabs"
          type="border-card"
        >
          <el-tab-pane label="公告文件上传">
            <h4>公告文件上传</h4>
            <el-divider />
            <el-scrollbar height="calc(100vh - 430px)">
              <div>
                <el-form label-width="auto" style="max-width: 1000px">
                  <el-form-item label="项目信息:">
                    <span class="mr-4">
                      投标报名开始时间:{{
                        state.nowInfo.toubiaoStartDate ?? "暂无"
                      }}
                    </span>
                    <span class="mr-4">
                      投标报名截止时间:
                      {{ state.nowInfo.toubiaoEndDate ?? "暂无" }}
                    </span>
                    <span class="mr-4">
                      开标时间:{{ state.nowInfo.kaibiaoDate ?? "暂无" }}
                    </span>
                  </el-form-item>
                  <el-form-item label="上传公告:">
                    <el-button
                      :disabled="!!state.nowInfo.zhaobiaowenjian"
                      type="primary"
                      plain
                      size="small"
                      @click="openUploadDialog('上传', state.nowInfo)"
                    >
                      上传公告
                    </el-button>
                    <el-button
                      v-if="state.nowInfo.zhaobiaowenjian"
                      type="primary"
                      plain
                      size="small"
                      @click="openUploadDialog('上传变更', state.nowInfo)"
                    >
                      上传变更公告
                    </el-button>
                  </el-form-item>
                  <el-form-item v-if="state.nowInfo.zhaobiaowenjian" label=" ">
                    <div class="border-1 w-[100%] rounded-md p-3">
                      <p>{{ state.nowInfo.projectName }}</p>
                      <p>上传时间:2025-8-12 13:41:00</p>
                      <el-button
                        type="primary"
                        plain
                        size="small"
                        @click="previewPdf(state.nowInfo.zhaobiaowenjian)"
                      >
                        点击预览
                      </el-button>
                      <el-button
                        v-if="state.nowInfo?.changeOrder"
                        type="primary"
                        plain
                        size="small"
                        @click="
                          previewPdf(state.nowInfo.changeOrder.biangengwenjian)
                        "
                      >
                        点击预览变更公告
                      </el-button>
                      <el-button
                        type="primary"
                        plain
                        size="small"
                        @click="changeDialog('上传变更', state.nowInfo)"
                      >
                        修改标题
                      </el-button>
                    </div>
                  </el-form-item>
                  <!-- <el-form-item label="磋商文件:">
                    <el-button type="primary" plain size="small">
                      上传磋商文件
                    </el-button>
                  </el-form-item>
                  <el-form-item label=" ">
                    <div class="border-1 w-[100%] rounded-md p-3 pl-3">
                      <p>磋商文件名称</p>
                      <p>发布时间:2025-8-12 13:41:00</p>
                      <el-button type="primary" plain size="small">
                        点击预览
                      </el-button>
                      <el-button type="primary" plain size="small">
                        点击下载
                      </el-button>
                    </div>
                  </el-form-item> -->
                  <!-- <el-form-item label="澄清与答疑文件:">
                    <el-button type="primary" plain size="small">
                      文件管理
                    </el-button>
                  </el-form-item> -->
                </el-form>
              </div>
              <!-- <el-row :gutter="10" align="right">
              <el-col :span="3">
                <el-text size="large"> 项目信息: </el-text>
              </el-col>
              <el-col :span="20">
                <el-button type="primary" plain>上传公告</el-button>
                <el-button type="primary" plain>上传变更公告</el-button>
              </el-col>
            </el-row>
            <el-row :gutter="10" align="right">
              <el-col :span="3">
                <el-text size="large"> 公告上传: </el-text>
              </el-col>
              <el-col :span="20">
                <el-button type="primary" plain>上传公告</el-button>
                <el-button type="primary" plain>上传变更公告</el-button>
              </el-col>
            </el-row>
            <el-row :gutter="10" align="right">
              <el-col :span="3">
                <el-text size="large"> 磋商文件: </el-text>
              </el-col>
              <el-col :span="20">
                <el-button type="primary" plain>上传磋商文件</el-button>
              </el-col>
            </el-row>
            <el-row :gutter="10" align="right">
              <el-col :span="3">
                <el-text size="large"> 澄清与答疑文件: </el-text>
              </el-col>
              <el-col :span="20">
                <el-button type="primary" plain>文件管理</el-button>
              </el-col>
            </el-row> -->
            </el-scrollbar>
          </el-tab-pane>
          <!-- <el-tab-pane label="开评标管理">开评标管理</el-tab-pane> -->
          <el-tab-pane label="中标公示">中标公示</el-tab-pane>
          <el-tab-pane label="项目完结">项目完结</el-tab-pane>
        </el-tabs>
      </el-card>
    </div>
  </div>
</template>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.el-divider--horizontal {
  margin: 11px 0;
}
</style>