This commit is contained in:
ljx
2025-09-10 19:34:57 +08:00
parent a3d35a7410
commit a3dd00645f
45 changed files with 146 additions and 55 deletions

View File

@ -53,7 +53,6 @@ export interface MaterialReceiveVO {
* 备注
*/
remark: string;
}
export interface MaterialReceiveForm extends BaseEntity {
@ -156,11 +155,13 @@ export interface MaterialReceiveForm extends BaseEntity {
* 备注
*/
remark?: string;
/**
* 附件
*/
attachmentId?: string | number;
}
export interface MaterialReceiveQuery extends PageQuery {
/**
* 项目id
*/
@ -206,6 +207,3 @@ export interface MaterialReceiveQuery extends PageQuery {
*/
params?: any;
}

View File

@ -31,6 +31,7 @@ export interface FlowTaskVO {
version?: string;
applyNode?: boolean;
buttonList?: buttonList[];
projectName?: string;
}
export interface buttonList {

View File

@ -12,7 +12,8 @@ export default {
businessId: routerJumpVo.businessId,
type: routerJumpVo.type,
planMonth: routerJumpVo.planMonth,
taskId: routerJumpVo.taskId
taskId: routerJumpVo.taskId,
projectName: routerJumpVo.projectName
}
});
}

View File

