main
parent
e5e86e24e5
commit
b15e0d0f8f
@ -1,80 +0,0 @@ |
|||||||
/** |
|
||||||
* @Author: River_qiu |
|
||||||
* @Date: 2021/11/18 |
|
||||||
*/ |
|
||||||
// 表格单元格合并多列
|
|
||||||
let [spanObj, pos] = [{}, {}] |
|
||||||
//spanObj 存储每个key 对应的合并值
|
|
||||||
//pos 存储的是 key合并值得索引 大概吧
|
|
||||||
export const dataMethod = (data, isH, allColumns = []) => { |
|
||||||
//循环数据(行)
|
|
||||||
for (let i in data) { |
|
||||||
let dataI = data[i] |
|
||||||
//循环数据内对象,查看有多少key
|
|
||||||
if (allColumns.length > 0) { |
|
||||||
let preProp = undefined |
|
||||||
// dataI.historyValue =
|
|
||||||
// 循环列数据
|
|
||||||
for (let index = 0; index < allColumns.length; index++) { |
|
||||||
let j = allColumns[index] |
|
||||||
if (i == 0) { |
|
||||||
// 第一行,每列至少展示1行
|
|
||||||
spanObj[j] = [1] |
|
||||||
pos[j] = 0 |
|
||||||
} else { |
|
||||||
if (index == 0) { |
|
||||||
data[i].historyValue = '' |
|
||||||
data[i - 1].historyValue = '' |
|
||||||
} else { |
|
||||||
data[i].historyValue += data[i][preProp] |
|
||||||
data[i - 1].historyValue += data[i - 1][preProp] |
|
||||||
} |
|
||||||
// e: 当前行数据,k:上一行数据
|
|
||||||
let [e, k] = [dataI, data[i - 1]] |
|
||||||
// 判断上一行数据是否存在
|
|
||||||
// 空数据不合并
|
|
||||||
// 前一列值相同并且不为空或者为第一列
|
|
||||||
// 存在当前的列的值与上一行是否一样
|
|
||||||
// 判断是否有数组规定只允许那几列需要合并单元格的
|
|
||||||
if ( |
|
||||||
k && |
|
||||||
e[j] && |
|
||||||
(!preProp || (e.historyValue && e.historyValue == k.historyValue)) && |
|
||||||
e[j] == k[j] && |
|
||||||
(!isH || isH.length == 0 || isH.includes(j)) |
|
||||||
) { |
|
||||||
//如果上一级和当前一级相当,数组就加1 数组后面就添加一个0
|
|
||||||
spanObj[j][pos[j]] += 1 |
|
||||||
spanObj[j].push(0) |
|
||||||
} else { |
|
||||||
spanObj[j].push(1) |
|
||||||
pos[j] = i |
|
||||||
} |
|
||||||
preProp = j |
|
||||||
} |
|
||||||
} |
|
||||||
} else { |
|
||||||
for (let j in dataI) { |
|
||||||
//如果只有一条数据时默认为1即可,无需合并
|
|
||||||
if (i == 0) { |
|
||||||
spanObj[j] = [1] |
|
||||||
pos[j] = 0 |
|
||||||
} else { |
|
||||||
let [e, k] = [dataI, data[i - 1]] |
|
||||||
//判断上一级别是否存在 ,
|
|
||||||
//存在当前的key是否和上级别的key是否一样
|
|
||||||
//判断是否有数组规定只允许那几列需要合并单元格的
|
|
||||||
if (k && e[j] && k[j] && e[j] == k[j] && (!isH || isH.length == 0 || isH.includes(j))) { |
|
||||||
//如果上一级和当前一级相当,数组就加1 数组后面就添加一个0
|
|
||||||
spanObj[j][pos[j]] += 1 |
|
||||||
spanObj[j].push(0) |
|
||||||
} else { |
|
||||||
spanObj[j].push(1) |
|
||||||
pos[j] = i |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
return spanObj |
|
||||||
} |
|
@ -1,7 +1,96 @@ |
|||||||
<template> |
<template> |
||||||
<div> 首页 </div> |
<div> |
||||||
|
<el-card shadow="never"> |
||||||
|
<el-skeleton :loading="loading" animated> |
||||||
|
<el-row :gutter="20" justify="space-between"> |
||||||
|
<el-col :xl="12" :lg="12" :md="12" :sm="24" :xs="24"> |
||||||
|
<div class="flex items-center"> |
||||||
|
<img :src="avatar" alt="" class="w-40px h-40px rounded-[50%] mr-20px" /> |
||||||
|
<div class="text-20px text-700"> |
||||||
|
{{ t('workplace.welcome') }} {{ username }} {{ t('workplace.happyDay') }} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</el-col> |
||||||
|
<el-col :xl="12" :lg="12" :md="12" :sm="24" :xs="24"> |
||||||
|
<div class="flex h-40px items-center justify-end <sm:mt-10px"> |
||||||
|
<div |
||||||
|
class="px-8px text-right" |
||||||
|
@click="router.push({ path: '/Okr/okr-wait', query: { type: 1 } })" |
||||||
|
> |
||||||
|
<div class="text-14px text-red-600 mb-20px">今日待办</div> |
||||||
|
<CountTo |
||||||
|
class="text-20px number-font" |
||||||
|
:start-val="0" |
||||||
|
:end-val="waitCount.dayEndAgentWorkNum" |
||||||
|
:duration="2600" |
||||||
|
/> |
||||||
|
</div> |
||||||
|
<el-divider direction="vertical" border-style="dashed" /> |
||||||
|
<div |
||||||
|
class="px-8px text-right" |
||||||
|
@click="router.push({ path: '/Okr/okr-wait', query: { type: 2 } })" |
||||||
|
> |
||||||
|
<div class="text-14px text-gray-400 mb-20px">我的待办</div> |
||||||
|
<CountTo |
||||||
|
class="text-20px number-font" |
||||||
|
:start-val="0" |
||||||
|
:end-val="waitCount.myAgentWorkNum" |
||||||
|
:duration="2600" |
||||||
|
/> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</el-col> |
||||||
|
</el-row> |
||||||
|
</el-skeleton> |
||||||
|
</el-card> |
||||||
|
</div> |
||||||
</template> |
</template> |
||||||
|
<script setup lang="ts" name="Home"> |
||||||
|
import { useUserStore } from '@/store/modules/user' |
||||||
|
import avatarImg from '@/assets/imgs/avatar.gif' |
||||||
|
import { getWaitCount } from '@/api/okr/wait' |
||||||
|
|
||||||
<script setup name="Home"></script> |
const { t } = useI18n() |
||||||
|
const userStore = useUserStore() |
||||||
|
const router = useRouter() // 路由对象 |
||||||
|
const loading = ref(false) |
||||||
|
const avatar = userStore.getUser.avatar ? userStore.getUser.avatar : avatarImg |
||||||
|
const username = userStore.getUser.nickname |
||||||
|
|
||||||
<style lang="scss" scoped></style> |
function getWaitTargetCount() { |
||||||
|
getWaitCount({}).then((res) => { |
||||||
|
waitCount.value = res |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
const waitCount = ref({ |
||||||
|
dayEndAgentWorkNum: 0, |
||||||
|
myAgentWorkNum: 0, |
||||||
|
urgeAgentWorkNum: 0, |
||||||
|
notifyNum: 0 |
||||||
|
}) |
||||||
|
|
||||||
|
const getAllApi = async () => { |
||||||
|
await getWaitTargetCount() |
||||||
|
loading.value = false |
||||||
|
} |
||||||
|
|
||||||
|
onMounted(() => { |
||||||
|
getAllApi() |
||||||
|
}) |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
@font-face { |
||||||
|
font-family: numberFont; |
||||||
|
src: url('@/assets/fonts/DISPLAY FREE TFB.ttf'); |
||||||
|
} |
||||||
|
|
||||||
|
.number-font { |
||||||
|
font-family: numberFont !important; |
||||||
|
} |
||||||
|
|
||||||
|
:deep(.el-card__header) { |
||||||
|
padding: 10px; |
||||||
|
} |
||||||
|
</style> |
||||||
|
Loading…
Reference in new issue