From 2d561150b91a9789d31678af14dd4840bbb56576 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: Wed, 29 Mar 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