| | |
| | | import {ElMessage} from "element-plus" |
| | | import request from "@/utils/request" |
| | | import deepClone from "@/utils/deepClone" |
| | | |
| | | import useUserInfoStore from '@/stores/userInfo' |
| | | const userStore = useUserInfoStore() |
| | | const router = useRouter() |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | |
| | | 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: {}, |
| | |
| | | ElMessage.error('没有表格数据!') |
| | | return |
| | | } |
| | | console.log($grid.getTableData().tableData) |
| | | if ($grid) { |
| | | const errMap = await $grid.validate(true) |
| | | if (errMap) { |
| | |
| | | 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, |
| | | }) |
| | | |
| | | //定义接收加载表头下拉数据 |
| | |
| | | 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() + |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | 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'] |
| | |
| | | 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) |
| | | } |
| | |
| | | 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> |
| | | |
| | |
| | | <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> |
| | |
| | | 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> |
| | |
| | | <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 |
| | |
| | | </div> |
| | | </template> |
| | | <template #toolbar_buttons> |
| | | <vxe-button @click="impotEvent">导入</vxe-button> |
| | | <vxe-button @click="importEvent">导入</vxe-button> |
| | | </template> |
| | | |
| | | |