update: 单价和实际金额 结算单价 结算金额控制小数位数

This commit is contained in:
admin 2024-07-22 17:14:00 +08:00
parent 12f325e46e
commit ea7e4ddb27
5 changed files with 133 additions and 65 deletions

View File

@ -127,12 +127,10 @@
import {
DeviceApi,
PictureApi,
ProfileApi,
ReceiveApi,
ReceiveProductApi,
SupplierApi,
} from "@/services";
import { countDots, formatDate } from "@/utils";
import { countDots, formatDate, isTwoDecimalPlaces } from "@/utils";
import { DeviceType, ImagesType, OrderType } from "@/utils/enum";
import _ from "underscore";
import ProductDialog from "@/components/Dialog/ProductDialog.vue";
@ -570,6 +568,21 @@ const save = () => {
});
return;
}
if (countDots(model1.order.price) === 1 && isTwoDecimalPlaces(model1.order.price)) {
uni.showToast({
title: "单价最多只能输入2位小数",
icon: "none",
});
return
}
if (countDots(model1.order.balanceTotalPrice) === 1 && isTwoDecimalPlaces(model1.order.balanceTotalPrice)) {
uni.showToast({
title: "实际付款最多只能输入2位小数",
icon: "none",
});
return
}
check().then((res) => {
if (res) {
startSave();

View File

@ -546,6 +546,7 @@ const save = () => {
});
return;
}
check().then((res) => {
if (res) {
startSave();

View File

@ -137,18 +137,13 @@
</template>
<script setup lang="ts">
import type { ComType } from "@/types/global";
import {
ReceiveProductApi,
ReceiveApi,
PictureApi,
SupplierApi,
} from "@/services/index";
import { ReceiveApi, PictureApi, SupplierApi } from "@/services/index";
import _ from "underscore";
import { onLoad, onShow } from "@dcloudio/uni-app";
import { ImagesType, OrderType } from "@/utils/enum";
import ProductDialog from "@/components/Dialog/ProductDialog.vue";
import valid from "@/utils/validate";
import { countDots } from "@/utils";
import { countDots, isTwoDecimalPlaces } from "@/utils";
import Photo from "@/components/Photo/index.vue";
import CarNoDialog from "@/components/Dialog/CarNoDialog.vue";
@ -679,6 +674,27 @@ const save = () => {
});
return;
}
if (
countDots(model1.order.price + "") === 1 &&
isTwoDecimalPlaces(model1.order.price)
) {
uni.showToast({
title: "单价最多只能输入2位小数",
icon: "none",
});
return;
}
if (
countDots(model1.order.balanceTotalPrice + "") === 1 &&
isTwoDecimalPlaces(model1.order.balanceTotalPrice)
) {
uni.showToast({
title: "实际付款最多只能输入2位小数",
icon: "none",
});
return;
}
check().then((res) => {
if (res) {
//
@ -753,11 +769,11 @@ const updateOrder = () => {
});
};
const prePage = ref("");
const title = ref("")
const title = ref("");
onLoad((option: any) => {
model1.order.id = parseInt(option.id);
prePage.value = option.prePage;
title.value = option.title
title.value = option.title;
if (prePage.value) {
uni.setNavigationBarTitle({

View File

@ -105,7 +105,12 @@
<script setup lang="ts">
import { PictureApi, ShipmentApi } from "@/services";
import type { ComType } from "@/types/global";
import { formatDate, num_subtract } from "@/utils";
import {
formatDate,
num_subtract,
countDots,
isTwoDecimalPlaces,
} from "@/utils";
import {
ImagesType,
OrderType,
@ -471,7 +476,10 @@ watch(
预估总价 结算单价*结算重量
实际收入实际结算金额-运费-杂费
*/
model1.order.settlementNet = num_subtract((settlementGrossNew || 0), (settlementTareNew || 0))
model1.order.settlementNet = num_subtract(
settlementGrossNew || 0,
settlementTareNew || 0
);
if (model1.order.buttonType === 0) {
if (model1.order.subtractNum) {
model1.order.settlementWeight =
@ -590,6 +598,27 @@ const save = () => {
}
}
if (
countDots(model1.order.unitPrice + "") === 1 &&
isTwoDecimalPlaces(model1.order.unitPrice)
) {
uni.showToast({
title: "结算单价最多只能输入2位小数",
icon: "none",
});
return;
}
if (
countDots(model1.order.totalPrice + "") === 1 &&
isTwoDecimalPlaces(model1.order.totalPrice)
) {
uni.showToast({
title: "结算金额最多只能输入2位小数",
icon: "none",
});
return;
}
check().then((res) => {
if (res) {
if (
@ -743,7 +772,7 @@ onLoad((option) => {
border-radius: 13rpx 13rpx 0rpx 0rpx;
padding: 25rpx 50rpx;
position: sticky;
width: calc(100vw - 100rpx);
width: calc(100vw - 100rpx);
bottom: 0rpx;
z-index: 999;
::v-deep button {

View File

@ -269,12 +269,12 @@ export function formatMoney(
export function countDots(str: any) {
return (str.match(/\./g) || []).length;
}
export function isTwoDecimalPlaces(num:any) {
export function isTwoDecimalPlaces(num: any) {
// 转换为字符串并移除可能的符号
const str = num.toString().replace(/[-]+/g, '');
const str = num.toString().replace(/[-]+/g, "");
// 分割整数部分和小数部分
const parts = str.split('.');
console.log(parts)
const parts = str.split(".");
console.log(parts);
// 如果小数点后有两位数字返回true
return parts.length === 2 && parts[1].length > 2;
}
@ -310,76 +310,85 @@ export function getScaleStatus(type: number, value: number) {
// 判断是否是时间格式
export function isDateTimePicker(str: any) {
return str.split(' ').length === 2
return str.split(" ").length === 2;
}
// 格式化开始时间和结束时间
export function formatStartAndEndTime(str:string, type:string) {
if (type === 's') {
return str ? isDateTimePicker(str) ? str : (str + " 00:00:00") : ''
}else if (type === 'e') {
return str ? isDateTimePicker(str) ? str : (str + " 23:59:59") : ''
export function formatStartAndEndTime(str: string, type: string) {
if (type === "s") {
return str ? (isDateTimePicker(str) ? str : str + " 00:00:00") : "";
} else if (type === "e") {
return str ? (isDateTimePicker(str) ? str : str + " 23:59:59") : "";
}
}
// 两个浮点数求和
export function num_add(num1: number,num2: number){
var r1,r2,m;
try{
r1 = num1.toString().split('.')[1].length;
}catch(e){
export function num_add(num1: number, num2: number) {
var r1, r2, m;
try {
r1 = num1.toString().split(".")[1].length;
} catch (e) {
r1 = 0;
}
try{
r2=num2.toString().split(".")[1].length;
}catch(e){
r2=0;
try {
r2 = num2.toString().split(".")[1].length;
} catch (e) {
r2 = 0;
}
m=Math.pow(10,Math.max(r1,r2));
return Math.round(num1*m+num2*m)/m;
m = Math.pow(10, Math.max(r1, r2));
return Math.round(num1 * m + num2 * m) / m;
}
// 两个浮点数相减
export function num_subtract(num1: number,num2: number){
var r1,r2,m,n;
try{
r1 = num1.toString().split('.')[1].length;
}catch(e){
export function num_subtract(num1: number, num2: number) {
var r1, r2, m, n;
try {
r1 = num1.toString().split(".")[1].length;
} catch (e) {
r1 = 0;
}
try{
r2=num2.toString().split(".")[1].length;
}catch(e){
r2=0;
try {
r2 = num2.toString().split(".")[1].length;
} catch (e) {
r2 = 0;
}
m=Math.pow(10,Math.max(r1,r2));
n=(r1>=r2)?r1:r2;
return Number((Math.round(num1*m-num2*m)/m).toFixed(n));
m = Math.pow(10, Math.max(r1, r2));
n = r1 >= r2 ? r1 : r2;
return Number((Math.round(num1 * m - num2 * m) / m).toFixed(n));
}
// 两个浮点数相乘
export function num_multiply(num1: number,num2: number){
var m=0,s1=num1.toString(),s2=num2.toString();
try{m+=s1.split(".")[1].length}catch(e){};
try{m+=s2.split(".")[1].length}catch(e){};
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
export function num_multiply(num1: number, num2: number) {
var m = 0,
s1 = num1.toString(),
s2 = num2.toString();
try {
m += s1.split(".")[1].length;
} catch (e) {}
try {
m += s2.split(".")[1].length;
} catch (e) {}
return (
(Number(s1.replace(".", "")) * Number(s2.replace(".", ""))) /
Math.pow(10, m)
);
}
// 两个浮点数相除
export function num_divide(num1: number,num2: number){
var t1,t2,r1,r2;
try{
t1 = num1.toString().split('.')[1].length;
}catch(e){
export function num_divide(num1: number, num2: number) {
var t1, t2, r1, r2;
try {
t1 = num1.toString().split(".")[1].length;
} catch (e) {
t1 = 0;
}
try{
t2=num2.toString().split(".")[1].length;
}catch(e){
t2=0;
try {
t2 = num2.toString().split(".")[1].length;
} catch (e) {
t2 = 0;
}
r1=Number(num1.toString().replace(".",""));
r2=Number(num2.toString().replace(".",""));
return (r1/r2)*Math.pow(10,t2-t1);
r1 = Number(num1.toString().replace(".", ""));
r2 = Number(num2.toString().replace(".", ""));
return (r1 / r2) * Math.pow(10, t2 - t1);
}