中英文翻译

This commit is contained in:
刘晓鹏 2025-04-14 17:40:58 +08:00
parent 39937a1602
commit 2ab2d3df93
8 changed files with 360 additions and 300 deletions

View File

@ -1,49 +1,68 @@
export default {
index:{
POList:'PO List',
PODetails :'PO Details ',
DeliveryNoteList:'Delivery Note List',
index: {
/*销售订单及其明细*/
POList: 'PO List',
PODetails: 'PO Details ',
DeliveryNoteList: 'Delivery Note List',
DocNumber: 'PO Number',
DocStatus: 'PO Status',
normal: 'Normal',
closed: 'Closed',
StartDate: 'Start Date',
EndDate: 'End Date',
search: 'Search',
reset: 'Reset',
selected: 'Selected',
items: 'items',
proceed: 'proceed',
date: 'Date',
status: 'Status',
unclosed: 'Unclosed',
partNumber: 'Part Number',
materialName: 'Material Name',
unit: 'Unit',
unit1: 'Unit',
qty: 'QTY',
requestDate: 'Request Date',
receivedQTY: 'Acc. Delivery QTY',
unreceivedQTY: 'Unreceived QTY',
earliestDeliveryDate: 'Earliest Delivery Date',
latestDeliveryDate: 'Latest Delivery Date',
view: 'view',
batchUpdateEarliestDeliveryDate: 'Batch update Earliest Delivery Date',
batchUpdateLatestDeliveryDate: 'Batch update Latest Delivery Date',
specification:'Specification',
DocNumber:'PO Number',
DocStatus:'PO Status',
normal:'Normal',
closed:'Closed',
StartDate:'Start Date',
EndDate:'End Date',
search:'Search',
reset:'Reset',
selected:'Selected',
items:'items',
proceed:'proceed',
date:'Date',
status:'Status',
unclosed:'Unclosed',
partNumber:'Part Number',
materialName:'Material Name',
unit:'Unit',
qty:'QTY',
deliveryDate:'Delivery Date',
receivedQTY:'Received QTY',
unreceivedQTY:'Unreceived QTY',
earliestDeliveryDate:'Earliest Delivery Date',
latestDeliveryDate:'Latest Delivery Date',
view:'view',
batchUpdateEarliestDeliveryDate:'Batch update Earliest Delivery Date',
batchUpdateLatestDeliveryDate:'Batch update Latest Delivery Date',
}
/*发货订单及其明细*/
startDate: 'Start Date',
endDate: 'End Date',
deliveryDate: 'Delivery Date',
deliveryNote: 'Delivery Note #',
maxcessLot: 'Maxcess Lot #',
supplierLot: 'Supplier Lot #',
supplierCode: 'Supplier Code',
supplierName: 'Supplier Name',
deliveryQTY: 'Delivery QTY',
POQTY: 'PO QTY',
print: 'Print',
modifyPassword:'Modify password',
newPassord:'New passord',
cancel:'Cancel ',
confirm :'Confirm',
passwordChangedSuccessfully:'Password changed successfully',
emptyPasswordIsNotAllowed:'Empty password is not allowed.',
pleaseConfirmTheDateChange:' Please confirm the date change',
passwordChangedFailed:'Password changed failed',
shipmentQTY:'Shipment QTY',
invoiceNumber:'Invoice number',
deliveryNote1:'Delivery Note',
deliveryNoteNumber:'Delivery Note Number',
PO:'PO #',
shipper:'Shipper',
year:'Year',
month:'Mnth',
day:'Day',
changedSuccessfully:'changed successfully',
PleaseSelectItemsFirstly:'Please select items firstlys'
},
};

View File

