151 lines
4.7 KiB
Vue
Raw Normal View History

2025-08-20 13:59:17 +08:00
<template>
<view ref="targetRef" class="container">
<MBCard>
<uni-forms ref="baseForm" :modelValue="queryParams">
2026-02-05 15:13:59 +08:00
<uni-forms-item label="支付方式">
<DictSelect v-model="queryParams.isPayNow" dict="dazhong_paytype" @change="handleQuery"/>
2026-02-05 15:13:59 +08:00
</uni-forms-item>
<uni-forms-item label="生产单位">
<ProductionUnit v-model="queryParams.companyId" @change="handleQuery"/>
2026-02-05 15:13:59 +08:00
</uni-forms-item>
</uni-forms>
</MBCard>
2026-02-05 15:13:59 +08:00
<MBLoading v-if="loading"/>
2026-02-05 15:13:59 +08:00
<view v-else>
<MBCard v-if="selected.length>0" :style="{
position: 'fixed',
zIndex : 10,
width:'100%',
left: 0,
bottom: 0,
height:'110px'
}
">
<view class="context">
<view class="label">
<text>已选订单数量:</text>
<text>{{ selected.length }}</text>
</view>
<view class="label">
<text>已选订单总金额:</text>
<text>{{ totalMoney.toFixed(2) }}</text>
</view>
</view>
<!-- <view :style="{-->
<!-- display:'flex',-->
<!-- marginTop:'15px',-->
<!-- justifyContent:'space-between',-->
<!-- alignItems:'center'-->
<!-- }">-->
<!-- <button class="mini-btn" size="mini" type="success" @click="handleBack">回退</button>-->
<!-- <button class="mini-btn" size="mini" type="primary" @click="handleSubmit">审核</button>-->
<!-- </view>-->
</MBCard>
<ListItem v-if="tableData.length > 0" :items="tableData" @checkboxSelected="handleSelect"/>
<uni-load-more
v-else
:contentText="{
contentnomore: '- 暂无商务审批数据 -'
}"
:status="'no-more'"
/>
<MBPagination
v-if="total > 0"
v-model:limit="paging.pageSize"
v-model:page="paging.pageNum"
:total="total"
@pagination="handleQuery"
/>
2026-02-05 15:13:59 +08:00
</view>
</view>
2025-08-20 13:59:17 +08:00
</template>
<script setup>
2026-02-05 15:13:59 +08:00
import {getCurrentInstance, onMounted, onUnmounted, ref, watch} from "vue"
import UniForms from "../../../uni_modules/uni-forms/components/uni-forms/uni-forms.vue";
import UniFormsItem from "../../../uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue";
import DictSelect from "../../../components/DictSelect/DictSelect.vue";
import ProductionUnit from "../../../components/ProductionUnit/ProductionUnit.vue";
import MBCard from "../../../components/MB/MBCard.vue";
import {mangerList} from "../../../api/BusinessApproval";
import MBPagination from "../../../components/MB/MBPagination.vue";
import MBLoading from "../../../components/MB/MBLoading.vue";
import ListItem from "./ListItem.vue";
2026-02-05 15:13:59 +08:00
const {proxy} = getCurrentInstance()
const queryParams = ref({
state: '1',
isPayNow: '',
companyId: ''
})
const loading = ref(true)
const total = ref(0)
const paging = ref({
pageNum: 1,
pageSize: 10,
isAsc: 'descending',
orderByColumn: 'adddate'
})
const tableData = ref([])
const handleQuery = async () => {
loading.value = true
const data = await mangerList(queryParams.value, paging.value)
total.value = data.total
tableData.value = data.rows
loading.value = false
}
const selected = ref([])
const totalMoney = ref(0)
const handleSelect = (payload) => {
const {checked, data} = payload
const id = data.saleid
if (checked) {
if (!selected.value.includes(id)) {
selected.value.push(id)
}
} else {
selected.value = selected.value.filter(item => item !== id)
}
totalMoney.value = tableData.value.filter(item => selected.value.includes(item.saleid))
.map(i => i.contractmoney)
.reduce((a, b) => a + b, 0)
?? 0
}
const targetRef = ref(null)
const isFixed = ref(false)
const handleScroll = () => {
if (!targetRef.value) return
const rect = targetRef.value.$el
? targetRef.value.$el.getBoundingClientRect()
: targetRef.value.getBoundingClientRect()
isFixed.value = rect.top <= -140
}
onMounted(async () => {
await handleQuery()
})
watch(targetRef, (el) => {
if (!el) return
window.addEventListener('scroll', handleScroll)
})
onUnmounted(() => {
window.removeEventListener('scroll', handleScroll)
})
2025-08-20 13:59:17 +08:00
</script>