src/assets/images/process-model.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/images/process-tip.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components.d.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/dashboard/components/PersonInfo.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/dashboard/components/ProcessInfo.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/dashboard/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/assets/images/process-model.png
src/assets/images/process-tip.png
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'] } } src/views/dashboard/components/PersonInfo.vue
New file @@ -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> src/views/dashboard/components/ProcessInfo.vue
New file @@ -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> 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>