优化
This commit is contained in:
		
							
								
								
									
										114
									
								
								src/views/design/drawing/DrawingTable.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								src/views/design/drawing/DrawingTable.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,114 @@ | ||||
| <template> | ||||
|     <el-table v-loading="loading" :data="drawingList" @selection-change="handleSelectionChange"> | ||||
|       <el-table-column type="selection" width="55" align="center" /> | ||||
|       <el-table-column label="版本号" align="center" prop="versionNumber" width="100" /> | ||||
|       <el-table-column label="文件名称" align="center" prop="fileName"> | ||||
|         <template #default="scope"> | ||||
|           <span style="color: #409eff" @click="handleView(scope.row)">{{ scope.row.fileName }}</span> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       <el-table-column label="图纸类型" align="center" prop="fileType" width="100"> | ||||
|         <template #default="scope"> | ||||
|           <dict-tag :options="drawing_file_type" :value="scope.row.fileType" /> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       <el-table-column label="原文件名" align="center" prop="originalName" /> | ||||
|       <el-table-column label="是否最新" align="center" prop="newest"> | ||||
|         <template #default="scope"> | ||||
|           <div> | ||||
|             <el-tag type="primary" v-if="scope.row.newest == '1'">是</el-tag> | ||||
|             <el-tag type="success" v-else>否</el-tag> | ||||
|           </div> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       <el-table-column align="center" label="流程状态" min-width="70"> | ||||
|         <template #default="scope"> | ||||
|           <dict-tag :options="wf_business_status" :value="scope.row.status"></dict-tag> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       <el-table-column label="上传时间" align="center" prop="createTime" /> | ||||
|       <el-table-column label="备注" align="center" prop="remark" /> | ||||
|       <el-table-column label="操作" align="center" class-name="small-padding " width="240"> | ||||
|         <template #default="scope"> | ||||
|           <el-row :gutter="10" class="mb8"> | ||||
|             <el-col :span="1.5" v-if="scope.row.status === 'draft' || scope.row.status === 'cancel' || scope.row.status === 'back'"> | ||||
|               <el-button v-hasPermi="['design:drawing:edit']" size="small" type="primary" icon="Edit" @click="handleUpdate(scope.row)" | ||||
|                 >修改</el-button | ||||
|               > | ||||
|             </el-col> | ||||
|             <el-col :span="1.5" v-if="scope.row.status === 'draft' || scope.row.status === 'cancel' || scope.row.status === 'back'"> | ||||
|               <el-button v-hasPermi="['design:drawing:remove']" size="small" type="primary" icon="Delete" @click="handleDelete(scope.row)" | ||||
|                 >删除</el-button | ||||
|               > | ||||
|             </el-col> | ||||
|           </el-row> | ||||
|           <el-row :gutter="10" class="mb8"> | ||||
|             <el-col :span="1.5"> | ||||
|               <el-button type="primary" size="small" icon="View" v-if="scope.row.status != 'draft'" @click="handleViewInfo(scope.row)" | ||||
|                 >查看</el-button | ||||
|               > | ||||
|             </el-col> | ||||
|             <el-col :span="1.5" v-if="scope.row.status === 'waiting'"> | ||||
|               <el-button size="small" type="primary" icon="Notification" @click="handleCancelProcessApply(scope.row.id)">撤销</el-button> | ||||
|             </el-col> | ||||
|           </el-row> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|     </el-table> | ||||
|   </template> | ||||
|    | ||||
|   <script setup lang="ts"> | ||||
|   import { ref, defineProps, defineEmits } from 'vue'; | ||||
|    | ||||
|   const props = defineProps({ | ||||
|     drawingList: { | ||||
|       type: Array, | ||||
|       required: true | ||||
|     }, | ||||
|     loading: { | ||||
|       type: Boolean, | ||||
|       required: true | ||||
|     }, | ||||
|     drawing_file_type: { | ||||
|       type: Array, | ||||
|       required: true | ||||
|     }, | ||||
|     wf_business_status: { | ||||
|       type: Array, | ||||
|       required: true | ||||
|     } | ||||
|   }); | ||||
|    | ||||
|   const emits = defineEmits([ | ||||
|     'selection-change', | ||||
|     'view', | ||||
|     'update', | ||||
|     'delete', | ||||
|     'view-info', | ||||
|     'cancel-process-apply' | ||||
|   ]); | ||||
|    | ||||
|   const handleSelectionChange = (selection) => { | ||||
|     emits('selection-change', selection); | ||||
|   }; | ||||
|    | ||||
|   const handleView = (row) => { | ||||
|     emits('view', row); | ||||
|   }; | ||||
|    | ||||
|   const handleUpdate = (row) => { | ||||
|     emits('update', row); | ||||
|   }; | ||||
|    | ||||
|   const handleDelete = (row) => { | ||||
|     emits('delete', row); | ||||
|   }; | ||||
|    | ||||
|   const handleViewInfo = (row) => { | ||||
|     emits('view-info', row); | ||||
|   }; | ||||
|    | ||||
|   const handleCancelProcessApply = (id) => { | ||||
|     emits('cancel-process-apply', id); | ||||
|   }; | ||||
|   </script> | ||||
| @ -7,11 +7,11 @@ | ||||
|             <el-form-item label="文件名称" prop="fileName"> | ||||
|               <el-input v-model="queryParams.fileName" placeholder="请输入文件名称" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="文件类型" prop="fileType"> | ||||
|             <!-- <el-form-item label="文件类型" prop="fileType"> | ||||
|               <el-select v-model="queryParams.fileType" placeholder="请选择文件类型" clearable> | ||||
|                 <el-option v-for="dict in drawing_file_type" :key="dict.value" :label="dict.label" :value="dict.value" /> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             </el-form-item> --> | ||||
|             <el-form-item label="原文件名" prop="originalName"> | ||||
|               <el-input v-model="queryParams.originalName" placeholder="请输入原文件名" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
| @ -33,65 +33,55 @@ | ||||
|       <template #header> | ||||
|         <el-row :gutter="10" class="mb8"> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['design:drawing:add']">新增</el-button> | ||||
|             <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['design:drawing:add']">上传图纸</el-button> | ||||
|           </el-col> | ||||
|           <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> | ||||
|         </el-row> | ||||
|       </template> | ||||
|       <el-table v-loading="loading" :data="drawingList" @selection-change="handleSelectionChange"> | ||||
|         <el-table-column type="selection" width="55" align="center" /> | ||||
|         <el-table-column label="版本号" align="center" prop="versionNumber" width="100" /> | ||||
|         <el-table-column label="文件名称" align="center" prop="fileName"> | ||||
|           <template #default="scope"> | ||||
|             <span style="color: #409eff" @click="handleView(scope.row)">{{ scope.row.fileName }}</span> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="图纸类型" align="center" prop="fileType" width="100"> | ||||
|           <template #default="scope"> | ||||
|             <dict-tag :options="drawing_file_type" :value="scope.row.fileType" /> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="原文件名" align="center" prop="originalName" /> | ||||
|         <el-table-column label="是否最新" align="center" prop="newest"> | ||||
|           <template #default="scope"> | ||||
|             <div> | ||||
|               <el-tag type="primary" v-if="scope.row.newest == '1'">是</el-tag> | ||||
|               <el-tag type="success" v-else>否</el-tag> | ||||
|             </div> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column align="center" label="流程状态" min-width="70"> | ||||
|           <template #default="scope"> | ||||
|             <dict-tag :options="wf_business_status" :value="scope.row.status"></dict-tag> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="上传时间" align="center" prop="createTime" /> | ||||
|         <el-table-column label="备注" align="center" prop="remark" /> | ||||
|         <el-table-column label="操作" align="center" class-name="small-padding " width="240"> | ||||
|           <template #default="scope"> | ||||
|             <el-row :gutter="10" class="mb8"> | ||||
|               <el-col :span="1.5" v-if="scope.row.status === 'draft' || scope.row.status === 'cancel' || scope.row.status === 'back'"> | ||||
|                 <el-button v-hasPermi="['design:drawing:edit']" size="small" type="primary" icon="Edit" @click="handleUpdate(scope.row)" | ||||
|                   >修改</el-button | ||||
|                 > | ||||
|               </el-col> | ||||
|               <el-col :span="1.5" v-if="scope.row.status === 'draft' || scope.row.status === 'cancel' || scope.row.status === 'back'"> | ||||
|                 <el-button v-hasPermi="['design:drawing:remove']" size="small" type="primary" icon="Delete" @click="handleDelete(scope.row)" | ||||
|                   >删除</el-button | ||||
|                 > | ||||
|               </el-col> | ||||
|             </el-row> | ||||
|             <el-row :gutter="10" class="mb8"> | ||||
|               <el-col :span="1.5"> | ||||
|                 <el-button type="primary" size="small" icon="View" v-if="scope.row.status != 'draft'" @click="handleViewInfo(scope.row)">查看</el-button> | ||||
|               </el-col> | ||||
|               <el-col :span="1.5" v-if="scope.row.status === 'waiting'"> | ||||
|                 <el-button size="small" type="primary" icon="Notification" @click="handleCancelProcessApply(scope.row.id)">撤销</el-button> | ||||
|               </el-col> | ||||
|             </el-row> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|       </el-table> | ||||
|       <el-tabs type="border-card" v-model="activeName" class="demo-tabs" @tab-click="handleClick"> | ||||
|         <el-tab-pane label="过程图纸" name="1"> | ||||
|           <DrawingTable | ||||
|             :drawingList="drawingList" | ||||
|             :loading="loading" | ||||
|             :drawing_file_type="drawing_file_type" | ||||
|             :wf_business_status="wf_business_status" | ||||
|             @selection-change="handleSelectionChange" | ||||
|             @view="handleView" | ||||
|             @update="handleUpdate" | ||||
|             @delete="handleDelete" | ||||
|             @view-info="handleViewInfo" | ||||
|             @cancel-process-apply="handleCancelProcessApply" | ||||
|           /> | ||||
|         </el-tab-pane> | ||||
|         <el-tab-pane label="蓝图" name="2"> | ||||
|           <DrawingTable | ||||
|             :drawingList="drawingList" | ||||
|             :loading="loading" | ||||
|             :drawing_file_type="drawing_file_type" | ||||
|             :wf_business_status="wf_business_status" | ||||
|             @selection-change="handleSelectionChange" | ||||
|             @view="handleView" | ||||
|             @update="handleUpdate" | ||||
|             @delete="handleDelete" | ||||
|             @view-info="handleViewInfo" | ||||
|             @cancel-process-apply="handleCancelProcessApply" | ||||
|           /> | ||||
|         </el-tab-pane> | ||||
|         <el-tab-pane label="变更图纸" name="3"> | ||||
|           <DrawingTable | ||||
|             :drawingList="drawingList" | ||||
|             :loading="loading" | ||||
|             :drawing_file_type="drawing_file_type" | ||||
|             :wf_business_status="wf_business_status" | ||||
|             @selection-change="handleSelectionChange" | ||||
|             @view="handleView" | ||||
|             @update="handleUpdate" | ||||
|             @delete="handleDelete" | ||||
|             @view-info="handleViewInfo" | ||||
|             @cancel-process-apply="handleCancelProcessApply" | ||||
|           /> | ||||
|         </el-tab-pane> | ||||
|       </el-tabs> | ||||
|       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
|     </el-card> | ||||
|   </div> | ||||
| @ -101,8 +91,9 @@ | ||||
| import { listDrawing, getDrawing, delDrawing, addDrawing, updateDrawing } from '@/api/design/drawing'; | ||||
| import { DrawingVO, DrawingQuery, DrawingForm } from '@/api/design/drawing/types'; | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
| import {  LeaveVO } from '@/api/workflow/leave/types'; | ||||
| import { LeaveVO } from '@/api/workflow/leave/types'; | ||||
| import { cancelProcessApply } from '@/api/workflow/instance'; | ||||
| import DrawingTable from './DrawingTable.vue'; | ||||
|  | ||||
| // 获取用户 store | ||||
| const userStore = useUserStoreHook(); | ||||
| @ -110,6 +101,8 @@ const userStore = useUserStoreHook(); | ||||
| const currentProject = computed(() => userStore.selectedProject); | ||||
| const { proxy } = getCurrentInstance() as ComponentInternalInstance; | ||||
| const { drawing_file_type, wf_business_status } = toRefs<any>(proxy?.useDict('drawing_file_type', 'wf_business_status')); | ||||
| console.log(drawing_file_type); | ||||
|  | ||||
| const drawingList = ref<DrawingVO[]>([]); | ||||
| const loading = ref(true); | ||||
| const showSearch = ref(true); | ||||
| @ -121,6 +114,7 @@ const fileList = ref([]); // 存储上传的文件列表 | ||||
| const selectedFile = ref(null); // 当前选中的文件 | ||||
| const queryFormRef = ref<ElFormInstance>(); | ||||
| const drawingFormRef = ref<ElFormInstance>(); | ||||
| const activeName = ref('1'); | ||||
| const dialog = reactive({ | ||||
|   visible: false, | ||||
|   title: '', | ||||
| @ -235,7 +229,7 @@ const handleUpdate = async (row?: DrawingVO) => { | ||||
|   proxy.$router.push({ | ||||
|     path: `/workflow/drawing/indexEdit`, | ||||
|     query: { | ||||
|      id: row.id, | ||||
|       id: row.id, | ||||
|       type: 'update' | ||||
|     } | ||||
|   }); | ||||
| @ -249,10 +243,12 @@ const handleDelete = async (row?: DrawingVO) => { | ||||
|   proxy?.$modal.msgSuccess('删除成功'); | ||||
|   await getList(); | ||||
| }; | ||||
|  | ||||
| const handleView = (row) => { | ||||
|   var url= row.file.url | ||||
|   var url = row.file.url; | ||||
|   window.open(url, '_blank'); | ||||
| }; | ||||
|  | ||||
| /** 查看按钮操作 */ | ||||
| const handleViewInfo = (row?: LeaveVO) => { | ||||
|   proxy.$tab.closePage(proxy.$route); | ||||
| @ -264,6 +260,7 @@ const handleViewInfo = (row?: LeaveVO) => { | ||||
|     } | ||||
|   }); | ||||
| }; | ||||
|  | ||||
| /** 撤销按钮操作 */ | ||||
| const handleCancelProcessApply = async (id: string) => { | ||||
|   await proxy?.$modal.confirm('是否确认撤销当前单据?'); | ||||
| @ -276,7 +273,14 @@ const handleCancelProcessApply = async (id: string) => { | ||||
|   await getList(); | ||||
|   proxy?.$modal.msgSuccess('撤销成功'); | ||||
| }; | ||||
|  | ||||
| const handleClick = (val) => { | ||||
|   queryParams.value.pageNum = 1; | ||||
|   queryParams.value.fileType = val.props.name; | ||||
|   getList(); | ||||
| }; | ||||
|  | ||||
| onMounted(() => { | ||||
|   getList(); | ||||
| }); | ||||
| </script> | ||||
| </script> | ||||
| @ -1,54 +1,86 @@ | ||||
| <template> | ||||
|   <div class="p-2"> | ||||
|     <el-card shadow="never"> | ||||
|       <approvalButton | ||||
|         @submitForm="submitForm" | ||||
|         @approvalVerifyOpen="approvalVerifyOpen" | ||||
|         @handleApprovalRecord="handleApprovalRecord" | ||||
|         :buttonLoading="buttonLoading" | ||||
|         :id="form.id" | ||||
|         :status="form.status" | ||||
|         :pageType="routeParams.type" | ||||
|       /> | ||||
|     </el-card> | ||||
|     <el-card shadow="never" style="height: 78vh; overflow-y: auto; margin-top: 10px"> | ||||
|       <div style="width: 400px"> | ||||
|         <el-form ref="leaveFormRef" v-loading="loading" :disabled="routeParams.type === 'view'" :model="form" :rules="rules" label-width="80px"> | ||||
|           <el-form-item label="图纸类型" prop="fileType"> | ||||
|             <el-select v-model="form.fileType" placeholder="请选择图纸类型"> | ||||
|               <el-option v-for="dict in drawing_file_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="版本号" prop="versionNumber"> | ||||
|             <el-input v-model="form.versionNumber" placeholder="请输入版本号" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="文件名称" prop="fileName"> | ||||
|             <el-input v-model="form.fileName" placeholder="请输入文件名称" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="图纸文件" prop="fileUrl"> | ||||
|             <file-upload :limit="1" :fileType="['pdf']" :fileSize="100" v-model="form.fileUrl" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="备注" prop="remark"> | ||||
|             <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> | ||||
|           </el-form-item> | ||||
|         </el-form> | ||||
|       </div> | ||||
|     </el-card> | ||||
|     <!-- 提交组件 --> | ||||
|     <submitVerify ref="submitVerifyRef" :task-variables="taskVariables" @submit-callback="submitCallback" /> | ||||
|     <!-- 审批记录 --> | ||||
|     <approvalRecord ref="approvalRecordRef" /> | ||||
|     <el-dialog draggable v-model="dialogVisible.visible" :title="dialogVisible.title" :before-close="handleClose" width="500"> | ||||
|       <el-select v-model="flowCode" placeholder="Select" style="width: 240px"> | ||||
|         <el-option v-for="item in flowCodeOptions" :key="item.value" :label="item.label" :value="item.value" /> | ||||
|       </el-select> | ||||
|       <template #footer> | ||||
|         <div class="dialog-footer"> | ||||
|           <el-button @click="handleClose">取消</el-button> | ||||
|           <el-button type="primary" @click="submitFlow()"> 确认 </el-button> | ||||
|   <div class="p-4 bg-gray-50 "> | ||||
|     <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.id" | ||||
|           :status="form.status" | ||||
|           :pageType="routeParams.type" | ||||
|         /> | ||||
|       </el-card> | ||||
|  | ||||
|       <!-- 表单区域 --> | ||||
|       <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> | ||||
|         </div> | ||||
|       </template> | ||||
|     </el-dialog> | ||||
|         <div class="p-6"> | ||||
|           <el-form | ||||
|             ref="leaveFormRef" | ||||
|             v-loading="loading" | ||||
|             :disabled="routeParams.type === 'view'" | ||||
|             :model="form" | ||||
|             :rules="rules" | ||||
|             label-width="100px" | ||||
|             class="space-y-4" | ||||
|           > | ||||
|             <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> | ||||
|               <el-form-item label="图纸类型" prop="fileType" class="mb-2"> | ||||
|                 <el-select v-model="form.fileType" placeholder="请选择图纸类型" class="w-full"> | ||||
|                   <el-option v-for="dict in drawing_file_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> | ||||
|                 </el-select> | ||||
|               </el-form-item> | ||||
|               <el-form-item label="版本号" prop="versionNumber" class="mb-2"> | ||||
|                 <el-input v-model="form.versionNumber" placeholder="请输入版本号" class="w-full"></el-input> | ||||
|               </el-form-item> | ||||
|               <el-form-item label="文件名称" prop="fileName" class="mb-2 "> | ||||
|                 <el-input v-model="form.fileName"  placeholder="请输入文件名称" class="w-full"></el-input> | ||||
|               </el-form-item> | ||||
|               <el-form-item label="图纸文件" prop="fileUrl" class="mb-2 md:col-span-2"> | ||||
|                 <file-upload :limit="1" :fileType="['pdf']" :fileSize="100" v-model="form.fileUrl" class="w-full"></file-upload> | ||||
|               </el-form-item> | ||||
|               <el-form-item label="备注" prop="remark" class="mb-2 md:col-span-2"> | ||||
|                 <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" :rows="4" class="w-full"></el-input> | ||||
|               </el-form-item> | ||||
|             </div> | ||||
|           </el-form> | ||||
|         </div> | ||||
|       </el-card> | ||||
|       <!-- 提交组件 --> | ||||
|       <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" | ||||
|       > | ||||
|         <div class="p-4"> | ||||
|           <p class="text-gray-600 mb-4">请选择要启动的流程:</p> | ||||
|           <el-select v-model="flowCode" placeholder="请选择流程" style="width: 100%"> | ||||
|             <el-option v-for="item in flowCodeOptions" :key="item.value" :label="item.label" :value="item.value" /> | ||||
|           </el-select> | ||||
|         </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 | ||||
|             > | ||||
|           </div> | ||||
|         </template> | ||||
|       </el-dialog> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| @ -60,7 +92,7 @@ import ApprovalRecord from '@/components/Process/approvalRecord.vue'; | ||||
| import ApprovalButton from '@/components/Process/approvalButton.vue'; | ||||
| import { StartProcessBo } from '@/api/workflow/workflowCommon/types'; | ||||
| const { proxy } = getCurrentInstance() as ComponentInternalInstance; | ||||
| import {  DrawingForm } from '@/api/design/drawing/types'; | ||||
| import { DrawingForm } from '@/api/design/drawing/types'; | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
| import { updateDrawing, getDrawing, addDrawing } from '@/api/design/drawing'; | ||||
|  | ||||
| @ -75,15 +107,15 @@ const loading = ref(true); | ||||
| const routeParams = ref<Record<string, any>>({}); | ||||
| const flowCodeOptions = [ | ||||
|   { | ||||
|     value:currentProject.value?.id+ '_changedrawing', | ||||
|     value: currentProject.value?.id + '_changedrawing', | ||||
|     label: '变更图纸审批' | ||||
|   }, | ||||
|   { | ||||
|     value: currentProject.value?.id+ '_blueprintdrawing', | ||||
|     value: currentProject.value?.id + '_blueprintdrawing', | ||||
|     label: '蓝图审批' | ||||
|   }, | ||||
|   { | ||||
|     value: currentProject.value?.id+ '_processdrawing', | ||||
|     value: currentProject.value?.id + '_processdrawing', | ||||
|     label: '过程图纸审批' | ||||
|   } | ||||
| ]; | ||||
| @ -277,3 +309,107 @@ onMounted(() => { | ||||
|   }); | ||||
| }); | ||||
| </script> | ||||
| <style scoped lang="scss"> | ||||
| /* 全局样式 */ | ||||
| :root { | ||||
|   --primary: #409eff; | ||||
|   --primary-light: #66b1ff; | ||||
|   --primary-dark: #3a8ee6; | ||||
|   --success: #67c23a; | ||||
|   --warning: #e6a23c; | ||||
|   --danger: #f56c6c; | ||||
|   --info: #909399; | ||||
| } | ||||
|  | ||||
| /* 表单样式优化 */ | ||||
| .el-form-item { | ||||
|   .el-form-item__label { | ||||
|     color: #606266; | ||||
|     font-weight: 500; | ||||
|   } | ||||
|  | ||||
|   .el-input__inner, | ||||
|   .el-select .el-input__inner { | ||||
|     border-radius: 4px; | ||||
|     transition: | ||||
|       border-color 0.2s, | ||||
|       box-shadow 0.2s; | ||||
|  | ||||
|     &:focus { | ||||
|       border-color: var(--primary-light); | ||||
|       box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.1); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .el-textarea__inner { | ||||
|     border-radius: 4px; | ||||
|     transition: | ||||
|       border-color 0.2s, | ||||
|       box-shadow 0.2s; | ||||
|  | ||||
|     &:focus { | ||||
|       border-color: var(--primary-light); | ||||
|       box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.1); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| /* 按钮样式优化 */ | ||||
| .el-button { | ||||
|   border-radius: 4px; | ||||
|   transition: all 0.2s; | ||||
|  | ||||
|   &.is-primary { | ||||
|     background-color: var(--primary); | ||||
|     border-color: var(--primary); | ||||
|  | ||||
|     &:hover { | ||||
|       background-color: var(--primary-light); | ||||
|       border-color: var(--primary-light); | ||||
|     } | ||||
|  | ||||
|     &:active { | ||||
|       background-color: var(--primary-dark); | ||||
|       border-color: var(--primary-dark); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   &.is-text { | ||||
|     color: var(--primary); | ||||
|  | ||||
|     &:hover { | ||||
|       color: var(--primary-light); | ||||
|       background-color: rgba(64, 158, 255, 0.05); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| /* 卡片样式优化 */ | ||||
| .el-card { | ||||
|   transition: all 0.3s ease; | ||||
|  | ||||
|   &:hover { | ||||
|     /* transform: translateY(-2px); */ | ||||
|   } | ||||
| } | ||||
|  | ||||
| /* 对话框样式优化 */ | ||||
| .el-dialog { | ||||
|   .el-dialog__header { | ||||
|     background-color: #f5f7fa; | ||||
|     border-bottom: 1px solid #ebeef5; | ||||
|     padding: 15px 20px; | ||||
|   } | ||||
|  | ||||
|   .el-dialog__title { | ||||
|     font-size: 16px; | ||||
|     font-weight: 600; | ||||
|     color: #303133; | ||||
|   } | ||||
|  | ||||
|   .el-dialog__footer { | ||||
|     padding: 15px 20px; | ||||
|     border-top: 1px solid #ebeef5; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
|  | ||||
| @ -1,49 +1,81 @@ | ||||
| <template> | ||||
|   <div class="p-2"> | ||||
|     <el-card shadow="never"> | ||||
|       <approvalButton | ||||
|         @submitForm="submitForm" | ||||
|         @approvalVerifyOpen="approvalVerifyOpen" | ||||
|         @handleApprovalRecord="handleApprovalRecord" | ||||
|         :buttonLoading="buttonLoading" | ||||
|         :id="form.id" | ||||
|         :status="form.status" | ||||
|         :pageType="routeParams.type" | ||||
|       /> | ||||
|     </el-card> | ||||
|     <el-card shadow="never" style="height: 78vh; overflow-y: auto; margin-top: 10px"> | ||||
|       <div style="width: 400px"> | ||||
|         <el-form ref="leaveFormRef" v-loading="loading" :disabled="routeParams.type === 'view'" :model="form" :rules="rules" label-width="80px"> | ||||
|           <el-form-item label="版本号" prop="versionNumber"> | ||||
|             <el-input v-model="form.versionNumber" placeholder="请输入版本号" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="文件名称" prop="fileName"> | ||||
|             <el-input v-model="form.fileName" placeholder="请输入文件名称" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="专项方案" prop="fileUrl"> | ||||
|             <file-upload :limit="1" :fileType="['pdf']" :fileSize="100" v-model="form.fileUrl" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="备注" prop="remark"> | ||||
|             <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> | ||||
|           </el-form-item> | ||||
|         </el-form> | ||||
|       </div> | ||||
|     </el-card> | ||||
|     <!-- 提交组件 --> | ||||
|     <submitVerify ref="submitVerifyRef" :task-variables="taskVariables" @submit-callback="submitCallback" /> | ||||
|     <!-- 审批记录 --> | ||||
|     <approvalRecord ref="approvalRecordRef" /> | ||||
|     <el-dialog draggable v-model="dialogVisible.visible" :title="dialogVisible.title" :before-close="handleClose" width="500"> | ||||
|       <el-select v-model="flowCode" placeholder="Select" style="width: 240px"> | ||||
|         <el-option v-for="item in flowCodeOptions" :key="item.value" :label="item.label" :value="item.value" /> | ||||
|       </el-select> | ||||
|       <template #footer> | ||||
|         <div class="dialog-footer"> | ||||
|           <el-button @click="handleClose">取消</el-button> | ||||
|           <el-button type="primary" @click="submitFlow()"> 确认 </el-button> | ||||
|   <div class="p-4 bg-gray-50 min-h-screen"> | ||||
|     <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.id" | ||||
|           :status="form.status" | ||||
|           :pageType="routeParams.type" | ||||
|         /> | ||||
|       </el-card> | ||||
|  | ||||
|       <!-- 表单区域 --> | ||||
|       <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> | ||||
|         </div> | ||||
|       </template> | ||||
|     </el-dialog> | ||||
|         <div class="p-6"> | ||||
|           <el-form | ||||
|             ref="leaveFormRef" | ||||
|             v-loading="loading" | ||||
|             :disabled="routeParams.type === 'view'" | ||||
|             :model="form" | ||||
|             :rules="rules" | ||||
|             label-width="120px" | ||||
|             class="space-y-4" | ||||
|           > | ||||
|             <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> | ||||
|               <el-form-item label="版本号" prop="versionNumber" class="mb-2"> | ||||
|                 <el-input v-model="form.versionNumber" placeholder="请输入版本号" class="w-full"></el-input> | ||||
|               </el-form-item> | ||||
|               <el-form-item label="文件名称" prop="fileName" class="mb-2"> | ||||
|                 <el-input v-model="form.fileName" placeholder="请输入文件名称" class="w-full"></el-input> | ||||
|               </el-form-item> | ||||
|               <el-form-item label="专项方案" prop="fileUrl" class="mb-2"> | ||||
|                 <file-upload :limit="1" :fileType="['pdf']" :fileSize="100" v-model="form.fileUrl" class="w-full"></file-upload> | ||||
|               </el-form-item> | ||||
|               <el-form-item label="备注" prop="remark" class="mb-2 md:col-span-2"> | ||||
|                 <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" :rows="4" class="w-full"></el-input> | ||||
|               </el-form-item> | ||||
|             </div> | ||||
|           </el-form> | ||||
|         </div> | ||||
|       </el-card> | ||||
|       <!-- 提交组件 --> | ||||
|       <approvalRecord ref="approvalRecordRef"></approvalRecord> | ||||
|       <submitVerify ref="submitVerifyRef" :task-variables="taskVariables" @submit-callback="submitCallback" /> | ||||
|       <!-- 流程选择对话框 --> | ||||
|       <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%"> | ||||
|             <el-option v-for="item in flowCodeOptions" :key="item.value" :label="item.label" :value="item.value" /> | ||||
|           </el-select> | ||||
|         </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 | ||||
|             > | ||||
|           </div> | ||||
|         </template> | ||||
|       </el-dialog> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| @ -90,7 +122,7 @@ const submitFormData = ref<StartProcessBo>({ | ||||
| const taskVariables = ref<Record<string, any>>({}); | ||||
| const flowCodeOptions = [ | ||||
|   { | ||||
|     value: currentProject.value?.id+ '_specialScheme', | ||||
|     value: currentProject.value?.id + '_specialScheme', | ||||
|     label: '专项方案审批' | ||||
|   } | ||||
| ]; | ||||
| @ -259,3 +291,107 @@ onMounted(() => { | ||||
|   }); | ||||
| }); | ||||
| </script> | ||||
| <style scoped lang="scss"> | ||||
| /* 全局样式 */ | ||||
| :root { | ||||
|   --primary: #409eff; | ||||
|   --primary-light: #66b1ff; | ||||
|   --primary-dark: #3a8ee6; | ||||
|   --success: #67c23a; | ||||
|   --warning: #e6a23c; | ||||
|   --danger: #f56c6c; | ||||
|   --info: #909399; | ||||
| } | ||||
|  | ||||
| /* 表单样式优化 */ | ||||
| .el-form-item { | ||||
|   .el-form-item__label { | ||||
|     color: #606266; | ||||
|     font-weight: 500; | ||||
|   } | ||||
|  | ||||
|   .el-input__inner, | ||||
|   .el-select .el-input__inner { | ||||
|     border-radius: 4px; | ||||
|     transition: | ||||
|       border-color 0.2s, | ||||
|       box-shadow 0.2s; | ||||
|  | ||||
|     &:focus { | ||||
|       border-color: var(--primary-light); | ||||
|       box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.1); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .el-textarea__inner { | ||||
|     border-radius: 4px; | ||||
|     transition: | ||||
|       border-color 0.2s, | ||||
|       box-shadow 0.2s; | ||||
|  | ||||
|     &:focus { | ||||
|       border-color: var(--primary-light); | ||||
|       box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.1); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| /* 按钮样式优化 */ | ||||
| .el-button { | ||||
|   border-radius: 4px; | ||||
|   transition: all 0.2s; | ||||
|  | ||||
|   &.is-primary { | ||||
|     background-color: var(--primary); | ||||
|     border-color: var(--primary); | ||||
|  | ||||
|     &:hover { | ||||
|       background-color: var(--primary-light); | ||||
|       border-color: var(--primary-light); | ||||
|     } | ||||
|  | ||||
|     &:active { | ||||
|       background-color: var(--primary-dark); | ||||
|       border-color: var(--primary-dark); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   &.is-text { | ||||
|     color: var(--primary); | ||||
|  | ||||
|     &:hover { | ||||
|       color: var(--primary-light); | ||||
|       background-color: rgba(64, 158, 255, 0.05); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| /* 卡片样式优化 */ | ||||
| .el-card { | ||||
|   transition: all 0.3s ease; | ||||
|  | ||||
|   &:hover { | ||||
|     /* transform: translateY(-2px); */ | ||||
|   } | ||||
| } | ||||
|  | ||||
| /* 对话框样式优化 */ | ||||
| .el-dialog { | ||||
|   .el-dialog__header { | ||||
|     background-color: #f5f7fa; | ||||
|     border-bottom: 1px solid #ebeef5; | ||||
|     padding: 15px 20px; | ||||
|   } | ||||
|  | ||||
|   .el-dialog__title { | ||||
|     font-size: 16px; | ||||
|     font-weight: 600; | ||||
|     color: #303133; | ||||
|   } | ||||
|  | ||||
|   .el-dialog__footer { | ||||
|     padding: 15px 20px; | ||||
|     border-top: 1px solid #ebeef5; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
|  | ||||
| @ -1,7 +0,0 @@ | ||||
| <template> | ||||
|   <div class="content-box">111</div> | ||||
| </template> | ||||
|  | ||||
| <script lang="ts" setup></script> | ||||
|  | ||||
| <style lang="scss" scoped></style> | ||||
| @ -25,9 +25,6 @@ | ||||
|             <el-form-item label="保管单位" prop="storageUnit"> | ||||
|               <el-input v-model="queryParams.storageUnit" placeholder="请输入保管单位" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="缺陷情况" prop="defectDescription"> | ||||
|               <el-input v-model="queryParams.defectDescription" placeholder="请输入缺陷情况" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item> | ||||
|               <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> | ||||
|               <el-button icon="Refresh" @click="resetQuery">重置</el-button> | ||||
| @ -277,42 +274,45 @@ const dialog = reactive<DialogOption>({ | ||||
|   title: '' | ||||
| }); | ||||
|  | ||||
| const initFormData: MaterialIssueForm = { | ||||
|   id: undefined, | ||||
|   projectId: currentProject.value?.id, | ||||
|   materialSource: '1', | ||||
|   formCode: undefined, | ||||
|   projectName: undefined, | ||||
|   materialName: undefined, | ||||
|   orderingUnit: undefined, | ||||
|   supplierUnit: undefined, | ||||
|   issueUnit: undefined, | ||||
|   storageUnit: undefined, | ||||
|   defectDescription: undefined, | ||||
|   certCount: undefined, | ||||
|   certCountFileId: undefined, | ||||
|   reportCount: undefined, | ||||
|   reportCountFileId: undefined, | ||||
|   techDocCount: undefined, | ||||
|   techDocCountFileId: undefined, | ||||
|   licenseCount: undefined, | ||||
|   licenseCountFileId: undefined, | ||||
|   remark: undefined, | ||||
|   itemList: [ | ||||
|     { | ||||
|       id: undefined, | ||||
|       specification: undefined, | ||||
|       unit: undefined, | ||||
|       stockQuantity: undefined, | ||||
|       issuedQuantity: undefined, | ||||
|       remainingQuantity: undefined, | ||||
|       name: undefined, | ||||
|       remark: undefined | ||||
|     } | ||||
|   ] | ||||
| // 定义一个函数来生成初始表单数据 | ||||
| const getInitFormData = () => { | ||||
|   return { | ||||
|     id: undefined, | ||||
|     projectId: currentProject.value?.id, | ||||
|     materialSource: '1', | ||||
|     formCode: undefined, | ||||
|     projectName: undefined, | ||||
|     materialName: undefined, | ||||
|     orderingUnit: undefined, | ||||
|     supplierUnit: undefined, | ||||
|     issueUnit: undefined, | ||||
|     storageUnit: undefined, | ||||
|     defectDescription: undefined, | ||||
|     certCount: undefined, | ||||
|     certCountFileId: undefined, | ||||
|     reportCount: undefined, | ||||
|     reportCountFileId: undefined, | ||||
|     techDocCount: undefined, | ||||
|     techDocCountFileId: undefined, | ||||
|     licenseCount: undefined, | ||||
|     licenseCountFileId: undefined, | ||||
|     remark: undefined, | ||||
|     itemList: [ | ||||
|       { | ||||
|         id: undefined, | ||||
|         specification: undefined, | ||||
|         unit: undefined, | ||||
|         stockQuantity: undefined, | ||||
|         issuedQuantity: undefined, | ||||
|         remainingQuantity: undefined, | ||||
|         name: undefined, | ||||
|         remark: undefined | ||||
|       } | ||||
|     ] | ||||
|   }; | ||||
| }; | ||||
| const data = reactive<PageData<MaterialIssueForm, MaterialIssueQuery>>({ | ||||
|   form: { ...initFormData }, | ||||
|   form: getInitFormData(), | ||||
|   queryParams: { | ||||
|     pageNum: 1, | ||||
|     pageSize: 10, | ||||
| @ -352,7 +352,7 @@ const cancel = () => { | ||||
|  | ||||
| /** 表单重置 */ | ||||
| const reset = () => { | ||||
|   form.value = { ...initFormData }; | ||||
|   form.value = getInitFormData(); | ||||
|   materialIssueFormRef.value?.resetFields(); | ||||
| }; | ||||
|  | ||||
|  | ||||
| @ -182,7 +182,7 @@ const onOpen = (path: string) => { | ||||
| }; | ||||
| // 导出 | ||||
| const onLoad = async () => { | ||||
|   await downLoadOss({ id: formData.value.id }, '/design/designChange/export/word', '设计变更单.zip'); | ||||
|   await downLoadOss({ id: formData.value.id }, '/materials/materialIssue/export/word', '设计材料设备领料单.zip'); | ||||
| }; | ||||
|  | ||||
| // 关闭弹窗 | ||||
|  | ||||
| @ -203,7 +203,7 @@ | ||||
|               </div> | ||||
|             </div> | ||||
|           </el-col> | ||||
|          | ||||
|  | ||||
|           <el-col :span="12"> | ||||
|             <el-form-item label="合格证文件" prop="certCountFileId"> | ||||
|               <file-upload :isShowTip="false" v-model="form.certCountFileId" /> | ||||
| @ -225,7 +225,7 @@ | ||||
|             </el-form-item> | ||||
|           </el-col> | ||||
|           <el-col :span="24"> | ||||
|             <span style="color:#ff0000ab;margin-bottom: 10px;display: block;">注意:请上传doc/xls/ppt/txt/pdf/png/jpg/jpeg/zip格式文件</span> | ||||
|             <span style="color: #ff0000ab; margin-bottom: 10px; display: block">注意:请上传doc/xls/ppt/txt/pdf/png/jpg/jpeg/zip格式文件</span> | ||||
|           </el-col> | ||||
|           <el-col :span="24"> | ||||
|             <el-form-item label="设备材料入库/移交" prop="storageType"> | ||||
| @ -288,42 +288,44 @@ const dialog = reactive<DialogOption>({ | ||||
|   visible: false, | ||||
|   title: '' | ||||
| }); | ||||
|  | ||||
| const initFormData: MaterialReceiveForm = { | ||||
|   id: undefined, | ||||
|   projectId: currentProject.value?.id, | ||||
|   materialSource: '1', | ||||
|   formCode: undefined, | ||||
|   projectName: undefined, | ||||
|   materialName: undefined, | ||||
|   contractName: undefined, | ||||
|   orderingUnit: undefined, | ||||
|   supplierUnit: undefined, | ||||
|   defectDescription: undefined, | ||||
|   certCount: undefined, | ||||
|   certCountFileId: undefined, | ||||
|   reportCount: undefined, | ||||
|   reportCountFileId: undefined, | ||||
|   techDocCount: undefined, | ||||
|   techDocCountFileId: undefined, | ||||
|   licenseCount: undefined, | ||||
|   licenseCountFileId: undefined, | ||||
|   storageType: [], | ||||
|   remark: undefined, | ||||
|   itemList: [ | ||||
|     { | ||||
|       name: undefined, | ||||
|       specification: undefined, | ||||
|       unit: undefined, | ||||
|       quantity: undefined, | ||||
|       acceptedQuantity: undefined, | ||||
|       shortageQuantity: undefined, | ||||
|       remark: undefined | ||||
|     } | ||||
|   ] | ||||
| const getInitFormData = () => { | ||||
|   return { | ||||
|     id: undefined, | ||||
|     projectId: currentProject.value?.id, | ||||
|     materialSource: '1', | ||||
|     formCode: undefined, | ||||
|     projectName: undefined, | ||||
|     materialName: undefined, | ||||
|     contractName: undefined, | ||||
|     orderingUnit: undefined, | ||||
|     supplierUnit: undefined, | ||||
|     defectDescription: undefined, | ||||
|     certCount: undefined, | ||||
|     certCountFileId: undefined, | ||||
|     reportCount: undefined, | ||||
|     reportCountFileId: undefined, | ||||
|     techDocCount: undefined, | ||||
|     techDocCountFileId: undefined, | ||||
|     licenseCount: undefined, | ||||
|     licenseCountFileId: undefined, | ||||
|     storageType: [], | ||||
|     remark: undefined, | ||||
|     itemList: [ | ||||
|       { | ||||
|         name: undefined, | ||||
|         specification: undefined, | ||||
|         unit: undefined, | ||||
|         quantity: undefined, | ||||
|         acceptedQuantity: undefined, | ||||
|         shortageQuantity: undefined, | ||||
|         remark: undefined | ||||
|       } | ||||
|     ] | ||||
|   }; | ||||
| }; | ||||
| const initFormData: MaterialReceiveForm = {}; | ||||
| const data = reactive<PageData<MaterialReceiveForm, MaterialReceiveQuery>>({ | ||||
|   form: { ...initFormData }, | ||||
|   form: getInitFormData(), | ||||
|   queryParams: { | ||||
|     pageNum: 1, | ||||
|     pageSize: 10, | ||||
| @ -359,7 +361,7 @@ const cancel = () => { | ||||
|  | ||||
| /** 表单重置 */ | ||||
| const reset = () => { | ||||
|   form.value = { ...initFormData }; | ||||
|   form.value = getInitFormData(); | ||||
|   materialReceiveFormRef.value?.resetFields(); | ||||
| }; | ||||
|  | ||||
| @ -395,10 +397,10 @@ const handleUpdate = async (row?: MaterialReceiveVO) => { | ||||
|   const _id = row?.id || ids.value[0]; | ||||
|   const res = await getMaterialReceive(_id); | ||||
|   Object.assign(form.value, res.data); | ||||
|   if(form.value.storageType.length){ | ||||
|   if (form.value.storageType.length) { | ||||
|     form.value.storageType = form.value.storageType.split(','); | ||||
|   }else{ | ||||
|     form.value.storageType=[] | ||||
|   } else { | ||||
|     form.value.storageType = []; | ||||
|   } | ||||
|   dialog.visible = true; | ||||
|   dialog.title = '修改物料接收单'; | ||||
|  | ||||
| @ -172,7 +172,7 @@ const onOpen = (path: string) => { | ||||
| }; | ||||
| // 导出 | ||||
| const onLoad = async () => { | ||||
|   await downLoadOss({ id: formData.value.id }, '/design/designChange/export/word', '设计变更单.zip'); | ||||
|   await downLoadOss({ id: formData.value.id }, '/materials/materialReceive/export/word', '材料设备验收单.zip'); | ||||
| }; | ||||
|  | ||||
| // 关闭弹窗 | ||||
|  | ||||
| @ -1,7 +0,0 @@ | ||||
| <template> | ||||
|   <div class="content-box">22</div> | ||||
| </template> | ||||
|  | ||||
| <script lang="ts" setup></script> | ||||
|  | ||||
| <style lang="scss" scoped></style> | ||||
| @ -25,9 +25,6 @@ | ||||
|             <el-form-item label="保管单位" prop="storageUnit"> | ||||
|               <el-input v-model="queryParams.storageUnit" placeholder="请输入保管单位" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="缺陷情况" prop="defectDescription"> | ||||
|               <el-input v-model="queryParams.defectDescription" placeholder="请输入缺陷情况" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item> | ||||
|               <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> | ||||
|               <el-button icon="Refresh" @click="resetQuery">重置</el-button> | ||||
| @ -230,8 +227,10 @@ | ||||
|             </el-form-item> | ||||
|           </el-col> | ||||
|           <el-col :span="24"> | ||||
|             <span style="color:#ff0000ab;margin-bottom: 10px;display: block;">注意:请上传doc/xls/ppt/txt/pdf/png/jpg/jpeg/zip格式文件</span> | ||||
|           </el-col><el-col :span="24"> | ||||
|             <span style="color: #ff0000ab; margin-bottom: 10px; display: block" | ||||
|               >注意:请上传doc/xls/ppt/txt/pdf/png/jpg/jpeg/zip格式文件</span | ||||
|             > </el-col | ||||
|           ><el-col :span="24"> | ||||
|             <el-form-item label="备注" prop="remark"> | ||||
|               <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> | ||||
|             </el-form-item> | ||||
| @ -276,43 +275,45 @@ const dialog = reactive<DialogOption>({ | ||||
|   visible: false, | ||||
|   title: '' | ||||
| }); | ||||
|  | ||||
| const initFormData: MaterialIssueForm = { | ||||
|   id: undefined, | ||||
|   projectId: currentProject.value?.id, | ||||
|   materialSource: '2', | ||||
|   formCode: undefined, | ||||
|   projectName: undefined, | ||||
|   materialName: undefined, | ||||
|   orderingUnit: undefined, | ||||
|   supplierUnit: undefined, | ||||
|   issueUnit: undefined, | ||||
|   storageUnit: undefined, | ||||
|   defectDescription: undefined, | ||||
|   certCount: undefined, | ||||
|   certCountFileId: undefined, | ||||
|   reportCount: undefined, | ||||
|   reportCountFileId: undefined, | ||||
|   techDocCount: undefined, | ||||
|   techDocCountFileId: undefined, | ||||
|   licenseCount: undefined, | ||||
|   licenseCountFileId: undefined, | ||||
|   remark: undefined, | ||||
|   itemList: [ | ||||
|     { | ||||
|       id: undefined, | ||||
|       specification: undefined, | ||||
|       unit: undefined, | ||||
|       stockQuantity: undefined, | ||||
|       issuedQuantity: undefined, | ||||
|       remainingQuantity: undefined, | ||||
|       name: undefined, | ||||
|       remark: undefined | ||||
|     } | ||||
|   ] | ||||
| const getInitFormData = () => { | ||||
|   return { | ||||
|     id: undefined, | ||||
|     projectId: currentProject.value?.id, | ||||
|     materialSource: '2', | ||||
|     formCode: undefined, | ||||
|     projectName: undefined, | ||||
|     materialName: undefined, | ||||
|     orderingUnit: undefined, | ||||
|     supplierUnit: undefined, | ||||
|     issueUnit: undefined, | ||||
|     storageUnit: undefined, | ||||
|     defectDescription: undefined, | ||||
|     certCount: undefined, | ||||
|     certCountFileId: undefined, | ||||
|     reportCount: undefined, | ||||
|     reportCountFileId: undefined, | ||||
|     techDocCount: undefined, | ||||
|     techDocCountFileId: undefined, | ||||
|     licenseCount: undefined, | ||||
|     licenseCountFileId: undefined, | ||||
|     remark: undefined, | ||||
|     itemList: [ | ||||
|       { | ||||
|         id: undefined, | ||||
|         specification: undefined, | ||||
|         unit: undefined, | ||||
|         stockQuantity: undefined, | ||||
|         issuedQuantity: undefined, | ||||
|         remainingQuantity: undefined, | ||||
|         name: undefined, | ||||
|         remark: undefined | ||||
|       } | ||||
|     ] | ||||
|   }; | ||||
| }; | ||||
| const initFormData: MaterialIssueForm = {}; | ||||
| const data = reactive<PageData<MaterialIssueForm, MaterialIssueQuery>>({ | ||||
|   form: { ...initFormData }, | ||||
|   form: getInitFormData(), | ||||
|   queryParams: { | ||||
|     pageNum: 1, | ||||
|     pageSize: 10, | ||||
| @ -352,7 +353,7 @@ const cancel = () => { | ||||
|  | ||||
| /** 表单重置 */ | ||||
| const reset = () => { | ||||
|   form.value = { ...initFormData }; | ||||
|   form.value = getInitFormData(); | ||||
|   materialIssueFormRef.value?.resetFields(); | ||||
| }; | ||||
|  | ||||
|  | ||||
| @ -182,7 +182,7 @@ const onOpen = (path: string) => { | ||||
| }; | ||||
| // 导出 | ||||
| const onLoad = async () => { | ||||
|   await downLoadOss({ id: formData.value.id }, '/design/designChange/export/word', '设计变更单.zip'); | ||||
|   await downLoadOss({ id: formData.value.id }, '/materials/materialIssue/export/word', '设计材料设备领料单.zip'); | ||||
| }; | ||||
|  | ||||
| // 关闭弹窗 | ||||
|  | ||||
| @ -224,8 +224,10 @@ | ||||
|             </el-form-item> | ||||
|           </el-col> | ||||
|           <el-col :span="24"> | ||||
|             <span style="color:#ff0000ab;margin-bottom: 10px;display: block;">注意:请上传doc/xls/ppt/txt/pdf/png/jpg/jpeg/zip格式文件</span> | ||||
|           </el-col><el-col :span="24" | ||||
|             <span style="color: #ff0000ab; margin-bottom: 10px; display: block" | ||||
|               >注意:请上传doc/xls/ppt/txt/pdf/png/jpg/jpeg/zip格式文件</span | ||||
|             > </el-col | ||||
|           ><el-col :span="24" | ||||
|             ><el-form-item label="备注" prop="remark"> | ||||
|               <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> | ||||
|             </el-form-item> | ||||
| @ -278,42 +280,43 @@ const dialog = reactive<DialogOption>({ | ||||
|   visible: false, | ||||
|   title: '' | ||||
| }); | ||||
|  | ||||
| const initFormData: MaterialReceiveForm = { | ||||
|   id: undefined, | ||||
|   projectId: currentProject.value?.id, | ||||
|   materialSource: '2', | ||||
|   formCode: undefined, | ||||
|   projectName: undefined, | ||||
|   materialName: undefined, | ||||
|   contractName: undefined, | ||||
|   orderingUnit: undefined, | ||||
|   supplierUnit: undefined, | ||||
|   defectDescription: undefined, | ||||
|   certCount: undefined, | ||||
|   certCountFileId: undefined, | ||||
|   reportCount: undefined, | ||||
|   reportCountFileId: undefined, | ||||
|   techDocCount: undefined, | ||||
|   techDocCountFileId: undefined, | ||||
|   licenseCount: undefined, | ||||
|   licenseCountFileId: undefined, | ||||
|   storageType: [], | ||||
|   remark: undefined, | ||||
|   itemList: [ | ||||
|     { | ||||
|       name: undefined, | ||||
|       specification: undefined, | ||||
|       unit: undefined, | ||||
|       quantity: undefined, | ||||
|       acceptedQuantity: undefined, | ||||
|       shortageQuantity: undefined, | ||||
|       remark: undefined | ||||
|     } | ||||
|   ] | ||||
| const getInitFormData = () => { | ||||
|   return { | ||||
|     id: undefined, | ||||
|     projectId: currentProject.value?.id, | ||||
|     materialSource: '2', | ||||
|     formCode: undefined, | ||||
|     projectName: undefined, | ||||
|     materialName: undefined, | ||||
|     contractName: undefined, | ||||
|     orderingUnit: undefined, | ||||
|     supplierUnit: undefined, | ||||
|     defectDescription: undefined, | ||||
|     certCount: undefined, | ||||
|     certCountFileId: undefined, | ||||
|     reportCount: undefined, | ||||
|     reportCountFileId: undefined, | ||||
|     techDocCount: undefined, | ||||
|     techDocCountFileId: undefined, | ||||
|     licenseCount: undefined, | ||||
|     licenseCountFileId: undefined, | ||||
|     storageType: [], | ||||
|     remark: undefined, | ||||
|     itemList: [ | ||||
|       { | ||||
|         name: undefined, | ||||
|         specification: undefined, | ||||
|         unit: undefined, | ||||
|         quantity: undefined, | ||||
|         acceptedQuantity: undefined, | ||||
|         shortageQuantity: undefined, | ||||
|         remark: undefined | ||||
|       } | ||||
|     ] | ||||
|   }; | ||||
| }; | ||||
| const data = reactive<PageData<MaterialReceiveForm, MaterialReceiveQuery>>({ | ||||
|   form: { ...initFormData }, | ||||
|   form: getInitFormData(), | ||||
|   queryParams: { | ||||
|     pageNum: 1, | ||||
|     pageSize: 10, | ||||
| @ -349,7 +352,7 @@ const cancel = () => { | ||||
|  | ||||
| /** 表单重置 */ | ||||
| const reset = () => { | ||||
|   form.value = { ...initFormData }; | ||||
|   form.value = getInitFormData(); | ||||
|   materialReceiveFormRef.value?.resetFields(); | ||||
| }; | ||||
|  | ||||
| @ -385,10 +388,10 @@ const handleUpdate = async (row?: MaterialReceiveVO) => { | ||||
|   const _id = row?.id || ids.value[0]; | ||||
|   const res = await getMaterialReceive(_id); | ||||
|   Object.assign(form.value, res.data); | ||||
|   if(form.value.storageType.length){ | ||||
|   if (form.value.storageType.length) { | ||||
|     form.value.storageType = form.value.storageType.split(','); | ||||
|   }else{ | ||||
|     form.value.storageType=[] | ||||
|   } else { | ||||
|     form.value.storageType = []; | ||||
|   } | ||||
|   dialog.visible = true; | ||||
|   dialog.title = '修改物料接收单'; | ||||
|  | ||||
| @ -172,7 +172,7 @@ const onOpen = (path: string) => { | ||||
| }; | ||||
| // 导出 | ||||
| const onLoad = async () => { | ||||
|   await downLoadOss({ id: formData.value.id }, '/design/designChange/export/word', '设计变更单.zip'); | ||||
|   await downLoadOss({ id: formData.value.id }, '/materials/materialReceive/export/word', '材料设备验收单.zip'); | ||||
| }; | ||||
|  | ||||
| // 关闭弹窗 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user