You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udiwms-vue/src/views/business/addOrder.vue

508 lines
15 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<el-form :model="formData" :rules="formRules" ref="dataForm">
<el-button-group style="display: flex;margin: -50px 0 10px 80%; height: 35px">
<!-- <el-button-->
<!-- type="primary"-->
<!-- @click.native="submit('1')"-->
<!-- style="margin: -50px 0 10px auto; height: 35px"-->
<!-- >保存订单-->
<!-- </el-button-->
<!-- >-->
<el-button
type="primary"
@click.native="closeDialog()"
>草稿保存
</el-button
>
<el-button
type="primary"
@click.native="submit('0')"
>提交订单
</el-button
>
</el-button-group>
<el-row :gutter="20">
<el-col :span="2">
<div class="ao-text">
<span>入库单号</span>
</div>
</el-col>
<el-col :span="8">
<el-form-item prop="corpOrderId">
<el-input v-model="formData.corpOrderId" auto-complete="off"
:disabled="corpOrderIdDisabled"></el-input>
</el-form-item>
</el-col>
<el-col :span="2">
<div class="ao-text">
<span>日期:</span>
</div>
</el-col>
<el-col :span="8">
<el-form-item prop="actDate">
<el-date-picker
v-model="formData.actDate"
type="datetime"
placeholder="日期"
:disabled="true"
style="width: 100%; "
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="2">
<div class="ao-text">
<span>往来单位:</span>
</div>
</el-col>
<el-col :span="8">
<el-form-item prop="fromCorp">
<el-input v-model="formData.fromCorp" auto-complete="off" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="2">
<div class="ao-text">
<span>单据类型:</span>
</div>
</el-col>
<el-col :span="8">
<el-form-item class="query-form-item">
<el-select v-model="formData.billType" placeholder="请选择业务类型">
<el-option
v-for="item in busTypes"
:key="item.name"
:label="item.name"
:value="item.action">
<span style="float: left">{{ item.name }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="2">
<div class="ao-text">
<span>条码:</span>
</div>
</el-col>
<el-col :span="16">
<el-form-item prop="code">
<el-input
@keyup.enter.native="addCode($event)"
v-model="formData.code"
ref='inputRef'
@focus="getInputFocus($event)"
></el-input>
</el-form-item>
</el-col>
<el-col :span="2">
<el-button
type="primary"
size="small"
@click.native.stop="addCode()"
style="height: 31px; margin-left: 20px"
>添加
</el-button
>
</el-col>
<div class="text item" style="margin-left: 30px"> 已扫码条码:{{ total }}
</div>
</el-row>
<el-table v-loading="loading" :data="codeArray" style="width: 100%;" max-height="350" height="350"
ref="multipleTable">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column label="序号" type="index" width="100"></el-table-column>
<el-table-column
label="条码"
prop="code"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="扫码数量"
prop="count"
width="200"
show-overflow-tooltip
></el-table-column>
<el-table-column label="操作" fixed="right" width="250">
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click.native.stop="deleteCode(scope.$index, scope.row)"
>删除
</el-button
>
</template>
</el-table-column>
</el-table>
<div class="block">
<el-pagination
@current-change="handleCurrentChange"
layout="prev, pager, next"
:page-size="query.limit"
:total="total">
</el-pagination>
</div>
</el-form>
</div>
</template>
<script>
import {
orderGetUdi, orderList, codeList, orderListError,
mergeOrder, postOrdersWeb, errorCodeList, addOrderWeb, deleteCodesTempById, submitOrderWeb
} from "../../api/inout/order";
import draggable from "vuedraggable";
import {saveAs} from "file-saver";
import {getBussinessType} from "../../api/basic/bussinessType";
import {parseTime} from "../../filtres/index";
import store from "../../store";
const formJson = {
corpOrderId: "",
code: "",
actor: "",
fromCorpId: "",
fromCorp: "医院",
fromType: "网页端",
actDate: new Date(),
billType: null,
};
export default {
name: "idQuery",
props: {
closeDialog: {
type: Function,
required: true,
},
idQuery: {
type: Object,
required: true,
},
},
data() {
return {
codeQuery: {
code: "",
},
query: {
code: "",
corpOrderId: "",
page: 1,
limit: 10,
},
actionMap: {
1: "ProduceWareHouseIn",
2: "PurchaseWareHouseIn",
3: "ReturnWareHouseIn",
4: "AllocateWareHouseIn",
5: "SalesWareHouseOut",
6: "ReturnWareHouseOut",
7: "AllocateWareHouseOut",
8: "DestoryWareHouseOut",
9: "DirectAllocateWareHouseOut",
10: "ReworkWareHouseOut",
11: "CheckWareHouseOut",
12: "CodeReplace",
13: "CodeDestory",
14: "StockCheck",
15: "deliveryNote",
},
mainActionMap: {
1: "WareHouseIn",
2: "WareHouseIn",
3: "WareHouseIn",
4: "WareHouseIn",
5: "WareHouseOut",
6: "WareHouseOut",
7: "WareHouseOut",
8: "WareHouseOut",
9: "WareHouseOut",
10: "WareHouseOut",
11: "WareHouseOut",
12: "none",
13: "none",
14: "none",
15: "none",
},
formData: formJson,
formRules: {
temp: [
{required: true, message: "请输入条码", trigger: "blur"}
],
},
corpOrderIdDisabled: false,
codeArray: [],
total: 0,
loading: false,
index: null,
formLoading: false,
formVisible: false,
deleteLoading: false,
orderNo: null,
busTypes: [],
};
},
components: {
draggable,
},
methods: {
submit(formName) {
if (this.total < 1) {
this.$message.error('未添加条码');
return;
}
let tQuery = {
orderId: this.idQuery.id
}
submitOrderWeb(tQuery)
.then((response) => {
console.log(response)
if (response.code === 20000) {
this.$message.success("提交成功");
this.closeDialog();
} else {
this.$message.error(response.message);
}
this.loading = false;
});
// if (this.$refs.multipleTable.selection.length < 1) {
// this.$message.error('未选择条码');
// return;
// }
// this.formData.corpOrderId = this.formData.corpOrderId.trim();
// if (this.formData.corpOrderId === null || this.formData.corpOrderId === '') {
// let date = new Date();
// this.formData.corpOrderId = parseTime(date, '{y}{m}{d}{h}{i}{s}') + Math.ceil(Math.random() * 89 + 10);
// }
// for (let i = 0; i < this.codeArray.length; i++) {
// this.codeArray[i].corpOrderId = this.formData.corpOrderId;
// }
// let postOrder = {
// billType: this.formData.billType,
// codes: this.$refs.multipleTable.selection
// }
// let postOrderList = [];
// postOrderList.push(postOrder);
// let tQuery = {
// postOrders: postOrderList,
// submitType: formName,
// oldOrderId: this.idQuery.id !== null && this.idQuery.id !== '' ? this.idQuery.id : '',
// }
// let message = formName === '0' ? "提交" : "保存";
// this.$confirm("是否" + message + "订单?", "提示", {
// confirmButtonText: "确定",
// cancelButtonText: "取消",
// type: "warning",
// }).then(() => {
// postOrdersWeb(tQuery).then((response) => {
// if (response.code === 20000) {
// this.$message.success(message + "成功")
// this.closeDialog();
// } else {
// this.$message.error(response.message);
// }
// });
// }).catch(() => {
// });
},
// 刷新表单
resetForm() {
if (this.$refs["dataForm"]) {
// 清空验证信息表单
this.$refs["dataForm"].clearValidate();
// 刷新表单
this.$refs["dataForm"].resetFields();
this.getList();
}
},
addCode(event) {
if (event == null) {
this.$refs.inputRef.focus();
} else event.target.select();
this.formData.corpOrderId = this.formData.corpOrderId.trim();
if (this.$isBlank(this.formData.corpOrderId)) {
let date = new Date();
this.formData.corpOrderId = parseTime(date, '{y}{m}{d}{h}{i}{s}') + Math.ceil(Math.random() * 89 + 10);
}
this.formData.code = this.formData.code.trim();
if (this.$isBlank(this.formData.code)) return;
this.loading = true;
let tQuery = Object.assign(JSON.parse(JSON.stringify(this.formData)));
tQuery.orderId = this.idQuery.id;
tQuery.actDate = parseTime(this.formData.actDate, '{y}-{m}-{d} {h}:{i}:{s}');
tQuery.mainAction = this.mainActionMap[tQuery.billType];
tQuery.action = this.actionMap[tQuery.billType];
addOrderWeb(tQuery).then((response) => {
if (response.code === 20000) {
this.idQuery.id = response.data;
this.corpOrderIdDisabled = true;
this.getCodeList();
} else {
this.$alert(response.message, '提示', {
confirmButtonText: '确定',
type: 'warning',
closeOnClickModal: true,
callback: action => {
this.$refs.inputRef.focus();
}
});
// this.$message.error(response.message);
}
this.loading = false;
});
},
deleteCode(index, row) {
console.log(row.id)
this.$confirm("是否删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
this.loading = true;
let tQuery = {
id: row.id
}
deleteCodesTempById(tQuery)
.then((response) => {
if (response.code === 20000) {
this.getCodeList();
} else {
this.$message.error(response.message);
}
this.loading = false;
});
}).catch(() => {
});
},
getInputFocus(event) {
event.currentTarget.select();
},
tableSelection() {
this.$refs.multipleTable.clearSelection();
this.$refs.multipleTable.toggleAllSelection();
},
handleSizeChange(val) {
this.query.limit = val;
this.getCodeList();
},
handleCurrentChange(val) {
this.query.page = val;
this.getCodeList();
},
getCodeList() {
this.loading = true;
this.query.orderId = this.idQuery.id;
errorCodeList(this.query) //查找该单号下的所有条码
.then((response) => {
this.codeArray = response.data.list || [];
this.total = response.data.total || 0;
for (let i = 0; i < this.codeArray.length; i++) {
this.codeArray[i].fromType = this.formData.fromType;
this.codeArray[i].billType = this.formData.billType;
}
this.tableSelection();
this.loading = false;
})
.catch(() => {
this.loading = false;
this.list = [];
this.total = 0;
});
},
getBusType() {
let query = {
enabled: true,
};
getBussinessType(query)
.then((response) => {
this.busTypes = response.data.list || [];
this.billType = this.busTypes[0].action;
// this.getList();
})
.catch(() => {
});
},
intentBack() {
this.$router.go(-1);
},
},
filters: {},
mounted() {
document.body.ondrop = function (event) {
event.preventDefault();
event.stopPropagation();
};
},
created() {
this.formData.code = '';
this.formData.actDate = new Date();
this.codeArray = [];
this.formData.fromCorp = store.getters.companyName;// store.getters.customerId === 110 ? '医院' : store.getters.companyName;
this.formData.customerId = store.getters.customerId;
this.getBusType();
if (this.$isNotBlank(this.idQuery.id)) {
this.formData.actDate = new Date(this.idQuery.actDate);
this.formData.corpOrderId = this.idQuery.corpOrderId;
this.corpOrderIdDisabled = true;
this.getCodeList();
} else {
this.corpOrderIdDisabled = false;
if (JSON.stringify(this.$route.query) === '{}') {
// this.formData.corpOrderId = new Date().getTime() + (Math.ceil(Math.random() * 10 + 10) + '');
let date = new Date();
this.formData.corpOrderId = parseTime(date, '{y}{m}{d}{h}{i}{s}') + Math.ceil(Math.random() * 89 + 10);
} else {
// 将参数拷贝进查询对象
let query = this.$route.query;
this.orderNo = query.id;
this.query = Object.assign(this.query, query);
this.query.limit = parseInt(this.query.limit);
this.query.corpOrderId = query.id;
// 加载表格数据
// this.getCodeList();
}
}
},
};
</script>
<style>
.ao-text {
width: 100%;
font-size: 13px;
font-family: "Microsoft YaHei";
float: right;
text-align: right;
margin-top: 10px;
}
</style>