From 43b705c29b0e089bdc1cf1cc9076b83f500b1ff5 Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期四, 14 十二月 2023 11:31:47 +0800 Subject: [PATCH] modified: src/const/crud/customerOrder/customerOrderForm.js modified: src/views/plan/customerorder/sample-customerorder-form.vue modified: src/views/technology/structure/single-structure-form.vue --- src/views/plan/customerorder/sample-customerorder-form.vue | 466 +++++++++++++++++++++++----------------------------------- 1 files changed, 184 insertions(+), 282 deletions(-) diff --git a/src/views/plan/customerorder/sample-customerorder-form.vue b/src/views/plan/customerorder/sample-customerorder-form.vue index 8f4892b..8b895f7 100644 --- a/src/views/plan/customerorder/sample-customerorder-form.vue +++ b/src/views/plan/customerorder/sample-customerorder-form.vue @@ -52,24 +52,16 @@ </el-form-item> </el-col> <el-col :span="6"> - <el-form-item label="浜嬩笟閮�" prop="salesDepartment"> - <el-input - v-model="dataForm.salesDepartment" - placeholder="" - ></el-input> + <el-form-item label="鐪佷唤" prop="province"> + <el-input v-model="dataForm.province" placeholder=""></el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="6"> - <el-form-item label="鐪佷唤" prop="province"> - <el-input v-model="dataForm.province" placeholder=""></el-input> - </el-form-item> - </el-col> - <el-col :span="6"> <el-form-item label="涓氬姟鍛�" prop="salesMan"> - <el-select v-model="dataForm.salesMan" style="width:100%"> - <el-option v-for="(item,index) in staffOptions" :key="index" :value="item.staff_no" :label="item.staffName"/> + <el-select @change="selsctionSales" clearable filterable v-model="salesSelectData" style="width:100%"> + <el-option v-for="(item,index) in staffOptions" :key="index" :value="item.staffNo+','+item.staffName" :label="item.staffName"/> </el-select> </el-form-item> </el-col> @@ -77,6 +69,14 @@ <el-form-item label="姝f湰鐘舵��" prop="originalContractStatus"> <el-input v-model="dataForm.originalContractStatus" + placeholder="" + ></el-input> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="鍚堝悓姝f湰鐘舵��" prop="returnStatus"> + <el-input + v-model="dataForm.returnStatus" placeholder="" ></el-input> </el-form-item> @@ -91,14 +91,6 @@ <el-col :span="6"> <el-form-item label="瀹㈡埛缂栫爜" prop="customerNo"> <el-input v-model="dataForm.customerNo" placeholder=""></el-input> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item label="鍚堝悓姝f湰鐘舵��" prop="returnStatus"> - <el-input - v-model="dataForm.returnStatus" - placeholder="" - ></el-input> </el-form-item> </el-col> <el-col :span="6"> @@ -123,8 +115,6 @@ </el-date-picker> </el-form-item> </el-col> - </el-row> - <el-row> <el-col :span="6"> <el-form-item label="浜よ揣鏃ユ湡" prop="deliveryDate"> <el-date-picker @@ -137,201 +127,46 @@ </el-form-item> </el-col> </el-row> + <el-row> + <el-col :span="6"> + <el-form-item label="璁㈠崟澶囨敞" prop="comment"> + <el-input + v-model="dataForm.comment" + style="width: 100%" + type="textarea" + :rows="1" + > + </el-input> + </el-form-item> + </el-col> + </el-row> </el-form> </div> - <el-divider - ><span style="font-weight:bold;font-size:16px;">璁㈠崟琛�</span></el-divider - > - <div class="l-mes normal-form"> - <el-row :gutter="20"> - <el-col :span="2"> - <span>闆朵欢鍙�</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.partNo" - placeholder="" - readonly - > - <el-button - slot="append" - icon="el-icon-search" - @click="openPartDialog()" - ></el-button> - </el-input> - </el-col> - <el-col :span="2"> - <span>鍗曚綅</span> - </el-col> - <el-col :span="6"> - <el-select - v-model="dataForm.customerOrder.unit" - placeholder="" - style="width: 100%" - > - <el-option - v-for="item in units" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-col> - <el-col :span="2"> - <span>鏁伴噺</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.buyQtyDue" - placeholder="" - ></el-input> - </el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="2"> - <span>鐢靛帇绛夌骇</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.voltAgeClass" - placeholder="" - ></el-input> - </el-col> - <el-col :span="2"> - <span>浜у搧鍚嶇О</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.productName" - placeholder="" - ></el-input> - </el-col> - <el-col :span="2"> - <span>鍒堕�犲睘鎬�</span> - </el-col> - <el-col :span="6"> - <el-select - v-model="dataForm.customerOrder.manufactureAttr" - placeholder="" - style="width: 100%" - disabled - > - <el-option - v-for="item in manufactureAttrs" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> - </el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="2"> - <span>澶栨姢棰滆壊</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.outerColor" - placeholder="" - ></el-input> - </el-col> - <el-col :span="2"> - <span>闆朵欢瑙勬牸</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.customerPartSpec" - placeholder="" - ></el-input> - </el-col> - <el-col :span="2"> - <span>鍖呰瑕佹眰</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.packageRequire" - placeholder="" - ></el-input> - </el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="2"> - <span>璐ㄩ噺瑕佹眰</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.qualityRequire" - placeholder="" - ></el-input> - </el-col> - <el-col :span="2"> - <span>鐢熶骇闇�姹傝鏄�</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.otherProductRequire" - placeholder="" - ></el-input> - </el-col> - <el-col :span="2"> - <span>绯荤粺</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.divisionSystem" - placeholder="" - ></el-input> - </el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="2"> - <span>鏀惰揣鍦板潃</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.shippingAddress" - placeholder="" - ></el-input> - </el-col> - <el-col :span="2"> - <span>涓氬姟鍛�</span> - </el-col> - <el-col :span="6"> - <el-select v-model="dataForm.customerOrder.salesmanName" style="width:100%"> - <el-option v-for="(item,index) in staffOptions" :key="index" :value="item.staff_no" :label="item.staffName"/> - </el-select> - </el-col> - <el-col :span="2"> - <span>鐩橀暱瑕佹眰</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.lengthRequirement" - placeholder="" - ></el-input> - </el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="2"> - <span>澶囨敞</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.remark" - placeholder="" - ></el-input> - </el-col> - <el-col :span="2"> - <span>浜у搧绫诲瀷</span> - </el-col> - <el-col :span="6"> - <el-input - v-model="dataForm.customerOrder.productType" - placeholder="" - ></el-input> - </el-col> - </el-row> + <el-divider> + <span style="font-weight:bold;font-size:16px;">璁㈠崟琛�</span> + </el-divider> + <div> + <avue-crud ref="crud" + class="l-mes" + show-hide="false" + :option="option" + :data="tableData"> + <template slot="partNo" slot-scope="scope"> + <el-input v-model="scope.row.partNo" placeholder="鏌ヨ闆朵欢鍙�" readonly> + <el-button slot="append" icon="el-icon-search" @click="openPartDialog(scope.row.$index)"></el-button> + </el-input> + </template> + <template slot="otcUnit" slot-scope="scope"> + <el-select v-model="scope.row.otcUnit" placeholder="璇烽�夋嫨鍗曚綅" style="width: 100%"> + <el-option + v-for="item in units" + :key="item.value" + :label="item.label" + :value="item.value" /> + </el-select> + </template> + </avue-crud> </div> <span slot="footer" class="dialog-footer"> @@ -369,20 +204,82 @@ color: #c0c4cc; margin: -1px 0; } +.l-mes .el-input-group__append, +.l-mes .el-input-group__prepend { + padding: 0; + border-top: none; + border-right: none; + border-left: none; + border-radius: 0; + background-color: transparent; +} + +.l-mes .el-input-group__append .el-button, +.l-mes .el-input-group__prepend .el-button { + padding: 0; + width: 25px; + border: none !important; + line-height: 28px; + color: #c0c4cc; + margin: -1px 0; +} + +.l-mes .el-input-group__append .el-button i, +.l-mes .el-input-group__prepend .el-button i { + vertical-align: middle; +} </style> <script> import { addObj } from '@/api/plan/customer' import { remote } from '@/api/admin/dict' import PartDialog from '@/views/common/part.vue' -import { validateSixDecimal } from '@/util/validate' +import {dateFormat} from '@/util/date' import { chooseStaff } from '@/api/admin/productType' +import { tableOption } from '@/const/crud/customerOrder/customerOrderForm' export default { components: { PartDialog }, + watch:{ + visible(newVal){ + if(!newVal){ + this.tableData = [{ + "$cellEdit": true, + "$index": 0, + "partNo": "", + "customerPartSpec": "", + "manufactureAttr": "", + "productName": "", + "productType": "", + "otcUnit": "", + "buyQtyDue": "", + "shippingAddress": "", + "remark": "", + "isTrusted": true + }] + } + } + }, data() { return { + salesSelectData: null, + currentSelectRow: 0, + option: tableOption, + tableData: [{ + "$cellEdit": true, + "$index": 0, + "partNo": "", + "customerPartSpec": "", + "manufactureAttr": "", + "productName": "", + "productType": "", + "otcUnit": "", + "buyQtyDue": "", + "shippingAddress": "", + "remark": "", + "isTrusted": true + }], staffOptions: [], title: '', isFullScreen: false, @@ -390,41 +287,22 @@ buttonDisable: false, showPart: false, dataForm: { - id: 0, contractNo: null, customerName: null, - entityName: null, - salesDepartment: null, - province: null, - salesMan: null, - originalContractStatus: null, - isCp: null, customerNo: null, - returnStatus: null, - placeOrderDate: null, - factoryPlaceOrderDate: null, + customerOrderVOList: [], deliveryDate: null, - customerOrder: { - partNo: null, - unit: null, - buyQtyDue: null, - voltAgeClass: null, - productName: null, - manufactureAttr: 'S', - outerColor: null, - customerPartSpec: null, - printType: null, - printingRequirements: null, - packageRequire: null, - qualityRequire: null, - otherProductRequire: null, - divisionSystem: null, - shippingAddress: null, - salesmanName: null, - lengthRequirement: null, - remark: null, - productType: null - } + entityName: null, + factoryPlaceOrderDate: null, + salesDepartment: null, + isCp: null, + originalContractStatus: null, + placeOrderDate: null, + province: null, + returnStatus: null, + salesMan: null, + salerWorkCode: null, + comment: null }, dataRule: {}, units: [], @@ -437,6 +315,13 @@ this.getStaffOptions(); }, methods: { + selsctionSales(data){ + if(data){ + let arr = data.split(",") + this.dataForm.salesMan = arr[1] + this.dataForm.salerWorkCode = arr[0] + } + }, getStaffOptions(){ chooseStaff().then((response)=>{ this.staffOptions = response.data.data @@ -450,66 +335,83 @@ }) }, initDataForm() { - this.dataForm.id = 0 this.dataForm.contractNo = null this.dataForm.customerName = null this.dataForm.entityName = null - this.dataForm.salesDepartment = null this.dataForm.province = null this.dataForm.salesMan = null this.dataForm.originalContractStatus = null this.dataForm.isCp = null this.dataForm.customerNo = null this.dataForm.returnStatus = null - this.dataForm.placeOrderDate = null - this.dataForm.factoryPlaceOrderDate = null + this.dataForm.placeOrderDate = dateFormat(new Date(),'yyyy-MM-dd hh:mm:ss') + this.dataForm.factoryPlaceOrderDate = dateFormat(new Date(),'yyyy-MM-dd hh:mm:ss') this.dataForm.deliveryDate = null - this.dataForm.customerOrder.partNo = null - this.dataForm.customerOrder.unit = null - this.dataForm.customerOrder.buyQtyDue = null - this.dataForm.customerOrder.voltAgeClass = null - this.dataForm.customerOrder.productName = null - this.dataForm.customerOrder.manufactureAttr = 'S' - this.dataForm.customerOrder.outerColor = null - this.dataForm.customerOrder.customerPartSpec = null - this.dataForm.customerOrder.printType = null - this.dataForm.customerOrder.printingRequirements = null - this.dataForm.customerOrder.packageRequire = null - this.dataForm.customerOrder.qualityRequire = null - this.dataForm.customerOrder.otherProductRequire = null - this.dataForm.customerOrder.divisionSystem = null - this.dataForm.customerOrder.shippingAddress = null - this.dataForm.customerOrder.salesmanName = null - this.dataForm.customerOrder.lengthRequirement = null - this.dataForm.customerOrder.remark = null + this.dataForm.comment = null + this.dataForm.customerOrderVOList = [{ + "$cellEdit": true, + "$index": 0, + "partNo": "", + "customerPartSpec": "", + "manufactureAttr": "", + "productName": "", + "productType": "", + "otcUnit": "", + "buyQtyDue": "", + "shippingAddress": "", + "remark": "", + "isTrusted": true + }] }, // 琛ㄥ崟鎻愪氦 dataFormSubmit() { - this.buttonDisable = true - this.$refs.dataForm.validate((valid) => { + const _than = this + let isError = false + _than.buttonDisable = true + _than.tableData.forEach(ele=>{ + if(ele.buyQtyDue==null || ele.buyQtyDue=='' || ele.buyQtyDue==undefined){ + _than.$message.error("闆朵欢鏁伴噺涓嶈兘涓虹┖!") + isError = true + }else{ + var reg = /^\d+$/ + if(!reg.test(ele.buyQtyDue)){ + _than.$message.error("闆朵欢鏁伴噺绫诲瀷蹇呴』鏄暟瀛�!") + isError = true + } + } + }) + if(isError){ + _than.buttonDisable = false + return + } + _than.$refs.dataForm.validate((valid) => { if (valid) { - addObj(this.dataForm) - .then((data) => { - this.$message.success('娣诲姞鎴愬姛') - this.visible = false - this.buttonDisable = false - this.$emit('refreshDataList', 1) - }) - .catch((error) => { - this.buttonDisable = false + _than.dataForm.customerOrderVOList = _than.tableData + addObj(_than.dataForm).then((data) => { + _than.$message.success('娣诲姞鎴愬姛') + _than.initDataForm(); + _than.visible = false + _than.buttonDisable = false + _than.$emit('refreshDataList', 1) + }).catch((error) => { + _than.buttonDisable = false }) } else { - this.buttonDisable = false + _than.buttonDisable = false } }) }, // 闆朵欢閫夋嫨 - openPartDialog() { + openPartDialog(index) { + this.currentSelectRow = index this.showPart = true }, selectPart(part) { + const index = this.currentSelectRow if (part) { - this.dataForm.customerOrder.partNo = part.partNo + this.tableData[index].partNo = part.partNo + this.tableData[index].customerPartSpec = part.specs + this.tableData[index].productName = part.partName } }, // 鍏ㄥ睆 -- Gitblit v1.9.3