From 2d561150b91a9789d31678af14dd4840bbb56576 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期三, 29 三月 2023 16:37:27 +0800 Subject: [PATCH] 设备、场所、部门接口 --- src/api/basic/room/index.ts | 7 + src/views/system/role/index.vue | 12 src/api/basic/equipement/index.ts | 15 ++ src/assets/menu/companyLogo.png | 0 src/api/systemManage/department/index.ts | 10 src/views/basic/equipment/components/equipmentDialog.vue | 75 ++++++++++ src/views/system/department/component/deptDialog.vue | 69 +++++---- src/views/basic/room/components/roomDialog.vue | 66 +++++++++ src/views/basic/equipment/index.vue | 30 ++++ src/views/system/department/index.vue | 29 ++-- src/views/basic/room/index.ts | 12 + src/views/basic/equipment/index.ts | 20 ++ src/views/system/user/index.vue | 12 src/views/basic/room/index.vue | 35 ++++ 14 files changed, 323 insertions(+), 69 deletions(-) diff --git a/src/api/basic/equipement/index.ts b/src/api/basic/equipement/index.ts index b8a18de..8c4d524 100644 --- a/src/api/basic/equipement/index.ts +++ b/src/api/basic/equipement/index.ts @@ -10,6 +10,14 @@ }); }, + // addEquipment: (params: object) => { + // return request({ + // url: import.meta.env.VITE_API_URL + '/basic/insert/insertDevice', + // method: 'post', + // data: params + // }); + // }, + addEquipment: (params: object) => { return request({ url: import.meta.env.VITE_API_URL + '/basic/insert/insertDevice', @@ -40,5 +48,12 @@ method: 'get', }); }, + + getAllType: () => { + return request({ + url: import.meta.env.VITE_API_URL + '/basic/select/listDeviceType', + method: 'get', + }); + }, }; } diff --git a/src/api/basic/room/index.ts b/src/api/basic/room/index.ts index 0e6f055..034b54d 100644 --- a/src/api/basic/room/index.ts +++ b/src/api/basic/room/index.ts @@ -41,5 +41,12 @@ }); }, + getAllType: () => { + return request({ + url: import.meta.env.VITE_API_URL + '/basic/select/listSiteType', + method: 'get', + }); + }, + }; } diff --git a/src/api/systemManage/department/index.ts b/src/api/systemManage/department/index.ts index fb22c65..2597f00 100644 --- a/src/api/systemManage/department/index.ts +++ b/src/api/systemManage/department/index.ts @@ -5,14 +5,14 @@ // v2 getDepartmentList: () => { return request({ - url: import.meta.env.VITE_API_URL + `/department/list`, - method: 'post' + url: import.meta.env.VITE_API_URL + `/account/department/list`, + method: 'get' }); }, // v2 addDepartment: (data: object) => { return request({ - url: import.meta.env.VITE_API_URL + `/department/add`, + url: import.meta.env.VITE_API_URL + `/account/department/save`, method: 'post', data: data }); @@ -20,7 +20,7 @@ // v2 modDepartment: (data: object) => { return request({ - url: import.meta.env.VITE_API_URL + `/department/mod`, + url: import.meta.env.VITE_API_URL + `/account/department/update`, method: 'post', data: data }); @@ -28,7 +28,7 @@ // v1 deleteDepartment: (value?: object) => { return request({ - url: import.meta.env.VITE_API_URL + `/department/del`, + url: import.meta.env.VITE_API_URL + `/account/department/delete`, method: 'post', data: value }); diff --git a/src/assets/menu/companyLogo.png b/src/assets/menu/companyLogo.png index 0f9f2d1..46b0568 100644 --- a/src/assets/menu/companyLogo.png +++ b/src/assets/menu/companyLogo.png Binary files differ diff --git a/src/views/basic/equipment/components/equipmentDialog.vue b/src/views/basic/equipment/components/equipmentDialog.vue index 632f0b9..369d347 100644 --- a/src/views/basic/equipment/components/equipmentDialog.vue +++ b/src/views/basic/equipment/components/equipmentDialog.vue @@ -14,6 +14,18 @@ </el-form-item> </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="设备类型" prop="deviceTypeId"> + <el-select v-model="equipmentDialogState.equipmentForm.deviceTypeId" placeholder="设备类型" clearable class="input-length"> + <el-option v-for="item in equipmentTypeList" :key="item.id" :label="item.deviceType" :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="设备型号" prop="deviceDesc"> + <el-input v-model="equipmentDialogState.equipmentForm.deviceDesc" placeholder="设备型号" clearable class="input-length"></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> <el-form-item label="设备功率" prop="devicePower"> <el-input v-model="equipmentDialogState.equipmentForm.devicePower" placeholder="设备功率" clearable class="input-length"></el-input> </el-form-item> @@ -33,9 +45,39 @@ </el-form-item> </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="设备状态" prop="deviceStatus"> + <el-select v-model="equipmentDialogState.equipmentForm.deviceStatus" placeholder="设备状态" clearable class="input-length"> + <el-option :key="1" label="完好" :value="1"></el-option> + <el-option :key="2" label="异常" :value="2"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> <el-form-item label="安全防护"> <el-input type="textarea" :rows="3" v-model="equipmentDialogState.equipmentForm.safeProtect" placeholder="安全防护" clearable class="input-length"></el-input> </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="购入时间" prop="buyTime"> + <el-date-picker + v-model="equipmentDialogState.equipmentForm.buyTime" + format="YYYY-MM-DD" + value-format="YYYY-MM-DD 00:00:00" + type="dateTime" + placeholder="购入时间" + /> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="校准时间" prop="adjustTime"> + <el-date-picker + v-model="equipmentDialogState.equipmentForm.adjustTime" + format="YYYY-MM-DD" + value-format="YYYY-MM-DD 00:00:00" + type="dateTime" + placeholder="校准时间" + /> + </el-form-item> </el-col> </el-row> </el-form> @@ -50,7 +92,7 @@ </template> <script setup lang="ts"> -import { reactive, ref } from "vue"; +import { defineProps, reactive, ref } from "vue"; import {useMenuApi} from "/@/api/systemManage/menu"; import {ElMessage} from "element-plus"; import {equipmentApi} from "/@/api/basic/equipement"; @@ -66,13 +108,24 @@ deviceName: '', devicePower: '', deviceUnit: null, + specialDevice: null, safeProtect: '', + deviceTypeId: null, + deviceDesc: '', + deviceStatus: null, + buyTime: '', + adjustTime: '' }, equipmentFormRules: { deviceCode: [{ required: true, message: '请填写设备编号', trigger: 'blur' }], deviceName: [{ required: true, message: '请填写设备名称', trigger: 'blur' }], devicePower: [{ required: true, message: '请填写设备功率', trigger: 'blur' }], - deviceUnit: [{ required: true, message: '请选择计量单位', trigger: 'change' }] + deviceUnit: [{ required: true, message: '请选择计量单位', trigger: 'change' }], + deviceTypeId: [{ required: true, message: '请填写设备类型ID', trigger: 'blur' }], + deviceDesc: [{ required: true, message: '请填写设备型号', trigger: 'blur' }], + deviceStatus: [{ required: true, message: '请选择设备状态', trigger: 'blur' }], + buyTime: [{ required: true, message: '请选择购入时间', trigger: 'blur' }], + adjustTime: [{ required: true, message: '请选择校准时间', trigger: 'blur' }] }, specialDeviceList: [], deviceUnitList: [ @@ -92,12 +145,17 @@ if(title === '新增'){ equipmentDialogState.title = '新增'; equipmentDialogState.equipmentForm = { - id: null, deviceCode: '', deviceName: '', devicePower: '', deviceUnit: null, + specialDevice: null, safeProtect: '', + deviceTypeId: null, + deviceDesc: '', + deviceStatus: null, + buyTime: '', + adjustTime: '' }; }else{ equipmentDialogState.title = '编辑' @@ -107,7 +165,13 @@ deviceName: value.deviceName, devicePower: value.devicePower, deviceUnit: value.deviceUnit, + specialDevice: value.specialDevice, safeProtect: value.safeProtect, + deviceTypeId:value.deviceTypeId, + deviceDesc: value.deviceDesc, + deviceStatus: value.deviceStatus, + buyTime: value.buyTime, + adjustTime: value.adjustTime }; } }; @@ -131,6 +195,7 @@ }); } }else{ + console.log(equipmentDialogState.equipmentForm,'修改') let res = await equipmentApi().modEquipment(equipmentDialogState.equipmentForm) if(res.data.code === 100){ emit('refresh') @@ -157,6 +222,10 @@ const emit = defineEmits(['refresh']) +defineProps({ + equipmentTypeList: Array +}) + defineExpose({ showEquipmentDialog }) diff --git a/src/views/basic/equipment/index.ts b/src/views/basic/equipment/index.ts index 27483e9..c708fa3 100644 --- a/src/views/basic/equipment/index.ts +++ b/src/views/basic/equipment/index.ts @@ -1,5 +1,6 @@ declare interface EquipmentStateType { equipmentData: Array<EquipmentType> + equipmentTypeList: Array<deviceType> searchQuery: { pageIndex: number, pageSize: number, @@ -19,24 +20,39 @@ deviceName: string, devicePower: string, deviceUnit: number | null, + specialDevice: number | null, safeProtect: string, + deviceTypeId: number | null, + deviceDesc: string, + deviceStatus: number | null, + buyTime: string, + adjustTime: string } declare interface Type { id: number, name: string, } - +declare interface deviceType { + id: number, + deviceType: string, +} declare interface EquipmentDialogType { title: string, equipmentDialogVisible: boolean, equipmentForm: { - id: number | null, + id?: number | null, deviceCode: string, deviceName: string, devicePower: string, deviceUnit: number | null, + specialDevice: number | null, safeProtect: string, + deviceTypeId: number | null, + deviceDesc: string, + deviceStatus: number | null, + buyTime: string, + adjustTime: string }, equipmentFormRules: { diff --git a/src/views/basic/equipment/index.vue b/src/views/basic/equipment/index.vue index b71888d..f0c84a2 100644 --- a/src/views/basic/equipment/index.vue +++ b/src/views/basic/equipment/index.vue @@ -40,16 +40,33 @@ <el-table ref="multipleTableRef" :data="equipmentState.equipmentData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }"> <el-table-column prop="deviceCode" label="设备编号"/> <el-table-column prop="deviceName" label="设备名称" /> + <el-table-column prop="deviceTypeId" label="设备类型" show-overflow-tooltip> + <template #default="scope"> + <span>{{equipmentState.equipmentTypeList.find(item =>item.id === scope.row.deviceTypeId)?.deviceType}}</span> + </template> + </el-table-column> + <el-table-column prop="deviceDesc" label="设备型号" /> <el-table-column prop="devicePower" label="设备功率"> + <template #default="scope"> + <span>{{scope.row.devicePower}}</span> + </template> + </el-table-column> + <el-table-column prop="deviceStatus" label="设备状态"> <template #default="scope"> - <span>{{`${scope.row.devicePower}${equipmentState.deviceUnitList.find(item =>item.id === scope.row.deviceUnit)?.name || ''}`}}</span> + <span>{{scope.row.deviceStatus == 1?'完好':'异常'}}</span> </template> + </el-table-column> + <el-table-column prop="deviceUnit" label="计量单位" show-overflow-tooltip> + <template #default="scope"> + <span>{{`${equipmentState.deviceUnitList.find(item =>item.id === scope.row.deviceUnit)?.name}`}}</span> + </template> </el-table-column> <el-table-column prop="specialDevice" label="是否特殊装备" show-overflow-tooltip> <template #default="scope"> <span>{{`${equipmentState.specialDeviceList.find(item =>item.id === scope.row.specialDevice)?.name}`}}</span> </template> </el-table-column> + <el-table-column prop="safeProtect" label="安全防护"/> <el-table-column prop="createTime" label="创建时间" show-overflow-tooltip></el-table-column> <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> <el-table-column prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column> @@ -67,7 +84,7 @@ </div> </div> </div> - <equipment-dialog ref="equipmentDialogRef" @refresh="getEquipmentData"></equipment-dialog> + <equipment-dialog ref="equipmentDialogRef" @refresh="getEquipmentData" :equipmentTypeList="equipmentState.equipmentTypeList"></equipment-dialog> </div> </template> @@ -83,6 +100,7 @@ const equipmentState = reactive<EquipmentStateType>({ equipmentData: [], + equipmentTypeList: [], searchQuery: { pageIndex: 1, pageSize: 10, @@ -102,6 +120,13 @@ {id:3, name: '件'} ] }) + +const getAllType = async ()=>{ + const res = await equipmentApi().getAllType(); + if(res.data.code === 100){ + equipmentState.equipmentTypeList = res.data.data + } +} const getEquipmentData = async () => { let res = await equipmentApi().getEquipmentByList(equipmentState.searchQuery); @@ -169,6 +194,7 @@ onMounted(() => { getEquipmentData() + getAllType() }) </script> diff --git a/src/views/basic/room/components/roomDialog.vue b/src/views/basic/room/components/roomDialog.vue index ee58e6c..bfa5291 100644 --- a/src/views/basic/room/components/roomDialog.vue +++ b/src/views/basic/room/components/roomDialog.vue @@ -4,7 +4,7 @@ <el-form ref="roomFormRef" :rules="roomDialogState.roomFormRules" :model="roomDialogState.roomForm" size="default" label-width="120px"> <el-row :gutter="35"> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="场所名称" prop="siteName"> + <el-form-item label="实验室名称" prop="siteName"> <el-input v-model="roomDialogState.roomForm.siteName" placeholder="场所名称" clearable class="input-length"></el-input> </el-form-item> </el-col> @@ -18,6 +18,43 @@ <el-input v-model="roomDialogState.roomForm.room" placeholder="实验室所在房间" clearable class="input-length"></el-input> </el-form-item> </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="场所责任人" prop="siteLiabilityPersonId"> + <el-select v-model="roomDialogState.roomForm.siteLiabilityPersonId" placeholder="场所责任人" clearable class="input-length"> + <el-option v-for="item in memberList" :key="item.id" :label="item.personName" :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="场所安全员" prop="safeLiabilityPersonId"> + <el-select v-model="roomDialogState.roomForm.safeLiabilityPersonId" placeholder="场所安全员" clearable class="input-length"> + <el-option v-for="item in memberList" :key="item.id" :label="item.personName" :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="有无消防设施" prop="fireFacilities"> + <el-select v-model="roomDialogState.roomForm.fireFacilities" placeholder="有无消防设施" clearable class="input-length"> + <el-option :key="1" label="有" :value="1"></el-option> + <el-option :key="2" label="无" :value="2"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="有无隔断" prop="partitionStatus"> + <el-select v-model="roomDialogState.roomForm.partitionStatus" placeholder="有无隔断" clearable class="input-length"> + <el-option :key="1" label="有" :value="1"></el-option> + <el-option :key="2" label="无" :value="2"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="场所性质" prop="siteTypeId"> + <el-select v-model="roomDialogState.roomForm.siteTypeId" placeholder="场所性质" clearable class="input-length"> + <el-option v-for="item in typeList" :key="item.id" :label="item.siteType" :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> </el-row> </el-form> <template #footer> @@ -31,7 +68,7 @@ </template> <script setup lang="ts"> -import { reactive, ref } from "vue"; +import { reactive, ref, defineProps} from "vue"; import {ElMessage} from "element-plus"; import {roomApi} from "/@/api/basic/room"; @@ -44,11 +81,21 @@ siteName: '', floor: '', room: '', + siteLiabilityPersonId: null, + safeLiabilityPersonId: null, + fireFacilities: null, + partitionStatus: null, + siteTypeId: null }, roomFormRules: { siteName: [{ required: true, message: '请填写实验室名称', trigger: 'blur' }], floor: [{ required: true, message: '请填写楼名称', trigger: 'blur' }], room: [{ required: true, message: '请填写房间', trigger: 'blur' }], + siteLiabilityPersonId: [{ required: true, message: '请选择场所责任人', trigger: 'blur' }], + safeLiabilityPersonId: [{ required: true, message: '请选择场所安全员', trigger: 'blur' }], + fireFacilities: [{ required: true, message: '请选择有无消防设施', trigger: 'blur' }], + partitionStatus: [{ required: true, message: '请选择有无隔断', trigger: 'blur' }], + siteTypeId: [{ required: true, message: '请选择场所性质', trigger: 'blur' }] }, specialDeviceList: [], deviceUnitList: [ @@ -71,6 +118,11 @@ siteName: '', floor: '', room: '', + siteLiabilityPersonId: null, + safeLiabilityPersonId: null, + fireFacilities: null, + partitionStatus: null, + siteTypeId: null }; }else{ roomDialogState.title = '编辑' @@ -79,6 +131,11 @@ siteName: value.siteName, floor: value.floor, room: value.room, + siteLiabilityPersonId: value.siteLiabilityPersonId, + safeLiabilityPersonId: value.safeLiabilityPersonId, + fireFacilities: value.fireFacilities, + partitionStatus: value.partitionStatus, + siteTypeId: value.siteTypeId }; } }; @@ -128,6 +185,11 @@ const emit = defineEmits(['refresh']) +defineProps({ + memberList: Array, + typeList: Array +}) + defineExpose({ showroomDialog }) diff --git a/src/views/basic/room/index.ts b/src/views/basic/room/index.ts index 677de72..11634cf 100644 --- a/src/views/basic/room/index.ts +++ b/src/views/basic/room/index.ts @@ -1,5 +1,7 @@ declare interface RoomStateType { roomData: Array<RoomType> + memberList: Array<any> + typeList: Array<any> searchQuery: { pageIndex: number, pageSize: number, @@ -17,6 +19,11 @@ siteName: string, floor: string, room: string, + siteLiabilityPersonId: number | null, + safeLiabilityPersonId: number | null, + fireFacilities: number | null, + partitionStatus: number | null, + siteTypeId: number | null } declare interface Type { @@ -32,6 +39,11 @@ siteName: string, floor: string, room: string, + siteLiabilityPersonId: number | null, + safeLiabilityPersonId: number | null, + fireFacilities: number | null, + partitionStatus: number | null, + siteTypeId: number | null }, roomFormRules: { diff --git a/src/views/basic/room/index.vue b/src/views/basic/room/index.vue index 70e8a4c..dc3af1d 100644 --- a/src/views/basic/room/index.vue +++ b/src/views/basic/room/index.vue @@ -35,6 +35,19 @@ <el-table-column prop="siteName" label="场所名称"/> <el-table-column prop="floor" label="实验室所在楼" /> <el-table-column prop="room" label="实验室所在房间"/> + <el-table-column prop="siteLiabilityPerson" label="场所责任人"/> + <el-table-column prop="safeLiabilityPerson" label="场所安全员"/> + <el-table-column prop="fireFacilities" label="有无消防设施"> + <template #default="scope"> + <span>{{scope.row.fireFacilities == 1?'有':'无'}}</span> + </template> + </el-table-column> + <el-table-column prop="partitionStatus" label="有无隔断"> + <template #default="scope"> + <span>{{scope.row.partitionStatus == 1?'有':'无'}}</span> + </template> + </el-table-column> + <el-table-column prop="siteType" label="场所性质"/> <el-table-column prop="createTime" label="创建时间" show-overflow-tooltip></el-table-column> <el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column> <el-table-column prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column> @@ -52,15 +65,17 @@ </div> </div> </div> - <room-dialog ref="roomDialogRef" @refresh="getRoomData"></room-dialog> + <room-dialog ref="roomDialogRef" @refresh="getRoomData" :memberList="roomState.memberList" :typeList="roomState.typeList"></room-dialog> </div> </template> <script setup lang="ts"> import {defineAsyncComponent, onMounted, reactive, ref} from "vue"; import {roomApi} from "/@/api/basic/room"; +import {personApi} from "/@/api/basic/person"; import {ElMessage, ElMessageBox} from "element-plus"; import { Edit, View, Plus, Delete } from '@element-plus/icons-vue'; +import {equipmentApi} from "/@/api/basic/equipement"; const RoomDialog = defineAsyncComponent(() => import('./components/roomDialog.vue')); @@ -68,6 +83,8 @@ const roomState = reactive<RoomStateType>({ roomData: [], + memberList: [], + typeList: [], searchQuery: { pageIndex: 1, pageSize: 10, @@ -86,6 +103,20 @@ {id:3, name: '件'} ] }) + +const getAllMember = async ()=>{ + const res = await personApi().getAllPerson(); + if(res.data.code === 100){ + roomState.memberList = res.data.data + } +} + +const getAllType = async ()=>{ + const res = await roomApi().getAllType(); + if(res.data.code === 100){ + roomState.typeList = res.data.data + } +} const getRoomData = async () => { let res = await roomApi().getRoomByList(roomState.searchQuery); @@ -152,6 +183,8 @@ onMounted(() => { getRoomData() + getAllMember() + getAllType() }) </script> diff --git a/src/views/system/department/component/deptDialog.vue b/src/views/system/department/component/deptDialog.vue index f037f1e..1579bc6 100644 --- a/src/views/system/department/component/deptDialog.vue +++ b/src/views/system/department/component/deptDialog.vue @@ -4,20 +4,8 @@ <el-form :model="departmentForm" size="default" label-width="90px"> <el-row :gutter="35"> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="部门等级"> - <el-select v-model="departmentForm.depLevel" placeholder="请输入部门等级" class="input-add" clearable> - <el-option - v-for="item in depLevelList" - :key="item.id" - :label="item.name" - :value="item.id" - ></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> <el-form-item label="上级部门"> - <el-cascader :options="deptData" class="input-add" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable v-model="departmentForm.parentDepId"> </el-cascader> + <el-input v-model="parentName" class="input-add" disabled clearable/> </el-form-item> </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> @@ -27,7 +15,7 @@ </el-col> <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> <el-form-item label="部门描述"> - <el-input v-model="departmentForm.depInfo" class="input-add" type="textarea" placeholder="请输入部门描述" maxlength="150"></el-input> + <el-input v-model="departmentForm.info" class="input-add" type="textarea" placeholder="请输入部门描述" maxlength="150"></el-input> </el-form-item> </el-col> </el-row> @@ -54,14 +42,15 @@ parentId: string; id: number; } -interface DeptSate { +interface DeptState { title: string; + parentName: string isShowDialog: boolean; departmentForm: { depName: string; - depInfo: string; - parentDepId: string; - depLevel:null | number + info: string; + parentId?: null|number + id?: null|number }; deptData: Array<TableDataRow>; depLevelList: Array<Type>; @@ -74,14 +63,15 @@ export default defineComponent({ name: 'systemAddDept', setup(prop, context) { - const state = reactive<DeptSate>({ + const state = reactive<DeptState>({ title: '', + parentName: '', isShowDialog: false, departmentForm: { depName: '', - parentDepId: '', - depInfo: '', - depLevel:null, + parentId: null, + info: '', + id: null }, deptData: [], // 部门数据 depLevelList: [ @@ -92,21 +82,43 @@ ] // 部门数据 }); + const findParentById=(tree:Array<any>,id:number|null,depName:string)=>{ + const parent = tree.find(i=>i.id == id) + if(parent){ + return parent[depName] + } + for(const item of tree){ + if(item.children){ + const result = findParentById(item.children,id,depName) + if(result){ + return result + } + } + } + return null + } + // 打开弹窗 const openDialog = (type: string, value: any, departmentList: []) => { state.isShowDialog = true; + state.departmentForm = JSON.parse(JSON.stringify(value)) + state.parentName = value.depName state.deptData = JSON.parse(JSON.stringify(departmentList)); if (type === '新增') { state.title = '新增部门'; state.departmentForm = { depName: '', - parentDepId: '', - depLevel:null, - depInfo: '' + parentId: value.id, + info: '' }; } else { + state.parentName = findParentById(departmentList,value.parentId,'depName') state.title = '修改部门'; - state.departmentForm = JSON.parse(JSON.stringify(value)); + state.departmentForm = { + depName: value.depName, + id: value.id, + info: value.info + } } }; // 关闭弹窗 @@ -121,7 +133,7 @@ const onSubmit = async () => { if (state.title === '新增部门') { let res = await departmentApi().addDepartment(state.departmentForm); - if (res.data.code === '200') { + if (res.data.code === 100) { ElMessage({ type: 'success', message: '部门新增成功', @@ -137,7 +149,7 @@ } } else { let res = await departmentApi().modDepartment(state.departmentForm); - if (res.data.code === '200') { + if (res.data.code === 100) { ElMessage({ type: 'success', message: '部门修改成功', @@ -160,6 +172,7 @@ initTableData(); }); return { + findParentById, openDialog, closeDialog, onCancel, diff --git a/src/views/system/department/index.vue b/src/views/system/department/index.vue index a0d7c18..8a1d4d6 100644 --- a/src/views/system/department/index.vue +++ b/src/views/system/department/index.vue @@ -3,12 +3,12 @@ <el-card shadow="hover"> <div class="system-dept-search mb15"> <!-- <el-input size="default" placeholder="请输入部门名称" style="max-width: 180px"> </el-input>--> - <el-button size="default" type="primary" class="ml10"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> +<!-- <el-button size="default" type="primary" class="ml10">--> +<!-- <el-icon>--> +<!-- <ele-Search />--> +<!-- </el-icon>--> +<!-- 查询--> +<!-- </el-button>--> <el-button size="default" type="success" class="ml10" @click="onOpenDeptDialog('新增', '')"> <el-icon> <ele-FolderAdd /> @@ -16,12 +16,12 @@ 新增部门 </el-button> </div> - <el-table :data="tableData.data" style="width: 100%" row-key="depId" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> + <el-table :data="tableData.data" style="width: 100%" row-key="id" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> <el-table-column prop="depName" label="部门名称" show-overflow-tooltip> </el-table-column> - <el-table-column prop="depInfo" label="部门描述" show-overflow-tooltip></el-table-column> + <el-table-column prop="info" label="部门描述" show-overflow-tooltip></el-table-column> <el-table-column label="操作" show-overflow-tooltip width="140"> <template #default="scope"> - <el-button size="small" text type="primary" @click="onOpenDeptDialog('新增', '')">新增</el-button> + <el-button size="small" text type="primary" @click="onOpenDeptDialog('新增', scope.row)">新增</el-button> <el-button size="small" text type="primary" @click="onOpenDeptDialog('修改', scope.row)">修改</el-button> <el-button size="small" style="color: red" text type="primary" @click="onTabelRowDel(scope.row)">删除</el-button> </template> @@ -46,6 +46,7 @@ parentId: number; info: string; depId: number; + hasChildren?: boolean children?: TableDataRow[]; } interface TableDataState { @@ -70,8 +71,8 @@ }); // 初始化表格数据 const initTableData = async () => { - let res = await departmentApi().getDepartmentList(); - if (res.data.code === '200') { + let res = await departmentApi().getDepartmentList() + if (res.data.code === 100) { state.tableData.data = res.data.data; state.tableData.total = state.tableData.data.length; } else { @@ -87,14 +88,14 @@ }; // 删除当前行 const onTabelRowDel = (row: TableDataRow) => { - ElMessageBox.confirm(`此操作将永久删除部门:${row.depId}, 是否继续?`, '提示', { + ElMessageBox.confirm(`此操作将永久删除部门:${row.depName}, 是否继续?`, '提示', { confirmButtonText: '删除', cancelButtonText: '取消', type: 'warning' }) .then(async () => { - let res = await departmentApi().deleteDepartment({ depId: row.depId }); - if (res.data.code === '200') { + let res = await departmentApi().deleteDepartment({ id: row.id }); + if (res.data.code === 100) { ElMessage({ type: 'success', duration: 2000, diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue index 7d8aba2..59ba2eb 100644 --- a/src/views/system/role/index.vue +++ b/src/views/system/role/index.vue @@ -3,12 +3,12 @@ <el-card shadow="hover"> <div class="system-user-search mb15"> <!-- <el-input size="default" placeholder="请输入角色名称" style="max-width: 180px"> </el-input>--> - <el-button size="default" type="primary" class="ml10" @click="handleSearch"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> +<!-- <el-button size="default" type="primary" class="ml10" @click="handleSearch">--> +<!-- <el-icon>--> +<!-- <ele-Search />--> +<!-- </el-icon>--> +<!-- 查询--> +<!-- </el-button>--> <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')"> <el-icon> <ele-FolderAdd /> diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index b25d7a8..8bd5f91 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -3,12 +3,12 @@ <el-card shadow="hover"> <div class="system-user-search mb15"> <!-- <el-input size="default" v-model.trim="userTableData.listQuery.roleId" placeholder="请输入用户名" style="max-width: 180px"> </el-input>--> - <el-button size="default" type="primary" class="ml10" @click="initUserTableData"> - <el-icon> - <ele-Search /> - </el-icon> - 查询 - </el-button> +<!-- <el-button size="default" type="primary" class="ml10" @click="initUserTableData">--> +<!-- <el-icon>--> +<!-- <ele-Search />--> +<!-- </el-icon>--> +<!-- 查询--> +<!-- </el-button>--> <el-button size="default" type="success" class="ml10" @click="onOpenUserDialog('新增', '')"> <el-icon> <ele-FolderAdd /> -- Gitblit v1.9.2