Merge pull request 'master-dev' (#5) from master-dev into master

Reviewed-on: http://git.xdadan.loc/tanex/emis-oms-frontend/pulls/5
This commit is contained in:
wuteng 2025-12-02 16:40:34 +08:00
commit 69b306c168
4 changed files with 145 additions and 45 deletions

View File

@ -60,4 +60,22 @@ export function getWarehouseInDetail(query) {
inNo: query.inNo inNo: query.inNo
} }
}) })
} }
// 客户确认进仓
export function cusConfirmWsIn(data) {
return request({
url: '/oms2c/emisWarehouseIn/cusConfirmWsIn',
method: 'post',
data: data
})
}
// 客户反馈进仓单异常
export function reportBatchWsInError(data) {
return request({
url: '/oms2c/emisWarehouseIn/reportBatchWsInError',
method: 'post',
data: data
})
}

View File

@ -19,7 +19,7 @@
</div> </div>
<XdTextareaInput <XdTextareaInput
v-model="queryParams.billCode" v-model="queryParams.queryKey"
:placeholder="$t('多个流水号逗号或换行隔开')" :placeholder="$t('多个流水号逗号或换行隔开')"
clearable clearable
:rows="2" :rows="2"
@ -697,6 +697,7 @@ export default {
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 20,
queryKey: null,
orderSn: null, orderSn: null,
billCode: null, billCode: null,
billCodeSub: null, billCodeSub: null,
@ -1020,14 +1021,14 @@ export default {
initQueryParams(){ initQueryParams(){
// this.queryOrderType="1"; // this.queryOrderType="1";
// this.queryOrderDateType="1"; // this.queryOrderDateType="1";
if(this.queryParams.billCode){ if(this.queryParams.queryKey){
if(this.queryOrderType != "1"){ if(this.queryOrderType != "1"){
this.queryParams.orderSn=formatSearchStr(this.queryParams.billCode); this.queryParams.orderSn=formatSearchStr(this.queryParams.queryKey);
this.queryParams.billCode=null; this.queryParams.billCode=null;
}else{ }else{
// 处理子单号 // 处理子单号
let qBillCode=formatSearchStr(this.queryParams.billCode); let qBillCode=formatSearchStr(this.queryParams.queryKey);
let billArr = qBillCode.split(","); let billArr = qBillCode.split(",");
let newBillCodeStr=""; let newBillCodeStr="";
billArr.forEach(item=>{ billArr.forEach(item=>{
@ -1039,7 +1040,7 @@ export default {
} }
}); });
this.queryParams.billCode=newBillCodeStr; this.queryParams.billCode=newBillCodeStr;
this.queryParams.orderSn=null;
} }
} }
this.queryParams=this.addDateRange(this.queryParams, this.dateRange,"orderDate"); this.queryParams=this.addDateRange(this.queryParams, this.dateRange,"orderDate");

View File

@ -48,7 +48,13 @@
</el-row> </el-row>
</div> </div>
<div style="margin-top:10px">
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;margin-top: 8px;margin-bottom:8px;color:black;font-weight:bold">
<el-col :span="5">
异常反馈备注: {{item.abnormalDesc}}
</el-col>
</el-row>
</div>
<div > <div >
<el-table <el-table
@ -137,9 +143,11 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div style="text-align: right;margin-top: 10px;">
<el-button size="mini" @click="handleFeedDialogClick(item)">反馈异常</el-button>
<el-button type="primary" size="mini" @click="confirmJinCang(item.inNo)">进仓确认</el-button>
</div>
<div style="margin-top: 10px;padding: 10px 0px;border-top: 1px solid #e6ebf5;"> <div style="margin-top: 10px;padding: 10px 0px;border-top: 1px solid #e6ebf5;">
<!-- <div>进仓图片:</div> --> <!-- <div>进仓图片:</div> -->
<div v-if="item.picUrl" style="display:inline-flex"> <div v-if="item.picUrl" style="display:inline-flex">
@ -151,15 +159,28 @@
</template> </template>
</CardWithHeader> </CardWithHeader>
</div> </div>
<!-- 反馈异常弹窗 -->
<el-dialog
:visible.sync="feedDialogVisible"
width="30%"
>
<el-form :model="feedForm" :rules="feedRules" ref="feedFormRef" label-width="85px">
<el-form-item label="反馈内容" prop="abnormalDesc">
<el-input v-model="feedForm.abnormalDesc" type="textarea" placeholder="请输入反馈内容" :autosize="{ minRows: 2, maxRows: 4 }"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitFeedForm">确 认</el-button>
<el-button @click="feedDialogVisible = false">取 消</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import elDateSimplePicker from '@/components/DatePickerAdv/elDateSimplePicker'; import elDateSimplePicker from '@/components/DatePickerAdv/elDateSimplePicker';
import CardWithHeader from '@/components/CardWithHeader/index.vue'; import CardWithHeader from '@/components/CardWithHeader/index.vue';
import { getWarehouseInDetail} from "@/api/oms/emisWarehouseIn"; import { getWarehouseInDetail,cusConfirmWsIn ,reportBatchWsInError} from "@/api/oms/emisWarehouseIn";
export default { export default {
name: "emisWarehouseInBatch", name: "emisWarehouseInBatch",
@ -211,6 +232,13 @@ export default {
daterangeCreateTime: [], daterangeCreateTime: [],
// 更新站点时间范围 // 更新站点时间范围
daterangeUpdateTime: [], daterangeUpdateTime: [],
//异常提交表单
feedForm: {
abnormalDesc: '',
},
feedDialogVisible:false,
selectedItem:null,
openViewForm:false,
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -233,6 +261,11 @@ export default {
remark: null, remark: null,
delFlag: null, delFlag: null,
}, },
feedRules: {
abnormalDesc: [
{ required: true, message: '请输入反馈内容', trigger: 'blur' }
],
},
}; };
}, },
created() { created() {
@ -243,20 +276,8 @@ export default {
/** 查询进仓单批次列表 */ /** 查询进仓单批次列表 */
getList() { getList() {
this.loading = true; this.loading = true;
// listEmisWarehouseInBatch(this.addDateRange(this.queryParams, this.dateTimeRange)).then(response => { getWarehouseInDetail({inNo:this.inNo}).then(response => {
this.emisWarehouseInBatchList = response.data.stockInBatchList;
// this.emisWarehouseInBatchList = response.rows;
// this.resetRefreshId="wsbatch-"+Math.random().toString(36).substring(3,10);
// this.total = response.total;
// this.loading = false;
// });
getWarehouseInDetail(this.inNo).then(response => {
// this.emisWarehouseInBatchList = response.data;
// this.resetRefreshId="wsbatch-"+Math.random().toString(36).substring(3,10);
// this.total = response.total;
// this.loading = false;
}); });
}, },
@ -375,6 +396,36 @@ export default {
dateTimeChange(value){ dateTimeChange(value){
this.dateTimeRange=value; this.dateTimeRange=value;
}, },
async confirmJinCang(inNo) {
let confirmStatus = '2' // 部分入仓
if (!inNo) {
confirmStatus = '1' // 全部入仓
inNo = this.billInfo.inNo
}
let res = await cusConfirmWsIn({ inNo, confirmStatus, _loading: true }).then(() => {
this.$modal.msgSuccess("操作成功");
})
},
async handleFeedDialogClick(item) {
this.selectedItem=item;
this.feedForm.abnormalDesc = '';
this.feedDialogVisible = true;
},
submitFeedForm() {
this.$refs.feedFormRef.validate((valid) => {
if (valid) {
reportBatchWsInError({
inNo: this.inNo,
abnormalDesc: this.feedForm.abnormalDesc,
serialNo: this.selectedItem.serialNo
}).then(() => {
this.$modal.msgSuccess("反馈异常成功");
this.feedDialogVisible = false;
this.getList();
}).catch(() => {});
}
});
}
} }
}; };
</script> </script>

