From c8ebeb63d549adf498e7c3fbd2cf91ba8923e5f0 Mon Sep 17 00:00:00 2001 From: 廖井涛 <2265517004@qq.com> Date: 星期五, 02 二月 2024 15:39:52 +0800 Subject: [PATCH] 重新上传差异问题 --- north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue | 207 +++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 148 insertions(+), 59 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 84117ac..f346c66 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 @@ -5,7 +5,9 @@ import {ElMessage} from "element-plus" import request from "@/utils/request" import deepClone from "@/utils/deepClone" - +import useUserInfoStore from '@/stores/userInfo' +let dialogTableVisible = ref(false) +const userStore = useUserInfoStore() const router = useRouter() const xGrid = ref() const gridOptions = reactive({ @@ -13,7 +15,7 @@ keepSource: true,//淇濇寔婧愭暟鎹� align: 'center',//鏂囧瓧灞呬腑 stripe:true,//鏂戦┈绾� - rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒 + rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒 id: 'OrderList', showFooter: true,//鏄剧ず鑴� printConfig: {}, @@ -159,6 +161,10 @@ const $grid = xGrid.value if ($grid) { switch (code) { + case 'remarks': { + dialogTableVisible.value=true + break + } case 'Craft': { await router.push({path: '/main/order/updateOrderCraft', query: {orderID: 12123}}) break @@ -168,7 +174,27 @@ ElMessage.error('娌℃湁琛ㄦ牸鏁版嵁锛�') return } - console.log($grid.getTableData().tableData) + const project = titleUploadData.value.project + if(project === null || project === undefined || project === ''){ + ElMessage.error('杈撳叆椤圭洰鍚嶇О锛�') + return + } + const customer = titleUploadData.value.customerId + if(customer === null || customer === undefined || customer === ''){ + ElMessage.error('璇烽�夋嫨瀹㈡埛锛�') + return + } + const salasMan = titleUploadData.value.salesman + if(salasMan === null || salasMan === undefined || salasMan === ''){ + ElMessage.error('璇烽�夋嫨涓氬姟鍛橈紒') + return + } + const calculateType = titleUploadData.value.calculateType + if(calculateType === null || calculateType === undefined || calculateType === ''){ + ElMessage.error('璇烽�夋嫨璁$畻鏂瑰紡锛�') + return + } + if ($grid) { const errMap = await $grid.validate(true) if (errMap) { @@ -216,11 +242,29 @@ const titleUploadData = ref({ project:'', orderType:'', - alType:'', + customerId:'', + customerName:'', icon:'', orderClassify:'', packType:'', - deliveryDate:'' + orderId:'', + deliveryDate:'', + batch:'', + calculateType:'', + salesmanId:'', + salesman:'', + alType:'', + money:'', + contractId:'', + customerBatch:'', + contacts:'', + contactNumber:'', + deliveryAddress:'', + otherMoney:'', + otherMoneyRemarks:'', + processingNote:'', + creatorId:userStore.user.userName, + creator:userStore.user.userId, }) //瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁 @@ -230,16 +274,19 @@ icon:[], orderClassify:[], packType:[], + customer:[], + saleMan:[] }) //椤甸潰绗竴娆″姞杞芥墽琛� request.get(`/basicData/orderBasicData`).then((res) => { + if(res.code==200){ titleSelectJson.value=deepClone(res.data) - titleUploadData.value.orderType = titleSelectJson.value.orderType[0].id - titleUploadData.value.orderClassify = titleSelectJson.value.orderClassify[0].id - titleUploadData.value.icon = titleSelectJson.value.icon[0].id - titleUploadData.value.packType = titleSelectJson.value.packType[0].id - titleUploadData.value.alType = titleSelectJson.value.alType[0].id + titleUploadData.value.orderType = titleSelectJson.value.orderType[0].basicName + titleUploadData.value.orderClassify = titleSelectJson.value.orderClassify[0].basicName + titleUploadData.value.icon = titleSelectJson.value.icon[0].basicName + titleUploadData.value.packType = titleSelectJson.value.packType[0].basicName + titleUploadData.value.alType = titleSelectJson.value.alType[0].basicName const today = new Date today.setTime(today.getTime() + (15 * 24 * 60 * 60 * 1000)) titleUploadData.value.deliveryDate = today.getFullYear() + @@ -253,29 +300,45 @@ const saveOrder = (order) => { request.post(`/order/saveOrder`,order).then((res) => { if(res.code==200){ + location.reload() ElMessage.success('淇濆瓨鎴愬姛') }else { - ElMessage.warning(res.msg) + ElMessage.error(res.msg) } }) } - - -const countAmount = (row) => { - return +const changeCustomer = () => { + const changedCustomerId = titleUploadData.value.customerId + const customer = titleSelectJson.value.customer.filter(item => item.id === changedCustomerId) + titleUploadData.value.customerName = customer[0].customerName + //titleSelectJson.value.customer } + +const changeSaleMan = () => { + const changedSaleManId = titleUploadData.value.salesmanId + const SaleMan = titleSelectJson.value.saleMan.filter(item => item.id === changedSaleManId) + titleUploadData.value.salesman = SaleMan[0].basicName +} + const area = (row) => { return parseFloat((row.width * row.height/1000000).toFixed(2)) } const countArea = (row) => { - return parseFloat((row.width * row.height/1000000).toFixed(2))*row.quantity + const area = parseFloat((row.width * row.height/1000000).toFixed(2)) + return parseFloat((area * row.quantity).toFixed(2)) } - +const countMoney = (list) => { + let countMoney = 0 + list.forEach((item)=>{ + countMoney += parseFloat(item.grossAmount) + }) + return countMoney +} //瀵煎叆鍔熻兘 -const impotEvent = async () => { +const importEvent = async () => { const $grid = xGrid.value const { files } = await $grid.readFile({ types: ['xls', 'xlsx'] @@ -286,18 +349,20 @@ const workbook = XLXS.read(data, { type: 'binary' }) let jsonData = XLXS.utils.sheet_to_json(workbook.Sheets.Sheet1).slice(1) if(jsonData.length>240){ - ElMessage.error('瀵煎叆鏁版嵁涓嶈兘瓒呰繃240鏉�,璇峰垎璁㈠崟瀵煎叆') + ElMessage.error(`瀵煎叆${jsonData.length}鏉�,鏁版嵁涓嶈兘瓒呰繃240鏉�,璇峰垎璁㈠崟瀵煎叆`) return } jsonData.forEach((item,index) => { - //item.computeArea - //console.log() if(item.computeArea === undefined){ item.computeArea = area(item) } - item.computeGrossArea = parseFloat((item.computeArea*item.quantity).toString()) + item.area = area(item) + item.grossArea = countArea(item) + item.computeGrossArea = parseFloat((item.computeArea*item.quantity).toFixed(2)) + item.grossAmount=parseFloat((item.price * item.computeGrossArea).toFixed(2)) }) - + //璧嬪�艰〃澶存暟鎹� + titleUploadData.value.money=countMoney(jsonData).toString() xGrid.value.loadData(jsonData) } fileReader.readAsBinaryString(files[0]) @@ -311,11 +376,13 @@ row.grossArea = countArea(row) row.computeArea = row.area row.computeGrossArea = row.grossArea - row.grossAmount=row.price * row.computeGrossArea + row.grossAmount=parseFloat((row.price * row.computeGrossArea).toFixed(2)) }else if(column.property === 'computeArea'){ - row.computeGrossArea=parseFloat((row.computeArea*row.quantity).toString()) - row.grossAmount=row.price * row.computeGrossArea + row.computeGrossArea=parseFloat((row.computeArea*row.quantity).toFixed(2)) + row.grossAmount=parseFloat((row.price * row.computeGrossArea).toFixed(2)) } + + titleUploadData.value.money=countMoney(xGrid.value.getTableData().fullData).toString() } </script> @@ -324,11 +391,19 @@ <div class="order-primary" style="background-color: white"> <el-row> <el-col :span="2"><el-text>*椤圭洰鍚嶇О锛�</el-text></el-col> - <el-col :span="2"><el-input/></el-col> + <el-col :span="2"><el-input v-model="titleUploadData.project"/></el-col> <el-col :span="2"><el-text>*瀹㈡埛閫夋嫨锛�</el-text></el-col> <el-col :span="2"> - <el-select clearable placeholder=" " > - <el-option/> + <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>*璁㈠崟绫诲瀷锛�</el-text></el-col> @@ -338,64 +413,72 @@ v-for="item in titleSelectJson['orderType']" :key="item.id" :label="item.basicName" - :value="item.id" + :value="item.basicName" /> </el-select> </el-col> <el-col :span="2"><el-text>璁㈠崟鍒嗙被锛�</el-text></el-col> <el-col :span="2"> - <el-select v-model="titleUploadData.orderClassify" clearable placeholder=" " > + <el-select v-model="titleUploadData.orderClassify" clearable placeholder=" " > <el-option v-for="item in titleSelectJson['orderClassify']" :key="item.id" :label="item.basicName" - :value="item.id" + :value="item.basicName" /> </el-select> </el-col> <el-col :span="2"><el-text>鍟嗘爣閫夐」锛�</el-text></el-col> <el-col :span="2"> - <el-select v-model="titleUploadData.icon" clearable placeholder=" " > + <el-select v-model="titleUploadData.icon" clearable placeholder=" " > <el-option v-for="item in titleSelectJson['icon']" :key="item.id" :label="item.basicName" - :value="item.id"/> + :value="item.basicName"/> </el-select> </el-col> <el-col :span="2"><el-text>鍖呰鏂瑰紡锛�</el-text></el-col> <el-col :span="2"> - <el-select v-model="titleUploadData.packType" clearable placeholder=" " > + <el-select v-model="titleUploadData.packType" clearable placeholder=" " > <el-option v-for="item in titleSelectJson['packType']" :key="item.id" :label="item.basicName" - :value="item.id"/> + :value="item.basicName"/> </el-select> </el-col> <!-- <el-col :span="2"><el-text /></el-col>--> </el-row> <el-row> <el-col :span="2"><el-text>閿�鍞崟鍙凤細</el-text></el-col> - <el-col :span="2"><el-text /></el-col> + <el-col :span="2"><el-text >{{titleUploadData.orderId}}</el-text></el-col> <el-col :span="2"><el-text>浜よ揣鏃ユ湡锛�</el-text></el-col> <el-col :span="2"> <el-date-picker v-model="titleUploadData.deliveryDate" type="date" - placeholder="Pick a day" + placeholder="" /> </el-col> <el-col :span="2"><el-text>鎵规锛�</el-text></el-col> - <el-col :span="2"><el-input/></el-col> + <el-col :span="2"><el-input v-model="titleUploadData.batch"/></el-col> <el-col :span="2"><el-text>璁$畻鏂瑰紡锛�</el-text></el-col> <el-col :span="2"> - <el-select clearable placeholder=" " > - <el-option/> + <el-select v-model="titleUploadData.calculateType" clearable placeholder=" " > + <el-option value="1" label="1"/> </el-select> </el-col> <el-col :span="2"><el-text>*涓氬姟鍛橈細</el-text></el-col> <el-col :span="2"> - <el-select clearable placeholder=" " > - <el-option/> + <el-select + v-model="titleUploadData.salesmanId" + @change = "changeSaleMan" + clearable + placeholder=" " + > + <el-option v-for="item in titleSelectJson['saleMan']" + :key="item.id" + :label="item.basicName" + :value="item.id"/> </el-select> </el-col> <el-col :span="2"><el-text>閾濇潯鏂瑰紡锛�</el-text></el-col> @@ -404,32 +487,31 @@ <el-option v-for="item in titleSelectJson['alType']" :key="item.id" :label="item.basicName" - :value="item.id"/> + :value="item.basicName"/> </el-select> </el-col> </el-row> <el-row> <el-col :span="2"><el-text>鎬婚噾棰濓細</el-text></el-col> - <el-col :span="2"><el-text /></el-col> - + <el-col :span="2"><el-text >{{titleUploadData.money}}</el-text></el-col> <el-col :span="2"><el-text>鍚堝悓缂栧彿锛�</el-text></el-col> - <el-col :span="2"><el-input/></el-col> + <el-col :span="2"><el-input v-model="titleUploadData.contractId"/></el-col> <el-col :span="2"><el-text>瀹㈡埛鎵规锛�</el-text></el-col> - <el-col :span="2"><el-text /></el-col> + <el-col :span="2"><el-input v-model="titleUploadData.customerBatch"/></el-col> <el-col :span="2"><el-text>鑱旂郴浜猴細</el-text></el-col> - <el-col :span="2"><el-input/></el-col> + <el-col :span="2"><el-input v-model="titleUploadData.contacts" /></el-col> <el-col :span="2"><el-text>鑱旂郴鐢佃瘽锛�</el-text></el-col> - <el-col :span="2"><el-input/></el-col> - <el-col :span="2"><el-text>閫佽揣鍦板潃锛�</el-text></el-col> - <el-col :span="2"><el-input/></el-col> + <el-col :span="2"><el-input v-model="titleUploadData.contactNumber"/></el-col> + <el-col :span="2"><el-text >閫佽揣鍦板潃锛�</el-text></el-col> + <el-col :span="2"><el-input v-model="titleUploadData.deliveryAddress"/></el-col> </el-row> - <el-row> - <el-col :span="2"><el-text>鍏朵粬閲戦锛�</el-text></el-col> - <el-col :span="2"><el-text /></el-col> - <el-col :span="2"><el-text>鍏朵粬閲戦澶囨敞锛�</el-text></el-col> - <el-col :span="2"><el-text /></el-col> +<!-- <el-row>--> +<!-- <el-col :span="2"><el-text>鍏朵粬閲戦锛�</el-text></el-col>--> +<!-- <el-col :span="2"><el-text /></el-col>--> +<!-- <el-col :span="2"><el-text>鍏朵粬閲戦澶囨敞锛�</el-text></el-col>--> +<!-- <el-col :span="2"><el-text /></el-col>--> - </el-row> +<!-- </el-row>--> </div> <div class="order-detail"> <vxe-grid @@ -448,12 +530,19 @@ </div> </template> <template #toolbar_buttons> - <vxe-button @click="impotEvent">瀵煎叆</vxe-button> + <vxe-button @click="importEvent">瀵煎叆</vxe-button> </template> </vxe-grid> </div> + <el-dialog v-model="dialogTableVisible" title="鍔犲伐瑕佹眰" style="width: 60%;height:75% "> + <el-input + v-model="titleUploadData.processingNote" + type="textarea" + :autosize="{ minRows: 2, maxRows: 20 }" + /> + </el-dialog> </div> </template> -- Gitblit v1.8.0