优化
This commit is contained in:
		| @ -87,7 +87,7 @@ | ||||
|       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
|     </el-card> | ||||
|     <!-- 添加或修改联系单模板对话框 --> | ||||
|     <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body> | ||||
|     <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body destroy-on-close> | ||||
|       <el-form ref="contactformtemplateFormRef" :model="form" :rules="rules" label-width="80px"> | ||||
|         <el-form-item label="模板名称" prop="name"> | ||||
|           <el-input v-model="form.name" placeholder="请输入模板名称" /> | ||||
| @ -100,7 +100,9 @@ | ||||
|             ref="fileUploadRef" | ||||
|             :data="{ name: form.name, projectId: currentProject.id }" | ||||
|             uploadUrl="/cory/contactformtemplate" | ||||
|             :limit="1" | ||||
|             :onUploadSuccess="handleUploadSuccess" | ||||
|             showFileList | ||||
|           /> | ||||
|         </el-form-item> | ||||
|         <!-- <el-form-item label="备注" prop="remark"> | ||||
| @ -161,6 +163,7 @@ const uploadData = reactive({ | ||||
| const initFormData: ContactformtemplateForm = { | ||||
|   id: undefined, | ||||
|   name: undefined, | ||||
|   file: undefined, | ||||
|   remark: undefined | ||||
| }; | ||||
| const data = reactive<PageData<ContactformtemplateForm, ContactformtemplateQuery>>({ | ||||
| @ -275,6 +278,7 @@ const submitForm = () => { | ||||
| const handleUploadSuccess = () => { | ||||
|   proxy?.$modal.msgSuccess('操作成功'); | ||||
|   dialog.visible = false; | ||||
|   buttonLoading.value = false; | ||||
|   getList(); | ||||
| }; | ||||
|  | ||||
|  | ||||
| @ -11,12 +11,11 @@ | ||||
|           <div style="white-space: pre-line">{{ row.content }}</div> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       <el-table-column align="center" label="附件"> | ||||
|       <!-- <el-table-column align="center" label="附件"> | ||||
|         <template #default="{ row }"> | ||||
|           <!-- <a v-if="row.attachments" :href="row.attachments" target="_blank"></a> --> | ||||
|           <el-link type="primary" :underline="false" @click="openFile(row.attachments)" target="_blank">查看附件</el-link> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       </el-table-column> --> | ||||
| 
 | ||||
|       <!-- 分段标题:施工项目部 --> | ||||
|       <el-table-column label="施工项目部" align="center"> | ||||
| @ -51,17 +50,17 @@ | ||||
|       <el-table-column align="center" prop="content" label="操作" width="160"> | ||||
|         <template #default="scope"> | ||||
|           <el-button link type="success" icon="View" @click="handleDetail(scope.row)" class="ml-3"> 详情 </el-button> | ||||
|           <el-button link type="primary" icon="Download" @click="handleDownload()"> 下载 </el-button> | ||||
|           <!-- <el-button link type="primary" icon="Download" @click="handleDownload()"> 下载 </el-button> --> | ||||
|           <!-- <el-button link type="warning" icon="Edit" @click="handleDelete(scope.row)"> 修改 </el-button> --> | ||||
|           <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)"> 删除 </el-button> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|     </el-table> | ||||
|     <!-- 详情 --> | ||||
|     <el-dialog title="联系单详情" v-model="detailVisible" width="1000"> | ||||
|     <el-dialog title="外部联系单详情" v-model="detailVisible" width="1000"> | ||||
|       <div class="w[850px] ma word-export-wrapper" ref="exportRef"> | ||||
|         <div class="w80% ma"> | ||||
|           <h2 style="text-align: center; margin-top: 5px; font-weight: bold">联系单</h2> | ||||
|           <h2 style="text-align: center; margin-top: 5px; font-weight: bold">外部联系单</h2> | ||||
|           <el-row> | ||||
|             <el-col :span="12" style="text-align: left">工程名称:{{ tableDetail.projectName }}</el-col> | ||||
|             <el-col :span="12" style="text-align: right">编号:{{ tableDetail.serialNumber }}</el-col> | ||||
| @ -110,13 +109,13 @@ | ||||
|             > | ||||
|           </el-descriptions> | ||||
|         </div> | ||||
|         <div class="dialog-footer"> | ||||
|           <div class="btn-item" @click="handleDownload"> | ||||
|             <img src="@/assets/icons/svg/derived.png" /> | ||||
|             <span>下载</span> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|       <template #footer> | ||||
|         <!-- <span> | ||||
|         <el-button @click="detailVisible = false">Cancel</el-button> | ||||
|         <el-button type="primary" @click="">OK</el-button> | ||||
|       </span> --> | ||||
|       </template> | ||||
|     </el-dialog> | ||||
|   </div> | ||||
| </template> | ||||
| @ -207,7 +206,7 @@ const handleDownload = () => { | ||||
|   `; | ||||
| 
 | ||||
|   const blob = (window as any).htmlDocx.asBlob(html); | ||||
|   saveAs(blob, '工程变更申请单.docx'); | ||||
|   saveAs(blob, '外部联系单.docx'); | ||||
| }; | ||||
| const applyInlineTableStyles = (rootEl: HTMLElement) => { | ||||
|   rootEl.querySelectorAll('table').forEach((table) => { | ||||
| @ -241,4 +240,25 @@ const openFile = async (url: string) => { | ||||
| :deep(.zebra) { | ||||
|   background: #f5f7fa; | ||||
| } | ||||
| .dialog-footer { | ||||
|   height: 100px; | ||||
|   display: flex; | ||||
| 
 | ||||
|   flex-direction: column; | ||||
|   justify-content: space-between; | ||||
|   position: absolute; | ||||
|   top: 14%; | ||||
|   right: 6%; | ||||
|   background: #fff; | ||||
|   box-shadow: 0 0 10px #ddd; | ||||
|   text-align: center; | ||||
|   padding: 20px 10px; | ||||
| 
 | ||||
|   .btn-item { | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     justify-content: center; | ||||
|     cursor: pointer; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| @ -64,7 +64,7 @@ | ||||
|       <el-table-column align="center" prop="content" label="操作" width="160"> | ||||
|         <template #default="scope"> | ||||
|           <el-button link type="success" icon="View" @click="handleDetail(scope.row)" class="ml-3"> 详情 </el-button> | ||||
|           <el-button link type="primary" icon="Download" @click="handleDownload()"> 下载 </el-button> | ||||
|           <!-- <el-button link type="primary" icon="Download" @click="handleDownload()"> 下载 </el-button> --> | ||||
|           <!-- <el-button link type="warning" icon="Edit" @click="handleDelete(scope.row)"> 修改 </el-button> --> | ||||
|           <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)"> 删除 </el-button> | ||||
|         </template> | ||||
| @ -72,10 +72,10 @@ | ||||
|     </el-table> | ||||
| 
 | ||||
|     <!-- 详情 --> | ||||
|     <el-dialog title="工程变更申请单详情" v-model="detailVisible" width="1000"> | ||||
|     <el-dialog title="变更单详情" v-model="detailVisible" width="1000"> | ||||
|       <div class="w[850px] ma word-export-wrapper" ref="exportRef"> | ||||
|         <div class="w80% ma"> | ||||
|           <h2 style="text-align: center; margin-top: 5px; font-weight: bold">工程变更申请单</h2> | ||||
|           <h2 style="text-align: center; margin-top: 5px; font-weight: bold">变更单</h2> | ||||
|           <el-row> | ||||
|             <el-col :span="12">编号:{{ tableDetail.id }}</el-col> | ||||
|           </el-row> | ||||
| @ -174,14 +174,13 @@ | ||||
|             </el-descriptions-item> | ||||
|           </el-descriptions> | ||||
|         </div> | ||||
|         <div class="dialog-footer"> | ||||
|           <div class="btn-item" @click="handleDownload"> | ||||
|             <img src="@/assets/icons/svg/derived.png" /> | ||||
|             <span>下载</span> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
| 
 | ||||
|       <template #footer> | ||||
|         <!-- <span> | ||||
|         <el-button @click="detailVisible = false">Cancel</el-button> | ||||
|         <el-button type="primary" @click="">OK</el-button> | ||||
|       </span> --> | ||||
|       </template> | ||||
|     </el-dialog> | ||||
|   </div> | ||||
| </template> | ||||
| @ -290,7 +289,7 @@ const handleDownload = () => { | ||||
|   `; | ||||
| 
 | ||||
|   const blob = (window as any).htmlDocx.asBlob(html); | ||||
|   saveAs(blob, '工程变更申请单.docx'); | ||||
|   saveAs(blob, '变更单.docx'); | ||||
| }; | ||||
| const applyInlineTableStyles = (rootEl: HTMLElement) => { | ||||
|   rootEl.querySelectorAll('table').forEach((table) => { | ||||
| @ -345,4 +344,25 @@ const applyInlineTableStyles = (rootEl: HTMLElement) => { | ||||
|   font-weight: bold; | ||||
|   background-color: #f2f2f2; | ||||
| } | ||||
| .dialog-footer { | ||||
|   height: 100px; | ||||
|   display: flex; | ||||
| 
 | ||||
|   flex-direction: column; | ||||
|   justify-content: space-between; | ||||
|   position: absolute; | ||||
|   top: 14%; | ||||
|   right: 6%; | ||||
|   background: #fff; | ||||
|   box-shadow: 0 0 10px #ddd; | ||||
|   text-align: center; | ||||
|   padding: 20px 10px; | ||||
| 
 | ||||
|   .btn-item { | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     justify-content: center; | ||||
|     cursor: pointer; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| @ -49,18 +49,17 @@ | ||||
|       </template> | ||||
|       <!-- card body --> | ||||
|       <Contactform | ||||
|         v-if="queryParams.projectType == '联系单'" | ||||
|         v-if="queryParams.projectType == '外部联系单'" | ||||
|         @selection-change="handleSelectionChange" | ||||
|         :data="tableData" | ||||
|         @delete="handleDelete" | ||||
|       ></Contactform> | ||||
|       <EngineeringChangeApplicationForm | ||||
|         v-if="queryParams.projectType == '工程变更申请单'" | ||||
|         v-if="queryParams.projectType == '变更单'" | ||||
|         @selection-change="handleSelectionChange" | ||||
|         :data="tableData" | ||||
|         @delete="handleDelete" | ||||
|       ></EngineeringChangeApplicationForm> | ||||
|       <Notice v-if="queryParams.projectType == '2'" @selection-change="handleSelectionChange" :data="tableData"></Notice> | ||||
|       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
|     </el-card> | ||||
| 
 | ||||
| @ -70,7 +69,7 @@ | ||||
|           <!-- <img :src="thumbnailUrl" alt="" style="width: 150px;" /> --> | ||||
|           <div><image-preview :src="thumbnailUrl" width="150px"></image-preview></div> | ||||
| 
 | ||||
|           <div v-if="queryParams.projectType == '联系单'"> | ||||
|           <div v-if="queryParams.projectType == '外部联系单'"> | ||||
|             <el-form-item label="工程名称" prop="projectName"> | ||||
|               <el-input v-model="form.projectName" placeholder="请输入工程名称" /> | ||||
|             </el-form-item> | ||||
| @ -112,7 +111,7 @@ | ||||
|               <el-date-picker v-model="form.ownerDate" type="date" placeholder="选择日期" style="width: 100%" /> | ||||
|             </el-form-item> | ||||
|           </div> | ||||
|           <div v-if="queryParams.projectType === '工程变更申请单'"> | ||||
|           <div v-if="queryParams.projectType === '变更单'"> | ||||
|             <el-form-item label="工程名称"> | ||||
|               <el-input v-model="form.projectName" /> | ||||
|             </el-form-item> | ||||
| @ -200,49 +199,6 @@ | ||||
|               <el-date-picker v-model="form.esupervisorDate" type="date" placeholder="选择日期" style="width: 100%" /> | ||||
|             </el-form-item> | ||||
|           </div> | ||||
|           <div v-if="queryParams.projectType === '2'"> | ||||
|             <el-form-item label="检查类型" prop="checkType"> | ||||
|               <el-select v-model="form.checkType" placeholder="请选择检查类型"> | ||||
|                 <el-option v-for="dict in safety_inspection_check_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="违章类型" prop="violationType"> | ||||
|               <el-select v-model="form.violationType" placeholder="请选择违章类型"> | ||||
|                 <el-option v-for="dict in safety_inspection_violation_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="巡检结果" prop="inspectionResult"> | ||||
|               <el-input v-model="form.inspectionResult" placeholder="请输入巡检结果" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="整改班组" prop="teamId"> | ||||
|               <el-select v-model="form.teamId" placeholder="请选择整改班组"> | ||||
|                 <el-option v-for="item in teamOpt" :key="item.value" :label="item.label" :value="item.value" @click="changeForeman(item.value)" /> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="整改人" prop="correctorId"> | ||||
|               <el-select v-model="form.correctorId" placeholder="请选择整改人" :disabled="!form.teamId"> | ||||
|                 <el-option v-for="item in foremanOpt" :key="item.value" :label="item.label" :value="item.value" /> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="问题隐患" prop="hiddenDanger"> | ||||
|               <el-input v-model="form.hiddenDanger" type="textarea" placeholder="请输入内容" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="整改措施" prop="measure"> | ||||
|               <el-input v-model="form.measure" type="textarea" placeholder="请输入内容" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="要求整改期限" prop="checkTime"> | ||||
|               <el-date-picker clearable v-model="form.rectificationDeadline" type="date" value-format="YYYY-MM-DD" placeholder="选择要求整改期限" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="检查附件" prop="checkFile"> | ||||
|               <file-upload v-model="form.checkFile" :file-size="20" :file-type="['doc', 'docx', 'pdf', 'png', 'jpg', 'jpeg']" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="整改附件" prop="rectificationFile"> | ||||
|               <file-upload v-model="form.rectificationFile" :file-size="20" :file-type="['doc', 'docx', 'pdf', 'png', 'jpg', 'jpeg']" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="备注" prop="remark"> | ||||
|               <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> | ||||
|             </el-form-item> | ||||
|           </div> | ||||
|         </div> | ||||
|       </el-form> | ||||
|       <template #footer> | ||||
| @ -260,7 +216,6 @@ import { useUserStoreHook } from '@/store/modules/user'; | ||||
| import type { FormInstance, FormRules } from 'element-plus'; | ||||
| import Contactform from './components/contactform.vue'; | ||||
| import EngineeringChangeApplicationForm from './components/engineeringChangeApplicationForm.vue'; | ||||
| import Notice from './components/notice.vue'; | ||||
| import { listContactTypeformtemplate } from '@/api/cory/contactformtemplate'; | ||||
| import { addContactnotice, delContactnotice, listContactnotice } from '@/api/cory/contactnotice'; | ||||
| 
 | ||||
| @ -289,11 +244,11 @@ const ids = ref<Array<string | number>>([]); | ||||
| const projectTypeOptions = ref<any>([ | ||||
|   { | ||||
|     value: '0', | ||||
|     label: '联系单' | ||||
|     label: '外部联系单' | ||||
|   }, | ||||
|   { | ||||
|     value: '1', | ||||
|     label: '工程变更申请单' | ||||
|     label: '变更单' | ||||
|   }, | ||||
|   { | ||||
|     value: '2', | ||||
| @ -344,6 +299,7 @@ const data = reactive<PageData<any, any>>({ | ||||
|     teamId: undefined, | ||||
|     type: undefined, | ||||
|     params: {}, | ||||
|     ids: ['1942107830848872449', '1942107931415699457'], | ||||
|     projectType: undefined | ||||
|   }, | ||||
|   rules: { | ||||
| @ -394,8 +350,6 @@ const changeForeman = (value: string | number) => { | ||||
| const handleQuery = () => {}; | ||||
| const resetQuery = () => {}; | ||||
| const getList = async () => { | ||||
|   console.log(queryParams.value.projectType); | ||||
| 
 | ||||
|   if (!queryParams.value.projectType) { | ||||
|     const res = await listContactTypeformtemplate(queryParams.value); | ||||
|     projectTypeOptions.value = res.data; | ||||
| @ -1,6 +1,6 @@ | ||||
| <template> | ||||
|   <div class="content-box"> | ||||
|     <el-table v-loading="loading" :data="[form]" @selection-change="handleSelectionChange"> | ||||
|     <el-table v-loading="loading" :data="data" @selection-change="handleSelectionChange"> | ||||
|       <el-table-column type="selection" width="55" align="center" /> | ||||
|       <el-table-column label="序号" type="index" width="60" align="center" /> | ||||
|       <el-table-column label="处理状态" align="center" prop="status"> | ||||
| @ -63,72 +63,98 @@ | ||||
|       <div class="w80% ma"> | ||||
|         <h2 style="text-align: center; margin-top: 5px; font-weight: bold">通知单</h2> | ||||
|         <el-row> | ||||
|           <el-col :span="12" style="text-align: left">工程名称:</el-col> | ||||
|           <el-col :span="12" style="text-align: right">编号:123123123132</el-col> | ||||
|           <el-col :span="12" style="text-align: left">填报人:{{ safetyInspectionDetail?.creatorName }}</el-col> | ||||
|           <el-col :span="12" style="text-align: right">填报时间:{{ safetyInspectionDetail?.createTime }}</el-col> | ||||
|         </el-row> | ||||
|         <el-descriptions :column="2" border style="margin-top: 8px" label-width="160px" size="large"> | ||||
|           <el-descriptions-item label-align="center" label="检查项目" :span="2" class-name="zebra"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="检查类型" label-class-name="white"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="违章类型" label-class-name="white"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="检查时间" class-name="zebra"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="检查人" class-name="zebra"></el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="整改人" label-class-name="white"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="要求整改期限" label-class-name="white"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="检查项目" :span="2" class-name="zebra">{{ currentProject?.name }} </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="检查类型" label-class-name="white"> | ||||
|             <dict-tag :options="safety_inspection_check_type" :value="safetyInspectionDetail?.checkType" /> | ||||
|           </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="违章类型" label-class-name="white"> | ||||
|             <dict-tag :options="safety_inspection_violation_type" :value="safetyInspectionDetail?.violationType" /> | ||||
|           </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="检查时间" class-name="zebra" | ||||
|             >{{ safetyInspectionDetail?.checkTime }} | ||||
|           </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="检查人" class-name="zebra" | ||||
|             >{{ safetyInspectionDetail?.creatorName }} | ||||
|           </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="整改人" label-class-name="white" | ||||
|             >{{ safetyInspectionDetail?.correctorName }} | ||||
|           </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="要求整改期限" label-class-name="white"> | ||||
|             {{ dayjs(safetyInspectionDetail?.rectificationDeadline).format('YYYY 年 MM 月 DD 日') }} | ||||
|           </el-descriptions-item> | ||||
|         </el-descriptions> | ||||
|         <el-descriptions border direction="vertical" size="large"> | ||||
|           <el-descriptions-item label-align="center" label="巡检结果" class-name="none"></el-descriptions-item> | ||||
|         </el-descriptions> | ||||
|         <el-descriptions :column="2" border label-width="160px" size="large"> | ||||
|           <el-descriptions-item label-align="center" label="内容" :span="2" label-class-name="white"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="内容" :span="2" label-class-name="white" | ||||
|             >{{ safetyInspectionDetail?.hiddenDanger }} | ||||
|           </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="检查附件" :span="2" label-class-name="white"> | ||||
|             <!-- <el-space wrap> | ||||
|             <div v-for="item in checkFileList" :key="item.ossId"> | ||||
|               <span v-if="['.png', '.jpg', '.jpeg'].includes(item.fileSuffix)"> | ||||
|                 <image-preview :src="item.url" width="200px" /> | ||||
|               </span> | ||||
|               <span v-else> | ||||
|                 <el-link :href="`${item.url}`" type="primary" :underline="false" target="_blank"> | ||||
|                   <span> {{ item.originalName }} </span> | ||||
|                 </el-link> | ||||
|               </span> | ||||
|             </div> | ||||
|           </el-space> --> | ||||
|             <el-space wrap> | ||||
|               <div v-for="item in checkFileList" :key="item.ossId"> | ||||
|                 <span v-if="['.png', '.jpg', '.jpeg'].includes(item.fileSuffix)"> | ||||
|                   <image-preview :src="item.url" width="200px" /> | ||||
|                 </span> | ||||
|                 <span v-else> | ||||
|                   <el-link :href="`${item.url}`" type="primary" :underline="false" target="_blank"> | ||||
|                     <span> {{ item.originalName }} </span> | ||||
|                   </el-link> | ||||
|                 </span> | ||||
|               </div> | ||||
|             </el-space> | ||||
|           </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="检查状态" :span="2" label-class-name="white"> | ||||
|             <!-- <el-steps style="max-width: 200px" :active="Number(safetyInspectionDetail?.status)" finish-status="finish"> | ||||
|             <el-step v-for="item in safety_inspection_type" :key="item.value" :title="item.label" /> | ||||
|           </el-steps> --> | ||||
|             <el-steps style="max-width: 200px" :active="Number(safetyInspectionDetail?.status)" finish-status="finish"> | ||||
|               <el-step v-for="item in safety_inspection_type" :key="item.value" :title="item.label" /> | ||||
|             </el-steps> | ||||
|           </el-descriptions-item> | ||||
|         </el-descriptions> | ||||
|         <el-descriptions border direction="vertical" size="large"> | ||||
|           <el-descriptions-item label-align="center" label="整改情况" class-name="none"></el-descriptions-item> | ||||
|         </el-descriptions> | ||||
|         <el-descriptions :column="2" border label-width="160px" size="large"> | ||||
|           <el-descriptions-item label-align="center" label="班组" label-class-name="white"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="整改日期" label-class-name="white"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="整改措施及完成情况" :span="2" label-class-name="white"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="班组" label-class-name="white" | ||||
|             >{{ safetyInspectionDetail?.teamName }} | ||||
|           </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="整改日期" label-class-name="white" | ||||
|             >{{ safetyInspectionDetail?.rectificationTime }} | ||||
|           </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="整改措施及完成情况" :span="2" label-class-name="white"> | ||||
|             {{ safetyInspectionDetail?.measure }} | ||||
|           </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="整改附件" :span="2" label-class-name="white"> | ||||
|             <!-- <el-space wrap> | ||||
|             <div v-for="item in rectificationFileList" :key="item.ossId"> | ||||
|               <span v-if="['.png', '.jpg', '.jpeg'].includes(item.fileSuffix)"> | ||||
|                 <image-preview :src="item.url" width="200px" /> | ||||
|               </span> | ||||
|               <span v-else> | ||||
|                 <el-link :href="`${item.url}`" :underline="false" target="_blank"> | ||||
|                   <span> {{ item.originalName }} </span> | ||||
|                 </el-link> | ||||
|               </span> | ||||
|             </div> | ||||
|           </el-space> --> | ||||
|             <el-space wrap> | ||||
|               <div v-for="item in rectificationFileList" :key="item.ossId"> | ||||
|                 <span v-if="['.png', '.jpg', '.jpeg'].includes(item.fileSuffix)"> | ||||
|                   <image-preview :src="item.url" width="200px" /> | ||||
|                 </span> | ||||
|                 <span v-else> | ||||
|                   <el-link :href="`${item.url}`" :underline="false" target="_blank"> | ||||
|                     <span> {{ item.originalName }} </span> | ||||
|                   </el-link> | ||||
|                 </span> | ||||
|               </div> | ||||
|             </el-space> | ||||
|           </el-descriptions-item> | ||||
|         </el-descriptions> | ||||
|         <el-descriptions border direction="vertical" size="large"> | ||||
|           <el-descriptions-item label-align="center" label="复查结果" class-name="none"></el-descriptions-item> | ||||
|         </el-descriptions> | ||||
|         <el-descriptions :column="2" border label-width="160px" size="large"> | ||||
|           <el-descriptions-item label-align="center" label="复查人" label-class-name="white"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="复查日期" label-class-name="white"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="复查情况" :span="2" label-class-name="white"> </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="复查人" label-class-name="white" | ||||
|             >{{ safetyInspectionDetail?.creatorName }} | ||||
|           </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="复查日期" label-class-name="white" | ||||
|             >{{ safetyInspectionDetail?.reviewTime }} | ||||
|           </el-descriptions-item> | ||||
|           <el-descriptions-item label-align="center" label="复查情况" :span="2" label-class-name="white" | ||||
|             >{{ safetyInspectionDetail?.review }} | ||||
|           </el-descriptions-item> | ||||
|         </el-descriptions> | ||||
|       </div> | ||||
|       <template #footer> | ||||
| @ -142,7 +168,33 @@ | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts" setup> | ||||
| import { SafetyInspectionVO } from '@/api/safety/safetyInspection/types'; | ||||
| import { listByIds } from '@/api/system/oss'; | ||||
| import { OssVO } from '@/api/system/oss/types'; | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
| import { useDict } from '@/utils/dict'; | ||||
| import { dayjs } from 'element-plus'; | ||||
| const rectificationFileList = ref<OssVO[]>(); | ||||
| const checkFileList = ref<OssVO[]>(); | ||||
| 
 | ||||
| const emit = defineEmits(['selection-change']); | ||||
| const props = defineProps({ | ||||
|   data: { | ||||
|     type: Array, | ||||
|     default: () => [] | ||||
|   } | ||||
| }); | ||||
| console.log(props.data); | ||||
| 
 | ||||
| // 获取用户 store | ||||
| const userStore = useUserStoreHook(); | ||||
| // 从 store 中获取项目列表和当前选中的项目 | ||||
| const currentProject = computed(() => userStore.selectedProject); | ||||
| 
 | ||||
| const { safety_inspection_violation_type, safety_inspection_check_type, review_type, safety_inspection_type } = toRefs<any>( | ||||
|   useDict('safety_inspection_violation_type', 'safety_inspection_check_type', 'review_type', 'safety_inspection_type') | ||||
| ); | ||||
| const safetyInspectionDetail = ref<SafetyInspectionVO>(); | ||||
| 
 | ||||
| const form = reactive({ | ||||
|   id: '1', | ||||
| @ -172,8 +224,17 @@ const handleSelectionChange = (selection: any) => { | ||||
|   emit('selection-change', selection); | ||||
| }; | ||||
| 
 | ||||
| const handleDetail = (row) => { | ||||
| const handleDetail = async (row) => { | ||||
|   detailVisible.value = true; | ||||
|   safetyInspectionDetail.value = row; | ||||
|   if (row.checkFile) { | ||||
|     const checkFileRes = await listByIds(row.checkFile.split(',')); | ||||
|     checkFileList.value = checkFileRes.data; | ||||
|   } | ||||
|   if (row.rectificationFile) { | ||||
|     const rectificationFileRes = await listByIds(row.rectificationFile.split(',')); | ||||
|     rectificationFileList.value = rectificationFileRes.data; | ||||
|   } | ||||
| }; | ||||
| const getList = (row) => {}; | ||||
| const handleDelete = (row) => {}; | ||||
							
								
								
									
										313
									
								
								src/views/cory/workMessage/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										313
									
								
								src/views/cory/workMessage/index.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,313 @@ | ||||
| <template> | ||||
|   <div class="p-2"> | ||||
|     <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave"> | ||||
|       <div v-show="showSearch" class="mb-[10px]"> | ||||
|         <el-card shadow="hover"> | ||||
|           <el-form ref="queryFormRef" :model="queryParams" :inline="true"> | ||||
|             <el-form-item label="模板类型" prop="projectType"> | ||||
|               <el-select v-model="queryParams.projectType" placeholder="请选择模板类型" clearable filterable @change="selectType"> | ||||
|                 <el-option v-for="item in projectTypeOptions" :key="item.name" :label="item.name" :value="item.name"> </el-option> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <!-- <el-form-item> | ||||
|               <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> | ||||
|               <el-button icon="Refresh" @click="resetQuery">重置</el-button> | ||||
|             </el-form-item> --> | ||||
|           </el-form> | ||||
|         </el-card> | ||||
|       </div> | ||||
|     </transition> | ||||
|     <el-card shadow="never"> | ||||
|       <template #header> | ||||
|         <el-row :gutter="10" class="mb8"> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button type="primary" plain icon="Plus" :disabled="addSingle" @click="handleAdd" v-hasPermi="['quality:qualityInspection:add']" | ||||
|               >新增</el-button | ||||
|             > | ||||
|           </el-col> | ||||
|           <!-- <el-col :span="1.5"> | ||||
|             <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['quality:qualityInspection:edit']" | ||||
|               >修改</el-button | ||||
|             > | ||||
|           </el-col> --> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button | ||||
|               type="danger" | ||||
|               plain | ||||
|               icon="Delete" | ||||
|               :disabled="multiple" | ||||
|               @click="handleDelete()" | ||||
|               v-hasPermi="['quality:qualityInspection:remove']" | ||||
|               >删除</el-button | ||||
|             > | ||||
|           </el-col> | ||||
|           <!-- <el-col :span="1.5"> | ||||
|             <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['quality:qualityInspection:export']">导出</el-button> | ||||
|           </el-col> --> | ||||
|           <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> | ||||
|         </el-row> | ||||
|       </template> | ||||
|       <!-- card body --> | ||||
|       <Notice @selection-change="handleSelectionChange" :data="tableData"></Notice> | ||||
|       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
|     </el-card> | ||||
|  | ||||
|     <el-dialog title="新增模板" v-model="dialogVisible" width="800"> | ||||
|       <el-form :model="form" :rules="rules" ref="formRef" label-width="110px"> | ||||
|         <div class="flex"> | ||||
|           <!-- <img :src="thumbnailUrl" alt="" style="width: 150px;" /> --> | ||||
|           <div><image-preview :src="thumbnailUrl" width="150px"></image-preview></div> | ||||
|           <div> | ||||
|             <el-form-item label="检查类型" prop="checkType"> | ||||
|               <el-select v-model="form.checkType" placeholder="请选择检查类型"> | ||||
|                 <el-option v-for="dict in safety_inspection_check_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="违章类型" prop="violationType"> | ||||
|               <el-select v-model="form.violationType" placeholder="请选择违章类型"> | ||||
|                 <el-option v-for="dict in safety_inspection_violation_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="巡检结果" prop="inspectionResult"> | ||||
|               <el-input v-model="form.inspectionResult" placeholder="请输入巡检结果" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="整改班组" prop="teamId"> | ||||
|               <el-select v-model="form.teamId" placeholder="请选择整改班组"> | ||||
|                 <el-option v-for="item in teamOpt" :key="item.value" :label="item.label" :value="item.value" @click="changeForeman(item.value)" /> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="整改人" prop="correctorId"> | ||||
|               <el-select v-model="form.correctorId" placeholder="请选择整改人" :disabled="!form.teamId"> | ||||
|                 <el-option v-for="item in foremanOpt" :key="item.value" :label="item.label" :value="item.value" /> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="问题隐患" prop="hiddenDanger"> | ||||
|               <el-input v-model="form.hiddenDanger" type="textarea" placeholder="请输入内容" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="整改措施" prop="measure"> | ||||
|               <el-input v-model="form.measure" type="textarea" placeholder="请输入内容" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="要求整改期限" prop="rectificationDeadline"> | ||||
|               <el-date-picker clearable v-model="form.rectificationDeadline" type="date" value-format="YYYY-MM-DD" placeholder="选择要求整改期限" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="检查附件" prop="checkFile"> | ||||
|               <file-upload v-model="form.checkFile" :file-size="20" :file-type="['doc', 'docx', 'pdf', 'png', 'jpg', 'jpeg']" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="整改附件" prop="rectificationFile"> | ||||
|               <file-upload v-model="form.rectificationFile" :file-size="20" :file-type="['doc', 'docx', 'pdf', 'png', 'jpg', 'jpeg']" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="备注" prop="remark"> | ||||
|               <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" /> | ||||
|             </el-form-item> | ||||
|           </div> | ||||
|         </div> | ||||
|       </el-form> | ||||
|       <template #footer> | ||||
|         <span> | ||||
|           <el-button @click="dialogVisible = false">取消</el-button> | ||||
|           <el-button type="primary" @click="submitForm">确定</el-button> | ||||
|         </span> | ||||
|       </template> | ||||
|     </el-dialog> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script setup lang="ts"> | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
| import type { FormInstance, FormRules } from 'element-plus'; | ||||
| import Notice from './components/notice.vue'; | ||||
| import { listContactTypeformtemplate } from '@/api/cory/contactformtemplate'; | ||||
| import { addContactnotice, delContactnotice, listContactnotice } from '@/api/cory/contactnotice'; | ||||
| import { listProjectTeamForeman } from '@/api/project/projectTeam'; | ||||
| import { foremanQuery, ProjectTeamForemanResp } from '@/api/project/projectTeam/types'; | ||||
|  | ||||
| const { proxy } = getCurrentInstance() as ComponentInternalInstance; | ||||
| // 获取用户 store | ||||
| const userStore = useUserStoreHook(); | ||||
| // 从 store 中获取项目列表和当前选中的项目 | ||||
| const currentProject = computed(() => userStore.selectedProject); | ||||
| const { safety_inspection_violation_type, safety_inspection_check_type } = toRefs<any>( | ||||
|   proxy?.useDict('safety_inspection_violation_type', 'safety_inspection_check_type') | ||||
| ); | ||||
|  | ||||
| const teamOpt = ref([]); | ||||
| const foremanOpt = ref([]); | ||||
| const teamList = ref<ProjectTeamForemanResp[]>(); | ||||
| const thumbnailUrl = ref(''); | ||||
| const tableData = ref([]); | ||||
| const total = ref(0); | ||||
|  | ||||
| const formRef = ref<FormInstance>(); | ||||
| const dialogVisible = ref<boolean>(false); | ||||
| const showSearch = ref(true); | ||||
| const multiple = ref<boolean>(true); | ||||
| const addSingle = ref<boolean>(false); | ||||
| const single = ref<boolean>(true); | ||||
| const ids = ref<Array<string | number>>([]); | ||||
|  | ||||
| const projectTypeOptions = ref<any>([ | ||||
|   { | ||||
|     value: '0', | ||||
|     label: '外部联系单' | ||||
|   }, | ||||
|   { | ||||
|     value: '1', | ||||
|     label: '变更单' | ||||
|   }, | ||||
|   { | ||||
|     value: '2', | ||||
|     label: '通知单' | ||||
|   }, | ||||
|   { | ||||
|     value: '3', | ||||
|     label: '回复单' | ||||
|   }, | ||||
|   { | ||||
|     value: '4', | ||||
|     label: '签证单' | ||||
|   } | ||||
| ]); | ||||
|  | ||||
| const initFormData = { | ||||
|   projectType: '', | ||||
|   projectName: '', | ||||
|   serialNumber: '', | ||||
|   to: '', | ||||
|   subject: '', | ||||
|   content: '', | ||||
|   attachments: '', | ||||
|   contractorLeader: '', | ||||
|   contractorDate: '', | ||||
|   supervisorLeader: '', | ||||
|   supervisorDate: '', | ||||
|   ownerRep: '', | ||||
|   ownerDate: '', | ||||
|   unitName: '', | ||||
|   profession: '', | ||||
|   applyDate: '', | ||||
|   bookName: '', | ||||
|   bookNo: '', | ||||
|   hasAttachment: '', | ||||
|   changeReasons: [], | ||||
|   changeContent: '', | ||||
|   costEstimate: '' | ||||
| }; | ||||
| const data = reactive<PageData<any, any>>({ | ||||
|   form: { ...initFormData }, | ||||
|   queryParams: { | ||||
|     pageNum: 1, | ||||
|     pageSize: 10, | ||||
|     projectId: currentProject.value?.id, | ||||
|     inspectionType: undefined, | ||||
|     inspectionStatus: undefined, | ||||
|     teamId: undefined, | ||||
|     type: undefined, | ||||
|     params: {}, | ||||
|     ids: ['1942115670472814593', '1942115720766713857'], | ||||
|     projectType: undefined | ||||
|   }, | ||||
|   rules: { | ||||
|     projectName: [{ required: true, message: '请输入工程名称', trigger: 'blur' }], | ||||
|     projectType: [{ required: true, message: '请选择模板类型', trigger: 'blur' }], | ||||
|     serialNumber: [{ required: true, message: '请输入编号', trigger: 'blur' }], | ||||
|     to: [{ required: true, message: '请输入接收方', trigger: 'blur' }], | ||||
|     subject: [{ required: true, message: '请输入主题', trigger: 'blur' }], | ||||
|     content: [{ required: true, message: '请输入内容', trigger: 'blur' }] | ||||
|   } | ||||
| }); | ||||
|  | ||||
| const { queryParams, form, rules } = toRefs(data); | ||||
|  | ||||
| const submitForm = () => { | ||||
|   formRef.value?.validate(async (valid) => { | ||||
|     if (valid) { | ||||
|       let data = { | ||||
|         type: queryParams.value.type, | ||||
|         projectId: currentProject.value?.id, | ||||
|         detail: JSON.stringify(form.value) | ||||
|       }; | ||||
|       console.log('提交表单:', form); | ||||
|       const res = await addContactnotice(data); | ||||
|       if (res.code == 200) { | ||||
|         proxy.$modal.msgSuccess('添加成功'); | ||||
|         dialogVisible.value = false; | ||||
|         formRef.value.resetFields(); | ||||
|         getList(); | ||||
|       } | ||||
|     } | ||||
|   }); | ||||
| }; | ||||
|  | ||||
| const handleAdd = () => { | ||||
|   dialogVisible.value = true; | ||||
| }; | ||||
|  | ||||
| const changeForeman = (value: string | number) => { | ||||
|   const team = teamList.value.filter((team) => team.id === value)[0]; | ||||
|   foremanOpt.value = team.foremanList?.map((foreman: foremanQuery) => ({ | ||||
|     label: foreman.foremanName, | ||||
|     value: foreman.foremanId | ||||
|   })); | ||||
|   form.value.correctorId = ''; | ||||
| }; | ||||
|  | ||||
| const handleQuery = () => {}; | ||||
| const resetQuery = () => {}; | ||||
| const getList = async () => { | ||||
|   if (!queryParams.value.projectType) { | ||||
|     const res = await listContactTypeformtemplate(queryParams.value); | ||||
|     projectTypeOptions.value = res.data; | ||||
|     queryParams.value.projectType = res.data[0].name; | ||||
|     thumbnailUrl.value = res.data[0].thumbnail; | ||||
|     queryParams.value.type = res.data[0].id as string; | ||||
|   } | ||||
|   const res = await listContactnotice(queryParams.value); | ||||
|   res.rows = res.rows.map((item) => { | ||||
|     return { | ||||
|       ...item, | ||||
|       ...JSON.parse(item.detail) | ||||
|     }; | ||||
|   }); | ||||
|   tableData.value = res.rows; | ||||
|   total.value = res.total || 0; | ||||
|   // 获取项目班组信息 | ||||
|   const teamRes = await listProjectTeamForeman(currentProject.value.id); | ||||
|   teamList.value = teamRes.data; | ||||
|   teamOpt.value = teamList.value.map((team: ProjectTeamForemanResp) => ({ | ||||
|     label: team.teamName, | ||||
|     value: team.id | ||||
|   })); | ||||
| }; | ||||
| const handleDelete = async (id?: string) => { | ||||
|   const _ids = id || ids.value; | ||||
|   await proxy?.$modal.confirm('是否确认删除识别记录编号为"' + _ids + '"的数据项?').finally(); | ||||
|   const res = await delContactnotice(_ids); | ||||
|   if (res.code == 200) { | ||||
|     proxy.$modal.msgSuccess('删除成功'); | ||||
|     getList(); | ||||
|   } | ||||
| }; | ||||
| const handleUpdate = () => {}; | ||||
|  | ||||
| /** 多选框选中数据 */ | ||||
| const handleSelectionChange = (selection: any) => { | ||||
|   ids.value = selection.map((item) => item.id); | ||||
|   single.value = selection.length != 1; | ||||
|   multiple.value = !selection.length; | ||||
| }; | ||||
|  | ||||
| const selectType = (value: string) => { | ||||
|   queryParams.value.projectType = value; | ||||
|   thumbnailUrl.value = projectTypeOptions.value.filter((item) => item.name == value)[0].thumbnail; | ||||
|   queryParams.value.type = projectTypeOptions.value.filter((item) => item.name == value)[0].id; | ||||
|   getList(); | ||||
| }; | ||||
|  | ||||
| const resetForm = () => { | ||||
|   formRef.value?.resetFields(); | ||||
| }; | ||||
|  | ||||
| onMounted(() => { | ||||
|   getList(); | ||||
| }); | ||||
| </script> | ||||
| @ -40,7 +40,8 @@ | ||||
|  | ||||
| <script> | ||||
| import ModuleItem from '../ModuleItem/index.vue'; | ||||
| import dayjs from 'dayjs'; | ||||
| import { dayjs } from 'element-plus'; | ||||
|  | ||||
| import { listInfo } from '@/api/air'; | ||||
| import { debounce } from '@/utils/index'; | ||||
| import satellite from '../../../../images/home/satellite.png'; | ||||
|  | ||||
| @ -139,7 +139,7 @@ | ||||
| <script setup lang="ts"> | ||||
| import { getConstructionUser } from '@/api/project/constructionUser'; | ||||
| import { ConstructionUserVO } from '@/api/project/constructionUser/types'; | ||||
| import dayjs from 'dayjs'; | ||||
| import { dayjs } from 'element-plus'; | ||||
|  | ||||
| const { proxy } = getCurrentInstance() as ComponentInternalInstance; | ||||
| const { type_of_work, user_sex_type, user_clock_type } = toRefs<any>(proxy?.useDict('type_of_work', 'user_sex_type', 'user_clock_type')); | ||||
|  | ||||
| @ -116,7 +116,7 @@ import { SafetyInspectionVO } from '@/api/safety/safetyInspection/types'; | ||||
| import { getSafetyInspection } from '@/api/safety/safetyInspection'; | ||||
| import { downLoadOss, listByIds } from '@/api/system/oss'; | ||||
| import { OssVO } from '@/api/system/oss/types'; | ||||
| import dayjs from 'dayjs'; | ||||
| import { dayjs } from 'element-plus'; | ||||
|  | ||||
| interface Props { | ||||
|   safetyInspectionId?: string | number; | ||||
|  | ||||
| @ -137,7 +137,8 @@ | ||||
| import { addSafetyLog, delSafetyLog, getSafetyLog, listSafetyLog, updateSafetyLog } from '@/api/safety/safetyLog'; | ||||
| import { SafetyLogForm, SafetyLogQuery, SafetyLogVO } from '@/api/safety/safetyLog/types'; | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
| import dayjs from 'dayjs'; | ||||
| import { dayjs } from 'element-plus'; | ||||
|  | ||||
| import SafetyLogDetailDialog from '@/views/safety/safetyLog/component/SafetyLogDetailDialog.vue'; | ||||
|  | ||||
| const { proxy } = getCurrentInstance() as ComponentInternalInstance; | ||||
|  | ||||
| @ -24,7 +24,7 @@ | ||||
| <script setup lang="ts"> | ||||
| import { getTeamMeeting } from '@/api/safety/teamMeeting'; | ||||
| import { TeamMeetingVO } from '@/api/safety/teamMeeting/types'; | ||||
| import dayjs from 'dayjs'; | ||||
| import { dayjs } from 'element-plus'; | ||||
|  | ||||
| interface Props { | ||||
|   teamMeetingId?: string | number; | ||||
|  | ||||
| @ -97,12 +97,14 @@ | ||||
|       </template> | ||||
|     </el-dialog> | ||||
|     <el-dialog title="站班会详情" v-model="showDetailDrawer" width="800px"> | ||||
|       <team-meeting-detail-drawer :team-meeting-id="currentTeamMeetingId" /> | ||||
|       <TeamMeetingDetailDrawer :team-meeting-id="currentTeamMeetingId" /> | ||||
|     </el-dialog> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script setup name="TeamMeeting" lang="ts"> | ||||
| console.log(111); | ||||
|  | ||||
| import { addTeamMeeting, delTeamMeeting, getTeamMeeting, listTeamMeeting, updateTeamMeeting } from '@/api/safety/teamMeeting'; | ||||
| import { TeamMeetingForm, TeamMeetingQuery, TeamMeetingVO } from '@/api/safety/teamMeeting/types'; | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user