From 62a2e5583931e439b5914e39801173074e83e9ac Mon Sep 17 00:00:00 2001
From: guoyujie <guoyujie@ng.com>
Date: 星期三, 31 十二月 2025 13:57:39 +0800
Subject: [PATCH] 提交 订单其他金额列和金额重置方法业务调整
---
north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderOtherMoney.java | 2
north-glass-erp/northglass-erp/src/lang/en.js | 3
north-glass-erp/src/main/resources/mapper/sd/OrderOtherMoneyMapper.xml | 21 +++
north-glass-erp/northglass-erp/src/lang/ar.js | 3
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue | 37 +++++++
north-glass-erp/northglass-erp/src/lang/ru.js | 3
north-glass-erp/src/main/java/com/example/erp/entity/sd/DeliveryOtherMoney.java | 2
north-glass-erp/northglass-erp/src/lang/zh.js | 3
north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue | 171 ++++++++++++++++++++++++++-------
north-glass-erp/northglass-erp/src/lang/kr.js | 3
north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java | 17 ++-
11 files changed, 217 insertions(+), 48 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue b/north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue
index cae176c..2419e41 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue
@@ -1,10 +1,11 @@
<script setup>
-import {computed, onMounted, reactive, ref, watch} from "vue"
+import {computed, onMounted, reactive, ref, watch,h} from "vue"
import {filterChanged} from "@/hook"
import {useI18n} from "vue-i18n"
-import {ElMessage, ElMessageBox,} from "element-plus"
+import {ElInput, ElMessage, ElMessageBox,} from "element-plus"
import request from "@/utils/request"
import {useRouter,useRoute} from "vue-router"
+const emits = defineEmits(['addNewCustomColumn','deleteCustomColumn'])
const { t } = useI18n()
const router = useRouter()
const route = useRoute()
@@ -72,13 +73,10 @@
{'code': 'add', 'name': t('basicData.insert'),status: 'primary'},
{'code': 'delete', 'name': t('basicData.delete'),status: 'primary'}
],
+ slots: {
+ tools: 'toolbar_buttons'
+ },
-
- // import: false,
- // export: true,
- // print: true,
- // zoom: true,
- // custom: true
}
,
//table body瀹為檯鏁版嵁
@@ -119,7 +117,7 @@
ElMessage.warning(t('components.pleaseClickToSelectARowFirst'))
return
}
- deleteColum(rowClickIndex.value.id)
+ deleteColum(rowClickIndex.value)
rowClickIndex.value = null
break
}
@@ -138,22 +136,25 @@
})
return count.toFixed(2)==='NaN' ? null : parseFloat(count.toFixed(2))
}
+let radio1 = ref(1)
//鐢ㄤ簬鎺ユ敹鐖剁粍浠跺弬鏁�
let prop = defineProps({
otherMoney:{}
})
onMounted(()=>{
+ console.log(prop.otherMoney)
if(Object.keys(prop.otherMoney).length === 0){
return
}
- xGrid.value.reloadData(prop.otherMoney.filter(item => item.column.indexOf('M')>-1))
+ xGrid.value.reloadData(prop.otherMoney.filter(item => item.column===null || item.column.startsWith('M')))
})
watch(prop,(newVal)=>{
+ console.log(prop.otherMoney)
if(Object.keys(prop.otherMoney).length === 0){
return
}
- xGrid.value.reloadData(prop.otherMoney.filter(item => item.column.indexOf('M')>-1))
+ xGrid.value.reloadData(prop.otherMoney.filter(item => item.column===null || item.column.startsWith('M')))
})
const countAmount = (row) => {
@@ -174,32 +175,97 @@
defineExpose({
validate
})
+const state = reactive({
+ alias: null,
+ price: null,
+ quantity: null,
+})
+const vNode = () => {
+ return h('div', {}, [
+ h('div', { style: 'margin-bottom: 10px;' }, [
+ h('div', {}, '鍒楀悕'),
+ h(ElInput, {
+ modelValue: state.alias,
+ 'onUpdate:modelValue': ($event) => {
+ state.alias = $event;
+ },
+ }),
+ ]),
+ h('div', {}, [
+ h('div', {}, '鍗曚环'),
+ h(ElInput, {
+ modelValue: state.price,
+ 'onUpdate:modelValue': ($event) => {
+ state.price = $event;
+ },
+ }),
+ ]),
+ h('div', {}, [
+ h('div', {}, '鏁伴噺'),
+ h(ElInput, {
+ modelValue: state.quantity,
+ 'onUpdate:modelValue': ($event) => {
+ state.quantity = $event;
+ },
+ }),
+ ]),
+ ]);
+}
const addColumn = () => {
- ElMessageBox.prompt( t('components.addColumnNames')+':', {
- confirmButtonText: t('basicData.insert'),
- cancelButtonText: t('basicData.cancelButtonText'),
- inputPattern:/^.{1,20}$/,
- inputErrorMessage: t('components.message'),
- })
- .then(({ value }) => {
- request.post('/basicOtherMoney/save',{alias:value}).then(res=>{
- if (res.code==='200' && res.data!==false){
- ElMessage.success(t('basicData.msg.saveSuccess'))
- setTimeout(()=>{
- window.location.reload()
- },1500)
+ if(radio1.value===1){
+ ElMessageBox({
+ title: t('components.addColumnNames'),
+ message: () => vNode(),
+ // 涓嶅厑璁哥偣鍑婚伄缃╁眰鍏抽棴
+ 'close-on-click-modal': false,
+ }).then(() => {
+ if(!(/^.{1,20}$/.test(state.alias))){
+ ElMessage.error(t('components.message'))
+ return
+ }
+ if(!(/^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/.test(state.price))){
+ ElMessage.warning(t('basicData.msg.range99999Dec2'))
+ return
+ }
+ if(!(/^[1-9]\d*$/.test(state.quantity))){
+ ElMessage.warning(t('basicData.msg.greater0'))
+ return
+ }
- }else{
- ElMessage.error(t('basicData.msg.saveFail'))
- }
- })
+
+ emits('addNewCustomColumn', state)
})
+ }else{
+ ElMessageBox.prompt( t('components.addColumnNames')+':', {
+ confirmButtonText: t('basicData.insert'),
+ cancelButtonText: t('basicData.cancelButtonText'),
+ inputPattern:/^.{1,20}$/,
+ inputErrorMessage: t('components.message'),
+ })
+ .then(({ value }) => {
+ request.post('/basicOtherMoney/save',{alias:value.trim()}).then(res=>{
+ if (res.code==='200' && res.data!==false){
+ ElMessage.success(t('basicData.msg.saveSuccess'))
+ setTimeout(()=>{
+ window.location.reload()
+ },1500)
+ }else{
+ ElMessage.error(t('basicData.msg.saveFail'))
+ }
+ })
+ })
+ }
+
+
+
+
+
}
-const deleteColum = (id) => {
+const deleteColum = (row) => {
ElMessageBox.confirm(
t('searchOrder.deleteConfirm'),
'Warning',
@@ -210,16 +276,26 @@
}
)
.then(() => {
- request.post(`/basicOtherMoney/deleteById/${id}`,).then(res=>{
- if (res.code==='200' && res.data!==false){
- ElMessage.success(t('basicData.msg.deleteSuccess'))
- setTimeout(()=>{
- window.location.reload()
- },1500)
- }else{
- ElMessage.error(t('basicData.msg.deleteFail'))
+ if(radio1.value===1){
+ if(row.deliveryState ===1 && !row.column){
+ ElMessage.warning('宸插垱寤哄彂璐у崟锛屾棤娉曞垹闄�')
+ return
}
- })
+ emits('deleteCustomColumn', row.id)
+ }else{
+ request.post(`/basicOtherMoney/deleteById/${id}`,).then(res=>{
+ if (res.code==='200' && res.data!==false){
+ ElMessage.success(t('basicData.msg.deleteSuccess'))
+ setTimeout(()=>{
+ window.location.reload()
+ },1500)
+ }else{
+ ElMessage.error(t('basicData.msg.deleteFail'))
+ }
+ })
+ }
+
+
})
}
@@ -239,6 +315,25 @@
<template #default="{ row }">
<span>{{ countAmount(row) }} </span>
</template>
+ <template #toolbar_buttons>
+ <el-select v-model="radio1" placeholder="" style="width: 240px">
+ <el-option
+ :label="$t('components.customColumn')"
+ :value="1"
+ />
+
+ <el-option
+ :label="$t('components.systemColumn')"
+ :value="2"
+ />
+
+ </el-select>
+<!-- <el-radio-group >-->
+<!-- <el-radio :value="1">{{$t('components.customColumn')}}</el-radio>-->
+<!-- <el-radio :label="2">{{}}</el-radio>-->
+<!-- </el-radio-group>-->
+ </template>
+
</vxe-grid>
</div>
diff --git a/north-glass-erp/northglass-erp/src/lang/ar.js b/north-glass-erp/northglass-erp/src/lang/ar.js
index 4ace8f2..0589cbe 100644
--- a/north-glass-erp/northglass-erp/src/lang/ar.js
+++ b/north-glass-erp/northglass-erp/src/lang/ar.js
@@ -1327,6 +1327,9 @@
components:{
addNewSignature :'兀囟賮 丕爻賲 噩丿賷丿',
addColumnNames :'兀囟賮 丕爻賲 丕賱毓賲賵丿',
+ customColumn:'鑷畾涔夊垪',
+ systemColumn:'绯荤粺鍒�',
+ addColumnRemark :'锛堟敞:鑻ユ柊澧炵郴缁熷垪锛岃鍗曟湭淇濆瓨鏃惰嚜瀹氫箟鍒楀皢娓呯┖锛�',
message :'丕賱乇噩丕亍 廿丿禺丕賱 丕賱兀丨乇賮 囟賲賳 20 丨乇賮丕賸貙 賱丕賷賲賰賳 丕賳 賷賰賵賳 賮丕乇睾丕賸',
activeName :'賯丕卅賲丞 丕賱兀爻賲丕亍',
orderHeader :'乇兀爻 丕賱胤賱亘',
diff --git a/north-glass-erp/northglass-erp/src/lang/en.js b/north-glass-erp/northglass-erp/src/lang/en.js
index 8013746..dac06f1 100644
--- a/north-glass-erp/northglass-erp/src/lang/en.js
+++ b/north-glass-erp/northglass-erp/src/lang/en.js
@@ -1327,6 +1327,9 @@
components:{
addNewSignature :'Add label name',
addColumnNames :'New column name',
+ customColumn:'鑷畾涔夊垪',
+ systemColumn:'绯荤粺鍒�',
+ addColumnRemark :'锛堟敞:鑻ユ柊澧炵郴缁熷垪锛岃鍗曟湭淇濆瓨鏃惰嚜瀹氫箟鍒楀皢娓呯┖锛�',
message :'Please enter a non-empty character with a maximum of 20 characters',
activeName :'Tag list',
orderHeader :'Order header',
diff --git a/north-glass-erp/northglass-erp/src/lang/kr.js b/north-glass-erp/northglass-erp/src/lang/kr.js
index efdfc79..9fb3896 100644
--- a/north-glass-erp/northglass-erp/src/lang/kr.js
+++ b/north-glass-erp/northglass-erp/src/lang/kr.js
@@ -1327,6 +1327,9 @@
components:{
addNewSignature :'霛茧波氇� 於旉皜',
addColumnNames :'鞐� 鞚措 於旉皜',
+ customColumn:'鑷畾涔夊垪',
+ systemColumn:'绯荤粺鍒�',
+ addColumnRemark :'锛堟敞:鑻ユ柊澧炵郴缁熷垪锛岃鍗曟湭淇濆瓨鏃惰嚜瀹氫箟鍒楀皢娓呯┖锛�',
message :'瓿惦氨鞚� 鞎勲媽 20鞛� 鞚措偞鞚� 氍胳瀽毳� 鞛呺牓頃橃劯鞖�',
activeName :'霛茧波 氇╇',
orderHeader :'欤茧 靸侂嫧',
diff --git a/north-glass-erp/northglass-erp/src/lang/ru.js b/north-glass-erp/northglass-erp/src/lang/ru.js
index d8ab4df..e73e671 100644
--- a/north-glass-erp/northglass-erp/src/lang/ru.js
+++ b/north-glass-erp/northglass-erp/src/lang/ru.js
@@ -1327,6 +1327,9 @@
components:{
addNewSignature :'袛芯斜邪胁懈褌褜 懈屑褟 屑械褌泻懈',
addColumnNames :'袛芯斜邪胁谢械薪懈械 胁 锌械褉械褔械薪褜',
+ customColumn:'鑷畾涔夊垪',
+ systemColumn:'绯荤粺鍒�',
+ addColumnRemark :'锛堟敞:鑻ユ柊澧炵郴缁熷垪锛岃鍗曟湭淇濆瓨鏃惰嚜瀹氫箟鍒楀皢娓呯┖锛�',
message :'袙胁械写懈褌械 薪械 锌褍褋褌褘械 褋懈屑胁芯谢褘 胁 锌褉械写械谢邪褏 20 褋懈屑胁芯谢芯胁.',
activeName :'小锌懈褋芯泻 屑械褌芯泻',
orderHeader :'袟邪谐芯谢芯胁芯泻 蟹邪泻邪蟹邪',
diff --git a/north-glass-erp/northglass-erp/src/lang/zh.js b/north-glass-erp/northglass-erp/src/lang/zh.js
index b7076ae..f840967 100644
--- a/north-glass-erp/northglass-erp/src/lang/zh.js
+++ b/north-glass-erp/northglass-erp/src/lang/zh.js
@@ -1328,6 +1328,9 @@
components:{
addNewSignature :'鏂板鏍囩鍚�',
addColumnNames :'鏂板鍒楀悕',
+ customColumn:'鑷畾涔夊垪',
+ systemColumn:'绯荤粺鍒�',
+ addColumnRemark :'锛堟敞:鑻ユ柊澧炵郴缁熷垪锛岃鍗曟湭淇濆瓨鏃惰嚜瀹氫箟鍒楀皢娓呯┖锛�',
message :'璇疯緭鍏�20涓瓧绗︿互鍐呯殑涓斾笉涓虹┖鐨勫瓧绗�',
activeName :'鏍囩鍒楄〃',
orderHeader :'璁㈠崟琛ㄥご',
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
index c79e2af..39fe043 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -1855,6 +1855,37 @@
processAttributeVisible.value = false
}
+const addNewCustomColumn = (column) => {
+
+ //鍏堝鏁扮粍閲岀殑column灞炴�ц繘琛屽幓閲嶏紝鍘婚櫎S寮�澶寸殑灞炴��
+ const uniqueColumns = Array.from(new Set(otherMoney.value.filter(item => !(item.column && item.column.startsWith('S')))));
+ const isDuplicate = uniqueColumns.some(item => {
+ // 纭繚item瀛樺湪涓旀湁alias灞炴��
+ if (!item || typeof item.alias !== 'string') {
+ return false;
+ }
+ // 姣旇緝鏃跺拷鐣ュぇ灏忓啓鍜屽墠鍚庣┖鏍�
+ return item.alias.trim().toLowerCase() === column.alias.trim();
+ });
+ if(isDuplicate){
+ ElMessage.error('鍒楀悕瀛樺湪')
+ return
+ }
+ otherMoney.value.push({
+ "id": null,
+ "column": null,
+ "alias": column.alias.trim(),
+ "quantity": column.quantity,
+ "price": column.price,
+ "state": true
+ })
+
+}
+
+const deleteCustomColumn = (id) => {
+ otherMoney.value= Array.from(new Set(otherMoney.value.filter(item => !(!item.column && item.id===id))))
+}
+
</script>
<template>
@@ -2099,6 +2130,8 @@
<order-other-money
ref="refOtherMoney"
:otherMoney="otherMoney"
+ @addNewCustomColumn = "addNewCustomColumn"
+ @deleteCustomColumn = 'deleteCustomColumn'
style="width: 100%;height: 100%" />
</el-dialog>
<!--寮傚舰瀵煎叆-->
@@ -2146,7 +2179,9 @@
:close-on-click-modal="false"
:title="$t('order.orderTransfer')"
destroy-on-close width="500">
- <order-number-report-transfer :transferData="transferData" @orderNumberTransfer="orderNumberTransfer"/>
+ <order-number-report-transfer
+ :transferData="transferData"
+ @orderNumberTransfer="orderNumberTransfer"/>
</el-dialog>
<el-dialog id="loadDWG"
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/sd/DeliveryOtherMoney.java b/north-glass-erp/src/main/java/com/example/erp/entity/sd/DeliveryOtherMoney.java
index f72c546..36b8973 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/sd/DeliveryOtherMoney.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/sd/DeliveryOtherMoney.java
@@ -17,7 +17,7 @@
private Double quantity;
private Double price;
private Double money;
- @TableField(select = false,exist= false)
private String alias;
+ private Integer deliveryState;
private LocalDateTime createTime;
}
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderOtherMoney.java b/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderOtherMoney.java
index 7befebd..bea11db 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderOtherMoney.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderOtherMoney.java
@@ -17,7 +17,7 @@
private Double quantity;
private Double price;
private Double money;
- @TableField(select = false,exist= false)
private String alias;
+ private Integer deliveryState;
private LocalDateTime createTime;
}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
index 40bd59d..c27975a 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -83,9 +83,8 @@
List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(orderJson.get("detail")), OrderDetail.class);
List<OrderOtherMoney> orderOtherMoneyList = JSONArray.parseArray(JSONObject.toJSONString(orderJson.get("otherMoney")), OrderOtherMoney.class);
if(orderOtherMoneyList != null ){
- orderOtherMoneyList = orderOtherMoneyList.stream().filter(o -> o.getColumn().indexOf("M")==0).collect(Collectors.toList());
+ orderOtherMoneyList = orderOtherMoneyList.stream().filter(o -> o.getColumn()==null || o.getColumn().indexOf("M")==0).collect(Collectors.toList());
}
-
boolean saveState = true;
//璁剧疆鍥炴粴鐐�
Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
@@ -265,7 +264,11 @@
//鍏堟妸鍏朵粬閲戦鍓〃鐨勯噾棰濅笌鏁伴噺缃�0
if(orderOtherMoneyList!=null){
orderOtherMoneyList.forEach(orderOtherMoney -> {
- orderOtherMoney.setQuantity(0.0);
+ if(orderOtherMoney.getColumn()!=null){
+ orderOtherMoney.setQuantity(0.0);
+ }else{
+ orderOtherMoney.setMoney(orderOtherMoney.getPrice()*orderOtherMoney.getQuantity());
+ }
});
}
@@ -519,11 +522,15 @@
List<OrderOtherMoney> orderOtherMoneyList = JSONArray.parseArray(JSONObject.toJSONString(jsonObject.get("otherMoney")), OrderOtherMoney.class);
if(orderOtherMoneyList != null ){
- orderOtherMoneyList = orderOtherMoneyList.stream().filter(o -> o.getColumn().indexOf("M")==0).collect(Collectors.toList());
+ orderOtherMoneyList = orderOtherMoneyList.stream().filter(o -> o.getColumn()==null || o.getColumn().indexOf("M")==0).collect(Collectors.toList());
}
if(orderOtherMoneyList!=null){
orderOtherMoneyList.forEach(orderOtherMoney -> {
- orderOtherMoney.setQuantity(0.0);
+ if(orderOtherMoney.getColumn()!=null){
+ orderOtherMoney.setQuantity(0.0);
+ }else{
+ orderOtherMoney.setMoney(orderOtherMoney.getPrice()*orderOtherMoney.getQuantity());
+ }
});
}
diff --git a/north-glass-erp/src/main/resources/mapper/sd/OrderOtherMoneyMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/OrderOtherMoneyMapper.xml
index 6088f1d..984212a 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/OrderOtherMoneyMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/OrderOtherMoneyMapper.xml
@@ -12,16 +12,33 @@
a.money,
a.create_time,
b.alias,
- b.id
+ b.id,
+ a.delivery_state
from basic_other_money as b
left join order_other_money as a
on a.`column` = b.`column` and a.order_id = #{orderId}
where b.`column` like 'M%' and b.state=1
+
+ UNION ALL
+
+-- 鏌ヨ order_other_money 琛ㄤ腑 column 涓虹┖鐨勮褰�
+ SELECT
+ a.order_id,
+ null AS `column`,
+ a.quantity,
+ a.price,
+ a.money,
+ a.create_time,
+ a.alias, -- 浣跨敤 order_other_money 琛ㄤ腑鐨勫埆鍚�
+ a.id,
+ a.delivery_state
+ FROM order_other_money AS a
+ WHERE a.order_id = #{orderId}
+ AND (a.`column` IS NULL OR a.`column` = '')
</select>
<select id="selectGrossAmount">
select ifnull(sum(money),0) from order_other_money where order_id = #{orderId}
-
</select>
--
Gitblit v1.8.0