diff --git a/package.json b/package.json index fca13be..e347ed3 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,8 @@ "vue": "^3.2.40", "vue-echarts": "^6.2.3", "vue-i18n": "^9.2.2", - "vue-router": "^4.0.14" + "vue-router": "^4.0.14", + "vuedraggable": "^4.1.0" }, "devDependencies": { "@arco-plugins/vite-vue": "^1.4.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2c8e383..b0eeadd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,6 +64,9 @@ importers: vue-router: specifier: ^4.0.14 version: 4.5.1(vue@3.5.17(typescript@4.9.5)) + vuedraggable: + specifier: ^4.1.0 + version: 4.1.0(vue@3.5.17(typescript@4.9.5)) devDependencies: '@arco-plugins/vite-vue': specifier: ^1.4.5 @@ -3834,6 +3837,9 @@ packages: resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} engines: {node: '>=4'} + sortablejs@1.14.0: + resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==} + sortablejs@1.15.6: resolution: {integrity: sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==} @@ -4400,6 +4406,11 @@ packages: typescript: optional: true + vuedraggable@4.1.0: + resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==} + peerDependencies: + vue: ^3.0.1 + webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} @@ -8440,6 +8451,8 @@ snapshots: dependencies: is-plain-obj: 1.1.0 + sortablejs@1.14.0: {} + sortablejs@1.15.6: {} source-map-js@1.2.1: {} @@ -9114,6 +9127,11 @@ snapshots: optionalDependencies: typescript: 4.9.5 + vuedraggable@4.1.0(vue@3.5.17(typescript@4.9.5)): + dependencies: + sortablejs: 1.14.0 + vue: 3.5.17(typescript@4.9.5) + webpack-virtual-modules@0.6.2: {} which-boxed-primitive@1.1.1: diff --git a/src/api/setting.ts b/src/api/setting.ts index dfb7a84..b344a22 100644 --- a/src/api/setting.ts +++ b/src/api/setting.ts @@ -1,268 +1,38 @@ import axios from 'axios'; -import type { UserPermission } from '@/types/api'; +import { + DepartmentFormParams, + DepartmentFormRes, + DepartmentListRes, + DepartmentDetailRes, + PaginationParams, + AllUserListRes, + FormUserItem, + UserInfoRes, + DisableUserParam, + RoleListRes, + RoleFormParam, + PermissionRes, + RolePermissionRes, + SaveRolePermissionParam, + UpdateUserRoleParam, + SafeInfoRes, + SafeParams, + SettingProjectRes, + SettingProjectParam, + SettingProjectTypeListRes, + SettingProjectTypeRes, + SettingProjectProvinceRes, + DictionaryForm, + CheckProjectParam, + SettingRoomTagsRes, + SettingRoomTagRes, + SettingTenantDictionaryRes, + TenantDictionaryType, + SettingContractNumbeRes, + CreateCodeSettingParam, +} from '@/types/setting'; import { HttpResponse } from './interceptor'; -// ==================== 通用类型定义 ==================== -export interface BaseEntity { - id: number; - createdAt: string; - updatedAt: string; -} - -export interface PaginationParams { - keyword?: string; - role_id?: number | null; - page?: number; - page_size?: number; -} - -export interface PaginationResult { - total?: number; - total_pages?: number; -} - -export type UserStatus = 1 | 2; // 1: 启用, 2: 禁用 -export type ManagerStatus = 1 | 2; // 1: 是主管, 2: 否 -export type DataType = 1 | 2 | 3; // 1: 全部数据权限, 2: 自定义数据权限, 3: 仅本人数据 -export type CheckedStatus = 1 | 2; // 是否选择:1是,2否 -export type DeleteStatus = 0 | 1; // 是否选择:1是 0否 -export type ProjectTypeChecked = 0 | 1; // 是否选择:1是 0否 -export type TenantDictionaryType = 1 | 2 | 3 | 4; // 类型:1租客类型,2租客来源,3租客行业分类,4租客企业规模 - -// ==================== 部门相关类型 ==================== -export interface DepartmentFormParams { - parent_id: number | null; - name: string; - leaderId?: number; - remark?: string; - id?: number; -} - -export interface DepartmentIdData { - departmentId: number | string; -} - -export interface DepartmentItem extends BaseEntity { - systemTenantId: number; - name: string; - parentId: number; - UserId: number; - level: number; - path: string; - remark: string; - isDelete: number; - sort: number; - children?: DepartmentItem[]; // 递归结构 - isShowEditIcon?: boolean; // 是否展示编辑icon - username?: string; - parentName?: string; -} - -export interface DepartmentDetailData { - department: DepartmentItem; -} - -// ==================== 用户相关类型 ==================== -export interface UserItem { - id: number; - username: string; - realname: string; - email: string; - tel: string; - status: UserStatus; - roleId: number; - departmentId: number; - roleName: string; - deptName: string; - lastLoginTime: string; -} - -export interface FormUserItem { - username: string; - realname: string; - tel: string | number; - password: string; - repassword: string; - role_id: number | null; - department_id: number | null; - email: string; - is_manager: ManagerStatus; -} - -export interface DisableUserParam { - id: number; - status: UserStatus; -} - -export interface UserInfo { - user: FormUserItem; -} - -export interface AllUserList { - page: PaginationParams & PaginationResult; - user?: UserItem[]; - userList?: UserItem[]; -} - -// ==================== 角色相关类型 ==================== -export interface RoleItem extends BaseEntity { - systemTenantId: number; - name: string; - createUserId?: number; - isDelete?: number; - remark?: string; - dataType: DataType; -} - -export interface RoleFormParam { - id?: number; - name: string; - remark?: string; -} - -export interface RoleList { - rolesList: RoleItem[]; -} - -export interface UserPermissionItem { - permission: UserPermission; -} - -export interface UserPermissionItemList { - permission: number[]; -} - -export interface SaveRolePermissionParam { - id: number; - children?: Array<{ - id: number; - path: string; - }>; -} -export interface UpdateUserRoleParam { - role_id: number | null; - user_id: number | null; -} -// ==================== 系统设置相关类型 ==================== -export type SafeDefaultPage = 1 | 2 | 3; // 默认登录页:1工作台 2项目管理 3房源剖视 -export type SafeLoginTimeType = 1 | 2 | 3 | 4; // 登录状态保存时间:1:7天, 2:1天, 3:12小时, 4:1小时 -export type SafeMoreLogin = 1 | 2; // 多点登录支持:1支持 2不支持 -export type DefaultPriceType = 1 | 2; // 默认单价:1 元/㎡*月 , 2 元/㎡*天 -export type AreaAccuracyType = 1 | 2 | 3; // 面积精度:1:两位数,2:1位数,3:整数 -export type ExpireSoonType = 1 | 2 | 3; // 房源即将到期设置:1:30天,2:60天,3:90天 -export type CumulativeDayType = 1 | 2 | 3 | 4; // 累计出租率天数类型:1:按本年累计天数计算(从1月1日至今),2:按 本年整年天数 计算(本年:365天),3:按 本月累计天数 计算(从本月1日至今),4:按 本月整月天数 计算(本月:31天) - -export interface SafeParams { - default_url_typee: SafeDefaultPage; - login_time_type: SafeLoginTimeType; - is_more_login: SafeMoreLogin; -} -export interface SafeInfo { - id: number; - systemTenantId: number | null; // 租户id - defaultUrlType: SafeDefaultPage; // 默认登录页:1工作台 2项目管理 3房源剖视 - loginTimeType: SafeLoginTimeType; // 登录状态保存时间:1:7天, 2:1天, 3:12小时, 4:1小时 - isMoreLogin: SafeMoreLogin; // 多点登录支持:1支持 2不支持 - createdAt?: string; - updatedAt?: string; -} - -export interface SettingProjectParam { - default_price_type: DefaultPriceType; - area_accuracy_type: AreaAccuracyType; - expire_soon_type: ExpireSoonType; - rent_rate_type: number; // 出租率:1:在租面积 / 总可出租面积 * 100 = 出租率 - rent_area_type: string; // 在租面积定义:1:合同起始日期,2:合同免租期,3:合同装修期,4:房源保留 (ps:1,2 以逗号隔开) - rentable_area_type: string; // 总可出租面积定义:1:房源招商,2:房源保留,3:房源已到期,4:房源下架 (ps:1,2 以逗号隔开) - cumulative_rent_rate_type: number; // 累计出租率:1:∑(在租面积 × 在租天数) / ∑(可出租面积 × 可出租天数) = 累计出租率 - cumulative_day_type: CumulativeDayType; -} -export interface projectSettingInfo { - id: number; - systemTenantId: number; // 租户id - defaultPriceType: DefaultPriceType; - areaAccuracyType: AreaAccuracyType; - expireSoonType: ExpireSoonType; - rentRateType: number; // 出租率:1:在租面积 / 总可出租面积 * 100 = 出租率 - rentAreaType: string; // 在租面积定义:1:合同起始日期,2:合同免租期,3:合同装修期,4:房源保留 (ps:1,2 以逗号隔开) - rentableAreaType: string; // 总可出租面积定义:1:房源招商,2:房源保留,3:房源已到期,4:房源下架 (ps:1,2 以逗号隔开) - cumulativeRentRateType: number; // 累计出租率:1:∑(在租面积 × 在租天数) / ∑(可出租面积 × 可出租天数) = 累计出租率 - cumulativeDayType: CumulativeDayType; - createdAt?: string; - updatedAt?: string; -} -export interface projectTypeInfo { - id: number; - systemTenantId: number; // 租户id - name: string; // 类型名称 - color: string; // 颜色 - type: 1 | 2; // 1系统类型,2租户类型 - createUserId: number; // 创建人id - isCheck: CheckedStatus; // 是否选择:1是,2否 - isDelete?: DeleteStatus; // 是否选择:1是,0否 - createdAt?: string; - updatedAt?: string; -} -export interface ProvinceItem { - id: number; - name: string; // 省份 - code: string; // 编码 - isCheck: 0 | 1; -} -export interface DictionaryForm { - id?: number; - name: string; - color?: string; - type?: TenantDictionaryType | null; -} -export interface CheckProjectParam { - id?: number; - is_check: ProjectTypeChecked; - type?: TenantDictionaryType; -} -export interface SettingTenantDictionaryObj { - TenantTypeList: projectTypeInfo[]; - TenantSourceList: projectTypeInfo[]; - TenantIndustryList: projectTypeInfo[]; - TenantEnterpriseList: projectTypeInfo[]; -} - -// ==================== 响应类型别名 ==================== -export type DepartmentFormRes = HttpResponse; -export type DepartmentList = DepartmentItem[]; -export type DepartmentListRes = HttpResponse<{ - departmentList: DepartmentItem[]; -}>; -export type DepartmentDetailRes = HttpResponse; -export type UserList = UserItem[]; -export type UserListRes = HttpResponse; -export type AllUserListRes = HttpResponse; -export type UserInfoRes = HttpResponse; -export type RoleListRes = HttpResponse; -export type PermissionRes = HttpResponse; -export type RolePermissionRes = HttpResponse; -export type SafeInfoRes = HttpResponse<{ safeSetting: SafeInfo }>; -export type SettingProjectRes = HttpResponse<{ - projectSetting: projectSettingInfo; -}>; -export type SettingProjectTypeListRes = HttpResponse<{ - projectTypesList: projectTypeInfo[]; -}>; -export type SettingProjectTypeRes = HttpResponse<{ - projectType: projectTypeInfo; -}>; -export type SettingProjectProvinceRes = HttpResponse<{ - list: ProvinceItem[]; -}>; -export type SettingRoomTagsRes = HttpResponse<{ - roomTagsList: projectTypeInfo[]; -}>; -export type SettingRoomTagRes = HttpResponse<{ - roomTag: projectTypeInfo; -}>; -export type SettingTenantDictionaryRes = HttpResponse<{ - allList: SettingTenantDictionaryObj; -}>; // ==================== 部门相关 API ==================== export function createDepartment( params: DepartmentFormParams @@ -520,3 +290,80 @@ export function getTenantDictionaryListByType( ): Promise { return axios.get(`dictionary/getTenantDictionaryList?type=${type}`); } +// 合同设置-合同编号设置-全部启用列表 +export function getAllCodeSettingList(): Promise { + return axios.get(`contractSetting/getAllCodeSettingList`); +} +// 合同设置-合同编号设置-新增 +export function createCodeSetting( + params: CreateCodeSettingParam +): Promise { + return axios.post(`contractSetting/createCodeSetting`, params); +} +// 合同设置-合同编号设置-编辑 +export function updateCodeSetting( + params: CreateCodeSettingParam +): Promise { + return axios.post(`contractSetting/updateCodeSetting`, params); +} +// 合同设置-合同编号设置-删除 +export function delCodeSetting(id: number): Promise { + return axios.get(`contractSetting/delCodeSetting?id=${id}`); +} +// 合同设置-合同编号设置-单个详情 +export function getCodeSettingFromId( + id: number +): Promise { + return axios.get(`contractSetting/getCodeSetting?id=${id}`); +} +// 合同设置-合同编号设置-启用/禁用 +export function disableCodeSetting( + params: DisableUserParam +): Promise { + return axios.post(`contractSetting/disableCodeSetting`, params); +} +// 合同设置-合同编号设置-列表(带分页) +export function getCodeSettingList( + params: PaginationParams +): Promise { + return axios.post(`contractSetting/getCodeSettingList`, params); +} + +// 合同设置-合同条款设置-全部启用列表 +export function getAllTermsSettingList(): Promise { + return axios.get(`contractSetting/getAllTermsSettingList`); +} +// 合同设置-合同条款设置-新增 +export function createTermsSetting( + params: CreateCodeSettingParam +): Promise { + return axios.post(`contractSetting/createTermsSetting`, params); +} +// 合同设置-合同条款设置-编辑 +export function updateTermsSetting( + params: CreateCodeSettingParam +): Promise { + return axios.post(`contractSetting/updateTermsSetting`, params); +} +// 合同设置-合同条款设置-删除 +export function delTermsSetting(id: number): Promise { + return axios.get(`contractSetting/delTermsSetting?id=${id}`); +} +// 合同设置-合同条款设置-单个详情 +export function getTermsSettingFromId( + id: number +): Promise { + return axios.get(`contractSetting/getTermsSetting?id=${id}`); +} +// 合同设置-合同条款设置-启用/禁用 +export function disableTermsSetting( + params: DisableUserParam +): Promise { + return axios.post(`contractSetting/disableTermsSetting`, params); +} +// 合同设置-合同条款设置-列表(带分页) +export function getTermsSettingList( + params: PaginationParams +): Promise { + return axios.post(`contractSetting/getTermsSettingList`, params); +} diff --git a/src/composables/useDepartmentList.ts b/src/composables/useDepartmentList.ts index 5785cc5..153d1e1 100644 --- a/src/composables/useDepartmentList.ts +++ b/src/composables/useDepartmentList.ts @@ -1,10 +1,6 @@ import { ref, onMounted } from 'vue'; -import { - getDepartmentList, - DepartmentItem, - getDepartmentDetail, -} from '@/api/setting'; -import useLoading from '@/hooks/loading'; +import { getDepartmentList, getDepartmentDetail } from '@/api/setting'; +import { DepartmentItem } from '@/types/setting'; export default function useDepartmentList(autoFetch = true) { const departmentListData = ref([]); diff --git a/src/types/setting.ts b/src/types/setting.ts new file mode 100644 index 0000000..a7f528e --- /dev/null +++ b/src/types/setting.ts @@ -0,0 +1,287 @@ +import type { UserPermission } from '@/types/api'; +import { HttpResponse } from '@/api/interceptor'; +// ==================== 通用类型定义 ==================== +export interface BaseEntity { + id: number; + createdAt: string; + updatedAt: string; +} + +export interface PaginationParams { + keyword?: string; + role_id?: number | null; + page?: number; + page_size?: number; +} + +export interface PaginationResult { + total?: number; + total_pages?: number; +} + +export type UserStatus = 1 | 2; // 1: 启用, 2: 禁用 +export type ManagerStatus = 1 | 2; // 1: 是主管, 2: 否 +export type DataType = 1 | 2 | 3; // 1: 全部数据权限, 2: 自定义数据权限, 3: 仅本人数据 +export type CheckedStatus = 1 | 2; // 是否选择:1是,2否 +export type DeleteStatus = 0 | 1; // 是否选择:1是 0否 +export type ProjectTypeChecked = 0 | 1; // 是否选择:1是 0否 +export type TenantDictionaryType = 1 | 2 | 3 | 4; // 类型:1租客类型,2租客来源,3租客行业分类,4租客企业规模 +export type ContractSettingStatus = 0 | 1; // 0不回收,1回收 +export type delCodeRecycling = 0 | 1; // 删除合同编号回收:0不回收,1回收 +export type cancelCodeRecycling = 0 | 1; +// ==================== 部门相关类型 ==================== +export interface DepartmentFormParams { + parent_id: number | null; + name: string; + leaderId?: number; + remark?: string; + id?: number; +} + +export interface DepartmentIdData { + departmentId: number | string; +} + +export interface DepartmentItem extends BaseEntity { + systemTenantId: number; + name: string; + parentId: number; + UserId: number; + level: number; + path: string; + remark: string; + isDelete: number; + sort: number; + children?: DepartmentItem[]; // 递归结构 + isShowEditIcon?: boolean; // 是否展示编辑icon + username?: string; + parentName?: string; +} + +export interface DepartmentDetailData { + department: DepartmentItem; +} + +// ==================== 用户相关类型 ==================== +export interface UserItem { + id: number; + username: string; + realname: string; + email: string; + tel: string; + status: UserStatus; + roleId: number; + departmentId: number; + roleName: string; + deptName: string; + lastLoginTime: string; +} + +export interface FormUserItem { + username: string; + realname: string; + tel: string | number; + password: string; + repassword: string; + role_id: number | null; + department_id: number | null; + email: string; + is_manager: ManagerStatus; +} + +export interface DisableUserParam { + id: number; + status: UserStatus; +} + +export interface UserInfo { + user: FormUserItem; +} + +export interface AllUserList { + page: PaginationParams & PaginationResult; + user?: UserItem[]; + userList?: UserItem[]; +} + +// ==================== 角色相关类型 ==================== +export interface RoleItem extends BaseEntity { + systemTenantId: number; + name: string; + createUserId?: number; + isDelete?: number; + remark?: string; + dataType: DataType; +} + +export interface RoleFormParam { + id?: number; + name: string; + remark?: string; +} + +export interface RoleList { + rolesList: RoleItem[]; +} + +export interface UserPermissionItem { + permission: UserPermission; +} + +export interface UserPermissionItemList { + permission: number[]; +} + +export interface SaveRolePermissionParam { + id: number; + children?: Array<{ + id: number; + path: string; + }>; +} +export interface UpdateUserRoleParam { + role_id: number | null; + user_id: number | null; +} +// ==================== 系统设置相关类型 ==================== +export type SafeDefaultPage = 1 | 2 | 3; // 默认登录页:1工作台 2项目管理 3房源剖视 +export type SafeLoginTimeType = 1 | 2 | 3 | 4; // 登录状态保存时间:1:7天, 2:1天, 3:12小时, 4:1小时 +export type SafeMoreLogin = 1 | 2; // 多点登录支持:1支持 2不支持 +export type DefaultPriceType = 1 | 2; // 默认单价:1 元/㎡*月 , 2 元/㎡*天 +export type AreaAccuracyType = 1 | 2 | 3; // 面积精度:1:两位数,2:1位数,3:整数 +export type ExpireSoonType = 1 | 2 | 3; // 房源即将到期设置:1:30天,2:60天,3:90天 +export type CumulativeDayType = 1 | 2 | 3 | 4; // 累计出租率天数类型:1:按本年累计天数计算(从1月1日至今),2:按 本年整年天数 计算(本年:365天),3:按 本月累计天数 计算(从本月1日至今),4:按 本月整月天数 计算(本月:31天) + +export interface SafeParams { + default_url_typee: SafeDefaultPage; + login_time_type: SafeLoginTimeType; + is_more_login: SafeMoreLogin; +} +export interface SafeInfo extends BaseEntity { + systemTenantId: number | null; // 租户id + defaultUrlType: SafeDefaultPage; // 默认登录页:1工作台 2项目管理 3房源剖视 + loginTimeType: SafeLoginTimeType; // 登录状态保存时间:1:7天, 2:1天, 3:12小时, 4:1小时 + isMoreLogin: SafeMoreLogin; // 多点登录支持:1支持 2不支持 +} + +export interface SettingProjectParam { + default_price_type: DefaultPriceType; + area_accuracy_type: AreaAccuracyType; + expire_soon_type: ExpireSoonType; + rent_rate_type: number; // 出租率:1:在租面积 / 总可出租面积 * 100 = 出租率 + rent_area_type: string; // 在租面积定义:1:合同起始日期,2:合同免租期,3:合同装修期,4:房源保留 (ps:1,2 以逗号隔开) + rentable_area_type: string; // 总可出租面积定义:1:房源招商,2:房源保留,3:房源已到期,4:房源下架 (ps:1,2 以逗号隔开) + cumulative_rent_rate_type: number; // 累计出租率:1:∑(在租面积 × 在租天数) / ∑(可出租面积 × 可出租天数) = 累计出租率 + cumulative_day_type: CumulativeDayType; +} +export interface projectSettingInfo extends BaseEntity { + systemTenantId: number; // 租户id + defaultPriceType: DefaultPriceType; + areaAccuracyType: AreaAccuracyType; + expireSoonType: ExpireSoonType; + rentRateType: number; // 出租率:1:在租面积 / 总可出租面积 * 100 = 出租率 + rentAreaType: string; // 在租面积定义:1:合同起始日期,2:合同免租期,3:合同装修期,4:房源保留 (ps:1,2 以逗号隔开) + rentableAreaType: string; // 总可出租面积定义:1:房源招商,2:房源保留,3:房源已到期,4:房源下架 (ps:1,2 以逗号隔开) + cumulativeRentRateType: number; // 累计出租率:1:∑(在租面积 × 在租天数) / ∑(可出租面积 × 可出租天数) = 累计出租率 + cumulativeDayType: CumulativeDayType; +} +export interface projectTypeInfo extends BaseEntity { + systemTenantId: number; // 租户id + name: string; // 类型名称 + color: string; // 颜色 + type: 1 | 2; // 1系统类型,2租户类型 + createUserId: number; // 创建人id + isCheck: CheckedStatus; // 是否选择:1是,2否 + isDelete?: DeleteStatus; // 是否选择:1是,0否 +} +export interface ProvinceItem { + id: number; + name: string; // 省份 + code: string; // 编码 + isCheck: 0 | 1; +} +export interface DictionaryForm { + id?: number; + name: string; + color?: string; + type?: TenantDictionaryType | null; +} +export interface CheckProjectParam { + id?: number; + is_check: ProjectTypeChecked; + type?: TenantDictionaryType; +} +export interface SettingTenantDictionaryObj { + TenantTypeList: projectTypeInfo[]; + TenantSourceList: projectTypeInfo[]; + TenantIndustryList: projectTypeInfo[]; + TenantEnterpriseList: projectTypeInfo[]; +} +export interface ContractTermInfo extends BaseEntity { + systemTenantId: number; // 系统租户id + name: string; // 编号名称 + cancelCodeRecycling: ContractSettingStatus; // 作废合同编号是否回收 + delCodeRecycling: ContractSettingStatus; // 删除合同编号是否回收 + createUserId: number; // 创建人id + status: UserStatus; // 状态:1 启用,2 禁用 + isDelete: DeleteStatus; // 是否删除:0否,1是 + statusStr: string; + contractSettingStr?: string; + code?: string; +} +export interface ArrangeInfo { + type: number; + content?: string; + sort: number; + date_type?: number; + data_type?: number; + data_digit?: number | string; +} +export interface CreateCodeSettingParam { + id?: number; + name: string; + cancel_code_recycling: delCodeRecycling; + del_code_recycling: delCodeRecycling; + arrange: ArrangeInfo[]; +} + +// ==================== 响应类型别名 ==================== +export type DepartmentFormRes = HttpResponse; +export type DepartmentList = DepartmentItem[]; +export type DepartmentListRes = HttpResponse<{ + departmentList: DepartmentItem[]; +}>; +export type DepartmentDetailRes = HttpResponse; +export type UserList = UserItem[]; +export type UserListRes = HttpResponse; +export type AllUserListRes = HttpResponse; +export type UserInfoRes = HttpResponse; +export type RoleListRes = HttpResponse; +export type PermissionRes = HttpResponse; +export type RolePermissionRes = HttpResponse; +export type SafeInfoRes = HttpResponse<{ safeSetting: SafeInfo }>; +export type SettingProjectRes = HttpResponse<{ + projectSetting: projectSettingInfo; +}>; +export type SettingProjectTypeListRes = HttpResponse<{ + projectTypesList: projectTypeInfo[]; +}>; +export type SettingProjectTypeRes = HttpResponse<{ + projectType: projectTypeInfo; +}>; +export type SettingProjectProvinceRes = HttpResponse<{ + list: ProvinceItem[]; +}>; +export type SettingRoomTagsRes = HttpResponse<{ + roomTagsList: projectTypeInfo[]; +}>; +export type SettingRoomTagRes = HttpResponse<{ + roomTag: projectTypeInfo; +}>; +export type SettingTenantDictionaryRes = HttpResponse<{ + allList: SettingTenantDictionaryObj; +}>; +export type SettingContractNumbeRes = HttpResponse<{ + contractCodeSetting: ContractTermInfo[]; + page?: PaginationParams & PaginationResult; +}>; diff --git a/src/utils/caseConvert.ts b/src/utils/caseConvert.ts new file mode 100644 index 0000000..f8cdfb4 --- /dev/null +++ b/src/utils/caseConvert.ts @@ -0,0 +1,16 @@ +export function camelToSnake(obj) { + if (Array.isArray(obj)) { + return obj.map(camelToSnake); + } + if (obj !== null && typeof obj === 'object') { + const newObj = {}; + Object.keys(obj).forEach((key) => { + const newKey = key.replace(/([A-Z])/g, '_$1').toLowerCase(); + newObj[newKey] = camelToSnake(obj[key]); // 递归处理嵌套对象或数组 + }); + return newObj; + } + return obj; +} + +export default {}; diff --git a/src/views/setting/system/contract-settings/contract-number.vue b/src/views/setting/system/contract-settings/contract-number.vue new file mode 100644 index 0000000..4b9ff74 --- /dev/null +++ b/src/views/setting/system/contract-settings/contract-number.vue @@ -0,0 +1,217 @@ + + + diff --git a/src/views/setting/system/contract-settings/contract-template.vue b/src/views/setting/system/contract-settings/contract-template.vue new file mode 100644 index 0000000..6256e61 --- /dev/null +++ b/src/views/setting/system/contract-settings/contract-template.vue @@ -0,0 +1,3 @@ + diff --git a/src/views/setting/system/contract-settings/contract-terms.vue b/src/views/setting/system/contract-settings/contract-terms.vue new file mode 100644 index 0000000..c3c0697 --- /dev/null +++ b/src/views/setting/system/contract-settings/contract-terms.vue @@ -0,0 +1,216 @@ + + + diff --git a/src/views/setting/system/contract-settings/create-contract-template.vue b/src/views/setting/system/contract-settings/create-contract-template.vue new file mode 100644 index 0000000..6256e61 --- /dev/null +++ b/src/views/setting/system/contract-settings/create-contract-template.vue @@ -0,0 +1,3 @@ + diff --git a/src/views/setting/system/contract-settings/index.vue b/src/views/setting/system/contract-settings/index.vue index c8cb69c..df109a1 100644 --- a/src/views/setting/system/contract-settings/index.vue +++ b/src/views/setting/system/contract-settings/index.vue @@ -1,3 +1,136 @@ + + + + diff --git a/src/views/setting/system/contract-settings/modal/contract-number-form-modal.vue b/src/views/setting/system/contract-settings/modal/contract-number-form-modal.vue new file mode 100644 index 0000000..4e36345 --- /dev/null +++ b/src/views/setting/system/contract-settings/modal/contract-number-form-modal.vue @@ -0,0 +1,323 @@ + + + + + diff --git a/src/views/setting/system/contract-settings/modal/contract-terms-form-modal.vue b/src/views/setting/system/contract-settings/modal/contract-terms-form-modal.vue new file mode 100644 index 0000000..ce83080 --- /dev/null +++ b/src/views/setting/system/contract-settings/modal/contract-terms-form-modal.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/src/views/setting/system/data-dictionary/components/label-form-modal.vue b/src/views/setting/system/data-dictionary/components/label-form-modal.vue index 9a536c0..c22e04c 100644 --- a/src/views/setting/system/data-dictionary/components/label-form-modal.vue +++ b/src/views/setting/system/data-dictionary/components/label-form-modal.vue @@ -69,7 +69,7 @@