h5
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
2.0 KiB

<!-- 财务条内置组件 -->
<template>
<view class="finance-wrap" v-if="data" @click="openFinance">
<!-- 预算和奖金 -->
<view class="finance-row">
<view class="finance-item" :style="{ width: `${(data.budget * 100) / (data.budget + data.bonus)}%`, 'background-color': '#93C5FD' }">
预算{{ data.budget / 100 }}
</view>
<view class="finance-item" :style="{ width: `${(data.bonus * 100) / (data.budget + data.bonus)}%`, 'background-color': '#12c77e' }">
奖金{{ data.bonus / 100 }}
</view>
</view>
<!-- 项目采购日常采购 -->
<view class="finance-row">
<view
class="finance-item"
:style="{ width: `${(data.projectExpend * 100) / (data.projectExpend + data.dailyExpend)}%`, 'background-color': '#FBBF24' }"
>
项目采购{{ data.dailyExpend / 100 }}
</view>
<view
class="finance-item"
:style="{ width: `${(data.dailyExpend * 100) / (data.projectExpend + data.dailyExpend)}%`, 'background-color': '#a1fd93' }"
>
日常采购{{ data.dailyExpend / 100 }}
</view>
</view>
</view>
</template>
<script setup>
import { ref, computed } from 'vue';
const props = defineProps({ task: { type: Object } });
// const task = inject('task');
const data = ref(null);
async function getData() {
try {
const taskDetailId = props.task.taskDetailId;
data.value = await uni.$u.api.getFinanceByTask(taskDetailId);
} catch (error) {
console.log('error: ', error);
}
}
getData();
// 打开详情页
function openFinance() {
// DEBUG: 假数据 换成财务条详情页的地址
uni.navigateTo({ url: '/pages/detailWebview/detailWebview?url=http://www.baidu.com' });
}
</script>
<style lang="scss" scoped>
.finance-wrap {
.finance-row {
display: flex;
.finance-item {
margin: 3rpx 5rpx;
font-size: 12px;
text-align: center;
border-radius: 8rpx;
white-space: nowrap;
text-overflow: ellipsis;
overflow-x: visible;
}
}
}
</style>