diff --git a/apps/web-antd/src/api/property/assetManage/procurementApplication/index.ts b/apps/web-antd/src/api/property/assetManage/procurementApplication/index.ts new file mode 100644 index 00000000..e51c1110 --- /dev/null +++ b/apps/web-antd/src/api/property/assetManage/procurementApplication/index.ts @@ -0,0 +1,79 @@ +import type { + ProcurementApplicationVO, + ProcurementApplicationForm, + ProcurementApplicationQuery, +} 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 procurementApplicationList( + params?: ProcurementApplicationQuery, +) { + return requestClient.get>( + '/domain/procurementApplication/list', + { params }, + ); +} + +/** + * 导出资产申请列表 + * @param params + * @returns 资产申请列表 + */ +export function procurementApplicationExport( + params?: ProcurementApplicationQuery, +) { + return commonExport('/domain/procurementApplication/export', params ?? {}); +} + +/** + * 查询资产申请详情 + * @param id id + * @returns 资产申请详情 + */ +export function procurementApplicationInfo(id: ID) { + return requestClient.get( + `/domain/procurementApplication/${id}`, + ); +} + +/** + * 新增资产申请 + * @param data + * @returns void + */ +export function procurementApplicationAdd(data: ProcurementApplicationForm) { + return requestClient.postWithMsg( + '/domain/procurementApplication', + data, + ); +} + +/** + * 更新资产申请 + * @param data + * @returns void + */ +export function procurementApplicationUpdate(data: ProcurementApplicationForm) { + return requestClient.putWithMsg('/domain/procurementApplication', data); +} + +/** + * 删除资产申请 + * @param id id + * @returns void + */ +export function procurementApplicationRemove(id: ID | IDS) { + return requestClient.deleteWithMsg( + `/domain/procurementApplication/${id}`, + ); +} diff --git a/apps/web-antd/src/api/property/assetManage/procurementApplication/model.d.ts b/apps/web-antd/src/api/property/assetManage/procurementApplication/model.d.ts new file mode 100644 index 00000000..d2484328 --- /dev/null +++ b/apps/web-antd/src/api/property/assetManage/procurementApplication/model.d.ts @@ -0,0 +1,197 @@ +import type { PageQuery, BaseEntity } from '#/api/common'; + +export interface ProcurementApplicationVO { + /** + * + */ + id: string | number; + + /** + * 标题 + */ + title: string; + + /** + * 申请人id + */ + applicat: number; + + /** + * 申请人手机号 + */ + phone: string; + + /** + * 供应商id + */ + supplier: number; + + /** + * 资产id + */ + capitalId: string | number; + + /** + * 采购方式 + */ + buyType: string; + + /** + * 采购单价 + */ + buyUnitPrice: number; + + /** + * 采购金额 + */ + buyAmount: number; + + /** + * 状态 + */ + state: string; + + /** + * 备注 + */ + remark: string; + + /** + * 申请时间 + */ + applicationTime: string; + + /** + * 搜索值 + */ + searchValue: string; +} + +export interface ProcurementApplicationForm extends BaseEntity { + /** + * + */ + id?: string | number; + + /** + * 标题 + */ + title?: string; + + /** + * 申请人id + */ + applicat?: number; + + /** + * 申请人手机号 + */ + phone?: string; + + /** + * 供应商id + */ + supplier?: number; + + /** + * 资产id + */ + capitalId?: string | number; + + /** + * 采购方式 + */ + buyType?: string; + + /** + * 采购单价 + */ + buyUnitPrice?: number; + + /** + * 采购金额 + */ + buyAmount?: number; + + /** + * 状态 + */ + state?: string; + + /** + * 备注 + */ + remark?: string; + + /** + * 申请时间 + */ + applicationTime?: string; + + /** + * 搜索值 + */ + searchValue?: string; +} + +export interface ProcurementApplicationQuery extends PageQuery { + /** + * 标题 + */ + title?: string; + + /** + * 申请人id + */ + applicat?: number; + + /** + * 申请人手机号 + */ + phone?: string; + + /** + * 供应商id + */ + supplier?: number; + + /** + * 资产id + */ + capitalId?: string | number; + + /** + * 采购方式 + */ + buyType?: string; + + /** + * 采购单价 + */ + buyUnitPrice?: number; + + /** + * 采购金额 + */ + buyAmount?: number; + + /** + * 状态 + */ + state?: string; + + /** + * 申请时间 + */ + applicationTime?: string; + + /** + * 搜索值 + */ + searchValue?: string; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/apps/web-antd/src/api/property/maintenance/knowledge/index.ts b/apps/web-antd/src/api/property/maintenance/knowledge/index.ts new file mode 100644 index 00000000..a0a5bd82 --- /dev/null +++ b/apps/web-antd/src/api/property/maintenance/knowledge/index.ts @@ -0,0 +1,61 @@ +import type { KnowledgeVO, KnowledgeForm, KnowledgeQuery } 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 knowledgeList(params?: KnowledgeQuery) { + return requestClient.get>('/property/knowledge/list', { params }); +} + +/** + * 导出维保知识管理列表 + * @param params + * @returns 维保知识管理列表 + */ +export function knowledgeExport(params?: KnowledgeQuery) { + return commonExport('/property/knowledge/export', params ?? {}); +} + +/** + * 查询维保知识管理详情 + * @param id id + * @returns 维保知识管理详情 + */ +export function knowledgeInfo(id: ID) { + return requestClient.get(`/property/knowledge/${id}`); +} + +/** + * 新增维保知识管理 + * @param data + * @returns void + */ +export function knowledgeAdd(data: KnowledgeForm) { + return requestClient.postWithMsg('/property/knowledge', data); +} + +/** + * 更新维保知识管理 + * @param data + * @returns void + */ +export function knowledgeUpdate(data: KnowledgeForm) { + return requestClient.putWithMsg('/property/knowledge', data); +} + +/** + * 删除维保知识管理 + * @param id id + * @returns void + */ +export function knowledgeRemove(id: ID | IDS) { + return requestClient.deleteWithMsg(`/property/knowledge/${id}`); +} diff --git a/apps/web-antd/src/api/property/maintenance/knowledge/model.d.ts b/apps/web-antd/src/api/property/maintenance/knowledge/model.d.ts new file mode 100644 index 00000000..8f61d24e --- /dev/null +++ b/apps/web-antd/src/api/property/maintenance/knowledge/model.d.ts @@ -0,0 +1,129 @@ +import type { PageQuery, BaseEntity } from '#/api/common'; + +export interface KnowledgeVO { + /** + * 主键 + */ + id: string | number; + + /** + * 标题 + */ + title: string; + + /** + * 状态(0草稿1状态2已发布) + */ + status: string; + + /** + * 封面 + */ + covers: string; + + /** + * 内容 + */ + content: string; + + /** + * 描述 + */ + depict: string; + + /** + * 发布时间 + */ + releaseTime: string; + + /** + * 位置类型(0操作指引,1处理案例2常见问题) + */ + type: string; + +} + +export interface KnowledgeForm extends BaseEntity { + /** + * 主键 + */ + id?: string | number; + + /** + * 标题 + */ + title?: string; + + /** + * 状态(0草稿1状态2已发布) + */ + status?: string; + + /** + * 封面 + */ + covers?: string; + + /** + * 内容 + */ + content?: string; + + /** + * 描述 + */ + depict?: string; + + /** + * 发布时间 + */ + releaseTime?: string; + + /** + * 位置类型(0操作指引,1处理案例2常见问题) + */ + type?: string; + +} + +export interface KnowledgeQuery extends PageQuery { + /** + * 标题 + */ + title?: string; + + /** + * 状态(0草稿1状态2已发布) + */ + status?: string; + + /** + * 封面 + */ + covers?: string; + + /** + * 内容 + */ + content?: string; + + /** + * 描述 + */ + depict?: string; + + /** + * 发布时间 + */ + releaseTime?: string; + + /** + * 位置类型(0操作指引,1处理案例2常见问题) + */ + type?: string; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/apps/web-antd/src/api/property/personalCenter/leaveApplication/index.ts b/apps/web-antd/src/api/property/personalCenter/leaveApplication/index.ts new file mode 100644 index 00000000..67902163 --- /dev/null +++ b/apps/web-antd/src/api/property/personalCenter/leaveApplication/index.ts @@ -0,0 +1,61 @@ +import type { LeaveApplicationVO, LeaveApplicationForm, LeaveApplicationQuery } 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 leaveApplicationList(params?: LeaveApplicationQuery) { + return requestClient.get>('/property/leaveApplication/list', { params }); +} + +/** + * 导出请假申请列表 + * @param params + * @returns 请假申请列表 + */ +export function leaveApplicationExport(params?: LeaveApplicationQuery) { + return commonExport('/property/leaveApplication/export', params ?? {}); +} + +/** + * 查询请假申请详情 + * @param id id + * @returns 请假申请详情 + */ +export function leaveApplicationInfo(id: ID) { + return requestClient.get(`/property/leaveApplication/${id}`); +} + +/** + * 新增请假申请 + * @param data + * @returns void + */ +export function leaveApplicationAdd(data: LeaveApplicationForm) { + return requestClient.postWithMsg('/property/leaveApplication', data); +} + +/** + * 更新请假申请 + * @param data + * @returns void + */ +export function leaveApplicationUpdate(data: LeaveApplicationForm) { + return requestClient.putWithMsg('/property/leaveApplication', data); +} + +/** + * 删除请假申请 + * @param id id + * @returns void + */ +export function leaveApplicationRemove(id: ID | IDS) { + return requestClient.deleteWithMsg(`/property/leaveApplication/${id}`); +} diff --git a/apps/web-antd/src/api/property/personalCenter/leaveApplication/model.d.ts b/apps/web-antd/src/api/property/personalCenter/leaveApplication/model.d.ts new file mode 100644 index 00000000..4d0d8ab3 --- /dev/null +++ b/apps/web-antd/src/api/property/personalCenter/leaveApplication/model.d.ts @@ -0,0 +1,189 @@ +import type { PageQuery, BaseEntity } from '#/api/common'; + +export interface LeaveApplicationVO { + /** + * + */ + id: string | number; + + /** + * 用户ID,关联用户表 + */ + userId: string | number; + + /** + * 申请人姓名 + */ + username: string; + + /** + * 部门ID,关联部门表 + */ + departmentId: string | number; + + /** + * 部门名称 + */ + departmentName: string; + + /** + * 请假类型 + */ + leaveType: number; + + /** + * 开始时间 + */ + startTime: string; + + /** + * 结束时间 + */ + endTime: string; + + /** + * 合计时间,如3天5个小时 + */ + totalDuration: string; + + /** + * 请假事由 + */ + reason: string; + + /** + * 申请状态(1:'草稿',2:'待审批',3:'已批准',4:'已拒绝':5:'已取消') + */ + status: number; + + /** + * 搜索值 + */ + searchValue: string; + +} + +export interface LeaveApplicationForm extends BaseEntity { + /** + * + */ + id?: string | number; + + /** + * 用户ID,关联用户表 + */ + userId?: string | number; + + /** + * 申请人姓名 + */ + username?: string; + + /** + * 部门ID,关联部门表 + */ + departmentId?: string | number; + + /** + * 部门名称 + */ + departmentName?: string; + + /** + * 请假类型 + */ + leaveType?: number; + + /** + * 开始时间 + */ + startTime?: string; + + /** + * 结束时间 + */ + endTime?: string; + + /** + * 合计时间,如3天5个小时 + */ + totalDuration?: string; + + /** + * 请假事由 + */ + reason?: string; + + /** + * 申请状态(1:'草稿',2:'待审批',3:'已批准',4:'已拒绝':5:'已取消') + */ + status?: number; + + /** + * 搜索值 + */ + searchValue?: string; + +} + +export interface LeaveApplicationQuery extends PageQuery { + /** + * 用户ID,关联用户表 + */ + userId?: string | number; + + /** + * 申请人姓名 + */ + username?: string; + + /** + * 部门ID,关联部门表 + */ + departmentId?: string | number; + + /** + * 部门名称 + */ + departmentName?: string; + + /** + * 请假类型 + */ + leaveType?: number; + + /** + * 开始时间 + */ + startTime?: string; + + /** + * 结束时间 + */ + endTime?: string; + + /** + * 合计时间,如3天5个小时 + */ + totalDuration?: string; + + /** + * 请假事由 + */ + reason?: string; + + /** + * 申请状态(1:'草稿',2:'待审批',3:'已批准',4:'已拒绝':5:'已取消') + */ + status?: number; + + /** + * 搜索值 + */ + searchValue?: string; + + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/apps/web-antd/src/api/property/personalCenter/workflowDefinition/index.ts b/apps/web-antd/src/api/property/personalCenter/workflowDefinition/index.ts new file mode 100644 index 00000000..10432c94 --- /dev/null +++ b/apps/web-antd/src/api/property/personalCenter/workflowDefinition/index.ts @@ -0,0 +1,61 @@ +import type { WorkflowDefinitionVO, WorkflowDefinitionForm, WorkflowDefinitionQuery } 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 workflowDefinitionList(params?: WorkflowDefinitionQuery) { + return requestClient.get>('/property/workflowDefinition/list', { params }); +} + +/** + * 导出流程定义列表 + * @param params + * @returns 流程定义列表 + */ +export function workflowDefinitionExport(params?: WorkflowDefinitionQuery) { + return commonExport('/property/workflowDefinition/export', params ?? {}); +} + +/** + * 查询流程定义详情 + * @param id id + * @returns 流程定义详情 + */ +export function workflowDefinitionInfo(id: ID) { + return requestClient.get(`/property/workflowDefinition/${id}`); +} + +/** + * 新增流程定义 + * @param data + * @returns void + */ +export function workflowDefinitionAdd(data: WorkflowDefinitionForm) { + return requestClient.postWithMsg('/property/workflowDefinition', data); +} + +/** + * 更新流程定义 + * @param data + * @returns void + */ +export function workflowDefinitionUpdate(data: WorkflowDefinitionForm) { + return requestClient.putWithMsg('/property/workflowDefinition', data); +} + +/** + * 删除流程定义 + * @param id id + * @returns void + */ +export function workflowDefinitionRemove(id: ID | IDS) { + return requestClient.deleteWithMsg(`/property/workflowDefinition/${id}`); +} diff --git a/apps/web-antd/src/api/property/personalCenter/workflowDefinition/model.d.ts b/apps/web-antd/src/api/property/personalCenter/workflowDefinition/model.d.ts new file mode 100644 index 00000000..09b13416 --- /dev/null +++ b/apps/web-antd/src/api/property/personalCenter/workflowDefinition/model.d.ts @@ -0,0 +1,129 @@ +import type { PageQuery, BaseEntity } from '#/api/common'; + +export interface WorkflowDefinitionVO { + /** + * 主键id + */ + id: string | number; + + /** + * 流程编号 + */ + code: string; + + /** + * 流程名称 + */ + name: string; + + /** + * 流程状态(0:审批不通过,1:审批通过,2:审批中,3已取消) + */ + status: number; + + /** + * 当前审批人 + */ + currentApprover: string; + + /** + * 审批建议 + */ + workflowSuggestion: string; + + /** + * 结束时间 + */ + endTime: string; + + /** + * 搜索值 + */ + searchValue: string; + +} + +export interface WorkflowDefinitionForm extends BaseEntity { + /** + * 主键id + */ + id?: string | number; + + /** + * 流程编号 + */ + code?: string; + + /** + * 流程名称 + */ + name?: string; + + /** + * 流程状态(0:审批不通过,1:审批通过,2:审批中,3已取消) + */ + status?: number; + + /** + * 当前审批人 + */ + currentApprover?: string; + + /** + * 审批建议 + */ + workflowSuggestion?: string; + + /** + * 结束时间 + */ + endTime?: string; + + /** + * 搜索值 + */ + searchValue?: string; + +} + +export interface WorkflowDefinitionQuery extends PageQuery { + /** + * 流程编号 + */ + code?: string; + + /** + * 流程名称 + */ + name?: string; + + /** + * 流程状态(0:审批不通过,1:审批通过,2:审批中,3已取消) + */ + status?: number; + + /** + * 当前审批人 + */ + currentApprover?: string; + + /** + * 审批建议 + */ + workflowSuggestion?: string; + + /** + * 结束时间 + */ + endTime?: string; + + /** + * 搜索值 + */ + searchValue?: string; + + /** + * 日期范围参数 + */ + params?: any; +} 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 2905efc0..17413393 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 @@ -144,6 +144,9 @@ export interface PersonForm extends BaseEntity { */ authGroupId?: string | number + begDate?: string + + endDate?: string } export interface PersonQuery extends PageQuery { diff --git a/apps/web-antd/src/assets/logoDark.png b/apps/web-antd/src/assets/logoDark.png new file mode 100644 index 00000000..467ed47a Binary files /dev/null and b/apps/web-antd/src/assets/logoDark.png differ diff --git a/apps/web-antd/src/assets/logoLight.png b/apps/web-antd/src/assets/logoLight.png new file mode 100644 index 00000000..f200d069 Binary files /dev/null and b/apps/web-antd/src/assets/logoLight.png differ diff --git a/apps/web-antd/src/preferences.ts b/apps/web-antd/src/preferences.ts index 5dc6971b..a6bb81d0 100644 --- a/apps/web-antd/src/preferences.ts +++ b/apps/web-antd/src/preferences.ts @@ -1,5 +1,10 @@ import { defineOverridesPreferences } from '@vben/preferences'; import logo from '../src/assets/logo.png' +import logoDark from '../src/assets/logoDark.png' +import logoLight from '../src/assets/logoLight.png' +import { preferences, usePreferences } from '@vben/preferences'; +const { isDark } = usePreferences(); + /** * @description 项目配置文件 * 只需要覆盖项目中的一部分配置,不需要的配置不用覆盖,会自动使用默认配置 @@ -64,6 +69,6 @@ export const overridesPreferences = defineOverridesPreferences({ */ logo: { enable: true, - source: logo, + source: isDark ? logoDark : logoLight, }, }); diff --git a/apps/web-antd/src/views/property/assetManage/procurementApplication/data.ts b/apps/web-antd/src/views/property/assetManage/procurementApplication/data.ts new file mode 100644 index 00000000..ca200787 --- /dev/null +++ b/apps/web-antd/src/views/property/assetManage/procurementApplication/data.ts @@ -0,0 +1,232 @@ +import type { FormSchemaGetter } from '#/adapter/form'; +import type { VxeGridProps } from '#/adapter/vxe-table'; + +import { getDictOptions } from '#/utils/dict'; +import { renderDict } from '#/utils/render'; + +export const querySchema: FormSchemaGetter = () => [ + { + component: 'Input', + fieldName: 'title', + label: '标题', + }, + { + component: 'Input', + fieldName: 'applicat', + label: '申请人id', + }, + { + component: 'Input', + fieldName: 'phone', + label: '申请人手机号', + }, + { + component: 'Input', + fieldName: 'supplier', + label: '供应商id', + }, + { + component: 'Input', + fieldName: 'capitalId', + label: '资产id', + }, + { + component: 'Select', + componentProps: {}, + fieldName: 'buyType', + label: '采购方式', + }, + { + component: 'Input', + fieldName: 'buyUnitPrice', + label: '采购单价', + }, + { + component: 'Input', + fieldName: 'buyAmount', + label: '采购金额', + }, + { + component: 'Select', + componentProps: { + // 可选从DictEnum中获取 DictEnum.WY_ZCSQSHZT 便于维护 + options: getDictOptions('wy_zcsqshzt'), + }, + fieldName: 'state', + label: '状态', + }, + { + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + fieldName: 'applicationTime', + label: '申请时间', + }, + { + component: 'Input', + fieldName: 'searchValue', + label: '搜索值', + }, +]; + +// 需要使用i18n注意这里要改成getter形式 否则切换语言不会刷新 +// export const columns: () => VxeGridProps['columns'] = () => [ +export const columns: VxeGridProps['columns'] = [ + { type: 'checkbox', width: 60 }, + { + title: '', + field: 'id', + }, + { + title: '标题', + field: 'title', + }, + { + title: '申请人id', + field: 'applicat', + }, + { + title: '申请人手机号', + field: 'phone', + }, + { + title: '供应商id', + field: 'supplier', + }, + { + title: '资产id', + field: 'capitalId', + }, + { + title: '采购方式', + field: 'buyType', + }, + { + title: '采购单价', + field: 'buyUnitPrice', + }, + { + title: '采购金额', + field: 'buyAmount', + }, + { + title: '状态', + field: 'state', + slots: { + default: ({ row }) => { + // 可选从DictEnum中获取 DictEnum.WY_ZCSQSHZT 便于维护 + return renderDict(row.state, 'wy_zcsqshzt'); + }, + }, + }, + { + title: '备注', + field: 'remark', + }, + { + title: '申请时间', + field: 'applicationTime', + }, + { + title: '搜索值', + field: 'searchValue', + }, + { + field: 'action', + fixed: 'right', + slots: { default: 'action' }, + title: '操作', + width: 180, + }, +]; + +export const modalSchema: FormSchemaGetter = () => [ + { + label: '', + fieldName: 'id', + component: 'Input', + dependencies: { + show: () => false, + triggerFields: [''], + }, + }, + { + label: '标题', + fieldName: 'title', + component: 'Input', + rules: 'required', + }, + { + label: '申请人id', + fieldName: 'applicat', + component: 'Input', + rules: 'required', + }, + { + label: '申请人手机号', + fieldName: 'phone', + component: 'Input', + rules: 'required', + }, + { + label: '供应商id', + fieldName: 'supplier', + component: 'Input', + rules: 'required', + }, + { + label: '资产id', + fieldName: 'capitalId', + component: 'Input', + rules: 'required', + }, + { + label: '采购方式', + fieldName: 'buyType', + component: 'Select', + componentProps: {}, + rules: 'selectRequired', + }, + { + label: '采购单价', + fieldName: 'buyUnitPrice', + component: 'Input', + }, + { + label: '采购金额', + fieldName: 'buyAmount', + component: 'Input', + }, + { + label: '状态', + fieldName: 'state', + component: 'Select', + componentProps: { + // 可选从DictEnum中获取 DictEnum.WY_ZCSQSHZT 便于维护 + options: getDictOptions('wy_zcsqshzt'), + }, + }, + { + label: '备注', + fieldName: 'remark', + component: 'Input', + }, + { + label: '申请时间', + fieldName: 'applicationTime', + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + }, + { + label: '搜索值', + fieldName: 'searchValue', + component: 'Input', + }, +]; diff --git a/apps/web-antd/src/views/property/assetManage/procurementApplication/index.vue b/apps/web-antd/src/views/property/assetManage/procurementApplication/index.vue new file mode 100644 index 00000000..7a25d660 --- /dev/null +++ b/apps/web-antd/src/views/property/assetManage/procurementApplication/index.vue @@ -0,0 +1,188 @@ + + + diff --git a/apps/web-antd/src/views/property/assetManage/procurementApplication/procurementApplication-modal.vue b/apps/web-antd/src/views/property/assetManage/procurementApplication/procurementApplication-modal.vue new file mode 100644 index 00000000..ef0877e0 --- /dev/null +++ b/apps/web-antd/src/views/property/assetManage/procurementApplication/procurementApplication-modal.vue @@ -0,0 +1,106 @@ + + + diff --git a/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/group-modal.vue b/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/group-modal.vue index 7e0f351c..244df3ae 100644 --- a/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/group-modal.vue +++ b/apps/web-antd/src/views/property/attendanceManagement/attendanceGroupSettings/group-modal.vue @@ -93,10 +93,10 @@ const [BasicModal, modalApi] = useVbenModal({ label: item.label, shiftValue: '休息', isRest: 1, - id: null, + shiftId: null, }) }) - settingData.cycleData = [{id: ''}, {id: ''}]; + settingData.cycleData = [{scheduleId: ''}, {scheduleId: ''}]; } await markInitialized(); modalApi.modalLoading(false); @@ -115,7 +115,7 @@ async function handleConfirm() { if (data.attendanceType == 1) { let hasError = false; settingData.cycleData.forEach((item, index) => { - if (!item.id) { + if (!item.scheduleId) { message.warning('请选择周期天数对应班次。'); return; } @@ -189,7 +189,7 @@ function handleShiftInfo(info: ShiftVO) { settingData.shiftId = info.id shiftInfo.value = info; settingData.weekdayData.forEach(item => { - item.id = info.id + item.shiftId = info.id let str = '' if (info.isRest) { str = `${info.name}:${info.startTime}~${info.restStartTime} ${info.restEndTime}~${info.endTime}`; @@ -209,7 +209,7 @@ function handleShiftList(list: any[]) { function addCycleHandle() { if (settingData.cycleData.length < 31) { settingData.cycleData.push({ - id: '', + scheduleId: '', }) } else { message.warning('周期天数最多31天。'); @@ -244,12 +244,12 @@ function changeShiftHandle(type: number, index: number) { function restHandle(index: number) { settingData.weekdayData[index].isRest = 1 settingData.weekdayData[index].shiftValue = '休息' - settingData.weekdayData[index].id = null + settingData.weekdayData[index].shiftId = null } function handleAfterValue(val: ShiftVO) { if (tableIndex.value > -1 && val) { - settingData.weekdayData[tableIndex.value].id = val.id + settingData.weekdayData[tableIndex.value].shiftId = val.id let str = '' if (val.isRest) { str = `${val.name}:${val.startTime}~${val.restStartTime} ${val.restEndTime}~${val.endTime}`; diff --git a/apps/web-antd/src/views/property/customerService/centerConsole/index.vue b/apps/web-antd/src/views/property/customerService/centerConsole/index.vue index e82aae92..95c4f82f 100644 --- a/apps/web-antd/src/views/property/customerService/centerConsole/index.vue +++ b/apps/web-antd/src/views/property/customerService/centerConsole/index.vue @@ -25,7 +25,6 @@ async function fetchWorkOrderCount() { seriesData.value = board.value.recentWeekWorkOrders.map(item => { return `${item.count}`; }); - console.log(xAxisData.value,seriesData.value) renderWorkOrderCount({ tooltip: { trigger: 'axis' }, xAxis: { @@ -85,24 +84,21 @@ async function fetchSatisfactionLevel() { const orderNumber = ref(); const { renderEcharts: renderOrderNumber } = useEcharts(orderNumber); async function fetchOrderNumber() { + seriesData.value = board.value.recentSixMonthWorkOrders.map(item => [ + item.month, // 月份(对应目标结构的第一个元素) + item.orderCount // 工单数量(对应目标结构的第二个元素) + ]) + seriesData.value.unshift(['product','入驻员工']) renderOrderNumber({ title: {text: '近半年工单数',left: '18px'}, legend: {}, tooltip: { trigger: 'axis' }, dataset: { - source: [ - ['product', '物业', '入驻员工'], - ['2025-01', 2, 5.8], - ['2025-02', 10.1, 7.4], - ['2025-03', 6.4, 5.2], - ['2025-04', 3.3, 5.8], - ['2025-05', 8.1, 7.4], - ['2025-06', 6.4, 5.2], - ] + source: seriesData.value }, xAxis: { type: 'category' }, yAxis: {}, - series: [{ type: 'bar' }, { type: 'bar' }] + series: [{ type: 'bar' }] }) } @@ -110,6 +106,16 @@ async function fetchOrderNumber() { const orderTyper = ref(); const { renderEcharts: renderOrderTyper } = useEcharts(orderTyper); async function fetchOrderTyper() { + seriesData.value = board.value.satisfactionChartList.map(item => { + return { + value: item.quantity, + name: item.type, + }; + }) + const totalQuantity = board.value.satisfactionChartList.reduce((sum, item) => { + return sum + Number(item.quantity || 0); + }, 0); + console.log(seriesData.value) renderOrderTyper({ title: {text: '工单类型分类占比',left: '18px',top: '18px'}, tooltip: { @@ -131,7 +137,10 @@ async function fetchOrderTyper() { label: { show: true, position: 'center', - formatter: '员工单数量\n{num|56个}', + formatter: [ + '员工单数量', + `{num|${totalQuantity}个}` + ].join('\n'), fontSize: 14, fontWeight: 'bold', color: 'gray', @@ -148,13 +157,7 @@ async function fetchOrderTyper() { labelLine: { show: false }, - data: [ - { value: 1048, name: 'Search Engine' }, - { value: 735, name: 'Direct' }, - { value: 580, name: 'Email' }, - { value: 484, name: 'Union Ads' }, - { value: 300, name: 'Video Ads' } - ] + data: seriesData.value } ] }) @@ -232,7 +235,7 @@ onMounted(async () => {
工单计数
累计处理工单数
-
12
+
{{board.recentWeekWorkOrders?.[0]?.weekCount || '0'}}
diff --git a/apps/web-antd/src/views/property/customerService/notices/data.ts b/apps/web-antd/src/views/property/customerService/notices/data.ts index c8c554be..78df08f8 100644 --- a/apps/web-antd/src/views/property/customerService/notices/data.ts +++ b/apps/web-antd/src/views/property/customerService/notices/data.ts @@ -48,7 +48,7 @@ export const columns: VxeGridProps['columns'] = [ }, { title: '发布人', - field: 'issuers', + field: 'issuersName', }, { field: 'action', diff --git a/apps/web-antd/src/views/property/customerService/notices/notices-detail.vue b/apps/web-antd/src/views/property/customerService/notices/notices-detail.vue index 7123604c..8307690e 100644 --- a/apps/web-antd/src/views/property/customerService/notices/notices-detail.vue +++ b/apps/web-antd/src/views/property/customerService/notices/notices-detail.vue @@ -44,7 +44,7 @@ async function handleOpenChange(open: boolean) { /> - {{ noticesDetail.noticePersion }} + {{ noticesDetail.noticePersionName }} {{ noticesDetail.startTime }} diff --git a/apps/web-antd/src/views/property/customerService/notices/notices-modal.vue b/apps/web-antd/src/views/property/customerService/notices/notices-modal.vue index c590adb7..2926035d 100644 --- a/apps/web-antd/src/views/property/customerService/notices/notices-modal.vue +++ b/apps/web-antd/src/views/property/customerService/notices/notices-modal.vue @@ -64,6 +64,7 @@ const [BasicModal, modalApi] = useVbenModal({ if(record.isAll === '0'){ record.noticePersion = null } + record.noticePersion = record.noticePersion?.split(',') await formApi.setValues(record); } await markInitialized(); diff --git a/apps/web-antd/src/views/property/electricEnergy/elctricityCost/index.vue b/apps/web-antd/src/views/property/electricEnergy/elctricityCost/index.vue new file mode 100644 index 00000000..63cf316b --- /dev/null +++ b/apps/web-antd/src/views/property/electricEnergy/elctricityCost/index.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/apps/web-antd/src/views/property/electricEnergy/elctricitySituation/index.vue b/apps/web-antd/src/views/property/electricEnergy/elctricitySituation/index.vue new file mode 100644 index 00000000..e3ba3c35 --- /dev/null +++ b/apps/web-antd/src/views/property/electricEnergy/elctricitySituation/index.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/apps/web-antd/src/views/property/electricEnergy/electricTrend/index.vue b/apps/web-antd/src/views/property/electricEnergy/electricTrend/index.vue new file mode 100644 index 00000000..8600d414 --- /dev/null +++ b/apps/web-antd/src/views/property/electricEnergy/electricTrend/index.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/apps/web-antd/src/views/property/electricEnergy/electricityQOQ/index.vue b/apps/web-antd/src/views/property/electricEnergy/electricityQOQ/index.vue new file mode 100644 index 00000000..63cf316b --- /dev/null +++ b/apps/web-antd/src/views/property/electricEnergy/electricityQOQ/index.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/apps/web-antd/src/views/property/electricEnergy/electricityYOY/index.vue b/apps/web-antd/src/views/property/electricEnergy/electricityYOY/index.vue new file mode 100644 index 00000000..63cf316b --- /dev/null +++ b/apps/web-antd/src/views/property/electricEnergy/electricityYOY/index.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/apps/web-antd/src/views/property/greenPlantRentalManagement/conservationManagement/data.ts b/apps/web-antd/src/views/property/greenPlantRentalManagement/conservationManagement/data.ts index a082af9d..20a6335e 100644 --- a/apps/web-antd/src/views/property/greenPlantRentalManagement/conservationManagement/data.ts +++ b/apps/web-antd/src/views/property/greenPlantRentalManagement/conservationManagement/data.ts @@ -2,9 +2,9 @@ import type { FormSchemaGetter } from '#/adapter/form'; import type { VxeGridProps } from '#/adapter/vxe-table'; import { getDictOptions } from '#/utils/dict'; import { renderDict } from '#/utils/render'; -import {h} from "vue"; -import {Rate} from "ant-design-vue"; -import {rentalOrderList} from "#/api/property/rentalOrder"; +import { h } from 'vue'; +import { Rate } from 'ant-design-vue'; +import { rentalOrderList } from '#/api/property/rentalOrder'; export const querySchema: FormSchemaGetter = () => [ { @@ -32,12 +32,12 @@ export const columns: VxeGridProps['columns'] = [ return (rowIndex + 1).toString(); }, }, - minWidth: '120' + minWidth: '120', }, { title: '养护名称', field: 'maintainName', - minWidth: '120' + minWidth: '120', }, // { // title: '服务地点', @@ -52,7 +52,7 @@ export const columns: VxeGridProps['columns'] = [ return renderDict(row.serveType, 'pro_service_type'); }, }, - minWidth: '120' + minWidth: '120', }, { title: '养护周期类型', @@ -62,27 +62,27 @@ export const columns: VxeGridProps['columns'] = [ return renderDict(row.periodType, 'wy_time_unit'); }, }, - minWidth: '120' + minWidth: '120', }, { title: '养护周期频次', field: 'periodFrequency', - minWidth: '120' + minWidth: '120', }, { title: '关联订单', field: 'orderId', - minWidth: '120' + minWidth: '120', }, { title: '计划执行时间', field: 'startTime', - minWidth: '120' + minWidth: '120', }, { title: '计划完成时间', field: 'endTime', - minWidth: '120' + minWidth: '120', }, { title: '巡检结果', @@ -92,12 +92,12 @@ export const columns: VxeGridProps['columns'] = [ return renderDict(row.inspectResult, 'pro_inspection_results'); }, }, - minWidth: '120' + minWidth: '120', }, { title: '处理措施', field: 'measure', - minWidth: '120' + minWidth: '120', }, { title: '客户评分', @@ -110,12 +110,12 @@ export const columns: VxeGridProps['columns'] = [ }); }, }, - minWidth: '150' + minWidth: '150', }, { title: '客户反馈', field: 'customerAdvice', - minWidth: '120' + minWidth: '120', }, { title: '处理状态', @@ -125,7 +125,7 @@ export const columns: VxeGridProps['columns'] = [ return renderDict(row.state, 'pro_processing_status'); }, }, - minWidth: '120' + minWidth: '120', }, { field: 'action', @@ -151,7 +151,7 @@ export const modalSchema: FormSchemaGetter = () => [ fieldName: 'maintainName', component: 'Input', rules: 'required', - labelWidth:100 + labelWidth: 100, }, { label: '服务地点', @@ -159,7 +159,7 @@ export const modalSchema: FormSchemaGetter = () => [ component: 'TreeSelect', defaultValue: undefined, rules: 'required', - labelWidth:100 + labelWidth: 100, }, { label: '服务类型', @@ -169,7 +169,7 @@ export const modalSchema: FormSchemaGetter = () => [ options: getDictOptions('pro_service_type'), }, rules: 'selectRequired', - labelWidth:100 + labelWidth: 100, }, { label: '养护周期类型', @@ -180,14 +180,14 @@ export const modalSchema: FormSchemaGetter = () => [ options: getDictOptions('wy_time_unit'), }, rules: 'selectRequired', - labelWidth:100 + labelWidth: 100, }, { label: '养护周期频次', fieldName: 'periodFrequency', component: 'Input', rules: 'required', - labelWidth:100 + labelWidth: 100, }, { label: '关联订单', @@ -200,7 +200,7 @@ export const modalSchema: FormSchemaGetter = () => [ valueField: 'id', }, rules: 'required', - labelWidth:100 + labelWidth: 100, }, { label: '计划执行时间', @@ -212,7 +212,7 @@ export const modalSchema: FormSchemaGetter = () => [ valueFormat: 'YYYY-MM-DD HH:mm:ss', }, rules: 'required', - labelWidth:100 + labelWidth: 100, }, { label: '计划完成时间', @@ -224,7 +224,7 @@ export const modalSchema: FormSchemaGetter = () => [ valueFormat: 'YYYY-MM-DD HH:mm:ss', }, rules: 'required', - labelWidth:100 + labelWidth: 100, }, { label: '巡检结果', @@ -234,14 +234,14 @@ export const modalSchema: FormSchemaGetter = () => [ options: getDictOptions('pro_inspection_results'), }, rules: 'selectRequired', - labelWidth:100 + labelWidth: 100, }, { label: '处理措施', fieldName: 'measure', component: 'Textarea', rules: 'required', - labelWidth:100 + labelWidth: 100, }, { label: '客户评分', @@ -251,16 +251,16 @@ export const modalSchema: FormSchemaGetter = () => [ allowHalf: false, count: 5, tooltips: ['1星', '2星', '3星', '4星', '5星'], - defaultValue: 0 + defaultValue: 0, }, rules: 'required', - labelWidth:100 + labelWidth: 100, }, { label: '客户反馈', fieldName: 'customerAdvice', component: 'Textarea', - labelWidth:100 + labelWidth: 100, }, { label: '处理状态', @@ -270,6 +270,6 @@ export const modalSchema: FormSchemaGetter = () => [ options: getDictOptions('pro_processing_status'), }, rules: 'selectRequired', - labelWidth:100 + labelWidth: 100, }, ]; diff --git a/apps/web-antd/src/views/property/maintenance/knowledge/data.ts b/apps/web-antd/src/views/property/maintenance/knowledge/data.ts new file mode 100644 index 00000000..cbe3afcc --- /dev/null +++ b/apps/web-antd/src/views/property/maintenance/knowledge/data.ts @@ -0,0 +1,147 @@ +import type { FormSchemaGetter } from '#/adapter/form'; +import type { VxeGridProps } from '#/adapter/vxe-table'; +import {getDictOptions} from "#/utils/dict"; +import {renderDict} from "#/utils/render"; + + +export const querySchema: FormSchemaGetter = () => [ + { + component: 'Input', + fieldName: 'title', + label: '标题', + }, + { + component: 'Select', + componentProps: { + options:getDictOptions('wy_wbzszt') + }, + fieldName: 'status', + label: '发布状态', + }, + { + component: 'Select', + componentProps: { + options: getDictOptions('wy_wbzslx') + }, + fieldName: 'type', + label: '知识类型', + }, +]; + +// 需要使用i18n注意这里要改成getter形式 否则切换语言不会刷新 +// export const columns: () => VxeGridProps['columns'] = () => [ +export const columns: VxeGridProps['columns'] = [ + { type: 'checkbox', width: 60 }, + { + title: '标题', + field: 'title', + minWidth: 180 + }, + { + title: '发布状态', + field: 'status', + slots:{ + default: ({row})=>{ + return renderDict(row.status,'wy_wbzszt') + } + }, + width:180 + }, + { + title: '发布时间', + field: 'releaseTime', + width:180 + }, + { + title: '知识类型', + field: 'type', + slots:{ + default: ({row})=>{ + return renderDict(row.type,'wy_wbzslx') + } + }, + width:180 + }, + { + field: 'action', + fixed: 'right', + slots: { default: 'action' }, + title: '操作', + width: 180, + }, +]; + +export const modalSchema: FormSchemaGetter = () => [ + { + label: '主键', + fieldName: 'id', + component: 'Input', + dependencies: { + show: () => false, + triggerFields: [''], + }, + }, + { + label: '标题', + fieldName: 'title', + component: 'Input', + rules: 'required', + }, + { + component: 'Select', + componentProps: { + options:getDictOptions('wy_wbzszt') + }, + fieldName: 'status', + label: '发布状态', + rules: 'selectRequired', + formItemClass:'col-span-1' + }, + { + component: 'Select', + componentProps: { + options: getDictOptions('wy_wbzslx') + }, + fieldName: 'type', + label: '知识类型', + rules: 'selectRequired', + formItemClass:'col-span-1' + }, + { + label: '封面', + fieldName: 'covers', + component: 'ImageUpload', + componentProps:{ + maxCount: 1, + }, + // rules: 'required', + formItemClass:'col-span-1' + }, + { + label: '发布时间', + fieldName: 'releaseTime', + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + rules: 'required', + formItemClass:'col-span-1' + }, + { + label: '内容', + fieldName: 'content', + component: 'RichTextarea', + componentProps: { + // disabled: false, // 是否只读 + // height: 400 // 高度 默认400 + }, + rules: 'required', + }, + { + label: '描述', + fieldName: 'depict', + component: 'Textarea', + }, +]; diff --git a/apps/web-antd/src/views/property/maintenance/knowledge/index.vue b/apps/web-antd/src/views/property/maintenance/knowledge/index.vue new file mode 100644 index 00000000..116614dd --- /dev/null +++ b/apps/web-antd/src/views/property/maintenance/knowledge/index.vue @@ -0,0 +1,181 @@ + + + diff --git a/apps/web-antd/src/views/property/maintenance/knowledge/knowledge-detail.vue b/apps/web-antd/src/views/property/maintenance/knowledge/knowledge-detail.vue new file mode 100644 index 00000000..4feb6e43 --- /dev/null +++ b/apps/web-antd/src/views/property/maintenance/knowledge/knowledge-detail.vue @@ -0,0 +1,66 @@ + + + diff --git a/apps/web-antd/src/views/property/maintenance/knowledge/knowledge-modal.vue b/apps/web-antd/src/views/property/maintenance/knowledge/knowledge-modal.vue new file mode 100644 index 00000000..e388c322 --- /dev/null +++ b/apps/web-antd/src/views/property/maintenance/knowledge/knowledge-modal.vue @@ -0,0 +1,101 @@ + + + + diff --git a/apps/web-antd/src/views/property/maintenance/knowledgeBase/index.vue b/apps/web-antd/src/views/property/maintenance/knowledgeBase/index.vue new file mode 100644 index 00000000..7e454509 --- /dev/null +++ b/apps/web-antd/src/views/property/maintenance/knowledgeBase/index.vue @@ -0,0 +1,222 @@ + + + + diff --git a/apps/web-antd/src/views/property/personalCenter/leaveApplication/data.ts b/apps/web-antd/src/views/property/personalCenter/leaveApplication/data.ts new file mode 100644 index 00000000..5c6286bf --- /dev/null +++ b/apps/web-antd/src/views/property/personalCenter/leaveApplication/data.ts @@ -0,0 +1,229 @@ +import type { FormSchemaGetter } from '#/adapter/form'; +import type { VxeGridProps } from '#/adapter/vxe-table'; + +import { getDictOptions } from '#/utils/dict'; +import { renderDict } from '#/utils/render'; + +export const querySchema: FormSchemaGetter = () => [ + { + component: 'Input', + fieldName: 'userId', + label: '用户ID,关联用户表', + }, + { + component: 'Input', + fieldName: 'username', + label: '申请人姓名', + }, + { + component: 'Input', + fieldName: 'departmentId', + label: '部门ID,关联部门表', + }, + { + component: 'Input', + fieldName: 'departmentName', + label: '部门名称', + }, + { + component: 'Select', + componentProps: { + }, + fieldName: 'leaveType', + label: '请假类型', + }, + { + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + fieldName: 'startTime', + label: '开始时间', + }, + { + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + fieldName: 'endTime', + label: '结束时间', + }, + { + component: 'Input', + fieldName: 'totalDuration', + label: '合计时间,如3天5个小时', + }, + { + component: 'Textarea', + fieldName: 'reason', + label: '请假事由', + }, + { + component: 'Select', + componentProps: { + // 可选从DictEnum中获取 DictEnum.WY_SQZT 便于维护 + options: getDictOptions('wy_sqzt'), + }, + fieldName: 'status', + label: '申请状态', + }, + { + component: 'Input', + fieldName: 'searchValue', + label: '搜索值', + }, +]; + +// 需要使用i18n注意这里要改成getter形式 否则切换语言不会刷新 +// export const columns: () => VxeGridProps['columns'] = () => [ +export const columns: VxeGridProps['columns'] = [ + { type: 'checkbox', width: 60 }, + { + title: '', + field: 'id', + }, + { + title: '用户ID,关联用户表', + field: 'userId', + }, + { + title: '申请人姓名', + field: 'username', + }, + { + title: '部门ID,关联部门表', + field: 'departmentId', + }, + { + title: '部门名称', + field: 'departmentName', + }, + { + title: '请假类型', + field: 'leaveType', + }, + { + title: '开始时间', + field: 'startTime', + }, + { + title: '结束时间', + field: 'endTime', + }, + { + title: '合计时间,如3天5个小时', + field: 'totalDuration', + }, + { + title: '请假事由', + field: 'reason', + }, + { + title: '申请状态', + field: 'status', + slots: { + default: ({ row }) => { + // 可选从DictEnum中获取 DictEnum.WY_SQZT 便于维护 + return renderDict(row.status, 'wy_sqzt'); + }, + }, + }, + { + title: '搜索值', + field: 'searchValue', + }, + { + field: 'action', + fixed: 'right', + slots: { default: 'action' }, + title: '操作', + width: 180, + }, +]; + +export const modalSchema: FormSchemaGetter = () => [ + { + label: '', + fieldName: 'id', + component: 'Input', + dependencies: { + show: () => false, + triggerFields: [''], + }, + }, + { + label: '用户ID,关联用户表', + fieldName: 'userId', + component: 'Input', + }, + { + label: '申请人姓名', + fieldName: 'username', + component: 'Input', + }, + { + label: '部门ID,关联部门表', + fieldName: 'departmentId', + component: 'Input', + }, + { + label: '部门名称', + fieldName: 'departmentName', + component: 'Input', + }, + { + label: '请假类型', + fieldName: 'leaveType', + component: 'Select', + componentProps: { + }, + }, + { + label: '开始时间', + fieldName: 'startTime', + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + }, + { + label: '结束时间', + fieldName: 'endTime', + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + }, + { + label: '合计时间,如3天5个小时', + fieldName: 'totalDuration', + component: 'Input', + }, + { + label: '请假事由', + fieldName: 'reason', + component: 'Textarea', + }, + { + label: '申请状态', + fieldName: 'status', + component: 'Select', + componentProps: { + // 可选从DictEnum中获取 DictEnum.WY_SQZT 便于维护 + options: getDictOptions('wy_sqzt'), + }, + }, + { + label: '搜索值', + fieldName: 'searchValue', + component: 'Input', + }, +]; diff --git a/apps/web-antd/src/views/property/personalCenter/leaveApplication/index.vue b/apps/web-antd/src/views/property/personalCenter/leaveApplication/index.vue new file mode 100644 index 00000000..3c24b6a0 --- /dev/null +++ b/apps/web-antd/src/views/property/personalCenter/leaveApplication/index.vue @@ -0,0 +1,188 @@ + + + diff --git a/apps/web-antd/src/views/property/personalCenter/leaveApplication/leaveApplication-modal.vue b/apps/web-antd/src/views/property/personalCenter/leaveApplication/leaveApplication-modal.vue new file mode 100644 index 00000000..c052f188 --- /dev/null +++ b/apps/web-antd/src/views/property/personalCenter/leaveApplication/leaveApplication-modal.vue @@ -0,0 +1,106 @@ + + + diff --git a/apps/web-antd/src/views/property/personalCenter/myMessage/index.vue b/apps/web-antd/src/views/property/personalCenter/myMessage/index.vue new file mode 100644 index 00000000..bc4ea083 --- /dev/null +++ b/apps/web-antd/src/views/property/personalCenter/myMessage/index.vue @@ -0,0 +1 @@ + diff --git a/apps/web-antd/src/views/property/personalCenter/process/index.vue b/apps/web-antd/src/views/property/personalCenter/process/index.vue new file mode 100644 index 00000000..56579af0 --- /dev/null +++ b/apps/web-antd/src/views/property/personalCenter/process/index.vue @@ -0,0 +1 @@ + diff --git a/apps/web-antd/src/views/property/personalCenter/toDoProcess/index.vue b/apps/web-antd/src/views/property/personalCenter/toDoProcess/index.vue new file mode 100644 index 00000000..93b64cfd --- /dev/null +++ b/apps/web-antd/src/views/property/personalCenter/toDoProcess/index.vue @@ -0,0 +1 @@ + diff --git a/apps/web-antd/src/views/property/personalCenter/workflowDefinition/data.ts b/apps/web-antd/src/views/property/personalCenter/workflowDefinition/data.ts new file mode 100644 index 00000000..8f5b2573 --- /dev/null +++ b/apps/web-antd/src/views/property/personalCenter/workflowDefinition/data.ts @@ -0,0 +1,159 @@ +import type { FormSchemaGetter } from '#/adapter/form'; +import type { VxeGridProps } from '#/adapter/vxe-table'; + +import { getDictOptions } from '#/utils/dict'; +import { renderDict } from '#/utils/render'; + +export const querySchema: FormSchemaGetter = () => [ + { + component: 'Input', + fieldName: 'code', + label: '流程编号', + }, + { + component: 'Input', + fieldName: 'name', + label: '流程名称', + }, + { + component: 'Select', + componentProps: { + // 可选从DictEnum中获取 DictEnum.WY_LCZT 便于维护 + options: getDictOptions('wy_lczt'), + }, + fieldName: 'status', + label: '流程状态(0:审批不通过,1:审批通过,2:审批中,3已取消)', + }, + { + component: 'Input', + fieldName: 'currentApprover', + label: '当前审批人', + }, + { + component: 'Input', + fieldName: 'workflowSuggestion', + label: '审批建议', + }, + { + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + fieldName: 'endTime', + label: '结束时间', + }, + { + component: 'Input', + fieldName: 'searchValue', + label: '搜索值', + }, +]; + +// 需要使用i18n注意这里要改成getter形式 否则切换语言不会刷新 +// export const columns: () => VxeGridProps['columns'] = () => [ +export const columns: VxeGridProps['columns'] = [ + { type: 'checkbox', width: 60 }, + { + title: '主键id', + field: 'id', + }, + { + title: '流程编号', + field: 'code', + }, + { + title: '流程名称', + field: 'name', + }, + { + title: '流程状态(0:审批不通过,1:审批通过,2:审批中,3已取消)', + field: 'status', + slots: { + default: ({ row }) => { + // 可选从DictEnum中获取 DictEnum.WY_LCZT 便于维护 + return renderDict(row.status, 'wy_lczt'); + }, + }, + }, + { + title: '当前审批人', + field: 'currentApprover', + }, + { + title: '审批建议', + field: 'workflowSuggestion', + }, + { + title: '结束时间', + field: 'endTime', + }, + { + title: '搜索值', + field: 'searchValue', + }, + { + 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: 'code', + component: 'Input', + }, + { + label: '流程名称', + fieldName: 'name', + component: 'Input', + }, + { + label: '流程状态(0:审批不通过,1:审批通过,2:审批中,3已取消)', + fieldName: 'status', + component: 'Select', + componentProps: { + // 可选从DictEnum中获取 DictEnum.WY_LCZT 便于维护 + options: getDictOptions('wy_lczt'), + }, + }, + { + label: '当前审批人', + fieldName: 'currentApprover', + component: 'Input', + }, + { + label: '审批建议', + fieldName: 'workflowSuggestion', + component: 'Input', + }, + { + label: '结束时间', + fieldName: 'endTime', + component: 'DatePicker', + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + }, + { + label: '搜索值', + fieldName: 'searchValue', + component: 'Input', + }, +]; diff --git a/apps/web-antd/src/views/property/personalCenter/workflowDefinition/index.vue b/apps/web-antd/src/views/property/personalCenter/workflowDefinition/index.vue new file mode 100644 index 00000000..c4659c39 --- /dev/null +++ b/apps/web-antd/src/views/property/personalCenter/workflowDefinition/index.vue @@ -0,0 +1,188 @@ + + + diff --git a/apps/web-antd/src/views/property/personalCenter/workflowDefinition/workflowDefinition-modal.vue b/apps/web-antd/src/views/property/personalCenter/workflowDefinition/workflowDefinition-modal.vue new file mode 100644 index 00000000..f261e64f --- /dev/null +++ b/apps/web-antd/src/views/property/personalCenter/workflowDefinition/workflowDefinition-modal.vue @@ -0,0 +1,106 @@ + + + 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 c8dd77f8..b061b2d5 100644 --- a/apps/web-antd/src/views/property/resident/person/data.ts +++ b/apps/web-antd/src/views/property/resident/person/data.ts @@ -212,16 +212,6 @@ export const modalSchema: FormSchemaGetter = () => [ fieldName: 'carNumber', component: 'Input', }, - { - label: '人脸图片', - fieldName: 'img', - component: 'ImageUpload', - componentProps: { - // accept: 'image/*', // 可选拓展名或者mime类型 ,拼接 - maxCount: 1, // 最大上传文件数 默认为1 为1会绑定为string而非string[]类型 - }, - formItemClass: 'col-span-2', - }, { label: '授权期限', fieldName: 'authTime', @@ -257,6 +247,16 @@ export const modalSchema: FormSchemaGetter = () => [ }, rules: 'required', }, + { + label: '人脸图片', + fieldName: 'img', + component: 'ImageUpload', + componentProps: { + // accept: 'image/*', // 可选拓展名或者mime类型 ,拼接 + maxCount: 1, // 最大上传文件数 默认为1 为1会绑定为string而非string[]类型 + }, + formItemClass: 'col-span-2', + }, { label: '备注', fieldName: 'remark', diff --git a/apps/web-antd/src/views/property/resident/person/person-modal.vue b/apps/web-antd/src/views/property/resident/person/person-modal.vue index f32187ed..38ebe8ed 100644 --- a/apps/web-antd/src/views/property/resident/person/person-modal.vue +++ b/apps/web-antd/src/views/property/resident/person/person-modal.vue @@ -94,6 +94,9 @@ async function handleConfirm() { if(unitName.value){ data.unitName = unitName.value } + + data.begDate = data.authTime[0] + data.endDate = data.authTime[1] await (isUpdate.value ? personUpdate(data) : personAdd(data)); resetInitialized(); emit('reload'); diff --git a/apps/web-antd/src/views/property/roomBooking/conferenceView/index.vue b/apps/web-antd/src/views/property/roomBooking/conferenceView/index.vue index 05e99caa..3f493d73 100644 --- a/apps/web-antd/src/views/property/roomBooking/conferenceView/index.vue +++ b/apps/web-antd/src/views/property/roomBooking/conferenceView/index.vue @@ -42,7 +42,11 @@ const selectedRoom = ref(''); const selectedDate = ref(''); // 一周的日期 -const weekDates = ref([]); +interface WeekDate { + date: string; + weekDay: string; +} +const weekDates = ref([]); // 预约数据 const bookings = ref([]); @@ -54,16 +58,23 @@ const loading = ref(false); // 时间段只显示"上午" "下午" const timeSlots = ['上午', '下午']; +function getWeekDay(dateStr: string): string { + const weekMap = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']; + const day = dayjs(dateStr).day(); + return weekMap[dayjs(dateStr).day()]!; +} // 生成一周日期 function generateWeekDates(): void { const today = dayjs(); - // 获取本周的周一 const startOfWeek = today.startOf('week'); - const dates = Array.from({ length: 7 }, (_, i) => { - return startOfWeek.add(i, 'day').format('YYYY-MM-DD'); + const dates: WeekDate[] = Array.from({ length: 7 }, (_, i) => { + const date = startOfWeek.add(i, 'day').format('YYYY-MM-DD'); + return { + date, + weekDay: getWeekDay(date) + }; }); weekDates.value = dates; - // 默认选中今天 selectedDate.value = today.format('YYYY-MM-DD'); } @@ -107,7 +118,7 @@ async function fetchBookings(): Promise { const booking = bookings.value.find( (b) => b.name === room.name && b.slots === slot, ); - table[slot][room.name] = booking || null; + table[slot]![room.name] = booking || null; }); }); bookingTable.value = table; @@ -135,14 +146,14 @@ async function fetchBookings(): Promise { tbConferenceId: item.meetId, })); const table: Record> = { 上午: {}, 下午: {} }; - weekDates.value.forEach((date) => { + weekDates.value.forEach((item) => { ['上午', '下午'].forEach((slot) => { const booking = bookings.value.find( (b) => - dayjs(b.scheduledStarttime).format('YYYY-MM-DD') === date && + dayjs(b.scheduledStarttime).format('YYYY-MM-DD') === item.date && b.slots === slot, ); - table[slot][date] = booking || null; + table[slot]![item.date] = booking || null; }); }); bookingTable.value = table; @@ -271,10 +282,10 @@ const columns = computed[]>(() => { key: room.name, width: 200, })) - : weekDates.value.map((date) => ({ - title: dayjs(date).format('YYYY-MM-DD'), - dataIndex: date, - key: date, + : weekDates.value.map((item) => ({ + title: item.date, + dataIndex: item.date, + key: item.date, width: 200, })); return [...baseColumns, ...dynamicColumns]; @@ -284,10 +295,12 @@ const tableData = computed(() => { const slots = ['上午', '下午']; return slots.map((slot) => { const row: any = { slot }; - const cols = - viewMode.value === 'date' - ? getFullRoomList().map((room) => room.name) - : weekDates.value; + let cols: string[] = []; + if (viewMode.value === 'date') { + cols = getFullRoomList().map((room) => room.name); + } else { + cols = weekDates.value.map(item => item.date); + } cols.forEach((col) => { row[col] = bookingTable.value[slot]?.[col] || null; }); @@ -328,12 +341,12 @@ onMounted(() => {
{ >