update: 收货待审核详情页 实际收款价格 增加非空校验

This commit is contained in:
admin 2024-08-05 09:55:57 +08:00
parent a1359a4224
commit 5a03d65506
17 changed files with 209 additions and 159 deletions

View File

@ -114,7 +114,7 @@ const handleOk = (v: any) => {
const gridList1 = reactive([
{
name: "总收入",
name: "收款已收总金额",
enName: "totalIncome",
num: "",
unit: "¥",
@ -130,16 +130,15 @@ const gridList1 = reactive([
decimal: 2,
},
{
name: "其他收",
name: "其他收",
enName: "totalOther",
num: "",
unit: "¥",
isBefore: true,
decimal: 2,
},
{},
{
name: "总支出",
name: "付款已付总金额",
enName: "totalExpenditure",
num: "",
unit: "¥",
@ -155,7 +154,7 @@ const gridList1 = reactive([
decimal: 2,
},
{
name: "其他支出",
name: "其他付款",
enName: "totalOther",
num: "",
unit: "¥",
@ -163,7 +162,7 @@ const gridList1 = reactive([
decimal: 2,
},
{
name: "杂费支出",
name: "杂费已付总金额",
enName: "totalIncidentals",
num: "",
unit: "¥",
@ -171,7 +170,7 @@ const gridList1 = reactive([
decimal: 2,
},
{
name: "运费支出",
name: "运费已付总金额",
enName: "totalFreight",
num: "",
unit: "¥",
@ -181,7 +180,7 @@ const gridList1 = reactive([
]);
const gridList2 = reactive([
{
name: "出货实收金额",
name: "出货已收总金额",
enName: "actualReceived",
num: "",
unit: "¥",
@ -190,7 +189,7 @@ const gridList2 = reactive([
decimal: 2,
},
{
name: "出货应收金额",
name: "出货未收总金额",
enName: "receivable",
num: "",
unit: "¥",
@ -206,11 +205,7 @@ const gridList2 = reactive([
decimal: 0,
},
{
name: "",
num: "",
},
{
name: "出货总重量",
name: "出货总净重",
enName: "outTotalWeight",
num: "",
unit: "KG",
@ -218,7 +213,7 @@ const gridList2 = reactive([
decimal: 2,
},
{
name: "出货净重(客户)",
name: "出货结算总净重(含扣杂)",
enName: "customerTotalWeight",
num: "",
unit: "KG",
@ -226,7 +221,7 @@ const gridList2 = reactive([
decimal: 2,
},
{
name: "出货量(已结)",
name: "出货已收总净重",
enName: "payOutTotalWeight",
num: "",
unit: "KG",
@ -234,7 +229,7 @@ const gridList2 = reactive([
decimal: 2,
},
{
name: "结算总重",
name: "出货结算总重",
enName: "totalSettlement",
num: "",
unit: "KG",
@ -242,7 +237,7 @@ const gridList2 = reactive([
decimal: 2,
},
{
name: "出货量(未结)",
name: "出货未收总净重",
enName: "unPayOutTotalWeight",
num: "",
unit: "KG",
@ -250,7 +245,7 @@ const gridList2 = reactive([
decimal: 2,
},
{
name: "结算重量(已结)",
name: "已收结算总净重",
enName: "payTotalSettlement",
num: "",
unit: "KG",
@ -266,7 +261,7 @@ const gridList2 = reactive([
decimal: 2,
},
{
name: "结算总量(未结)",
name: "未收结算总净重",
enName: "unPayTotalSettlement",
num: "",
unit: "KG",
@ -276,7 +271,7 @@ const gridList2 = reactive([
]);
const gridList3 = reactive([
{
name: "收货总",
name: "收货总重",
enName: "totalWeight",
num: "",
unit: "KG",
@ -294,7 +289,7 @@ const gridList3 = reactive([
decimal: 0,
},
{
name: "收货重量(已付)",
name: "收货已付总净重",
enName: "payTotalWeight",
num: "",
unit: "KG",
@ -302,7 +297,7 @@ const gridList3 = reactive([
decimal: 2,
},
{
name: "收货实付金额",
name: "收货已付总金额",
enName: "paymentTotalPrice",
num: "",
unit: "¥",
@ -310,7 +305,7 @@ const gridList3 = reactive([
decimal: 2,
},
{
name: "收货重量(未付)",
name: "收货未付总净重",
enName: "unPayTotalWeight",
num: "",
unit: "KG",
@ -318,7 +313,7 @@ const gridList3 = reactive([
decimal: 2,
},
{
name: "收货应付金额",
name: "收货未付总金额",
enName: "unPaymentTotalPrice",
num: "",
unit: "¥",
@ -462,7 +457,7 @@ onMounted(() => {
.box {
padding: 30rpx;
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-template-columns: repeat(1, 1fr);
flex: 1;
.highLight {
color: rgba(236, 15, 62, 1);

View File

@ -149,14 +149,14 @@ const tableTitleList = reactive([
name: "客户",
},
{
name: "出货总净重/kg",
name: "结算总净重/kg",
},
{
name: "结算金额",
},
{
name: "实际收款",
},
{
name: "实收款",
},
{
name: "数量",
},

View File

@ -1,11 +1,6 @@
<template>
<NavBar :count="0" :title="'配置'"></NavBar>
<Box
v-if="
isShowModule(list[0].child.concat(list[1].child))
"
:isShow="true"
>
<Box v-if="isShowModule(list[0].child.concat(list[1].child))" :isShow="true">
<view
v-for="(item, index) in list"
:key="index"
@ -15,11 +10,10 @@
<Title :title="item.title" />
</view>
<view class="box-content">
<block v-for="(child, index) in item.child" :key="index">
<view
v-for="(child, index) in item.child"
:key="index"
@click="(child as any).fn(child)"
v-show="isShowModule([{ title: child.title }])"
v-if="isShowModule([{ title: child.title }])"
:class="{ box: isShowModule([{ title: child.title }]) }"
>
<view v-if="isShowModule([{ title: child.title }])">
@ -34,6 +28,7 @@
child.title
}}</view>
</view>
</block>
</view>
</view>
</Box>
@ -239,7 +234,7 @@ onMounted(() => {
> .box + .box {
margin-left: 32rpx;
}
.box:nth-child(4n+1) {
.box:nth-child(4n + 1) {
margin-left: 0rpx;
}
}

View File

@ -15,11 +15,10 @@
<Title :title="item.title" />
</view>
<view class="box-content">
<block v-for="(child, index) in item.child" :key="index">
<view
v-for="(child, index) in item.child"
:key="index"
@click="(child as any).fn(child)"
v-show="isShowModule([{ title: child.title }])"
v-if="isShowModule([{ title: child.title }])"
:class="{ box: isShowModule([{ title: child.title }]) }"
>
<view v-if="isShowModule([{ title: child.title }])">
@ -34,6 +33,7 @@
child.title
}}</view>
</view>
</block>
</view>
</view>
</Box>

View File

@ -23,25 +23,39 @@
</view>
<!-- 数据汇总面板 -->
<view class="summary">
<view class="panel" v-for="(item, index) in summaryList" :key="index">
<image
:src="`${url}/static/pages/${item.imgUrl}`"
/>
<block v-for="(item, index) in summaryList" :key="index">
<view class="panel" v-if="isShowModule([{ title: item.title }])">
<image :src="`${url}/static/pages/${item.imgUrl}`" />
<view class="box">
<view class="num">{{ formatMoney(item.num, 2) }}</view>
<view class="title">{{ item.title }}</view>
</view>
</view>
</block>
<up-empty
v-if="!isShowModule(summaryList)"
mode="permission"
icon="http://cdn.uviewui.com/uview/empty/permission.png"
:text="'暂无相关权限, 请联系管理员'"
>
</up-empty>
</view>
<!-- 其他核心模块 -->
<view class="core-content">
<view>
<text class="title">收货入库</text>
<up-grid :border="false">
<up-empty
v-if="!isShowModule(stateNew.receiveList)"
mode="permission"
icon="http://cdn.uviewui.com/uview/empty/permission.png"
:text="'暂无相关权限, 请联系管理员'"
>
</up-empty>
<block v-for="(item, index) in stateNew.receiveList" :key="index">
<up-grid-item
v-for="(item, index) in stateNew.receiveList"
:key="index"
@click="handleClick(item)"
v-if="isShowModule([{ title: item.title }])"
>
<up-badge
max="99"
@ -56,15 +70,23 @@
></up-image>
<view class="name">{{ item.title }}</view>
</up-grid-item>
</block>
</up-grid>
</view>
<view style="margin: 30rpx 0rpx">
<text class="title title-shipment">出货销售</text>
<up-grid :border="false">
<up-empty
v-if="!isShowModule(stateNew.shipmentList)"
mode="permission"
icon="http://cdn.uviewui.com/uview/empty/permission.png"
:text="'暂无相关权限, 请联系管理员'"
>
</up-empty>
<block v-for="(item, index) in stateNew.shipmentList" :key="index">
<up-grid-item
v-for="(item, index) in stateNew.shipmentList"
:key="index"
@click="handleClick(item)"
v-if="isShowModule([{ title: item.title }])"
>
<up-badge
max="99"
@ -79,6 +101,7 @@
></up-image>
<view class="name">{{ item.title }}</view>
</up-grid-item>
</block>
</up-grid>
</view>
</view>
@ -151,7 +174,7 @@ const summaryList = reactive([
imgUrl: "01.png",
},
{
title: "收货总支出/元",
title: "收货总付款/元",
num: 0,
imgUrl: "02.png",
},
@ -161,7 +184,7 @@ const summaryList = reactive([
imgUrl: "03.png",
},
{
title: "出货总收/元",
title: "出货总收/元",
num: 0,
imgUrl: "04.png",
},
@ -238,6 +261,18 @@ const handleClick = (item: any) => {
url: item.path, //
});
};
// app
const isShowModule = (list: any) => {
let flag = false;
list.forEach((item: any) => {
if (store.profile.menusNameList.indexOf(item.title) > -1) {
flag = true;
return;
}
});
return flag;
};
onMounted(() => {
// #ifdef MP-WEIXIN
let menuButtonInfo = uni.getMenuButtonBoundingClientRect();

View File

@ -89,7 +89,7 @@
@cancel="isInput = false"
>
<u-input
placeholder="请输入实际付款"
placeholder="请输入实际付款1"
type="number"
v-model="amount"
></u-input>
@ -103,9 +103,7 @@ import SmallModal from "@/components/Modal/smallModal.vue";
import { OrderType, ScaleStatus } from "@/utils/enum";
const props = withDefaults(
defineProps<{
currentOrder: Order;
}>(),
defineProps<any>(),
{
currentOrder: {},
}

View File

@ -4,7 +4,6 @@
<u-search
placeholder="请输入供应商名称"
v-model="keyword"
bgColor="#fff"
clearable
:showAction="false"
@ -36,7 +35,7 @@
>
<block v-for="(item, index) in pageList.list" :key="index">
<view class="c-layout">
<Detail :currentOrder="item" @refresh="handleSearch"/>
<Detail :currentOrder="item" @refresh="handleSearch" />
</view>
<u-gap
height="10"
@ -57,12 +56,12 @@
</template>
<script setup lang="ts">
import { ReceiveApi } from "@/services/index";
import { onLoad } from "@dcloudio/uni-app";
import { onLoad, onShow } from "@dcloudio/uni-app";
import PageView from "@/components/PageView/index.vue";
import { ScaleStatus } from "@/utils/enum";
import TimeDialog from "@/components/Dialog/TimeDialog.vue";
import Detail from "./components/detail.vue";
import {formatStartAndEndTime} from "@/utils";
import { formatStartAndEndTime } from "@/utils";
//
const filterState = reactive({
showTime: false,
@ -118,8 +117,8 @@ const getList = (v?: boolean) => {
pageNum: pageList.pageNum,
scaleStatus: ScaleStatus.Paid,
userName: keyword.value,
startTime: formatStartAndEndTime(filterState.startTime, 's'),
endTime: formatStartAndEndTime(filterState.endTime, 'e'),
startTime: formatStartAndEndTime(filterState.startTime, "s"),
endTime: formatStartAndEndTime(filterState.endTime, "e"),
}).then((res: any) => {
if (res.code === 200) {
pageList.isLoading = false;
@ -132,10 +131,11 @@ const getList = (v?: boolean) => {
}
});
};
onMounted(() => {
onShow(() => {
resetPageList();
getList();
});
onLoad((option) => {});
</script>
<style lang="scss" scoped>
.search-box {

View File

@ -4,7 +4,6 @@
<u-search
placeholder="请输入供应商名称"
v-model="keyword"
bgColor="#fff"
clearable
:showAction="false"
@ -23,7 +22,6 @@
</view>
<view class="card-box">
<page-view
@loadList="
(v) => {
@ -48,7 +46,7 @@
:color="'#00D2E3'"
:checked="item.isChecked"
style="transform: scale(0.7)"
@click="item.isChecked = !item.isChecked;"
@click="item.isChecked = !item.isChecked"
/></view>
<view class="inner-box">
<view class="top-flex-box">
@ -57,7 +55,12 @@
<text class="number">收货单号{{ item.receiptNumber }}</text>
</view>
<view v-if="item.userName">
<text class="name">{{ item.userName }}<text v-if="item.cardNumber"> / {{ item.cardNumber }}</text></text>
<text class="name"
>{{ item.userName
}}<text v-if="item.cardNumber">
/ {{ item.cardNumber }}</text
></text
>
</view>
</view>
</view>
@ -147,7 +150,7 @@
</template>
<script setup lang="ts">
import { ReceiveApi } from "@/services/index";
import { onLoad } from "@dcloudio/uni-app";
import { onLoad, onShow } from "@dcloudio/uni-app";
import PageView from "@/components/PageView/index.vue";
import { ScaleStatus } from "@/utils/enum";
import TimeDialog from "@/components/Dialog/TimeDialog.vue";
@ -313,8 +316,8 @@ const getList = (v?: boolean) => {
pageNum: pageList.pageNum,
scaleStatus: currentTab.value,
userName: keyword.value,
startTime: filterState.startTime ? `${filterState.startTime}` : '',
endTime: filterState.startTime ? `${filterState.endTime}` : '',
startTime: filterState.startTime ? `${filterState.startTime}` : "",
endTime: filterState.startTime ? `${filterState.endTime}` : "",
}).then((res: any) => {
if (res.code === 200) {
pageList.isLoading = false;
@ -323,21 +326,23 @@ const getList = (v?: boolean) => {
return { ...item, isChecked: false };
})
);
console.log(_.pluck(res.data.list, "id"))
console.log(_.pluck(res.data.list, "id"));
pageList.total = (res.data as any).total;
}
});
};
onMounted(() => {
getList();
});
onLoad((option) => {
const statusList = ['待定价', '待过皮', '待审核', '待付款','已付款']
const statusList = ["待定价", "待过皮", "待审核", "待付款", "已付款"];
currentTab.value = parseInt((option as any).scaleStatus);
uni.setNavigationBarTitle({
title: statusList[currentTab.value],
});
});
onShow(() => {
resetPageList();
getList();
});
</script>
<style lang="scss" scoped>
.search-box {

View File

@ -40,7 +40,8 @@
</view>
<view>
<text class="name"
>{{ item.userName }} <text v-if="item.cardNumber"> / {{ item.cardNumber }}</text></text
>{{ item.userName }}
<text v-if="item.cardNumber"> / {{ item.cardNumber }}</text></text
>
</view>
</view>
@ -185,7 +186,9 @@ const pricingDetail = (id: number) => {
getList();
} else {
uni.navigateTo({
url: `/pagesReceive/form/pricingForm?id=${id}&title=${state.scaleStatus === 0 ? '定价' : '编辑'}详情`, //
url: `/pagesReceive/form/pricingForm?id=${id}&title=${
state.scaleStatus === 0 ? "定价" : "编辑"
}详情`, // 要跳转到的页面路径
});
}
}
@ -205,10 +208,10 @@ const getList = (v?: boolean) => {
pageSize: pageList.pageSize,
pageNum: pageList.pageNum,
scaleStatus: state.scaleStatus,
userName: stateNew.keywoard
userName: stateNew.keywoard,
};
if (stateNew.currentDevice.id) {
params.deviceId = stateNew.currentDevice.id
params.deviceId = stateNew.currentDevice.id;
}
pageList.isLoading = true;
ReceiveApi.getOrderPage(params).then((res) => {
@ -227,12 +230,10 @@ const handleOk = () => {
}
});
};
onShow(() => {
resetPageList();
getList();
})
});
onLoad((option) => {
//
state.scaleStatus = parseInt((option as any).scaleStatus);

View File

@ -322,6 +322,10 @@ const handleEdit = () => {
isInput.value = true;
};
const handleConfirm = () => {
if (!amount.value) {
uni.showToast({ title: "请输入实际付款" });
return
}
ReceiveApi.updateOrderIn({
orderInPos: [
{

View File

@ -52,6 +52,7 @@
<script setup lang="ts">
import { ShipmentApi } from "@/services/index";
import SmallModal from "@/components/Modal/smallModal.vue";
import { onLoad, onShow } from "@dcloudio/uni-app";
const pageList: PageResult<Order> = reactive({
noMoreData: false,
@ -127,7 +128,8 @@ const handleOk = () => {
});
};
onMounted(() => {
onShow(() => {
resetPageList();
getList();
});
</script>

View File

@ -308,11 +308,11 @@ const getList = (v?: boolean) => {
}
});
};
onShow(() => {
resetPageList();
getList();
});
onLoad((option) => {});
</script>
<style lang="scss" scoped>
.search-box {

View File

@ -58,7 +58,7 @@
<script setup lang="ts">
import { ShipmentApi } from "@/services/index";
import { ScaleStatus } from "@/utils/enum";
import { onShow } from "@dcloudio/uni-app";
import { onLoad, onShow } from "@dcloudio/uni-app";
import PageView from "@/components/PageView/index.vue";
import TimeDialog from "@/components/Dialog/TimeDialog.vue";
import ReceivedDetail from "./components/receivedDetail.vue";
@ -134,6 +134,7 @@ onShow(() => {
resetPageList();
getList();
});
</script>
<style lang="scss" scoped>
.search-box {

View File

@ -202,7 +202,7 @@
<script setup lang="ts">
import { DeviceApi, ShipmentApi } from "@/services/index";
import { OrderType, ScaleStatusBtnType } from "@/utils/enum";
import { OrderType, ScaleStatus, ScaleStatusBtnType } from "@/utils/enum";
import { onLoad, onShow } from "@dcloudio/uni-app";
import SmallModal from "@/components/Modal/smallModal.vue";
const payMethodMap: any = {
@ -447,6 +447,19 @@ const init = () => {
}
item.num = state.order[item.enName as string];
});
/**
* 当地址栏等于出货结算&&当获取order状态为3的时候返回首页
*
*
*/
if (
state.scaleStatusBtnType === ScaleStatusBtnType.ShipmentSettlement &&
state.order.scaleStatus >= ScaleStatus.ToBeShipmentPay
) {
uni.reLaunch({
url: "/pagesHome/index", //
});
}
}
});
}

View File

@ -313,8 +313,6 @@ onShow(() => {
resetPageList();
getList();
});
onLoad((option) => {
});
</script>
<style lang="scss" scoped>
.search-box {

View File

@ -224,10 +224,6 @@ const handleOk = () => {
});
};
onShow(() => {
resetPageList();
getList();
});
const state = reactive({
scaleStatus: 0,
@ -246,6 +242,10 @@ onLoad((option) => {
});
}
});
onShow(() => {
resetPageList();
getList();
});
</script>
<style lang="scss" scoped>
.search {

View File

@ -69,3 +69,6 @@ body {
font-size: 12px;
color: #999;
}
.u-empty {
margin-bottom: 10px !important;
}