From 9b9fdcb4711279a303cf8da9ce9e3ff30b1bf6e0 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期四, 20 三月 2025 16:45:06 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override
---
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue | 228 ++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 168 insertions(+), 60 deletions(-)
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 839d5e1..0f3d636 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
@@ -1,5 +1,5 @@
<script lang="ts" setup>
-import {onMounted, reactive, ref, watch} from "vue"
+import {nextTick, onMounted, reactive, ref, watch} from "vue"
import {useRouter,useRoute} from "vue-router"
import * as XLXS from "xlsx"
import {ElMessage, ElMessageBox} from "element-plus"
@@ -145,7 +145,7 @@
trigger: 'dblclick',
mode: 'cell',
showStatus: true,
- showIcon:false
+ showIcon:false,
},//琛ㄥご鍙傛暟
columns:[
{type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
@@ -628,29 +628,62 @@
if(result){
const dataList = xGrid.value.getTableData().visibleData
const val = getNestedProperty(dataList[result.start],result.cell)+""
+ if(!/\d$/.test(val)){
+ const matches = val.match(/\D/g);
+ const b= val.lastIndexOf(matches[matches.length-1])
- const numbersArr = []
- const regex = /\d+/g
- let match
- while ((match = regex.exec(val))) {
- numbersArr.push({ number: match[0], index: match.index });
- }
- let numbers=numbersArr[numbersArr.length-1]
- var subStr1 = val.substring(numbers.index);
- var subStr2 = val.substring(0, numbers.index);
- let number = parseInt(subStr1)
- var reg =new RegExp(number,"g")
- dataList.forEach((item,index) =>{
- if(index>=result.start ){
- let newStr = subStr1.replace(reg, number);
- if(parseInt(newStr)>9){
- newStr=parseInt(newStr)
- }
- setNestedValue(item,result.cell,subStr2+newStr)
- number=number+1
+ const numbersArr = []
+ const regex = /\d+/g
+ let match
+ while ((match = regex.exec(val))) {
+ numbersArr.push({ number: match[0], index: match.index });
}
+ let numbers=numbersArr[numbersArr.length-1]
+ var subStr1 = val.substring(numbers.index);
+ const matche = subStr1.match(/(\d+)([^0-9]|$)/);
+ const a= val.lastIndexOf(matche[2])
+ var subStr2 = val.substring(0, numbers.index);
+ var subStr3 = val.substring(a,b+1);
+ let number = parseInt(subStr1)
+ var reg =new RegExp(number,"g")
+ dataList.forEach((item,index) =>{
+ if(index>=result.start ){
+ let newStr = subStr1.replace(reg, number);
+ if(parseInt(newStr)>9){
+ newStr=parseInt(newStr)
+ if(!/\d$/.test(val)){
+ newStr=newStr+subStr3
+ }
+ }
+ setNestedValue(item,result.cell,subStr2+newStr)
+ number=number+1
+ }
- })
+ })
+ }else{
+ const numbersArr = []
+ const regex = /\d+/g
+ let match
+ while ((match = regex.exec(val))) {
+ numbersArr.push({ number: match[0], index: match.index });
+ }
+ let numbers=numbersArr[numbersArr.length-1]
+ var subStr1 = val.substring(numbers.index);
+ var subStr2 = val.substring(0, numbers.index);
+ let number = parseInt(subStr1)
+ var reg =new RegExp(number,"g")
+ dataList.forEach((item,index) =>{
+ if(index>=result.start ){
+ let newStr = subStr1.replace(reg, number);
+ if(parseInt(newStr)>9){
+ newStr=parseInt(newStr)
+ }
+ setNestedValue(item,result.cell,subStr2+newStr)
+ number=number+1
+ }
+
+ })
+ }
}
computedMoney(result.cell)
@@ -662,36 +695,62 @@
if (result) {
const dataList = xGrid.value.getTableData().visibleData
const val = getNestedProperty(dataList[result.start], result.cell)+""
- const numbersArr = []
- const regex = /\d+/g
- let match
- while ((match = regex.exec(val))) {
- numbersArr.push({ number: match[0], index: match.index });
- }
- let numbers=numbersArr[numbersArr.length-1]
- var subStr1 = val.substring(numbers.index);
- var subStr2 = val.substring(0, numbers.index);
- let number = parseInt(subStr1)
- var reg =new RegExp(number,"g")
- dataList.forEach((item,index) =>{
- if(index >= result.start && index <= result.end){
- let newStr = subStr1.replace(reg, number);
- if(parseInt(newStr)>9){
- newStr=parseInt(newStr)
- }
- setNestedValue(item,result.cell,subStr2+newStr)
- number=number+1
- }
+ if(!/\d$/.test(val)){
+ const matches = val.match(/\D/g);
+ const b= val.lastIndexOf(matches[matches.length-1])
- })
- /*let numbers = parseInt(val.match(/(\d+)$/))
- const string=val.replace(/\d+$/, '')
- dataList.forEach((item, index) => {
- if (index >= result.start && index <= result.end) {
- setNestedValue(item, result.cell, string + numbers)
- numbers = numbers + 1
+ const numbersArr = []
+ const regex = /\d+/g
+ let match
+ while ((match = regex.exec(val))) {
+ numbersArr.push({ number: match[0], index: match.index });
}
- })*/
+ let numbers=numbersArr[numbersArr.length-1]
+ var subStr1 = val.substring(numbers.index);
+ const matche = subStr1.match(/(\d+)([^0-9]|$)/);
+ const a= val.lastIndexOf(matche[2])
+ var subStr2 = val.substring(0, numbers.index);
+ var subStr3 = val.substring(a,b+1);
+ let number = parseInt(subStr1)
+ var reg =new RegExp(number,"g")
+ dataList.forEach((item,index) =>{
+ if(index >= result.start && index <= result.end){
+ let newStr = subStr1.replace(reg, number);
+ if(parseInt(newStr)>9){
+ newStr=parseInt(newStr)
+ newStr=newStr+subStr3
+ }
+ setNestedValue(item,result.cell,subStr2+newStr)
+ number=number+1
+ }
+
+ })
+ }else{
+ const numbersArr = []
+ const regex = /\d+/g
+ let match
+ while ((match = regex.exec(val))) {
+ numbersArr.push({ number: match[0], index: match.index });
+ }
+ let numbers=numbersArr[numbersArr.length-1]
+ var subStr1 = val.substring(numbers.index);
+ var subStr2 = val.substring(0, numbers.index);
+ let number = parseInt(subStr1)
+ var reg =new RegExp(number,"g")
+ dataList.forEach((item,index) =>{
+ if(index >= result.start && index <= result.end){
+ let newStr = subStr1.replace(reg, number);
+ if(parseInt(newStr)>9){
+ newStr=parseInt(newStr)
+ }
+ setNestedValue(item,result.cell,subStr2+newStr)
+ number=number+1
+ }
+
+ })
+ }
+
+
}
computedMoney(result.cell)
@@ -755,6 +814,8 @@
request.post(`/order/getOrderById/${str}`).then((res) => {
if(res.code==200){
titleUploadData.value = res.data.order
+ const customer = titleSelectJson.value.customer.filter(item => item.id === titleUploadData.value.customerId)
+ projects.value = customer[0].projectList
newOrderId.value=titleUploadData.value.orderId
if(history.state.orderId!=null){
titleUploadData.value.orderId=''
@@ -873,6 +934,8 @@
if(titleUploadData.value.calculateType===3){
item.grossAmount=multiply(item.price,item.quantity)
+ }else if(titleUploadData.value.calculateType===4){
+ item.grossAmount=parseFloat(divideAuto(item.width * item.height* item.quantity*item.price,1000000,company.decValue))
}else{
item.grossAmount=multiply(item.price,item.computeGrossArea)
}
@@ -936,7 +999,7 @@
titleUploadData.value.alType = titleSelectJson.value.alType[0].basicName
titleUploadData.value.calculateType = company.calculateType
const today = new Date
- today.setTime(today.getTime() + (7 * 24 * 60 * 60 * 1000))
+ today.setTime(today.getTime() + (company.deliveryDate * 24 * 60 * 60 * 1000))
titleUploadData.value.deliveryDate = today.getFullYear() +
'-' + ("0" + (today.getMonth() + 1)).slice(-2)
+ '-' + ("0" + today.getDate()).slice(-2)
@@ -1002,7 +1065,9 @@
request.post(`/order/saveOrderTitle`,order).then((res) => {
if(res.code==200){
ElMessage.success(t('basicData.msg.saveSuccess'))
- router.push({path:'/main/order/selectOrder'})
+ router.push({path:'/main/order/createOrder',query:{
+ orderId:titleUploadData.value.orderId,
+ random:Math.random()}})
}else {
ElMessage.error(res.msg)
}
@@ -1116,6 +1181,20 @@
reviewOrder(2)
}
+let projects = ref([])
+
+const changeProject = (item) => {
+ if(typeof item === 'string'){
+ titleUploadData.value.project = item
+ return
+ }
+ titleUploadData.value.project = item.project
+ titleUploadData.value.salesmanId = parseInt(item.salesmanId)
+ titleUploadData.value.salesman = item.salesman
+ titleUploadData.value.contacts = item.contacts
+ titleUploadData.value.contactNumber = item.contactNumber
+}
+
const changeCustomer = () => {
const changedCustomerId = titleUploadData.value.customerId
const customer = titleSelectJson.value.customer.filter(item => item.id === changedCustomerId)
@@ -1123,12 +1202,15 @@
titleUploadData.value.project = customer[0].project
titleUploadData.value.salesmanId = customer[0].salesmanId
titleUploadData.value.salesman = customer[0].salesman
+ titleUploadData.value.contacts = customer[0].contacts
+ titleUploadData.value.contactNumber = customer[0].contactNumber
+ projects.value = customer[0].projectList
}
const changeSaleMan = () => {
const changedSaleManId = titleUploadData.value.salesmanId
const SaleMan = titleSelectJson.value.saleMan.filter(item => item.id === changedSaleManId)
- titleUploadData.value.salesman = SaleMan[0].basicName
+ titleUploadData.value.salesman = SaleMan[0]['basicName']
}
const area = (row) => {
@@ -1140,7 +1222,11 @@
// 鑾峰彇淇濈暀闈㈢Н,
const decValue = company.decValue
switch (titleUploadData.value.calculateType){
- case 2:{
+ case 2 :{
+ areaSum = parseFloat(divideAuto(row.width * row.height* row.quantity,1000000,company.decValue))
+ break
+ }
+ case 4:{
areaSum = parseFloat(divideAuto(row.width * row.height* row.quantity,1000000,company.decValue))
break
}
@@ -1203,6 +1289,8 @@
}
if(titleUploadData.value.calculateType===3){
item.grossAmount=multiply(item.price , item.quantity)
+ }else if(titleUploadData.value.calculateType===4){
+ item.grossAmount=parseFloat(divideAuto(item.width * item.height* item.quantity*item.price,1000000,company.decValue))
}else{
item.grossAmount=multiply(item.price * 1 , item.computeGrossArea)
}
@@ -1254,7 +1342,6 @@
//琛屽崟鍏冩牸淇敼淇敼瑙﹀彂姝や簨浠�
const editClosedEvent = ({ row, column }) => {
-
//鍒ゆ柇淇敼鐩稿簲鐨勬暟鍊间慨鏀归潰绉笌閲戦
if (['width', 'height', 'quantity', 'price'].includes(column.property)) {
if(titleUploadData.value?.orderReview!==2){
@@ -1265,6 +1352,8 @@
}
if(titleUploadData.value.calculateType===3){
row.grossAmount=multiply(row.price ,row.quantity)
+ }else if(titleUploadData.value.calculateType===4){
+ row.grossAmount=parseFloat(divideAuto(row.width * row.height* row.quantity*row.price,1000000,company.decValue))
}else{
row.grossAmount=multiply(row.price , row.computeGrossArea)
}
@@ -1294,7 +1383,6 @@
// }
// }
titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString()
-
}
@@ -1365,6 +1453,10 @@
if( !isNaN(item.computeArea*1) && item.computeArea != null ){
if(titleUploadData.value.calculateType===3){
item.grossAmount=parseFloat(multiply(item.price , item.quantity))
+ }else if(titleUploadData.value.calculateType===4){
+ item.grossArea = countArea(item)
+ item.computeGrossArea = item.grossArea
+ item.grossAmount=parseFloat(divideAuto(item.width * item.height* item.quantity*item.price,1000000,company.decValue))
}else{
item.grossArea = countArea(item)
item.computeGrossArea = item.grossArea
@@ -1377,7 +1469,7 @@
}
//琛ㄦ牸鍥炶溅锛屽湪琛ㄦ牸鏈�鍚庝竴琛屾坊鍔犱竴琛岀┖鏁版嵁
-const handleKeyDown = (evnt) =>{
+const handleKeyDown =async (evnt) =>{
//鍒ゆ柇琛ㄧず鏄惁涓虹瓫閫夌姸鎬�
if(xGrid.value.isFilter()){
return
@@ -1401,6 +1493,11 @@
break;
case 'quantity':
if(nextRowIndex === length){
+ await editClosedEvent({row,column})
+ xGrid.value.clearEdit()
+ let rowNext = row
+ delete rowNext._X_ROW_KEY
+ //xGrid.value.insertAt(rowNext, xGrid.value.getTableData.length || -1)
xGrid.value.insertAt({}, xGrid.value.getTableData.length || -1)
}
const nextRow = xGrid.value.getTableData().fullData[nextRowIndex]
@@ -1480,7 +1577,18 @@
<div class="order-primary" style="background-color: white">
<el-row>
<el-col :span="2"><el-text>*{{$t('order.project')}}锛�</el-text></el-col>
- <el-col :span="2"><el-input v-model.trim="titleUploadData.project"/></el-col>
+ <el-col :span="2">
+<!-- <el-input v-model.trim="titleUploadData.project"/>-->
+ <el-select v-model.trim="titleUploadData.project"
+ @change="changeProject"
+ clearable placeholder=" " allow-create filterable >
+ <el-option v-for="item in projects"
+ :label="item.project"
+ :value="item"/>
+ </el-select>
+
+
+ </el-col>
<el-col :span="2"><el-text>*{{$t('order.customers')}}锛�</el-text></el-col>
<el-col :span="2">
<el-select v-model="titleUploadData.customerId"
@@ -1563,6 +1671,7 @@
<el-option :value="1" :label="t('order.areaAmountPerPiece')"/>
<el-option :value="2" :label="t('order.areaAmountAge')"/>
<el-option :value="3" :label="t('order.quantityMount')"/>
+ <el-option :value="4" :label="t('order.allAmount')"/>
</el-select>
</el-col>
<el-col :span="2"><el-text>*{{$t('order.salesman')}}锛�</el-text></el-col>
@@ -1647,7 +1756,7 @@
</vxe-grid>
</div>
- <el-dialog v-model="dialogTableVisible" :title="$t('order.processingNote')" style="width: 60%;height:75% ">
+ <el-dialog v-model="dialogTableVisible" :draggable="true" :title="$t('order.processingNote')" style="width: 60%;height:75% ">
<el-input
v-model="titleUploadData.processingNote"
type="textarea"
@@ -1658,7 +1767,6 @@
class="product1"
v-model="productVisible"
@closed="closeProductDialog"
- :destroy-on-close="true"
style="width: 80%;height:75%; ">
<template #header >
<div class="my-header">
--
Gitblit v1.8.0