feat:迁移

This commit is contained in:
dzc committed 2026-03-12 14:43:35 +08:00
1 parent 838f05b3c0
commit 36a8665bae
44 files changed
+8043 -29

No files matched your search

+51
View File
@@ -0,0 +1,51 @@
import request from "@/sheep/utils/request"
export default {
/**
* 提交意见反馈
*/
submitFeedback: (data: {
title: string;
description: string;
picUrl?: string;
type: string;
contact?: string;
}) =>
request({
url: '/integrated/feedback/app/save',
method: 'POST',
data,
}),
/**
* 获取我的反馈列表
*/
getFeedbackList: (params: { current: number; size: number }) =>
request({
url: '/integrated/feedback/app/page',
method: 'GET',
params,
}),
/**
* 获取反馈详情
*/
getFeedbackDetail: (id: string) =>
request({
url: '/integrated/feedback/app/getDetails',
method: 'GET',
params: { id },
}),
/**
* 获取反馈类型字典
*/
getFeedbackType: () =>
request({
url: '/integrated/feedback/app/getFeedbackType',
method: 'GET',
}),
}
+9
View File
@@ -7,14 +7,23 @@ export { default as applyApi } from "./apply"
export { default as adApi } from "./ad"
export { default as boxesApi } from "./boxes"
export { default as faceApi } from "./face"
export { default as feedbackApi } from "./feedback"
export { default as foodApi } from "./food"
export { default as integratedApi } from "./integrated"
export { default as invitationApi } from "./invitation"
export { default as lostAndFoundApi } from "./lost-and-found"
export { default as maintenanceApi } from "./maintenance"
export { default as meetingRoomApi } from "./meeting-room"
export { default as merchantApi } from "./merchant"
export { default as miniPlatformApi } from "./mini-platform"
export { default as noticeApi } from "./notice"
export { default as orderApi } from "./order"
export { default as payApi } from "./pay"
export { default as productApi } from "./product"
export { default as refundApi } from "./refund"
export { default as shopApi } from "./shop"
export { default as sysBannerApi } from "./sys-banner"
export { default as taskApi } from "./task"
export { default as totalApi } from "./total"
export { default as userCarApi } from "./user-car"
export { default as userApi } from "./user"
+18
View File
@@ -0,0 +1,18 @@
import request from '@/sheep/utils/request'
export default {
// 工作待办列表
getTodoList: (params = {}) =>
request({
url: '/integrated/task/process-instance/queryMineTask',
method: 'GET',
params,
}),
// 我的已办列表
getDoneList: (params = {}) =>
request({
url: '/integrated/task/process-instance/queryMineEndTask',
method: 'GET',
params,
}),
}
+42
View File
@@ -0,0 +1,42 @@
import request from "@/sheep/utils/request"
export default {
// 获取拜访原因字典
getDictListByType: (type: number | string): Promise<any> =>
request({
url: `/integrated/visitors/getDictListByType?type=${type}`,
method: "GET",
}),
// 保存访客邀约
saveInvitation: (data: any): Promise<any> =>
request({
url: `/integrated/visitors/app/saveYY`,
method: "POST",
data,
}),
// 获取访客邀约记录列表
// type为1:主动申请 type为2:邀约 type为3:后台创建
getInvitationRecord: (params: { current: number; size: number; checkStatus?: string; type?: number }): Promise<any> =>
request({
url: `/integrated/visitors/app/yy/page`,
method: "GET",
params,
}),
// 更新审核状态通过 2:通过 3:拒绝
updateCheckStatus: (params: { id: string; checkStatus: number | string }): Promise<any> =>
request({
url: `/integrated/visitors/app/updateCheckStatus`,
method: "GET",
params,
}),
// 查看邀约详情
getInvitationDetail: (id: string): Promise<any> =>
request({
url: `/integrated/visitors/${id}`,
method: "GET",
}),
}
+44
View File
@@ -0,0 +1,44 @@
import request from "@/sheep/utils/request"
interface LostAndFoundItem {
id: string
title: string
picUrl: string | null
description: string
dateFound: string
location: string
status: string
}
interface PageData {
records: LostAndFoundItem[]
total: number
size: number
current: number
pages: number
}
interface ApiResponse {
code: number
msg: string | null
data: PageData
ok: boolean
}
export default {
// 获取失物招领列表
getList: (params: { current: number; size: number }) =>
request({
url: "integrated/lostAndFound/app/page",
method: "GET",
params,
}),
// 获取失物招领详情
getDetail: (id: string) =>
request({
url: "integrated/lostAndFound/app/getDetails",
method: "GET",
params: { id },
}),
}
+52
View File
@@ -0,0 +1,52 @@
import request from "@/sheep/utils/request"
export default {
/**
* 提交维修申请
*/
submitRepair: (data: {
title: string;
picUrl?: string;
description: string;
dateFound: string;
location: string;
urgency: string;
maintainType: number;
}) =>
request({
url: '/integrated/maintenanceOrder/app/apply',
method: 'POST',
data,
}),
/**
* 获取我的维修记录列表
*/
getRepairList: (params: { current: number; size: number }) =>
request({
url: '/integrated/maintenanceOrder/app/my',
method: 'GET',
params,
}),
/**
* 获取维修详情
*/
getRepairDetail: (id: string | number) =>
request({
url: `/integrated/maintenanceOrder/app/my/${id}`,
method: 'GET',
}),
/**
* 获取维修类型选项
*/
getFeedbackType: () =>
request({
url: '/integrated/maintenanceOrder/app/getFeedbackType',
method: 'GET',
}),
}
+92
View File
@@ -0,0 +1,92 @@
import request from "@/sheep/utils/request"
export default {
/**
* 会议室分页列表
*/
getMeetingRoomList: (params: { current: number; size: number }) =>
request({
url: "/integrated/meetingRoom/app/page",
method: "GET",
params,
}),
/**
* 获取会议室时间段
*/
getTimeSlots: (roomId: string, date: string) =>
request({
url: `/integrated/meetingRoom/${roomId}/time-slots`,
method: "GET",
params: { date },
}),
/**
* 预约会议室
*/
bookMeetingRoom: (roomId: string, data: {
date: string;
startTime: string;
endTime: string;
title: string;
description: string;
attendees: string[];
need_service?: string;
deskLayout?: string;
}) =>
request({
url: `/integrated/meetingRoom/${roomId}/book`,
method: "POST",
data,
}),
/**
* 获取我的预约列表
*/
getMyBookings: (params: { current: number; size: number; checkStatus?: number }) =>
request({
url: '/integrated/meetingRoom/app/my-bookings',
method: 'GET',
params,
}),
/**
* 获取预约详情
*/
getBookingDetail: (id: string) =>
request({
url: `/integrated/meetingRoom/app/booking-detail/${id}`,
method: 'GET',
}),
/**
* 获取桌子拜访形态
*/
getMeetingDeskLayout: (id: string) =>
request({
url: `/integrated/meetingDeskLayout/app/list`,
method: 'GET',
}),
/**
* 确认结束会议
*/
confirmEndMeeting: (bookingId: string) =>
request({
url: `/integrated/meetingBooking/app/confirm-end-meeting/${bookingId}`,
method: 'POST',
}),
/**
* 取消预约
*/
cancelBooking: (bookingId: string) =>
request({
url: `/integrated/meetingRoom/app/cancel-booking/${bookingId}`,
method: 'POST',
}),
}
+52
View File
@@ -0,0 +1,52 @@
import request from "@/sheep/utils/request"
export default {
// 公告分页列表
getNoticePage: (params: { current: number; size: number }) =>
request({
url: "/integrated/notice/app/page",
method: "GET",
params,
}),
// 公告详情
getNoticeDetail: (id: string) =>
request({
url: `/integrated/notice/app/${id}`,
method: "GET",
}),
// 增加浏览量
addNoticeView: (id: string) =>
request({
url: `/integrated/notice/app/view/${id}`,
method: "POST",
}),
// ========== 通知公告相关接口 ==========
/**
* 获取公告列表
*/
getNoticeList: (params: { current: number; size: number; type?: string }) =>
request({
url: "/integrated/notice/list",
method: "GET",
params,
}),
/**
* 获取公告详情
*/
getNoticeDetailById: (id: string) =>
request({
url: `/integrated/notice/detail/${id}`,
method: "GET",
}),
/**
* 标记公告已读
*/
markNoticeRead: (id: string) =>
request({
url: `/integrated/notice/read/${id}`,
method: "POST",
}),
}
+12
View File
@@ -0,0 +1,12 @@
import request from "@/sheep/utils/request"
export default {
/**
* 根据轮播图 id 查询标题和富文本详情
*/
getDetail: (id: string) =>
request({
url: `/integrated/sysBanner/detail/${id}`,
method: "GET",
}),
}
+97
View File
@@ -0,0 +1,97 @@
import request from "@/sheep/utils/request"
export default {
/**
* 查询任务详情
*/
queryTask: (taskId: string, view: boolean = false) =>
request({
url: "/task/task/queryTask",
method: "GET",
params: { taskId, view },
}),
/**
* 格式化开始节点显示
*/
formatStartNodeShow: (data: {
flowId: string;
processInstanceId: string;
paramMap: any;
taskId: string;
}) =>
request({
url: "/task/process-instance/formatStartNodeShow",
method: "POST",
data,
}),
/**
* 完成任务(审批)
*/
completeTask: (data: {
taskId: string;
paramMap: any;
taskLocalParamMap: {
approveDesc: string;
};
}) =>
request({
url: "/task/task/completeTask",
method: "POST",
data,
}),
/**
* 转办任务
*/
delegateTask: (data: {
taskId: string;
assignee: string;
comment?: string;
}) =>
request({
url: "/task/task/delegate",
method: "POST",
data,
}),
/**
* 获取用户选择列表
*/
getUserSelectionList: () =>
request({
url: "/task/task/getUserSelectionList",
method: "GET",
}),
/**
* 获取部门组织架构和用户列表
*/
getDeptOrgUsers: (parentDeptId: number = 0) =>
request({
url: "/admin/dept/org",
method: "GET",
params: {
type: "user",
parentDeptId,
},
}),
/**
* 设置转办人员
*/
setAssignee: (data: {
paramMap: any;
taskId: string;
targetUserIdList: string[];
taskLocalParamMap: {
approveDesc: string;
};
}) =>
request({
url: "/task/task/setAssignee",
method: "POST",
data,
}),
}
+21
View File
@@ -0,0 +1,21 @@
<script setup lang="ts">
import { ref, reactive } from "vue"
type Props = {
text?: string
}
const props = withDefaults(defineProps<Props>(), {
text: "暂无内容"
})
</script>
<template>
<view class="size-full flex-col-center">
<image class="w-400rpx h-240rpx" src="/static/empty/empty-1.png" mode="aspectFill" />
<view class="sub-text-24 m-t-20rpx">{{ props.text }}</view>
</view>
</template>
<style lang="scss" scoped></style>
+141
View File
@@ -0,0 +1,141 @@
<template>
<view class="date-time-range">
<view class="date-range-item" :class="[selectedDateIndex == index ? 'active' : '']"
v-for="(item, index) in getLast7DaysWeek()" :key="index" @click="selectDate(item, index)">
<view>{{ item.week }}</view>
<view>{{ item.date }}</view>
</view>
</view>
<view class="day-time-point-list">
<tm-button class="day-time-button" size="m" :color="selectedTimePointIndex == item.index ? '' : 'info'"
:disabled="item.disabled" v-for="item in availableTimePoints" :key="item.index"
@click="selectTimePoint(item.time, item.index)">
{{ item.time.slice(0, 5) }}
</tm-button>
</view>
<view class="px-20rpx py-2 flex justify-between">
<tm-button skin="thin" block @click="emit('cancel')">取消</tm-button>
&nbsp;&nbsp;
<tm-button block @click="onConfirm">确定</tm-button>
</view>
</template>
<script setup lang="ts">
import { ref, computed } from "vue"
const emit = defineEmits(["confirm", "cancel"])
// 未来一周的日期
const getLast7DaysWeek = (): { week: string; date: string; fullDate: string }[] => {
const weekMap: string[] = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
const result: { week: string; date: string; fullDate: string }[] = []
const today = new Date()
for (let i = 0; i < 7; i++) {
const d = new Date(today)
d.setDate(today.getDate() + i)
const week = weekMap[d.getDay()]
const month = (d.getMonth() + 1).toString().padStart(2, "0")
const day = d.getDate().toString().padStart(2, "0")
const fullDate = `${d.getFullYear()}-${month}-${day}`
result.push({
week,
date: `${month}-${day}`,
fullDate,
})
}
return result
}
// 判断时间是否已过期
const isTimePast = (dateStr: string, timeStr: string): boolean => {
try {
const now = new Date()
const selectedDateTime = new Date(`${dateStr} ${timeStr}`)
return selectedDateTime < now
} catch (error) {
return false
}
}
// 生成时间点列表(8:00-18:00,每半小时一个时间点)
const dayTimePointList = computed(() => {
const times: string[] = []
for (let i = 8; i < 18; i++) {
times.push(`${i.toString().padStart(2, "0")}:00:00`)
times.push(`${i.toString().padStart(2, "0")}:30:00`)
}
times.push("18:00:00") // 添加18:00作为结束时间
return times
})
// 过滤出可用的时间点(未过期的)
const availableTimePoints = computed(() => {
return dayTimePointList.value.map((time, index) => ({
time,
index,
disabled: isTimePast(selectedDateValue.value.fullDate, time)
}))
})
const selectedDateIndex = ref(0)
const selectedDateValue = ref<{ week: string; date: string; fullDate: string }>(getLast7DaysWeek()[0])
const selectedTimePointIndex = ref(0)
const selectedTimePointValue = ref(dayTimePointList.value[0])
// 选择周
const selectDate = (value: { week: string; date: string; fullDate: string }, index: number) => {
selectedDateValue.value = value
selectedDateIndex.value = index
}
// 选择时间点
const selectTimePoint = (value: string, index: number) => {
// 检查是否已过期
if (isTimePast(selectedDateValue.value.fullDate, value)) {
uni.showToast({ title: '不能选择过去的时间', icon: 'none' })
return
}
selectedTimePointValue.value = value
selectedTimePointIndex.value = index
}
// 确认
function onConfirm() {
emit("confirm", selectedDateValue.value, selectedTimePointValue.value)
}
</script>
<style scoped>
.date-time-range {
display: flex;
justify-content: space-between;
margin-bottom: 30rpx;
font-size: 24rpx;
}
.date-time-range .date-range-item {
padding: 10rpx 16rpx;
background-color: #eee;
border-radius: 12rpx;
text-align: center;
white-space: nowrap;
transition: all 0.1s linear;
}
.date-time-range .active {
background: #0779fd;
border-color: #4988f2;
color: white;
}
.day-time-point-list {
display: flex;
flex-wrap: wrap;
gap: 10rpx;
margin-bottom: 20rpx;
}
.day-time-button {
flex: 1 0 calc(100vw / 4);
}
</style>