View File

@ -1,4 +1,4 @@
<template> <template>
<XdPageContainer > <XdPageContainer >
<SearchForm slot="pageHeader" :model="queryParams" ref="queryForm" size="mini" :maxShow="20" label-width="68px" v-show="showSearch" @search="handleQuery" @reset="resetQuery"> <SearchForm slot="pageHeader" :model="queryParams" ref="queryForm" size="mini" :maxShow="20" label-width="68px" v-show="showSearch" @search="handleQuery" @reset="resetQuery">
@ -10,7 +10,7 @@
</el-radio-group> </el-radio-group>
</div> </div>
<XdTextareaInput <XdTextareaInput
v-model="queryParams.billCode" v-model="queryParams.queryKey"
:placeholder="$t('多个流水号逗号或换行隔开')" :placeholder="$t('多个流水号逗号或换行隔开')"
clearable clearable
:rows="2" :rows="2"
@ -23,7 +23,7 @@
<elDateSimplePicker placeholder="" v-model="dateTimeRange" style="z-index:9999;width:300px" ></elDateSimplePicker> <elDateSimplePicker placeholder="" v-model="dateTimeRange" style="z-index:9999;width:300px" ></elDateSimplePicker>
</el-form-item> </el-form-item>
<!-- <el-form-item label="" prop="orderSn"> <!-- <el-form-item label="" prop="orderSn">
<el-input <el-input
v-model="queryParams.orderSn" v-model="queryParams.orderSn"
:placeholder="$t('订单号')" :placeholder="$t('订单号')"
@ -63,7 +63,7 @@
</el-date-picker> </el-date-picker>
</el-form-item> --> </el-form-item> -->
<el-form-item :label="$t('确认状态')" prop="confirmStatus"> <el-form-item :label="$t('确认状态')" prop="confirmStatus">
<el-select clearable v-model="queryParams.confirmStatus" placeholder=""> <el-select clearable v-model="queryParams.params.queryStatusType" placeholder="">
<el-option key="0" label="未确认" value="0"></el-option> <el-option key="0" label="未确认" value="0"></el-option>
<el-option key="1" label="已确认" value="1"></el-option> <el-option key="1" label="已确认" value="1"></el-option>
<el-option key="2" label="部分确认" value="2"></el-option> <el-option key="2" label="部分确认" value="2"></el-option>
@ -131,18 +131,25 @@
@click="handleView" @click="handleView"
>查看进仓信息</el-button> >查看进仓信息</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button <el-button
type="warning" type="warning"
plain plain
icon="el-icon-download" icon="el-icon-download"
size="mini" size="mini"
@click="handleExport" :disabled="single"
v-hasPermi="['emis:emisWarehouseIn:export']" @click="handleDownload"
>导出</el-button> >下载打印PDF</el-button>
</el-col> --> </el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
size="mini"
:disabled="single || currentSelectOrder.confirmStatus=='1' || currentSelectOrder.stockInFlag !=='1' "
@click="confirmJinCang"
>确认可发货</el-button>
</el-col>
</el-row> </el-row>
</div> </div>
@ -173,12 +180,12 @@
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.stockInFlag=='0'" type="info">未入库</el-tag> <el-tag v-if="scope.row.stockInFlag=='0'" type="info">未入库</el-tag>
<el-tag v-if="scope.row.stockInFlag=='1'" type="success">已入仓</el-tag> <el-tag v-if="scope.row.stockInFlag=='1'" type="success">已入仓</el-tag>
<el-tag v-if="scope.row.stockInFlag=='2'" type="warning">部分入仓</el-tag> <el-tag v-if="scope.row.stockInFlag=='2'" type="warning">部分入仓</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="170"/> <el-table-column label="创建时间" align="center" prop="createTime" width="170"/>
</XdTable> </XdTable>
<!-- <!--
<el-dialog :title="titleForm" :visible.sync="openForm" width="50%" :destroy-on-close="true" v-dialogDrag append-to-body> <el-dialog :title="titleForm" :visible.sync="openForm" width="50%" :destroy-on-close="true" v-dialogDrag append-to-body>
<emisWarehouseInForm :id="currentId" @on-changed="handleFormChanged" @on-cancel="cancelForm"></EmisWarehouseInForm> <emisWarehouseInForm :id="currentId" @on-changed="handleFormChanged" @on-cancel="cancelForm"></EmisWarehouseInForm>
</el-dialog> --> </el-dialog> -->
@ -189,7 +196,7 @@
</template> </template>
<script> <script>
import { listSimpleEmisWarehouseIn } from "@/api/oms/emisWarehouseIn"; import { listSimpleEmisWarehouseIn, cusConfirmWsIn } from "@/api/oms/emisWarehouseIn";
import elDateSimplePicker from '@/components/DatePickerAdv/elDateSimplePicker'; import elDateSimplePicker from '@/components/DatePickerAdv/elDateSimplePicker';
export default { export default {
@ -241,6 +248,7 @@ export default {
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 20,
queryKey: null,
serialNo: null, serialNo: null,
inNo: null, inNo: null,
orderSn: null, orderSn: null,
@ -254,6 +262,9 @@ export default {
status: null, status: null,
remark: null, remark: null,
delFlag: null, delFlag: null,
params:{
queryStatusType:null,
}
}, },
}; };
}, },
@ -269,10 +280,13 @@ export default {
getList() { getList() {
this.loading = true; this.loading = true;
// 按运单查询时的处理 // 按运单查询时的处理
if(this.queryOrderType==2){ if(this.queryOrderType=='2'){
this.queryParams.inNo=this.queryParams.billCode; this.queryParams.inNo=this.queryParams.queryKey;
this.queryParams.billCode=null; this.queryParams.billCode=null;
}else {
this.queryParams.inNo=null;
this.queryParams.billCode = this.queryParams.queryKey;
} }
listSimpleEmisWarehouseIn(this.addDateRange(this.queryParams, this.dateTimeRange,"createTime")).then(response => { listSimpleEmisWarehouseIn(this.addDateRange(this.queryParams, this.dateTimeRange,"createTime")).then(response => {
@ -419,8 +433,24 @@ export default {
}, },
/** 时间搜索响应函数 */ /** 时间搜索响应函数 */
dateTimeChange(value){ dateTimeChange(value){
this.dateTimeRange=value; this.dateTimeRange=value;
}, },
handleDownload(){
this.download('oms2c/common/exportWarehouseInTpl', {
'orderSn':this.currentSelectOrder.orderSn
}, `emisWarehouseIn_${new Date().getTime()}.pdf`)
},
confirmJinCang(){
cusConfirmWsIn({
'confirmStatus':'1',
'inNo':this.currentSelectOrder.inNo
}).then(response => {
if (response.code === 200) {
this.$modal.msgSuccess("确认成功");
this.getList();
}
})
}
} }
}; };
</script> </script>