Browse Source

部门

master
xh 3 days ago
parent
commit
6f23d04a78
  1. 2
      web/.env
  2. 1
      web/src/api/gas/handdetector/index.ts
  3. 1
      web/src/api/gas/personnel/index.ts
  4. 5
      web/src/views/gas/handdetector/HandDetectorForm.vue
  5. 29
      web/src/views/gas/personnel/PersonnelForm.vue
  6. 46
      web/src/views/gas/personnel/index.vue

2
web/.env

@ -13,6 +13,8 @@ VITE_APP_TENANT_ENABLE=true
# 验证码的开关 # 验证码的开关
VITE_APP_CAPTCHA_ENABLE=false VITE_APP_CAPTCHA_ENABLE=false
# 地图瓦片URL
VITE_APP_MAP_TILE_URL = https://webrd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}
# 默认账户密码 # 默认账户密码
VITE_APP_DEFAULT_LOGIN_TENANT = 系统租户 VITE_APP_DEFAULT_LOGIN_TENANT = 系统租户

1
web/src/api/gas/handdetector/index.ts

@ -24,6 +24,7 @@ export interface HandDetector {
accuracy?: number // 数值除数 accuracy?: number // 数值除数
sortOrder?: number // 排序 sortOrder?: number // 排序
remark?: string // 备注 remark?: string // 备注
deptId?: number // 部门ID
} }
// GAS手持探测器报警信息 // GAS手持探测器报警信息
export interface HandDetectorData extends HandDetector { export interface HandDetectorData extends HandDetector {

1
web/src/api/gas/personnel/index.ts

@ -10,6 +10,7 @@ export interface Personnel {
phone: string; // 联系电话 phone: string; // 联系电话
email: string; // 电子邮箱 email: string; // 电子邮箱
status?: number; // 状态 (1-在职, 0-离职) status?: number; // 状态 (1-在职, 0-离职)
deptId?: number; // 部门ID
} }
// 人员信息 API // 人员信息 API

5
web/src/views/gas/handdetector/HandDetectorForm.vue

@ -159,7 +159,8 @@ const formData = ref<HandDetector>({
enableStatus: 1, enableStatus: 1,
accuracy: 1, accuracy: 1,
sortOrder: undefined, sortOrder: undefined,
remark: undefined
remark: undefined,
deptId: undefined
}) })
const formRules = reactive({ const formRules = reactive({
sn: [{ required: true, message: 'SN不能为空', trigger: 'blur' }], sn: [{ required: true, message: 'SN不能为空', trigger: 'blur' }],
@ -181,6 +182,8 @@ const getAllPersonnel = async () => {
/** 持有人改变时,应用持有人姓名 */ /** 持有人改变时,应用持有人姓名 */
const handlePersonIdChange = () => { const handlePersonIdChange = () => {
formData.value.name = personnelList.value.find((item) => item.id === formData.value.personId)?.name formData.value.name = personnelList.value.find((item) => item.id === formData.value.personId)?.name
formData.value.deptId = personnelList.value.find((item) => item.id === formData.value.personId)?.deptId
} }

29
web/src/views/gas/personnel/PersonnelForm.vue

@ -13,8 +13,18 @@
<el-form-item label="工号" prop="employeeId"> <el-form-item label="工号" prop="employeeId">
<el-input v-model="formData.employeeId" placeholder="请输入工号" /> <el-input v-model="formData.employeeId" placeholder="请输入工号" />
</el-form-item> </el-form-item>
<el-form-item label="部门" prop="deptId">
<el-select v-model="formData.deptId" clearable filterable placeholder="请选择部门">
<el-option v-for="user in deptList" :key="user.id" :label="user.name" :value="user.id" />
</el-select>
</el-form-item>
<el-form-item label="系统用户" prop="userId"> <el-form-item label="系统用户" prop="userId">
<el-select v-model="formData.userId" clearable filterable placeholder="请选择关联的系统用户">
<el-select
v-model="formData.userId"
clearable
filterable
placeholder="请选择关联的系统用户"
>
<el-option <el-option
v-for="user in userList" v-for="user in userList"
:key="user.id" :key="user.id"
@ -51,7 +61,7 @@
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict' import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { PersonnelApi, Personnel } from '@/api/gas/personnel' import { PersonnelApi, Personnel } from '@/api/gas/personnel'
import { UserVO, getSimpleUserList } from '@/api/system/user' import { UserVO, getSimpleUserList } from '@/api/system/user'
import * as DeptApi from '@/api/system/dept'
/** 人员信息 表单 */ /** 人员信息 表单 */
defineOptions({ name: 'PersonnelForm' }) defineOptions({ name: 'PersonnelForm' })
@ -70,7 +80,8 @@ const formData = ref({
userId: undefined, userId: undefined,
phone: undefined, phone: undefined,
email: undefined, email: undefined,
status: undefined
status: undefined,
deptId: undefined
}) })
const formRules = reactive({ const formRules = reactive({
name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }], name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
@ -78,6 +89,14 @@ const formRules = reactive({
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
const userList = ref<UserVO[]>([]) // const userList = ref<UserVO[]>([]) //
const deptList = ref<DeptApi.DeptVO[]>([]) //
function getDeptList() {
DeptApi.getSimpleDeptList().then((res) => {
deptList.value = res || []
})
}
function getUserList() { function getUserList() {
getSimpleUserList().then((res) => { getSimpleUserList().then((res) => {
userList.value = res || [] userList.value = res || []
@ -91,6 +110,7 @@ const open = async (type: string, id?: number) => {
formType.value = type formType.value = type
resetForm() resetForm()
getUserList() getUserList()
getDeptList()
// //
if (id) { if (id) {
formLoading.value = true formLoading.value = true
@ -136,7 +156,8 @@ const resetForm = () => {
userId: undefined, userId: undefined,
phone: undefined, phone: undefined,
email: undefined, email: undefined,
status: undefined
status: undefined,
deptId: undefined
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }

46
web/src/views/gas/personnel/index.vue

@ -26,6 +26,17 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="部门" prop="deptId">
<el-select
v-model="queryParams.deptId"
placeholder="请选择部门"
clearable
filterable
class="!w-240px"
>
<el-option v-for="dept in deptList" :key="dept.id" :label="dept.name" :value="dept.id" />
</el-select>
</el-form-item>
<el-form-item label="系统用户" prop="userId"> <el-form-item label="系统用户" prop="userId">
<el-select <el-select
v-model="queryParams.userId" v-model="queryParams.userId"
@ -61,12 +72,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
placeholder="请选择状态"
clearable
class="!w-240px"
>
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px">
<el-option <el-option
v-for="dict in getIntDictOptions(DICT_TYPE.EMPLOYMENT_STATUS)" v-for="dict in getIntDictOptions(DICT_TYPE.EMPLOYMENT_STATUS)"
:key="dict.value" :key="dict.value"
@ -133,14 +139,23 @@
<el-table-column label="姓名" align="center" prop="name" /> <el-table-column label="姓名" align="center" prop="name" />
<el-table-column label="工号" align="center" prop="employeeId" /> <el-table-column label="工号" align="center" prop="employeeId" />
<el-table-column label="部门" align="center" prop="deptId">
<template #default="scope">
<span v-if="scope.row.deptId">
{{ deptList.find((dept) => dept.id === scope.row.deptId)?.name || '-' }}
</span>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="关联的系统用户" align="center" prop="userId"> <el-table-column label="关联的系统用户" align="center" prop="userId">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.userId"> <span v-if="scope.row.userId">
{{ userList.find(user => user.id === scope.row.userId)?.nickname || '-' }}
{{ userList.find((user) => user.id === scope.row.userId)?.nickname || '-' }}
</span> </span>
<span v-else>-</span> <span v-else>-</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="联系电话" align="center" prop="phone" /> <el-table-column label="联系电话" align="center" prop="phone" />
<el-table-column label="电子邮箱" align="center" prop="email" /> <el-table-column label="电子邮箱" align="center" prop="email" />
<el-table-column label="状态" align="center" prop="status"> <el-table-column label="状态" align="center" prop="status">
@ -197,6 +212,7 @@ import download from '@/utils/download'
import { PersonnelApi, Personnel } from '@/api/gas/personnel' import { PersonnelApi, Personnel } from '@/api/gas/personnel'
import PersonnelForm from './PersonnelForm.vue' import PersonnelForm from './PersonnelForm.vue'
import { UserVO, getSimpleUserList } from '@/api/system/user' import { UserVO, getSimpleUserList } from '@/api/system/user'
import { DeptVO, getSimpleDeptList } from '@/api/system/dept'
/** 人员信息 列表 */ /** 人员信息 列表 */
defineOptions({ name: 'Personnel' }) defineOptions({ name: 'Personnel' })
@ -216,12 +232,19 @@ const queryParams = reactive({
phone: undefined, phone: undefined,
email: undefined, email: undefined,
status: undefined, status: undefined,
createTime: []
createTime: [],
deptId: undefined
}) })
const queryFormRef = ref() // const queryFormRef = ref() //
const exportLoading = ref(false) // const exportLoading = ref(false) //
const userList = ref<UserVO[]>([]) // const userList = ref<UserVO[]>([]) //
const deptList = ref<DeptVO[]>([]) //
function getDeptList() {
getSimpleDeptList().then((res) => {
deptList.value = res || []
})
}
function getUserList() { function getUserList() {
getSimpleUserList().then((res) => { getSimpleUserList().then((res) => {
userList.value = res || [] userList.value = res || []
@ -276,15 +299,15 @@ const handleDeleteBatch = async () => {
try { try {
// //
await message.delConfirm() await message.delConfirm()
await PersonnelApi.deletePersonnelList(checkedIds.value);
await PersonnelApi.deletePersonnelList(checkedIds.value)
message.success(t('common.delSuccess')) message.success(t('common.delSuccess'))
await getList();
await getList()
} catch {} } catch {}
} }
const checkedIds = ref<number[]>([]) const checkedIds = ref<number[]>([])
const handleRowCheckboxChange = (records: Personnel[]) => { const handleRowCheckboxChange = (records: Personnel[]) => {
checkedIds.value = records.map((item) => item.id);
checkedIds.value = records.map((item) => item.id)
} }
/** 导出按钮操作 */ /** 导出按钮操作 */
@ -306,5 +329,6 @@ const handleExport = async () => {
onMounted(() => { onMounted(() => {
getList() getList()
getUserList() getUserList()
getDeptList()
}) })
</script> </script>

Loading…
Cancel
Save