feat:迁移
This commit is contained in:
1 parent
838f05b3c0
commit
36a8665bae
44 files changed
+8043
-29
No files matched your search
@@ -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',
|
||||
}),
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,
|
||||
}),
|
||||
}
|
||||
@@ -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",
|
||||
}),
|
||||
}
|
||||
@@ -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 },
|
||||
}),
|
||||
}
|
||||
@@ -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',
|
||||
}),
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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',
|
||||
}),
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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",
|
||||
}),
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import request from "@/sheep/utils/request"
|
||||
|
||||
export default {
|
||||
/**
|
||||
* 根据轮播图 id 查询标题和富文本详情
|
||||
*/
|
||||
getDetail: (id: string) =>
|
||||
request({
|
||||
url: `/integrated/sysBanner/detail/${id}`,
|
||||
method: "GET",
|
||||
}),
|
||||
}
|
||||
@@ -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,
|
||||
}),
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
<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>
|
||||
Reference in new issue
Block a user