From 4553f5498672b2720702658f547868872491bd81 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期三, 03 九月 2025 10:15:04 +0800
Subject: [PATCH] 语言更改
---
north-glass-erp/northglass-erp/src/router/index.js | 12
north-glass-erp/northglass-erp/src/lang/en.js | 7
north-glass-erp/northglass-erp/src/views/mm/ingredientStock/SelectIngredientsStock.vue | 6
north-glass-erp/northglass-erp/src/lang/zh.js | 7
north-glass-erp/northglass-erp/src/views/mm/productStock/ProductStockList.vue | 12
north-glass-erp/northglass-erp/src/lang/ar.js | 7
north-glass-erp/northglass-erp/src/lang/ru.js | 7
north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelfEmit.vue | 516 +++++++++++++++++++++
north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelfInformation.vue | 62 +-
north-glass-erp/northglass-erp/src/views/sd/basicData/CreateBasicData.vue | 10
north-glass-erp/northglass-erp/src/lang/kr.js | 7
north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/CreateFinishedGlassShelfEmit.vue | 733 ++++++++++++++++++++++++++++++
north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelf.vue | 4
13 files changed, 1,340 insertions(+), 50 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/lang/ar.js b/north-glass-erp/northglass-erp/src/lang/ar.js
index 351b860..6387bef 100644
--- a/north-glass-erp/northglass-erp/src/lang/ar.js
+++ b/north-glass-erp/northglass-erp/src/lang/ar.js
@@ -96,6 +96,7 @@
range9999Dec:'賷乇噩賶 廿丿禺丕賱 毓丿丿 氐丨賷丨 賲賰賵賳 賲賳 兀乇亘毓丞 兀乇賯丕賲',
quantityError: "鏁伴噺閿欒锛岃鍒锋柊鍐嶄繚瀛�",
dataDoesNotExist: "鏁版嵁涓嶅瓨鍦�",
+ greater0Sec1:"璇疯緭鍏ュぇ浜�0鐨勬暣鏁版垨鑰呬繚鐣欎竴浣嶅皬鏁�"
}
},
product:{
@@ -771,6 +772,9 @@
msg2:'鍙戣揣鍗曞簱瀛樻暟涓嶅瓨鍦�',
msg3:'鍏ュ簱鏁伴噺涓嶈兘瓒呰繃璁㈠崟鎬绘暟',
boxingPrinting:'瑁呯鎵撳嵃',
+ packing:'瑁呯璋冩灦',
+ msgPacking:'瑁呯璋冩灦鎴愬姛',
+ boxNumberOrRemarks:'绠卞彿鎴栧娉�',
},
customer:{
page:{
@@ -1170,7 +1174,8 @@
surplusMaterialManagement :'浣欐枡绠$悊',
additionOfSurplusMaterials :'浣欐枡鏂板',
excessMaterialOutflow :'浣欐枡鍑哄簱',
- pleaseSelectTheTypeOfReturnToStock:'璇烽�夋嫨杩斿簱绫诲瀷'
+ pleaseSelectTheTypeOfReturnToStock:'璇烽�夋嫨杩斿簱绫诲瀷',
+ pleaseSelectOneData:'璇烽�変腑涓�琛屾暟鎹�'
},
warehouseBasicData:{
page:{
diff --git a/north-glass-erp/northglass-erp/src/lang/en.js b/north-glass-erp/northglass-erp/src/lang/en.js
index b2627b0..25c745e 100644
--- a/north-glass-erp/northglass-erp/src/lang/en.js
+++ b/north-glass-erp/northglass-erp/src/lang/en.js
@@ -96,6 +96,7 @@
range9999Dec: "Please enter a four digit integer",
quantityError: "Quantity Error",
dataDoesNotExist: "Data Does Not Exist",
+ greater0Sec1:"璇疯緭鍏ュぇ浜�0鐨勬暣鏁版垨鑰呬繚鐣欎竴浣嶅皬鏁�"
}
},
product:{
@@ -773,6 +774,9 @@
msg2:'Invoice inventory number does not exist',
msg3:'The quantity of incoming orders shall not exceed the total number of orders',
boxingPrinting:'瑁呯鎵撳嵃',
+ packing:'瑁呯璋冩灦',
+ msgPacking:'瑁呯璋冩灦鎴愬姛',
+ boxNumberOrRemarks:'绠卞彿鎴栧娉�',
},
customer:{
page:{
@@ -1172,7 +1176,8 @@
surplusMaterialManagement :'Waste material management',
additionOfSurplusMaterials :'Surplus addition',
excessMaterialOutflow :'Residual materials out of storage',
- pleaseSelectTheTypeOfReturnToStock:'Please select a return type'
+ pleaseSelectTheTypeOfReturnToStock:'Please select a return type',
+ pleaseSelectOneData:'璇烽�変腑涓�琛屾暟鎹�'
},
warehouseBasicData:{
page:{
diff --git a/north-glass-erp/northglass-erp/src/lang/kr.js b/north-glass-erp/northglass-erp/src/lang/kr.js
index 65e1a00..4ea4126 100644
--- a/north-glass-erp/northglass-erp/src/lang/kr.js
+++ b/north-glass-erp/northglass-erp/src/lang/kr.js
@@ -96,6 +96,7 @@
range9999Dec: "4鞛愲Μ 鞝曥垬 鞛呺牓頃橃劯鞖�",
quantityError: '靾橂焿 鞓る, 靸堧瓿犾龚 頉� 鞝�鞛ロ晿靹胳殧',
dataDoesNotExist: "雿办澊韯� 鞐嗢潓",
+ greater0Sec1:"璇疯緭鍏ュぇ浜�0鐨勬暣鏁版垨鑰呬繚鐣欎竴浣嶅皬鏁�"
}
},
product:{
@@ -780,6 +781,9 @@
msg2:'JPG 霕愲姅 PNG 順曥嫕鞚� 鞚措歆� 韺岇澕鞚� 靹犿儩頃挫<靹胳殧',
msg3:'JPG 霕愲姅 PNG 順曥嫕鞚� 鞚措歆� 韺岇澕鞚� 靹犿儩頃挫<靹胳殧 . 斓滊寑 5MB',
boxingPrinting:'瑁呯鎵撳嵃',
+ packing:'瑁呯璋冩灦',
+ msgPacking:'瑁呯璋冩灦鎴愬姛',
+ boxNumberOrRemarks:'绠卞彿鎴栧娉�',
},
customer:{
page:{
@@ -1181,7 +1185,8 @@
surplusMaterialManagement :'浣欐枡绠$悊',
additionOfSurplusMaterials :'浣欐枡鏂板',
excessMaterialOutflow :'浣欐枡鍑哄簱',
- pleaseSelectTheTypeOfReturnToStock:'璇烽�夋嫨杩斿簱绫诲瀷'
+ pleaseSelectTheTypeOfReturnToStock:'璇烽�夋嫨杩斿簱绫诲瀷',
+ pleaseSelectOneData:'璇烽�変腑涓�琛屾暟鎹�'
},
warehouseBasicData:{
page:{
diff --git a/north-glass-erp/northglass-erp/src/lang/ru.js b/north-glass-erp/northglass-erp/src/lang/ru.js
index 1bb87ca..41b2a02 100644
--- a/north-glass-erp/northglass-erp/src/lang/ru.js
+++ b/north-glass-erp/northglass-erp/src/lang/ru.js
@@ -96,6 +96,7 @@
range9999Dec: "袙胁械写懈褌械 褔械褌褘褉械 褑械谢褘褏 褔懈褋谢邪.",
quantityError: "鏁伴噺閿欒锛岃鍒锋柊鍐嶄繚瀛�",
dataDoesNotExist: "鏁版嵁涓嶅瓨鍦�",
+ greater0Sec1:"璇疯緭鍏ュぇ浜�0鐨勬暣鏁版垨鑰呬繚鐣欎竴浣嶅皬鏁�"
}
},
product:{
@@ -768,6 +769,9 @@
msg2:'鍙戣揣鍗曞簱瀛樻暟涓嶅瓨鍦�',
msg3:'鍏ュ簱鏁伴噺涓嶈兘瓒呰繃璁㈠崟鎬绘暟',
boxingPrinting:'瑁呯鎵撳嵃',
+ packing:'瑁呯璋冩灦',
+ msgPacking:'瑁呯璋冩灦鎴愬姛',
+ boxNumberOrRemarks:'绠卞彿鎴栧娉�',
},
customer:{
page:{
@@ -1168,7 +1172,8 @@
surplusMaterialManagement :'浣欐枡绠$悊',
additionOfSurplusMaterials :'浣欐枡鏂板',
excessMaterialOutflow :'浣欐枡鍑哄簱',
- pleaseSelectTheTypeOfReturnToStock:'璇烽�夋嫨杩斿簱绫诲瀷'
+ pleaseSelectTheTypeOfReturnToStock:'璇烽�夋嫨杩斿簱绫诲瀷',
+ pleaseSelectOneData:'璇烽�変腑涓�琛屾暟鎹�'
},
warehouseBasicData:{
page:{
diff --git a/north-glass-erp/northglass-erp/src/lang/zh.js b/north-glass-erp/northglass-erp/src/lang/zh.js
index f877186..64692b7 100644
--- a/north-glass-erp/northglass-erp/src/lang/zh.js
+++ b/north-glass-erp/northglass-erp/src/lang/zh.js
@@ -96,6 +96,7 @@
range9999Dec: "璇疯緭鍏ュ洓浣嶆暣鏁�",
quantityError: "鏁伴噺閿欒锛岃鍒锋柊鍐嶄繚瀛�",
dataDoesNotExist: "鏁版嵁涓嶅瓨鍦�",
+ greater0Sec1:"璇疯緭鍏ュぇ浜�0鐨勬暣鏁版垨鑰呬繚鐣欎竴浣嶅皬鏁�"
}
},
product:{
@@ -784,6 +785,9 @@
msg2:'鍙戣揣鍗曞簱瀛樻暟涓嶅瓨鍦�',
msg3:'鍏ュ簱鏁伴噺涓嶈兘瓒呰繃娴佺▼鍗℃�绘暟',
boxingPrinting:'瑁呯鎵撳嵃',
+ packing:'瑁呯璋冩灦',
+ msgPacking:'瑁呯璋冩灦鎴愬姛',
+ boxNumberOrRemarks:'绠卞彿鎴栧娉�',
},
customer:{
page:{
@@ -1187,7 +1191,8 @@
surplusMaterialManagement :'浣欐枡绠$悊',
additionOfSurplusMaterials :'浣欐枡鏂板',
excessMaterialOutflow :'浣欐枡鍑哄簱',
- pleaseSelectTheTypeOfReturnToStock:'璇烽�夋嫨杩斿簱绫诲瀷'
+ pleaseSelectTheTypeOfReturnToStock:'璇烽�夋嫨杩斿簱绫诲瀷',
+ pleaseSelectOneData:'璇烽�変腑涓�琛屾暟鎹�'
},
warehouseBasicData:{
page:{
diff --git a/north-glass-erp/northglass-erp/src/router/index.js b/north-glass-erp/northglass-erp/src/router/index.js
index 25fbd06..f64a43c 100644
--- a/north-glass-erp/northglass-erp/src/router/index.js
+++ b/north-glass-erp/northglass-erp/src/router/index.js
@@ -1303,6 +1303,18 @@
name: 'createFinishedGlassShelf',
component: () => import('../views/mm/finishedGlassShelf/CreateFinishedGlassShelf.vue'),
},
+ {
+ // 鏂欐灦鍑哄簱鏌ヨ
+ path: 'finishedGlassShelfEmit',
+ name: 'finishedGlassShelfEmit',
+ component: () => import('../views/mm/finishedGlassShelf/FinishedGlassShelfEmit.vue'),
+ },
+ {
+ // 鏂欐灦鍑哄簱鏄庣粏鏌ヨ
+ path: 'createFinishedGlassShelfEmit',
+ name: 'createFinishedGlassShelfEmit',
+ component: () => import('../views/mm/finishedGlassShelf/CreateFinishedGlassShelfEmit.vue'),
+ },
{
diff --git a/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/CreateFinishedGlassShelfEmit.vue b/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/CreateFinishedGlassShelfEmit.vue
new file mode 100644
index 0000000..12eb316
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/CreateFinishedGlassShelfEmit.vue
@@ -0,0 +1,733 @@
+<script setup>
+
+import {onMounted, reactive, ref} from "vue";
+import {Search} from "@element-plus/icons-vue";
+import {useRoute, useRouter} from "vue-router"
+import request from "@/utils/request"
+import deepClone from "@/utils/deepClone"
+import VXETable from "vxe-table";
+import useUserInfoStore from "@/stores/userInfo";
+import {ElMessage} from "element-plus";
+import {addListener,toolbarButtonClickEvent} from "@/hook/mouseMove";
+import { useI18n } from 'vue-i18n'
+import OrderOtherMoney from "@/components/sd/order/OrderOtherMoney.vue";
+import footSum from "@/hook/footSum";
+import {changeFilterEvent,filterChanged} from "@/hook"
+import companyInfo from "@/stores/sd/companyInfo";
+import {multiply} from "@/utils/decimal";
+
+//璇█鑾峰彇
+const { t } = useI18n()
+const router = useRouter()
+const route = useRoute()
+const userStore = useUserInfoStore()
+const username = userStore.user.userName
+const userid = userStore.user.userId
+const company = companyInfo()
+let produceList = ref([])
+let cellArea = ref()
+let otherMoneyVisible = ref(false)
+let otherMoney = ref(null)
+let projects = ref([])
+
+const hasDecimal=(value)=>{
+ const regex=/\./ // 瀹氫箟姝e垯琛ㄨ揪寮忥紝鏌ユ壘灏忔暟鐐�
+ return regex.test(value) //杩斿洖true/false
+}
+
+const hasDecimalhtml=(item,row)=>{
+ let aa=item.split('.').length
+ if (aa===2){
+
+ return row[item.split('.')[0]][item.split('.')[1]]
+ }else if(aa===3){
+ return row[item.split('.')[0]][item.split('.')[1]][item.split('.')[2]]
+ }
+
+
+}
+
+
+//瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
+const titleSelectJson = ref({
+ customerName:[]
+})
+
+// 瀹氫箟琛ㄥご涓婁紶鏁版嵁
+let titleUploadData = ref({
+ emitId:'',
+ withdrawTime:'',
+ customerName:'',
+ project:'',
+ operator:'',
+ state:'',
+ remarks:'',
+ creatorId:userStore.user.userid,
+ creator:userStore.user.userName
+})
+
+
+
+//绛涢�夋潯浠讹紝鏈夊閿渶瑕佸厛瀹氫箟鏄庣粏閲岄潰鐨勬暟鎹�
+let filterData = ref({
+ emitId:'',
+ emitNumber:'',
+ glassShelfNumber:'',
+ glassShelfName:'',
+ quantity:'',
+ unit:'',
+ price:'',
+ money:'',
+ remarks:''
+})
+const initOrder = async ()=> {
+//椤甸潰绗竴娆″姞杞�
+ await request.get(`/basicData/orderBasicData`).then((res) => {
+
+ if (res.code == 200) {
+ titleSelectJson.value = deepClone(res.data)
+ titleUploadData.value.operator=userStore.user.userName
+ const today = new Date
+ today.setTime(today.getTime() + (15 * 24 * 60 * 60 * 1000))
+ titleUploadData.value.withdrawTime = today.getFullYear() +
+ '-' + ("0" + (today.getMonth() + 1)).slice(-2)
+ + '-' + ("0" + today.getDate()).slice(-2)
+ } else {
+ ElMessage.warning(res.msg)
+ }
+ })
+
+}
+
+const xGrid = ref();
+
+onMounted( async()=>{
+ await initOrder()
+ //鍚敤琛ㄦ牸鎷栧姩閫変腑
+ addListener(xGrid.value,gridOptions,cellArea.value)
+ //鍙戣揣鏂板
+ const informationId = route.query.informationId
+ if (typeof informationId !== 'undefined' && informationId !== null && informationId !== '' && informationId !== '\n' && informationId !== '\r'){
+
+ //绗竴娆¤皟鐢�
+ /*request.post("/delivery/getSelectShippingOrderDetails/1/100",filterData.value).then((res) => {
+
+ if(res.code==200){
+ pageTotal.value=res.data.total
+
+
+ titleUploadData.value=deepClone(res.data.title)
+ titleUploadData.value.paymentTerms = titleSelectJson.value.paymentTerms[0].basicName
+ titleUploadData.value.payMethod = titleSelectJson.value.payMethod[0].basicName
+ titleUploadData.value.deliveryId=""
+ const today = new Date
+ today.setTime(today.getTime() )
+ titleUploadData.value.deliveryDate=today.getFullYear() +
+ '-' + ("0" + (today.getMonth() + 1)).slice(-2)
+ + '-' + ("0" + today.getDate()).slice(-2)
+ titleUploadData.value.createTime=today.getFullYear() +
+ '-' + ("0" + (today.getMonth() + 1)).slice(-2)
+ + '-' + ("0" + today.getDate()).slice(-2)
+ titleUploadData.value.payDate=today.getFullYear() +
+ '-' + ("0" + (today.getMonth() + 1)).slice(-2)
+ + '-' + ("0" + today.getDate()).slice(-2)
+
+ titleUploadData.value.creator=userStore.user.userName
+ titleUploadData.value.creatorId=userStore.user.userId
+
+ pageNum=1
+ produceList = deepClone(res.data.data)
+
+
+ const orderDetails = res.data.data
+ orderDetails.forEach(item => {
+ item.otherColumns = JSON.parse(item.otherColumns)
+ })
+ xGrid.value.reloadData(orderDetails)
+ xGrid.value.loadData(produceList)
+ //绂佺敤鎸夐挳
+ gridOptions.toolbarConfig.buttons[1].disabled = true
+ gridOptions.toolbarConfig.buttons[2].disabled = true
+ //鏄剧ず澶嶉�夋
+ xGrid.value.showColumn("select")
+ gridOptions.loading=false
+ }else{
+ ElMessage.warning(res.msg)
+ }
+ })*/
+ }
+//鍙戣揣缂栬緫
+ const str = route.query.emitId
+
+ if (typeof str != 'undefined' && str != null && str !== '' && str !== '\n' && str !== '\r'){
+ filterData.value.emitId=str
+ //绗竴娆¤皟鐢�
+ /*request.post("/delivery/getSelectShippingOrderDetail/1/100",filterData.value).then((res) => {
+
+ if(res.code==200){
+ pageTotal.value=res.data.total
+ titleUploadData.value=deepClone(res.data.delivery)
+ titleUploadData.value.deliveryId=str
+
+ //鍒ゆ柇鏄惁鍙戣揣鍑哄簱
+ if(!company.deliveryOutbound){
+ if(titleUploadData.value.stockState!==0){
+ gridOptions.toolbarConfig.buttons[2].disabled = true
+ }
+ }
+ //鏍规嵁瀹℃牳鐘舵�佹樉绀哄鏍告寜閽垨鑰呮槸鍙嶅鎸夐挳
+ if(titleUploadData.value.deliveryState!==0){
+ gridOptions.toolbarConfig.buttons[1].disabled = true
+ gridOptions.toolbarConfig.buttons[0].disabled = true
+ }
+ if(titleUploadData.value.deliveryState===0){
+ gridOptions.toolbarConfig.buttons[2].disabled = true
+ }
+
+ pageNum=1
+ produceList = deepClone(res.data.data)
+ const orderDetails = res.data.data
+ orderDetails.forEach(item => {
+ item.otherColumns = JSON.parse(item.otherColumns)
+ })
+ otherMoney.value =res.data.orderOtherMoneyList
+
+ titleUploadData.value.creator=userStore.user.userName
+ titleUploadData.value.creatorId=userStore.user.userId
+
+ xGrid.value.reloadData(orderDetails)
+ xGrid.value.loadData(produceList)
+ //闅愯棌澶嶉�夋
+ /!*xGrid.value.hideColumn("select")
+ gridOptions.loading=false*!/
+ xGrid.value.showColumn("select")
+ gridOptions.loading=false
+
+ }else{
+ ElMessage.warning(res.msg)
+ }
+ })*/
+ }
+
+
+})
+
+//瀹氫箟椤甸潰鎬婚〉鏁�
+let pageTotal=ref('')
+//瀹氫箟褰撳墠椤垫暟
+let pageNum=$ref(1)
+
+const gridOptions = reactive({
+ border: "full",//琛ㄦ牸鍔犺竟妗�
+ keepSource: true,//淇濇寔婧愭暟鎹�
+ align: 'center',//鏂囧瓧灞呬腑
+ stripe:true,//鏂戦┈绾�
+ rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+ id: 'CreateFinishedGlassShelfEmit',
+ showFooter: true,//鏄剧ず鑴�
+ printConfig: {},
+ importConfig: {},
+ exportConfig: {},
+ scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
+ showOverflow:true,
+ menuConfig: {
+ body: {
+ options: [
+ [
+ { code: 'copyChecked', name: t('褰掕繕'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
+ ]
+ ]
+ }
+ },
+ columnConfig: {
+ resizable: true,
+ useKey: true
+ },
+ filterConfig: { //绛涢�夐厤缃」
+ //remote: true
+ },
+ customConfig: {
+ storage: true
+ },
+ checkboxConfig:{checkAll:true},
+ mouseConfig:{selected: true},//榧犳爣閫変腑
+ keyboardConfig:{isArrow: true, isDel: true, isEnter: true, isTab: true, isEdit: true, isChecked: true},
+ editConfig: {
+ trigger: 'dblclick',
+ mode: 'cell',
+ showStatus: true,
+ showIcon:false
+ },//琛ㄥご鍙傛暟
+ columns:[
+
+ {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left"},
+ {field: 'orderId',width:120, title: t('鏂欐灦缂栧彿'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'orderNumber',width:120, title: t('鏂欐灦鍚嶇О'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'finishedGoodsInventory.boxNo',width:120, title: t('鐜版湁鏁伴噺'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'productName',width:120, title: t('鎬绘暟閲�'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'width',width:120, title: t('鍗曚环'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'height',width:120, title: t('閲戦'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+ {field: 'deliveryDetail.quantity',width:120, title: t('鍗曚綅'),editRender: { name: 'input' },filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+ {field: 'finishedGoodsInventory.quantityAvailable',width:120, title: t('澶囨敞'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+
+ ],//琛ㄥご鎸夐挳
+ toolbarConfig: {
+ buttons: [
+ {'code': 'add', 'name': t('basicData.save'),status: 'primary',icon: 'vxe-icon-save'}
+ ],
+ /*import: false,
+ export: true,
+ print: true,*/
+ zoom: true,
+ custom: true
+ },
+ footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
+ let footList=['deliveryDetail.quantity','quantity','deliveryDetail.money']
+ //let footList=[]
+ return[
+ columns.map((column, columnIndex) => {
+ if (columnIndex === 0) {
+ return t('basicData.total')
+ }
+ if (footList.includes(column.field)) {
+ return footSum(data, column.field)
+ }
+ return ''
+ })
+ ]
+ }
+
+})
+
+
+
+const gridEvents = {
+ async toolbarButtonClick({code}) {
+ const $grid = xGrid.value
+ if ($grid) {
+ switch (code) {
+ case 'add': {
+ const selectRecords = $grid.getCheckboxRecords()
+
+ if (selectRecords.length === 0) {
+ ElMessage.warning(t('productStock.unselectedData'))
+ return
+ }
+ const errMap = await $grid.validate(selectRecords)
+ if (errMap) {
+ ElMessage.warning(t('productStock.dataVerificationFailed'))
+ return
+ }
+ //琛ㄥご鏁版嵁鏍¢獙
+ const paymentTerms = titleUploadData.value.paymentTerms
+ if(paymentTerms === null || paymentTerms === undefined || paymentTerms === ''){
+ ElMessage.error(t('delivery.pleaseSelectPaymentTerms'))
+ return
+ }
+ const payMethod = titleUploadData.value.payMethod
+ if(payMethod === null || payMethod === undefined || payMethod === ''){
+ ElMessage.error(t('delivery.pleaseEnterThePaymentMethod'))
+ return
+ }
+ const freightPrice = titleUploadData.value.freightPrice
+ if(freightPrice=== null || freightPrice === undefined || freightPrice === ''){
+ titleUploadData.value.freightPrice=0
+ }
+ const freightQuantity = titleUploadData.value.freightQuantity
+ if(freightQuantity=== null || freightQuantity === undefined || freightQuantity === ''){
+ titleUploadData.value.freightQuantity=0
+ }
+
+
+ let flowData = ref({
+ delivery: selectRecords,
+ title: titleUploadData.value,
+ deliveryId: route.query.deliveryID,
+ otherMoney:otherMoney.value,
+ deliveryIdType:company.deliveryIdType
+
+ })
+ request.post("/delivery/insertDelivery", flowData.value).then((res) => {
+ if(res.code==200 && res.data==="true"){
+ ElMessage.success(t('delivery.deliveryNoteSubmittedSuccessfully'))
+ //router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
+ if(titleUploadData.value.deliveryId.trim()===""){
+ router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
+ }else{
+ router.push({path:'/main/delivery/createDelivery',query:{
+ deliveryID:titleUploadData.value.deliveryId,
+ random:Math.random()}})
+ }
+ }else if(res.data==="false1"){
+ ElMessage.warning(t('delivery.pleaseMsg1'))
+ }else if(res.data==="false2"){
+ ElMessage.warning(t('basicData.msg.quantityError'))
+ }else if(res.data==="false3"){
+ ElMessage.warning(t('basicData.msg.dataDoesNotExist'))
+ }else{
+ ElMessage.warning(t('basicData.msg.saveFail'))
+ }
+ }).catch((err)=>{
+ ElMessage.error(t('basicData.msg.ServerConnectionError'))
+ router.push("/login")
+ })
+ break
+ }
+ case 'toExamine': {
+ let flowData = ref({
+ deliveryId: route.query.deliveryID,
+ type: 2,
+ userName:userStore.user.userName,
+ userId:userStore.user.userId,
+ deliveryOutbound:company.deliveryOutbound
+
+ })
+ request.post("/delivery/updateDeliveryToExamine", flowData.value).then((res) => {
+ if (res.code == 200 && res.data==="true") {
+ ElMessage.success(t('basicData.msg.ReviewSuccess'))
+ //router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
+ router.push({path:'/main/delivery/createDelivery',query:{
+ deliveryID:titleUploadData.value.deliveryId,
+ random:Math.random()}})
+ } else {
+ ElMessage.warning(t('basicData.msg.reviewFail'))
+ }
+ }).catch((err)=>{
+ ElMessage.error(t('basicData.msg.ServerConnectionError'))
+ router.push("/login")
+ })
+ break
+ }
+ case 'CounterExamination': {
+ let flowData = ref({
+ deliveryId: route.query.deliveryID,
+ type: 0,
+ userName:userStore.user.userName,
+ userId:userStore.user.userId,
+ deliveryOutbound:company.deliveryOutbound
+
+ })
+ request.post("/delivery/updateDeliveryToExamine", flowData.value).then((res) => {
+ if (res.code == 200 && res.data==="true") {
+ ElMessage.success(t('basicData.msg.cancelReviewSuccess'))
+ //router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
+ router.push({path:'/main/delivery/createDelivery',query:{
+ deliveryID:titleUploadData.value.deliveryId,
+ random:Math.random()}})
+ } else {
+ ElMessage.warning(t('basicData.msg.reviewFail'))
+ }
+ }).catch((err)=>{
+ ElMessage.error(t('basicData.msg.ServerConnectionError'))
+ router.push("/login")
+ })
+ break
+ }
+
+ }
+ }
+ },
+ menuClick ({ menu, row, column }) {
+ const $grid = xGrid.value
+ if ($grid) {
+ switch (menu.code) {
+
+ case 'copyChecked' :{
+ let result = toolbarButtonClickEvent()
+ if(result){
+ const dataList = xGrid.value.getTableData().visibleData
+ let firstVal=null;
+ if(result.cell.indexOf('.')>-1){
+ firstVal = eval("dataList["+result.start +"]."+result.cell)
+ }else {
+ firstVal=dataList[result.start][result.cell];
+ }
+ dataList.forEach((item,index) =>{
+ if(index>=result.start && index<=result.end){
+ //鍙栨秷閫変腑
+ if(parseInt(firstVal)<=0){
+ xGrid.value.setCheckboxRow(item, false);
+ }
+ if(result.cell.indexOf('.')>-1){
+ const columnArr = result.cell.split('.')
+ item[columnArr[0]][columnArr[1]] = firstVal
+ }else{
+ item[result.cell] = firstVal
+ }
+
+ }
+ })
+ }
+ break
+ }
+ case 'copyAll' :{
+ let result = toolbarButtonClickEvent()
+ if(result){
+ const dataList = xGrid.value.getTableData().visibleData
+ let firstVal=null;
+ if(result.cell.indexOf('.')>-1){
+ firstVal = eval("dataList["+result.start +"]."+result.cell)
+ }else {
+ firstVal=dataList[result.start][result.cell];
+ }
+ dataList.forEach((item,index) =>{
+ if(index>=result.start){
+ //鍙栨秷閫変腑
+ if(parseInt(firstVal)<=0){
+ xGrid.value.setCheckboxRow(item, false);
+ }
+ if(result.cell.indexOf('.')>-1){
+ const columnArr = result.cell.split('.')
+ item[columnArr[0]][columnArr[1]] = firstVal
+ }else{
+ item[result.cell] = firstVal
+ }
+
+ }
+ })
+ }
+ break
+ }
+ case 'otherMoney' :{
+ otherMoneyVisible.value=true
+ break
+ }
+
+ }
+ }
+ }
+}
+
+//璁$畻閲戦挶
+const countMoney = (list) => {
+ let countMoney = 0
+ list.forEach((item)=>{
+ countMoney += parseFloat(item.grossAmount)
+ })
+ // otherMoney.value.forEach(item => {
+ // countMoney+=item.quantity*item.price
+ // })
+ return parseFloat((countMoney).toFixed(2))
+}
+
+//鍏抽棴鍏朵粬閲戦鐣岄潰
+const refOtherMoney = ref()
+const closeOtherMoneyDialog = async (done) => {
+ const flag = await refOtherMoney.value.validate()
+ if(flag){
+ done()
+ //titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
+ }
+}
+
+function getNestedProperty(obj, path) {
+ return path.split('.').reduce(function(o, p) {
+ if(o && o.hasOwnProperty(p)) {
+ return o[p];
+ }
+ }, obj);
+}
+
+function setNestedValue(obj, path, value) {
+ const keys = path.split('.');
+ const lastKey = keys.pop();
+ const lastObj = keys.reduce((obj, key) => obj[key], obj);
+ lastObj[lastKey] = value;
+}
+
+
+/*鏁版嵁鏍¢獙*/
+const validRules = ref({
+ "deliveryDetail.quantity": [{
+ validator (e) {
+ if (e.row.deliveryDetail.quantity > e.row.finishedGoodsInventory.quantityAvailable) {
+ return new Error(t('delivery.theShipmentQuantityCannotBeGreaterThanTheInventoryQuantity'))
+ }else if (e.row.deliveryDetail.quantity ==="") {
+ return new Error(t('delivery.theShipmentQuantityCannotBeEmptyOr0'))
+ }
+ const regex = /^[1-9]\d*$/g
+ if ( !regex.test(e.row.deliveryDetail.quantity) ) {
+ return new Error(t('productStock.pleaseEnterAPositiveInteger'))
+ }
+
+ }
+
+ }],
+ price: [
+ {
+ validator ({ cellValue }) {
+ const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
+ if ( !regex.test(cellValue) ) {
+ return new Error(t('basicData.msg.range99999Dec2') )
+ }
+ }
+ }
+ ],
+
+})
+
+
+
+const changeProject = (item) => {
+ if(typeof item === 'string'){
+ titleUploadData.value.project = item
+ return
+ }
+ titleUploadData.value.project = item.project
+}
+
+const changeCustomer = () => {
+ const changedCustomerId = titleUploadData.value.customerId
+ const customer = titleSelectJson.value.customer.filter(item => item.id === changedCustomerId)
+ titleUploadData.value.customerName = customer[0].customerName
+ titleUploadData.value.project = customer[0].project
+ projects.value = customer[0].projectList
+}
+
+
+</script>
+
+<template>
+ <div style="width: 100%;height: 100%">
+ <div class="head" style="background-color: white">
+ <el-row>
+ <el-col :span="2"><el-text>*{{$t('order.customers')}}锛�</el-text></el-col>
+ <el-col :span="3">
+ <el-select v-model="titleUploadData.customerId"
+ @change="changeCustomer"
+ filterable
+ clearable
+ placeholder=" " >
+ <el-option v-for="item in titleSelectJson['customer']"
+ :key="item.id"
+ :label="item.id+' '+item.customerName"
+ :value="item.id"
+ />
+ </el-select>
+ </el-col>
+ <el-col :span="2"><el-text>*{{$t('order.project')}}锛�</el-text></el-col>
+ <el-col :span="3">
+ <el-select v-model.trim="titleUploadData.project"
+ @change="changeProject"
+ clearable placeholder=" " filterable >
+ <el-option v-for="item in projects"
+ :label="item.project"
+ :value="item"/>
+ </el-select>
+
+
+ </el-col>
+ <el-col :span="2"><el-text>{{$t('缁忓姙浜�')}}:</el-text></el-col>
+ <el-col :span="3"><el-input disabled v-model="titleUploadData.operator"/></el-col>
+ <el-col :span="2"><el-text>{{$t('褰掕繕鏃ユ湡')}}:</el-text></el-col>
+ <el-col :span="3">
+ <el-date-picker
+ v-model="titleUploadData.withdrawTime"
+ type="date"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD"
+ :placeholder="$t('delivery.selectDate')"/>
+ </el-col>
+ </el-row>
+
+ </div>
+ <div class="main-table">
+ <vxe-grid
+ height="100%"
+ class="mytable-scrollbar"
+ ref="xGrid"
+ v-bind="gridOptions"
+ v-on="gridEvents"
+ :edit-rules="validRules"
+
+ >
+ <template #num1_filter="{ column, $panel }">
+ <div>
+ <div v-for="(option, index) in column.filters" :key="index">
+ <input
+ type="type"
+ v-model="option.data"
+ @keyup.enter.native="$panel.confirmFilter()"
+ @input="changeFilterEvent($event, option, $panel)"/>
+ </div>
+ </div>
+ </template>
+
+
+ <template #content="{ row }">
+ <ul class="expand-wrapper">
+ <li v-for="(item,index) in gridOptions.columns" v-show="item.field!=undefined ">
+ <span style="font-weight: bold">{{item.title+': '}}</span>
+ <span v-if="hasDecimal(item.field)">{{ hasDecimalhtml(item.field,row) }}</span>
+ <span v-else>{{ row[item.field] }}</span>
+ </li>
+ </ul>
+ </template>
+
+ </vxe-grid>
+ </div>
+ <div class="vxe-table--cell-area" ref="cellArea" >
+ <span class="vxe-table--cell-main-area" ></span>
+
+ <span class="vxe-table--cell-active-area" ></span>
+ </div>
+
+ <el-dialog v-model="otherMoneyVisible"
+ :title="$t('basicData.otherAmounts')"
+ :close-on-click-modal="false"
+ :close-on-press-escape="false"
+ :before-close="closeOtherMoneyDialog"
+ style="width: 614px;height:445px ">
+ <order-other-money
+ ref="refOtherMoney"
+ :otherMoney="otherMoney"
+ style="width: 100%;height: 100%" />
+ </el-dialog>
+ </div>
+
+</template>
+
+<style scoped>
+.main-div {
+ width: 100%;
+ height: 100%;
+}
+.el-col{
+ border: #181818 1px solid;
+}
+:deep(.el-input__wrapper) {
+ box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
+ cursor: default;
+ border: none !important;
+ background-color: transparent;
+}
+.order-primary{
+ width: 100%;
+}
+.order-detail{
+ width: 100%;
+ height: 70%;
+}
+.vxe-grid {
+ /* 绂佺敤娴忚鍣ㄩ粯璁ら�変腑 */
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+:deep(#product .el-dialog__body){
+ height: 90%;
+ width: 100%;
+}
+
+.head{
+ width: 100%;
+ height: 50px;
+}
+
+.main-table{
+ width: 100%;
+ height: calc(100% - 50px);
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelf.vue b/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelf.vue
index eb7f6ba..d89c544 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelf.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelf.vue
@@ -27,10 +27,10 @@
<div id="div-title">
<el-breadcrumb :separator-icon="ArrowRight">
<el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/finishedGlassShelf/finishedGlassShelfInformation' }">{{$t('鏂欐灦搴撳瓨')}}</el-breadcrumb-item>
- <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/finishedGlassShelf/materialOutbound' }">{{$t('鏂欐灦鍑哄簱')}}</el-breadcrumb-item>
+ <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/finishedGlassShelf/finishedGlassShelfEmit' }">{{$t('鏂欐灦鍑哄簱')}}</el-breadcrumb-item>
<el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/finishedGlassShelf/returnToStorage' }">{{$t('鏂欐灦鍏ュ簱')}}</el-breadcrumb-item>
<el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/finishedGlassShelf/createFinishedGlassShelf' }">{{$t('鏂欐灦鏂板')}}</el-breadcrumb-item>
- <el-breadcrumb-item @click="changeRouter(6)" :class="indexFlag===6?'indexTag':''" :to="{ path: '/main/finishedGlassShelf/selectSurplusMaterials' }">{{$t('鏂欐灦鎶ヨ〃')}}</el-breadcrumb-item>
+ <el-breadcrumb-item @click="changeRouter(6)" :class="indexFlag===6?'indexTag':''" :to="{ path: '/main/finishedGlassShelf/CreateFinishedGlassShelfEmit' }">{{$t('鏂欐灦鎶ヨ〃')}}</el-breadcrumb-item>
<el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">{{$t('ingredientsStock.returnToStorage')}}</el-breadcrumb-item>
</el-breadcrumb>
diff --git a/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelfEmit.vue b/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelfEmit.vue
new file mode 100644
index 0000000..7a602ef
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelfEmit.vue
@@ -0,0 +1,516 @@
+<script setup>
+
+import {onMounted, reactive, ref} from "vue";
+import {useRouter} from 'vue-router'
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import useUserInfoStore from "@/stores/userInfo";
+import {ElMessage, ElMessageBox} from "element-plus";
+import {Search} from "@element-plus/icons-vue";
+import { useI18n } from 'vue-i18n'
+import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove";
+import {changeFilterEvent,filterChanged,filterChangeds} from "@/hook"
+import {divideAuto, multiply} from "@/utils/decimal";
+import companyInfo from "@/stores/sd/companyInfo";
+import footSum from "@/hook/footSum";
+import {copyTableCellValue} from "@/hook/copyTableCellValue";
+
+//璇█鑾峰彇
+const { t } = useI18n()
+const userStore = useUserInfoStore()
+const company = companyInfo()
+const router = useRouter()
+let produceList = ref([])
+let sheetIndex = ref(-1)
+let rowIndexData = ref(null)
+
+let dialogTableVisible = ref(false)
+let refMaterialAddition=ref()
+const getTableRow = (row,type) =>{
+ switch (type) {
+ case 'edit' :{
+ router.push({path: '/main/finishedGlassShelf/createFinishedGlassShelfEmit', query: { id: row.id }})
+ break
+ }
+ case 'delete':{
+ let flowData = ref({
+ id: row.id,
+ userName:userStore.user.userName,
+ userId:userStore.user.userId
+ })
+ request.post("/materialStore/deleteMaterialStore",flowData.value).then((res) => {
+ if(res.code==200 && res.data==="true"){
+ ElMessage.success(t('basicData.msg.deleteSuccess'))
+ router.push({path:'/main/ingredients/SelectIngredients',query:{random:Math.random()}})
+ }else if(res.data==="false1"){
+ ElMessage.warning(t('ingredients.msg1'))
+ }else{
+ ElMessage.warning(t('basicData.msg.deleteFail'))
+ }
+ }).catch((err)=>{
+ ElMessage.error(t('basicData.msg.ServerConnectionError'))
+ router.push("/login")
+ })
+ return
+ }
+ }
+}
+
+const hasDecimal=(value)=>{
+ const regex=/\./ // 瀹氫箟姝e垯琛ㄨ揪寮忥紝鏌ユ壘灏忔暟鐐�
+ return regex.test(value) //杩斿洖true/false
+}
+
+const hasDecimalhtml=(item,row)=>{
+ let aa=item.split('.').length
+ if (aa===2){
+ return row[item.split('.')[0]][item.split('.')[1]]
+ }else if(aa===3){
+ return row[item.split('.')[0]][item.split('.')[1]][item.split('.')[2]]
+ }
+
+
+}
+
+let pageNum=ref(1)
+let total = reactive({
+ pageTotal : 0,
+ dataTotal : 0,
+ pageSize : 100
+})
+
+let filterData = ref({
+
+})
+
+const values = ref('')
+
+
+let selectDate = ref(["",""])
+let BasicData = ref([])
+let materialStore= ref([])
+
+
+
+
+
+onMounted(() => {
+ addListener(xGrid.value,gridOptions)
+
+ //绗竴娆¤皟鐢�
+ // request.get(`/BasicWarehouse/BasicWarehouseType/`+t('ingredients.originalFilm')+'|'+t('ingredients.accessories')).then((res) => {
+ // if(res.code==200){
+ // gridOptions.columns.splice(0,gridOptions.columns.length)
+ // BasicData.value = res.data
+ // //娣诲姞鍒�
+ // gridOptions.columns=arr.slice()
+ //
+ // for (let i=0;i<BasicData.value.length;i++){
+ // let aa=null
+ // if(BasicData.value[i].OperateType==="name"){
+ // aa={field: "json."+BasicData.value[i].OperateType, width: '150',title: BasicData.value[i].OperateTypeName, sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChangeds}
+ // }else{
+ // aa={field: "json."+BasicData.value[i].OperateType, width: '150',title: BasicData.value[i].OperateTypeName, sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
+ // }
+ // gridOptions.columns.push(aa)
+ //
+ // }
+ // values.value=t('ingredientsStock.inventory')
+ // getInventoryWorks()
+ //
+ // }else{
+ // ElMessage.warning(res.msg)
+ // }
+ // })
+})
+
+
+
+
+
+
+
+
+
+
+
+const getInventoryEngineeringWork = () => {
+
+ request.post(`/materialInventory/getSelectMaterialInventoryEngineeringDate/${pageNum.value}/${total.pageSize}/${selectDate.value}`,filterData.value).then((res) => {
+
+ if(res.code==200){
+ materialStore.value=[]
+ for (let i=0;i<res.data.data.length;i++){
+ materialStore.value[i]=(res.data.data[i])
+ materialStore.value[i].json=(JSON.parse(res.data.data[i].json))
+
+ }
+
+ total.dataTotal = res.data.total.total*1
+ total.pageTotal= res.data.total.pageTotal
+ pageNum.value=1
+ selectDate.value = res.data.selectDate
+ gridOptions.toolbarConfig.buttons[2].disabled = true
+ produceList = deepClone(materialStore.value)
+ xGrid.value.loadData(produceList)
+ gridOptions.loading=false
+ }else{
+ ElMessage.warning(res.msg)
+ router.push("/login")
+ }
+ })
+
+
+}
+
+
+
+const selectOrderList = ()=>{
+ request.get(`/BasicWarehouse/BasicWarehouseType/`+t('ingredients.originalFilm')+'|'+t('ingredients.accessories')).then((res) => {
+ if(res.code==200){
+ gridOptions.columns.splice(0,gridOptions.columns.length)
+ BasicData.value = res.data
+ //娣诲姞鍒�
+ gridOptions.columns=arr.slice()
+
+ for (let i=0;i<BasicData.value.length;i++){
+ let aa=null
+ if(BasicData.value[i].OperateType==="model"){
+ aa={field: "json."+BasicData.value[i].OperateType, width: '150',title: BasicData.value[i].OperateTypeName, sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
+ }else{
+ aa={field: "json."+BasicData.value[i].OperateType, width: '150',title: BasicData.value[i].OperateTypeName, sortable: true,showOverflow:'ellipsis' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged}
+ }
+
+ gridOptions.columns.push(aa)
+
+ }
+ if(values.value===t('ingredientsStock.inventory')){
+ getInventoryWorkPaging()
+ }else{
+ getInventoryEngineeringWork()
+ }
+
+ }else{
+ ElMessage.warning(res.msg)
+ }
+ })
+}
+
+const changeDate = ()=>{
+ selectOrderList()
+}
+
+//椤佃剼璺宠浆
+const handlePageChange = ({ currentPage, pageSize }) => {
+ selectOrderList()
+ total.pageTotal = pageSize
+ pageNum.value=currentPage
+}
+
+
+
+//瀛愮粍浠舵帴鏀跺弬鏁�
+const xGrid = ref()
+const gridOptions = reactive({
+ border: "full",//琛ㄦ牸鍔犺竟妗�
+ keepSource: true,//淇濇寔婧愭暟鎹�
+ align: 'center',//鏂囧瓧灞呬腑
+ stripe:true,//鏂戦┈绾�
+ rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+ id: 'FinishedGlassShelfEmit',
+ showFooter: true,//鏄剧ず鑴�
+ printConfig: {},
+ importConfig: {},
+ exportConfig: {},
+ scrollX:{enabled: true},
+ scrollY:{ enabled: true ,gt:0},//寮�鍚櫄鎷熸粴鍔�
+ showOverflow:true,
+ columnConfig: {
+ resizable: true,
+ useKey: true
+ },
+ filterConfig: { //绛涢�夐厤缃」
+ //remote: true
+ },
+ customConfig: {
+ storage: true
+ },
+ editConfig: {
+ trigger: 'click',
+ mode: 'row',
+ showStatus: true
+ },//琛ㄥご鍙傛暟
+ columns:[
+ {title: t('basicData.operate'), width: '110', slots: { default: 'button_slot' },fixed:'left'},
+ { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
+ {field: 'inventoryOrganization', width:'150', title: t('鍑哄簱鍗曟嵁缂栧彿'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged },
+ {field: 'materialCode', width: '150',title: t('瀹㈡埛鍚嶇О'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+ {field: 'producer', width: '120',title: t('椤圭洰鍚嶇О'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+ {field: 'id',width: '100', title: t('缁忓姙浜�'), sortable: true,showOverflow:"ellipsis",filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+ {field: 'projectNo',width: '100', title: t('褰掕繕鏃ユ湡'), sortable: true},
+ {field: 'createTime',width: '100', title: t('鍒涘缓鏃堕棿'), sortable: true},
+ {field: 'qualityGuaranteePeriod',width: '100', title: t('澶囨敞'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+
+ ],//琛ㄥご鎸夐挳
+ toolbarConfig: {
+ buttons: [
+
+ ],
+ /*import: false,
+ export: true,
+ print: true,*/
+ export: true,
+ zoom: true,
+ custom: true
+ },
+ footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
+ return[
+ columns.map((column, columnIndex) => {
+ if (columnIndex === 0) {
+ return t('basicData.total')
+ }
+ const List = ["inventoryQuantity",'availableQuantity','totalArea']
+ if (List.includes(column.field)) {
+ return footSum(data, column.field)
+ }
+ return ''
+ })
+ ]
+ }
+
+})
+
+
+const gridEvents = {
+ async toolbarButtonClick({code}) {
+ const $grid = xGrid.value
+ if ($grid) {
+ switch (code) {
+ case 'out': {
+ $grid.clearFilter()
+ const selectRecords = $grid.getCheckboxRecords()
+
+
+ if (selectRecords.length === 0) {
+ ElMessage.warning(t('productStock.unselectedData'))
+ return
+ }
+ let id = ""
+ const array = [];
+ if (values.value===t('ingredientsStock.inventory')){
+ for (let i = 0; i < selectRecords.length; i++) {
+ array.push(selectRecords[i].id)
+ if (i + 1 === selectRecords.length) {
+ id += selectRecords[i].id
+ } else {
+ id += selectRecords[i].id + "|"
+ }
+ }
+ }else{
+ for (let i = 0; i < selectRecords.length; i++) {
+ array.push(selectRecords[i].useId)
+ if (i + 1 === selectRecords.length) {
+ id += selectRecords[i].useId
+ } else {
+ id += selectRecords[i].useId + "|"
+ }
+ }
+ }
+
+
+
+
+ router.push({path: '/main/ingredientsStock/CreateOutbound', query: {id: id,type:values.value}})
+ break
+
+
+ }
+ case 'add': {
+ dialogTableVisible.value=true
+ rowIndexData.value=null
+ sheetIndex.value=1
+ break
+ }
+
+ case 'update': {
+
+ $grid.clearFilter()
+ const selectRecords = $grid.getCheckboxRecords()
+ if (selectRecords.length === 1) {
+ dialogTableVisible.value=true
+ rowIndexData.value=selectRecords[0]
+ sheetIndex.value=2
+ }else{
+ ElMessage.warning(t('璇烽�変腑涓�琛屾暟鎹�'))
+ return
+ }
+
+
+ break
+ }
+
+ case 'delete': {
+ $grid.clearFilter()
+ const selectRecords = $grid.getCheckboxRecords()
+ if (selectRecords.length === 0) {
+ ElMessage.warning(t('productStock.unselectedData'))
+ return
+ }
+ ElMessageBox.confirm("纭鍒犻櫎锛�",
+ {
+ confirmButtonText: t('basicData.confirmButtonText'),
+ cancelButtonText: t('basicData.cancelButtonText'),
+ distinguishCancelAndClose: true,
+ type: 'warning',
+ }
+ ).then(()=>{
+ let id = ""
+ const array = [];
+ if (values.value===t('ingredientsStock.inventory')){
+ for (let i = 0; i < selectRecords.length; i++) {
+ array.push(selectRecords[i].id)
+ if (i + 1 === selectRecords.length) {
+ id += selectRecords[i].id
+ } else {
+ id += selectRecords[i].id + "|"
+ }
+ }
+ }else{
+ for (let i = 0; i < selectRecords.length; i++) {
+ array.push(selectRecords[i].useId)
+ if (i + 1 === selectRecords.length) {
+ id += selectRecords[i].useId
+ } else {
+ id += selectRecords[i].useId + "|"
+ }
+ }
+ }
+ let flowData = ref({
+ materialInventory: selectRecords,
+ ids: id,
+ creator: userStore.user.userName
+
+ })
+ request.post(`/materialInventory/deleteMaterialInventory`,flowData.value).then((res) => {
+ if(res.code==200 && res.data===true){
+ ElMessage.success(t('searchOrder.msgDeleteSuccess'))
+ router.push({path:'/main/ingredientsStock/selectIngredientsStock', query:{random:Math.random()}})
+ }else{
+ ElMessage.warning(res.msg)
+ }
+ })
+ }).catch((action)=>{
+ })
+ break
+
+
+ }
+ }
+ }
+ },
+ cellDblclick ({row,column}) {
+ copyTableCellValue(row,column)
+ }
+}
+
+
+
+
+
+
+</script>
+
+<template>
+ <div class="main-div-customer">
+ <div class="head">
+ <el-date-picker
+ v-model="selectDate"
+ type="daterange"
+ :start-placeholder="$t('basicData.startDate')"
+ :end-placeholder="$t('basicData.endDate')"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD"
+
+ />
+ <el-button @click="changeDate" style="margin-top: -5px" id="searchButton" type="primary" :icon="Search">{{$t('basicData.search')}}</el-button>
+ </div>
+
+ <div class="main-table">
+ <vxe-grid
+ height="100%"
+ class="mytable-scrollbar"
+ ref="xGrid"
+ v-bind="gridOptions"
+ v-on="gridEvents"
+
+ >
+ <!-- @toolbar-button-click="toolbarButtonClickEvent"-->
+ <!-- 涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
+ <template #content="{ row }">
+ <ul class="expand-wrapper">
+ <li v-for="(item,index) in gridOptions.columns" v-show="item.field!=undefined ">
+ <span style="font-weight: bold">{{item.title+': '}}</span>
+ <span v-if="hasDecimal(item.field)">{{ hasDecimalhtml(item.field,row) }}</span>
+ <span v-else>{{ row[item.field] }}</span>
+ </li>
+ </ul>
+ </template>
+
+ <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
+ <template #button_slot="{ row }">
+ <el-button @click="getTableRow(row,'edit')"
+ v-if="userStore.user.permissions.indexOf('selectIngredients.edit') > -1"
+ link type="primary" size="small">{{ $t('basicData.edit') }}</el-button>
+ <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')">
+ <template #reference>
+ <el-button link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
+ </template>
+ </el-popconfirm>
+ </template>
+
+ <template #num1_filter="{ column, $panel }">
+ <div>
+ <div v-for="(option, index) in column.filters" :key="index">
+ <input type="type" v-model="option.data" @keyup.enter.native="$panel.confirmFilter()" @input="changeFilterEvent($event, option, $panel)"/>
+ </div>
+ </div>
+ </template>
+
+ </vxe-grid>
+ </div>
+ </div>
+</template>
+
+<style scoped>
+.main-div-customer{
+ width: 99%;
+ height: 100%;
+}
+.main-div-customers{
+ width: 99%;
+ height: 100%;
+}
+.el-col{
+ margin-left: 15px;
+ margin-bottom: 5px;
+}
+.order-primary{
+ width: 100%;
+}
+.head{
+ width: 100%;
+ height: 35px;
+}
+
+.main-table{
+ width: 100%;
+ height: calc(100% - 35px);
+}
+.vxe-grid {
+ /* 绂佺敤娴忚鍣ㄩ粯璁ら�変腑 */
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelfInformation.vue b/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelfInformation.vue
index 9713032..45347de 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelfInformation.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/finishedGlassShelf/FinishedGlassShelfInformation.vue
@@ -29,13 +29,29 @@
const getTableRow = (row,type) =>{
switch (type) {
case 'edit' :{
- //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
- router.push({path: '/main/trader/CreateTrader', query: { id: row.id }})
+ router.push({path: '/main/finishedGlassShelf/createFinishedGlassShelf', query: { id: row.id }})
break
}
case 'delete':{
- alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
- break
+ let flowData = ref({
+ id: row.id,
+ userName:userStore.user.userName,
+ userId:userStore.user.userId
+ })
+ request.post("/materialStore/deleteMaterialStore",flowData.value).then((res) => {
+ if(res.code==200 && res.data==="true"){
+ ElMessage.success(t('basicData.msg.deleteSuccess'))
+ router.push({path:'/main/ingredients/SelectIngredients',query:{random:Math.random()}})
+ }else if(res.data==="false1"){
+ ElMessage.warning(t('ingredients.msg1'))
+ }else{
+ ElMessage.warning(t('basicData.msg.deleteFail'))
+ }
+ }).catch((err)=>{
+ ElMessage.error(t('basicData.msg.ServerConnectionError'))
+ router.push("/login")
+ })
+ return
}
}
}
@@ -201,7 +217,7 @@
align: 'center',//鏂囧瓧灞呬腑
stripe:true,//鏂戦┈绾�
rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
- id: 'SelectIngredientsStock',
+ id: 'FinishedGlassShelfInformation',
showFooter: true,//鏄剧ず鑴�
printConfig: {},
importConfig: {},
@@ -451,8 +467,13 @@
<!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
<template #button_slot="{ row }">
<el-button @click="getTableRow(row,'edit')"
- link type="primary" size="small">{{$t('basicData.edit')}}</el-button>
- <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">{{$t('basicData.delete')}}</el-button>
+ v-if="userStore.user.permissions.indexOf('selectIngredients.edit') > -1"
+ link type="primary" size="small">{{ $t('basicData.edit') }}</el-button>
+ <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')">
+ <template #reference>
+ <el-button link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
+ </template>
+ </el-popconfirm>
</template>
<template #num1_filter="{ column, $panel }">
@@ -463,35 +484,8 @@
</div>
</template>
-<!-- <template #pager>
- <!–浣跨敤 pager 鎻掓Ы–>
- <vxe-pager
- @page-change="handlePageChange"
- :layouts="[ 'PrevPage', 'Jump','PageCount', 'NextPage', 'Total']"
- v-model:current-page="pageNum"
- v-model:page-size="total.pageSize"
- v-model:pager-count="total.pageTotal"
- :total="total.dataTotal"
- >
- </vxe-pager>
- </template>-->
-
-
</vxe-grid>
</div>
-
-<!-- <el-dialog v-model="dialogTableVisible" :title="$t('ingredients.materialAddition')" style="width: 70%;height:75% ">-->
-<!-- <material-addition v-if="sheetIndex===1" ref="refMaterialAddition" style="width: 100%;height: 100%"-->
-<!-- :data=rowIndexData :type=1-->
-<!-- :close-on-click-modal="false"-->
-<!-- :close-on-press-escape="false"-->
-<!-- />-->
-<!-- <material-addition v-if="sheetIndex===2" ref="refMaterialAddition" style="width: 100%;height: 100%"-->
-<!-- :data=rowIndexData :type=2-->
-<!-- :close-on-click-modal="false"-->
-<!-- :close-on-press-escape="false"-->
-<!-- />-->
-<!-- </el-dialog>-->
</div>
</template>
diff --git a/north-glass-erp/northglass-erp/src/views/mm/ingredientStock/SelectIngredientsStock.vue b/north-glass-erp/northglass-erp/src/views/mm/ingredientStock/SelectIngredientsStock.vue
index d82f716..9f1d146 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/ingredientStock/SelectIngredientsStock.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/ingredientStock/SelectIngredientsStock.vue
@@ -317,7 +317,7 @@
{'code': 'out', 'name': t('ingredientsStock.materialOutbound'),status: 'primary'},
{'code': 'add', 'name': t('ingredients.materialAddition'),status: 'primary'},
{'code': 'delete', 'name': t('basicData.delete'),status: 'primary'},
- {'code': 'update', 'name': t('淇敼'),status: 'primary'},
+ {'code': 'update', 'name': t('basicData.update'),status: 'primary'},
],
/*import: false,
export: true,
@@ -404,7 +404,7 @@
rowIndexData.value=selectRecords[0]
sheetIndex.value=2
}else{
- ElMessage.warning(t('璇烽�変腑涓�琛屾暟鎹�'))
+ ElMessage.warning(t('ingredientsStock.pleaseSelectOneData'))
return
}
@@ -419,7 +419,7 @@
ElMessage.warning(t('productStock.unselectedData'))
return
}
- ElMessageBox.confirm("纭鍒犻櫎锛�",
+ ElMessageBox.confirm(t('searchOrder.deleteConfirm'),
{
confirmButtonText: t('basicData.confirmButtonText'),
cancelButtonText: t('basicData.cancelButtonText'),
diff --git a/north-glass-erp/northglass-erp/src/views/mm/productStock/ProductStockList.vue b/north-glass-erp/northglass-erp/src/views/mm/productStock/ProductStockList.vue
index 8b5c9b9..c7a157e 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/productStock/ProductStockList.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/productStock/ProductStockList.vue
@@ -249,7 +249,7 @@
// { 'code' :'issue','name':t('productStock.orderTransfer'),status: 'primary'},
// { 'code' :'out','name':t('productStock.finishedProductPickup'),status: 'primary'},
//{ 'code' :'rework','name':t('productStock.finishedProductRework'),status: 'primary'},
- { 'code' :'changeRack','name':'瑁呯璋冩灦',status: 'primary',visible:(company.companyName==="娲涢槼鍖楁柟鐜荤拑鎶�鏈偂浠芥湁闄愬叕鍙�")},
+ { 'code' :'changeRack','name':t('productStock.packing'),status: 'primary',visible:(company.companyName==="娲涢槼鍖楁柟鐜荤拑鎶�鏈偂浠芥湁闄愬叕鍙�")},
{ 'code' :'print','name':t('basicData.print'),status: 'primary',visible:company.companyName==="娲涢槼鍖楁柟鐜荤拑鎶�鏈偂浠芥湁闄愬叕鍙�"},
],
@@ -335,12 +335,12 @@
return
}
if(currentRecord.value.boxNo.length>255 || currentRecord.value.remark.length>255){
- ElMessage.warning('绠卞彿鎴栧娉�'+t('basicData.msg.max255'))
+ ElMessage.warning(t('productStock.boxNumberOrRemarks')+t('basicData.msg.max255'))
return
}
await request.post(`/finishedGoodsInventory/changeRack/${userStore.user.userName}`,currentRecord.value).then((res) => {
if(res.code==200 ){
- ElMessage.success('瑁呯璋冩灦鎴愬姛')
+ ElMessage.success(t('productStock.msgPacking'))
router.push({path: '/main/productStock/productStockList', query:{random:Math.random()}})
}else{
ElMessage.warning(res.msg)
@@ -408,7 +408,7 @@
<el-dialog v-model="dialogTableVisible" style="width: 400px;height:250px;margin-top: 25vh">
<el-row>
<el-col :span="8">
- <el-text>绠卞彿:</el-text>
+ <el-text>{{$t('productStock.boxNumber')}}:</el-text>
</el-col>
<el-col :span="16">
<el-input v-model.trim="currentRecord.boxNo"/>
@@ -416,7 +416,7 @@
</el-row>
<el-row>
<el-col :span="8">
- <el-text>鏁伴噺:</el-text>
+ <el-text>{{$t('order.quantity')}}:</el-text>
</el-col>
<el-col :span="16">
<el-input v-model="currentRecord.quantityAvailable" type="number"/>
@@ -424,7 +424,7 @@
</el-row>
<el-row>
<el-col :span="8">
- <el-text>澶囨敞:</el-text>
+ <el-text>{{$t('basicData.remarks')}}:</el-text>
</el-col>
<el-col :span="16">
<el-input v-model="currentRecord.remark"/>
diff --git a/north-glass-erp/northglass-erp/src/views/sd/basicData/CreateBasicData.vue b/north-glass-erp/northglass-erp/src/views/sd/basicData/CreateBasicData.vue
index c718f49..a68a933 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/basicData/CreateBasicData.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/basicData/CreateBasicData.vue
@@ -152,6 +152,11 @@
}
}
if(basic.value.basicType[1]==="icon"){
+ const regex = /^(?:\d+|\d+\.\d)$/
+ if (!regex.test(iconWidth.value)||!regex.test(iconHeight.value) ) {
+ ElMessage.warning(t('basicData.msg.greater0Sec1'))
+ return
+ }
let nickname=basic.value.nickname
let data={
width: iconWidth.value,
@@ -175,6 +180,11 @@
}
}
if(basic.value.basicType[1]==="icon"){
+ const regex = /^(?:\d+|\d+\.\d)$/
+ if (!regex.test(iconWidth.value)||!regex.test(iconHeight.value) ) {
+ ElMessage.warning(t('basicData.msg.greater0Sec1'))
+ return
+ }
let nickname=basic.value.nickname
let data={
width: iconWidth.value,
--
Gitblit v1.8.0