diff --git a/apps/web-antd/index.html b/apps/web-antd/index.html index 21893884..a2da8d62 100644 --- a/apps/web-antd/index.html +++ b/apps/web-antd/index.html @@ -1,23 +1,24 @@ - - - - - - - - - - <%= VITE_APP_TITLE %> - - - - -
- - + + + + + + + + + + <%= VITE_APP_TITLE %> + + + + +
+ + diff --git a/apps/web-antd/src/api/property/attendanceManagement/arrangement/index.ts b/apps/web-antd/src/api/property/attendanceManagement/arrangement/index.ts index 0ffab03b..3da89d0b 100644 --- a/apps/web-antd/src/api/property/attendanceManagement/arrangement/index.ts +++ b/apps/web-antd/src/api/property/attendanceManagement/arrangement/index.ts @@ -1,18 +1,25 @@ -import type { ArrangementVO, ArrangementForm, ArrangementQuery } from './model'; +import type { + ArrangementVO, + ArrangementForm, + ArrangementQuery, + arrangmentListQuery, +} from './model'; import type { ID, IDS } from '#/api/common'; import type { PageResult } from '#/api/common'; -import { commonExport } from '#/api/helper'; import { requestClient } from '#/api/request'; /** -* 分页查询排班列表 -* @param params -* @returns 排班列表 -*/ + * 分页查询排班列表 + * @param params + * @returns 排班列表 + */ export function arrangementList(params?: ArrangementQuery) { - return requestClient.get>('/property/arrangement/list', { params }); + return requestClient.get>( + '/property/arrangement/list', + { params }, + ); } /** * 根据月份查询排班列表 @@ -58,3 +65,30 @@ export function arrangementUpdate(data: ArrangementForm) { export function arrangementRemove(id: ID | IDS) { return requestClient.deleteWithMsg(`/property/arrangement/${id}`); } + +/** + * 查询某天排班详情列表 + * @param params + * @returns 排班列表 + */ + +export function arrangmentList(params?: arrangmentListQuery) { + return requestClient.get>( + '/property/arrangement/list', + { params }, + ); +} + +/** + * 查询某天排班人员详情列表(班表视图) + * @param params + * @returns 排班列表 + */ + +export function queryScheduleView(params?: arrangmentListQuery) { + return requestClient.get>( + '/property/AttendanceUserGroup/queryScheduleView', + { params }, + ); +} + diff --git a/apps/web-antd/src/api/property/attendanceManagement/arrangement/model.d.ts b/apps/web-antd/src/api/property/attendanceManagement/arrangement/model.d.ts index 83f93190..5dd87db2 100644 --- a/apps/web-antd/src/api/property/attendanceManagement/arrangement/model.d.ts +++ b/apps/web-antd/src/api/property/attendanceManagement/arrangement/model.d.ts @@ -9,37 +9,40 @@ export interface ArrangementVO { /** * 排班名称 */ - scheduleName: string; + scheduleName?: string; /** * 考勤组ID */ - groupId: string | number; + groupId?: string | number; /** * 排班类型:1-固定班制,2-排班制 */ - scheduleType: number; + scheduleType?: number; /** * 日期类型:1-单个日期,2-长期有效,3-期间有效 */ - dateType: number; + dateType?: number; /** * 开始日期 */ - startDate: string; + startDate?: string; /** * 结束日期(仅date_type=3时有效) */ - endDate: string; + endDate?: string; /** * 状态:0-未生效,1-已生效 */ - status: number; + status?: number; + userGroupList?: any[]; + attendanceGroup?: any; + dateType?: number; } export interface ArrangementForm extends BaseEntity { @@ -86,6 +89,10 @@ export interface ArrangementForm extends BaseEntity { * 排班人员详情 */ userGroupList: any[]; + /** + * 排班id + */ + scheduleId?: string | number; } export interface ArrangementQuery extends PageQuery { @@ -134,3 +141,9 @@ export interface ArrangementQuery extends PageQuery { */ month?: string; } +export interface arrangmentListQuery extends PageQuery { + currentDate: string; //某天的日期 +} +export interface AttendanceUserGroup extends PageQuery { + currentDate: string; //某天的日期 +} diff --git a/apps/web-antd/src/api/property/attendanceManagement/attendanceArea/index.ts b/apps/web-antd/src/api/property/attendanceManagement/attendanceArea/index.ts new file mode 100644 index 00000000..ff3291a0 --- /dev/null +++ b/apps/web-antd/src/api/property/attendanceManagement/attendanceArea/index.ts @@ -0,0 +1,61 @@ +import type { AttendanceAreaVO, AttendanceAreaForm, AttendanceAreaQuery } from './model'; + +import type { ID, IDS } from '#/api/common'; +import type { PageResult } from '#/api/common'; + +import { commonExport } from '#/api/helper'; +import { requestClient } from '#/api/request'; + +/** +* 查询区域区域管理列表 +* @param params +* @returns 区域区域管理列表 +*/ +export function attendanceAreaList(params?: AttendanceAreaQuery) { + return requestClient.get>('/property/attendanceArea/list', { params }); +} + +/** + * 导出区域区域管理列表 + * @param params + * @returns 区域区域管理列表 + */ +export function attendanceAreaExport(params?: AttendanceAreaQuery) { + return commonExport('/property/attendanceArea/export', params ?? {}); +} + +/** + * 查询区域区域管理详情 + * @param id id + * @returns 区域区域管理详情 + */ +export function attendanceAreaInfo(id: ID) { + return requestClient.get(`/property/attendanceArea/${id}`); +} + +/** + * 新增区域区域管理 + * @param data + * @returns void + */ +export function attendanceAreaAdd(data: AttendanceAreaForm) { + return requestClient.postWithMsg('/property/attendanceArea', data); +} + +/** + * 更新区域区域管理 + * @param data + * @returns void + */ +export function attendanceAreaUpdate(data: AttendanceAreaForm) { + return requestClient.putWithMsg('/property/attendanceArea', data); +} + +/** + * 删除区域区域管理 + * @param id id + * @returns void + */ +export function attendanceAreaRemove(id: ID | IDS) { + return requestClient.deleteWithMsg(`/property/attendanceArea/${id}`); +} diff --git a/apps/web-antd/src/api/property/attendanceManagement/attendanceArea/model.d.ts b/apps/web-antd/src/api/property/attendanceManagement/attendanceArea/model.d.ts new file mode 100644 index 00000000..e912be71 --- /dev/null +++ b/apps/web-antd/src/api/property/attendanceManagement/attendanceArea/model.d.ts @@ -0,0 +1,69 @@ +import type { PageQuery, BaseEntity } from '#/api/common'; + +export interface AttendanceAreaVO { + /** + * 主键id + */ + id: string | number; + + /** + * 摄像机id + */ + deviceManageId: string | number; + + /** + * 区域 + */ + area: string; + + /** + * 备注 + */ + reamark: string; + +} + +export interface AttendanceAreaForm extends BaseEntity { + /** + * 主键id + */ + id?: string | number; + + /** + * 摄像机id + */ + deviceManageId?: string | number; + + /** + * 区域 + */ + area?: string; + + /** + * 备注 + */ + reamark?: string; + +} + +export interface AttendanceAreaQuery extends PageQuery { + /** + * 摄像机id + */ + deviceManageId?: string | number; + + /** + * 区域 + */ + area?: string; + + /** + * 备注 + */ + reamark?: string; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/apps/web-antd/src/api/property/businessManagement/workOrders/model.d.ts b/apps/web-antd/src/api/property/businessManagement/workOrders/model.d.ts index ea2e3fac..302bca92 100644 --- a/apps/web-antd/src/api/property/businessManagement/workOrders/model.d.ts +++ b/apps/web-antd/src/api/property/businessManagement/workOrders/model.d.ts @@ -94,6 +94,10 @@ export interface WorkOrdersVO { * 备注 */ remark: string; + /** + * 图片 + */ + orderImgUrl: string; } diff --git a/apps/web-antd/src/api/property/customerService/questionnaire/question/index.ts b/apps/web-antd/src/api/property/customerService/questionnaire/question/index.ts new file mode 100644 index 00000000..12365003 --- /dev/null +++ b/apps/web-antd/src/api/property/customerService/questionnaire/question/index.ts @@ -0,0 +1,61 @@ +import type { QuestionVO, QuestionForm, QuestionQuery } from './model'; + +import type { ID, IDS } from '#/api/common'; +import type { PageResult } from '#/api/common'; + +import { commonExport } from '#/api/helper'; +import { requestClient } from '#/api/request'; + +/** +* 查询调查问卷问题列表 +* @param params +* @returns 调查问卷问题列表 +*/ +export function questionList(params?: QuestionQuery) { + return requestClient.get>('/property/question/list', { params }); +} + +/** + * 导出调查问卷问题列表 + * @param params + * @returns 调查问卷问题列表 + */ +export function questionExport(params?: QuestionQuery) { + return commonExport('/property/question/export', params ?? {}); +} + +/** + * 查询调查问卷问题详情 + * @param id id + * @returns 调查问卷问题详情 + */ +export function questionInfo(id: ID) { + return requestClient.get(`/property/question/${id}`); +} + +/** + * 新增调查问卷问题 + * @param data + * @returns void + */ +export function questionAdd(data: QuestionForm) { + return requestClient.postWithMsg('/property/question', data); +} + +/** + * 更新调查问卷问题 + * @param data + * @returns void + */ +export function questionUpdate(data: QuestionForm) { + return requestClient.putWithMsg('/property/question', data); +} + +/** + * 删除调查问卷问题 + * @param id id + * @returns void + */ +export function questionRemove(id: ID | IDS) { + return requestClient.deleteWithMsg(`/property/question/${id}`); +} diff --git a/apps/web-antd/src/api/property/customerService/questionnaire/question/model.d.ts b/apps/web-antd/src/api/property/customerService/questionnaire/question/model.d.ts new file mode 100644 index 00000000..11d169dd --- /dev/null +++ b/apps/web-antd/src/api/property/customerService/questionnaire/question/model.d.ts @@ -0,0 +1,132 @@ +import type { PageQuery, BaseEntity } from '#/api/common'; +import type { + QuestionItemForm +} from "#/api/property/customerService/questionnaire/questionItem/model"; + +export interface QuestionVO { + /** + * id + */ + id: string | number; + + /** + * 调查问卷id + */ + questionnaireId: string | number; + + /** + * 标题 + */ + head: string; + + /** + * 问题类型(1单行文本2多行文本3单选题4多选题5评分题6日期选择) + */ + type: string; + + /** + * 是否必填(1不必填2必填) + */ + isRequired: string; + + /** + * 描述 + */ + depict: string; + + /** + * 排序 + */ + sort: number; + +} + +export interface QuestionForm extends BaseEntity { + /** + * id + */ + id?: string | number; + + /** + * 调查问卷id + */ + questionnaireId?: string | number; + + /** + * 标题 + */ + head?: string; + + /** + * 问题类型(1单行文本2多行文本3单选题4多选题5评分题6日期选择) + */ + type: string; + + /** + * 是否必填(1不必填2必填) + */ + isRequired?: string; + + /** + * 描述 + */ + depict?: string; + + /** + * 排序 + */ + sort?: number; + + /** + * 选项 + */ + questionnaireQuestionItems:QuestionItemForm[] + + /** + * 评分预览 + */ + rate?:number; + + /** + * 时间预览 + */ + dateTime?:string; + +} + +export interface QuestionQuery extends PageQuery { + /** + * 调查问卷id + */ + questionnaireId?: string | number; + + /** + * 标题 + */ + head?: string; + + /** + * 问题类型(1单行文本2多行文本3单选题4多选题5评分题6日期选择) + */ + type?: string; + + /** + * 是否必填(1不必填2必填) + */ + isRequired?: string; + + /** + * 描述 + */ + depict?: string; + + /** + * 排序 + */ + sort?: number; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/apps/web-antd/src/api/property/customerService/questionnaire/questionItem/index.ts b/apps/web-antd/src/api/property/customerService/questionnaire/questionItem/index.ts new file mode 100644 index 00000000..c66defca --- /dev/null +++ b/apps/web-antd/src/api/property/customerService/questionnaire/questionItem/index.ts @@ -0,0 +1,61 @@ +import type { QuestionItemVO, QuestionItemForm, QuestionItemQuery } from './model'; + +import type { ID, IDS } from '#/api/common'; +import type { PageResult } from '#/api/common'; + +import { commonExport } from '#/api/helper'; +import { requestClient } from '#/api/request'; + +/** +* 查询调查问卷问题选项列表 +* @param params +* @returns 调查问卷问题选项列表 +*/ +export function questionItemList(params?: QuestionItemQuery) { + return requestClient.get>('/property/questionItem/list', { params }); +} + +/** + * 导出调查问卷问题选项列表 + * @param params + * @returns 调查问卷问题选项列表 + */ +export function questionItemExport(params?: QuestionItemQuery) { + return commonExport('/property/questionItem/export', params ?? {}); +} + +/** + * 查询调查问卷问题选项详情 + * @param id id + * @returns 调查问卷问题选项详情 + */ +export function questionItemInfo(id: ID) { + return requestClient.get(`/property/questionItem/${id}`); +} + +/** + * 新增调查问卷问题选项 + * @param data + * @returns void + */ +export function questionItemAdd(data: QuestionItemForm) { + return requestClient.postWithMsg('/property/questionItem', data); +} + +/** + * 更新调查问卷问题选项 + * @param data + * @returns void + */ +export function questionItemUpdate(data: QuestionItemForm) { + return requestClient.putWithMsg('/property/questionItem', data); +} + +/** + * 删除调查问卷问题选项 + * @param id id + * @returns void + */ +export function questionItemRemove(id: ID | IDS) { + return requestClient.deleteWithMsg(`/property/questionItem/${id}`); +} diff --git a/apps/web-antd/src/api/property/customerService/questionnaire/questionItem/model.d.ts b/apps/web-antd/src/api/property/customerService/questionnaire/questionItem/model.d.ts new file mode 100644 index 00000000..3dea08ba --- /dev/null +++ b/apps/web-antd/src/api/property/customerService/questionnaire/questionItem/model.d.ts @@ -0,0 +1,79 @@ +import type { PageQuery, BaseEntity } from '#/api/common'; + +export interface QuestionItemVO { + /** + * id + */ + id: string | number; + + /** + * 问题id + */ + questionId: string | number; + + /** + * 选项内容 + */ + itemContent: string; + + /** + * 排序 + */ + sort: number; + + /** + * 备注 + */ + remark: string; + +} + +export interface QuestionItemForm extends BaseEntity { + /** + * id + */ + id?: string | number; + + /** + * 问题id + */ + questionId?: string | number; + + /** + * 选项内容 + */ + itemContent?: string; + + /** + * 排序 + */ + sort?: number; + + /** + * 备注 + */ + remark?: string; + +} + +export interface QuestionItemQuery extends PageQuery { + /** + * 问题id + */ + questionId?: string | number; + + /** + * 选项内容 + */ + itemContent?: string; + + /** + * 排序 + */ + sort?: number; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/apps/web-antd/src/api/property/customerService/questionnaire/questionnaire/index.ts b/apps/web-antd/src/api/property/customerService/questionnaire/questionnaire/index.ts new file mode 100644 index 00000000..06321b2c --- /dev/null +++ b/apps/web-antd/src/api/property/customerService/questionnaire/questionnaire/index.ts @@ -0,0 +1,61 @@ +import type { QuestionnaireVO, QuestionnaireForm, QuestionnaireQuery } from './model'; + +import type { ID, IDS } from '#/api/common'; +import type { PageResult } from '#/api/common'; + +import { commonExport } from '#/api/helper'; +import { requestClient } from '#/api/request'; + +/** +* 查询调查问卷列表 +* @param params +* @returns 调查问卷列表 +*/ +export function questionnaireList(params?: QuestionnaireQuery) { + return requestClient.get>('/property/questionnaire/list', { params }); +} + +/** + * 导出调查问卷列表 + * @param params + * @returns 调查问卷列表 + */ +export function questionnaireExport(params?: QuestionnaireQuery) { + return commonExport('/property/questionnaire/export', params ?? {}); +} + +/** + * 查询调查问卷详情 + * @param id id + * @returns 调查问卷详情 + */ +export function questionnaireInfo(id: ID) { + return requestClient.get(`/property/questionnaire/${id}`); +} + +/** + * 新增调查问卷 + * @param data + * @returns void + */ +export function questionnaireAdd(data: QuestionnaireForm) { + return requestClient.postWithMsg('/property/questionnaire', data); +} + +/** + * 更新调查问卷 + * @param data + * @returns void + */ +export function questionnaireUpdate(data: QuestionnaireForm) { + return requestClient.putWithMsg('/property/questionnaire', data); +} + +/** + * 删除调查问卷 + * @param id id + * @returns void + */ +export function questionnaireRemove(id: ID | IDS) { + return requestClient.deleteWithMsg(`/property/questionnaire/${id}`); +} diff --git a/apps/web-antd/src/api/property/customerService/questionnaire/questionnaire/model.d.ts b/apps/web-antd/src/api/property/customerService/questionnaire/questionnaire/model.d.ts new file mode 100644 index 00000000..97390bf9 --- /dev/null +++ b/apps/web-antd/src/api/property/customerService/questionnaire/questionnaire/model.d.ts @@ -0,0 +1,120 @@ +import type { PageQuery, BaseEntity } from '#/api/common'; +import type {QuestionForm} from "#/api/property/customerService/questionnaire/question/model"; + +export interface QuestionnaireVO { + /** + * id + */ + id: string | number; + + /** + * 标题 + */ + head: string; + + /** + * 描述 + */ + depict: string; + + /** + * 是否匿名收集 + */ + isAnonyCollec: string; + + /** + * 是否多次提交 + */ + isCommit: string; + + /** + * 截止日期 + */ + deadline: string; + + /** + * 状态(1草稿2已发布3未发布) + */ + status: string; + +} + +export interface QuestionnaireForm extends BaseEntity { + /** + * id + */ + id?: string | number; + + /** + * 标题 + */ + head?: string; + + /** + * 描述 + */ + depict?: string; + + /** + * 是否匿名收集 + */ + isAnonyCollec?: string; + + /** + * 是否多次提交 + */ + isCommit?: string; + + /** + * 截止日期 + */ + deadline?: string; + + /** + * 状态(1草稿2已发布3未发布) + */ + status?: string; + + /** + * 问题 + */ + questionnaireQuestions:QuestionForm[]; + +} + +export interface QuestionnaireQuery extends PageQuery { + /** + * 标题 + */ + head?: string; + + /** + * 描述 + */ + depict?: string; + + /** + * 是否匿名收集 + */ + isAnonyCollec?: string; + + /** + * 是否多次提交 + */ + isCommit?: string; + + /** + * 截止日期 + */ + deadline?: string; + + /** + * 状态(1草稿2已发布3未发布) + */ + status?: string; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/apps/web-antd/src/api/property/inspectionManagement/inspectionDetail/model.d.ts b/apps/web-antd/src/api/property/inspectionManagement/inspectionDetail/model.d.ts index 5750e1e1..7b5732cf 100644 --- a/apps/web-antd/src/api/property/inspectionManagement/inspectionDetail/model.d.ts +++ b/apps/web-antd/src/api/property/inspectionManagement/inspectionDetail/model.d.ts @@ -32,20 +32,59 @@ export interface TaskDetailVO { patrolType: string; /** - * 签到类型 + * 签到类型(1.现场拍照、2.摄像头签到、3.现场扫码) */ signType: string; + /** + * 实际巡检时间 + */ + actualInspectionTime: string; + + /** + * 实际签到状态(1已签到2.未签到) + */ + actualSignState: string; + /** * 巡检状态(0未完成,1已完成) */ inspectionState: string; /** - * 巡检照片 + * 巡检图片 */ - inspectionImag -e: string; + inspectionImage: string; + + /** + * 计划巡检人 + */ + planInspectionPerson: string; + + /** + * 实际巡检人 + */ + actualInspectionPerson: string; + + /** + * 任务状态 + */ + taskStatus: string; + + /** + * 巡检结果 + */ + inspectionResults: string; + + /** + * 巡检描述 + */ + inspectionDesc: string; + + /** + * 巡检位置 + */ + inspectionLocation: string; /** * 实际巡检时间 @@ -67,6 +106,11 @@ e: string; */ pointEndTime: string; + /** + * 搜索值 + */ + searchValue: string; + } export interface TaskDetailForm extends BaseEntity { @@ -101,20 +145,60 @@ export interface TaskDetailForm extends BaseEntity { patrolType?: string; /** - * 签到类型 + * 签到类型(1.现场拍照、2.摄像头签到、3.现场扫码) */ signType?: string; + /** + * 实际巡检时间 + */ + actualInspectionTime?: string; + + /** + * 实际签到状态(1已签到2.未签到) + */ + actualSignState?: string; + /** * 巡检状态(0未完成,1已完成) */ inspectionState?: string; /** - * 巡检照片 + * 巡检图片 */ inspectionImage?: string; + /** + * 计划巡检人 + */ + planInspectionPerson?: string; + + /** + * 实际巡检人 + */ + actualInspectionPerson?: string; + + /** + * 任务状态 + */ + taskStatus?: string; + + /** + * 巡检结果 + */ + inspectionResults?: string; + + /** + * 巡检描述 + */ + inspectionDesc?: string; + + /** + * 巡检位置 + */ + inspectionLocation?: string; + /** * 实际巡检时间 */ @@ -135,6 +219,11 @@ export interface TaskDetailForm extends BaseEntity { */ pointEndTime?: string; + /** + * 搜索值 + */ + searchValue?: string; + } export interface TaskDetailQuery extends PageQuery { @@ -164,20 +253,59 @@ export interface TaskDetailQuery extends PageQuery { patrolType?: string; /** - * 签到类型 + * 签到类型(1.现场拍照、2.摄像头签到、3.现场扫码) */ signType?: string; + /** + * 实际巡检时间 + */ + actualInspectionTime?: string; + + /** + * 实际签到状态(1已签到2.未签到) + */ + actualSignState?: string; + /** * 巡检状态(0未完成,1已完成) */ inspectionState?: string; /** - * 巡检照片 + * 巡检图片 */ - inspectionImag -e?: string; + inspectionImage?: string; + + /** + * 计划巡检人 + */ + planInspectionPerson?: string; + + /** + * 实际巡检人 + */ + actualInspectionPerson?: string; + + /** + * 任务状态 + */ + taskStatus?: string; + + /** + * 巡检结果 + */ + inspectionResults?: string; + + /** + * 巡检描述 + */ + inspectionDesc?: string; + + /** + * 巡检位置 + */ + inspectionLocation?: string; /** * 实际巡检时间 @@ -194,6 +322,11 @@ e?: string; */ pointEndTime?: string; + /** + * 搜索值 + */ + searchValue?: string; + /** * 日期范围参数 */ diff --git a/apps/web-antd/src/api/property/inspectionManagement/inspectionPoint/model.d.ts b/apps/web-antd/src/api/property/inspectionManagement/inspectionPoint/model.d.ts index dd4e4824..38196b80 100644 --- a/apps/web-antd/src/api/property/inspectionManagement/inspectionPoint/model.d.ts +++ b/apps/web-antd/src/api/property/inspectionManagement/inspectionPoint/model.d.ts @@ -46,6 +46,10 @@ export interface InspectionPointVO { */ searchValue: string; + itemName: string; + + createTime: string; + } export interface InspectionPointForm extends BaseEntity { diff --git a/apps/web-antd/src/api/property/resident/person/model.d.ts b/apps/web-antd/src/api/property/resident/person/model.d.ts index 57f03f6b..0e3d6e57 100644 --- a/apps/web-antd/src/api/property/resident/person/model.d.ts +++ b/apps/web-antd/src/api/property/resident/person/model.d.ts @@ -24,7 +24,7 @@ export interface PersonVO { /** * 性别 */ - gender: number + gender: string | number /** * 人脸图片 @@ -75,6 +75,10 @@ export interface PersonVO { authEndDate?: string + authTime: any[] + + rosterType?: string | number + } export interface PersonForm extends BaseEntity { @@ -293,7 +297,7 @@ export interface Person extends BaseEntity { * @param file excel文件 */ export interface PerssonImportParam { - updateSupport: boolean; - unitId: number; - file: Blob | File; + updateSupport: boolean + unitId: number + file: Blob | File } diff --git a/apps/web-antd/src/api/property/visitorManagement/model.d.ts b/apps/web-antd/src/api/property/visitorManagement/model.d.ts index eec10054..c687f880 100644 --- a/apps/web-antd/src/api/property/visitorManagement/model.d.ts +++ b/apps/web-antd/src/api/property/visitorManagement/model.d.ts @@ -70,6 +70,10 @@ export interface VisitorManagementVO { * 预约状态(0:待确认,1:已确认,2:已取消,3:已完成) */ serveStatus: number; + /** + * 身份证号 + */ + idCard: string; } export interface VisitorManagementForm extends BaseEntity { diff --git a/apps/web-antd/src/api/sis/accessControl/index.ts b/apps/web-antd/src/api/sis/accessControl/index.ts index e6798260..b209b5ef 100644 --- a/apps/web-antd/src/api/sis/accessControl/index.ts +++ b/apps/web-antd/src/api/sis/accessControl/index.ts @@ -2,12 +2,12 @@ import type { AccessControlForm, AccessControlQuery, AccessControlVO, -} from './model' +} from './model'; -import type { ID, IDS, PageResult, TreeNode } from '#/api/common' +import type { ID, IDS, PageResult, TreeNode } from '#/api/common'; -import { commonExport } from '#/api/helper' -import { requestClient } from '#/api/request' +import { commonExport } from '#/api/helper'; +import { requestClient } from '#/api/request'; /** * 查询门禁管理列表 @@ -18,7 +18,7 @@ export function accessControlList(params?: AccessControlQuery) { return requestClient.get>( '/sis/accessControl/list', { params }, - ) + ); } /** @@ -27,7 +27,7 @@ export function accessControlList(params?: AccessControlQuery) { * @returns 门禁管理列表 */ export function accessControlExport(params?: AccessControlQuery) { - return commonExport('/sis/accessControl/export', params ?? {}) + return commonExport('/sis/accessControl/export', params ?? {}); } /** @@ -36,7 +36,7 @@ export function accessControlExport(params?: AccessControlQuery) { * @returns 门禁管理详情 */ export function accessControlInfo(id: ID) { - return requestClient.get(`/sis/accessControl/${id}`) + return requestClient.get(`/sis/accessControl/${id}`); } /** @@ -45,7 +45,7 @@ export function accessControlInfo(id: ID) { * @returns void */ export function accessControlAdd(data: AccessControlForm) { - return requestClient.postWithMsg('/sis/accessControl', data) + return requestClient.postWithMsg('/sis/accessControl', data); } /** @@ -54,7 +54,7 @@ export function accessControlAdd(data: AccessControlForm) { * @returns void */ export function accessControlUpdate(data: AccessControlForm) { - return requestClient.putWithMsg('/sis/accessControl', data) + return requestClient.putWithMsg('/sis/accessControl', data); } /** @@ -63,7 +63,7 @@ export function accessControlUpdate(data: AccessControlForm) { * @returns void */ export function accessControlRemove(id: ID | IDS) { - return requestClient.deleteWithMsg(`/sis/accessControl/${id}`) + return requestClient.deleteWithMsg(`/sis/accessControl/${id}`); } /** @@ -71,7 +71,7 @@ export function accessControlRemove(id: ID | IDS) { * @returns void */ export function queryTree() { - return requestClient.get[]>(`/sis/accessControl/tree`) + return requestClient.get[]>(`/sis/accessControl/tree`); } /** @@ -79,5 +79,12 @@ export function queryTree() { * @returns void */ export function accessControlSync() { - return requestClient.get(`/sis/accessControl/sync`) + return requestClient.get(`/sis/accessControl/sync`); +} + +export function remoteOpenDoor(params: any) { + return requestClient.post( + `/sis/accessControl/e8/remoteOpenDoor`, + params, + ); } diff --git a/apps/web-antd/src/api/sis/alarmEventAttachments/index.ts b/apps/web-antd/src/api/sis/alarmEventAttachments/index.ts new file mode 100644 index 00000000..14be4aca --- /dev/null +++ b/apps/web-antd/src/api/sis/alarmEventAttachments/index.ts @@ -0,0 +1,61 @@ +import type { AlarmEventAttachmentsVO, AlarmEventAttachmentsForm, AlarmEventAttachmentsQuery } from './model'; + +import type { ID, IDS } from '#/api/common'; +import type { PageResult } from '#/api/common'; + +import { commonExport } from '#/api/helper'; +import { requestClient } from '#/api/request'; + +/** +* 查询【请填写功能名称】列表 +* @param params +* @returns 【请填写功能名称】列表 +*/ +export function alarmEventAttachmentsList(params?: AlarmEventAttachmentsQuery) { + return requestClient.get>('/sis/alarmEventAttachments/list', { params }); +} + +/** + * 导出【请填写功能名称】列表 + * @param params + * @returns 【请填写功能名称】列表 + */ +export function alarmEventAttachmentsExport(params?: AlarmEventAttachmentsQuery) { + return commonExport('/sis/alarmEventAttachments/export', params ?? {}); +} + +/** + * 查询【请填写功能名称】详情 + * @param id id + * @returns 【请填写功能名称】详情 + */ +export function alarmEventAttachmentsInfo(id: ID) { + return requestClient.get(`/sis/alarmEventAttachments/${id}`); +} + +/** + * 新增【请填写功能名称】 + * @param data + * @returns void + */ +export function alarmEventAttachmentsAdd(data: AlarmEventAttachmentsForm) { + return requestClient.postWithMsg('/sis/alarmEventAttachments', data); +} + +/** + * 更新【请填写功能名称】 + * @param data + * @returns void + */ +export function alarmEventAttachmentsUpdate(data: AlarmEventAttachmentsForm) { + return requestClient.putWithMsg('/sis/alarmEventAttachments', data); +} + +/** + * 删除【请填写功能名称】 + * @param id id + * @returns void + */ +export function alarmEventAttachmentsRemove(id: ID | IDS) { + return requestClient.deleteWithMsg(`/sis/alarmEventAttachments/${id}`); +} diff --git a/apps/web-antd/src/api/sis/alarmEventAttachments/model.d.ts b/apps/web-antd/src/api/sis/alarmEventAttachments/model.d.ts new file mode 100644 index 00000000..779e6f32 --- /dev/null +++ b/apps/web-antd/src/api/sis/alarmEventAttachments/model.d.ts @@ -0,0 +1,69 @@ +import type { PageQuery, BaseEntity } from '#/api/common'; + +export interface AlarmEventAttachmentsVO { + /** + * 主键id + */ + id: string | number; + + /** + * 事件id + */ + eventId: string | number; + + /** + * 时间图片id + */ + ossId: string | number; + + /** + * 1:图片,2:文件;3视频 + */ + type: number; + +} + +export interface AlarmEventAttachmentsForm extends BaseEntity { + /** + * 主键id + */ + id?: string | number; + + /** + * 事件id + */ + eventId?: string | number; + + /** + * 时间图片id + */ + ossId?: string | number; + + /** + * 1:图片,2:文件;3视频 + */ + type?: number; + +} + +export interface AlarmEventAttachmentsQuery extends PageQuery { + /** + * 事件id + */ + eventId?: string | number; + + /** + * 时间图片id + */ + ossId?: string | number; + + /** + * 1:图片,2:文件;3视频 + */ + type?: number; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/apps/web-antd/src/api/sis/alarmEvents/index.ts b/apps/web-antd/src/api/sis/alarmEvents/index.ts new file mode 100644 index 00000000..58231b76 --- /dev/null +++ b/apps/web-antd/src/api/sis/alarmEvents/index.ts @@ -0,0 +1,61 @@ +import type { AlarmEventsVO, AlarmEventsForm, AlarmEventsQuery } from './model'; + +import type { ID, IDS } from '#/api/common'; +import type { PageResult } from '#/api/common'; + +import { commonExport } from '#/api/helper'; +import { requestClient } from '#/api/request'; + +/** +* 查询【请填写功能名称】列表 +* @param params +* @returns 【请填写功能名称】列表 +*/ +export function alarmEventsList(params?: AlarmEventsQuery) { + return requestClient.get>('/sis/alarmEvents/list', { params }); +} + +/** + * 导出【请填写功能名称】列表 + * @param params + * @returns 【请填写功能名称】列表 + */ +export function alarmEventsExport(params?: AlarmEventsQuery) { + return commonExport('/sis/alarmEvents/export', params ?? {}); +} + +/** + * 查询【请填写功能名称】详情 + * @param id id + * @returns 【请填写功能名称】详情 + */ +export function alarmEventsInfo(id: ID) { + return requestClient.get(`/sis/alarmEvents/${id}`); +} + +/** + * 新增【请填写功能名称】 + * @param data + * @returns void + */ +export function alarmEventsAdd(data: AlarmEventsForm) { + return requestClient.postWithMsg('/sis/alarmEvents', data); +} + +/** + * 更新【请填写功能名称】 + * @param data + * @returns void + */ +export function alarmEventsUpdate(data: AlarmEventsForm) { + return requestClient.putWithMsg('/sis/alarmEvents', data); +} + +/** + * 删除【请填写功能名称】 + * @param id id + * @returns void + */ +export function alarmEventsRemove(id: ID | IDS) { + return requestClient.deleteWithMsg(`/sis/alarmEvents/${id}`); +} diff --git a/apps/web-antd/src/api/sis/alarmEvents/model.d.ts b/apps/web-antd/src/api/sis/alarmEvents/model.d.ts new file mode 100644 index 00000000..cfa2846d --- /dev/null +++ b/apps/web-antd/src/api/sis/alarmEvents/model.d.ts @@ -0,0 +1,159 @@ +import type { PageQuery, BaseEntity } from '#/api/common'; + +export interface AlarmEventsVO { + /** + * 报警记录ID + */ + id: string | number; + + /** + * 报警事件类型 + */ + type: number; + + /** + * 报警记录级别(1:一般,2:中级,3:紧急) + */ + level: number; + + /** + * 报警设备ip + */ + deviceIp: string; + + /** + * 报警设备名称 + */ + deviceName: string; + + /** + * 设备所属区域id + */ + deviceGroupId: string | number; + + /** + * 设备所属区域名称 + */ + deviceGroupName: string; + + /** + * 设备告警时间 + */ + reportTime: string; + + /** + * 1:未处理,2:已处理-忽略,3:已处理-生成工单 + */ + state: number; + + /** + * 工单id,需要state=3才会写入 + */ + workOrderId: string | number; + +} + +export interface AlarmEventsForm extends BaseEntity { + /** + * 报警记录ID + */ + id?: string | number; + + /** + * 报警事件类型 + */ + type?: number; + + /** + * 报警记录级别(1:一般,2:中级,3:紧急) + */ + level?: number; + + /** + * 报警设备ip + */ + deviceIp?: string; + + /** + * 报警设备名称 + */ + deviceName?: string; + + /** + * 设备所属区域id + */ + deviceGroupId?: string | number; + + /** + * 设备所属区域名称 + */ + deviceGroupName?: string; + + /** + * 设备告警时间 + */ + reportTime?: string; + + /** + * 1:未处理,2:已处理-忽略,3:已处理-生成工单 + */ + state?: number; + + /** + * 工单id,需要state=3才会写入 + */ + workOrderId?: string | number; + +} + +export interface AlarmEventsQuery extends PageQuery { + /** + * 报警事件类型 + */ + type?: number; + + /** + * 报警记录级别(1:一般,2:中级,3:紧急) + */ + level?: number; + + /** + * 报警设备ip + */ + deviceIp?: string; + + /** + * 报警设备名称 + */ + deviceName?: string; + + /** + * 设备所属区域id + */ + deviceGroupId?: string | number; + + /** + * 设备所属区域名称 + */ + deviceGroupName?: string; + + /** + * 设备告警时间 + */ + reportTime?: string; + + /** + * 1:未处理,2:已处理-忽略,3:已处理-生成工单 + */ + state?: number; + + /** + * 工单id,需要state=3才会写入 + */ + workOrderId?: string | number; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/apps/web-antd/src/api/sis/deviceManage/model.d.ts b/apps/web-antd/src/api/sis/deviceManage/model.d.ts index 10b2f34b..3e27e50f 100644 --- a/apps/web-antd/src/api/sis/deviceManage/model.d.ts +++ b/apps/web-antd/src/api/sis/deviceManage/model.d.ts @@ -1,182 +1,194 @@ -import type { BaseEntity, PageQuery } from '#/api/common' +import type { BaseEntity, PageQuery } from '#/api/common'; export interface DeviceManageVO { /** * 主键id */ - id: string | number + id: string | number; /** * 设备编码 */ - deviceNo: string + deviceNo: string; /** * 设备名称 */ - deviceName: string + deviceName: string; /** * 设备ip */ - deviceIp: string + deviceIp: string; /** * 设备端口 */ - devicePort: number + devicePort: number; /** * 设备账号 */ - deviceAccount: string + deviceAccount: string; /** * 设备密码 */ - devicePwd: string + devicePwd: string; /** * 设备 */ - deviceMac: string + deviceMac: string; /** * 设备在线状态 0:离线 1:在线 2:未知 */ - deviceStatus: number + deviceStatus: number; /** * 父级设备id */ - parentId: string | number + parentId: string | number; /** * 设备通道编号 */ - channelNo: string + channelNo: string; /** * 录像机ip */ - vcrIp: string + vcrIp: string; /** * 录像机端口 */ - vcrPort: number + vcrPort: number; /** * 录像机账号 */ - vcrAccount: string + vcrAccount: string; /** * 录像机密码 */ - vcrPwd: string + vcrPwd: string; /** * 门禁id */ - accessControlId: string | number + accessControlId: string | number; /** * 楼层id */ - floorId: string | number + floorId: string | number; + + lon: number; + + lat: number; } export interface DeviceManageForm extends BaseEntity { /** * 主键id */ - id?: string | number + id?: string | number; /** * 设备编码 */ - deviceNo?: string + deviceNo?: string; /** * 设备名称 */ - deviceName?: string + deviceName?: string; /** * 设备ip */ - deviceIp?: string + deviceIp?: string; /** * 设备端口 */ - devicePort?: number + devicePort?: number; /** * 设备账号 */ - deviceAccount?: string + deviceAccount?: string; /** * 设备密码 */ - devicePwd?: string + devicePwd?: string; /** * 设备 */ - deviceMac?: string + deviceMac?: string; + + lon: number; + + lat: number; /** * 设备在线状态 0:离线 1:在线 2:未知 */ - deviceStatus?: number + deviceStatus?: number; } export interface DeviceManageQuery extends PageQuery { /** * 设备编码 */ - deviceNo?: string + deviceNo?: string; /** * 设备名称 */ - deviceName?: string + deviceName?: string; /** * 设备ip */ - deviceIp?: string + deviceIp?: string; /** * 设备端口 */ - devicePort?: number + devicePort?: number; /** * 设备账号 */ - deviceAccount?: string + deviceAccount?: string; /** * 设备密码 */ - devicePwd?: string + devicePwd?: string; /** * 设备 */ - deviceMac?: string + deviceMac?: string; + + lon?: number; + + lat?: number; /** * 设备在线状态 0:离线 1:在线 2:未知 */ - deviceStatus?: number + deviceStatus?: number; /** * 日期范围参数 */ - params?: any + params?: any; } diff --git a/apps/web-antd/src/api/sis/stream/index.ts b/apps/web-antd/src/api/sis/stream/index.ts index 65f08721..87e18d94 100644 --- a/apps/web-antd/src/api/sis/stream/index.ts +++ b/apps/web-antd/src/api/sis/stream/index.ts @@ -12,9 +12,21 @@ export function addStreamProxy(params?: any) { params, ); } + export function addFFmpegStreamProxy(params?: any) { return requestClient.post( - 'sis/stream/realtime/addFfmpeg', + 'sis/stream/FFmpeg/proxy', + params, + ); +} + +export function addMediaStreamProxy(params?: any) { + return requestClient.post('sis/stream/proxy', params); +} + +export function addFFmpegMediaStreamProxy(params?: any) { + return requestClient.post( + 'sis/stream/ffmpeg/proxy', params, ); } diff --git a/apps/web-antd/src/assets/map/alarm1.png b/apps/web-antd/src/assets/map/alarm1.png new file mode 100644 index 00000000..bc1175be Binary files /dev/null and b/apps/web-antd/src/assets/map/alarm1.png differ diff --git a/apps/web-antd/src/assets/map/alarm2.png b/apps/web-antd/src/assets/map/alarm2.png new file mode 100644 index 00000000..a9705e7e Binary files /dev/null and b/apps/web-antd/src/assets/map/alarm2.png differ diff --git a/apps/web-antd/src/assets/map/camear.png b/apps/web-antd/src/assets/map/camear.png new file mode 100644 index 00000000..f88584ca Binary files /dev/null and b/apps/web-antd/src/assets/map/camear.png differ diff --git a/apps/web-antd/src/assets/map/video-bg.png b/apps/web-antd/src/assets/map/video-bg.png new file mode 100644 index 00000000..5ebd22f2 Binary files /dev/null and b/apps/web-antd/src/assets/map/video-bg.png differ diff --git a/apps/web-antd/src/layouts/basic.vue b/apps/web-antd/src/layouts/basic.vue index 4d5fee5d..fffb92c6 100644 --- a/apps/web-antd/src/layouts/basic.vue +++ b/apps/web-antd/src/layouts/basic.vue @@ -11,7 +11,6 @@ import { GiteeIcon, GitHubOutlined, UserOutlined, - } from '@vben/icons'; import { BasicLayout, @@ -58,34 +57,34 @@ const menus = computed(() => { icon: UserOutlined, text: $t('ui.widgets.profile'), }, + // { + // handler: () => { + // openWindow('https://gitee.com/dapppp/ruoyi-plus-vben5', { + // target: '_blank', + // }); + // }, + // icon: () => h(GiteeIcon, { class: 'text-red-800' }), + // text: 'Gitee项目地址', + // }, + // { + // handler: () => { + // openWindow(VBEN_GITHUB_URL, { + // target: '_blank', + // }); + // }, + // icon: GitHubOutlined, + // text: 'Vben官方地址', + // }, + // { + // handler: () => { + // openWindow(`${VBEN_GITHUB_URL}/issues`, { + // target: '_blank', + // }); + // }, + // icon: CircleHelp, + // text: $t('ui.widgets.qa'), + // }, { - handler: () => { - openWindow('https://gitee.com/dapppp/ruoyi-plus-vben5', { - target: '_blank', - }); - }, - icon: () => h(GiteeIcon, { class: 'text-red-800' }), - text: 'Gitee项目地址', - }, - { - handler: () => { - openWindow(VBEN_GITHUB_URL, { - target: '_blank', - }); - }, - icon: GitHubOutlined, - text: 'Vben官方地址', - }, - { - handler: () => { - openWindow(`${VBEN_GITHUB_URL}/issues`, { - target: '_blank', - }); - }, - icon: CircleHelp, - text: $t('ui.widgets.qa'), - }, - { handler: () => { router.push('/navigation'); }, diff --git a/apps/web-antd/src/utils/video.ts b/apps/web-antd/src/utils/video.ts new file mode 100644 index 00000000..606cee2e --- /dev/null +++ b/apps/web-antd/src/utils/video.ts @@ -0,0 +1,21 @@ +/** + * 验证浏览器是否支持播放h265 编码的视频流 + */ +export function checkHEVCSupport() { + const video = document.createElement('video'); + const h265Support = { + hevc: false, + hvc1: false, + }; + + // 测试不同的HEVC MIME类型 + if (video.canPlayType) { + h265Support.hevc = + video.canPlayType('video/mp4; codecs="hev1.1.6.L93.B0"') !== ''; + h265Support.hvc1 = + video.canPlayType('video/mp4; codecs="hvc1.1.6.L93.B0"') !== ''; + } + const result = h265Support.hevc || h265Support.hvc1; + console.log('当前浏览器是否支持h265:' + result); + return result; +} diff --git a/apps/web-antd/src/views/property/assetManage/depot/data.ts b/apps/web-antd/src/views/property/assetManage/depot/data.ts index 3d8cabf5..afc2f889 100644 --- a/apps/web-antd/src/views/property/assetManage/depot/data.ts +++ b/apps/web-antd/src/views/property/assetManage/depot/data.ts @@ -2,6 +2,8 @@ import type {FormSchemaGetter} from '#/adapter/form'; import type {VxeGridProps} from '#/adapter/vxe-table'; import {renderDict} from "#/utils/render"; import {getDictOptions} from "#/utils/dict"; +import {z} from "#/adapter/form"; +import {$t} from "@vben/locales"; export const querySchema: FormSchemaGetter = () => [ @@ -30,18 +32,10 @@ export const querySchema: FormSchemaGetter = () => [ export const columns: VxeGridProps['columns'] = [ {type: 'checkbox', width: 60}, - { - title: '序号', - field: 'id', - slots: { - default: ({rowIndex}) => { - return (rowIndex + 1).toString(); - } - } - }, { title: '仓库名称', field: 'depotName', + width:200 }, { title: '仓库类型', @@ -50,21 +44,23 @@ export const columns: VxeGridProps['columns'] = [ default: ({row}) => { return renderDict(row.modelType, 'wy_cclx') } - } + }, + width:180 }, { title: '状态', field: 'state', - slots: {default: 'state'} + slots: {default: 'state'}, + width:120 + }, + { + title: '创建时间', + field: 'createTime', }, { title: '描述信息', field: 'msg', - }, - - { - title: '创建时间', - field: 'createTime', + minWidth:180, }, { field: 'action', @@ -89,7 +85,7 @@ export const modalSchema: FormSchemaGetter = () => [ label: '仓库名称', fieldName: 'depotName', component: 'Input', - rules:'required' + rules: z.string().min(1,'请输入仓库名称').max(30, { message: '仓库名称过长' }), }, { label: '仓库类型', diff --git a/apps/web-antd/src/views/property/attendanceManagement/attendanceArea/attendanceArea-modal.vue b/apps/web-antd/src/views/property/attendanceManagement/attendanceArea/attendanceArea-modal.vue new file mode 100644 index 00000000..36ca4e4a --- /dev/null +++ b/apps/web-antd/src/views/property/attendanceManagement/attendanceArea/attendanceArea-modal.vue @@ -0,0 +1,101 @@ + + + + diff --git a/apps/web-antd/src/views/property/attendanceManagement/attendanceArea/data.ts b/apps/web-antd/src/views/property/attendanceManagement/attendanceArea/data.ts new file mode 100644 index 00000000..9f0abf52 --- /dev/null +++ b/apps/web-antd/src/views/property/attendanceManagement/attendanceArea/data.ts @@ -0,0 +1,79 @@ +import type { FormSchemaGetter } from '#/adapter/form'; +import type { VxeGridProps } from '#/adapter/vxe-table'; +import { deviceManageList } from '#/api/sis/deviceManage'; +export const querySchema: FormSchemaGetter = () => [ + { + component: 'Input', + fieldName: 'area', + label: '区域', + }, +]; + +// 需要使用i18n注意这里要改成getter形式 否则切换语言不会刷新 +// export const columns: () => VxeGridProps['columns'] = () => [ +export const columns: VxeGridProps['columns'] = [ + { type: 'checkbox', width: 60 }, + { + title: '区域', + field: 'area', + width: 'auto', + }, + { + title: '摄像机id', + field: 'deviceManageId', + minWidth: 300, + }, + + { + title: '备注', + field: 'reamark', + }, + { + field: 'action', + fixed: 'right', + slots: { default: 'action' }, + title: '操作', + width: 180, + }, +]; + +export const modalSchema: FormSchemaGetter = () => [ + { + label: '主键id', + fieldName: 'id', + component: 'Input', + dependencies: { + show: () => false, + triggerFields: [''], + }, + }, + { + label: '区域', + fieldName: 'area', + component: 'Input', + }, + { + label: '摄像机', + fieldName: 'deviceManageId', + component: 'ApiSelect', + componentProps: { + api: async () => { + const res = await deviceManageList({ + pageNum: 1, + pageSize: 10000, + deviceType: 1, + }); + return res; + }, + resultField: 'rows', + labelField: 'deviceName', + valueField: 'id', + mode: 'multiple', + }, + }, + { + label: '备注', + fieldName: 'reamark', + component: 'Input', + }, +]; diff --git a/apps/web-antd/src/views/property/attendanceManagement/attendanceArea/index.vue b/apps/web-antd/src/views/property/attendanceManagement/attendanceArea/index.vue new file mode 100644 index 00000000..52cc246e --- /dev/null +++ b/apps/web-antd/src/views/property/attendanceManagement/attendanceArea/index.vue @@ -0,0 +1,182 @@ + + + diff --git a/apps/web-antd/src/views/property/attendanceManagement/shiftSetting/shift-modal.vue b/apps/web-antd/src/views/property/attendanceManagement/shiftSetting/shift-modal.vue index dc2ff70d..838d5b3e 100644 --- a/apps/web-antd/src/views/property/attendanceManagement/shiftSetting/shift-modal.vue +++ b/apps/web-antd/src/views/property/attendanceManagement/shiftSetting/shift-modal.vue @@ -63,7 +63,6 @@ const [BasicModal, modalApi] = useVbenModal({ ]; } record.status = record.status?.toString(); - console.log(record); await formApi.setValues(record); } await markInitialized(); diff --git a/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/arrangement-modal.vue b/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/arrangement-modal.vue index d4e5ccd3..13251334 100644 --- a/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/arrangement-modal.vue +++ b/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/arrangement-modal.vue @@ -1,18 +1,9 @@ + + + + + + diff --git a/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/type.d.ts b/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/type.d.ts index f3685f2a..9f4afa2d 100644 --- a/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/type.d.ts +++ b/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/type.d.ts @@ -1,67 +1,52 @@ //列表数据,用于展示人员列表 export interface PersonVO { - /** - * 主键id - */ - id: string | number; - - /** - * 用户id - */ - userId: string | number; - - /** - * 用户名称 - */ + userId: string; + tenantId: string; + deptId: number; userName: string; - - /** - * 联系电话 - */ - phone: string; - - /** - * 性别 - */ - gender: number; - - /** - * 人脸图片 - */ - img: string; - - /** - * 所属单位id - */ - unitId: string | number; - - /** - * 所属单位名称 - */ - unitName: string; - - /** - * 入驻位置 - */ - locathon: string; - - /** - * 入驻时间 - */ - time: string; - - /** - * 车牌号码 - */ - carNumber: string; - - /** - * 状态 - */ - state: number | string; - - /** - * 备注 - */ + nickName: string; + userType: string; + email: string; + phonenumber: string; + sex: string; + avatar?: string; + status: string; + loginIp: string; + loginDate: string; remark: string; + createTime: string; + dept: Dept; + roles: Role[]; + roleIds?: string[]; + postIds?: number[]; + roleId: string; + deptName: string; +} +export interface Dept { + deptId: number; + parentId: number; + parentName?: string; + ancestors: string; + deptName: string; + orderNum: number; + leader: string; + phone?: string; + email?: string; + status: string; + createTime?: string; +} + +export interface Role { + roleId: string; + roleName: string; + roleKey: string; + roleSort: number; + dataScope: string; + menuCheckStrictly?: boolean; + deptCheckStrictly?: boolean; + status: string; + remark: string; + createTime?: string; + flag: boolean; + superAdmin: boolean; } diff --git a/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/unit-person-modal.vue b/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/unit-person-modal.vue index d2b9a3b4..d8d7ae92 100644 --- a/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/unit-person-modal.vue +++ b/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/unit-person-modal.vue @@ -1,35 +1,22 @@ diff --git a/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/workforce-day-detail.vue b/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/workforce-day-detail.vue new file mode 100644 index 00000000..696610df --- /dev/null +++ b/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/workforce-day-detail.vue @@ -0,0 +1,107 @@ + + + + diff --git a/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/workforce-detail.vue b/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/workforce-detail.vue new file mode 100644 index 00000000..b5e64776 --- /dev/null +++ b/apps/web-antd/src/views/property/attendanceManagement/workforceManagement/workforce-detail.vue @@ -0,0 +1,351 @@ + + + + diff --git a/apps/web-antd/src/views/property/businessManagement/workOrders/data.ts b/apps/web-antd/src/views/property/businessManagement/workOrders/data.ts index 0b7b199a..0239fe09 100644 --- a/apps/web-antd/src/views/property/businessManagement/workOrders/data.ts +++ b/apps/web-antd/src/views/property/businessManagement/workOrders/data.ts @@ -51,6 +51,16 @@ export const columns: VxeGridProps['columns'] = [ field: 'typeName', minWidth: 150, }, + { + title: '上报类型', + field: 'reportingType', + slots: { + default: ({row}) => { + return renderDict(row.reportingType, 'wy_gdsblx'); + }, + }, + width: 100, + }, { title: '派单时间', field: 'dispatchTime', @@ -164,6 +174,15 @@ export const modalSchema: FormSchemaGetter = () => [ }, rules: 'selectRequired', }, + { + label: '上报类型', + fieldName: 'reportingType', + component: 'Select', + componentProps: { + options: getDictOptions('wy_gdsblx'), + }, + rules: 'selectRequired', + }, // { // label: '状态', // fieldName: 'status', @@ -206,6 +225,7 @@ export const modalSchema: FormSchemaGetter = () => [ fieldName: 'location', component: 'Input', rules: 'selectRequired', + formItemClass:'col-span-2' }, // { // label: '计划完成时间', @@ -234,6 +254,7 @@ export const modalSchema: FormSchemaGetter = () => [ label: '备注', fieldName: 'remark', component: 'Textarea', + formItemClass:'col-span-2' }, // { // label: '是否超时', diff --git a/apps/web-antd/src/views/property/businessManagement/workOrders/work-orders-detail.vue b/apps/web-antd/src/views/property/businessManagement/workOrders/work-orders-detail.vue index 95c8420c..2d2f06f0 100644 --- a/apps/web-antd/src/views/property/businessManagement/workOrders/work-orders-detail.vue +++ b/apps/web-antd/src/views/property/businessManagement/workOrders/work-orders-detail.vue @@ -42,7 +42,7 @@ async function handleOpenChange(open: boolean) { - - - - - - - - - - + - + + diff --git a/apps/web-antd/src/views/property/inspectionManagement/inspectionPlan/data.ts b/apps/web-antd/src/views/property/inspectionManagement/inspectionPlan/data.ts index 95fd466a..9e269ea2 100644 --- a/apps/web-antd/src/views/property/inspectionManagement/inspectionPlan/data.ts +++ b/apps/web-antd/src/views/property/inspectionManagement/inspectionPlan/data.ts @@ -116,7 +116,7 @@ export const modalSchema: FormSchemaGetter = () => [ label: '计划名称', fieldName: 'planName', component: 'Input', - rules: 'required', + rules: z.string().min(1,'请输入计划名称').max(30, { message: '计划名称过长' }), }, { label: '巡检路线', diff --git a/apps/web-antd/src/views/property/inspectionManagement/inspectionPoint/data.ts b/apps/web-antd/src/views/property/inspectionManagement/inspectionPoint/data.ts index a80edc9a..b6d51485 100644 --- a/apps/web-antd/src/views/property/inspectionManagement/inspectionPoint/data.ts +++ b/apps/web-antd/src/views/property/inspectionManagement/inspectionPoint/data.ts @@ -50,6 +50,13 @@ export const columns: VxeGridProps['columns'] = [ title: '创建时间', field: 'createTime', }, + { + title: '二维码', + field: 'qrcode', + slots:{ + default: 'qrcode' + } + }, { title: '备注', field: 'remark', diff --git a/apps/web-antd/src/views/property/inspectionManagement/inspectionPoint/index.vue b/apps/web-antd/src/views/property/inspectionManagement/inspectionPoint/index.vue index 156f113a..bce8238d 100644 --- a/apps/web-antd/src/views/property/inspectionManagement/inspectionPoint/index.vue +++ b/apps/web-antd/src/views/property/inspectionManagement/inspectionPoint/index.vue @@ -1,7 +1,7 @@ + + diff --git a/apps/web-antd/src/views/property/inspectionManagement/inspectionPoint/point-detail.vue b/apps/web-antd/src/views/property/inspectionManagement/inspectionPoint/point-detail.vue new file mode 100644 index 00000000..7b9fe199 --- /dev/null +++ b/apps/web-antd/src/views/property/inspectionManagement/inspectionPoint/point-detail.vue @@ -0,0 +1,64 @@ + + + diff --git a/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/index.vue b/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/index.vue index a5a30d0e..1bc29de5 100644 --- a/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/index.vue +++ b/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/index.vue @@ -154,6 +154,6 @@ const handleUpdate = (dataSet) => { - + diff --git a/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/inspectionRoute-modal.vue b/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/inspectionRoute-modal.vue index 18f22086..284f9a52 100644 --- a/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/inspectionRoute-modal.vue +++ b/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/inspectionRoute-modal.vue @@ -7,7 +7,6 @@ import { useVbenForm } from '#/adapter/form'; import { inspectionRouteAdd, inspectionRouteInfo, - inspectionRouteList, inspectionRouteUpdate } from '#/api/property/inspectionManagement/inspectionRoute'; import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; @@ -62,11 +61,14 @@ const [BasicModal, modalApi] = useVbenModal({ if (isUpdate.value && id) { const record = await inspectionRouteInfo(id); pointList.value = (record.inspectionRoutePointVoList || []).map(item => ({ + id: item.id, pointId: item.pointId ?? '', pointName: item.pointName ?? '', + startTime: item.startTime ?? '', + endTime: item.endTime ?? '', + sort: item.sort ?? '', })); await tableApi.reload(); - console.log(pointList.value,111) await formApi.setValues(record); } await markInitialized(); @@ -83,10 +85,10 @@ async function handleConfirm() { } let data = { ...cloneDeep(await formApi.getValues()), - inspectionRoutePointBoList:[pointData.value] + inspectionRoutePointBoList:[...pointList.value] } - console.log(data,333) await (isUpdate.value ? inspectionRouteUpdate(data) : inspectionRouteAdd(data)); + pointList.value = [] resetInitialized(); emit('reload'); modalApi.close(); @@ -99,9 +101,11 @@ async function handleConfirm() { async function handleClosed() { await formApi.resetForm(); + pointList.value = [] resetInitialized(); } +const pointItem = ref([]) async function queryWorkOrdersType() { let params = { pageSize: 1000, @@ -112,6 +116,10 @@ async function queryWorkOrdersType() { label: item.pointName, value: item.id, })); + pointItem.value = res.rows.map((item) => ({ + pointId: item.id, + pointName: item.pointName, + })); tableApi.formApi.updateSchema([{ componentProps: () => ({ options: options, @@ -166,7 +174,6 @@ const gridOptions: VxeGridProps = { }; const [BasicTable, tableApi] = useVbenVxeGrid({ - formOptions, gridOptions, }); @@ -180,15 +187,20 @@ function handleAdd() { } async function handleEdit(row: Required) { - pointModalApi.setData({ id: row.id }); + pointModalApi.setData({ row }); pointModalApi.open(); } -const pointData = ref({}) const handlePoint = (data) => { data.startTime = dayjs(data.startTime).format('YYYY-MM-DD HH:mm:ss') data.endTime = dayjs(data.endTime).format('YYYY-MM-DD HH:mm:ss') - pointData.value = data; + data.pointName = pointItem.value.find(item => item.pointId === data.pointId)?.pointName; + const existingIndex = pointList.value.findIndex(item => item.pointId === data.pointId); + if (existingIndex !== -1) { + pointList.value[existingIndex] = data; + } else { + pointList.value.push(data); + } }; @@ -196,7 +208,7 @@ const handlePoint = (data) => { - + - + diff --git a/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/point-modal.vue b/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/point-modal.vue index c21b83c9..34623aed 100644 --- a/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/point-modal.vue +++ b/apps/web-antd/src/views/property/inspectionManagement/inspectionRoute/point-modal.vue @@ -2,7 +2,7 @@ import { useVbenModal } from '@vben/common-ui'; import { cloneDeep } from '@vben/utils'; import { useVbenForm } from '#/adapter/form'; -import { inspectionRouteInfo } from '#/api/property/inspectionManagement/inspectionRoute'; +import dayjs from 'dayjs'; import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; import { inspectionPointList, @@ -34,6 +34,13 @@ const { onBeforeClose, markInitialized, resetInitialized } = useBeforeCloseDiff( }, ); +const props = defineProps({ + pointList: { + type: Array, + default: () => [], + }, +}); + const [BasicModal, modalApi] = useVbenModal({ class: 'w-[550px]', fullscreenButton: false, @@ -45,13 +52,14 @@ const [BasicModal, modalApi] = useVbenModal({ return null; } modalApi.modalLoading(true); + const { row } = modalApi.getData() as { row?: number | string }; + isUpdate.value = !!row; await queryWorkOrdersType() - const { id } = modalApi.getData() as { id?: number | string }; - isUpdate.value = !!id; - - if (isUpdate.value && id) { - const record = await inspectionRouteInfo(id); - await formApi.setValues(record); + if (isUpdate.value && row ){ + row.startTime = dayjs(row.startTime) + row.endTime = dayjs(row.endTime) + console.log(row,456) + await formApi.setValues(row); } await markInitialized(); @@ -89,15 +97,26 @@ async function queryWorkOrdersType() { pageNum: 1 } const res = await inspectionPointList(params) - const options = res.rows.map((item) => ({ - label: item.pointName, - value: item.id, - })); + let options = [] + if(isUpdate.value){ + options = res.rows.map((item) => ({ + label: item.pointName, + value: item.id, + })); + }else{ + const existingIds = props.pointList.map(item => item.pointId); + const filteredRows = res.rows.filter(item => !existingIds.includes(item.id)); + options = filteredRows.map((item) => ({ + label: item.pointName, + value: item.id, + })); + } formApi.updateSchema([{ componentProps: () => ({ options: options, showSearch: true, filterOption: filterOption, + disabled: isUpdate.value, }), fieldName: 'pointId', }]) diff --git a/apps/web-antd/src/views/property/resident/person/data.ts b/apps/web-antd/src/views/property/resident/person/data.ts index 171b1b1a..aee41767 100644 --- a/apps/web-antd/src/views/property/resident/person/data.ts +++ b/apps/web-antd/src/views/property/resident/person/data.ts @@ -41,19 +41,10 @@ export const querySchema: FormSchemaGetter = () => [ export const columns: VxeGridProps['columns'] = [ { type: 'checkbox', width: 60 }, // { - // title: '序号', + // title: '员工编号', // field: 'id', - // slots: { - // default: ({ rowIndex }) => { - // return (rowIndex + 1).toString(); - // }, - // }, + // width: 100, // }, - { - title: '员工编号', - field: 'id', - width: 100, - }, { title: '员工名称', field: 'userName', @@ -62,7 +53,7 @@ export const columns: VxeGridProps['columns'] = [ { title: '联系电话', field: 'phone', - width: 100, + width: 120, }, { title: '性别', @@ -72,18 +63,18 @@ export const columns: VxeGridProps['columns'] = [ return renderDict(row.gender, 'sys_user_sex') }, }, - width: 100, + width: 80, }, { field: 'img', title: '人脸图片', slots: { default: 'img' }, - minWidth: 80, + width: 100, }, { title: '所属单位', field: 'unitName', - width: 100, + width: 160, }, // { // title: '入驻位置', @@ -93,10 +84,18 @@ export const columns: VxeGridProps['columns'] = [ title: '入驻时间', field: 'time', width: 100, + formatter: ({ cellValue }) => { + return cellValue ? new Date(cellValue).toLocaleDateString('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit' }).replace(/\//g, '-') : '' + } }, { - title: '车牌号码', - field: 'carNumber', + title: '人员标签', + field: 'rosterType', + slots: { + default: ({ row }) => { + return renderDict(row.rosterType, 'roster_type') + }, + }, width: 100, }, { @@ -112,14 +111,13 @@ export const columns: VxeGridProps['columns'] = [ { title: '备注', field: 'remark', - width: 100, }, { field: 'action', fixed: 'right', slots: { default: 'action' }, title: '操作', - minWidth: 180, + width: 200, }, ] @@ -236,7 +234,24 @@ export const modalSchema: FormSchemaGetter = () => [ }, triggerFields: ['id'], }, - + }, + { + label: '人员标签', + fieldName: 'rosterType', + component: 'Select', + formItemClass: 'col-span-1', + componentProps: { + options: getDictOptions('roster_type') + }, + dependencies: { + show: (values) => { + return typeof values.id !== 'undefined' + }, + disabled: (values) => { + return !values.authSwitch + }, + triggerFields: ['id', 'authSwitch'], + }, }, { label: '授权期限', @@ -253,7 +268,7 @@ export const modalSchema: FormSchemaGetter = () => [ show: (values) => { return typeof values.id !== 'undefined' }, - disabled:(values) => { + disabled: (values) => { return !values.authSwitch }, triggerFields: ['id', 'authSwitch'], @@ -263,12 +278,12 @@ export const modalSchema: FormSchemaGetter = () => [ label: '通行权限组', fieldName: 'authGroupId', component: 'ApiSelect', - formItemClass: 'col-span-2', + formItemClass: 'col-span-1', dependencies: { show: (values) => { return typeof values.id !== 'undefined' }, - disabled:(values) => { + disabled: (values) => { return !values.authSwitch }, triggerFields: ['id', 'authSwitch'], @@ -393,8 +408,8 @@ export async function getUnitList(): Promise< { value: number; label: string }[] > { const queryParam = { - pageNum: 1000, - pageSize: 1, + pageNum: 1, + pageSize: 1000, } const res = await resident_unitList(queryParam) const data: { value: number; label: string }[] = [] diff --git a/apps/web-antd/src/views/property/resident/person/index.vue b/apps/web-antd/src/views/property/resident/person/index.vue index 2166815f..6413e2a1 100644 --- a/apps/web-antd/src/views/property/resident/person/index.vue +++ b/apps/web-antd/src/views/property/resident/person/index.vue @@ -165,11 +165,6 @@ function handleInfo(row: Required) { -