@ -1,49 +1,69 @@
export default {
index:{
POList:'采购管理列表',
PODetails :'采购订单明细',
DeliveryNoteList:'送货管理列表',
index: {
/*销售订单及其明细*/
POList: '采购管理列表',
PODetails: '采购订单明细',
DeliveryNoteList: '送货管理列表',
DocNumber: '单据编号',
DocStatus: '业务状态',
normal: '正常',
closed: '关闭',
StartDate: '开始采购日期',
EndDate: '采购结束日期',
search: '搜索',
reset: '重置',
selected: '已选中',
items: '条数据',
proceed: '去查看',
date: '采购日期',
status: '关闭状态',
unclosed: '未关闭',
partNumber: '物料编码',
materialName: '物料名称',
unit: '采购单位',
unit1: '单位',
qty: '采购数量',
requestDate: '交货日期',
receivedQTY: '累计已送货数量',
unreceivedQTY: '未发货数量',
earliestDeliveryDate: '供应商承诺交期',
latestDeliveryDate: '供应商承诺交期',
view: '查看',
batchUpdateEarliestDeliveryDate: '批量修改选中承诺日期',
batchUpdateLatestDeliveryDate: '批量修改选中承诺最新交期',
specification: '物料规格',
DocNumber:'单据编号',
DocStatus:'业务状态',
normal:'正常',
closed:'关闭',
StartDate:'开始采购日期',
EndDate:'采购结束日期',
search:'搜索',
reset:'重置',
selected:'已选中',
items:'条数据',
proceed:'去查看',
date:'采购日期',
status:'关闭状态',
unclosed:'未关闭',
PartNumber:'物料编码',
materialName:'物料名称',
unit:'采购单位',
qty:'采购数量',
deliveryDate:'交货日期',
receivedQTY:'累计收料数量',
unreceivedQTY:'剩余收料数量',
earliestDeliveryDate:'供应商承诺交期',
latestDeliveryDate:'供应商承诺交期',
view:'查看',
batchUpdateEarliestDeliveryDate:'批量修改选中承诺日期',
batchUpdateLatestDeliveryDate:'批量修改选中承诺最新交期',
}
/*发货订单及其明细*/
startDate: '开始送货日期',
endDate: '送货结束日期',
deliveryDate: '送货日期',
deliveryNote: '发货单号',
maxcessLot: '美塞斯批号',
supplierLot: '供应商批号',
supplierCode: '供应商编码',
supplierName: '供应商名称',
deliveryQTY: '发货数量',
POQTY: '采购数量',
print: '打印条码',
modifyPassword: '修改密码',
newPassord: '请输入',
cancel: '取消',
confirm: '确定',
passwordChangedSuccessfully: '修改成功',
emptyPasswordIsNotAllowed: '密码不能为空',
passwordChangedFailed: '修改失败',
shipmentQTY: '本次发货数量',
prompt:'提示',
pleaseConfirmTheDateChange:'是否修改此项日期',
invoiceNumber:'发票号',
deliveryNote1:'采购送货单',
deliveryNoteNumber:'收料通知单编号(送货单号)',
PO:'PO号',
shipper:'送货人',
year:'年',
month:'月',
day:'日',
changedSuccessfully:'修改成功',
PleaseSelectItemsFirstly:'请先选中数据'
},
};

View File

@ -77,18 +77,18 @@
<!-- <el-dropdown-item command="/personal">{{ $t('message.user.dropdown2') }}</el-dropdown-item>-->
<!-- <el-dropdown-item command="/404">{{ $t('message.user.dropdown3') }}</el-dropdown-item>-->
<!-- <el-dropdown-item command="/401">{{ $t('message.user.dropdown4') }}</el-dropdown-item>-->
<el-dropdown-item divided command="" @click="()=>{state.dialogShow = true}">修改密码</el-dropdown-item>
<el-dropdown-item divided command="" @click="()=>{state.dialogShow = true}">{{ t('message.index.modifyPassword') }}</el-dropdown-item>
<el-dropdown-item divided command="logOut">{{ $t('message.user.dropdown5') }}</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<Search ref="searchRef" />
<el-dialog title="修改密码" v-model="state.dialogShow" width="300px" @close="dialogCloseFun">
<el-input v-model="state.password" placeholder="请输入" type="password" clearable></el-input>
<el-dialog :title=" t('message.index.modifyPassword') " v-model="state.dialogShow" width="300px" @close="dialogCloseFun">
<el-input v-model="state.password" :placeholder="t('message.index.modifyPassword')" type="password" clearable></el-input>
<template #footer>
<span class="dialog-footer">
<el-button size="default" @click="()=>{state.dialogShow = true}"> </el-button>
<el-button type="primary" size="default" @click="passwordFunTJ">确定</el-button>
<el-button size="default" @click="()=>{state.dialogShow = true}">{{ t('message.index.cancel') }}</el-button>
<el-button type="primary" size="default" @click="passwordFunTJ">{{ t('message.index.confirm') }}</el-button>
</span>
</template>
</el-dialog>
@ -134,9 +134,15 @@ const dialogCloseFun = () => {
state.password = ''
}
const passwordFunTJ = () => {
if(state.password === ''){
ElMessage.warning(t('message.index.emptyPasswordIsNotAllowed'))
return
}
listApi().UpPassword({pwd:state.password}).then((res:any) => {
if (res.resultCode === 0) {
ElMessage.success('修改成功');
ElMessage.success(t('message.index.passwordChangedSuccessfully'));
} else {
ElMessage.error(t('message.index.passwordChangedFailed'))
}
})
}

View File

