Browse Source

添加清除浮点方法

apply
song 4 years ago
parent
commit
6b819e6e34
  1. 50
      components/FinanceManage.vue
  2. 13
      components/HistoricalApplication.vue
  3. 33
      hooks/useApplication.js
  4. 1
      nuxt.config.ts
  5. 27
      pages/Initiate-application.vue
  6. 11
      pages/application-details.vue
  7. 6
      pages/financial-approval-details.vue
  8. 36
      utils/num.js

50
components/FinanceManage.vue

@ -10,18 +10,18 @@
<tr v-for="item in data.info.taskFinanceList.list">
<td>{{item.name}}</td>
<td>
<div v-if="!item.showBudgetEdit" @click="item.showBudgetEdit = true">{{item.budget}}</div>
<van-field v-else v-model="item.budget" type="number" class="input-box" @change="handleUpdateFinance(item)" @blur="item.showBudgetEdit = false" />
<div v-if="!item.showBudgetEdit" @click="editBudge(item)">{{ item.budget }}</div>
<van-field v-else v-model="item.budget" type="number" class="input-box" @change="handleUpdateFinance(item, 'budget')" @blur="item.showBudgetEdit = false" />
</td>
<td>
<div v-if="!item.showBonusEdit" @click="item.showBonusEdit = true">{{item.bonus}}</div>
<van-field v-else v-model="item.bonus" type="number" class="input-box" @change="handleUpdateFinance(item)" @blur="item.showBonusEdit = false" />
<div v-if="!item.showBonusEdit" @click="editBonus(item)">{{ item.bonus }}</div>
<van-field v-else v-model="item.bonus" type="number" class="input-box" @change="handleUpdateFinance(item, 'bonus')" @blur="item.showBonusEdit = false" />
</td>
</tr>
<tr>
<td>合计</td>
<td>{{data.info.budget || 0}}</td>
<td>{{data.info.bonus || 0}}</td>
<td>{{ num.except(+data.info.budget,100) || 0 }}</td>
<td>{{ num.except(+data.info.bonus,100) || 0 }}</td>
</tr>
</table>
<div class="w-1/2 mt-4 ml-48">
@ -35,16 +35,43 @@
<script setup>
import { queryProjectFinance, updateFinance } from 'apis/projectFinance'
import {ref, reactive, onMounted, nextTick} from'vue'
import num from 'utils/num';
const data = reactive({
info: {},
pageNum: 1,
pageSize: 10,
pages: 0
pages: 0,
budget: 0,
bonus: 0,
})
const projectId = useProjectId()
//
function editBudge(item){
data.budget = num.except(+item.budget,100)
data.info.taskFinanceList.list.forEach((list) => {
if(item.taskFinanceId === list.taskFinanceId){
list.showBudgetEdit = true
}else{
list.showBudgetEdit = false
}
})
}
//
function editBonus(item){
data.bonus = num.except(+item.bonus,100)
data.info.taskFinanceList.list.forEach((list) => {
if(item.taskFinanceId === list.taskFinanceId){
list.showBonusEdit = true
}else{
list.showBonusEdit = false
}
})
}
/**
* 查看项目下的所有任务对应的财务信息
* @param { Number } pageNum
@ -78,12 +105,15 @@ async function handleProjectFinance(){
* @param { String } taskDetailId 任务详情id
* @param { String } taskFinanceId 任务财务信息id
*/
async function handleUpdateFinance(item){
async function handleUpdateFinance(item, type){
try {
console.log('item, type: ', item, type, data[type], item[type]);
item[type] = data[type]
console.log('item: ', item.bonus);
const params = {
param:{
bonus: item.bonus,
budget: item.budget,
// bonus: num.ride(+item.bonus,100),
// budget: num.ride(+item.budget,100),
taskDetailId: item.taskDetailId,
taskFinanceId: item.taskFinanceId,
}

13
components/HistoricalApplication.vue

@ -14,16 +14,7 @@
<tr v-for="item in data.info.list" class="text-gray-500">
<td @click="openDetails(item.applyId)">{{ item.submitName }}</td>
<td @click="openDetails(item.applyId)">
<!-- v-if="!item.showBudgetEdit" -->
{{ (+item.money / 100).toFixed(2) }}
<!-- <van-field
v-else
v-model="item.budget"
type="number"
class="input-box"
@change="handleUpdateFinance(item)"
@blur="item.showBudgetEdit = false"
/> -->
{{ num.except(+item.money, 100) }}
</td>
<td @click="openDetails(item.applyId)">
{{ dayjs(item.submitTime - 0).format('YYYY/MM/DD') }}
@ -75,6 +66,7 @@ import dayjs from 'dayjs';
import { personalHistory } from 'apis/finance';
import { ref, reactive, onMounted, nextTick } from 'vue';
import { useRouter } from 'vue-router';
import num from 'utils/num';
const router = useRouter();
@ -122,6 +114,7 @@ function confirm() {
alert('确认放款');
}
onMounted(() => {
nextTick(() => {
handlePersonalHistory();

33
hooks/useApplication.js

@ -1,33 +0,0 @@
import { queryChecker } from 'apis/member'
import { ref } from 'vue'
export default function useApplication() {
const projectId = useProjectId()
const reviewerList = ref([])
/**
* 查询所有成员
* @param { String } projectId
*/
async function handleQueryChecker(){
try {
const params = {
param:{
projectId: projectId.value
}
}
const res = await queryChecker(params)
reviewerList.value = res
} catch (error) {
console.error('error: ', error);
}
}
// handleQueryChecker()
return {
handleQueryChecker,
reviewerList,
};
}

1
nuxt.config.ts

@ -12,6 +12,7 @@ export default defineNuxtConfig({
hooks: resolve(__dirname, './hooks'),
apis: resolve(__dirname, './apis'),
public: resolve(__dirname, './public'),
utils: resolve(__dirname, './utils'),
},
meta: {
meta: [

27
pages/Initiate-application.vue

@ -1,7 +1,7 @@
<template>
<div>
<!-- 导航返回上一页 -->
<van-nav-bar title="发起申请" left-arrow />
<van-nav-bar title="发起申请" left-arrow @click="router.go(-1)" />
<!-- 申请发票需要输入的数据 -->
<div class="bg-white pb-3">
<div class="text-gray-500 px-4 py-3 font-semibold">发票信息</div>
@ -126,7 +126,7 @@
</van-popup>
<!-- 所属项目 -->
<van-field
v-model="data.projectName"
v-model="projectName"
is-link
readonly
label="所属项目"
@ -135,12 +135,12 @@
input-align="right"
disabled
/>
<van-popup v-model:show="data.projectName" round position="bottom">
<!-- <van-popup v-model:show="projectName" round position="bottom">
<van-cascader active-color="#1989fa" class="p-0" />
</van-popup>
</van-popup> -->
<!-- 所属任务的 -->
<van-field
v-model="data.taskName"
v-model="taskName"
v-show="data.isInvoice"
is-link
readonly
@ -150,9 +150,9 @@
input-align="right"
disabled
/>
<van-popup v-model:show="data.taskName" round position="bottom">
<!-- <van-popup v-model:show="taskName" round position="bottom">
<van-cascader active-color="#1989fa" class="p-0" />
</van-popup>
</van-popup> -->
<!-- 类目选择 -->
<van-field
v-model="data.applyCategory"
@ -234,8 +234,14 @@ import { queryChecker } from 'apis/member';
import { queryType, apply } from 'apis/finance';
import { bill } from 'apis/ocr';
import { Toast } from 'vant';
import { useRouter } from 'vue-router';
import num from 'utils/num';
const router = useRouter();
const token = useToken()
const projectName = useProjectName();
console.log('projectName: ', projectName);
const taskName = useTaskName();
const projectId = useProjectId();
const taskDetailId = useTaskId();
@ -337,7 +343,7 @@ async function afterRead(file){
data.invoiceInfo.forEach(item => {
if(item.label === key){
if(item.label === 'money' || item.label === 'taxMoney'){
item.value = (+res.data.data[key] / 100).toFixed(2)
item.value = num.except(+res.data.data[key], 100)
}else{
item.value = res.data.data[key]
}
@ -356,7 +362,6 @@ async function afterRead(file){
//
function cahngeInvoiceList(e, item) {
console.log('e: ', e.target.value, item);
data.invoiceList.forEach(invoice => {
for(let key in data.invoiceList){
if(item.label === key){
@ -533,12 +538,12 @@ function setParams(){
})
if(isInvoice){
param = {
money: totleMoney * 100,invoiceList, remark, checkerList, typeId, projectId: projectId.value,
money: num.ride(totleMoney,100),invoiceList, remark, checkerList, typeId, projectId: projectId.value,
taskDetailId: taskDetailId.value, categoryId, rowId, submitName, department
}
}else{
param = {
money: money * 100, remark, checkerList, typeId, projectId: projectId.value, categoryId, submitName, department
money: num.ride(money,100), remark, checkerList, typeId, projectId: projectId.value, categoryId, submitName, department
}
}
return param

11
pages/application-details.vue

@ -5,7 +5,7 @@
<van-nav-bar
title="申请详情"
left-arrow
@click-left="onClickLeft"
@click="router.go(-1)"
/>
</NuxtLink>
@ -50,11 +50,11 @@
</div>
<div class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div>合计金额()</div>
<div>{{ (+item.money / 100).toFixed(2) }}</div>
<div>{{ num.except(+item.money, 100) }}</div>
</div>
<div class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div>税额()</div>
<div>{{ (+item.taxMoney / 100).toFixed(2) }}</div>
<div>{{ num.except(+item.taxMoney, 100) }}</div>
</div>
<div class="flex py-2 px-4 text-gray-400 text-base justify-between">
<div>开票日期</div>
@ -98,6 +98,7 @@ import dayjs from "dayjs";
import { ref, computed } from 'vue';
import { getApplyDetail } from 'apis/finance';
import { useRouter } from 'vue-router';
import num from 'utils/num';
const router = useRouter();
//
@ -167,10 +168,6 @@ const submitter = ref([
},
])
function onClickLeft(){
console.log("上一页")
}
/**
* 查询申请详情
* @param { Number } applyId 申请记录id

6
pages/financial-approval-details.vue

@ -3,7 +3,7 @@
<van-nav-bar
title="财务审批详情"
left-arrow
@click-left="onClickLeft"
@click="router.go(-1)"
/>
<!-- 发票信息 -->
@ -180,10 +180,6 @@ const submitter = ref([
},
])
function onClickLeft(){
console.log("上一页")
}
/**
* 查询申请详情
* @param { Number } applyId 申请记录id

36
utils/num.js

@ -0,0 +1,36 @@
const num = {
// 清除浮点
// 乘法
ride(a, b) {
var as = Math.pow(10, digitLength(a))
var as2 = Math.pow(10, digitLength(b))
if (digitLength(a) >= digitLength(b)) {
return (as * a * as * b) / as / as//这里要除以最小公倍数的平方
} else {
return (as2 * a * as2 * b) / as2 / as2
}
function digitLength(e) {
var e1 = (e + '').split('');
var e2 = e1.findIndex((item) => item = '.')
return e1.length - 1 - e2;
}
},
// 除法
except(a, b) {
var as = Math.pow(10, digitLength(a))
var as2 = Math.pow(10, digitLength(b))
if (digitLength(a) >= digitLength(b)) {
return ((as * a) / (as * b))
} else {
return ((as2 * a) / (as2 * b))
}
function digitLength(e) {
var e1 = (e + '').split('');
var e2 = e1.findIndex((item) => item = '.')
return e1.length - 1 - e2;
}
},
};
export default num;
Loading…
Cancel
Save