From d13f2db56f0a82b9324c19e48d41848e7f5909b3 Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期六, 28 十月 2023 18:48:54 +0800 Subject: [PATCH] 工艺信息的组件+人员的组件半成品 --- src/assets/images/process-tip.png | 0 src/views/dashboard/components/ProcessInfo.vue | 113 ++++++++++++++++++++++++++++ src/assets/images/process-model.png | 0 src/views/dashboard/index.vue | 23 ++++- src/views/dashboard/components/PersonInfo.vue | 80 ++++++++++++++++++++ src/components.d.ts | 14 ++- 6 files changed, 220 insertions(+), 10 deletions(-) diff --git a/src/assets/images/process-model.png b/src/assets/images/process-model.png new file mode 100644 index 0000000..8becfbb --- /dev/null +++ b/src/assets/images/process-model.png Binary files differ diff --git a/src/assets/images/process-tip.png b/src/assets/images/process-tip.png new file mode 100644 index 0000000..dae2876 --- /dev/null +++ b/src/assets/images/process-tip.png Binary files differ diff --git a/src/components.d.ts b/src/components.d.ts index 12b900c..52bea60 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -7,11 +7,13 @@ declare module 'vue' { export interface GlobalComponents { - DashboardLayout: (typeof import('./components/DashboardLayout.vue'))['default'] - ElCollapse: (typeof import('element-plus/es'))['ElCollapse'] - ElCollapseItem: (typeof import('element-plus/es'))['ElCollapseItem'] - ElScrollbar: (typeof import('element-plus/es'))['ElScrollbar'] - RouterLink: (typeof import('vue-router'))['RouterLink'] - RouterView: (typeof import('vue-router'))['RouterView'] + DashboardLayout: typeof import('./components/DashboardLayout.vue')['default'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElCollapse: typeof import('element-plus/es')['ElCollapse'] + ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] + ElIcon: typeof import('element-plus/es')['ElIcon'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] } } diff --git a/src/views/dashboard/components/PersonInfo.vue b/src/views/dashboard/components/PersonInfo.vue new file mode 100644 index 0000000..d054728 --- /dev/null +++ b/src/views/dashboard/components/PersonInfo.vue @@ -0,0 +1,80 @@ +<template> + <div class="person-info"> + <div class="person-l"> + <el-icon> + <UserFilled /> + </el-icon> + </div> + <div class="person-r"> + {{ person.workerName || '' }} + <!-- <span>{{ person.phoneNum || "" }}</span> --> + <span> + <el-icon> + <StarFilled /> + </el-icon> + <el-icon> + <StarFilled /> + </el-icon> + <el-icon> + <StarFilled /> + </el-icon> + <el-icon> + <StarFilled /> + </el-icon> + <el-icon> + <StarFilled /> + </el-icon> + </span> + </div> + </div> +</template> +<script setup lang="ts"> +import type { UserFilled } from '@element-plus/icons-vue' +import { computed, toRefs } from 'vue' +export interface PersonInfoProps { + person: person +} + +const props = defineProps<PersonInfoProps>() +const { person } = toRefs(props) +</script> + +<style scoped lang="scss"> +$status-default: #13235a; +$status-running: #f76c0f; +$status-ready: #13235a; +$status-done: #2c5dbb82; +$status-star: yellow; + +.font_weight { + font-weight: 600; +} + +.person-info { + width: 100%; + height: 60px; + line-height: 60px; + margin-bottom: 10px; + border-radius: 10px; + background: $status-default; + color: #fff; + + .person-l { + float: left; + margin-right: 10px; + font-size: 40px; + } + + .person-r { + font-size: 20px; + font-weight: 600; + margin-right: 10px; + // background: pink; + padding-top: 10px; + + span { + color: $status-star; + } + } +} +</style> diff --git a/src/views/dashboard/components/ProcessInfo.vue b/src/views/dashboard/components/ProcessInfo.vue new file mode 100644 index 0000000..a75e342 --- /dev/null +++ b/src/views/dashboard/components/ProcessInfo.vue @@ -0,0 +1,113 @@ +<template> + <div class="process-info"> + <div class="item-l-bng"> + <img src="~@/assets/images/process-model.png" /> + </div> + <div class="item-r"> + <div class="item-r-t font_weight">{{ process.number }}</div> + <div class="item-r-b">{{ process.name }}</div> + <div class="item-r-b">{{ process.name }}</div> + </div> + <div class="tip-r"> + <img src="~@/assets/images/process-tip.png" /> + </div> + <div class="tip-current">褰撳墠浣跨敤</div> + <div class="btn"> + <el-button type="primary" class="color_organge"> 鏇存柊宸ヨ壓</el-button> + </div> + </div> +</template> +<script setup lang="ts"> +import { computed, toRefs } from 'vue' +export interface ProcessInfoProps { + process: process +} + +const props = defineProps<ProcessInfoProps>() +const { process } = toRefs(props) +</script> + +<style scoped lang="scss"> +$status-running: #f76c0f; +$status-done: #2c5dbb82; +.font_weight { + font-weight: 600; +} +.process-info { + width: calc(50% - 35px); + height: 110px; + padding: 23px 10px 10px; + background: $status-done; + border-radius: 8px; + float: left; + overflow: hidden; + font-size: 15px; + position: relative; + margin-bottom: 30px; + + &:nth-of-type(odd) { + margin-right: 30px; + } + + .item-l-bng { + width: 40px; + float: left; + margin-right: 20px; + + img { + width: 100%; + } + } + + .item-r { + width: calc(100% - 60px); + float: left; + line-height: 25px; + color: #fff; + font-size: 16px; + cursor: pointer; + + .item-r-t { + font-size: 16px; + } + + .item-r-b { + font-size: 14px; + } + } + + .tip-r { + position: absolute; + top: 5px; + right: 15px; + width: 20px; + + img { + width: 100%; + } + } + + .tip-current { + background: green; + color: #fff; + position: absolute; + top: 0px; + left: 70px; + width: auto; + padding: 2px 15px; + font-size: 12px; + border-radius: 0px 0px 6px 6px; + } + + .btn { + width: 100px; + position: absolute; + right: 0px; + bottom: 10px; + .el-button--primary { + background: $status-running; + border: 0 !important; + } + } +} +</style> diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue index bba3bcc..c2f2e8a 100644 --- a/src/views/dashboard/index.vue +++ b/src/views/dashboard/index.vue @@ -5,9 +5,15 @@ <ChannelCollapse :channels="channels"></ChannelCollapse> </template> <template #middleBlock1>鏍囬</template> - <template #middleBlock2>涓荤湅鏉�</template> + <template #middleBlock2 + >涓荤湅鏉� + <ProcessInfo :process="process"></ProcessInfo> + </template> <template #middleBlock3>浠诲姟璇︽儏</template> - <template #middleBlock4>浜哄憳淇℃伅</template> + <template #middleBlock4 + >浜哄憳淇℃伅 + <PersonInfo :person="person"></PersonInfo> + </template> <template #rightBlock1>鏃堕棿</template> <template #rightBlock2>鐘舵�侀潰鏉�</template> <template #rightBlock3>鐭ヨ瘑搴�</template> @@ -19,7 +25,8 @@ import ChannelCollapse from '@/views/dashboard/components/ChannelCollapse.vue' import type { Task } from '@/api/task' import { chain } from 'lodash-es' - +import ProcessInfo from '@/views/dashboard/components/ProcessInfo.vue' +import PersonInfo from '@/views/dashboard/components/PersonInfo.vue' defineOptions({ name: 'DashboardView' }) @@ -42,7 +49,15 @@ .groupBy((ele) => ele.Channel) .value() }) - +const process = computed(() => { + return { name: '宸ヨ壓鍚嶇О', number: '111' } +}) +const person = computed(() => { + return { + workerName: '濮撳悕', + phone: '111' + } +}) getChannels() </script> -- Gitblit v1.8.0