haoxuan
2023-10-28 d13f2db56f0a82b9324c19e48d41848e7f5909b3
工艺信息的组件+人员的组件半成品
4个文件已添加
2个文件已修改
230 ■■■■■ 已修改文件
src/assets/images/process-model.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/process-tip.png 补丁 | 查看 | 原始文档 | blame | 历史
src/components.d.ts 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dashboard/components/PersonInfo.vue 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dashboard/components/ProcessInfo.vue 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dashboard/index.vue 23 ●●●● 补丁 | 查看 | 原始文档 | 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>