From 65494b72a7272842a3c1c07fda8b2e1a9eefeac1 Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期二, 31 十月 2023 17:02:59 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.5.5:10010/r/web/bulletin-board-style1 into wn
---
src/views/dashboard/components/TaskControl.vue | 118 +++++++++++++++++++++++++++++
src/views/dashboard/index.vue | 17 +++-
src/views/dashboard/components/BigButton.vue | 51 ++++++++++++
src/components/DashboardLayout.vue | 4
src/views/dashboard/components/SubTitle.vue | 26 ++++++
5 files changed, 210 insertions(+), 6 deletions(-)
diff --git a/src/components/DashboardLayout.vue b/src/components/DashboardLayout.vue
index e3d5309..8bebf18 100644
--- a/src/components/DashboardLayout.vue
+++ b/src/components/DashboardLayout.vue
@@ -38,12 +38,12 @@
<div class="header-block padding-4">
<slot name="rightBlock1"></slot>
</div>
- <div class="base-block padding-4">
+ <div class="top-block padding-4">
<div class="card">
<slot name="rightBlock2"></slot>
</div>
</div>
- <div class="base-block padding-4">
+ <div class="bottom-block padding-4">
<div class="card">
<slot name="rightBlock3"></slot>
</div>
diff --git a/src/views/dashboard/components/BigButton.vue b/src/views/dashboard/components/BigButton.vue
new file mode 100644
index 0000000..61834e4
--- /dev/null
+++ b/src/views/dashboard/components/BigButton.vue
@@ -0,0 +1,51 @@
+<template>
+ <button class="big-button user-style" :class="{ disabled: props.disabled }" :disabled="props.disabled">
+ <slot></slot>
+ </button>
+</template>
+<script setup lang="ts">
+import { toRefs } from 'vue'
+
+const props = withDefaults(
+ defineProps<{
+ bgColor?: string
+ color?: string
+ disabled?: boolean
+ }>(),
+ {
+ bgColor: '#4efefa',
+ color: '#fff',
+ disabled: false
+ }
+)
+
+const { bgColor, color } = toRefs(props)
+</script>
+<style scoped lang="scss">
+.big-button {
+ width: 180px;
+ background-color: #4efefa;
+ color: #fff;
+ height: 60px;
+ text-align: center;
+ line-height: 60px;
+ font-size: 26px;
+ font-weight: 700;
+ border-radius: 8px;
+ cursor: pointer;
+ user-select: none;
+ outline: none;
+ margin: 0;
+ padding: 0;
+ border: none;
+}
+.user-style {
+ color: v-bind(color);
+ background-color: v-bind(bgColor);
+}
+.big-button.disabled {
+ cursor: not-allowed;
+ background-color: #afafaf;
+ color: #868686;
+}
+</style>
diff --git a/src/views/dashboard/components/SubTitle.vue b/src/views/dashboard/components/SubTitle.vue
new file mode 100644
index 0000000..8b8b89c
--- /dev/null
+++ b/src/views/dashboard/components/SubTitle.vue
@@ -0,0 +1,26 @@
+<template>
+ <div class="sub-title">
+ <slot></slot>
+ </div>
+</template>
+<script setup lang="ts"></script>
+<style scoped lang="scss">
+.sub-title {
+ position: relative;
+ padding-left: 20px;
+ color: #fff;
+ font-size: 20px;
+ font-weight: 700;
+ height: 32px;
+ &:before {
+ content: '';
+ background-color: #00dfdf;
+ width: 5px;
+ height: 24px;
+ position: absolute;
+ margin-top: 4px;
+ top: 0;
+ left: 0;
+ }
+}
+</style>
diff --git a/src/views/dashboard/components/TaskControl.vue b/src/views/dashboard/components/TaskControl.vue
new file mode 100644
index 0000000..bb55687
--- /dev/null
+++ b/src/views/dashboard/components/TaskControl.vue
@@ -0,0 +1,118 @@
+<template>
+ <div class="task-control">
+ <div class="task-info">
+ <div class="task-info-item">
+ <div class="task-info-title">璁″垝寮�濮嬫椂闂�</div>
+ <div class="task-info-content">{{ formatDate(task?.Procedure?.startTime) }}</div>
+ </div>
+ <div class="task-info-item">
+ <div class="task-info-title">瀹為檯寮�濮嬫椂闂�</div>
+ <div class="task-info-content">{{ formatDate(task?.Procedure?.realStartTime) }}</div>
+ </div>
+
+ <div class="task-info-item">
+ <div class="task-info-title">瀹為檯缁撴潫鏃堕棿</div>
+ <div class="task-info-content">{{ formatDate(task?.Procedure?.realEndTime) }}</div>
+ </div>
+ </div>
+
+ <div class="produce-btn">
+ <BigButton v-if="task?.Procedure.Status === 1" class="btn" :disabled="!task?.CanStarted" @click="startProduce">
+ 寮�濮嬬敓浜�
+ </BigButton>
+ <template v-if="task?.Procedure.Status === 2 || task?.Procedure.Status === 3">
+ <BigButton class="btn" bg-color="#ff9933">鎵撳嵃</BigButton>
+ <BigButton class="btn" bg-color="#00cc33">鎶ュ伐</BigButton>
+ <BigButton class="btn" bg-color="#ff0000">瀹屾垚</BigButton>
+ </template>
+ </div>
+ </div>
+</template>
+<script setup lang="ts">
+import type { Task } from '@/api/task'
+import { toRefs } from 'vue'
+import BigButton from '@/views/dashboard/components/BigButton.vue'
+import { useDateFormat } from '@vueuse/core'
+
+const props = defineProps<{
+ task?: Task
+}>()
+const { task } = toRefs(props)
+/**
+ * 寮�濮嬬敓浜�
+ */
+function startProduce() {
+ // TODO:
+ // console.log(1)
+}
+
+/**
+ * 鏍煎紡鍖栨椂闂存埑
+ * @param timestamp 鍚庣杩旂殑10浣嶆椂闂存埑
+ */
+function formatDate(timestamp?: number) {
+ if (!timestamp) {
+ return '--'
+ }
+ const time = useDateFormat(timestamp * 1000, 'YYYY-MM-DD', { locales: 'zh-cn' })
+ return time.value
+}
+</script>
+<style scoped lang="scss">
+$title-text-color: #9599af;
+$content-text-color: #d7d7d7;
+
+.task-control {
+ display: flex;
+ align-items: start;
+ width: 100%;
+}
+.task-info,
+.produce-btn {
+ width: 50%;
+ flex: 1;
+ height: 100%;
+}
+.produce-btn {
+ padding: 16px 0;
+ & > .btn {
+ margin-bottom: 14px;
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+}
+
+.task-info-item {
+ padding: 10px 20px;
+ margin-bottom: 6px;
+}
+.task-info-title {
+ font-size: 18px;
+ color: $title-text-color;
+}
+.task-info-content {
+ font-size: 19px;
+ color: $content-text-color;
+ font-weight: 600;
+ margin-top: 12px;
+}
+.produce-btn {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+}
+
+.start-btn {
+ background-color: #4efefa;
+}
+.print-btn {
+ background-color: #ff9933;
+}
+.report-btn {
+ background-color: #00cc33;
+}
+.finish-btn {
+ background-color: #ff0000;
+}
+</style>
diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue
index 5597a04..e086940 100644
--- a/src/views/dashboard/index.vue
+++ b/src/views/dashboard/index.vue
@@ -18,9 +18,14 @@
<el-tab-pane label="鐗╂枡娓呭崟" name="鐗╂枡娓呭崟">Role</el-tab-pane>
</el-tabs>
</template>
- <template #middleBlock3> 浠诲姟璇︽儏 </template>
- <template #middleBlock4
- >浜哄憳淇℃伅
+ <template #middleBlock3>
+ <SubTitle>浠诲姟璇︽儏</SubTitle>
+ <div class="task-detail">
+ <TaskControl :task="activeTask"></TaskControl>
+ </div>
+ </template>
+ <template #middleBlock4>
+ <SubTitle>浜哄憳淇℃伅</SubTitle>
<PersonInfo :person="person"></PersonInfo>
</template>
<template #rightBlock1>
@@ -29,7 +34,9 @@
</div>
</template>
<template #rightBlock2>鐘舵�侀潰鏉�</template>
- <template #rightBlock3>鐭ヨ瘑搴�</template>
+ <template #rightBlock3>
+ <SubTitle>鐭ヨ瘑搴�</SubTitle>
+ </template>
</DashboardLayout>
</template>
<script setup lang="ts">
@@ -44,6 +51,8 @@
import { useTasksStore } from '@/stores/tasks'
import { storeToRefs } from 'pinia'
import ProcessingInfo from '@/views/dashboard/components/ProcessingInfo.vue'
+import TaskControl from '@/views/dashboard/components/TaskControl.vue'
+import SubTitle from '@/views/dashboard/components/SubTitle.vue'
defineOptions({
name: 'DashboardView'
--
Gitblit v1.8.0