From d72af5d3e626511d4bcf0f5805b093a074b9351f Mon Sep 17 00:00:00 2001
From: hdka <823267011@qq.com>
Date: Tue, 17 Dec 2024 11:33:00 +0800
Subject: [PATCH] =?UTF-8?q?oa=E4=BA=8C=E6=9C=9F=E5=86=85=E5=AE=B9=E6=9B=B4?=
=?UTF-8?q?=E6=96=B0bug=E4=BF=AE=E5=A4=8D=EF=BC=8C=E5=AD=98=E5=9C=A8?=
=?UTF-8?q?=E9=97=AE=E9=A2=98=E7=89=A9=E6=96=99=E5=93=81=E7=89=8C=E8=A7=84?=
=?UTF-8?q?=E6=A0=BC=E7=9A=84=E5=A4=9A=E5=AD=97=E6=AE=B5=E6=9F=A5=E8=AF=A2?=
=?UTF-8?q?=E9=9C=80=E8=A6=81=E9=87=8D=E6=96=B0=E7=A1=AE=E7=AB=8B=E7=8B=AC?=
=?UTF-8?q?=E7=AB=8B=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ruoyi-ui/src/utils/currencyFormatter.js | 144 ++++++++++++------
.../src/views/oa/oaOutWarehouse/index.vue | 18 ++-
2 files changed, 110 insertions(+), 52 deletions(-)
diff --git a/ruoyi-ui/src/utils/currencyFormatter.js b/ruoyi-ui/src/utils/currencyFormatter.js
index 14ff4ee..aa365f7 100644
--- a/ruoyi-ui/src/utils/currencyFormatter.js
+++ b/ruoyi-ui/src/utils/currencyFormatter.js
@@ -1,58 +1,108 @@
-// currencyFormatter.js
+export function numberToCNY(money) {
+ if (!money) {
+ return '';
+ }
+ if (typeof money == 'number') {
+ money = money + '';
+ }
+ money = money.replace(/,/g, ''); // 替换originalVal中的“,”
+ money = money.replace(/\\s/g, ''); // 替换originalVal中的“,”
-export function numberToCNY(amount) {
- if (amount === 0) return '零元整';
- const CN_NUMS = ['', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
- const CN_INT_UNITS = ['', '拾', '佰', '仟'];
- const CN_INT_BASE = ['元', '萬', '億', '兆'];
- const CN_DEC_UNITS = ['角', '分'];
- const INT_MAX = Math.pow(10, 16) - 1;
-
- if (amount >= INT_MAX || amount <= -INT_MAX) {
- throw new Error('超出支持的金额范围');
+ money = money.replace("¥", "")//替换掉可能出现的¥字符
+ if (isNaN(money)) { //验证输入的字符是否为数字
+ return money;
}
- let parts = amount.toString().split('.');
- let integerPart = parts[0];
- let decimalPart = parts[1] || '';
-
- // 处理整数部分
- function convertInteger(numStr) {
- let result = '';
- let zeros = 0;
- let unitPos = 0;
- for (let i = numStr.length - 1; i >= 0; i--) {
- let num = parseInt(numStr.charAt(i));
- if (num === 0) {
- zeros++;
+ //汉字的数字
+ var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
+ //基本单位
+ var cnIntRadice = new Array('', '拾', '佰', '仟');
+ //对应整数部分扩展单位
+ var cnIntUnits = new Array('', '万', '亿', '兆');
+ //对应小数部分单位
+ var cnDecUnits = new Array('角', '分', '毫', '厘');
+ //整数金额时后面跟的字符
+ var cnInteger = '整';
+ //整型完以后的单位
+ var cnIntLast = '元';
+ //最大处理的数字
+ var maxNum = 999999999999999.9999;
+ //金额整数部分
+ var integerNum;
+ //金额小数部分
+ var decimalNum;
+ //输出的中文金额字符串
+ var chineseStr = '';
+ //分离金额后用的数组,预定义
+ var parts;
+ if (money == '') {
+ return '';
+ }
+ money = parseFloat(money);
+ if (money >= maxNum) {
+ //超出最大处理数字
+ return '';
+ }
+ if (money == 0) {
+ chineseStr = cnNums[0] + cnIntLast + cnInteger;
+ return chineseStr;
+ }
+ //转换为字符串
+ money = money.toString();
+ if (money.indexOf('.') == -1) {
+ integerNum = money;
+ decimalNum = '';
+ } else {
+ parts = money.split('.');
+ integerNum = parts[0];
+ decimalNum = parts[1].substr(0, 4);
+ }
+ //获取整型部分转换
+ if (parseInt(integerNum, 10) > 0) {
+ var zeroCount = 0;
+ var IntLen = integerNum.length;
+ for (var i = 0; i < IntLen; i++) {
+ var n = integerNum.substr(i, 1);
+ var p = IntLen - i - 1;
+ var q = p / 4;
+ var m = p % 4;
+ if (n == '0') {
+ zeroCount++;
} else {
- if (zeros > 0) {
- result = '零' + result;
+ if (zeroCount > 0) {
+ chineseStr += cnNums[0];
}
- zeros = 0;
- result = CN_NUMS[num] + CN_INT_UNITS[unitPos % 4] + result;
+ //归零
+ zeroCount = 0;
+ chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
}
- unitPos++;
- if (unitPos % 4 === 0 && i > 0) {
- result = CN_INT_BASE[Math.floor(unitPos / 4) - 1] + result;
+ if (m == 0 && zeroCount < 4) {
+ chineseStr += cnIntUnits[q];
}
}
- return result.trim();
+ chineseStr += cnIntLast;
}
-
- // 处理小数部分
- function convertDecimal(numStr) {
- return numStr.split('').map((digit, index) => {
- return digit !== '0' ? CN_NUMS[digit] + CN_DEC_UNITS[index] : '';
- }).join('');
+ //小数部分
+ if (decimalNum != '') {
+ var decLen = decimalNum.length;
+ for (var i = 0; i < decLen; i++) {
+ var n = decimalNum.substr(i, 1);
+ if (i != 0) {
+ if (n != '0') {
+ chineseStr += cnNums[Number(n)] + cnDecUnits[i];
+ }
+ } else {
+ chineseStr += cnNums[Number(n)];
+ if (n != '0') {
+ chineseStr += cnDecUnits[i];
+ }
+ }
+ }
}
-
- let integerResult = convertInteger(integerPart);
- let decimalResult = decimalPart.length > 0 ? convertDecimal(decimalPart) : '整';
-
- // 连接整数和小数部分,并确保格式正确
- let finalResult = integerResult.replace(/零+$/, '') + '元' + decimalResult;
- finalResult = finalResult.replace(/零+/g, '零');
-
- return finalResult;
+ if (chineseStr == '') {
+ chineseStr += cnNums[0] + cnIntLast + cnInteger;
+ } else if (decimalNum == '') {
+ chineseStr += cnInteger;
+ }
+ return chineseStr;
}
diff --git a/ruoyi-ui/src/views/oa/oaOutWarehouse/index.vue b/ruoyi-ui/src/views/oa/oaOutWarehouse/index.vue
index 66b2f8a..bb0d9c3 100644
--- a/ruoyi-ui/src/views/oa/oaOutWarehouse/index.vue
+++ b/ruoyi-ui/src/views/oa/oaOutWarehouse/index.vue
@@ -273,6 +273,9 @@
:key="item.id"
:label="item.name"
:value="item.id">
+ {{ item.name }}
+ -{{ item.model }}
+ -{{ item.brand }}
@@ -280,7 +283,7 @@
请选择物料
{{ item.inventory }}
-
+
@@ -574,9 +577,12 @@ export default {
}
},
+ // 获取对应的库存 后续添加品牌型号
handleGetInventory(e, index) {
- this.form.outWareHouseList[index].inventory = this.oaWarehouseList[this.oaWarehouseList.findIndex(item => item.id === e)].inventory
- console.log(this.form.outWareHouseList[index])
+ let obj = this.oaWarehouseList[this.oaWarehouseList.findIndex(item => item.id === e)]
+ this.form.outWareHouseList[index].inventory = obj.inventory
+ this.form.outWareHouseList[index].model = obj.model
+ this.form.outWareHouseList[index].brand = obj.brand
},
@@ -607,8 +613,10 @@ export default {
this.selectLoading = true;
listOaWarehouse(this.warehouseParams).then(res => {
this.oaWarehouseList = res.rows.filter(item => {
- return item.name.toLowerCase()
- .indexOf(query.toLowerCase()) > -1;
+ const queryLower = query.toLowerCase();
+ return item.name.toLowerCase().indexOf(queryLower) > -1 ||
+ item.model.toLowerCase().indexOf(queryLower) > -1 ||
+ item.brand.toLowerCase().indexOf(queryLower) > -1;
});
this.selectLoading = false;
})