From 1b5f3811b6a80c0ea2b4ff213ffbbd891aaa5092 Mon Sep 17 00:00:00 2001 From: chenglijuan Date: Thu, 7 May 2026 10:44:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A2=AB=E8=AE=BF=E5=8C=BA?= =?UTF-8?q?=E5=9F=9F=E4=B8=8B=E6=8B=89=E6=A1=86=E5=80=BCapi=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/appointment/appointment.js | 32 +++++++++++++++++++++++++------- utils/api.js | 12 ++++++++++++ utils/config.js | 1 + 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/pages/appointment/appointment.js b/pages/appointment/appointment.js index fa163f9..a5a760c 100644 --- a/pages/appointment/appointment.js +++ b/pages/appointment/appointment.js @@ -20,8 +20,8 @@ Page({ area: '', plateNumber: '' }, - areas: ['A区-生产车间', 'B区-办公楼', 'C区-仓储区', 'D区-研发中心', 'E区-综合区'], - areaMap: { 'A区-生产车间': 'A', 'B区-办公楼': 'B', 'C区-仓储区': 'C', 'D区-研发中心': 'D', 'E区-综合区': 'E' }, + areas: [], + departments: [], areaIndex: -1, persons: [], personNames: [], @@ -54,6 +54,24 @@ Page({ // 使用本地时区获取当天日期,用于 picker 最小日期限制 const today = formatDate(new Date()) this.setData({ today }) + this.loadDepartments() + }, + + async loadDepartments() { + try { + const list = await appointmentDB.getDepartmentSelector() + const departments = list.map(item => ({ + departmentCode: item.departmentCode, + departmentName: item.departmentName + })) + this.setData({ + departments, + areas: departments.map(d => d.departmentName) + }) + } catch (err) { + console.error('获取拜访区域列表失败', err) + wx.showToast({ title: '获取拜访区域失败', icon: 'none' }) + } }, showLoginTipAndGoBack() { @@ -88,11 +106,11 @@ Page({ onAreaChange(e) { const index = Number(e.detail.value) - const areaName = this.data.areas[index] - const department = this.data.areaMap[areaName] + const department = this.data.departments[index] + const departmentCode = department ? department.departmentCode : '' this.setData({ areaIndex: index, - 'form.area': areaName, + 'form.area': department ? department.departmentName : '', 'form.hostId': '', 'form.hostName': '', 'form.personId': '', @@ -100,8 +118,8 @@ Page({ personNames: [], personIndex: -1 }) - if (department) { - this.loadPersons(department) + if (departmentCode) { + this.loadPersons(departmentCode) } }, diff --git a/utils/api.js b/utils/api.js index 17307c2..efdcb85 100644 --- a/utils/api.js +++ b/utils/api.js @@ -187,6 +187,18 @@ const appointmentDB = { return mapApiRecord(data) || null }, + /** + * 获取被访部门/区域列表 + * @returns {Promise} 部门列表 + */ + async getDepartmentSelector() { + const data = await request({ + url: BASE_URL + API.DEPARTMENT_SELECTOR, + method: 'GET' + }) + return data || [] + }, + /** * 获取被访人列表 * @param {string} department - 部门/区域编码 diff --git a/utils/config.js b/utils/config.js index e995ef6..533eac3 100644 --- a/utils/config.js +++ b/utils/config.js @@ -27,6 +27,7 @@ const API = { APPOINTMENT_DETAIL: '/api/wx-mini/appointment/detail', WXACODE: '/api/wx-mini/wxacode', PERSON_SELECTOR: '/api/wx-mini/appointment/person/selector', + DEPARTMENT_SELECTOR: '/api/wx-mini/appointment/department/selector', NOTIFY_HOST: '/visitor/notify-host' }