@ -1,50 +1,49 @@
<template>
<div class="orderPrinting" ref="orderPrintingRef">
<div class="title">采购送货单</div>
<div class="title">{{ t('message.index.deliveryNote1') }}</div>
<div class="orderPrintingTop">
<div class="item item1">
<VueQr style="width: 150px; height: 150px" :text="state.pageData.fBillNo" :size="150"></VueQr>
</div>
<div class="item item2">
<div class="dataText">
<span class="span1">收料通知单编号送货单号</span>
<span class="span1">{{ t('message.index.deliveryNoteNumber') }}</span>
<span class="span2">{{ state.pageData.fBillNo }}</span>
</div>
<div class="dataText">
<span class="span1">供应商名称</span>
<span class="span1">{{ t('message.index.supplierName') }}</span>
<span class="span2">{{ state.pageData.supplierName }}</span>
</div>
<div class="dataText">
<span class="span1">送货日期</span>
<span class="span1">{{ t('message.index.deliveryDate') }}</span>
<span class="span2">{{ state.pageData.deliveryDate }}</span>
</div>
<div class="dataText">
<span class="span1">发票号</span>
<span class="span1">{{ t('message.index.invoiceNumber') }}</span>
<span class="span2">{{ state.pageData.f_VHUB_Text }}</span>
</div>
</div>
<div class="item item3">
<VueQr style="width: 150px; height: 150px" :text="state.pageData.f_VHUB_Text" :size="150"></VueQr>
</div>
</div>
<avue-crud ref="crudRef" :data="props.data" :option="state.option"></avue-crud>
<div class="shuming">
<div class="nameText">送货人</div>
<div class="dateTime">
<span></span>
<span></span>
<span></span>
</div>
</div>
<div class="shuming">
<div class="nameText">{{ t('message.index.shipper') }}</div>
<div class="dateTime">
<span>{{ t('message.index.year') }}</span>
<span>{{ t('message.index.month') }}</span>
<span>{{ t('message.index.day') }}</span>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { reactive, ref, defineProps, watch } from 'vue';
import { reactive, ref, defineProps, watch, computed } from 'vue';
import VueQr from 'vue-qr/src/packages/vue-qr.vue';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
const orderPrintingRef = ref();
const props = defineProps({
data: {
@ -74,14 +73,14 @@ const state = reactive({
addBtn: false,
menu: false,
column: [
{ label: 'PO', prop: 'purchaseOrderFBillNo' },
{ label: '物料代码', prop: 'materialCode' },
{ label: '物料名称', prop: 'materialName' },
{ label: '单位', prop: 'unitName' },
{ label: 'PO数量', prop: 'purchaseQty' },
{ label: '送货数量', prop: 'qty' },
{ label: '美塞斯批号', prop: 'mssSupplierLot' },
{ label: '供应商批号', prop: 'fSupplierLot' },
{ label: computed(() => t('message.index.PO')), prop: 'purchaseOrderFBillNo' },
{ label: computed(() => t('message.index.partNumber')), prop: 'materialCode' },
{ label: computed(() => t('message.index.materialName')), prop: 'materialName' },
{ label: computed(() => t('message.index.unit1')), prop: 'unitName' },
{ label: computed(() => t('message.index.POQTY')), prop: 'purchaseQty' },
{ label: computed(() => t('message.index.deliveryQTY')), prop: 'qty' },
{ label: computed(() => t('message.index.maxcessLot')), prop: 'mssSupplierLot' },
{ label: computed(() => t('message.index.supplierLot')), prop: 'fSupplierLot' },
],
},
});
@ -97,7 +96,7 @@ watch(
state.pageData.f_VHUB_Text = arr[0].f_VHUB_Text;
}
},
{ immediate: true,deep:true }
{ immediate: true, deep: true }
);
defineExpose({
orderPrintingRef,
@ -105,20 +104,20 @@ defineExpose({
</script>
<style scoped lang="scss">
.shuming{
width: 100%;
text-align: right;
.shuming {
width: 100%;
text-align: right;
}
.nameText{
margin-right: 120px;
margin-top: 80px;
.nameText {
margin-right: 120px;
margin-top: 80px;
}
.dateTime{
margin-right: 50px;
margin-top: 16px;
.dateTime {
margin-right: 50px;
margin-top: 16px;
}
.dateTime > span{
margin-left: 42px;
.dateTime > span {
margin-left: 42px;
}
:deep(.el-table__inner-wrapper) {
box-sizing: border-box;

View File

@ -29,7 +29,7 @@
<template #menu-left>
<div class="selectBoxes">
<div class="selectItem">
<el-input v-model="state.formData.sheet" style="width: 240px" placeholder="发货单号" size="default" />
<el-input v-model="state.formData.sheet" style="width: 240px" :placeholder="t('message.index.deliveryNote')" size="default" />
</div>
<div class="selectItem">
<el-date-picker
@ -37,24 +37,24 @@
style="width: 25vw"
type="daterange"
range-separator="-"
start-placeholder="开始送货日期"
end-placeholder="送货结束日期"
:start-placeholder="t('message.index.startDate')"
:end-placeholder="t('message.index.endDate')"
size="default"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
@change="elDatePickerFun"
/>
</div>
<el-button type="primary" size="default" @click="selectFun">搜索</el-button>
<el-button size="default" @click="resetFun">重置</el-button>
<el-button type="primary" size="default" @click="selectFun">{{ t('message.index.search') }}</el-button>
<el-button size="default" @click="resetFun">{{ t('message.index.reset') }}</el-button>
<el-button type="primary" size="default" @click="state.selectedDataShow = true">
<span>已选中 {{ state.selectedData.length }} 条数据去打印</span>
<span>{{ t('message.index.selected') }} {{ state.selectedData.length }} {{ t('message.index.items') }}{{ t('message.index.print') }}</span>
</el-button>
</div>
</template>
<template #menu="{ row }">
<div class="btnList">
<el-button type="text" @click="barCodeFunDataRow(row)">打印条码</el-button>
<el-button type="text" @click="barCodeFunDataRow(row)">{{ t('message.index.print') }}</el-button>
</div>
</template>
</avue-crud>
@ -75,7 +75,6 @@
<script lang="ts" setup>
import { reactive, onMounted, computed, nextTick, ref } from 'vue';
import { listApi } from '../../api/list/index';
import { ElMessage } from 'element-plus';
import { useI18n } from 'vue-i18n';
import SelectedData from '/@/views/materialReceiptNotice/selectedData.vue';
import barCode from './barCode.vue'
@ -102,18 +101,18 @@ const state = reactive({
addBtn: false,
column: [
{ label: '', prop: 'checkboxBox', width: 35 },
{ label: '送货日期', prop: 'deliveryDate' },
{ label: '发货单号', prop: 'sheet', width: '135' },
{ label: '美塞斯批号', prop: 'mssSupplierLot' },
{ label: '供应商批号', prop: 'fSupplierLot' },
{ label: '物料编码', prop: 'materialCode', width: '120' },
{ label: '物料名称', prop: 'materialName' },
{ label: computed(() => t('message.list.SupplierCode2')), prop: 'supplierId', width: '90' },
{ label: computed(() => t('message.list.SupplierName2')), prop: 'supplierName', width: '120' },
{ label: '累计收料数量', prop: 'sendedQty', width: '110' },
{ label: '发货数量', prop: 'qty' },
{ label: '采购数量', prop: 'purchaseQty' },
{ label: '采购单位', prop: 'unitName' },
{ label: computed(()=> t('message.index.deliveryDate')), prop: 'deliveryDate' },
{ label: computed(()=> t('message.index.deliveryDate')), prop: 'sheet', width: '135' },
{ label: computed(()=> t('message.index.maxcessLot')), prop: 'mssSupplierLot' },
{ label: computed(()=> t('message.index.supplierLot')), prop: 'fSupplierLot' },
{ label: computed(()=> t('message.index.partNumber')), prop: 'materialCode', width: '120' },
{ label: computed(()=> t('message.index.materialName')), prop: 'materialName' },
{ label: computed(() => t('message.index.supplierCode')), prop: 'supplierId', width: '90' },
{ label: computed(() => t('message.index.supplierName')), prop: 'supplierName', width: '120' },
{ label: computed(() => t('message.index.receivedQTY')), prop: 'sendedQty', width: '110' },
{ label: computed(() => t('message.index.deliveryQTY')), prop: 'qty' },
{ label: computed(() => t('message.index.POQTY')), prop: 'purchaseQty' },
{ label: computed(() => t('message.index.unit')), prop: 'unitName' },
],
},
data: [],

View File

@ -166,9 +166,10 @@ const state = reactive({
},
{ label: computed(() => t('message.index.partNumber')), prop: 'materialCode', width: '120' },
{ label: computed(() => t('message.index.materialName')), prop: 'materialName', width: '240' },
{ label: computed(() => t('message.index.specification')), prop: 'guige', width: '120' },
{ label: computed(() => t('message.index.unit')), prop: 'unitName', width: '90' },
{ label: computed(() => t('message.index.qty')), prop: 'qty', width: '90' },
{ label: computed(() => t('message.index.deliveryDate')), prop: 'fDeliveryDate', width: '165' },
{ label: computed(() => t('message.index.requestDate')), prop: 'fDeliveryDate', width: '165' },
{
label: computed(() => t('message.index.DocStatus')),
prop: 'fmrpCloseStatus',
@ -214,8 +215,10 @@ const chengNuoJiaoQiPFun = (e: string) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '是否要修正此项日期',
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
@ -228,7 +231,7 @@ const chengNuoJiaoQiPFun = (e: string) => {
done();
if (res.resultCode === 0) {
getList();
ElMessage.success('操作成功');
ElMessage.success(t('message.index.changedSuccessfully'));
}
if (res.resultCode === -1) {
getList();
@ -248,21 +251,22 @@ const chengNuoJiaoQiPFun = (e: string) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '是否要修正此项日期',
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText = '1';
listApi()
.batchSetNewChengNuoJiaoQi(arr)
.then((res: any) => {
done();
if (res.resultCode === 0) {
getList();
ElMessage.success('操作成功');
ElMessage.success(t('message.index.changedSuccessfully'));
}
if (res.resultCode === -1) {
getList();
@ -276,28 +280,29 @@ const chengNuoJiaoQiPFun = (e: string) => {
});
}
} else {
ElMessage.warning('请先选中数据');
ElMessage.warning(t('message.index.PleaseSelectItemsFirstly'));
}
};
const batchSetChengNuoJiaoQiFun = (arr: any) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '是否要修正此项日期',
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText = '1';
listApi()
.batchSetChengNuoJiaoQi(arr)
.then((res: any) => {
done();
if (res.resultCode === 0) {
getList();
ElMessage.success('操作成功');
ElMessage.success(t('message.index.changedSuccessfully'));
}
if (res.resultCode === -1) {
getList();
@ -314,21 +319,22 @@ const batchSetNewChengNuoJiaoQiFun = (arr: any) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '是否要修正此项日期',
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText = '1';
listApi()
.batchSetNewChengNuoJiaoQi(arr)
.then((res: any) => {
done();
if (res.resultCode === 0) {
getList();
ElMessage.success('操作成功');
ElMessage.success(t('message.index.changedSuccessfully'));
}
if (res.resultCode === -1) {
getList();

View File

@ -6,12 +6,12 @@
<div class="selectItem" style="flex: 1;margin-right: 0">
<div class="piliang">
<el-button type="primary" size="small" @click="state.selectedDataShow = true">
<span>已选中 {{ state.selectedData.length }} 条数据去查看</span>
<span>{{ t('message.index.selected') }} {{ state.selectedData.length }} {{ t('message.index.items') }}{{ t('message.index.proceed') }}</span>
</el-button>
<el-date-picker
v-model="state.chengNuoJiaoQiP"
type="date"
placeholder="批量修改选中承诺日期"
:placeholder="t('message.index.batchUpdateEarliestDeliveryDate')"
size="small"
style="width: 45%; margin-left: 12px"
@change="chengNuoJiaoQiPFun('0')"
@ -19,7 +19,7 @@
<el-date-picker
v-model="state.newChengNuoJiaoQiP"
type="date"
placeholder="批量修改选中承诺最新交期"
:placeholder="t('message.index.batchUpdateLatestDeliveryDate')"
size="small"
style="width: 45%; margin-left: 12px"
@change="chengNuoJiaoQiPFun('1')"
@ -36,7 +36,9 @@
>
<template #fBillNo="{ row }">{{row.fBillNo}}</template>
<template #fDate="{ row }">{{row.fDate}}</template>
<template #fCancelStatus="{ row }">{{row.fCancelStatus === 'A' ? '未关闭' : '已关闭'}} </template>
<template #fCancelStatus="{ row }">
{{ row.fCancelStatus === 'A' ? t('message.index.closed') : t('message.index.unclosed') }}
</template>
<template #materialName="{ row }">
<el-tooltip :content="row.materialName" placement="top">
<div class="multi-line-omit">{{ row.materialName }}</div>
@ -46,7 +48,7 @@
<el-date-picker
v-model="row.chengNuoJiaoQi"
type="date"
placeholder="日期"
:placeholder="t('message.index.date')"
size="small"
style="width: 220px"
format="YYYY-MM-DD"
@ -58,7 +60,7 @@
<el-date-picker
v-model="row.newChengNuoJiaoQi"
type="date"
placeholder="日期"
:placeholder="t('message.index.date')"
size="small"
style="width: 220px"
format="YYYY-MM-DD"
@ -74,12 +76,14 @@
<script lang="ts" setup>
import {reactive, onMounted, computed, nextTick, ref} from 'vue';
import { useRouter,useRoute } from 'vue-router';
import { useRoute } from 'vue-router';
import { listApi } from '../../api/list/index';
import { useI18n } from 'vue-i18n';
import SelectedData from '/@/views/mssPurchaseOrder/selectedData.vue';
import {ElMessage, ElMessageBox} from 'element-plus';
const selectedDataRef = ref()
const route = useRoute()
const { t } = useI18n();
//
const state = reactive({
page: {
@ -102,36 +106,37 @@ const state = reactive({
addBtn: false,
menu: false,
column: [
{ label: 'PO号', prop: 'fBillNo', /*search: true,*/ searchSpan: 3, width: '125' },
{ label: '采购日期', prop: 'fDate', /*search: true,*/ type: 'datetime', searchSpan: 6, searchRange: true },
{ label: computed(() => t('message.index.DocNumber')), prop: 'fBillNo', searchSpan: 3, width: '125' },
{ label: computed(() => t('message.index.date')), prop: 'fDate', type: 'datetime', searchSpan: 6, searchRange: true },
{
label: '关闭状态',
label: computed(() => t('message.index.status')),
prop: 'fCancelStatus',
dicData: [
{ label: '未关闭', value: 'A' },
{ label: '已关闭', value: 'B' },
{ label: computed(() => t('message.index.closed')), value: 'A' },
{ label: computed(() => t('message.index.unclosed')), value: 'B' },
],
width: '90',
},
{ label: '物料编码', prop: 'materialCode', width: '120' },
{ label: '物料名称', prop: 'materialName', width: '240' },
{ label: '采购单位', prop: 'unitName', width: '90' },
{ label: '采购数量', prop: 'qty', width: '90' },
{ label: '交货日期', prop: 'fDeliveryDate', width: '165' },
{ label: computed(() => t('message.index.partNumber')), prop: 'materialCode', width: '120' },
{ label: computed(() => t('message.index.materialName')), prop: 'materialName', width: '240' },
{ label: computed(() => t('message.index.specification')), prop: 'guige', width: '120' },
{ label: computed(() => t('message.index.unit')), prop: 'unitName', width: '90' },
{ label: computed(() => t('message.index.qty')), prop: 'qty', width: '90' },
{ label: computed(() => t('message.index.requestDate')), prop: 'fDeliveryDate', width: '165' },
{
label: '业务状态',
prop: 'fmrpCloseStatus' /*search: true,*/,
label: computed(() => t('message.index.DocStatus')),
prop: 'fmrpCloseStatus',
searchSpan: 3,
dicData: [
{ label: '正常', value: 'A' },
{ label: '业务关闭', value: 'B' },
{ label: computed(() => t('message.index.normal')), value: 'A' },
{ label: computed(() => t('message.index.closed')), value: 'B' },
],
width: '90',
},
{ label: '累计收料数量', prop: 'sendedQty', width: '110' },
{ label: '剩余收料数量', prop: 'notSendQty' },
{ label: '供应商承诺交期', prop: 'chengNuoJiaoQi', width: '220' },
{ label: '供应商承诺最新交期', prop: 'newChengNuoJiaoQi', width: '220' },
{ label: computed(() => t('message.index.receivedQTY')), prop: 'sendedQty', width: '110' },
{ label: computed(() => t('message.index.unreceivedQTY')), prop: 'notSendQty', width: '110' },
{ label: computed(() => t('message.index.earliestDeliveryDate')), prop: 'chengNuoJiaoQi', width: '160' },
{ label: computed(() => t('message.index.latestDeliveryDate')), prop: 'newChengNuoJiaoQi', width: '160' },
],
},
data: [],
@ -163,21 +168,22 @@ const chengNuoJiaoQiPFun = (e: string) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '是否要修正此项日期',
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText ='1';
listApi()
.batchSetChengNuoJiaoQi(arr)
.then((res: any) => {
done();
if (res.resultCode === 0) {
getList();
ElMessage.success('操作成功');
ElMessage.success(t('message.index.changedSuccessfully'));
}
if (res.resultCode === -1) {
getList();
@ -197,8 +203,10 @@ const chengNuoJiaoQiPFun = (e: string) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '是否要修正此项日期',
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
@ -211,7 +219,7 @@ const chengNuoJiaoQiPFun = (e: string) => {
done();
if (res.resultCode === 0) {
getList();
ElMessage.success('操作成功');
ElMessage.success(t('message.index.changedSuccessfully'));
}
if (res.resultCode === -1) {
getList();
@ -225,15 +233,17 @@ const chengNuoJiaoQiPFun = (e: string) => {
});
}
} else {
ElMessage.warning('请先选中数据');
ElMessage.warning(t('message.index.PleaseSelectItemsFirstly'));
}
};
const batchSetChengNuoJiaoQiFun = (arr: any) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '是否要修正此项日期',
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
@ -246,7 +256,7 @@ const batchSetChengNuoJiaoQiFun = (arr: any) => {
done();
if (res.resultCode === 0) {
getList();
ElMessage.success('操作成功');
ElMessage.success(t('message.index.changedSuccessfully'));
}
if (res.resultCode === -1) {
getList();
@ -263,8 +273,10 @@ const batchSetNewChengNuoJiaoQiFun = (arr: any) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '是否要修正此项日期',
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
@ -277,7 +289,7 @@ const batchSetNewChengNuoJiaoQiFun = (arr: any) => {
done();
if (res.resultCode === 0) {
getList();
ElMessage.success('操作成功');
ElMessage.success(t('message.index.changedSuccessfully'));
}
if (res.resultCode === -1) {
getList();

View File

@ -1,74 +1,74 @@
<template>
<el-dialog :model-value="props.showes" @close="closeFun" width="80%">
<div style="display: flex; align-items: center; margin-bottom: 16px">
<div>发票号</div>
<el-input style="width: 300px" v-model="state.f_VHUB_Text" placeholder="请填写发票号" size="default" />
<div>{{ t('message.index.invoiceNumber') }}</div>
<el-input style="width: 300px" v-model="state.f_VHUB_Text" :placeholder="t('message.index.invoiceNumber')" size="default" />
</div>
<avue-crud ref="crudRef" :data="state.data" :option="state.option">
<template #fSupplierLot="{ row }">
<div style="display: flex; align-items: center; justify-content: center">
<el-input v-model="row.fSupplierLot" placeholder="批号" size="small" />
<el-input v-model="row.fSupplierLot" :placeholder="t('message.index.supplierLot')" size="small" />
</div>
</template>
<template #notSendQtyText="{ row }">
<div>{{row.notSendQty}}</div>
<template #notSendQtyText="{ row }">
<div>{{ row.notSendQty }}</div>
</template>
<template #notSendQty="{ row }">
<div style="display: flex; align-items: center; justify-content: center">
<el-input-number v-model="row.notSendQty" size="small" />
</div>
</template>
<!-- <template #chengNuoJiaoQi="{ row }">-->
<!-- <div style="display: flex; align-items: center; justify-content: center">-->
<!-- <el-date-picker-->
<!-- v-model="row.chengNuoJiaoQi"-->
<!-- type="date"-->
<!-- size="small"-->
<!-- style="width: 100%"-->
<!-- format="YYYY/MM/DD"-->
<!-- @change="batchSetChengNuoJiaoQiFun([{ id: row.id, newTime: row.chengNuoJiaoQi }])"-->
<!-- />-->
<!-- </div>-->
<!-- </template>-->
<!-- <template #newChengNuoJiaoQi="{ row }">-->
<!-- <div style="display: flex; align-items: center; justify-content: center">-->
<!-- <el-date-picker-->
<!-- v-model="row.newChengNuoJiaoQi"-->
<!-- type="date"-->
<!-- size="small"-->
<!-- style="width: 100%"-->
<!-- format="YYYY/MM/DD"-->
<!-- @change="batchSetNewChengNuoJiaoQiFun([{ id: row.id, newTime: row.newChengNuoJiaoQi }])"-->
<!-- />-->
<!-- </div>-->
<!-- </template>-->
<template #menu-left>
<div class="selectBoxes">
<el-date-picker
v-model="state.chengNuoJiaoQiP"
type="date"
placeholder="批量修改选中承诺日期"
style="width: 190px"
@change="chengNuoJiaoQiPFun('0')"
/>
<el-date-picker
v-model="state.newChengNuoJiaoQiP"
type="date"
placeholder="批量修改选中承诺最新交期"
style="width: 190px; margin-left: 12px"
@change="chengNuoJiaoQiPFun('1')"
/>
<el-input v-model="state.fSupplierLot" style="width: 190px; margin-left: 12px" placeholder="批号" @input="fSupplierLotFun" />
</div>
</template>
<!-- <template #chengNuoJiaoQi="{ row }">-->
<!-- <div style="display: flex; align-items: center; justify-content: center">-->
<!-- <el-date-picker-->
<!-- v-model="row.chengNuoJiaoQi"-->
<!-- type="date"-->
<!-- size="small"-->
<!-- style="width: 100%"-->
<!-- format="YYYY/MM/DD"-->
<!-- @change="batchSetChengNuoJiaoQiFun([{ id: row.id, newTime: row.chengNuoJiaoQi }])"-->
<!-- />-->
<!-- </div>-->
<!-- </template>-->
<!-- <template #newChengNuoJiaoQi="{ row }">-->
<!-- <div style="display: flex; align-items: center; justify-content: center">-->
<!-- <el-date-picker-->
<!-- v-model="row.newChengNuoJiaoQi"-->
<!-- type="date"-->
<!-- size="small"-->
<!-- style="width: 100%"-->
<!-- format="YYYY/MM/DD"-->
<!-- @change="batchSetNewChengNuoJiaoQiFun([{ id: row.id, newTime: row.newChengNuoJiaoQi }])"-->
<!-- />-->
<!-- </div>-->
<!-- </template>-->
<!-- <template #menu-left>-->
<!-- <div class="selectBoxes">-->
<!-- <el-date-picker-->
<!-- v-model="state.chengNuoJiaoQiP"-->
<!-- type="date"-->
<!-- placeholder="批量修改选中承诺日期"-->
<!-- style="width: 190px"-->
<!-- @change="chengNuoJiaoQiPFun('0')"-->
<!-- />-->
<!-- <el-date-picker-->
<!-- v-model="state.newChengNuoJiaoQiP"-->
<!-- type="date"-->
<!-- placeholder="批量修改选中承诺最新交期"-->
<!-- style="width: 190px; margin-left: 12px"-->
<!-- @change="chengNuoJiaoQiPFun('1')"-->
<!-- />-->
<!-- <el-input v-model="state.fSupplierLot" style="width: 190px; margin-left: 12px" placeholder="批号" @input="fSupplierLotFun" />-->
<!-- </div>-->
<!-- </template>-->
</avue-crud>
<div class="btnList">
<el-button type="primary" :loading="state.loading" @click="batchAddInvoiceOrderFun">确定</el-button>
<el-button type="primary" :loading="state.loading" @click="batchAddInvoiceOrderFun">{{ t('message.index.confirm') }}</el-button>
</div>
</el-dialog>
</template>
<script setup lang="ts">
import { defineProps, reactive, defineEmits, watch } from 'vue';
import { defineProps, reactive, defineEmits, watch, computed } from 'vue';
import { listApi } from '../../api/list/index';
const emits = defineEmits(['generateDocuments', 'close']);
@ -88,7 +88,7 @@ const props = defineProps({
});
const state = reactive({
loading:false,
loading: false,
f_VHUB_Text: '',
fSupplierLot: '',
dialogVisible: true,
@ -109,17 +109,17 @@ const state = reactive({
searchMenuSpan: 6,
addBtn: false,
column: [
{ label: 'PO号', prop: 'fBillNo' },
{ label: '物料编码', prop: 'materialCode' },
{ label: '物料名称', prop: 'materialName', width: '180' },
{ label: '采购单位', prop: 'unitName' },
{ label: '采购数量', prop: 'qty' },
{ label: '已发货数量', prop: 'sendedQty' },
{ label: '剩余收料数量', prop: 'notSendQtyText' },
{ label: '批号', prop: 'fSupplierLot' },
{ label: '本次发货数量', prop: 'notSendQty', width: '180' },
{ label: '供应商承诺交期', prop: 'chengNuoJiaoQi', width: '180' },
{ label: '供应商承诺最新交期', prop: 'newChengNuoJiaoQi', width: '180' },
{ label: computed(() => t('message.index.DocNumber')), prop: 'fBillNo' },
{ label: computed(() => t('message.index.partNumber')), prop: 'materialCode' },
{ label: computed(() => t('message.index.materialName')), prop: 'materialName', width: '180' },
{ label: computed(() => t('message.index.unit')), prop: 'unitName' },
{ label: computed(() => t('message.index.qty')), prop: 'qty' },
{ label: computed(() => t('message.index.receivedQTY')), prop: 'sendedQty' },
{ label: computed(() => t('message.index.unreceivedQTY')), prop: 'notSendQtyText' },
{ label: computed(() => t('message.index.supplierLot')), prop: 'fSupplierLot' },
{ label: computed(() => t('message.index.shipmentQTY')), prop: 'notSendQty', width: '180' },
{ label: computed(() => t('message.index.earliestDeliveryDate')), prop: 'chengNuoJiaoQi', width: '180' },
{ label: computed(() => t('message.index.latestDeliveryDate')), prop: 'newChengNuoJiaoQi', width: '180' },
],
},
topId: '',
@ -190,33 +190,32 @@ const batchSetNewChengNuoJiaoQiFun = (arr: any) => {
});
};
const batchAddInvoiceOrderFun = () => {
if(props.listData.length != 0){
state.loading = true
console.log(props.listData);
let arr: any = [];
props.listData.forEach((item: any) => {
arr.push({
id: item.id,
qty: item.notSendQty,
fSupplierLot:item.fSupplierLot
});
});
listApi()
.batchAddInvoiceOrder({ f_VHUB_Text: state.f_VHUB_Text, upDateList: arr })
.then((res: any) => {
state.loading = false
if (res.resultCode === 0) {
ElMessage.success('操作成功');
emits('generateDocuments');
}
if (res.resultCode === -1) {
ElMessage.error(res.errorMessage);
}
});
} else {
ElMessage.error('没有数据')
}
if (props.listData.length != 0) {
state.loading = true;
console.log(props.listData);
let arr: any = [];
props.listData.forEach((item: any) => {
arr.push({
id: item.id,
qty: item.notSendQty,
fSupplierLot: item.fSupplierLot,
});
});
listApi()
.batchAddInvoiceOrder({ f_VHUB_Text: state.f_VHUB_Text, upDateList: arr })
.then((res: any) => {
state.loading = false;
if (res.resultCode === 0) {
ElMessage.success('操作成功');
emits('generateDocuments');
}
if (res.resultCode === -1) {
ElMessage.error(res.errorMessage);
}
});
} else {
ElMessage.error('没有数据');
}
};
const closeFun = () => {
emits('close');