完善材料模块页面
This commit is contained in:
		| @ -7,8 +7,10 @@ | ||||
|             <el-form-item label="公司名称" prop="companyName"> | ||||
|               <el-input v-model="queryParams.companyName" placeholder="请输入公司名称" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="资质情况" prop="qualification"> | ||||
|               <el-input v-model="queryParams.qualification" placeholder="请输入资质情况" clearable @keyup.enter="handleQuery" /> | ||||
|             <el-form-item label="公司状态" prop="status"> | ||||
|               <el-select v-model="queryParams.status" clearable placeholder="请选择公司状态"> | ||||
|                 <el-option v-for="item in sys_normal_disable" :key="item.value" :label="item.label" :value="item.value" /> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <el-form-item> | ||||
|               <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> | ||||
| @ -48,35 +50,23 @@ | ||||
|         <el-table-column label="序号" type="index" width="60" align="center" /> | ||||
|         <el-table-column label="公司名称" align="center" prop="companyName" /> | ||||
|         <el-table-column label="公司状态" align="center" prop="status"> | ||||
|           <template #default="{ row }"> | ||||
|             <span | ||||
|               :style="{ | ||||
|                 color: row.status === 0 ? 'green' : 'red', | ||||
|                 backgroundColor: row.status === 0 ? '#E6F9E6' : '#FDE2E2', | ||||
|                 padding: '5px 10px', | ||||
|                 borderRadius: '5px', | ||||
|                 display: 'inline-block' | ||||
|               }" | ||||
|             > | ||||
|               {{ row.status === 0 ? '正常' : '不正常' }} | ||||
|             </span> | ||||
|           <template #default="scope"> | ||||
|             <dict-tag :options="sys_normal_disable" :value="scope.row.status" /> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="备注" align="center" prop="remark" /> | ||||
|         <el-table-column label="资质情况" align="center" prop="qualification" /> | ||||
|         <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | ||||
|           <template #default="scope"> | ||||
|             <el-tooltip content="修改" placement="top"> | ||||
|               <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['materials:company:edit']"></el-button> | ||||
|             </el-tooltip> | ||||
|             <el-tooltip content="删除" placement="top"> | ||||
|               <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['materials:company:remove']"></el-button> | ||||
|             </el-tooltip> | ||||
|             <el-space wrap> | ||||
|               <el-button link type="success" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['materials:company:edit']">修改 </el-button> | ||||
|               <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['materials:company:remove']">删除 </el-button> | ||||
|             </el-space> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|       </el-table> | ||||
|  | ||||
|       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
|       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.current" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
|     </el-card> | ||||
|     <!-- 添加或修改公司对话框 --> | ||||
|  | ||||
| @ -108,12 +98,12 @@ import { CompanyForm, CompanyQuery, CompanyVO } from '@/api/materials/company/ty | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
|  | ||||
| const { proxy } = getCurrentInstance() as ComponentInternalInstance; | ||||
| const { sys_normal_disable } = toRefs<any>(proxy?.useDict('sys_normal_disable')); | ||||
|  | ||||
| // 获取用户 store | ||||
| const userStore = useUserStoreHook(); | ||||
|  | ||||
| // 从 store 中获取项目列表和当前选中的项目 | ||||
| const projectList = computed(() => userStore.projects); | ||||
| const currentProject = computed(() => userStore.selectedProject); | ||||
| const companyList = ref<CompanyVO[]>([]); | ||||
| const buttonLoading = ref(false); | ||||
| @ -143,7 +133,7 @@ const initFormData: CompanyForm = { | ||||
| const data = reactive<PageData<CompanyForm, CompanyQuery>>({ | ||||
|   form: { ...initFormData }, | ||||
|   queryParams: { | ||||
|     pageNum: 1, | ||||
|     current: 1, | ||||
|     pageSize: 10, | ||||
|     companyName: undefined, | ||||
|     projectId: currentProject.value.id, | ||||
|  | ||||
| @ -0,0 +1,123 @@ | ||||
| <template> | ||||
|   <el-dialog title="添加材料出入库" v-model="visible" width="500px" append-to-body> | ||||
|     <el-form ref="formRef" :model="form" :rules="rules" label-width="120px"> | ||||
|       <el-form-item label="出入库状态" prop="outPut"> | ||||
|         <el-select v-model="form.outPut" clearable placeholder="请输入出入库状态"> | ||||
|           <el-option v-for="item in out_put_type" :key="item.value" :label="item.label" :value="item.value" /> | ||||
|         </el-select> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="材料数量" prop="number"> | ||||
|         <el-input-number v-model="form.number" placeholder="请输入预计使用数量" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="剩余库存数量" prop="residue"> | ||||
|         <el-input v-model="form.residue" placeholder="请输入剩余库存数量" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="出入库负责人" prop="operator"> | ||||
|         <el-input v-model="form.operator" placeholder="请输入出入库负责人" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item v-if="form.outPut === '1'" label="交接单位" prop="recipient"> | ||||
|         <el-input v-model="form.recipient" placeholder="请输入交接单位" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item v-if="form.outPut === '1'" label="领用人" prop="shipper"> | ||||
|         <el-input v-model="form.shipper" placeholder="请输入领用人" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="材料出入证明" prop="path"> | ||||
|         <el-input v-model="form.path" type="textarea" placeholder="材料出入证明" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="处理方式" prop="disposition"> | ||||
|         <el-input v-model="form.disposition" placeholder="请输入处理方式" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="备注" prop="remark"> | ||||
|         <el-input v-model="form.remark" placeholder="请输入备注" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="操作时间" prop="outPutTime"> | ||||
|         <el-date-picker clearable v-model="form.outPutTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择操作时间"> | ||||
|         </el-date-picker> | ||||
|       </el-form-item> | ||||
|     </el-form> | ||||
|     <template #footer> | ||||
|       <div class="dialog-footer"> | ||||
|         <el-button :loading="loading" type="primary" @click="submitForm">提 交</el-button> | ||||
|         <el-button @click="closeDialog">取 消</el-button> | ||||
|       </div> | ||||
|     </template> | ||||
|   </el-dialog> | ||||
| </template> | ||||
| <script setup lang="ts"> | ||||
| import { defineExpose, reactive, ref } from 'vue'; | ||||
| import { ElMessage } from 'element-plus'; | ||||
| import { addMaterialsInventory } from '@/api/materials/materialsInventory'; | ||||
| import { MaterialsInventoryForm } from '@/api/materials/materialsInventory/types'; | ||||
|  | ||||
| const { proxy } = getCurrentInstance() as ComponentInternalInstance; | ||||
| const { out_put_type } = toRefs<any>(proxy?.useDict('out_put_type')); | ||||
|  | ||||
| interface Props { | ||||
|   materialsId?: string | number; | ||||
|   projectId?: string | number; | ||||
| } | ||||
|  | ||||
| const props = defineProps<Props>(); | ||||
|  | ||||
| const visible = ref<boolean>(false); | ||||
| const loading = ref<boolean>(false); | ||||
|  | ||||
| // 定义表单数据,注意结构与校验规则需要与接口对应 | ||||
| const form = reactive<MaterialsInventoryForm>({ | ||||
|   materialsId: props.materialsId, | ||||
|   projectId: props.projectId, | ||||
|   outPut: '0', | ||||
|   number: 1, | ||||
|   outPutTime: '', | ||||
|   residue: '', | ||||
|   operator: '', | ||||
|   path: '', | ||||
|   disposition: '', | ||||
|   recipient: '', | ||||
|   shipper: '', | ||||
|   remark: '' | ||||
| }); | ||||
|  | ||||
| // 定义校验规则 | ||||
| const rules = reactive({ | ||||
|   outPut: [{ required: true, message: '请选择出入库状态', trigger: 'blur' }], | ||||
|   number: [{ required: true, message: '请输入材料数量', trigger: 'blur' }], | ||||
|   residue: [{ required: true, message: '请输入剩余材料数量', trigger: 'blur' }], | ||||
|   operator: [{ required: true, message: '请输入出入库负责人', trigger: 'blur' }], | ||||
|   outPutTime: [{ required: true, message: '请选择操作时间', trigger: 'blur' }] | ||||
| }); | ||||
|  | ||||
| const formRef = ref(); | ||||
|  | ||||
| const submitForm = () => { | ||||
|   formRef.value.validate(async (valid: boolean) => { | ||||
|     if (!valid) return; | ||||
|     loading.value = true; | ||||
|     try { | ||||
|       // 调用接口提交数据 | ||||
|       await addMaterialsInventory({ ...form, materialsId: props.materialsId }); | ||||
|       ElMessage.success('提交成功'); | ||||
|       closeDialog(); | ||||
|     } catch (error) { | ||||
|       ElMessage.error('提交失败'); | ||||
|     } finally { | ||||
|       loading.value = false; | ||||
|     } | ||||
|   }); | ||||
| }; | ||||
|  | ||||
| const closeDialog = () => { | ||||
|   visible.value = false; | ||||
|   // 重置表单数据 | ||||
|   formRef.value.resetFields(); | ||||
| }; | ||||
|  | ||||
| // 供外部调用的打开方法 | ||||
| const openDialog = () => { | ||||
|   visible.value = true; | ||||
| }; | ||||
|  | ||||
| defineExpose({ | ||||
|   openDialog | ||||
| }); | ||||
| </script> | ||||
| @ -0,0 +1,85 @@ | ||||
| <template> | ||||
|   <div> | ||||
|     <el-table v-if="materialsInventoryList.length !== 0" :data="materialsInventoryList"> | ||||
|       <el-table-column label="序号" type="index" width="60" align="center" /> | ||||
|       <el-table-column label="出入库" align="center" prop="outPut"> | ||||
|         <template #default="scope"> | ||||
|           <dict-tag :options="out_put_type" :value="scope.row.outPut" /> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|       <el-table-column label="材料数量" align="center" prop="number" /> | ||||
|       <el-table-column label="剩余库存数量" align="center" prop="residue" /> | ||||
|       <el-table-column label="出入库负责人" align="center" prop="operator" /> | ||||
|       <el-table-column label="交接单位" align="center" prop="recipient" /> | ||||
|       <el-table-column label="领用人" align="center" prop="shipper" /> | ||||
|       <el-table-column label="操作时间" align="center" prop="outPutTime" width="160" /> | ||||
|       <el-table-column label="备注" align="center" prop="remark" /> | ||||
|       <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | ||||
|         <template #default="scope"> | ||||
|           <el-tooltip content="删除" placement="top"> | ||||
|             <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['materials:materialsInventory:remove']"> | ||||
|               删除 | ||||
|             </el-button> | ||||
|           </el-tooltip> | ||||
|         </template> | ||||
|       </el-table-column> | ||||
|     </el-table> | ||||
|     <pagination | ||||
|       v-show="total > 0" | ||||
|       :total="total" | ||||
|       v-model:page="materialsSearchParams.current" | ||||
|       v-model:limit="materialsSearchParams.pageSize" | ||||
|       @pagination="getList" | ||||
|     /> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script setup lang="ts"> | ||||
| import { MaterialsInventoryQuery, MaterialsInventoryVO } from '@/api/materials/materialsInventory/types'; | ||||
| import { delMaterialsInventory, listMaterialsInventory } from '@/api/materials/materialsInventory'; | ||||
|  | ||||
| const { proxy } = getCurrentInstance() as ComponentInternalInstance; | ||||
| const { out_put_type } = toRefs<any>(proxy?.useDict('out_put_type')); | ||||
|  | ||||
| interface Props { | ||||
|   materialsId: string | number; | ||||
|   projectId: string | number; | ||||
| } | ||||
|  | ||||
| const props = defineProps<Props>(); | ||||
| const ids = ref<Array<string | number>>([]); | ||||
| const loading = ref(true); | ||||
| // 搜索条件 | ||||
| const materialsSearchParams = reactive<MaterialsInventoryQuery>({ | ||||
|   materialsId: props.materialsId, | ||||
|   projectId: props.projectId, | ||||
|   current: 1, | ||||
|   pageSize: 10, | ||||
|   sortField: 'createTime', | ||||
|   sortOrder: 'descend' | ||||
| }); | ||||
| const total = ref<number>(0); | ||||
|  | ||||
| const materialsInventoryList = ref<MaterialsInventoryVO[]>([]); | ||||
| /** 展开选中数据 */ | ||||
| const getList = async () => { | ||||
|   loading.value = true; | ||||
|   const res = await listMaterialsInventory({ ...materialsSearchParams }); | ||||
|   materialsInventoryList.value = res.data.records; | ||||
|   total.value = res.data.total; | ||||
|   loading.value = false; | ||||
| }; | ||||
|  | ||||
| /** 删除按钮操作 */ | ||||
| const handleDelete = async (row?: MaterialsInventoryVO) => { | ||||
|   const _ids = row?.id || ids.value; | ||||
|   await proxy?.$modal.confirm('是否确认删除材料出/入库编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false)); | ||||
|   await delMaterialsInventory(_ids); | ||||
|   proxy?.$modal.msgSuccess('删除成功'); | ||||
|   await getList(); | ||||
| }; | ||||
|  | ||||
| onMounted(() => { | ||||
|   getList(); | ||||
| }); | ||||
| </script> | ||||
| @ -3,10 +3,15 @@ | ||||
|     <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 ref="queryFormRef" :model="queryParams" :inline="true" label-width="auto"> | ||||
|             <el-form-item label="材料名称" prop="materialsName"> | ||||
|               <el-input v-model="queryParams.materialsName" placeholder="请输入材料名称" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="材料提供商" prop="companyId"> | ||||
|               <el-select v-model="queryParams.companyId" clearable placeholder="请选择材料提供商"> | ||||
|                 <el-option v-for="item in companyOptions" :key="item.id" :label="item.companyName" :value="item.id" /> | ||||
|               </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> | ||||
| @ -39,57 +44,60 @@ | ||||
|         </el-row> | ||||
|       </template> | ||||
|  | ||||
|       <el-table v-loading="loading" :data="materialsList" @selection-change="handleSelectionChange"> | ||||
|       <el-table | ||||
|         v-loading="loading" | ||||
|         :data="materialsList" | ||||
|         @selection-change="handleSelectionChange" | ||||
|         :row-key="getRowKey" | ||||
|         :expand-row-keys="expandedRowKeys" | ||||
|         @expand-change="handleExpandChange" | ||||
|       > | ||||
|         <el-table-column type="expand"> | ||||
|           <template #default=""> | ||||
|             <materials-inventory-table :materials-id="expandedRowKeys[0]" :project-id="currentProject.id" /> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <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="materialsName" /> | ||||
|         <el-table-column label="公司名称" align="center" prop="companyVo.companyName" /> | ||||
|         <el-table-column label="规格型号名称" align="center" prop="typeSpecificationName" /> | ||||
|         <el-table-column label="规格型号文件路径" align="center" prop="typeSpecificationUrl" /> | ||||
|         <el-table-column label="合格证编号名称" align="center" prop="certificateConformityName" /> | ||||
|         <el-table-column label="合格证编号文件路径" align="center" prop="certificateConformityUrl" /> | ||||
|         <el-table-column label="质量说明书编号" align="center" prop="qualityName" /> | ||||
|         <el-table-column label="质量说明书文件路径" align="center" prop="qualityUrl" /> | ||||
|         <el-table-column label="检验报告编号" align="center" prop="inspectionReportName" /> | ||||
|         <el-table-column label="检验报告文件路径" align="center" prop="inspectionReportUrl" /> | ||||
|         <el-table-column label="复试报告编号" align="center" prop="reexamineReportName" /> | ||||
|         <el-table-column label="复试报告文件路径" align="center" prop="reexamineReportUrl" /> | ||||
|         <el-table-column label="规格型号" align="center" prop="typeSpecificationName" /> | ||||
|         <!--        <el-table-column label="规格型号文件路径" align="center" prop="typeSpecificationUrl" /> | ||||
|                 <el-table-column label="合格证编号名称" align="center" prop="certificateConformityName" /> | ||||
|                 <el-table-column label="合格证编号文件路径" align="center" prop="certificateConformityUrl" /> | ||||
|                 <el-table-column label="质量说明书编号" align="center" prop="qualityName" /> | ||||
|                 <el-table-column label="质量说明书文件路径" align="center" prop="qualityUrl" /> | ||||
|                 <el-table-column label="检验报告编号" align="center" prop="inspectionReportName" /> | ||||
|                 <el-table-column label="检验报告文件路径" align="center" prop="inspectionReportUrl" /> | ||||
|                 <el-table-column label="复试报告编号" align="center" prop="reexamineReportName" /> | ||||
|                 <el-table-column label="复试报告文件路径" align="center" prop="reexamineReportUrl" />--> | ||||
|         <el-table-column label="使用部位" align="center" prop="usePart" /> | ||||
|         <el-table-column label="计量单位" align="center" prop="weightId" /> | ||||
|         <el-table-column label="备注" align="center" prop="remark" /> | ||||
|         <el-table-column label="计量单位" align="center" prop="weightId" /> | ||||
|         <el-table-column label="预计材料数量" align="center" prop="quantityCount" /> | ||||
|         <el-table-column label="状态" align="center" prop="status"> | ||||
|           <template #default="{ row }"> | ||||
|             <span | ||||
|               :style="{ | ||||
|                 color: row.status === 0 ? 'green' : 'red', | ||||
|                 backgroundColor: row.status === 0 ? '#E6F9E6' : '#FDE2E2', | ||||
|                 padding: '5px 10px', | ||||
|                 borderRadius: '5px', | ||||
|                 display: 'inline-block' | ||||
|               }" | ||||
|             > | ||||
|               {{ row.status === 0 ? '正常' : '异常' }} | ||||
|             </span> | ||||
|           <template #default="scope"> | ||||
|             <dict-tag :options="sys_normal_disable" :value="scope.row.status" /> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | ||||
|         <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="220"> | ||||
|           <template #default="scope"> | ||||
|             <el-tooltip content="修改" placement="top"> | ||||
|               <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['materials:materials:edit']"></el-button> | ||||
|             </el-tooltip> | ||||
|             <el-tooltip content="删除" placement="top"> | ||||
|               <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['materials:materials:remove']"></el-button> | ||||
|             </el-tooltip> | ||||
|             <el-space wrap> | ||||
|               <el-button link type="success" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['materials:materials:edit']"> 修改 </el-button> | ||||
|               <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['materials:materials:remove']"> | ||||
|                 删除 | ||||
|               </el-button> | ||||
|               <el-button link type="primary" icon="Plus" @click="handleAddMaterialsInventory(scope.row)"> 出入库 </el-button> | ||||
|             </el-space> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|       </el-table> | ||||
|  | ||||
|       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
|       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.current" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
|     </el-card> | ||||
|     <!-- 添加或修改材料名称对话框 --> | ||||
|     <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body> | ||||
|       <el-form ref="materialsFormRef" :model="form" :rules="rules" label-width="80px"> | ||||
|       <el-form ref="materialsFormRef" :model="form" :rules="rules" label-width="160px"> | ||||
|         <el-form-item label="材料名称" prop="materialsName"> | ||||
|           <el-input v-model="form.materialsName" placeholder="请输入材料名称" /> | ||||
|         </el-form-item> | ||||
| @ -132,12 +140,12 @@ | ||||
|         <el-form-item label="计量单位" prop="weightId"> | ||||
|           <el-input v-model="form.weightId" placeholder="请输入计量单位" /> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="备注" prop="remark"> | ||||
|           <el-input v-model="form.remark" placeholder="请输入备注" /> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="预计材料数量" prop="quantityCount"> | ||||
|           <el-input v-model="form.quantityCount" placeholder="请输入预计材料数量" /> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="备注" prop="remark"> | ||||
|           <el-input v-model="form.remark" placeholder="请输入备注" /> | ||||
|         </el-form-item> | ||||
|       </el-form> | ||||
|       <template #footer> | ||||
|         <div class="dialog-footer"> | ||||
| @ -146,6 +154,7 @@ | ||||
|         </div> | ||||
|       </template> | ||||
|     </el-dialog> | ||||
|     <materials-inventory-add-dialog :materials-id="currentMaterialsId" :project-id="currentProject.id" ref="dialogRef" /> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| @ -153,9 +162,11 @@ | ||||
| import { addMaterials, delMaterials, getMaterials, listMaterials, updateMaterials } from '@/api/materials/materials'; | ||||
| import { MaterialsForm, MaterialsQuery, MaterialsVO } from '@/api/materials/materials/types'; | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
| import MaterialsInventoryTable from '@/views/materials/materials/component/MaterialsInventoryTable.vue'; | ||||
| import MaterialsInventoryAddDialog from '@/views/materials/materials/component/MaterialsInventoryAddDialog.vue'; | ||||
|  | ||||
| const { proxy } = getCurrentInstance() as ComponentInternalInstance; | ||||
|  | ||||
| const { sys_normal_disable } = toRefs<any>(proxy?.useDict('sys_normal_disable')); | ||||
| // 获取用户 store | ||||
| const userStore = useUserStoreHook(); | ||||
| // 从 store 中获取项目列表和当前选中的项目 | ||||
| @ -202,7 +213,7 @@ const initFormData: MaterialsForm = { | ||||
| const data = reactive<PageData<MaterialsForm, MaterialsQuery>>({ | ||||
|   form: { ...initFormData }, | ||||
|   queryParams: { | ||||
|     pageNum: 1, | ||||
|     current: 1, | ||||
|     pageSize: 10, | ||||
|     materialsName: undefined, | ||||
|     companyId: undefined, | ||||
| @ -230,6 +241,7 @@ const data = reactive<PageData<MaterialsForm, MaterialsQuery>>({ | ||||
| }); | ||||
|  | ||||
| const { queryParams, form, rules } = toRefs(data); | ||||
| const companyOptions = ref([]); | ||||
|  | ||||
| /** 查询材料名称列表 */ | ||||
| const getList = async () => { | ||||
| @ -237,6 +249,14 @@ const getList = async () => { | ||||
|   const res = await listMaterials(queryParams.value); | ||||
|   materialsList.value = res.data.records; | ||||
|   total.value = res.data.total; | ||||
|   const companyMap = new Map(); | ||||
|   res.data.records.forEach((record) => { | ||||
|     const { id, companyName } = record.companyVo; | ||||
|     if (!companyMap.has(id)) { | ||||
|       companyMap.set(id, { id, companyName }); | ||||
|     } | ||||
|   }); | ||||
|   companyOptions.value = Array.from(companyMap.values()); | ||||
|   loading.value = false; | ||||
| }; | ||||
|  | ||||
| @ -254,7 +274,7 @@ const reset = () => { | ||||
|  | ||||
| /** 搜索按钮操作 */ | ||||
| const handleQuery = () => { | ||||
|   queryParams.value.pageNum = 1; | ||||
|   queryParams.value.current = 1; | ||||
|   getList(); | ||||
| }; | ||||
|  | ||||
| @ -271,6 +291,21 @@ const handleSelectionChange = (selection: MaterialsVO[]) => { | ||||
|   multiple.value = !selection.length; | ||||
| }; | ||||
|  | ||||
| // 存储当前展开行的 key 数组(只允许一个展开) | ||||
| const expandedRowKeys = ref([]); | ||||
| // row-key 函数:返回每一行的唯一标识 | ||||
| const getRowKey = (row: any) => row.id; | ||||
| /** 展开选中数据 */ | ||||
| const handleExpandChange = async (selection: MaterialsVO, expanded: any) => { | ||||
|   if (expanded) { | ||||
|     // 展开当前行时,将其他展开行关闭,只保留当前行 id | ||||
|     expandedRowKeys.value = [selection.id]; | ||||
|   } else { | ||||
|     // 收起当前行时,从 expandedRowKeys 中移除 | ||||
|     expandedRowKeys.value = expandedRowKeys.value.filter((key) => key !== selection.id); | ||||
|   } | ||||
| }; | ||||
|  | ||||
| /** 新增按钮操作 */ | ||||
| const handleAdd = () => { | ||||
|   reset(); | ||||
| @ -325,6 +360,13 @@ const handleExport = () => { | ||||
|   ); | ||||
| }; | ||||
|  | ||||
| const dialogRef = ref(); | ||||
| const currentMaterialsId = ref<number | string>(0); | ||||
| const handleAddMaterialsInventory = (row?: MaterialsVO) => { | ||||
|   currentMaterialsId.value = row.id ?? 0; | ||||
|   dialogRef.value.openDialog(); | ||||
| }; | ||||
|  | ||||
| onMounted(() => { | ||||
|   getList(); | ||||
| }); | ||||
|  | ||||
| @ -4,38 +4,11 @@ | ||||
|       <div v-show="showSearch" class="mb-[10px]"> | ||||
|         <el-card shadow="hover"> | ||||
|           <el-form ref="queryFormRef" :model="queryParams" :inline="true"> | ||||
|             <!-- <el-form-item label="出入库状态" prop="outPut"> | ||||
|               <el-input v-model="queryParams.outPut" placeholder="请输入出入库状态" clearable @keyup.enter="handleQuery" /> | ||||
|             <el-form-item label="材料名称" prop="materialsId"> | ||||
|               <el-select v-model="queryParams.materialsId" clearable placeholder="请选择材料名称"> | ||||
|                 <el-option v-for="item in materialsOptions" :key="item.id" :label="item.materialsName" :value="item.id" /> | ||||
|               </el-select> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="出/入库的数量" prop="number"> | ||||
|               <el-input v-model="queryParams.number" placeholder="请输入出/入库的数量" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="出/入库操作时间" prop="outPutTime"> | ||||
|               <el-date-picker clearable | ||||
|                 v-model="queryParams.outPutTime" | ||||
|                 type="date" | ||||
|                 value-format="YYYY-MM-DD" | ||||
|                 placeholder="请选择出/入库操作时间" | ||||
|               /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="剩余库存数量" prop="residue"> | ||||
|               <el-input v-model="queryParams.residue" placeholder="请输入剩余库存数量" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="操作人" prop="operator"> | ||||
|               <el-input v-model="queryParams.operator" placeholder="请输入操作人" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="材料出入证明" prop="path"> | ||||
|               <el-input v-model="queryParams.path" placeholder="请输入材料出入证明" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="处理方式" prop="disposition"> | ||||
|               <el-input v-model="queryParams.disposition" placeholder="请输入处理方式" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="交接单位" prop="recipient"> | ||||
|               <el-input v-model="queryParams.recipient" placeholder="请输入交接单位" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="领用人" prop="shipper"> | ||||
|               <el-input v-model="queryParams.shipper" 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> | ||||
| @ -49,27 +22,8 @@ | ||||
|       <template #header> | ||||
|         <el-row :gutter="10" class="mb8"> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['materials:materialsInventory:add']">新增 </el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['materials:materialsInventory:edit']" | ||||
|               >修改 | ||||
|             </el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button | ||||
|               type="danger" | ||||
|               plain | ||||
|               icon="Delete" | ||||
|               :disabled="multiple" | ||||
|               @click="handleDelete()" | ||||
|               v-hasPermi="['materials:materialsInventory:remove']" | ||||
|               >删除 | ||||
|             </el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['materials:materialsInventory:export']" | ||||
|               >导出 | ||||
|             <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['materials:materialsInventory:export']"> | ||||
|               导出 | ||||
|             </el-button> | ||||
|           </el-col> | ||||
|           <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> | ||||
| @ -78,61 +32,80 @@ | ||||
|  | ||||
|       <el-table v-loading="loading" :data="materialsInventoryList" @selection-change="handleSelectionChange"> | ||||
|         <el-table-column type="selection" width="55" align="center" /> | ||||
|         <!-- <el-table-column label="主键id" align="center" prop="id" v-if="true" /> --> | ||||
|         <el-table-column label="序号" type="index" width="60" align="center" /> | ||||
|         <!-- <el-table-column label="材料id" align="center" prop="materialsId" /> --> | ||||
|         <el-table-column label="材料名称" align="center" prop="materialsVo.materialsName" /> | ||||
|         <el-table-column label="出入库状态" align="center" prop="outPut" /> | ||||
|         <el-table-column label="出/入库的数量" align="center" prop="number" /> | ||||
|         <el-table-column label="出/入库操作时间" align="center" prop="outPutTime" width="180"> | ||||
|           <template #default="scope"> | ||||
|             <span>{{ parseTime(scope.row.outPutTime, '{y}-{m}-{d}') }}</span> | ||||
|           </template> | ||||
|         <el-table-column label="入库登记" align="center"> | ||||
|           <el-table-column label="数量" align="center" prop="number"> | ||||
|             <template #default="scope"> | ||||
|               <span v-if="scope.row.outPut === 0">{{ scope.row.number }}</span> | ||||
|               <span v-else></span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="签收人" align="center" prop="operator"> | ||||
|             <template #default="scope"> | ||||
|               <span v-if="scope.row.outPut === 0">{{ scope.row.operator }}</span> | ||||
|               <span v-else></span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="日期" align="center" prop="outPutTime" width="160"> | ||||
|             <template #default="scope"> | ||||
|               <span v-if="scope.row.outPut === 0">{{ parseTime(scope.row.outPutTime, '{y}年{m}月{d}日') }}</span> | ||||
|               <span v-else></span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="出库登记" align="center"> | ||||
|           <el-table-column label="交接单位" align="center" prop="recipient" /> | ||||
|           <el-table-column label="数量" align="center" prop="number"> | ||||
|             <template #default="scope"> | ||||
|               <span v-if="scope.row.outPut === 1">{{ scope.row.number }}</span> | ||||
|               <span v-else></span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="出库人" align="center" prop="operator"> | ||||
|             <template #default="scope"> | ||||
|               <span v-if="scope.row.outPut === 1">{{ scope.row.operator }}</span> | ||||
|               <span v-else></span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="领用人" align="center" prop="shipper" /> | ||||
|           <el-table-column label="日期" align="center" prop="outPutTime" width="160"> | ||||
|             <template #default="scope"> | ||||
|               <span v-if="scope.row.outPut === 1">{{ parseTime(scope.row.outPutTime, '{y}年{m}月{d}日') }}</span> | ||||
|               <span v-else></span> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="剩余处理" align="center"> | ||||
|           <el-table-column label="剩余量" align="center" prop="residue" /> | ||||
|           <el-table-column label="处理方式" align="center" prop="disposition" /> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="剩余库存数量" align="center" prop="residue" /> | ||||
|         <el-table-column label="操作人" align="center" prop="operator" /> | ||||
|         <el-table-column label="材料出入证明" align="center" prop="path" /> | ||||
|         <el-table-column label="处理方式" align="center" prop="disposition" /> | ||||
|         <el-table-column label="交接单位" align="center" prop="recipient" /> | ||||
|         <el-table-column label="领用人" align="center" prop="shipper" /> | ||||
|         <el-table-column label="备注" align="center" prop="remark" /> | ||||
|         <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | ||||
|           <template #default="scope"> | ||||
|             <el-tooltip content="修改" placement="top"> | ||||
|               <el-button | ||||
|                 link | ||||
|                 type="primary" | ||||
|                 icon="Edit" | ||||
|                 @click="handleUpdate(scope.row)" | ||||
|                 v-hasPermi="['materials:materialsInventory:edit']" | ||||
|               ></el-button> | ||||
|             </el-tooltip> | ||||
|             <el-tooltip content="删除" placement="top"> | ||||
|               <el-button | ||||
|                 link | ||||
|                 type="primary" | ||||
|                 icon="Delete" | ||||
|                 @click="handleDelete(scope.row)" | ||||
|                 v-hasPermi="['materials:materialsInventory:remove']" | ||||
|               ></el-button> | ||||
|             </el-tooltip> | ||||
|             <el-space wrap> | ||||
|               <el-button link type="success" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['materials:materialsInventory:edit']"> | ||||
|                 修改 | ||||
|               </el-button> | ||||
|               <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['materials:materialsInventory:remove']"> | ||||
|                 删除 | ||||
|               </el-button> | ||||
|             </el-space> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|       </el-table> | ||||
|  | ||||
|       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
|       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.current" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
|     </el-card> | ||||
|     <!-- 添加或修改材料出/入库对话框 --> | ||||
|     <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body> | ||||
|       <el-form ref="materialsInventoryFormRef" :model="form" :rules="rules" label-width="80px"> | ||||
|       <el-form ref="materialsInventoryFormRef" :model="form" :rules="rules" label-width="120px"> | ||||
|         <el-form-item label="材料名称" prop="materialsVo.materialsName"> | ||||
|           <el-input v-model="form.materialsVo.materialsName" placeholder="请输入材料名称" /> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="项目id " prop="projectId"> | ||||
|           <el-input v-model="form.projectId" placeholder="请输入项目id" /> | ||||
|           <el-input v-model="form.materialsVo.materialsName" placeholder="请输入材料名称" disabled /> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="出入库状态" prop="outPut"> | ||||
|           <el-input v-model="form.outPut" placeholder="请输入出入库状态" /> | ||||
|           <el-select v-model="form.outPut" clearable placeholder="请输入出入库状态"> | ||||
|             <el-option v-for="item in out_put_type" :key="item.value" :label="item.label" :value="item.value" /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="出/入库的数量" prop="number"> | ||||
|           <el-input v-model="form.number" placeholder="请输入出/入库的数量" /> | ||||
| @ -185,6 +158,7 @@ import { MaterialsInventoryForm, MaterialsInventoryQuery, MaterialsInventoryVO } | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
|  | ||||
| const { proxy } = getCurrentInstance() as ComponentInternalInstance; | ||||
| const { out_put_type } = toRefs<any>(proxy?.useDict('out_put_type')); | ||||
|  | ||||
| // 获取用户 store | ||||
| const userStore = useUserStoreHook(); | ||||
| @ -230,7 +204,7 @@ const initFormData: MaterialsInventoryForm = { | ||||
| const data = reactive<PageData<MaterialsInventoryForm, MaterialsInventoryQuery>>({ | ||||
|   form: { ...initFormData }, | ||||
|   queryParams: { | ||||
|     pageNum: 1, | ||||
|     current: 1, | ||||
|     pageSize: 10, | ||||
|     materialsId: undefined, | ||||
|     projectId: currentProject.value.id, | ||||
| @ -257,6 +231,7 @@ const data = reactive<PageData<MaterialsInventoryForm, MaterialsInventoryQuery>> | ||||
| }); | ||||
|  | ||||
| const { queryParams, form, rules } = toRefs(data); | ||||
| const materialsOptions = ref([]); | ||||
|  | ||||
| /** 查询材料出/入库列表 */ | ||||
| const getList = async () => { | ||||
| @ -264,6 +239,14 @@ const getList = async () => { | ||||
|   const res = await listMaterialsInventory(queryParams.value); | ||||
|   materialsInventoryList.value = res.data.records; | ||||
|   total.value = res.data.total; | ||||
|   const materialsMap = new Map(); | ||||
|   res.data.records.forEach((record) => { | ||||
|     const { id, materialsName } = record.materialsVo; | ||||
|     if (!materialsMap.has(id)) { | ||||
|       materialsMap.set(id, { id, materialsName }); | ||||
|     } | ||||
|   }); | ||||
|   materialsOptions.value = Array.from(materialsMap.values()); | ||||
|   loading.value = false; | ||||
| }; | ||||
|  | ||||
| @ -281,7 +264,7 @@ const reset = () => { | ||||
|  | ||||
| /** 搜索按钮操作 */ | ||||
| const handleQuery = () => { | ||||
|   queryParams.value.pageNum = 1; | ||||
|   queryParams.value.current = 1; | ||||
|   getList(); | ||||
| }; | ||||
|  | ||||
|  | ||||
| @ -7,14 +7,14 @@ | ||||
|             <el-form-item label="人员姓名" prop="userName"> | ||||
|               <el-input v-model="queryParams.userName" placeholder="请输入人员姓名" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="分包公司id" prop="contractorId"> | ||||
|               <el-input v-model="queryParams.contractorId" placeholder="请输入分包公司id" clearable @keyup.enter="handleQuery" /> | ||||
|             <el-form-item label="分包公司" prop="contractorId"> | ||||
|               <el-input v-model="queryParams.contractorId" placeholder="请输入分包公司" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="工种(字典type_of_work)" prop="typeOfWork"> | ||||
|               <el-input v-model="queryParams.typeOfWork" placeholder="请输入工种(字典type_of_work)" clearable @keyup.enter="handleQuery" /> | ||||
|             <el-form-item label="工种" prop="typeOfWork"> | ||||
|               <el-input v-model="queryParams.typeOfWork" placeholder="请输入工种" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="打卡(0启用打卡 1禁止打卡)" prop="clock"> | ||||
|               <el-input v-model="queryParams.clock" placeholder="请输入打卡(0启用打卡 1禁止打卡)" clearable @keyup.enter="handleQuery" /> | ||||
|             <el-form-item label="打卡" prop="clock"> | ||||
|               <el-input v-model="queryParams.clock" placeholder="请输入打卡" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item> | ||||
|               <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> | ||||
| @ -32,13 +32,20 @@ | ||||
|             <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['project:constructionUser:add']">新增 </el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['project:constructionUser:edit']" | ||||
|               >修改 | ||||
|             <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['project:constructionUser:edit']"> | ||||
|               修改 | ||||
|             </el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['project:constructionUser:remove']" | ||||
|               >删除 | ||||
|             <el-button | ||||
|               type="danger" | ||||
|               plain | ||||
|               icon="Delete" | ||||
|               :disabled="multiple" | ||||
|               @click="handleDelete()" | ||||
|               v-hasPermi="['project:constructionUser:remove']" | ||||
|             > | ||||
|               删除 | ||||
|             </el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
| @ -52,19 +59,31 @@ | ||||
|         <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="userName" /> | ||||
|         <el-table-column label="分包公司id" align="center" prop="contractorId" /> | ||||
|         <el-table-column label="分包公司" align="center"> | ||||
|           <template #default="scope"> | ||||
|             <div>{{ scope.row.ContractorVO.name }}</div> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="班组id" align="center" prop="teamId" /> | ||||
|         <el-table-column label="状态" align="center" prop="status" /> | ||||
|         <el-table-column label="联系电话" align="center" prop="phone" /> | ||||
|         <el-table-column label="0:保密 1:男 2女" align="center" prop="sex" /> | ||||
|         <el-table-column label="性别" align="center" prop="sex"> | ||||
|           <template #default="scope"> | ||||
|             <dict-tag :options="user_sex_type" :value="scope.row.sex" /> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="民族" align="center" prop="nation" /> | ||||
|         <el-table-column label="身份证号码" align="center" prop="sfzNumber" /> | ||||
|         <el-table-column label="工种(字典type_of_work)" align="center" prop="typeOfWork"> | ||||
|         <el-table-column label="工种" align="center" prop="typeOfWork"> | ||||
|           <template #default="scope"> | ||||
|             <dict-tag :options="type_of_work" :value="scope.row.typeOfWork" /> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="打卡(0启用打卡 1禁止打卡)" align="center" prop="clock" /> | ||||
|         <el-table-column label="打卡状态" align="center" prop="clock"> | ||||
|           <template #default="scope"> | ||||
|             <dict-tag :options="user_clock_type" :value="scope.row.clock" /> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="入场时间" align="center" prop="entryDate" /> | ||||
|         <el-table-column label="离场时间" align="center" prop="leaveDate" /> | ||||
|         <el-table-column label="薪水" align="center" prop="salary" /> | ||||
| @ -91,7 +110,7 @@ | ||||
|     </el-card> | ||||
|     <!-- 添加或修改施工人员对话框 --> | ||||
|     <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body> | ||||
|       <el-form ref="constructionUserFormRef" :model="form" :rules="rules" label-width="80px"> | ||||
|       <el-form ref="constructionUserFormRef" :model="form" :rules="rules" label-width="100px"> | ||||
|         <el-form-item label="微信id" prop="openid"> | ||||
|           <el-input v-model="form.openid" placeholder="请输入微信id" /> | ||||
|         </el-form-item> | ||||
| @ -191,6 +210,7 @@ import { ConstructionUserForm, ConstructionUserQuery, ConstructionUserVO } from | ||||
| import { useUserStoreHook } from '@/store/modules/user'; | ||||
|  | ||||
| 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')); | ||||
|  | ||||
| // 获取用户 store | ||||
| const userStore = useUserStoreHook(); | ||||
|  | ||||
| @ -7,7 +7,7 @@ | ||||
|             <el-form-item label="公司名称" prop="name"> | ||||
|               <el-input v-model="queryParams.name" placeholder="请输入公司名称" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="负责人" prop="principal"> | ||||
|             <!--<el-form-item label="负责人" prop="principal"> | ||||
|               <el-input v-model="queryParams.principal" placeholder="请输入负责人" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="负责人联系电话" prop="principalPhone"> | ||||
| @ -18,7 +18,7 @@ | ||||
|             </el-form-item> | ||||
|             <el-form-item label="管理人联系电话" prop="custodianPhone"> | ||||
|               <el-input v-model="queryParams.custodianPhone" placeholder="请输入管理人联系电话" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             </el-form-item>--> | ||||
|             <el-form-item> | ||||
|               <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> | ||||
|               <el-button icon="Refresh" @click="resetQuery">重置</el-button> | ||||
|  | ||||
| @ -10,51 +10,6 @@ | ||||
|             <el-form-item label="项目简称" prop="shortName"> | ||||
|               <el-input v-model="queryParams.shortName" placeholder="请输入项目简称" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <!-- <el-form-item label="父项目id" prop="pId"> | ||||
|               <el-input v-model="queryParams.pId" placeholder="请输入父项目id" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="项目图片" prop="picUrl"> | ||||
|               <el-input v-model="queryParams.picUrl" placeholder="请输入项目图片" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="删除时间" prop="deletedAt"> | ||||
|               <el-date-picker clearable v-model="queryParams.deletedAt" type="date" value-format="YYYY-MM-DD" placeholder="请选择删除时间" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="项目地址" prop="projectSite"> | ||||
|               <el-input v-model="queryParams.projectSite" placeholder="请输入项目地址" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="负责人" prop="principal"> | ||||
|               <el-input v-model="queryParams.principal" placeholder="请输入负责人" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="负责人电话" prop="principalPhone"> | ||||
|               <el-input v-model="queryParams.principalPhone" placeholder="请输入负责人电话" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="实际容量" prop="actual"> | ||||
|               <el-input v-model="queryParams.actual" placeholder="请输入实际容量" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="计划容量" prop="plan"> | ||||
|               <el-input v-model="queryParams.plan" placeholder="请输入计划容量" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="开工时间" prop="onStreamTime"> | ||||
|               <el-input v-model="queryParams.onStreamTime" placeholder="请输入开工时间" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="打卡范围" prop="punchRange"> | ||||
|               <el-input v-model="queryParams.punchRange" placeholder="请输入打卡范围" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="设计总量" prop="designTotal"> | ||||
|               <el-input v-model="queryParams.designTotal" placeholder="请输入设计总量" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="安全协议书" prop="securityAgreement"> | ||||
|               <el-input v-model="queryParams.securityAgreement" placeholder="请输入安全协议书" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="排序字段" prop="sort"> | ||||
|               <el-input v-model="queryParams.sort" placeholder="请输入排序字段" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="显示隐藏" prop="showHidden"> | ||||
|               <el-input v-model="queryParams.showHidden" placeholder="请输入显示隐藏" clearable @keyup.enter="handleQuery" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="是否删除" prop="isDelete"> | ||||
|               <el-input v-model="queryParams.isDelete" 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> | ||||
| @ -93,16 +48,18 @@ | ||||
|         <el-table-column label="项目名称" align="center" prop="projectName" /> | ||||
|         <el-table-column label="项目简称" align="center" prop="shortName" /> | ||||
|         <!-- <el-table-column label="父项目id" align="center" prop="pId" /> --> | ||||
|         <el-table-column label="状态" align="center" prop="status" /> | ||||
|         <el-table-column label="项目图片" align="center" prop="picUrl" /> | ||||
|         <el-table-column label="状态" align="center" prop="status"> | ||||
|           <template #default="scope"> | ||||
|             <dict-tag :options="sys_normal_disable" :value="scope.row.status" /> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="备注" align="center" prop="remark" /> | ||||
|         <el-table-column label="项目类型" align="center" prop="type" /> | ||||
|         <!-- <el-table-column label="项目类型" align="center" prop="isType" /> --> | ||||
|         <!-- <el-table-column label="删除时间" align="center" prop="deletedAt" width="180"> | ||||
|         <el-table-column label="项目类别" align="center" prop="isType"> | ||||
|           <template #default="scope"> | ||||
|             <span>{{ parseTime(scope.row.deletedAt, '{y}-{m}-{d}') }}</span> | ||||
|             <dict-tag :options="project_category_type" :value="scope.row.isType" /> | ||||
|           </template> | ||||
|         </el-table-column> --> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="项目地址" align="center" prop="projectSite" /> | ||||
|         <el-table-column label="负责人" align="center" prop="principal" /> | ||||
|         <el-table-column label="负责人电话" align="center" prop="principalPhone" /> | ||||
| @ -203,6 +160,7 @@ import { listProject, getProject, delProject, addProject, updateProject } from ' | ||||
| import { ProjectVO, ProjectQuery, ProjectForm } from '@/api/project/project/types'; | ||||
|  | ||||
| const { proxy } = getCurrentInstance() as ComponentInternalInstance; | ||||
| const { sys_normal_disable, project_category_type } = toRefs<any>(proxy?.useDict('sys_normal_disable', 'project_category_type')); | ||||
|  | ||||
| const projectList = ref<ProjectVO[]>([]); | ||||
| const buttonLoading = ref(false); | ||||
| @ -215,7 +173,6 @@ const total = ref(0); | ||||
|  | ||||
| const queryFormRef = ref<ElFormInstance>(); | ||||
| const projectFormRef = ref<ElFormInstance>(); | ||||
|  | ||||
| const dialog = reactive<DialogOption>({ | ||||
|   visible: false, | ||||
|   title: '' | ||||
| @ -273,12 +230,10 @@ const data = reactive<PageData<ProjectForm, ProjectQuery>>({ | ||||
|     params: {} | ||||
|   }, | ||||
|   rules: { | ||||
|     id: [{ required: true, message: '不能为空', trigger: 'blur' }], | ||||
|     punchRange: [{ required: true, message: '打卡范围不能为空', trigger: 'blur' }], | ||||
|     designTotal: [{ required: true, message: '设计总量不能为空', trigger: 'blur' }], | ||||
|     sort: [{ required: true, message: '排序字段不能为空', trigger: 'blur' }], | ||||
|     showHidden: [{ required: true, message: '显示隐藏不能为空', trigger: 'blur' }], | ||||
|     isDelete: [{ required: true, message: '是否删除不能为空', trigger: 'blur' }] | ||||
|     projectName: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }], | ||||
|     shortName: [{ required: true, message: '项目简称不能为空', trigger: 'blur' }], | ||||
|     projectSite: [{ required: true, message: '项目地址不能为空', trigger: 'blur' }] | ||||
|   } | ||||
| }); | ||||
|  | ||||
| @ -289,7 +244,7 @@ const getList = async () => { | ||||
|   loading.value = true; | ||||
|   const res = await listProject(queryParams.value); | ||||
|   projectList.value = res.data.records; | ||||
|   total.value = res.total; | ||||
|   total.value = res.data.total; | ||||
|   loading.value = false; | ||||
| }; | ||||
| /** 取消按钮 */ | ||||
|  | ||||
		Reference in New Issue
	
	Block a user