结算审批+退料返回
This commit is contained in:
parent
23a60c40e3
commit
69c7bb86e1
|
|
@ -85,7 +85,7 @@
|
|||
<script setup>
|
||||
import { ref, reactive } from 'vue'
|
||||
import { getBackInfo,deleteNumType, submitBackApply } from '@/services/back.js';
|
||||
import { onLoad,onShow } from '@dcloudio/uni-app'
|
||||
import { onLoad,onShow,onBackPress } from '@dcloudio/uni-app'
|
||||
import PopupConfirm from '@/components/PopupConfirm'
|
||||
|
||||
const keyWord = ref('')
|
||||
|
|
@ -134,6 +134,12 @@ const options2 = ref([
|
|||
const leftClick = () => {
|
||||
uni.redirectTo({ url: '/pages/back/index' })
|
||||
}
|
||||
|
||||
// 控制手机自带返回按钮
|
||||
onBackPress(() => {
|
||||
leftClick()
|
||||
return true // 阻止默认返回行为
|
||||
})
|
||||
//详情数据
|
||||
const getTableList = () => {
|
||||
// let obj = {
|
||||
|
|
|
|||
|
|
@ -1,48 +1,78 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="card">
|
||||
<uni-row :gutter="24">
|
||||
<uni-col :span="16">一、施工机具有偿使用费:</uni-col>
|
||||
<uni-col :span="8">
|
||||
<div class="cont">¥ {{ Number(agreementContent.leaseCost).toFixed(2) }}</div>
|
||||
</uni-col>
|
||||
</uni-row>
|
||||
<uni-row :gutter="24">
|
||||
<uni-col :span="16">二、施工机具维修费:</uni-col>
|
||||
<uni-col :span="8">
|
||||
<div class="cont">¥ {{ Number(agreementContent.repairCost).toFixed(2) }}</div>
|
||||
</uni-col>
|
||||
</uni-row>
|
||||
<uni-row :gutter="24">
|
||||
<uni-col :span="16">三、施工机具丢失费:</uni-col>
|
||||
<uni-col :span="8">
|
||||
<div class="cont">¥ {{ Number(agreementContent.loseCost).toFixed(2) }}</div>
|
||||
</uni-col>
|
||||
</uni-row>
|
||||
<uni-row :gutter="24">
|
||||
<uni-col :span="16">四、施工机具损坏赔偿费:</uni-col>
|
||||
<uni-col :span="8">
|
||||
<div class="cont">¥ {{ Number(agreementContent.scrapCost).toFixed(2) }}</div>
|
||||
</uni-col>
|
||||
</uni-row>
|
||||
<uni-row :gutter="24">
|
||||
<uni-col :span="16">五、施工机具租赁减免费:</uni-col>
|
||||
<uni-col :span="8">
|
||||
<div class="cont">¥ {{ Number(agreementContent.reductionCost).toFixed(2) }}</div>
|
||||
</uni-col>
|
||||
</uni-row>
|
||||
<!-- 新增的前三行 -->
|
||||
<table class="info-table">
|
||||
<!-- 第一行:工程名称 -->
|
||||
<tr>
|
||||
<td class="label">工程名称</td>
|
||||
<td colspan="3">{{ agreementContent.projectName || '未获取到工程名称' }}</td>
|
||||
</tr>
|
||||
|
||||
<!-- 第二行:承租单位和日期 -->
|
||||
<tr>
|
||||
<td class="label">承租单位</td>
|
||||
<td colspan="1">{{ agreementContent.unitName || '未获取到承租单位' }}</td>
|
||||
<td class="label">日期</td>
|
||||
<td colspan="1">{{ agreementContent.date || new Date().toLocaleDateString('zh-CN') }}</td>
|
||||
</tr>
|
||||
|
||||
<!-- 第三行:结算项目及金额标题 -->
|
||||
<tr>
|
||||
<td colspan="4" class="title">结算项目及金额(元)</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- 原有的费用表格 -->
|
||||
<table class="cost-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: center;">项目</th>
|
||||
<th style="text-align: center;">施工机具</th>
|
||||
<th style="text-align: center;">安全工器具</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>一、施工机具有偿使用费</td>
|
||||
<td>¥ {{ Number(agreementContent.leaseCost).toFixed(2) }}</td>
|
||||
<td>¥{{ Number(agreementContent.aqLeaseCost).toFixed(2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>二、施工机具维修费</td>
|
||||
<td>¥ {{ Number(agreementContent.repairCost).toFixed(2) }}</td>
|
||||
<td>¥ {{ Number(agreementContent.aqRepairCost).toFixed(2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>三、施工机具丢失费</td>
|
||||
<td>¥ {{ Number(agreementContent.loseCost).toFixed(2) }}</td>
|
||||
<td>¥ {{ Number(agreementContent.aqLoseCost).toFixed(2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>四、施工机具损坏赔偿费</td>
|
||||
<td>¥ {{ Number(agreementContent.scrapCost).toFixed(2) }}</td>
|
||||
<td>¥ {{ Number(agreementContent.aqScrapCost).toFixed(2) }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>五、施工机具租赁减免费</td>
|
||||
<td>¥ {{ Number(agreementContent.reductionCost).toFixed(2) }}</td>
|
||||
<td>¥ {{ Number(agreementContent.aqReductionCost).toFixed(2) }}</td>
|
||||
</tr>
|
||||
<tr class="total-row">
|
||||
<td>小计</td>
|
||||
<td>¥ {{ Number(agreementContent.addMoneySafety).toFixed(2) }}</td>
|
||||
<td>¥ {{ Number(agreementContent.addMoneyProject).toFixed(2) }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="line"></div>
|
||||
<uni-row :gutter="24">
|
||||
<uni-col :span="16">费用合计金额(大写):</uni-col>
|
||||
</uni-row>
|
||||
<uni-row :gutter="24">
|
||||
<uni-col :span="16">
|
||||
{{ Number(agreementContent.costAll) > 0 ? agreementContent.costAllUpper : '' }}
|
||||
</uni-col>
|
||||
<uni-col :span="8">
|
||||
<div class="cont">¥ {{ Number(agreementContent.costAll).toFixed(2) }}</div>
|
||||
</uni-col>
|
||||
</uni-row>
|
||||
|
||||
<div class="total-info">
|
||||
<div style=" margin-top: 20rpx; font-size: 28rpx;color: #262626;font-weight: 500;">费用合计金额(大写):</div>
|
||||
<div>{{ Number(agreementContent.costAll) > 0 ? agreementContent.costAllUpper : '' }}</div>
|
||||
<div class="cont">¥ {{ Number(agreementContent.costAll).toFixed(2) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 提交 -->
|
||||
|
|
@ -56,7 +86,7 @@
|
|||
<script setup>
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { ref } from 'vue'
|
||||
import { getSltInfoApi, costExamineApi } from '@/services/accounts/index'
|
||||
import { getSltAgreementBookApi, costExamineApi } from '@/services/accounts/index'
|
||||
import { toChineseAmount } from '@/utils/bnsBase'
|
||||
import PopupConfirm from '@/components/PopupConfirm/approve'
|
||||
|
||||
|
|
@ -65,13 +95,21 @@ const agreementContent = ref({
|
|||
agreementCode: '',
|
||||
projectName: '',
|
||||
unitName: '',
|
||||
date: '', // 日期字段
|
||||
leaseCost: '', // 租赁费用
|
||||
repairCost: '', // 维修费用
|
||||
loseCost: '', // 丢失费用
|
||||
scrapCost: '', // 报废费用
|
||||
reductionCost: '', // 减免费用
|
||||
aqLeaseCost: '', // 安全工器具租赁费用
|
||||
aqRepairCost: '', // 安全工器具维修费用
|
||||
aqLoseCost: '', // 安全工器具丢失费用
|
||||
aqScrapCost: '', // 安全工器具报废费用
|
||||
aqReductionCost: '', // 安全工器具减免费用
|
||||
addMoneySafety: '', // 安全费用小计
|
||||
addMoneyProject: '', // 施工费用小计
|
||||
costAll: '', // 合计费用
|
||||
costAllUpper: '', // 合计费用大写
|
||||
costAllUpper: '' // 合计费用大写
|
||||
})
|
||||
const popupConfirm = ref()
|
||||
|
||||
|
|
@ -83,15 +121,32 @@ onLoad((opts) => {
|
|||
|
||||
const getInfo = async () => {
|
||||
try {
|
||||
const res = await getSltInfoApi([row.value])
|
||||
const res = await getSltAgreementBookApi(row.value)
|
||||
if (!res.data) return
|
||||
agreementContent.value = res.data
|
||||
|
||||
// 计算安全费用小计
|
||||
agreementContent.value.addMoneySafety =
|
||||
Number(res.data.leaseCost) +
|
||||
Number(res.data.repairCost) +
|
||||
Number(res.data.scrapCost) +
|
||||
Number(res.data.loseCost) -
|
||||
Number(res.data.reductionCost)
|
||||
|
||||
// 计算施工费用小计
|
||||
agreementContent.value.addMoneyProject =
|
||||
Number(res.data.aqLeaseCost) +
|
||||
Number(res.data.aqRepairCost) +
|
||||
Number(res.data.aqScrapCost) +
|
||||
Number(res.data.aqLoseCost) -
|
||||
Number(res.data.aqReductionCost)
|
||||
|
||||
// 计算合计费用
|
||||
agreementContent.value.costAll =
|
||||
Number(res.data.leaseCost) +
|
||||
Number(res.data.repairCost) +
|
||||
Number(res.data.scrapCost) +
|
||||
Number(res.data.loseCost) -
|
||||
Number(res.data.reductionCost)
|
||||
Number(agreementContent.value.addMoneySafety) +
|
||||
Number(agreementContent.value.addMoneyProject)
|
||||
|
||||
// 生成大写金额
|
||||
agreementContent.value.costAllUpper = toChineseAmount(agreementContent.value.costAll.toFixed(2))
|
||||
} catch (error) {
|
||||
console.log('🚀 ~ getInfo ~ error:', error)
|
||||
|
|
@ -110,6 +165,8 @@ const submit = async () => {
|
|||
status: res.radioValue,
|
||||
remark: res.remark,
|
||||
agreementId: row.value.agreementId,
|
||||
settlementType: row.value.settlementType,
|
||||
sltTask: row.value.sltTask
|
||||
}
|
||||
console.log('🚀 ~ submit ~ params:', params)
|
||||
await costExamineApi(params)
|
||||
|
|
@ -135,7 +192,7 @@ page {
|
|||
|
||||
.card {
|
||||
margin: 24rpx 0;
|
||||
padding: 32rpx;
|
||||
padding: 10px;
|
||||
background-color: #fff;
|
||||
min-height: 300rpx;
|
||||
border-radius: 20rpx;
|
||||
|
|
@ -147,16 +204,84 @@ page {
|
|||
background-color: #fafbfc;
|
||||
}
|
||||
}
|
||||
::v-deep .uni-row {
|
||||
.uni-col-6 {
|
||||
color: #8c8c8c;
|
||||
font-size: 28rpx;
|
||||
font-weight: 500;
|
||||
|
||||
/* 新增的信息表格样式 */
|
||||
.info-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
td {
|
||||
padding: 12rpx 8rpx;
|
||||
font-size: 24rpx;
|
||||
color: #262626;
|
||||
border: 1px solid #ebebeb;
|
||||
}
|
||||
.uni-col-8 {
|
||||
color: #8c8c8c;
|
||||
font-size: 28rpx;
|
||||
font-weight: 500;
|
||||
|
||||
.label {
|
||||
// background-color: #f5f7fa;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
color: #666;
|
||||
width: 120rpx;
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
font-size: 26rpx;
|
||||
font-weight: 700;
|
||||
background-color: #f5f7fa;
|
||||
color: #333;
|
||||
padding: 16rpx 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 费用表格样式 */
|
||||
.cost-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
th, td {
|
||||
padding: 12rpx 0;
|
||||
text-align: left;
|
||||
font-size: 24rpx;
|
||||
border: 1px solid #ebebeb;
|
||||
}
|
||||
|
||||
th {
|
||||
color: #666;
|
||||
font-weight: 600;
|
||||
background-color: #f5f7fa;
|
||||
}
|
||||
|
||||
td {
|
||||
color: #262626;
|
||||
|
||||
&:nth-child(2), &:nth-child(3) {
|
||||
text-align: right;
|
||||
padding-right: 40rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.total-row {
|
||||
font-weight: 600;
|
||||
background-color: #fafafa;
|
||||
}
|
||||
}
|
||||
|
||||
.line {
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.total-info {
|
||||
margin-top: 20rpx;
|
||||
font-size: 28rpx;
|
||||
color: #262626;
|
||||
font-weight: 600;
|
||||
|
||||
div {
|
||||
margin-bottom: 8rpx;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -166,10 +291,6 @@ page {
|
|||
line-height: 1.8;
|
||||
color: #262626;
|
||||
font-size: 28rpx;
|
||||
font-weight: 500;
|
||||
font-weight: 600;
|
||||
}
|
||||
.line {
|
||||
border-bottom: 1px solid #ebebeb;
|
||||
margin: 10px 0;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
|
@ -6,10 +6,20 @@
|
|||
<div v-if="active == 1" class="bt-line"></div>
|
||||
</view>
|
||||
<view class="btn" style="margin-left: 80rpx" @click="changeTab(2)">
|
||||
<span>审批通过</span>
|
||||
<span>审批结束</span>
|
||||
<div v-if="active == 2" class="bt-line"></div>
|
||||
</view>
|
||||
</view>
|
||||
<uni-row :gutter="24" class="search-form">
|
||||
<uni-col :span="18">
|
||||
<view>
|
||||
<uni-easyinput placeholder="请输入关键词" v-model="queryParams.keyWord" />
|
||||
</view>
|
||||
</uni-col>
|
||||
<uni-col :span="6">
|
||||
<view class="search" @click="getList(false,true)">搜索</view>
|
||||
</uni-col>
|
||||
</uni-row>
|
||||
<!-- 滚动列表 -->
|
||||
<scroll-view
|
||||
scroll-y
|
||||
|
|
@ -32,12 +42,18 @@
|
|||
>
|
||||
<div class="cont">
|
||||
<uni-tag
|
||||
:text="item.sltStatus == 1 ? '待审核' : '审批通过'"
|
||||
:type="item.sltStatus == 1 ? 'warning' : 'success'"
|
||||
:text="item.sltStatus == 1 ? (item.sltAuditor || '待审核') : item.sltStatus == 2 ? '审批通过' : item.sltStatus == 3 ? '审批驳回' : ''"
|
||||
:type="item.sltStatus == 1 ? 'warning' : item.sltStatus == 2 ? 'success' : item.sltStatus == 3 ? 'error' : 'primary'"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<uni-row :gutter="24">
|
||||
<uni-col :span="6">分公司:</uni-col>
|
||||
<uni-col :span="18">
|
||||
<div class="cont">{{ item.impUnitName }}</div>
|
||||
</uni-col>
|
||||
</uni-row>
|
||||
<uni-row :gutter="24">
|
||||
<uni-col :span="6">结算单位:</uni-col>
|
||||
<uni-col :span="18">
|
||||
|
|
@ -63,7 +79,8 @@
|
|||
<div class="cont">
|
||||
<uni-tag v-if="item.settlementType == 1" text="工器具" type="primary" />
|
||||
<uni-tag v-else-if="item.settlementType == 2" text="安全工器具" type="warning" />
|
||||
<uni-tag v-else-if="item.settlementType == 3" text="总费用" type="success" />
|
||||
<uni-tag v-else-if="item.settlementType == null || item.settlementType == 0" text="总费用" type="error" />
|
||||
<uni-tag v-else-if="item.settlementType == 3" text="全部" type="success" />
|
||||
</div>
|
||||
</uni-col>
|
||||
</uni-row>
|
||||
|
|
@ -99,8 +116,10 @@ const tableList = ref([])
|
|||
const total = ref(0)
|
||||
const queryParams = ref({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
sltStatus: 1, // 1未完成 2已完成
|
||||
pageSize: 3,
|
||||
statusList: [1], // 1未完成 2已完成,3被驳回
|
||||
enableQuerySltData: true,
|
||||
keyWord:''
|
||||
})
|
||||
|
||||
onShow(() => {
|
||||
|
|
@ -115,16 +134,15 @@ const changeTab = (index) => {
|
|||
uni.removeStorageSync('scrollTop')
|
||||
active.value = index
|
||||
queryParams.value.pageNum = 1
|
||||
queryParams.value.pageSize = 20
|
||||
tableList.value = []
|
||||
if (index == 1) {
|
||||
queryParams.value.sltStatus = 1
|
||||
queryParams.value.statusList = [1]
|
||||
} else {
|
||||
queryParams.value.sltStatus = 2
|
||||
queryParams.value.statusList = [2,3]
|
||||
}
|
||||
getList()
|
||||
}
|
||||
const getList = async () => {
|
||||
const getList = async (isTap = false,isSearch = false) => {
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
})
|
||||
|
|
@ -132,6 +150,11 @@ const getList = async () => {
|
|||
const params = {
|
||||
...queryParams.value,
|
||||
}
|
||||
if (isSearch) {
|
||||
// 当进行搜索时,重置页码和列表数据
|
||||
queryParams.value.pageNum = 1;
|
||||
tableList.value = [];
|
||||
}
|
||||
const res = await getSltListApi(params)
|
||||
console.log('🚀 ~ getList ~ res:', res)
|
||||
tableList.value = res.rows || []
|
||||
|
|
@ -146,7 +169,7 @@ const getList = async () => {
|
|||
const onScrollTolower = () => {
|
||||
console.log('🚀 ~ onScrollTolower ~ onScrollTolower:')
|
||||
if (total.value > tableList.value.length) {
|
||||
queryParams.value.pageSize += 10
|
||||
queryParams.value.pageSize += 5
|
||||
getList()
|
||||
}
|
||||
}
|
||||
|
|
@ -169,6 +192,79 @@ const handleItem = (item) => {
|
|||
background-color: #f7f8fa;
|
||||
padding: 24rpx;
|
||||
}
|
||||
// 搜索表单
|
||||
.search-form {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 10rpx;
|
||||
/* background: #fff;
|
||||
border-radius: 20rpx;
|
||||
margin-bottom: 24rpx;
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.05); */
|
||||
|
||||
:deep(.uni-date) {
|
||||
width: 100%;
|
||||
|
||||
.uni-date-x {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.uni-date-editor--x {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.uni-date-range--x {
|
||||
width: 100%;
|
||||
|
||||
.uni-date-range--x-input {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 24rpx;
|
||||
|
||||
.uni-date-range--x-text {
|
||||
font-size: 28rpx;
|
||||
color: #262626;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.uni-date-x--border {
|
||||
width: 100%;
|
||||
border: 2rpx solid #e8e8e8;
|
||||
border-radius: 12rpx;
|
||||
background-color: #f7f8fa;
|
||||
height: 80rpx;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&:focus-within {
|
||||
border-color: #3784fb;
|
||||
box-shadow: 0 0 0 2rpx rgba(55, 132, 251, 0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.search {
|
||||
width: 100%;
|
||||
height: 60rpx;
|
||||
background: linear-gradient(135deg, #4b8eff 0%, #3784fb 100%);
|
||||
text-align: center;
|
||||
line-height: 60rpx;
|
||||
color: #fff;
|
||||
border-radius: 12rpx;
|
||||
font-size: 28rpx;
|
||||
font-weight: 600;
|
||||
box-shadow: 0 6rpx 20rpx rgba(55, 132, 251, 0.2);
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&:active {
|
||||
transform: translateY(2rpx);
|
||||
opacity: 0.9;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
|
|
|||
|
|
@ -26,3 +26,12 @@ export const costExamineApi = (data) => {
|
|||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 协议书
|
||||
export const getSltAgreementBookApi = (data) => {
|
||||
return http({
|
||||
method: 'POST',
|
||||
url: '/material/slt_agreement_info/getSltAgreementBook',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
|
@ -20,8 +20,8 @@ export default defineConfig({
|
|||
proxy: {
|
||||
// 在此处编写代理规则
|
||||
'/api': {
|
||||
// target: 'http://sgwpdm.ah.sgcc.com.cn/iws/jiju-api',
|
||||
target: 'http://192.168.0.96:18080',
|
||||
target: 'http://sgwpdm.ah.sgcc.com.cn/iws/jiju-api',
|
||||
// target: 'http://192.168.0.96:18080',
|
||||
// target: 'http://36.33.26.201:19988/prod-api/',
|
||||
// target: 'http://192.168.0.234:18080',
|
||||
// target: 'http://localhost:18080',
|
||||
|
|
|
|||
Loading…
Reference in New Issue