项目初始化
This commit is contained in:
@@ -34,7 +34,7 @@ import java.io.Serial;
|
|||||||
@Column(name = "title", attrName = "title", label = "日程标题", queryType = QueryType.LIKE),
|
@Column(name = "title", attrName = "title", label = "日程标题", queryType = QueryType.LIKE),
|
||||||
@Column(name = "content", attrName = "content", label = "日程内容", isQuery = false),
|
@Column(name = "content", attrName = "content", label = "日程内容", isQuery = false),
|
||||||
@Column(name = "schedule_type", attrName = "scheduleType", label = "日程类型"),
|
@Column(name = "schedule_type", attrName = "scheduleType", label = "日程类型"),
|
||||||
@Column(name = "start_time", attrName = "startTime", label = "开始时间", isQuery = false, isUpdateForce = true),
|
@Column(name = "start_time", attrName = "startTime", label = "开始时间", isUpdateForce = true),
|
||||||
@Column(name = "end_time", attrName = "endTime", label = "结束时间", isQuery = false, isUpdateForce = true),
|
@Column(name = "end_time", attrName = "endTime", label = "结束时间", isQuery = false, isUpdateForce = true),
|
||||||
@Column(name = "priority", attrName = "priority", label = "优先等级"),
|
@Column(name = "priority", attrName = "priority", label = "优先等级"),
|
||||||
@Column(name = "ustatus", attrName = "ustatus", label = "日程状态"),
|
@Column(name = "ustatus", attrName = "ustatus", label = "日程状态"),
|
||||||
@@ -105,4 +105,13 @@ public class MySchedule extends DataEntity<MySchedule> implements Serializable {
|
|||||||
sqlMap.getWhere().and("create_time", QueryType.LTE, createTime);
|
sqlMap.getWhere().and("create_time", QueryType.LTE, createTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Date getStartTime_gte() {
|
||||||
|
return sqlMap.getWhere().getValue("start_time", QueryType.GTE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStartTime_gte(Date startTime) {
|
||||||
|
sqlMap.getWhere().and("start_time", QueryType.GTE, startTime);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
<div class="schedule-card">
|
<div class="schedule-card">
|
||||||
<div class="card-title">
|
<div class="card-title">
|
||||||
<span>日程信息</span>
|
<span>日程信息</span>
|
||||||
|
<el-button class="card-title__more" link type="primary" @click="goMore">更多</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="schedule-overview">
|
<div class="schedule-overview">
|
||||||
@@ -21,7 +22,7 @@
|
|||||||
<div class="panel-header">
|
<div class="panel-header">
|
||||||
<div>
|
<div>
|
||||||
<div class="panel-title">今日安排</div>
|
<div class="panel-title">今日安排</div>
|
||||||
<div class="panel-subtitle">连续刻度展示 08:00 - 18:00 日程</div>
|
<div class="panel-subtitle">展示 08:00 - 18:00 日程</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-tag">{{ todayLabel }} {{ currentTimeLabel }}</div>
|
<div class="panel-tag">{{ todayLabel }} {{ currentTimeLabel }}</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -45,10 +46,6 @@
|
|||||||
>
|
>
|
||||||
<template #content>
|
<template #content>
|
||||||
<div class="timeline-tip">
|
<div class="timeline-tip">
|
||||||
<div class="timeline-tip__title">
|
|
||||||
<span class="timeline-tip__label">标题:</span>
|
|
||||||
<span>{{ item.title }}</span>
|
|
||||||
</div>
|
|
||||||
<div class="timeline-tip__type">
|
<div class="timeline-tip__type">
|
||||||
<span class="timeline-tip__label">类型:</span>
|
<span class="timeline-tip__label">类型:</span>
|
||||||
<span>{{ item.typeLabel }}</span>
|
<span>{{ item.typeLabel }}</span>
|
||||||
@@ -58,12 +55,8 @@
|
|||||||
<span>{{ item.startTime }} - {{ item.endTime }}</span>
|
<span>{{ item.startTime }} - {{ item.endTime }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="timeline-tip__desc">
|
<div class="timeline-tip__desc">
|
||||||
<span class="timeline-tip__label">说明:</span>
|
<span class="timeline-tip__label">内容:</span>
|
||||||
<span>{{ item.desc }}</span>
|
<span class="timeline-tip__desc-text">{{ item.desc }}</span>
|
||||||
</div>
|
|
||||||
<div class="timeline-tip__status" :style="{ color: item.color }">
|
|
||||||
<span class="timeline-tip__label">状态:</span>
|
|
||||||
<span>{{ item.status }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -90,8 +83,15 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, onBeforeUnmount, onMounted, ref } from 'vue';
|
import { computed, onBeforeUnmount, onMounted, ref } from 'vue';
|
||||||
|
import { useRouter } from 'vue-router';
|
||||||
import { DictData, dictDataListData } from '@jeesite/core/api/sys/dictData';
|
import { DictData, dictDataListData } from '@jeesite/core/api/sys/dictData';
|
||||||
import { MySchedule, myScheduleListAll } from '@jeesite/biz/api/biz/mySchedule';
|
import { MySchedule, myScheduleListAll } from '@jeesite/biz/api/biz/mySchedule';
|
||||||
|
import { useUserStore } from '@jeesite/core/store/modules/user';
|
||||||
|
import { formatToDate } from '@jeesite/core/utils/dateUtil';
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
const userStore = useUserStore();
|
||||||
|
const userinfo = computed(() => userStore.getUserInfo);
|
||||||
|
|
||||||
const typeDict = ref<DictData[]>([]);
|
const typeDict = ref<DictData[]>([]);
|
||||||
const statusDict = ref<DictData[]>([]);
|
const statusDict = ref<DictData[]>([]);
|
||||||
@@ -99,7 +99,13 @@
|
|||||||
|
|
||||||
async function getList() {
|
async function getList() {
|
||||||
try {
|
try {
|
||||||
const res = await myScheduleListAll();
|
const startTime = formatToDate(new Date());
|
||||||
|
const reqParams = {
|
||||||
|
ustatus: '0',
|
||||||
|
startTime_gte: startTime,
|
||||||
|
createUser: userinfo.value.loginCode,
|
||||||
|
};
|
||||||
|
const res = await myScheduleListAll(reqParams);
|
||||||
scheduleData.value = res || [];
|
scheduleData.value = res || [];
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
scheduleData.value = [];
|
scheduleData.value = [];
|
||||||
@@ -118,6 +124,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function goMore() {
|
||||||
|
router.push('/biz/mySchedule/list');
|
||||||
|
}
|
||||||
|
|
||||||
interface SummaryCard {
|
interface SummaryCard {
|
||||||
key: string;
|
key: string;
|
||||||
label: string;
|
label: string;
|
||||||
@@ -160,8 +170,8 @@
|
|||||||
return typeDict.value.slice(0, 4).map((item, index) => {
|
return typeDict.value.slice(0, 4).map((item, index) => {
|
||||||
const total = scheduleData.value.filter((schedule) => schedule.scheduleType === item.dictValue).length;
|
const total = scheduleData.value.filter((schedule) => schedule.scheduleType === item.dictValue).length;
|
||||||
return {
|
return {
|
||||||
key: item.dictValue,
|
key: item.dictValue || `${index}`,
|
||||||
label: item.dictLabelRaw,
|
label: item.dictLabelRaw || '-',
|
||||||
value: `${total}`,
|
value: `${total}`,
|
||||||
extra: '',
|
extra: '',
|
||||||
color: colors[index % colors.length],
|
color: colors[index % colors.length],
|
||||||
@@ -326,6 +336,11 @@
|
|||||||
color: rgb(51 65 85);
|
color: rgb(51 65 85);
|
||||||
border-bottom: 1px solid rgb(226 232 240);
|
border-bottom: 1px solid rgb(226 232 240);
|
||||||
background: transparent;
|
background: transparent;
|
||||||
|
|
||||||
|
&__more {
|
||||||
|
padding: 0;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-content {
|
.card-content {
|
||||||
@@ -428,6 +443,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
background: rgb(255, 255, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
.panel-header {
|
.panel-header {
|
||||||
@@ -456,7 +472,7 @@
|
|||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
padding: 4px 10px;
|
padding: 4px 10px;
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
background: rgb(248 250 252);
|
background: rgb(255, 255, 255);
|
||||||
color: rgb(71 85 105);
|
color: rgb(71 85 105);
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
line-height: 16px;
|
line-height: 16px;
|
||||||
@@ -467,7 +483,7 @@
|
|||||||
min-height: 0;
|
min-height: 0;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
background: rgb(248 250 252);
|
background: rgb(255, 255, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
.timeline-body {
|
.timeline-body {
|
||||||
@@ -651,6 +667,15 @@
|
|||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
line-height: 16px;
|
line-height: 16px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__desc-text {
|
||||||
|
display: inline-block;
|
||||||
|
max-width: 180px;
|
||||||
|
max-height: 72px;
|
||||||
|
overflow-y: auto;
|
||||||
|
word-break: break-all;
|
||||||
}
|
}
|
||||||
|
|
||||||
&__label {
|
&__label {
|
||||||
@@ -670,6 +695,10 @@
|
|||||||
.card-title {
|
.card-title {
|
||||||
color: rgb(203 213 225);
|
color: rgb(203 213 225);
|
||||||
border-bottom-color: rgb(51 65 85);
|
border-bottom-color: rgb(51 65 85);
|
||||||
|
|
||||||
|
&__more:deep(.el-button) {
|
||||||
|
color: rgb(147 197 253);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-item,
|
.summary-item,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
export default {
|
export default {
|
||||||
dashboard: '控制面板',
|
dashboard: '控制面板',
|
||||||
workbench: '我的工作',
|
workbench: '我的工作',
|
||||||
analysis: '仪表盘',
|
analysis: '首页',
|
||||||
hr: '人力资源',
|
hr: '人力资源',
|
||||||
about: '关于我们',
|
about: '关于我们',
|
||||||
bigScreen: '大屏可视化',
|
bigScreen: '大屏可视化',
|
||||||
|
|||||||
Reference in New Issue
Block a user