Files
frost-navigation/src/views/ToolboxView/Other/VisualizedWorkingHours/VisualizedWorkingHours.vue

244 lines
5.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="tool-detail-page">
<!-- 配置参数 -->
<n-card size="small" style="--color: #2196F3;">
<template #header>
<div class="card-title">
<span class="card-title__icon mdi mdi-cog-outline"></span>
<span class="card-title__label">配置参数</span>
</div>
</template>
<n-form
class="form-no-feedback config-inputs"
label-align="right"
label-placement="left"
label-width="auto"
>
<n-form-item label="日薪">
<n-input-number
v-model:value="configData.dailyWage.value"
:min="0"
:max="99999999"
:precision="2"
:step="1"
></n-input-number>
</n-form-item>
<n-form-item label="收入币种">
<n-input
v-model:value="configData.currencyOfIncome.value"
placeholder="用于显示,例如:¥"
type="text"
:maxlength="8"
></n-input>
</n-form-item>
<n-form-item label="工作时间">
<n-input-group>
<n-time-picker
v-model:formatted-value="configData.workTimeStart.value"
format="HH:mm"
/>
<n-time-picker
v-model:formatted-value="configData.workTimeStop.value"
format="HH:mm"
/>
</n-input-group>
</n-form-item>
</n-form>
</n-card>
<!-- 实时进度 -->
<n-card size="small" style="--color: #F44336;">
<template #header>
<div class="card-title">
<span class="card-title__icon mdi mdi-chart-line"></span>
<span class="card-title__label">实时进度</span>
</div>
</template>
<div class="progress-item">
<div class="progress-item__row">
<span>本月已赚</span>
<span>1000 </span>
</div>
<div class="progress-item__row">
<n-progress
color="var(--color)"
type="line"
:height="16"
:percentage="35"
:processing="true"
:show-indicator="false"
/>
</div>
<div class="progress-item__row">
<span>35%</span>
<span>剩余 20.5 </span>
</div>
</div>
<div class="progress-item">
<div class="progress-item__row">
<span>今日已赚</span>
<span>100 </span>
</div>
<div class="progress-item__row">
<n-progress
color="var(--color)"
type="line"
:height="16"
:percentage="60"
:processing="true"
:show-indicator="false"
/>
</div>
<div class="progress-item__row">
<span>60%</span>
<span>剩余 5.6 小时</span>
</div>
</div>
</n-card>
<!-- 下班冲刺 -->
<n-card size="small" style="--color: #4CAF50;">
<template #header>
<div class="card-title">
<span class="card-title__icon mdi mdi-clock-outline"></span>
<span class="card-title__label">下班冲刺</span>
</div>
</template>
<div class="time-info">
<div class="time-info__row">
<span>距离下班还剩</span>
</div>
<div class="time-info__row">
<span>05:30:20</span>
</div>
<div class="time-info__row">
<span>漫长的一天才过一半加油吧</span>
</div>
</div>
</n-card>
<!-- 获得成就 -->
<!-- <n-card size="small" style="--color: #FF9800;">
<template #header>
<div class="card-title">
<span class="card-title__icon mdi mdi-trophy-outline"></span>
<span class="card-title__label">获得成就</span>
</div>
</template>
</n-card> -->
</div>
</template>
<script setup>
import {
NButton, NCard, NForm, NFormItem,
NInput, NInputGroup, NInputNumber,
NProgress, NTimePicker,
} from 'naive-ui';
import {
onBeforeMount,
} from 'vue';
import {
configData, initData,
} from './data';
onBeforeMount(() => {
initData();
});
</script>
<style lang="less" scoped>
.card-title > span {
vertical-align: middle;
}
.card-title__icon {
color: var(--color, #252525);
font-size: 1.2em;
}
.card-title__label {
margin-left: 0.5em;
}
.config-inputs {
.n-form-item {
max-width: 480px;
}
:deep(.n-form-item-blank) > * {
width: 100%;
}
:deep(.n-input-group) > * {
flex-grow: 1;
width: 0;
}
}
.progress-item :not(:first-child) {
margin-top: 12px;
}
.progress-item__row {
display: flex;
align-items: center;
justify-content: space-between;
&:not(:first-child) {
margin-top: 4px;
}
&:first-child, &:last-child {
color: #505050;
}
&:first-child span:last-child {
color: var(--color);
font-size: 1.2em;
font-weight: bold;
}
&:last-child {
font-size: 0.8em;
}
}
.time-info {
padding: 16px 0;
background-color: var(--color-action);
}
.time-info__row {
text-align: center;
&:first-child, &:last-child {
color: #505050;
}
&:nth-child(1) {
font-size: 1em;
}
&:nth-child(2) {
font-size: 2em;
}
&:nth-child(3) {
font-size: 0.8em;
}
}
</style>