完善单位物料功能
parent
82d925fa5e
commit
3976c54e34
|
@ -261,7 +261,7 @@ public class ReportTableService : IDynamicApiController, ITransient
|
|||
if (unit == null)
|
||||
throw new ArgumentNullException(nameof(unitGroup));
|
||||
|
||||
var newReport = new AddReportTableInput() { CreateTime = DateTime.Now, IsDelete = false, OddNumber = DateTime.Now.ToString("yyyyMMddhhmmss"), State = 1 };
|
||||
var newReport = new AddReportTableInput() { CreateTime = DateTime.Now, IsDelete = false, OddNumber = DateTime.Now.ToString("yyyyMMddhhmmss"), State = 0 };
|
||||
var addReport = await Add(newReport);
|
||||
|
||||
var others = units.FindAll(a => a.Rate < unit.Rate);
|
||||
|
@ -436,5 +436,38 @@ public class ReportTableService : IDynamicApiController, ITransient
|
|||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新状态
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
[HttpPost]
|
||||
[ApiDescriptionSettings(Name = "UpdateState")]
|
||||
public async Task UpdateState(AddReportContext input)
|
||||
{
|
||||
var unitGroup = await _repUnitGroup.Detail(new QueryByIdSysUnitGroupInput() { Id = input.UnitGroupId });
|
||||
if (unitGroup == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(unitGroup));
|
||||
}
|
||||
var units = await _repUnit.ListByGroupId(unitGroup.Id);
|
||||
if (units == null || units.Count < 1)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(unitGroup));
|
||||
}
|
||||
var unit = units.Find(a => a.Name == input.Name);
|
||||
if (unit == null)
|
||||
throw new ArgumentNullException(nameof(unitGroup));
|
||||
|
||||
var newReport = new AddReportTableInput() { CreateTime = DateTime.Now, IsDelete = false, OddNumber = DateTime.Now.ToString("yyyyMMddhhmmss"), State = 0 };
|
||||
var addReport = await Add(newReport);
|
||||
|
||||
var others = units.FindAll(a => a.Rate < unit.Rate);
|
||||
|
||||
var entity = input.Adapt<ReportTable>();
|
||||
await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ enum Api {
|
|||
UpdateInvoice = '/api/invoice/update',
|
||||
PageInvoice = '/api/invoice/page',
|
||||
DetailInvoice = '/api/invoice/detail',
|
||||
UpdateAuditStateInvoice = '/api/invoice/UpdateAuditState',
|
||||
}
|
||||
|
||||
// 增加发货通知单
|
||||
|
@ -47,4 +48,13 @@ export const detailInvoice = (id: any) =>
|
|||
data: { id },
|
||||
});
|
||||
|
||||
// 审核汇报单
|
||||
export const updateAuditStateInvoice = (params?: any) =>
|
||||
request({
|
||||
url: Api.UpdateAuditStateInvoice,
|
||||
method: 'post',
|
||||
data: params,
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div class="invoice-container" style="height: 100vh">
|
||||
<el-form :model="ruleForm" ref="ruleFormRef" label-width="auto" >
|
||||
<div class="invoice-container" >
|
||||
<el-form :model="ruleForm" ref="ruleFormRef" label-width="auto" >
|
||||
<el-card class="box-card">
|
||||
<el-row :gutter="35">
|
||||
<el-form-item v-show="false">
|
||||
|
@ -114,8 +114,9 @@
|
|||
<el-card class="box-card" >
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span>明细信息</span>
|
||||
<el-button type="primary" icon="ele-Plus" @click="addColumn">新增物料</el-button>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
<el-table
|
||||
:data="ruleForm.tableData"
|
||||
|
@ -125,30 +126,45 @@
|
|||
row-key="id"
|
||||
border=""
|
||||
>
|
||||
<el-table-column prop="materialsId" label="物料" width="180" align="center">
|
||||
<template #default="scope">
|
||||
<el-select v-model="scope.row.materialsId" placeholder="请选择" autocomplete="off" controls-position="right" clearable @change="materialsChange">
|
||||
<el-table-column prop="materialsId" label="商品名称" width="180" align="center">
|
||||
<template #default="scope">
|
||||
<el-select v-model="scope.row.materialsId" placeholder="请选择" autocomplete="off" controls-position="right" clearable @change="materialsChange(scope.row)">
|
||||
<el-option :label="item.name" :value="item.id" v-for="item, index in materials" :key="index" />
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="unit" label="单位" width="120" show-overflow-tooltip="" >
|
||||
<template #default="scope">
|
||||
<el-select v-model="scope.row.unit" placeholder="请选择" clearable autocomplete="off" >
|
||||
<el-option :label="item.name" :value="item.name" v-for="item, index in units" :key="index" />
|
||||
</el-select>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="count" label="数量" width="100" show-overflow-tooltip="" >
|
||||
<el-table-column prop="codeNum" label="商品编码" width="100" show-overflow-tooltip="" >
|
||||
<template #default="scope">
|
||||
<el-input-number v-model="scope.row.count" autocomplete="off" controls-position="right"/>
|
||||
</template>
|
||||
<el-input v-model="scope.row.codeNum" autocomplete="off" controls-position="right"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="specifications" label="规格型号" width="100" show-overflow-tooltip="" >
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.specifications" autocomplete="off" controls-position="right"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="planQty" label="计划数量" width="120" show-overflow-tooltip="" >
|
||||
<template #default="scope">
|
||||
<el-input-number v-model="scope.row.planQty" autocomplete="off" controls-position="right" @change="qtyChange(scope.row)"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remarks" label="备注" width="140" show-overflow-tooltip="" >
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.remarks" autocomplete="off" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="shipmentQty" label="发货数量" width="120" show-overflow-tooltip="" >
|
||||
<template #default="scope">
|
||||
<el-input-number v-model="scope.row.shipmentQty" autocomplete="off" controls-position="right" @change="qtyChange(scope.row)"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="unit" label="单位" width="120" show-overflow-tooltip="" >
|
||||
<template #default="scope">
|
||||
<el-select v-model="scope.row.unit" placeholder="请选择" autocomplete="off" controls-position="right" clearable>
|
||||
<el-option :label="item.name" :value="item.id" v-for="item, index in units" :key="index" />
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="scanRate" label="行扫描率" width="120" show-overflow-tooltip="" >
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.scanRate" autocomplete="off" controls-position="right" :formatter="formatScanRate"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="140" align="center" fixed="right" show-overflow-tooltip="" >
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="el-icon-delete" @click.prevent="handleColDelete(scope.$index)">删除</el-button>
|
||||
|
@ -156,7 +172,7 @@
|
|||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
<el-button icon="ele-Plus" @click="addColumn">新增物料</el-button>
|
||||
|
||||
<div class="footer" align="right" >
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submit" :disabled="props.disabled">确 定</el-button>
|
||||
|
@ -174,19 +190,18 @@
|
|||
}
|
||||
</style>
|
||||
<script lang="ts" setup>
|
||||
import { ref, onMounted, reactive } from 'vue';
|
||||
import { getDictDataItem as di, getDictDataList as dl } from '/@/utils/dict-utils';
|
||||
import { ElMessage } from "element-plus";
|
||||
import type { FormRules } from "element-plus";
|
||||
import { addInvoice, updateInvoice, detailInvoice } from "/@/api/main/invoice";
|
||||
import { listWarehouse } from '/@/api/main/warehouse';
|
||||
import { listSupplier } from '/@/api/main/supplier';
|
||||
import { listCustom } from '/@/api/main/custom';
|
||||
import { listMaterials, detailMaterials, materialListBySourceId } from '/@/api/main/materials';
|
||||
import { listUnitGroup } from '/@/api/main/unit';
|
||||
import { getCurrentDate } from '/@/utils/formatTime';
|
||||
import {onMounted, ref} from 'vue';
|
||||
import type {FormRules} from "element-plus";
|
||||
import {ElMessage} from "element-plus";
|
||||
import {addInvoice, detailInvoice, updateInvoice} from "/@/api/main/invoice";
|
||||
import {listWarehouse} from '/@/api/main/warehouse';
|
||||
import {listSupplier} from '/@/api/main/supplier';
|
||||
import {listCustom} from '/@/api/main/custom';
|
||||
import {detailMaterials, listMaterials, materialListBySourceId} from '/@/api/main/materials';
|
||||
import {listUnitGroup} from '/@/api/main/unit';
|
||||
import {getCurrentDate} from '/@/utils/formatTime';
|
||||
|
||||
//父级传递来的参数
|
||||
//父级传递来的参数
|
||||
var props = defineProps({
|
||||
title: {
|
||||
type: String,
|
||||
|
@ -209,6 +224,13 @@
|
|||
const units = ref<any>([]);
|
||||
const tableData = ref<any>([]);
|
||||
|
||||
const formatScanRate = (value) => {
|
||||
if (value) {
|
||||
return `${value}%`;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
//自行添加其他规则
|
||||
const rules = ref<FormRules>({
|
||||
// businessType: [{required: true, message: '请输入业务类型!', trigger: 'blur',},],
|
||||
|
@ -255,10 +277,13 @@
|
|||
* 物料值变更
|
||||
* @param clearBindUserId 是否清空
|
||||
*/
|
||||
const materialsChange = async (value : any) => {
|
||||
const materialsChange = async (row : any) => {
|
||||
//ruleForm.value.materialsId=value.id;
|
||||
let material = (await detailMaterials(value)).data.result;
|
||||
let material = (await detailMaterials(row.materialsId)).data.result;
|
||||
//console.log(material);
|
||||
row.specifications = material.specifications;
|
||||
row.codeNum = material.codeNum;
|
||||
row.unit = material.unit;
|
||||
if(material.id){
|
||||
var res = await listUnitGroup(material.unitGroupId ?? 0);
|
||||
units.value = res.data.result ?? [];
|
||||
|
@ -266,9 +291,21 @@
|
|||
|
||||
};
|
||||
|
||||
/**
|
||||
* 数量change事件
|
||||
* @param row
|
||||
*/
|
||||
const qtyChange = async (row : any) => {
|
||||
if(row.shipmentQty && row.shipmentQty) {
|
||||
row.scanRate=Math.round((row.shipmentQty / row.planQty) * 100);
|
||||
}
|
||||
};
|
||||
|
||||
// 增加列
|
||||
function addColumn() {
|
||||
if(!ruleForm.value.tableData){
|
||||
ruleForm.value.tableData=[];
|
||||
}
|
||||
ruleForm.value.tableData.push({
|
||||
materialsId: null,
|
||||
unit: '箱',
|
||||
|
|
|
@ -107,6 +107,8 @@
|
|||
<el-button icon="ele-ZoomIn" @click="changeAdvanceQueryUI" v-if="!showAdvanceQueryUI" style="margin-left:5px;"> 高级查询 </el-button>
|
||||
<el-button icon="ele-ZoomOut" @click="changeAdvanceQueryUI" v-if="showAdvanceQueryUI" style="margin-left:5px;"> 隐藏 </el-button>
|
||||
<el-button type="primary" style="margin-left:5px;" icon="ele-Plus" @click="openAddInvoice" v-auth="'invoice:add'"> 新增 </el-button>
|
||||
<el-button type="primary" style="margin-left:5px;" icon="ele-Check" @click="handleAuditStateChange('1')" > 审核 </el-button>
|
||||
<el-button type="primary" style="margin-left:5px;" icon="ele-CloseBold" @click="handleAuditStateChange('0')" > 反审核 </el-button>
|
||||
|
||||
</el-button-group>
|
||||
</el-form-item>
|
||||
|
@ -122,8 +124,10 @@
|
|||
v-loading="loading"
|
||||
tooltip-effect="light"
|
||||
row-key="id"
|
||||
@sort-change="sortChange"
|
||||
@sort-change="sortChange"
|
||||
@selection-change="handleSelectionChange"
|
||||
border="">
|
||||
<el-table-column type="selection" width="60"/>
|
||||
<el-table-column type="index" label="序号" width="55" align="center"/>
|
||||
<el-table-column prop="codeNum" label="单号" width="140" show-overflow-tooltip="" />
|
||||
<el-table-column prop="startDate" label="业务日期" width="140" show-overflow-tooltip="" />
|
||||
|
@ -140,12 +144,19 @@
|
|||
<el-table-column prop="remarks" label="备注" width="140" show-overflow-tooltip="" />
|
||||
<el-table-column prop="customExpand" label="方案客户拓展" width="90" show-overflow-tooltip="" />
|
||||
<el-table-column prop="sendOutExpand" label="发货拓展" width="140" show-overflow-tooltip="" />
|
||||
<el-table-column prop="state" label="发货状态" width="140" show-overflow-tooltip :formatter="formatState">
|
||||
</el-table-column>
|
||||
<el-table-column prop="state" label="发货状态" width="140" show-overflow-tooltip :formatter="formatState"/>
|
||||
<el-table-column prop="auditState" label="审核状态" width="140" show-overflow-tooltip="" :formatter="formatAuditState"/>
|
||||
|
||||
<el-table-column label="操作" width="140" align="center" fixed="right" show-overflow-tooltip="" v-if="auth('invoice:update') || auth('invoice:delete')">
|
||||
<template #default="scope">
|
||||
<el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditInvoice(scope.row)" v-auth="'invoice:update'"> 编辑 </el-button>
|
||||
<el-button icon="ele-Delete" size="small" text="" type="primary" @click="delInvoice(scope.row)" v-auth="'invoice:delete'"> 删除 </el-button>
|
||||
<div v-if="scope.row.auditState===1">
|
||||
<el-button icon="ele-Edit" size="small" text="" type="primary" @click="openBrowseInvoice(scope.row)" v-auth="'reportDetailTable:update'"> 详情 </el-button>
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-button icon="ele-Edit" size="small" text="" type="primary" @click="openEditInvoice(scope.row)" v-auth="'invoice:update'"> 编辑 </el-button>
|
||||
<el-button icon="ele-Delete" size="small" text="" type="primary" @click="delInvoice(scope.row)" v-auth="'invoice:delete'"> 删除 </el-button>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -167,7 +178,7 @@
|
|||
</el-card>
|
||||
</div>
|
||||
<div v-else class="reportDetailTable-container">
|
||||
<el-card >
|
||||
<el-card style="height: 100vh;overflow-y:scroll">
|
||||
<editDialog
|
||||
ref="editDialogRef"
|
||||
:row = "state.editRow"
|
||||
|
@ -188,7 +199,8 @@ import {reactive, ref} from "vue";
|
|||
|
||||
import printDialog from '/@/views/labelPrinting/print/component/hiprint/preview.vue'
|
||||
import editDialog from '/@/views/inventoryManagement/invoice/component/editDialog.vue'
|
||||
import { pageInvoice, deleteInvoice } from '/@/api/main/invoice';
|
||||
import {pageInvoice, deleteInvoice, updateAuditStateInvoice} from '/@/api/main/invoice';
|
||||
import {updateStateReportDetailTable} from "/@/api/main/reportDetailTable";
|
||||
|
||||
|
||||
const showAdvanceQueryUI = ref(false);
|
||||
|
@ -210,6 +222,20 @@ import {reactive, ref} from "vue";
|
|||
|
||||
const printInvoiceTitle = ref("");
|
||||
const editInvoiceTitle = ref("");
|
||||
const multipleSelection = ref([])
|
||||
const handleSelectionChange = (val: []) => {
|
||||
multipleSelection.value = val
|
||||
}
|
||||
//修改审核状态
|
||||
const handleAuditStateChange = async (val: any) => {
|
||||
if(multipleSelection.value.length === 0){ return ElMessage.error("至少选择一条数据")}
|
||||
let ids = [] as any;
|
||||
multipleSelection.value.forEach(item => {
|
||||
ids.push(item.id);
|
||||
})
|
||||
await updateAuditStateInvoice({ids,auditStatus:val});
|
||||
await handleQuery();
|
||||
};
|
||||
|
||||
// 改变高级查询的控件显示状态
|
||||
const changeAdvanceQueryUI = () => {
|
||||
|
@ -220,6 +246,10 @@ import {reactive, ref} from "vue";
|
|||
return cellValue === 1 ? '装货中' : '未装货';
|
||||
}
|
||||
|
||||
const formatAuditState = (row, column, cellValue) => {
|
||||
return cellValue === 1 ? '已审核' : '未审核';
|
||||
}
|
||||
|
||||
// 关闭页面
|
||||
const close = () => {
|
||||
state.editShow = false;
|
||||
|
@ -261,6 +291,13 @@ import {reactive, ref} from "vue";
|
|||
state.editDisabled = false;
|
||||
};
|
||||
|
||||
//打开详情界面
|
||||
const openBrowseInvoice = (row: any) => {
|
||||
state.editRow = row;
|
||||
state.editShow = true;
|
||||
state.editDisabled = true;
|
||||
};
|
||||
|
||||
// 删除
|
||||
const delInvoice = (row: any) => {
|
||||
ElMessageBox.confirm(`确定要删除吗?`, "提示", {
|
||||
|
|
Loading…
Reference in New Issue