采购收货前端
This commit is contained in:
parent
6054051690
commit
8fda766aea
@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.chanko.yunxi</groupId>
|
||||
<artifactId>mes</artifactId>
|
||||
<version>2.0.0-jdk8-snapshot</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>${project.artifactId}</name>
|
||||
<description>芋道项目基础脚手架</description>
|
||||
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
||||
<modules>
|
||||
<module>mes-dependencies</module>
|
||||
<module>mes-framework</module>
|
||||
<module>mes-server</module>
|
||||
<module>mes-module-system</module>
|
||||
<module>mes-module-infra</module>
|
||||
<module>mes-module-heli</module>
|
||||
</modules>
|
||||
<properties>
|
||||
<lombok.version>1.18.30</lombok.version>
|
||||
<java.version>1.8</java.version>
|
||||
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
|
||||
<maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>
|
||||
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||
<mapstruct.version>1.5.5.Final</mapstruct.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
|
||||
<revision>2.0.0-jdk8-snapshot</revision>
|
||||
<spring.boot.version>2.7.17</spring.boot.version>
|
||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||
</properties>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.chanko.yunxi</groupId>
|
||||
<artifactId>mes-dependencies</artifactId>
|
||||
<version>2.0.0-jdk8-snapshot</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>huaweicloud</id>
|
||||
<name>huawei</name>
|
||||
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>aliyunmaven</id>
|
||||
<name>aliyun</name>
|
||||
<url>https://maven.aliyun.com/repository/public</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>${maven-surefire-plugin.version}</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>${maven-compiler-plugin.version}</version>
|
||||
<configuration>
|
||||
<annotationProcessorPaths>
|
||||
<path>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
<version>${spring.boot.version}</version>
|
||||
</path>
|
||||
<path>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>${lombok.version}</version>
|
||||
</path>
|
||||
<path>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct-processor</artifactId>
|
||||
<version>${mapstruct.version}</version>
|
||||
</path>
|
||||
</annotationProcessorPaths>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>flatten-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>flatten-maven-plugin</artifactId>
|
||||
<version>${flatten-maven-plugin.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>flatten</id>
|
||||
<phase>process-resources</phase>
|
||||
<goals>
|
||||
<goal>flatten</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>flatten.clean</id>
|
||||
<phase>clean</phase>
|
||||
<goals>
|
||||
<goal>clean</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<flattenMode>resolveCiFriendliesOnly</flattenMode>
|
||||
<updatePomFile>true</updatePomFile>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@ -257,7 +257,7 @@ public interface PurchaseOrderNoDetailMapper extends BaseMapperX<PurchaseOrderNo
|
||||
MPJLambdaWrapper<PurchaseOrderNoDetailDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(PurchaseOrderNoDetailDO.class)
|
||||
.select("t.composition as compositionName","t.purchase_rem_amount as purchaseRemAmounts","mat.code as matCode","pro.name as procedureName","bom.blueprint_no as blueprintNo","psub.id as projectSubId")
|
||||
.select("ROUND(t.estimated_price / t.purchase_amount, 1) as unitPrice","bom.spec as matSpec")
|
||||
.select("ROUND(t.estimated_price / t.purchase_amount, 2) as unitPrice","bom.spec as matSpec")
|
||||
.select("s.brief as supplierName")
|
||||
.leftJoin(PurchaseOrderNoDO.class, "pb", PurchaseOrderNoDO::getId, PurchaseOrderBoomDO::getPurchaseOrderId)
|
||||
.leftJoin(SupplierDO.class, "s", SupplierDO::getId, PurchaseOrderNoDO::getSupplierId)
|
||||
|
||||
@ -64,7 +64,7 @@ v-model="queryParams.supplierName" placeholder="供应商" clearable @keyup.ente
|
||||
<el-form-item label="收货状态" prop="receivingStatus">
|
||||
<el-select v-model="queryParams.receivingStatus" placeholder="下拉选择" clearable class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PURCHASE_RECEIVING_STATUS)" :key="dict.value"
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PURCHASE_RECEIVING_STATUS).filter(item=>item.value!=2)" :key="dict.value"
|
||||
:label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@ -92,13 +92,13 @@ v-model="queryParams.supplierName" placeholder="供应商" clearable @keyup.ente
|
||||
<el-card class="hl-incard">
|
||||
<el-form ref="subFormRef" :model="list" v-loading="formLoading" label-width="0" >
|
||||
<el-table
|
||||
v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table" ref="multipleTableRef" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="收货状态" align="center" prop="receivingStatus" min-width="120">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.HELI_PURCHASE_RECEIVING_STATUS" :value="scope.row.receivingStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table" ref="multipleTableRef" show-summary :summary-method="getSummaries" @selection-change="handleSelectionChange" :row-class-name="tableRowClassName">
|
||||
<el-table-column type="selection" width="80" />
|
||||
<!-- <el-table-column label="收货状态" align="center" prop="receivingStatus" min-width="120">-->
|
||||
<!-- <template #default="scope">-->
|
||||
<!-- <dict-tag :type="DICT_TYPE.HELI_PURCHASE_RECEIVING_STATUS" :value="scope.row.receivingStatus" />-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column prop="projectSubCode" min-width="150" label="子项目编码" align="center"/>
|
||||
<el-table-column prop="blueprintNo" min-width="100" label="图号" align="center"/>
|
||||
<el-table-column prop="boomName" min-width="120" label="零件名称" align="center"/>
|
||||
@ -106,8 +106,8 @@ v-model="queryParams.supplierName" placeholder="供应商" clearable @keyup.ente
|
||||
<el-table-column prop="procedureName" min-width="120" label="工序" align="center"/>
|
||||
<el-table-column prop="compositionName" min-width="100" label="材质" align="center"/>
|
||||
<el-table-column prop="purchaseAmount" min-width="100" label="采购数量" align="center" />
|
||||
<el-table-column prop="purchaseRemAmount" min-width="100" label="剩余数量" align="center"/>
|
||||
<el-table-column prop="purchaseAmount" min-width="180" align="center">
|
||||
<!-- <el-table-column prop="purchaseRemAmount" min-width="100" label="剩余数量" align="center"/>-->
|
||||
<el-table-column prop="purchaseRemAmounts" min-width="180" align="center">
|
||||
<template #header><span class="hl-table_header">*</span>入库数量</template>
|
||||
<template #default="scope">
|
||||
<el-form-item :prop="`${scope.$index}.purchaseRemAmounts`" class="mb-0px!">
|
||||
@ -115,6 +115,18 @@ v-model="queryParams.supplierName" placeholder="供应商" clearable @keyup.ente
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="estimatedPrice" min-width="180" label="单价" align="center">
|
||||
<template #header>单价</template>
|
||||
<template #default="scope">
|
||||
<el-form-item :prop="`${scope.$index}.unitPrice`" class="mb-0px!">
|
||||
<el-input-number
|
||||
style="width: 100%" v-model="scope.row.unitPrice" placeholder="单价" :min="0" :precision="2"
|
||||
|
||||
@change="changeUnitPrice(scope.row)"
|
||||
/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="estimatedPrice" min-width="180" label="预估总价(元)" align="center">
|
||||
<template #header><span class="hl-table_header">*</span>预估总价(元)</template>
|
||||
<template #default="scope">
|
||||
@ -123,20 +135,21 @@ v-model="queryParams.supplierName" placeholder="供应商" clearable @keyup.ente
|
||||
style="width: 100%" v-model="scope.row.estimatedPrice" placeholder="预估总价" :min="0" :precision="2"
|
||||
@input="(val)=>handleInput(val,scope.row)"
|
||||
@keyup.enter="(e)=>handleEnter(e,scope.row)"
|
||||
@change="changeEstimatedPrice(scope.row)"
|
||||
:id="'estimatedPrice'+scope.row.id"
|
||||
/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" min-width="150" label="订单生成日期" align="center" :formatter="dateFormatter1"/>
|
||||
<el-table-column prop="requireTime" min-width="150" label="需要完成日期" align="center" :formatter="dateFormatter1"/>
|
||||
<!-- <el-table-column prop="arriveTime" min-width="150" label="收货日期" align="center" :formatter="dateFormatter1" />-->
|
||||
<!-- <el-table-column prop="requireTime" min-width="150" label="需要完成日期" align="center" :formatter="dateFormatter1"/>-->
|
||||
<el-table-column prop="arriveTime" min-width="150" label="收货日期" align="center" :formatter="dateFormatter1" />
|
||||
<el-table-column prop="description" min-width="150" label="技术要求" align="center"/>
|
||||
<el-table-column prop="theWeight" min-width="100" label="理论重量" align="center"/>
|
||||
<!-- <el-table-column prop="theWeight" min-width="100" label="理论重量" align="center"/>-->
|
||||
<el-table-column label="操作" align="center" fixed="right" min-width="200">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" v-if="scope.row.receivingStatus!=3" @click="receiveGood(scope.row)">
|
||||
收货
|
||||
<el-button link type="danger" v-if="scope.row.receivingStatus!=3" @click="receiveGood(scope.row)">
|
||||
未收货
|
||||
</el-button>
|
||||
<el-button link type="primary" @click="updateFrom(scope.row)" v-if="scope.row.receivingStatus==3">
|
||||
总价修改
|
||||
@ -210,6 +223,13 @@ const queryParams = reactive({
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
const changeUnitPrice =(row:any)=>{
|
||||
row.estimatedPrice=parseFloat((row.unitPrice* row.purchaseAmount).toFixed(2))
|
||||
|
||||
}
|
||||
const changeEstimatedPrice =(row:any)=>{
|
||||
row.unitPrice=parseFloat((row.estimatedPrice/row.purchaseAmount).toFixed(2))
|
||||
}
|
||||
const handleInput = (val: number, row: PurchaseOrderNoDetailApi.PurchaseOrderNoDetailVO) => {
|
||||
console.log(val, 'val');
|
||||
//输入判断当前行是否选中如无将当前行选中
|
||||
@ -239,6 +259,75 @@ const handleEnter = (e: KeyboardEvent, row: PurchaseOrderNoDetailApi.PurchaseOrd
|
||||
console.log(input, 'input');
|
||||
|
||||
|
||||
}
|
||||
const getSummaries = (param: SummaryMethodProps) => {
|
||||
const summaryField = ["purchaseRemAmounts"];
|
||||
const { columns, data } = param;
|
||||
const sums = [];
|
||||
columns.forEach((column, index) => {
|
||||
if (index === 0) {
|
||||
sums[index] = '合计';
|
||||
return;
|
||||
}
|
||||
if (!summaryField.includes(column.property)) {
|
||||
sums[index] = '';
|
||||
return;
|
||||
}
|
||||
const values = data.map(item => Number(item[column.property]));
|
||||
if (!values.every(value => isNaN(value))) {
|
||||
sums[index] = values.reduce((prev, curr) => {
|
||||
const value = Number(curr);
|
||||
if (!isNaN(value)) {
|
||||
return floatAdd(prev, curr);
|
||||
} else {
|
||||
return prev;
|
||||
}
|
||||
}, 0);
|
||||
const thousandsField = [];
|
||||
if (thousandsField.includes(column.property)) {
|
||||
sums[index] = thousandsFormat(sums[index]);
|
||||
}
|
||||
} else {
|
||||
sums[index] = '';
|
||||
}
|
||||
});
|
||||
// const sumValue = computed(() => {
|
||||
// return list.value.reduce((sum, item) => sum + item.quantityLent, 0);
|
||||
// });
|
||||
// const sums = ['合计','','','','','','','',sumValue];
|
||||
return sums;
|
||||
}
|
||||
const floatAdd = (a, b) => {
|
||||
var c, d, e;
|
||||
if (undefined === a || null === a || "" === a || isNaN(a)) { a = 0; }
|
||||
if (undefined === b || null === b || "" === b || isNaN(b)) { b = 0; }
|
||||
try {
|
||||
c = a.toString().split(".")[1].length;
|
||||
} catch (f) {
|
||||
c = 0;
|
||||
}
|
||||
try {
|
||||
d = b.toString().split(".")[1].length;
|
||||
} catch (f) {
|
||||
d = 0;
|
||||
}
|
||||
e = Math.pow(10, Math.max(c, d));
|
||||
return (floatMul(a, e) + floatMul(b, e)) / e;
|
||||
};
|
||||
const floatMul = (a, b) => {
|
||||
var c = 0,
|
||||
d = a.toString(),
|
||||
e = b.toString();
|
||||
try {
|
||||
c += d.split(".")[1].length;
|
||||
} catch (f) {}
|
||||
try {
|
||||
c += e.split(".")[1].length;
|
||||
} catch (f) {}
|
||||
return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
|
||||
}
|
||||
const tableRowClassName = ({ row }) => {
|
||||
return row.isSelected ? 'selected-row' : '';
|
||||
}
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
@ -246,7 +335,9 @@ const getList = async () => {
|
||||
try {
|
||||
queryParams.ids = undefined
|
||||
const data = await PurchaseOrderNoDetailApi.getReceiveGoodDetail(queryParams)
|
||||
|
||||
list.value.forEach(item=>{
|
||||
item.isSelected=false
|
||||
})
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
@ -279,6 +370,19 @@ const multipleTableRef: any = ref<InstanceType<typeof ElTable>>()
|
||||
const multipleSelection: any = ref([])
|
||||
|
||||
const handleSelectionChange = (val: PurchaseOrderApi.PurchaseOrderVO[]) => {
|
||||
// 第一步:重置所有行的 isSelected 为 false
|
||||
list.value.forEach(row => {
|
||||
row.isSelected = false;
|
||||
});
|
||||
|
||||
// 第二步:将当前选中行的 isSelected 设为 true
|
||||
val.forEach(selectedRow => {
|
||||
// 找到对应行并更新状态(通过唯一标识符匹配更准确)
|
||||
const targetRow = list.value.find(row => row.id === selectedRow.id);
|
||||
if (targetRow) {
|
||||
targetRow.isSelected = true;
|
||||
}
|
||||
});
|
||||
multipleSelection.value = val
|
||||
|
||||
}
|
||||
@ -339,3 +443,9 @@ onMounted(async () => {
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
<style>
|
||||
.selected-row {
|
||||
background-color: #ffe6cc !important;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user