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

13
components/HistoricalApplication.vue

@ -14,16 +14,7 @@
<tr v-for="item in data.info.list" class="text-gray-500"> <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)">{{ item.submitName }}</td>
<td @click="openDetails(item.applyId)"> <td @click="openDetails(item.applyId)">
<!-- v-if="!item.showBudgetEdit" --> {{ num.except(+item.money, 100) }}
{{ (+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"
/> -->
</td> </td>
<td @click="openDetails(item.applyId)"> <td @click="openDetails(item.applyId)">
{{ dayjs(item.submitTime - 0).format('YYYY/MM/DD') }} {{ dayjs(item.submitTime - 0).format('YYYY/MM/DD') }}
@ -75,6 +66,7 @@ import dayjs from 'dayjs';
import { personalHistory } from 'apis/finance'; import { personalHistory } from 'apis/finance';
import { ref, reactive, onMounted, nextTick } from 'vue'; import { ref, reactive, onMounted, nextTick } from 'vue';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import num from 'utils/num';
const router = useRouter(); const router = useRouter();
@ -122,6 +114,7 @@ function confirm() {
alert('确认放款'); alert('确认放款');
} }
onMounted(() => { onMounted(() => {
nextTick(() => { nextTick(() => {
handlePersonalHistory(); 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'), hooks: resolve(__dirname, './hooks'),
apis: resolve(__dirname, './apis'), apis: resolve(__dirname, './apis'),
public: resolve(__dirname, './public'), public: resolve(__dirname, './public'),
utils: resolve(__dirname, './utils'),
}, },
meta: { meta: {
meta: [ meta: [

27
pages/Initiate-application.vue

@ -1,7 +1,7 @@
<template> <template>
<div> <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="bg-white pb-3">
<div class="text-gray-500 px-4 py-3 font-semibold">发票信息</div> <div class="text-gray-500 px-4 py-3 font-semibold">发票信息</div>
@ -126,7 +126,7 @@
</van-popup> </van-popup>
<!-- 所属项目 --> <!-- 所属项目 -->
<van-field <van-field
v-model="data.projectName" v-model="projectName"
is-link is-link
readonly readonly
label="所属项目" label="所属项目"
@ -135,12 +135,12 @@
input-align="right" input-align="right"
disabled 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-cascader active-color="#1989fa" class="p-0" />
</van-popup> </van-popup> -->
<!-- 所属任务的 --> <!-- 所属任务的 -->
<van-field <van-field
v-model="data.taskName" v-model="taskName"
v-show="data.isInvoice" v-show="data.isInvoice"
is-link is-link
readonly readonly
@ -150,9 +150,9 @@
input-align="right" input-align="right"
disabled 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-cascader active-color="#1989fa" class="p-0" />
</van-popup> </van-popup> -->
<!-- 类目选择 --> <!-- 类目选择 -->
<van-field <van-field
v-model="data.applyCategory" v-model="data.applyCategory"
@ -234,8 +234,14 @@ import { queryChecker } from 'apis/member';
import { queryType, apply } from 'apis/finance'; import { queryType, apply } from 'apis/finance';
import { bill } from 'apis/ocr'; import { bill } from 'apis/ocr';
import { Toast } from 'vant'; import { Toast } from 'vant';
import { useRouter } from 'vue-router';
import num from 'utils/num';
const router = useRouter();
const token = useToken() const token = useToken()
const projectName = useProjectName(); const projectName = useProjectName();
console.log('projectName: ', projectName);
const taskName = useTaskName(); const taskName = useTaskName();
const projectId = useProjectId(); const projectId = useProjectId();
const taskDetailId = useTaskId(); const taskDetailId = useTaskId();
@ -337,7 +343,7 @@ async function afterRead(file){
data.invoiceInfo.forEach(item => { data.invoiceInfo.forEach(item => {
if(item.label === key){ if(item.label === key){
if(item.label === 'money' || item.label === 'taxMoney'){ 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{ }else{
item.value = res.data.data[key] item.value = res.data.data[key]
} }
@ -356,7 +362,6 @@ async function afterRead(file){
// //
function cahngeInvoiceList(e, item) { function cahngeInvoiceList(e, item) {
console.log('e: ', e.target.value, item);
data.invoiceList.forEach(invoice => { data.invoiceList.forEach(invoice => {
for(let key in data.invoiceList){ for(let key in data.invoiceList){
if(item.label === key){ if(item.label === key){
@ -533,12 +538,12 @@ function setParams(){
}) })
if(isInvoice){ if(isInvoice){
param = { 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 taskDetailId: taskDetailId.value, categoryId, rowId, submitName, department
} }
}else{ }else{
param = { 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 return param

11
pages/application-details.vue

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

6
pages/financial-approval-details.vue

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