This commit is contained in:
吴红兵
2026-03-04 23:20:40 +08:00
parent 7f61c9bdce
commit 48b31285c8
3 changed files with 108 additions and 32 deletions

View File

@@ -128,7 +128,7 @@
</template> </template>
<script setup lang="ts" name="home"> <script setup lang="ts" name="home">
import { ref, onMounted, onUnmounted } from 'vue' import { ref, onMounted, onActivated, onUnmounted } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { fetchTodoPage } from '/@/api/jsonflow/do-job' import { fetchTodoPage } from '/@/api/jsonflow/do-job'
import { fetchList as fetchNoticeList } from '/@/api/jsonflow/ws-notice' import { fetchList as fetchNoticeList } from '/@/api/jsonflow/ws-notice'
@@ -278,6 +278,11 @@ onMounted(() => {
loadMessageList() loadMessageList()
}) })
// 页面激活时刷新待办列表(处理从待办返回的情况)
onActivated(() => {
loadTodoList()
})
onUnmounted(() => { onUnmounted(() => {
if (timeTimer) { if (timeTimer) {
clearInterval(timeTimer) clearInterval(timeTimer)

View File

@@ -205,7 +205,7 @@
<upload-file <upload-file
v-model="dataForm.businessNegotiationTable" v-model="dataForm.businessNegotiationTable"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.businessNegotiationTable }" :data="{ fileType: FILE_TYPE_MAP.businessNegotiationTable }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('businessNegotiationTable')" :disabled="flowFieldDisabled('businessNegotiationTable')"
@@ -226,7 +226,7 @@
<upload-file <upload-file
v-model="dataForm.marketPurchaseMinutes" v-model="dataForm.marketPurchaseMinutes"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.marketPurchaseMinutes }" :data="{ fileType: FILE_TYPE_MAP.marketPurchaseMinutes }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('marketPurchaseMinutes')" :disabled="flowFieldDisabled('marketPurchaseMinutes')"
@@ -247,7 +247,7 @@
<upload-file <upload-file
v-model="dataForm.onlineMallMaterials" v-model="dataForm.onlineMallMaterials"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.onlineMallMaterials }" :data="{ fileType: FILE_TYPE_MAP.onlineMallMaterials }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('onlineMallMaterials')" :disabled="flowFieldDisabled('onlineMallMaterials')"
@@ -259,7 +259,7 @@
<upload-file <upload-file
v-model="dataForm.inquiryTemplate" v-model="dataForm.inquiryTemplate"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.inquiryTemplate }" :data="{ fileType: FILE_TYPE_MAP.inquiryTemplate }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('inquiryTemplate')" :disabled="flowFieldDisabled('inquiryTemplate')"
@@ -284,7 +284,7 @@
<upload-file <upload-file
v-model="dataForm.deptSelfMeetingMinutes" v-model="dataForm.deptSelfMeetingMinutes"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.deptSelfMeetingMinutes }" :data="{ fileType: FILE_TYPE_MAP.deptSelfMeetingMinutes }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('deptSelfMeetingMinutes')" :disabled="flowFieldDisabled('deptSelfMeetingMinutes')"
@@ -320,7 +320,7 @@
<upload-file <upload-file
v-model="dataForm.serviceDirectSelect" v-model="dataForm.serviceDirectSelect"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.serviceDirectSelect }" :data="{ fileType: FILE_TYPE_MAP.serviceDirectSelect }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('serviceDirectSelect')" :disabled="flowFieldDisabled('serviceDirectSelect')"
@@ -351,7 +351,7 @@
<upload-file <upload-file
v-model="dataForm.serviceInviteSelect" v-model="dataForm.serviceInviteSelect"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.serviceInviteSelect }" :data="{ fileType: FILE_TYPE_MAP.serviceInviteSelect }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('serviceInviteSelect')" :disabled="flowFieldDisabled('serviceInviteSelect')"
@@ -376,7 +376,7 @@
<upload-file <upload-file
v-model="dataForm.purchaseRequirementTemplate" v-model="dataForm.purchaseRequirementTemplate"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.purchaseRequirementTemplate }" :data="{ fileType: FILE_TYPE_MAP.purchaseRequirementTemplate }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('purchaseRequirementTemplate')" :disabled="flowFieldDisabled('purchaseRequirementTemplate')"
@@ -405,7 +405,7 @@
<upload-file <upload-file
v-model="dataForm.serviceInviteSelect" v-model="dataForm.serviceInviteSelect"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.serviceInviteSelect }" :data="{ fileType: FILE_TYPE_MAP.serviceInviteSelect }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('serviceInviteSelect')" :disabled="flowFieldDisabled('serviceInviteSelect')"
@@ -426,7 +426,7 @@
<upload-file <upload-file
v-model="dataForm.servicePublicSelectAuto" v-model="dataForm.servicePublicSelectAuto"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.servicePublicSelectAuto }" :data="{ fileType: FILE_TYPE_MAP.servicePublicSelectAuto }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('servicePublicSelectAuto')" :disabled="flowFieldDisabled('servicePublicSelectAuto')"
@@ -556,7 +556,7 @@
<upload-file <upload-file
v-model="dataForm.feasibilityReport" v-model="dataForm.feasibilityReport"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.feasibilityReport }" :data="{ fileType: FILE_TYPE_MAP.feasibilityReport }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('feasibilityReport')" :disabled="flowFieldDisabled('feasibilityReport')"
@@ -587,7 +587,7 @@
<upload-file <upload-file
v-model="dataForm.meetingMinutes" v-model="dataForm.meetingMinutes"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.meetingMinutes }" :data="{ fileType: FILE_TYPE_MAP.meetingMinutes }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('meetingMinutes')" :disabled="flowFieldDisabled('meetingMinutes')"
@@ -599,7 +599,7 @@
<upload-file <upload-file
v-model="dataForm.meetingMinutesUrgent" v-model="dataForm.meetingMinutesUrgent"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.meetingMinutesUrgent }" :data="{ fileType: FILE_TYPE_MAP.meetingMinutesUrgent }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('meetingMinutesUrgent')" :disabled="flowFieldDisabled('meetingMinutesUrgent')"
@@ -611,7 +611,7 @@
<upload-file <upload-file
v-model="dataForm.singleSourceProof" v-model="dataForm.singleSourceProof"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.singleSourceProof }" :data="{ fileType: FILE_TYPE_MAP.singleSourceProof }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('singleSourceProof')" :disabled="flowFieldDisabled('singleSourceProof')"
@@ -632,7 +632,7 @@
<upload-file <upload-file
v-model="dataForm.meetingMinutesSingle" v-model="dataForm.meetingMinutesSingle"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.meetingMinutesSingle }" :data="{ fileType: FILE_TYPE_MAP.meetingMinutesSingle }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('meetingMinutesSingle')" :disabled="flowFieldDisabled('meetingMinutesSingle')"
@@ -644,7 +644,7 @@
<upload-file <upload-file
v-model="dataForm.importApplication" v-model="dataForm.importApplication"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.importApplication }" :data="{ fileType: FILE_TYPE_MAP.importApplication }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('importApplication')" :disabled="flowFieldDisabled('importApplication')"
@@ -665,7 +665,7 @@
<upload-file <upload-file
v-model="dataForm.meetingMinutesImport" v-model="dataForm.meetingMinutesImport"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.meetingMinutesImport }" :data="{ fileType: FILE_TYPE_MAP.meetingMinutesImport }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('meetingMinutesImport')" :disabled="flowFieldDisabled('meetingMinutesImport')"
@@ -693,7 +693,7 @@
<upload-file <upload-file
v-model="dataForm.serviceInviteSelectSchool" v-model="dataForm.serviceInviteSelectSchool"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.serviceInviteSelectSchool }" :data="{ fileType: FILE_TYPE_MAP.serviceInviteSelectSchool }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('serviceInviteSelectSchool')" :disabled="flowFieldDisabled('serviceInviteSelectSchool')"
@@ -712,7 +712,7 @@
<upload-file <upload-file
v-model="dataForm.servicePublicSelectSchoolAuto" v-model="dataForm.servicePublicSelectSchoolAuto"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.servicePublicSelectSchoolAuto }" :data="{ fileType: FILE_TYPE_MAP.servicePublicSelectSchoolAuto }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('servicePublicSelectSchoolAuto')" :disabled="flowFieldDisabled('servicePublicSelectSchoolAuto')"
@@ -732,7 +732,7 @@
<upload-file <upload-file
v-model="dataForm.servicePublicSelectSchool" v-model="dataForm.servicePublicSelectSchool"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.servicePublicSelectSchool }" :data="{ fileType: FILE_TYPE_MAP.servicePublicSelectSchool }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('servicePublicSelectSchool')" :disabled="flowFieldDisabled('servicePublicSelectSchool')"
@@ -751,7 +751,7 @@
<upload-file <upload-file
v-model="dataForm.purchaseRequirement" v-model="dataForm.purchaseRequirement"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.purchaseRequirement }" :data="{ fileType: FILE_TYPE_MAP.purchaseRequirement }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('purchaseRequirement')" :disabled="flowFieldDisabled('purchaseRequirement')"
@@ -773,7 +773,7 @@
<upload-file <upload-file
v-model="dataForm.governmentPurchaseIntent" v-model="dataForm.governmentPurchaseIntent"
:limit="1" :limit="1"
:file-type="['pdf']" :file-type="['doc', 'docx', 'pdf']"
:data="{ fileType: FILE_TYPE_MAP.governmentPurchaseIntent }" :data="{ fileType: FILE_TYPE_MAP.governmentPurchaseIntent }"
upload-file-url="/purchase/purchasingfiles/upload" upload-file-url="/purchase/purchasingfiles/upload"
:disabled="flowFieldDisabled('governmentPurchaseIntent')" :disabled="flowFieldDisabled('governmentPurchaseIntent')"
@@ -967,6 +967,7 @@ import { addObj, tempStore, getObj, editObj, getApplyFiles } from '/@/api/purcha
import { getTree } from '/@/api/purchase/purchasingcategory'; import { getTree } from '/@/api/purchase/purchasingcategory';
import { getDicts } from '/@/api/admin/dict'; import { getDicts } from '/@/api/admin/dict';
import { useMessage } from '/@/hooks/message'; import { useMessage } from '/@/hooks/message';
import { useUserInfo } from '/@/stores/userInfo';
import { usePurchaseRulesSingleton } from '/@/hooks/usePurchaseRules'; import { usePurchaseRulesSingleton } from '/@/hooks/usePurchaseRules';
import UploadFile from '/@/components/Upload/index.vue'; import UploadFile from '/@/components/Upload/index.vue';
import other from '/@/utils/other'; import other from '/@/utils/other';
@@ -980,6 +981,7 @@ import * as orderVue from '/@/api/order/order-key-vue';
/** 采购中心角色编码:审批时仅该角色可编辑采购方式/采购形式 */ /** 采购中心角色编码:审批时仅该角色可编辑采购方式/采购形式 */
const PURCHASE_CENTER_ROLE_CODE = 'PURCHASE_CENTER'; const PURCHASE_CENTER_ROLE_CODE = 'PURCHASE_CENTER';
const PURCHASE_DEPT_APPLY_ROLE_CODE = 'ROLE_PURCHASE_DEPT_APPLY';
// 兼容流程 dynamic-link 引用:接收 currJob / currElTab并支持 handleJob 事件 // 兼容流程 dynamic-link 引用:接收 currJob / currElTab并支持 handleJob 事件
const props = defineProps({ const props = defineProps({
@@ -1041,9 +1043,15 @@ function flowFieldDisabled(_key: string) {
/** 当前用户是否为申请人(在流程中可编辑) */ /** 当前用户是否为申请人(在流程中可编辑) */
const isApplicant = computed(() => { const isApplicant = computed(() => {
if (!dataForm.createUser) return false;
const currentUser = Session.getUser() || {}; const stores = useUserInfo();
return dataForm.createUser === currentUser.userId || dataForm.createUser === currentUser.username; const currentUser = stores.userInfos?.user || {};
console.log(currentUser)
if (!dataForm.createBy) return false;
// const stores = useUserInfo();
// const currentUser = stores.userInfos?.user || {};
return dataForm.createBy === currentUser.username;
}); });
// 定义变量内容 // 定义变量内容
@@ -1066,6 +1074,7 @@ const dataForm = reactive({
categoryCode: '', categoryCode: '',
remark: '', remark: '',
status: '', status: '',
createBy: '', // 创建人用户名,用于判断是否为申请人
// 部门自行采购字段 // 部门自行采购字段
businessNegotiationTable: '', businessNegotiationTable: '',
marketPurchaseMinutes: '', marketPurchaseMinutes: '',
@@ -1762,6 +1771,7 @@ async function loadDetail(applyId: string | number) {
categoryCode: detail.categoryCode ?? '', categoryCode: detail.categoryCode ?? '',
remark: detail.remark ?? '', remark: detail.remark ?? '',
status: detail.status ?? '', status: detail.status ?? '',
createBy: detail.createBy ?? '',
businessNegotiationTable: detail.businessNegotiationTable ?? '', businessNegotiationTable: detail.businessNegotiationTable ?? '',
marketPurchaseMinutes: detail.marketPurchaseMinutes ?? '', marketPurchaseMinutes: detail.marketPurchaseMinutes ?? '',
onlineMallMaterials: detail.onlineMallMaterials ?? '', onlineMallMaterials: detail.onlineMallMaterials ?? '',
@@ -1929,6 +1939,7 @@ async function flowSubmitForm() {
'purchaseRequirementTemplate', 'purchaseRequirementTemplate',
'serviceInviteSelect', 'serviceInviteSelect',
'servicePublicSelectAuto', 'servicePublicSelectAuto',
'deptSelfMeetingMinutes', // 部门自行采购会议纪要
'purchaseRequirement', 'purchaseRequirement',
'meetingMinutes', 'meetingMinutes',
'feasibilityReport', 'feasibilityReport',

View File

@@ -109,11 +109,19 @@
<el-icon><List /></el-icon> <el-icon><List /></el-icon>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="purchaseNo" label="申请单编号" min-width="140" show-overflow-tooltip> <el-table-column prop="purchaseNo" label="申请单编号" min-width="150" show-overflow-tooltip>
<template #header> <template #header>
<el-icon><DocumentCopy /></el-icon> <el-icon><DocumentCopy /></el-icon>
<span style="margin-left: 4px">申请单编号</span> <span style="margin-left: 4px">申请单编号</span>
</template> </template>
<template #default="scope">
<div class="purchase-no-cell">
<span>{{ scope.row.purchaseNo }}</span>
<el-button v-if="scope.row.purchaseNo" type="primary" link size="small" class="copy-btn" @click.stop="copyToClipboard(scope.row.purchaseNo)">
<el-icon><CopyDocument /></el-icon>
</el-button>
</div>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="projectName" label="采购项目名称" min-width="200" show-overflow-tooltip> <el-table-column prop="projectName" label="采购项目名称" min-width="200" show-overflow-tooltip>
<template #header> <template #header>
@@ -185,15 +193,18 @@
<span v-else>-</span> <span v-else>-</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="purchaseMode" label="采购形式" width="130" align="center"> <el-table-column prop="purchaseMode" label="采购形式" width="140" align="center">
<template #header> <template #header>
<el-icon><Shop /></el-icon> <el-icon><Shop /></el-icon>
<span style="margin-left: 4px">采购形式</span> <span style="margin-left: 4px">采购形式</span>
</template> </template>
<template #default="scope"> <template #default="scope">
<div class="purchase-mode-cell">
<el-tag v-if="scope.row.purchaseMode === '1'" type="success">部门自行采购</el-tag> <el-tag v-if="scope.row.purchaseMode === '1'" type="success">部门自行采购</el-tag>
<el-tag v-else-if="scope.row.purchaseMode === '2'" type="primary">学校统一采购</el-tag> <el-tag v-else-if="scope.row.purchaseMode === '2'" type="primary">学校统一采购</el-tag>
<span v-else>-</span> <span v-else>-</span>
<el-tag v-if="scope.row.purchaseMode === '1' && scope.row.purchaseChannel === '2'" type="warning" size="small" class="entrust-tag"></el-tag>
</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="purchaseType" label="采购方式" width="120" align="center"> <el-table-column prop="purchaseType" label="采购方式" width="120" align="center">
@@ -383,7 +394,7 @@ import { useMessage, useMessageBox } from "/@/hooks/message";
import { useAuth } from '/@/hooks/auth'; import { useAuth } from '/@/hooks/auth';
import { getDicts } from '/@/api/admin/dict'; import { getDicts } from '/@/api/admin/dict';
import { getTree } from '/@/api/purchase/purchasingcategory'; import { getTree } from '/@/api/purchase/purchasingcategory';
import { List, Document, DocumentCopy, Search, Money, CircleCheck, InfoFilled, Calendar, OfficeBuilding, Warning, DocumentChecked, Edit, Delete, Upload, FolderOpened, Download, User, RefreshRight, Shop } from '@element-plus/icons-vue' import { List, Document, DocumentCopy, Search, Money, CircleCheck, InfoFilled, Calendar, OfficeBuilding, Warning, DocumentChecked, Edit, Delete, Upload, FolderOpened, Download, User, RefreshRight, Shop, CopyDocument } from '@element-plus/icons-vue'
import other from '/@/utils/other' import other from '/@/utils/other'
import { Session } from '/@/utils/storage' import { Session } from '/@/utils/storage'
@@ -574,6 +585,26 @@ const handleImplement = (row: any) => {
implementFormRef.value?.openDialog(row); implementFormRef.value?.openDialog(row);
}; };
/** 复制到剪贴板 */
const copyToClipboard = async (text: string) => {
if (!text) return;
try {
await navigator.clipboard.writeText(text);
useMessage().success('复制成功');
} catch (err) {
// 降级方案
const textarea = document.createElement('textarea');
textarea.value = text;
textarea.style.position = 'fixed';
textarea.style.opacity = '0';
document.body.appendChild(textarea);
textarea.select();
document.execCommand('copy');
document.body.removeChild(textarea);
useMessage().success('复制成功');
}
};
/** 打开招标文件审核 */ /** 打开招标文件审核 */
const handleDocAudit = (row: any) => { const handleDocAudit = (row: any) => {
docAuditDialogRef.value?.open(row); docAuditDialogRef.value?.open(row);
@@ -973,5 +1004,34 @@ onMounted(() => {
--el-tag-border-color: #e0e0e0; --el-tag-border-color: #e0e0e0;
--el-tag-text-color: #616161; --el-tag-text-color: #616161;
} }
.purchase-no-cell {
display: flex;
align-items: center;
gap: 4px;
.copy-btn {
opacity: 0;
transition: opacity 0.2s;
}
&:hover .copy-btn {
opacity: 1;
}
}
.purchase-mode-cell {
display: flex;
align-items: center;
justify-content: center;
gap: 4px;
.entrust-tag {
font-size: 11px;
padding: 0 4px;
height: 18px;
line-height: 16px;
}
}
</style> </style>