diff --git a/src/api/integrated/meetingDeskLayout.ts b/src/api/integrated/meetingDeskLayout.ts
new file mode 100644
index 0000000..a9e82ba
--- /dev/null
+++ b/src/api/integrated/meetingDeskLayout.ts
@@ -0,0 +1,41 @@
+import request from "/@/utils/request"
+
+export function fetchList(query?: Object) {
+ return request({
+ url: '/integrated/meetingDeskLayout/page',
+ method: 'get',
+ params: query
+ })
+}
+
+export function addObj(obj?: Object) {
+ return request({
+ url: '/integrated/meetingDeskLayout',
+ method: 'post',
+ data: obj
+ })
+}
+
+export function getObj(id?: string) {
+ return request({
+ url: '/integrated/meetingDeskLayout/' + id,
+ method: 'get'
+ })
+}
+
+export function delObjs(ids?: Object) {
+ return request({
+ url: '/integrated/meetingDeskLayout',
+ method: 'delete',
+ data: ids
+ })
+}
+
+export function putObj(obj?: Object) {
+ return request({
+ url: '/integrated/meetingDeskLayout',
+ method: 'put',
+ data: obj
+ })
+}
+
diff --git a/src/views/integrated/meeting/cleanUser/form.vue b/src/views/integrated/meeting/cleanUser/form.vue
index 4f8ecee..fd75723 100644
--- a/src/views/integrated/meeting/cleanUser/form.vue
+++ b/src/views/integrated/meeting/cleanUser/form.vue
@@ -1,7 +1,7 @@
-
+
@@ -15,11 +15,7 @@
-
-
-
-
-
+
@@ -39,6 +35,7 @@
\ No newline at end of file
diff --git a/src/views/integrated/meeting/meetingDeskLayout/index.vue b/src/views/integrated/meeting/meetingDeskLayout/index.vue
new file mode 100644
index 0000000..e5f1a46
--- /dev/null
+++ b/src/views/integrated/meeting/meetingDeskLayout/index.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+ 新 增
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integrated/meeting/meetingRoom/form.vue b/src/views/integrated/meeting/meetingRoom/form.vue
index d8c1b5f..3383e78 100644
--- a/src/views/integrated/meeting/meetingRoom/form.vue
+++ b/src/views/integrated/meeting/meetingRoom/form.vue
@@ -34,8 +34,22 @@
-
- 0
+
+
@@ -59,6 +73,19 @@
+
+
+
+
+
+
+
+
@@ -159,6 +186,7 @@ import { useMessage } from "/src/hooks/message";
import { getObj, addObj, putObj } from '/src/api/integrated/meetingRoom'
import { fetchList } from '/src/api/integrated/meetingEquipment'
import { dropdown } from '/src/api/integrated/cleanUser'
+import { getSimpleUserAll } from '/src/api/admin/user'
import { rule } from '/src/utils/validate';
const emit = defineEmits(['refresh']);
@@ -168,6 +196,10 @@ const visible = ref(false)
const loading = ref(false)
const activeTab = ref('basic')
const cleanUserOptions = ref([])
+const serviceUserOptions = ref([])
+const adminUserOptions = ref([])
+const adminUserLoading = ref(false)
+const adminUserSearchKeyword = ref('')
interface Equipment {
equipId: string;
@@ -213,6 +245,7 @@ const form = reactive({
capacity: 0,
availableTime: '',
cleanUserId: '',
+ serviceUserId: '',
});
// 定义校验规则
@@ -298,14 +331,18 @@ const openDialog = (id: string) => {
form.id = ''
equipmentList.value = []
form.cleanUserId = ''
+ form.serviceUserId = ''
// 重置表单数据
nextTick(() => {
dataFormRef.value?.resetFields();
});
- // 获取保洁用户下拉数据
- getCleanUserOptions()
+ // 获取用户下拉数据(保洁和会务人员)
+ getUserOptions()
+
+ // 获取管理员用户数据
+ getAdminUserOptions()
// 获取meetingRoom信息
if (id) {
@@ -314,13 +351,61 @@ const openDialog = (id: string) => {
}
};
-// 获取保洁用户下拉选项
-const getCleanUserOptions = async () => {
+// 获取用户下拉选项(保洁和会务人员)
+const getUserOptions = async () => {
try {
const res = await dropdown()
- cleanUserOptions.value = Array.isArray(res.data) ? res.data : []
+ const allUsers = Array.isArray(res.data) ? res.data : []
+
+ // 根据type字段分别赋值(type为字符串类型)
+ cleanUserOptions.value = allUsers.filter(user => user.type === '1') // type: '1' 为保洁
+ serviceUserOptions.value = allUsers.filter(user => user.type === '2') // type: '2' 为会务人员
} catch (err: any) {
- console.error('获取保洁用户列表失败:', err)
+ console.error('获取用户列表失败:', err)
+ }
+}
+
+// 获取管理员用户选项
+const getAdminUserOptions = async (searchKeyword?: string) => {
+ try {
+ adminUserLoading.value = true
+ const params: any = {}
+
+ // 如果有搜索关键词,添加到参数中
+ if (searchKeyword) {
+ params.name = searchKeyword
+ params.mobile = searchKeyword
+ }
+
+ const res = await getSimpleUserAll(params)
+ let allUsers = Array.isArray(res.data) ? res.data : []
+
+ // 如果接口不支持搜索参数,在前端进行过滤
+ if (searchKeyword && allUsers.length > 0) {
+ allUsers = allUsers.filter(user =>
+ user.nameWithMobile.toLowerCase().includes(searchKeyword.toLowerCase())
+ )
+ }
+
+ adminUserOptions.value = allUsers
+ } catch (err: any) {
+ console.error('获取管理员用户列表失败:', err)
+ adminUserOptions.value = []
+ } finally {
+ adminUserLoading.value = false
+ }
+}
+
+// 管理员用户搜索处理
+const handleAdminUserSearch = (keyword: string) => {
+ adminUserSearchKeyword.value = keyword
+ getAdminUserOptions(keyword)
+}
+
+// 管理员用户下拉框显示状态变化
+const handleAdminUserVisibleChange = (visible: boolean) => {
+ if (visible && adminUserOptions.value.length === 0) {
+ getAdminUserOptions()
}
}
@@ -361,10 +446,13 @@ const getmeetingRoomData = (id: string) => {
if (res.data.equipmentList) {
equipmentList.value = res.data.equipmentList
}
- // 确保保洁信息正确回显
+ // 确保保洁和会务信息正确回显
if (res.data.cleanUserId) {
form.cleanUserId = res.data.cleanUserId
}
+ if (res.data.serviceUserId) {
+ form.serviceUserId = res.data.serviceUserId
+ }
}).finally(() => {
loading.value = false
})
diff --git a/src/views/integrated/meeting/meetingRoom/index.vue b/src/views/integrated/meeting/meetingRoom/index.vue
index be1f094..9552cfd 100644
--- a/src/views/integrated/meeting/meetingRoom/index.vue
+++ b/src/views/integrated/meeting/meetingRoom/index.vue
@@ -35,6 +35,8 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/integrated/meeting/serviceUser/index.vue b/src/views/integrated/meeting/serviceUser/index.vue
new file mode 100644
index 0000000..0fbd39d
--- /dev/null
+++ b/src/views/integrated/meeting/serviceUser/index.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+ 重置
+
+
+
+
+
+
+ 新 增
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+