This commit is contained in:
Teo
2025-08-29 16:51:44 +08:00
4 changed files with 53 additions and 16 deletions

Binary file not shown.

Binary file not shown.

View File

@ -47,9 +47,9 @@
<el-row :gutter="8" class="mb-3 font-medium text-gray-700 whitespace-nowrap">
<el-col :span="4">专业</el-col>
<el-col :span="5">设计人员可多选</el-col>
<el-col :span="5">校审人员可多选</el-col>
<el-col :span="5">审定人员可多选</el-col>
<el-col :span="4">审核人员可多选</el-col>
<el-col :span="5">校审人员</el-col>
<el-col :span="5">审定人员</el-col>
<el-col :span="4">审核人员</el-col>
<el-col :span="3"></el-col>
</el-row>
@ -65,7 +65,7 @@
>
<el-row :gutter="8" class="items-top">
<!-- 1. 专业选择核心统一所有角色的专业来源 -->
<el-col :span="3" class="mb-4 sm:mb-0 pl-4">
<el-col :span="3" class="mb-4 sm:mb-0 pl-4" style="margin-top:8px;">
<el-form-item
:prop="`designers.${configIndex}.userMajor`"
:rules="[
@ -174,7 +174,7 @@
<el-option v-for="item in userList" :key="`user-${item.userId}`" :label="item.nickName" :value="item.userId" />
</el-select>
</el-form-item>
<div class="flex gap-1">
<!-- <div class="flex gap-1">
<el-button
type="danger"
size="small"
@ -193,7 +193,7 @@
>
<el-icon :size="14"><Plus /></el-icon>
</el-button>
</div>
</div> -->
</div>
</div>
<div
@ -230,7 +230,7 @@
<el-option v-for="item in userList" :key="`user-${item.userId}`" :label="item.nickName" :value="item.userId" />
</el-select>
</el-form-item>
<div class="flex gap-1">
<!-- <div class="flex gap-1">
<el-button
type="danger"
size="small"
@ -249,7 +249,7 @@
>
<el-icon :size="14"><Plus /></el-icon>
</el-button>
</div>
</div> -->
</div>
</div>
<div
@ -286,7 +286,7 @@
<el-option v-for="item in userList" :key="`user-${item.userId}`" :label="item.nickName" :value="item.userId" />
</el-select>
</el-form-item>
<div class="flex gap-1">
<!-- <div class="flex gap-1">
<el-button
type="danger"
size="small"
@ -305,7 +305,7 @@
>
<el-icon :size="14"><Plus /></el-icon>
</el-button>
</div>
</div> -->
</div>
</div>
<div

View File

@ -16,10 +16,10 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="openTable(true, index)">一键展开</el-button>
<el-button type="primary" @click="openTable(index)">{{ isExpandAll ? '一键收起' : '一键展开' }}</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="openTable(false, index)">一键收起</el-button>
<el-button type="success" @click="downloadTemplate(1)">下载模板</el-button>
</el-form-item>
<el-form-item>
<el-upload ref="uploadRef" class="upload-demo" :http-request="importExcel" :show-file-list="false">
@ -51,15 +51,21 @@
<el-option v-for="item in state.options" :key="item.versions" :label="item.versions" :value="item.versions" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="success" @click="downloadTemplate(2)">下载模板</el-button>
</el-form-item>
<el-form-item>
<el-upload ref="uploadRef" class="upload-demo" :http-request="importExcel" :show-file-list="false" style="margin-right: 10px">
<template #trigger>
<el-button type="primary">导入excel</el-button>
</template>
</el-upload>
<el-button v-if="state.versionsData.status == 'draft'" type="primary" con="edit" @click="clickApprovalSheet()">审核</el-button>
</el-form-item>
<el-form-item v-if="state.versionsData.status == 'draft'">
<el-button type="primary" con="edit" @click="clickApprovalSheet()">审核</el-button>
</el-form-item>
<el-form-item v-if="state.versionsData.status == 'waiting' || state.versionsData.status == 'finish'">
<el-button
v-if="state.versionsData.status == 'waiting' || state.versionsData.status == 'finish'"
icon="view"
@click="lookApprovalFlow()"
type="warning"
@ -117,6 +123,7 @@ const { proxy } = getCurrentInstance();
const { work_order_type } = toRefs(proxy?.useDict('work_order_type'));
const tableRef = ref({});
console.log(work_order_type);
const isExpandAll = ref(true);
// tableData
// 版本号
@ -146,6 +153,7 @@ const state = reactive({
});
// tab切换
const handleTabChange = (tab) => {
isExpandAll.value = true;
console.log('tab', tab);
state.tableData = [];
state.options = [];
@ -305,13 +313,14 @@ function handleChangeVersion(versions) {
handleQueryList();
}
// 在 openTable 方法中通过索引获取对应的表格实例
function openTable(flag, index) {
function openTable( index) {
isExpandAll.value = !isExpandAll.value;
nextTick(() => {
// 通过索引获取当前标签页的表格实例
const currentTable = tableRef.value[index];
console.log(currentTable, index);
if (currentTable) {
handleArr(state.tableData, flag, currentTable);
handleArr(state.tableData, isExpandAll.value, currentTable);
}
});
}
@ -345,6 +354,34 @@ function lookApprovalFlow(row) {
}
});
}
// 下载模板
const downloadTemplate = (type) => {
// 导出模版文件
try {
let linkurl = '';
let name = '';
if (type==1) {
linkurl = '/billOfQuantities.xlsx';
name = '工程量清单模板.xlsx';
}else{
linkurl = '/materialsEquipment.xlsx';
name = '物资设备清单模板.xlsx';
}
// 创建a标签
const link = document.createElement('a');
// 设置PDF文件路径 - 相对于public目录
link.href = linkurl;
// 设置下载后的文件名
link.download = name;
// 触发点击
document.body.appendChild(link);
link.click();
// 清理
document.body.removeChild(link);
} catch (error) {
alert('下载失败,请重试');
}
};
</script>
<style>
.billof-quantities {