@ -4,6 +4,7 @@ export interface RouterJumpVo {
type: string;
formCustom: string;
formPath: string;
projectName?: string;
}
export interface StartProcessBo {

View File

@ -1,4 +1,5 @@
<template>
<div>
<div style="display: flex; justify-content: space-between">
<div>
<el-button v-if="submitButtonShow" :loading="props.buttonLoading" type="info" @click="submitForm('draft')">暂存</el-button>
@ -11,6 +12,8 @@
<el-button style="float: right" @click="goBack()">返回</el-button>
</div>
</div>
<h3 v-if="props.projectName" class="text-lg font-semibold text-gray-800">项目名称{{ props.projectName }}</h3>
</div>
</template>
<script setup lang="ts">
import { propTypes } from '@/utils/propTypes';
@ -22,7 +25,8 @@ const props = defineProps({
status: propTypes.string.def(''),
pageType: propTypes.string.def(''),
buttonLoading: propTypes.bool.def(false),
id: propTypes.string.def('') || propTypes.number.def()
id: propTypes.string.def('') || propTypes.number.def(),
projectName: propTypes.string.def('')
});
const emits = defineEmits(['submitForm', 'approvalVerifyOpen', 'handleApprovalRecord']);
//暂存,提交

View File

@ -167,7 +167,7 @@ const reset = () => {
form.value = { ...initFormData };
leaveFormRef.value?.resetFields();
};
const projectId = ref('');
/** 获取详情 */
const getInfo = () => {
loading.value = true;
@ -175,6 +175,7 @@ const getInfo = () => {
nextTick(async () => {
const res = await getVersionDetail(routeParams.value.id);
console.log(res);
projectId.value = res.data.projectId;
Object.assign(form.value, res.data);
loading.value = false;
buttonLoading.value = false;
@ -186,7 +187,7 @@ const sheets = ref([]);
const getSheetName = async () => {
try {
const params = {
projectId: currentProject.value?.id,
projectId: projectId.value,
versions: form.value.versions
};
const res = await sheetList(params);
@ -208,7 +209,7 @@ const tableData = ref([]);
//获取列表
const getListTable = async () => {
const res = await getTreeLimit({
projectId: currentProject.value?.id,
projectId: projectId.value,
versions: form.value.versions,
sheet: form.value.sheet,
type: '0'

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.versions"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->
@ -162,7 +163,7 @@ const reset = () => {
form.value = { ...initFormData };
leaveFormRef.value?.resetFields();
};
const projectId = ref('');
/** 获取详情 */
const getInfo = () => {
loading.value = true;
@ -170,6 +171,7 @@ const getInfo = () => {
nextTick(async () => {
const res = await getVersionDetails(routeParams.value.id);
console.log(res);
projectId.value = res.data.projectId;
Object.assign(form.value, res.data);
loading.value = false;
buttonLoading.value = false;
@ -181,7 +183,7 @@ const sheets = ref([]);
const getSheetName = async () => {
try {
const params = {
projectId: currentProject.value?.id,
projectId: projectId.value,
versions: form.value.versions
};
const res = await sheetList(params);
@ -201,7 +203,7 @@ const changeSheet = () => {
//获取列表
const getListTable = async () => {
const res = await listBillofquantitiesLimitList({
projectId: currentProject.value?.id,
projectId: projectId.value,
versions: form.value.versions,
sheet: form.value.sheet
});

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.versions"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.versions"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.versions"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.versions"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.design"
:status="form.auditStatus"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.auditStatus"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.auditStatus"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -3,13 +3,19 @@
<div class="max-w-4xl mx-auto">
<!-- 顶部按钮区域 -->
<el-card class="mb-4 rounded-lg shadow-sm bg-white border border-gray-100 transition-all hover:shadow-md">
<approvalButton @submitForm="submitForm" @approvalVerifyOpen="approvalVerifyOpen"
@handleApprovalRecord="handleApprovalRecord" :buttonLoading="buttonLoading" :id="form.mrpBaseBo.id"
:status="form.mrpBaseBo.status" :pageType="routeParams.type" />
<approvalButton
@submitForm="submitForm"
@approvalVerifyOpen="approvalVerifyOpen"
@handleApprovalRecord="handleApprovalRecord"
:buttonLoading="buttonLoading"
:id="form.mrpBaseBo.id"
:status="form.mrpBaseBo.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</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">
<h3 class="text-lg font-semibold text-gray-800">物资设备批次需求计划</h3>
<el-row :gutter="20">
@ -20,8 +26,7 @@
</el-col>
<el-col :span="8" :offset="0">
<el-form-item label="编制日期" prop="mrpBaseBo.preparedDate">
<el-date-picker v-model="form.mrpBaseBo.preparedDate" type="date" value-format="YYYY-MM-DD" disabled
placeholder="请选择编制日期" />
<el-date-picker v-model="form.mrpBaseBo.preparedDate" type="date" value-format="YYYY-MM-DD" disabled placeholder="请选择编制日期" />
</el-form-item>
</el-col>
<el-col :span="8" :offset="0">
@ -50,8 +55,14 @@
<submitVerify ref="submitVerifyRef" :task-variables="taskVariables" @submit-callback="submitCallback" />
<approvalRecord ref="approvalRecordRef"></approvalRecord>
<!-- 流程选择对话框 -->
<el-dialog draggable v-model="dialogVisible.visible" :title="dialogVisible.title" :before-close="handleClose"
width="500" class="rounded-lg shadow-lg">
<el-dialog
draggable
v-model="dialogVisible.visible"
:title="dialogVisible.title"
:before-close="handleClose"
width="500"
class="rounded-lg shadow-lg"
>
<div class="p-4">
<p class="text-gray-600 mb-4">请选择要启动的流程</p>
<el-select v-model="flowCode" placeholder="请选择流程" style="width: 100%">
@ -60,10 +71,12 @@
</div>
<template #footer>
<div class="dialog-footer p-4 border-t border-gray-100 flex justify-end space-x-3">
<el-button @click="handleClose"
class="px-4 py-2 border border-gray-300 rounded-md text-gray-700 hover:bg-gray-50 transition-colors">取消</el-button>
<el-button type="primary" @click="submitFlow()"
class="px-4 py-2 bg-primary text-white rounded-md hover:bg-primary/90 transition-colors">确认</el-button>
<el-button @click="handleClose" class="px-4 py-2 border border-gray-300 rounded-md text-gray-700 hover:bg-gray-50 transition-colors"
>取消</el-button
>
<el-button type="primary" @click="submitFlow()" class="px-4 py-2 bg-primary text-white rounded-md hover:bg-primary/90 transition-colors"
>确认</el-button
>
</div>
</template>
</el-dialog>

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.approvalDesign"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -70,6 +70,13 @@
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="附件" align="center" prop="attachmentName">
<template #default="scope">
<el-button :href="scope.row.attachmentName" link type="primary" @click="downloadAttachment(scope.row)">{{
scope.row.attachmentName
}}</el-button>
</template>
</el-table-column>
<el-table-column label="操作" align="center" min-width="120" fixed="right">
<template #default="scope">
<!-- <el-button link type="primary" icon="edit" @click="handleUpdate(scope.row)" v-hasPermi="['materials:materialReceive:edit']"
@ -254,6 +261,11 @@
<file-upload :isShowTip="false" :fileType="['pdf', 'png', 'jpg', 'jpeg']" v-model="form.licenseCountFileId" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="附件" prop="attachmentId">
<file-upload :isShowTip="false" :fileType="['pdf', 'png', 'jpg', 'jpeg', 'zip']" v-model="form.attachmentId" />
</el-form-item>
</el-col>
<el-col :span="24">
<span style="color: #ff0000ab; margin-bottom: 10px; display: block">注意pdf/png/jpg/jpeg格式文件</span>
</el-col>
@ -351,6 +363,7 @@ const getInitFormData = (): MaterialReceiveForm => {
techDocCountFileId: undefined,
licenseCount: undefined,
licenseCountFileId: undefined,
attachmentId: undefined,
storageType: '1',
remark: undefined,
docId: undefined,
@ -538,6 +551,17 @@ const handleUpdate = async (row?: MaterialReceiveVO) => {
proxy?.$modal.msgError('获取详情失败');
}
};
//下载附件
const downloadAttachment = (row: any) => {
if (row.attachmentUrl) {
const link = document.createElement('a');
link.href = row.attachmentUrl;
link.download = row.fileName || 'download';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
};
/** 提交按钮 */
const submitForm = () => {

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.approvalOrder"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->
@ -319,7 +320,9 @@ onMounted(() => {
.el-input__inner,
.el-select .el-input__inner {
border-radius: 4px;
transition: border-color 0.2s, box-shadow 0.2s;
transition:
border-color 0.2s,
box-shadow 0.2s;
&:focus {
border-color: var(--primary-light);
@ -329,7 +332,9 @@ onMounted(() => {
.el-textarea__inner {
border-radius: 4px;
transition: border-color 0.2s, box-shadow 0.2s;
transition:
border-color 0.2s,
box-shadow 0.2s;
&:focus {
border-color: var(--primary-light);

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.approvalPlan"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.auditStatus"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.completeAuditStatus"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form[0]?.id"
:status="form[0]?.planAuditStatus"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -11,6 +11,7 @@
:id="form.versions"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->
@ -162,7 +163,7 @@ const { form, rules, tableData } = toRefs(data);
// form.value = { ...initFormData };
// leaveFormRef.value?.resetFields();
// };
const projectId = ref('');
/** 获取详情 */
const getInfo = () => {
loading.value = true;
@ -170,6 +171,7 @@ const getInfo = () => {
nextTick(async () => {
const res = await getVersionDetail(routeParams.value.id);
console.log(res);
projectId.value = res.data.projectId;
Object.assign(form.value, res.data);
loading.value = false;
buttonLoading.value = false;
@ -181,7 +183,7 @@ const sheets = ref([]);
const getSheetName = async () => {
try {
const params = {
projectId: currentProject.value?.id,
projectId: projectId.value,
versions: form.value.versions
};
const res = await sheetList(params);
@ -201,7 +203,7 @@ const changeSheet = () => {
//获取列表
const getListTable = async () => {
const res = await getTableList({
projectId: currentProject.value?.id,
projectId: projectId.value,
versions: form.value.versions,
sheet: form.value.sheet,
type: '2'

View File

@ -11,6 +11,7 @@
:id="form.versions"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->
@ -162,7 +163,7 @@ const { form, rules, tableData } = toRefs(data);
// form.value = { ...initFormData };
// leaveFormRef.value?.resetFields();
// };
const projectId = ref('');
/** 获取详情 */
const getInfo = () => {
loading.value = true;
@ -170,6 +171,7 @@ const getInfo = () => {
nextTick(async () => {
const res = await getVersionDetail(routeParams.value.id);
console.log(res);
projectId.value = res.data.projectId;
Object.assign(form.value, res.data);
loading.value = false;
buttonLoading.value = false;
@ -201,7 +203,7 @@ const changeSheet = () => {
//获取列表
const getListTable = async () => {
const res = await getTableList({
projectId: currentProject.value?.id,
projectId: projectId.value,
versions: form.value.versions,
// sheet: form.value.sheet,
type: '3'

View File

@ -11,6 +11,7 @@
:id="form.id"
:status="form.state"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<!-- 表单区域 -->

View File

@ -9,6 +9,7 @@
:id="form.id"
:status="form.status"
:pageType="routeParams.type"
:projectName="routeParams.projectName"
/>
</el-card>
<el-card shadow="never" style="height: 78vh; overflow-y: auto">

View File

@ -38,6 +38,7 @@
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
<el-table-column align="center" prop="projectName" label="项目名称" :show-overflow-tooltip="true"></el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="flowName" align="center" label="流程名称"></el-table-column>
<el-table-column align="center" prop="categoryName" label="流程分类"></el-table-column>
<el-table-column align="center" prop="version" label="版本号" width="90">

View File

@ -49,6 +49,7 @@
<el-table v-loading="loading" border :data="processInstanceList" @selection-change="handleSelectionChange">
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
<el-table-column align="center" prop="projectName" label="项目名称" :show-overflow-tooltip="true"></el-table-column>
<el-table-column v-if="false" align="center" prop="id" label="id"></el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="flowName" align="center" label="流程名称"> </el-table-column>
<!-- <el-table-column align="center" prop="flowCode" label="流程定义编码"></el-table-column> -->
@ -248,7 +249,8 @@ const handleOpen = async (row, type) => {
taskId: row.id,
type: type,
formCustom: row.formCustom,
formPath: row.formPath
formPath: row.formPath,
projectName: row.projectName
});
workflowCommon.routerJump(routerJumpVo, proxy);
};

View File

@ -33,6 +33,7 @@
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
<el-table-column align="center" prop="projectName" label="项目名称" :show-overflow-tooltip="true"></el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="flowName" align="center" label="流程名称"></el-table-column>
<el-table-column align="center" prop="categoryName" label="流程分类"></el-table-column>
<el-table-column align="center" prop="nodeName" label="任务名称"></el-table-column>
@ -131,7 +132,8 @@ const handleView = (row) => {
taskId: row.id,
type: 'view',
formCustom: row.formCustom,
formPath: row.formPath
formPath: row.formPath,
projectName: row.projectName
});
workflowCommon.routerJump(routerJumpVo, proxy);
};

View File

@ -37,6 +37,7 @@
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
<el-table-column align="center" prop="projectName" label="项目名称" :show-overflow-tooltip="true"></el-table-column>
<el-table-column align="center" prop="flowName" label="流程名称"></el-table-column>
<el-table-column align="center" prop="categoryName" label="流程分类"></el-table-column>
<el-table-column align="center" prop="version" label="版本号" width="90">
@ -164,7 +165,8 @@ const handleView = (row: FlowTaskVO) => {
taskId: row.id,
type: 'view',
formCustom: row.formCustom,
formPath: row.formPath
formPath: row.formPath,
projectName: row.projectName
});
workflowCommon.routerJump(routerJumpVo, proxy);
};

View File

@ -36,6 +36,7 @@
</template>
<el-table v-loading="loading" border :data="taskList" @selection-change="handleSelectionChange">
<el-table-column align="center" type="index" label="序号" width="60"></el-table-column>
<el-table-column align="center" prop="projectName" label="项目名称" :show-overflow-tooltip="true"></el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="flowName" align="center" label="流程名称"></el-table-column>
<el-table-column align="center" prop="categoryName" label="流程分类"></el-table-column>
<el-table-column align="center" prop="nodeName" label="任务名称"></el-table-column>
@ -167,7 +168,8 @@ const handleOpen = async (row: FlowTaskVO) => {
type: 'approval',
formCustom: row.formCustom,
planMonth: row.businessId.split('_')[1],
formPath: row.formPath
formPath: row.formPath,
projectName: row.projectName
});
workflowCommon.routerJump(routerJumpVo, proxy);
};