This commit is contained in:
2025-08-22 23:20:39 +08:00
5 changed files with 93 additions and 33 deletions

View File

@ -122,3 +122,11 @@ export const editStatus = (query: any): AxiosPromise<any> => {
data: query data: query
}); });
}; };
//获取审核状态
export const getApproval = (id) => {
return request({
url: '/tender/tenderPlanLimitList/getVersionDetail',
method: 'get',
params: { versions: id }
});
};

View File

@ -176,22 +176,26 @@ service.interceptors.response.use(
} }
); );
// 通用下载方法 // 通用下载方法
export function download(url: string, params: any, fileName: string, isHeader) { export function download(url: string, params: any, fileName: string, isHeader?: boolean) {
downloadLoadingInstance = ElLoading.service({ text: '正在下载数据,请稍候', background: 'rgba(0, 0, 0, 0.7)' }); downloadLoadingInstance = ElLoading.service({ text: '正在下载数据,请稍候', background: 'rgba(0, 0, 0, 0.7)' });
// prettier-ignore // prettier-ignore
return service.post(url, params, { let data={
transformRequest: [ transformRequest: [
(params: any) => { (params: any) => {
return tansParams(params); return tansParams(params);
} }
], ],
headers: isHeader?{}:{ 'Content-Type': 'application/x-www-form-urlencoded' }, headers: isHeader?{'Content-Type': 'application/json'}:{ 'Content-Type': 'application/x-www-form-urlencoded' },
responseType: 'blob' responseType: 'blob'
}).then(async (resp: any) => { }
if (isHeader) delete data.transformRequest;
return service
.post(url, params, data as any)
.then(async (resp: any) => {
const isLogin = blobValidate(resp); const isLogin = blobValidate(resp);
if (isLogin) { if (isLogin) {
console.log("🚀 ~ download ~ resp:", resp) console.log('🚀 ~ download ~ resp:', resp);
const blob = new Blob([resp]); const blob = new Blob([resp]);
FileSaver.saveAs(blob, fileName); FileSaver.saveAs(blob, fileName);
} else { } else {
@ -201,7 +205,8 @@ export function download(url: string, params: any, fileName: string, isHeader) {
ElMessage.error(errMsg); ElMessage.error(errMsg);
} }
downloadLoadingInstance.close(); downloadLoadingInstance.close();
}).catch((r: any) => { })
.catch((r: any) => {
console.error(r); console.error(r);
ElMessage.error('下载文件出现错误,请联系管理员!'); ElMessage.error('下载文件出现错误,请联系管理员!');
downloadLoadingInstance.close(); downloadLoadingInstance.close();

View File

@ -153,7 +153,6 @@ import {
} from '@/api/progress/progressCategory'; } from '@/api/progress/progressCategory';
import { ProgressCategoryVO, ProgressCategoryQuery, ProgressCategoryForm } from '@/api/progress/progressCategory/types'; import { ProgressCategoryVO, ProgressCategoryQuery, ProgressCategoryForm } from '@/api/progress/progressCategory/types';
import { useUserStoreHook } from '@/store/modules/user'; import { useUserStoreHook } from '@/store/modules/user';
import { download } from '@/utils/request';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { progress_unit_type, progress_work_type } = toRefs<any>(proxy?.useDict('progress_unit_type', 'progress_work_type')); const { progress_unit_type, progress_work_type } = toRefs<any>(proxy?.useDict('progress_unit_type', 'progress_work_type'));
@ -367,9 +366,14 @@ const handleUpdate = async (row: ProgressCategoryVO) => {
const handleExport = async () => { const handleExport = async () => {
const ids = treeRef.value.getCheckedNodes()[0].pathNodes[0].childrenData.map((item) => item.matrixId); const ids = treeRef.value.getCheckedNodes()[0].pathNodes[0].childrenData.map((item) => item.matrixId);
const res = await downloadProgressCategory({ ids }); proxy?.download(
download('/progress/progressCategory/export', { ids }, '方阵.xlsx', true); '/progress/progressCategory/export',
// window.open(res.data); {
ids: ids
},
`qualityInspection_${new Date().getTime()}.xlsx`,
true
);
}; };
/** 提交按钮 */ /** 提交按钮 */

View File

@ -107,7 +107,7 @@ const queryForm = ref({
sheet: '' sheet: ''
}); });
const versionsData = ref({}); const versionsData = ref<any>({});
const activeTab = ref('2'); const activeTab = ref('2');
const sheets = ref([]); const sheets = ref([]);
@ -272,9 +272,11 @@ const handleSave = (row: any) => {
/** 审核按钮操作 */ /** 审核按钮操作 */
const handleAudit = async () => { const handleAudit = async () => {
proxy?.$tab.openPage('/approval/tenderPlan/indexEdit', '审核招标一览', { proxy?.$tab.openPage('/approval/tenderBidd/indexEdit', '审核招标一览', {
id: queryForm.value.versions, id: queryForm.value.versions,
type: 'update' type: 'update',
activeTab: activeTab.value,
status: versionsData.value.status
}); });
}; };

View File

@ -9,14 +9,14 @@
@handleApprovalRecord="handleApprovalRecord" @handleApprovalRecord="handleApprovalRecord"
:buttonLoading="buttonLoading" :buttonLoading="buttonLoading"
:id="form.id" :id="form.id"
:status="form.auditStatus" :status="form.status"
:pageType="routeParams.type" :pageType="routeParams.type"
/> />
</el-card> </el-card>
<!-- 表单区域 --> <!-- 表单区域 -->
<el-card class="rounded-lg shadow-sm bg-white border border-gray-100 transition-all hover:shadow-md overflow-hidden"> <el-card class="rounded-lg shadow-sm bg-white border border-gray-100 transition-all hover:shadow-md overflow-hidden">
<div class="p-4 bg-gradient-to-r from-blue-50 to-indigo-50 border-b border-gray-100"> <div class="p-4 bg-gradient-to-r from-blue-50 to-indigo-50 border-b border-gray-100">
<h3 class="text-lg font-semibold text-gray-800">施工产值</h3> <h3 class="text-lg font-semibold text-gray-800">招标一览</h3>
</div> </div>
<div class="p-6"> <div class="p-6">
<el-form <el-form
@ -98,7 +98,11 @@ import { StartProcessBo } from '@/api/workflow/workflowCommon/types';
const { proxy } = getCurrentInstance() as any; const { proxy } = getCurrentInstance() as any;
import { useUserStoreHook } from '@/store/modules/user'; import { useUserStoreHook } from '@/store/modules/user';
const { design_change_reason_type } = toRefs<any>(proxy?.useDict('design_change_reason_type')); const { design_change_reason_type } = toRefs<any>(proxy?.useDict('design_change_reason_type'));
import { listBillofquantitiesLimitList } from '@/api/contract/index'; import { getKnowledgeDocument } from '@/api/design/technicalStandard';
import { getConstructionValue } from '@/api/out/constructionValue';
import { workScheduleListDetail } from '@/api/progress/plan';
import { sheetList } from '@/api/contract';
import { getApproval, getTableList } from '@/api/tender';
// 获取用户 store // 获取用户 store
const userStore = useUserStoreHook(); const userStore = useUserStoreHook();
// 从 store 中获取项目列表和当前选中的项目 // 从 store 中获取项目列表和当前选中的项目
@ -121,11 +125,15 @@ const approvalRecordRef = ref<InstanceType<typeof ApprovalRecord>>();
//按钮组件 //按钮组件
const flowCodeOptions = [ const flowCodeOptions = [
{ {
value: currentProject.value?.id + '_xianjiayilan', value: currentProject.value?.id + '_bLimitEquipmentList',
label: '合约限价审核' label: '招标一览审批'
} }
]; ];
const sheets = ref([]);
const queryForm = ref({
versions: '',
sheet: ''
});
const leaveFormRef = ref<ElFormInstance>(); const leaveFormRef = ref<ElFormInstance>();
const dialog = reactive({ const dialog = reactive({
visible: false, visible: false,
@ -141,9 +149,12 @@ const submitFormData = ref<StartProcessBo>({
const taskVariables = ref<Record<string, any>>({}); const taskVariables = ref<Record<string, any>>({});
const initFormData = { const initFormData = {
versions: '', id: undefined,
sheet: '', projectId: currentProject.value?.id,
status: '' versions: undefined,
sheet: undefined,
type: undefined,
status: undefined
}; };
const data = reactive({ const data = reactive({
form: { ...initFormData }, form: { ...initFormData },
@ -164,20 +175,43 @@ const reset = () => {
}; };
/** 获取详情 */ /** 获取详情 */
const getInfo = () => { const getInfo = async () => {
loading.value = true; loading.value = true;
buttonLoading.value = false; buttonLoading.value = false;
nextTick(async () => { nextTick(async () => {
const res = await listBillofquantitiesLimitList({ try {
projectId: routeParams.value?.id, const params = {
versions: routeParams.value.versions, projectId: currentProject.value?.id,
sheet: routeParams.value.sheet versions: form.value.versions
};
const res = await sheetList(params);
if (res.code == 200) {
sheets.value = res.data;
if (res.data.length > 0) {
queryForm.value.sheet = res.data[0];
} else {
queryForm.value.sheet = '';
}
try {
const res = await getTableList(form.value);
if (res.code == 200) {
tableData.value = res.data;
}
} catch (error) {
console.log(error);
}
}
} catch (error) {
console.log(error);
}
getApproval(form.value.versions).then((res) => {
form.value.status = res.data.status;
}); });
console.log('res.data', res.data); if (routeParams.value.type === 'approval') {
Object.assign(form.value, routeParams.value); form.value.id = routeParams.value.id;
console.log('form', form.value); } else {
tableData.value = res.data; form.value.id = routeParams.value.id + '_' + routeParams.value.activeTab;
console.log('tableData', tableData.value); }
loading.value = false; loading.value = false;
buttonLoading.value = false; buttonLoading.value = false;
}); });
@ -235,7 +269,7 @@ const submit = async (status, data) => {
proxy.$tab.closePage(proxy.$route); proxy.$tab.closePage(proxy.$route);
proxy.$router.go(-1); proxy.$router.go(-1);
} else { } else {
if ((form.value.auditStatus === 'draft' && (flowCode.value === '' || flowCode.value === null)) || routeParams.value.type === 'add') { if ((form.value.status === 'draft' && (flowCode.value === '' || flowCode.value === null)) || routeParams.value.type === 'add') {
flowCode.value = flowCodeOptions[0].value; flowCode.value = flowCodeOptions[0].value;
dialogVisible.visible = true; dialogVisible.visible = true;
return; return;
@ -257,6 +291,13 @@ onMounted(() => {
console.log(routeParams.value); console.log(routeParams.value);
if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') { if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') {
if (routeParams.value.type === 'approval') {
form.value.versions = routeParams.value.id.split('_')[0];
form.value.type = routeParams.value.id.split('_')[1];
} else {
form.value.versions = routeParams.value.id;
form.value.type = routeParams.value.activeTab;
}
getInfo(); getInfo();
} }
}); });