委托验收,扫码校验,bug修复,等等,大修改

master
anthonywj 3 years ago
parent 169f4fa538
commit 7cc4d8c8cc

11
package-lock.json generated

@ -19,6 +19,7 @@
"node-sass": "^6.0.1",
"nprogress": "^0.2.0",
"pinyin": "^2.10.2",
"qrcodejs2": "^0.0.2",
"vue": "2.5.16",
"vue-clipboard2": "^0.3.3",
"vue-router": "^3.0.1",
@ -15375,6 +15376,11 @@
"teleport": ">=0.2.0"
}
},
"node_modules/qrcodejs2": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/qrcodejs2/-/qrcodejs2-0.0.2.tgz",
"integrity": "sha1-Rlr+Xjnxn6zsuTLBH3oYYQkUauE="
},
"node_modules/qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
@ -34230,6 +34236,11 @@
"integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
"dev": true
},
"qrcodejs2": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/qrcodejs2/-/qrcodejs2-0.0.2.tgz",
"integrity": "sha1-Rlr+Xjnxn6zsuTLBH3oYYQkUauE="
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",

@ -21,6 +21,7 @@
"node-sass": "^6.0.1",
"nprogress": "^0.2.0",
"pinyin": "^2.10.2",
"qrcodejs2": "^0.0.2",
"vue": "2.5.16",
"vue-clipboard2": "^0.3.3",
"vue-router": "^3.0.1",

@ -1,5 +1,5 @@
{
"BASE_URL": "http://127.0.0.1:9996",
"SERVER_IP": "http://127.0.0.1:9996",
"BASE_URL": "http://192.168.0.109:9996",
"SERVER_IP": "http://192.168.0.109:9996",
"hosp_name": "诏安县总医院(测试)"
}

@ -0,0 +1,44 @@
import axios from "../../utils/axios";
export function getEntrustRece(query) {
return axios({
url: "/spms/entrust/rece/filter",
method: "get",
params: query
});
}
export function deleteEntrustRece(query) {
return axios({
url: "/spms/entrust/rece/delete",
method: "post",
data: query
});
}
export function updateEntrustRece(query) {
return axios({
url: "/spms/entrust/rece/update",
method: "post",
data: query
});
}
export function insertEntrustRece(query) {
return axios({
url: "/spms/entrust/rece/add",
method: "post",
data: query
});
}
export function filterNoUseBusType(query) {
return axios({
url: "/spms/entrust/rece/filterAllNoUse",
method: "get",
params: query
});
}

@ -38,3 +38,11 @@ export function insertBussinessType(query) {
data: query
});
}
export function filterAllByUser(query) {
return axios({
url: "/udiwms/bussinessType/filterAllByUser",
method: "post",
data: query
});
}

@ -34,3 +34,14 @@ export function statDetailProducts(query) {
});
}
export function clearAllProducts(query) {
return axios(
{
url: "/spms/prein/inv/products/clearAll",
method: "post",
data: query
}
)
}

@ -0,0 +1,9 @@
import axios from "@/utils/axios";
export function saveCode(query) {
return axios({
url: "/warehouse/inout/saveTempCode",
method: "post",
data: query
});
}

@ -75,6 +75,15 @@ export function addOrderWeb(query) {
});
}
export function enterCodeWeb(query) {
return axios({
url: "/warehouse/inout/enterCode",
method: "post",
data: query
});
}
export function postOrdersWeb(query) {
return axios({
url: "/warehouse/inout/postOrdersWeb",

@ -269,3 +269,15 @@ export function stockOrderChange(query) {
}
export function updateStatus(query) {
return axios({
url: "/spms/inout/order/web/updateStatus",
method: "post",
data: query
});
}

@ -90,6 +90,7 @@ import receiveOrderNew from "../views/thrsys/ThrOrdedrReceiveAdd.vue";
import receiveOrderSearch from "../views/thrsys/ThrOrdedrReceiveSearch.vue";
import spsSyncData from "../views/thrsys/SysUdimsData.vue";
import syncConfig from "../views/thrsys/SysUdimsConfig.vue";
import BasicEntrutsRece from "../views/basic/BasicEntrutsRece.vue";
//库存
import invProducts from "../views/inventory/InvProducts.vue";
@ -98,6 +99,7 @@ import invPreInProducts from "../views/inventory/invPreInProducts"
import supInvProducts from "../views/inventory/supInvProducts.vue";
import supInvPreProducts from "../views/inventory/supInvPreProducts"
import supInvPreInProducts from "../views/inventory/supInvPreInProducts"
import invUdiTrace from "@/views/inventory/invUdiTrace";
import invUdiTraceOrder from "@/views/inventory/invUdiTraceOrder";
import additionalOrder from "@/views/warehouse/AdditionalOrder";
@ -237,35 +239,50 @@ export const asyncRouterMap = [
// noDropdown: true,
children: [
{
path: "authAdmin",
component: authAdmin,
name: "用户管理",
icon: "",
meta: {
authRule: ["admin/auth_admin"]
}
},
{
path: "authRole",
component: authRole,
name: "角色管理",
icon: "",
meta: {
authRule: ["admin/auth_role"]
}
},
{
path: "authPermissionRule",
component: authPermissionRule,
path: "/authMange",
component: Empty,
name: "权限管理",
redirect: "/authMange/authAdmin",
icon: "",
meta: {
authRule: ["admin/auth_permission_rule"]
}
authRule: ["authMange/home"]
},
children: [
{
path: "authAdmin",
component: authAdmin,
name: "用户管理",
icon: "",
meta: {
authRule: ["authMange/auth_admin"]
}
},
{
path: "authRole",
component: authRole,
name: "角色管理",
icon: "",
meta: {
authRule: ["authMange/auth_role"]
}
},
{
path: "authPermissionRule",
component: authPermissionRule,
name: "功能配置",
icon: "",
meta: {
authRule: ["authMange/auth_permission_rule"]
}
},
]
},
{
path: "phoneRegisterManage",
component: phoneRegisterManage,
@ -275,15 +292,6 @@ export const asyncRouterMap = [
authRule: ["admin/phoneRegisterManage"]
}
},
// {
// path: "systemParamConfig",
// component: systemParamConfig,
// name: "参数设置",
// icon: "",
// meta: {
// authRule: ["param/system_param_config"]
// }
// },
{
path: "/systemParam",
@ -386,6 +394,16 @@ export const asyncRouterMap = [
authRule: ["admin/spsSyncData"]
}
},
{
path: "BasicEntrutsRece",
name: "委托验收",
component: BasicEntrutsRece,
meta: {
authRule: ["basic/BasicEntrutsRece"]
}
},
// {
// path: "systemPDFTemplate",
// component: systemPDFTemplate,
@ -1124,7 +1142,16 @@ export const asyncRouterMap = [
authRule: ["spInv/spPreInvProducts"]
}
},
{
path: "supInvPreInProducts",
component: supInvPreInProducts,
name: "预验收库存查询",
icon: "",
hidden: false,
meta: {
authRule: ["spInv/supInvPreInProducts"]
}
},
]
},

@ -0,0 +1,266 @@
<template>
<div>
<el-card>
<el-form :inline="true" :model="filterQuery" class="query-form" size="mini">
<el-form-item class="query-form-item">
<el-input
v-model="filterQuery.name"
style="width: 250px"
placeholder="单据类型名称"
></el-input>
</el-form-item>
<el-form-item>
<el-button-group style="margin-left: 10px;display:flex;">
<el-button type="primary" icon="el-icon-refresh" @click="onReset"></el-button>
<el-button type="primary" icon="search" @click="getList"></el-button>
<el-button type="primary" icon="search" @click="handleAddClick"
>新增
</el-button
>
</el-button-group>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="list" style="width: 100%">
<el-table-column label="序号" type="index" width="60" fixed></el-table-column>
<el-table-column label="扫码单据类型" prop="curName" fixed></el-table-column>
<el-table-column label="委托验收仓库" prop="entrustInvName" fixed>
</el-table-column>
<el-table-column label="委托验收人" prop="employeeName" fixed>
</el-table-column>
<el-table-column label="操作" fixed="right">
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click.native.stop="handleModifyClick(scope.row)"
>编辑
</el-button
>
<el-button
type="text"
size="small"
@click.native.stop="deleteDialog(scope.row)"
>删除
</el-button
>
</template>
</el-table-column>
</el-table>
<el-dialog
title="新增委托验收"
:visible.sync="addDialogVisible"
width="70%"
:close-on-click-modal="false"
:close-on-press-escape="false"
v-if="addDialogVisible"
>
<modifyDialog :inputQuery="inputQuery"></modifyDialog>
<div style="text-align: center">
<el-button type="primary" size="small" icon="search" @click="onAddSubmit"
>提交
</el-button
>
<el-button type="primary" size="small" icon="search" @click="cancelDialog"
>取消
</el-button
>
</div>
</el-dialog>
<el-dialog
title="编辑委托验收"
:visible.sync="modifyDialogVisible"
width="70%"
:close-on-click-modal="false"
:close-on-press-escape="false"
v-if="modifyDialogVisible"
>
<modifyDialog :inputQuery="inputQuery"></modifyDialog>
<div style="text-align: center">
<el-button type="primary" size="small" icon="search" @click="onModifySubmit"
>提交
</el-button
>
<el-button type="primary" size="small" icon="search" @click="cancelDialog"
>取消
</el-button
>
</div>
</el-dialog>
<el-pagination
:page-size="filterQuery.limit"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="total"
></el-pagination>
</el-card>
</div>
</template>
<script>
import {
getEntrustRece,
deleteEntrustRece,
updateEntrustRece,
insertEntrustRece,
} from "../../api/basic/EntrustRece";
import modifyDialog from "./BasicEntrutsReceModify";
export default {
data() {
return {
filterQuery: {
name: "",
page: 1,
limit: 20,
},
loading: false,
addDialogVisible: false,
modifyDialogVisible: false,
list: [],
inputQuery: {
action: "",
name: "",
entrustInv: "",
entrustUser: "",
entrustAction: null,
finishRece: false,
},
enableMap: {
true: "是",
false: "否",
},
mainActionMap: {
WareHouseIn: "入库",
WareHouseOut: "出库"
},
fileList: [],
total: 0,
multipleSelection: [],
uploadFileUrl: null,
headers: {},
};
},
methods: {
onReset() {
this.$router.push({
path: "",
});
this.filterQuery = {
name: "",
page: 1,
limit: 20,
};
this.getList();
},
cancelDialog() {
this.modifyDialogVisible = false;
this.addDialogVisible = false;
},
handleCurrentChange(val) {
this.filterQuery.page = val;
this.getList();
},
getList() {
this.loading = true;
getEntrustRece(this.filterQuery)
.then((response) => {
this.loading = false;
this.list = response.data.list || [];
this.total = response.data.total || 0;
})
.catch(() => {
this.loading = false;
this.list = [];
this.total = 0;
});
},
onAddSubmit() {
insertEntrustRece(this.inputQuery)
.then((response) => {
this.loading = false;
this.cancelDialog();
this.getList();
})
.catch(() => {
this.loading = false;
this.cancelDialog();
});
},
onModifySubmit() {
insertEntrustRece(this.inputQuery)
.then((response) => {
this.loading = false;
this.cancelDialog();
this.getList();
})
.catch(() => {
this.loading = false;
this.cancelDialog();
});
},
handleAddClick() {
this.inputQuery = {enable: true, expireTip: true};
this.addDialogVisible = true;
},
handleModifyClick(row) {
this.inputQuery = row;
this.modifyDialogVisible = true;
},
deleteDialog(rowId) {
this.$confirm("此操作将永久删除该委托验收信息, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.deleteOrders(rowId);
})
.catch(() => {
});
},
deleteOrders(data) {
this.loading = true;
let tquery = {
id: data.id + "",
};
deleteEntrustRece(tquery)
.then((response) => {
this.getList();
if (response.code == 20000) {
this.$message({
type: "success",
message: "删除成功!",
});
} else {
this.$message.error(response.message);
}
})
.catch(() => {
});
},
},
components: {
modifyDialog,
},
mounted() {
},
created() {
this.getList();
},
};
</script>

@ -0,0 +1,259 @@
<template>
<div>
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="10" class="el-col">
<div class="text item">
<div class="itemTag">
<span>扫码单据类型:&nbsp;</span>
</div>
<el-select v-model="inputQuery.action" placeholder="请选择" clearable @change="actionChange">
<el-option
v-for="item in busTypes"
:key="item.action"
:label="item.name"
:value="item.action">
<span style="float: left">{{ item.localName }}</span>
</el-option>
</el-select>
</div>
</el-col>
<el-col :span="10" class="el-col">
<div class="text item">
<div class="itemTag">
<span>当前仓库:&nbsp;</span>
</div>
<el-select v-model="inputQuery.entrustInv" placeholder="当前仓库" @change="invChange" clearable>
<el-option
v-for="item in storageList"
:key="item.code"
:label="item.name"
:value="item.code">
<span style="float: left">{{ item.name }}</span>
</el-option>
</el-select>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="10" class="el-col">
<div class="text item">
<div class="itemTag">
<span>委托验收人:&nbsp;</span>
</div>
<el-select v-model="inputQuery.entrustUser" placeholder="委托验收人">
<el-option
v-for="item in entrustUserArray"
:key="item.userid"
:label="item.employeeName"
:value="item.userid">
<span style="float: left">{{ item.employeeName }}</span>
</el-option>
</el-select>
</div>
</el-col>
<el-col :span="10" class="el-col">
<div class="text item">
<div class="itemTag">
<span>委托验收人仓库:&nbsp;</span>
</div>
<el-select v-model="inputQuery.entrustInv" placeholder="委托验收人仓库" @change="invChange">
<el-option
v-for="item in storageList"
:key="item.code"
:label="item.name"
:value="item.code">
<span style="float: left">{{ item.name }}</span>
</el-option>
</el-select>
</div>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex">
<el-col :span="10" class="el-col">
<div class="text item">
<div class="itemTag">
<span>委托生成单据类型:&nbsp;</span>
</div>
<el-select v-model="inputQuery.entrustAction" placeholder="单据类型">
<el-option
v-for="item in entrustBusArray"
:key="item.action"
:label="item.name"
:value="item.action">
<span style="float: left">{{ item.name }}</span>
</el-option>
</el-select>
</div>
</el-col>
<el-col :span="4" class="el-col">
<div class="text item">
<el-checkbox v-model="inputQuery.finishRece">
</el-checkbox>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import {
getBasicThirdSys,
} from "../../api/basic/basicThirdSys";
import {
getLocalJoinNoUse
} from "../../api/basic/busLocalType";
import {filterAll, filterAllByUser, warehouseBussinessTypeList, warehouseUserList} from "@/api/basic/invWarehouse";
import {getBasicUnitMaintains} from "@/api/basic/basicUnitMaintain";
import {filterNoUseBusType} from "@/api/basic/EntrustRece";
export default {
name: "inputQuery",
props: {
inputQuery: {
type: Object,
required: true,
},
},
data() {
return {
filterQuery: {
enabled: true,
isBuType: true,
isFilterBind: true,
},
storageList: [],
orderTypeList: [],
fromSpecialOptions: [],
thirdSys: [],
busTypes: [],
entrustBusArray: [],
entrustUserArray: [],
}
},
methods: {
getList() {
getBasicThirdSys(this.filterQuery)
.then((response) => {
this.thirdSys = response.data.list || [];
})
.catch(() => {
this.loading = false;
this.list = [];
});
let query = {
curAction: this.inputQuery.localAction,
};
getLocalJoinNoUse(query)
.then((response) => {
this.localTypes = response.data.list || [];
})
.catch(() => {
this.loading = false;
this.localTypes = [];
});
},
getStorage() {
this.storageList = [];
filterAll()
.then((response) => {
this.storageList = response.data || [];
})
.catch(() => {
});
},
getOrderType() {
filterNoUseBusType().then((response) => {
this.busTypes = response.data || [];
}).catch(() => {
})
},
invChange(code) {
let query = {
code: code
}
//
warehouseUserList(query).then((res) => {
this.entrustUserArray = res.data;
}).catch((error) => {
this.$message.error("用户数据加载失败")
});
//
warehouseBussinessTypeList(query).then((res) => {
this.entrustBusArray = res.data;
}).catch((error) => {
this.$message.error("单据类型数据加载失败")
});
},
actionChange(action){
}
},
computed: {
corpType() {
return this.inputQuery.corpType;
}
},
created() {
this.getOrderType();
this.getList();
this.getStorage();
if (this.$isNotBlank(this.inputQuery.entrustInv)) {
this.invChange(this.inputQuery.entrustInv);
}
},
};
</script>
<style scoped>
.itemTag {
float: left;
text-align: left;
margin-top: 10px;
width: 100px;
}
.text {
font-size: 13px;
font-family: "Microsoft YaHei";
}
.el-row {
display: flex;
flex-wrap: wrap;
margin-bottom: 20px;
}
.el-col {
border-radius: 4px;
flex-wrap: wrap;
}
</style>

@ -71,9 +71,6 @@
</template>
</el-table-column>
<el-table-column label="关联业务单据" prop="localName" fixed></el-table-column>
<!-- <el-table-column label="第三方系统" prop="thirdName" fixed></el-table-column>-->
<el-table-column label="操作" fixed="right">
<template slot-scope="scope">
<el-button

@ -36,7 +36,27 @@
<span>第三方单据类型:&nbsp;</span>
</div>
<el-select v-model="inputQuery.originAction" placeholder="请选择第三方系统单据类型" clearable="true">
<!-- <el-select v-model="inputQuery.originAction" placeholder="请选择第三方系统单据类型" clearable="true">-->
<!-- <el-option-->
<!-- v-for="item in originTypes"-->
<!-- :key="item.name"-->
<!-- :label="item.name"-->
<!-- :value="item.action">-->
<!-- <span style="float: left;font-size: 13px">{{ item.name }}</span>-->
<!-- <span style="float: right; color: #8492a6; font-size: 13px;margin-left: 10px">{{-->
<!-- item.thirdSysName-->
<!-- }}</span>-->
<!-- </el-option>-->
<!-- </el-select>-->
<el-select
v-model="inputQuery.originAction"
filterable
remote
clearable="true"
reserve-keyword
placeholder="请选择第三方系统单据类型"
:loading="loading"
>
<el-option
v-for="item in originTypes"
:key="item.name"
@ -44,7 +64,7 @@
:value="item.action">
<span style="float: left;font-size: 13px">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px;margin-left: 10px">{{
item.thirdSysName
item.action
}}</span>
</el-option>
</el-select>
@ -110,7 +130,8 @@
<el-col :span="4" class="el-col">
<div class="text item">
<el-checkbox v-model="inputQuery.preIn" @change="preInChange"
:disabled="inputQuery.mainAction=='WareHouseOut' || inputQuery.mainAction==null">预验收</el-checkbox>
:disabled="inputQuery.mainAction=='WareHouseOut' || inputQuery.mainAction==null">预验收
</el-checkbox>
</div>
</el-col>
@ -273,6 +294,7 @@ export default {
},
changeList: [],
visibleChange: false,
loading: false,
}
},
methods: {

@ -704,7 +704,13 @@
>是否寄售
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoBatch" class=""
>是否允许无批次号扫码
>允许无批次号
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoExpire" class=""
>允许无失效日期
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoProduct" class=""
>允许无生产日期
</el-checkbox>
</div>
</el-col>
@ -837,7 +843,9 @@ export default {
isUseDy: false,
isLock: null,
isAdavence: null,
allowNoBatch: null
allowNoBatch: null,
allowNoExpire:null,
allowNoProduct:null,
},
defaultSys: null,
isImport: false,
@ -1024,11 +1032,15 @@ export default {
removeRl(query)
.then((response) => {
if (response.code == 20000) {
this.getThirdSysDetail()();
this.$message({
type: "success",
message: "删除成功!",
});
this.getList();
this.cancelDialog();
this.getThirdSysDetail()();
} else {
this.$message.error(response.message);
}

@ -72,19 +72,6 @@
<el-button-group>
<el-button type="primary" icon="el-icon-refresh" @click="onReset"></el-button>
<el-button type="primary" icon="search" @click="getList"></el-button>
<!-- <el-button type="primary" icon="search" @click="intentDetail"-->
<!-- >关联选入-->
<!-- </el-button>-->
<!-- <el-button type="primary" icon="search" @click="intentImportUdi"-->
<!-- >选入DI器械-->
<!-- </el-button-->
<!-- >-->
<!-- <el-button type="primary" icon="search" @click="intentImportErp"-->
<!-- >选入产品信息-->
<!-- </el-button-->
<!-- >-->
<el-button type="primary" icon="search" @click="lockProducts('3')" v-if="isSpCombine"
>锁定
@ -684,8 +671,14 @@
<el-checkbox v-model="editQuery.isAdavence" disabled
>是否寄售
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoBatch" disabled
>是否允许无批次号扫码
<el-checkbox v-model="editQuery.allowNoBatch" class=""
>允许无批次号
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoExpire" class=""
>允许无失效日期
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoProduct" class=""
>允许无生产日期
</el-checkbox>
</div>
</el-col>

@ -435,6 +435,7 @@ export default {
this.combineQuery.thirdId = "";
}
this.combineQuery.manufactory = this.currentRow.manufactory;
this.combineQuery.price = this.currentRow.price;
combineUdi(this.combineQuery)
.then((response) => {
if (response.code == 20000) {

File diff suppressed because it is too large Load Diff

@ -709,8 +709,14 @@
<el-checkbox v-model="editQuery.isAdavence"
>是否寄售
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoBatch"
>是否允许无批次号扫码
<el-checkbox v-model="editQuery.allowNoBatch" class=""
>允许无批次号
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoExpire" class=""
>允许无失效日期
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoProduct" class=""
>允许无生产日期
</el-checkbox>
</div>
</el-col>
@ -1257,8 +1263,14 @@
<el-checkbox v-model="editQuery.isAdavence" disabled
>是否寄售
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoBatch" disabled
>是否允许无批次号扫码
<el-checkbox v-model="editQuery.allowNoBatch" class=""
>允许无批次号
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoExpire" class=""
>允许无失效日期
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoProduct" class=""
>允许无生产日期
</el-checkbox>
</div>
</el-col>

@ -49,10 +49,6 @@
<el-button type="primary" icon="search" @click="selectExport"
>选中导入
</el-button>
<!-- <el-button type="primary" icon="search" @click="allExport"-->
<!-- >结果全部导入-->
<!-- </el-button>-->
</el-button-group>
</el-form-item>
</el-row>
@ -92,16 +88,6 @@
prop="ggxh"
show-overflow-tooltip
></el-table-column>
<!--<el-table-column-->
<!--label="ERP产品ID"-->
<!--prop="thirdId"-->
<!--show-overflow-tooltip-->
<!--&gt;</el-table-column>-->
<!--<el-table-column-->
<!--label="ERP产品名称"-->
<!--prop="thirdName"-->
<!--show-overflow-tooltip-->
<!--&gt;</el-table-column>-->
<el-table-column
label="注册/备案凭证"
@ -116,12 +102,6 @@
show-overflow-tooltip
></el-table-column>
<!-- <el-table-column-->
<!-- label="配送企业"-->
<!-- prop="supName"-->
<!-- show-overflow-tooltip-->
<!-- ></el-table-column>-->
<el-table-column width="200" label="操作" fixed="right">
<template slot-scope="scope">
<el-button

@ -387,12 +387,9 @@
};
</script>
<style type="text/scss" lang="scss">
@import "../../styles/mixin";
.el-table .cell {
white-space: pre-wrap;
}
.el-header {
/*background-color: #eef1f6;*/
color: #333;

@ -14,11 +14,7 @@
</el-form-item>
<el-form-item>
<el-button-group>
<!-- <el-button-->
<!-- type="primary"-->
<!-- icon="el-icon-refresh"-->
<!-- @click="onReset"-->
<!-- ></el-button>-->
<el-button type="primary" icon="search" @click="onSubmit"
>查询
</el-button
@ -51,25 +47,7 @@
{{ (scope.row.inCount - scope.row.outCount) }}
</template>
</el-table-column>
<!-- <el-table-column label="操作" width="120" fixed="right">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- type="text"-->
<!-- size="small"-->
<!-- @click.native.stop="intentDetail(scope.row)"-->
<!-- >详情-->
<!-- </el-button-->
<!-- >-->
<!-- <el-button-->
<!-- type="text"-->
<!-- size="small"-->
<!-- @click.native.stop="deleteDialog(scope.row.id)"-->
<!-- >删除-->
<!-- </el-button-->
<!-- >-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
</el-card>

@ -58,6 +58,10 @@
>查询
</el-button
>
<el-button type="primary" icon="search" @click="clearAll"
>清空库存
</el-button
>
</el-button-group>
</el-form-item>
</el-row>
@ -133,7 +137,7 @@
<script>
import {
filterProducts,
deleteProducts,
deleteProducts,clearAllProducts
} from "../../api/inventory/InvPreInProducts";
import draggable from "vuedraggable";
import codeDetail from "./InvPreInProductsDetail";
@ -271,6 +275,36 @@ export default {
.catch(() => {
});
},
clearAll(){
this.$confirm("此操作将永久清空所有预验收库存信息, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let query={id:1};
clearAllProducts(query)
.then((response) => {
if (response.code == 20000) {
this.getList();
this.$message({
type: "success",
message: "删除成功!",
});
} else {
this.$message.error(response.message);
}
})
})
.catch(() => {
});
},
findMethod(query) {
console.log(query);
this.fromOptions = [];

@ -0,0 +1,389 @@
<template>
<div>
<el-card>
<el-form :inline="true" :model="filterQuery" size="mini">
<el-row style="width: 100%">
<el-form-item class="query-form-item">
<el-input v-model="filterQuery.nameCode" placeholder="产品标识DI"></el-input>
</el-form-item>
<el-form-item class="query-form-item">
<el-input v-model="filterQuery.productsName" placeholder="产品名称"></el-input>
</el-form-item>
<el-form-item class="query-form-item">
<el-input v-model="filterQuery.batchNo" placeholder="批次号"></el-input>
</el-form-item>
<el-form-item class="query-form-item">
<el-select
v-model="filterQuery.supId"
filterable
remote
clearable="true"
reserve-keyword
placeholder="请输入供应商名称"
:remote-method="findMethod"
size="mini"
:loading="loading"
>
<el-option
v-for="item in fromOptions"
:key="item.companyName"
:label="item.companyName"
:value="item.customerId"
>
<span style="float: left">{{ item.companyName }}</span>
</el-option>
</el-select>
</el-form-item>
</el-row>
<el-row style="width: 100%">
<el-form-item class="query-form-item">
<el-input v-model="filterQuery.ggxh" placeholder="规格型号"></el-input>
</el-form-item>
<el-form-item class="query-form-item">
<el-input v-model="filterQuery.zczbhhzbapzbh" placeholder="批准文号"></el-input>
</el-form-item>
<el-form-item class="query-form-item">
<el-input v-model="filterQuery.ylqxzcrbarmc" placeholder="生产厂家"></el-input>
</el-form-item>
<el-form-item>
<el-button-group>
<el-button
type="primary"
icon="el-icon-refresh"
@click="onReset"
></el-button>
<el-button type="primary" icon="search" @click="onSubmit"
>查询
</el-button
>
<el-button type="primary" icon="search" @click="clearAll"
>清空库存
</el-button
>
</el-button-group>
</el-form-item>
</el-row>
</el-form>
<el-table v-loading="loading" :data="list" style="width: 100%">
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="产品标识" prop="nameCode" width="120"></el-table-column>
<el-table-column label="产品名称" prop="cpmctymc" width="180">
</el-table-column>
<el-table-column label="规格型号" prop="ggxh" width="180"></el-table-column>
<el-table-column label="批次号" prop="batchNo" width="120"></el-table-column>
<el-table-column label="生产日期" prop="productionDate" width="120"></el-table-column>
<el-table-column label="失效日期" prop="expireDate" width="120"></el-table-column>
<el-table-column label="入库数量" prop="inCount" width="120"></el-table-column>
<el-table-column label="出库数量" prop="outCount" width="120"></el-table-column>
<el-table-column label="结余数量" prop="reCount" width="120">
<template slot-scope="scope">
{{ (scope.row.inCount - scope.row.outCount) }}
</template>
</el-table-column>
<el-table-column label="生产厂家" prop="ylqxzcrbarmc" v-if="showSup" show-overflow-tooltip
width="120"></el-table-column>
<el-table-column label="供应商" prop="companyName" v-if="showSup" show-overflow-tooltip
width="120"></el-table-column>
<!-- <el-table-column label="仓库" prop="invStorageName" v-if="showSup"-->
<!-- show-overflow-tooltip width="120"></el-table-column>-->
<!-- <el-table-column label="操作" width="120" fixed="right">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button-->
<!-- type="text"-->
<!-- size="small"-->
<!-- @click.native.stop="intentDetail(scope.row)"-->
<!-- >详情-->
<!-- </el-button-->
<!-- >-->
<!-- <el-button-->
<!-- type="text"-->
<!-- size="small"-->
<!-- @click.native.stop="deleteDialog(scope.row.id)"-->
<!-- >删除-->
<!-- </el-button-->
<!-- >-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
</el-card>
<el-dialog
title="库存详情"
:visible.sync="codeDetailVisible"
width="85%"
v-if="codeDetailVisible"
>
<codeDetail
:idQuery="idQuery"
v-on:closeDetailDialog="closeDetailDialog"
></codeDetail>
</el-dialog>
<el-pagination
:page-size="filterQuery.limit"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="total"
></el-pagination>
</div>
</template>
<script>
import {
filterProducts,
deleteProducts,clearAllProducts
} from "../../api/inventory/InvPreInProducts";
import draggable from "vuedraggable";
import codeDetail from "./InvPreInProductsDetail";
import store from "../../store";
import {getBussinessType} from "../../api/basic/bussinessType";
import {filterCustomers} from "@/api/auth/customer";
export default {
data() {
return {
filterQuery: {
cpmctymc: null,
nameCode: null,
relIdFk: null,
batchNo: null,
page: 1,
limit: 20,
customerId: null,
unitFk: null,
},
detailQuery: {
code: null,
productIdFk: null,
page: 1,
limit: 20,
},
list: [],
fromOptions: [],
codeDetailVisible: false,
total: 0,
loading: true,
index: null,
dialogTableVisible: false,
formLoading: false,
dialogVisible: false,
deleteLoading: false,
busTypes: [],
idQuery: null,
showSup: false,
};
},
components: {
draggable,
codeDetail,
},
methods: {
onReset() {
this.$router.push({
path: "",
});
this.filterQuery = {
cpmctymc: null,
nameCode: null,
relIdFk: null,
batchNo: null,
customerId: null,
page: 1, unitFk: null,
limit: 20,
};
this.getList();
},
onSubmit() {
this.loading = true;
this.getList();
},
handleSizeChange(val) {
this.filterQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.filterQuery.page = val;
this.getList();
},
handleUnitClick(row) {
this.curIndex = row.id;
this.dialogTableVisible = true;
},
closeDetailDialog(val) {
this.codeDetailVisible = false;
},
closeDialog() {
this.getList();
},
getList() {
this.loading = true;
this.filterQuery.customerId = store.getters.customerId;
filterProducts(this.filterQuery)
.then((response) => {
console.log(response)
this.loading = false;
this.showSup = response.data.showSup;
this.list = response.data.list || [];
this.total = response.data.total || 0;
})
.catch(() => {
this.loading = false;
this.list = [];
this.total = 0;
});
},
deleteOrders(data) {
this.loading = true;
let query = {
id: data,
}
deleteProducts(query)
.then((response) => {
if (response.code == 20000) {
this.getList();
this.$message({
type: "success",
message: "删除成功!",
});
} else {
this.$message.error(response.message);
}
})
.catch(() => {
});
},
deleteDialog(rowId) {
this.$confirm("此操作将永久删除该订单, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.deleteOrders(rowId);
})
.catch(() => {
});
},
clearAll(){
this.$confirm("此操作将永久清空所有预验收库存信息, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let query={id:1};
clearAllProducts(query)
.then((response) => {
if (response.code == 20000) {
this.getList();
this.$message({
type: "success",
message: "删除成功!",
});
} else {
this.$message.error(response.message);
}
})
})
.catch(() => {
});
},
findMethod(query) {
console.log(query);
this.fromOptions = [];
let cQuery = {
key: query,
customerName: query,
};
// getBasicUnitMaintains(cQuery)
// .then((response) => {
// this.loading = false;
// this.fromOptions = response.data.page.list || [];
// })
// .catch(() => {
// this.loading = false;
// });
filterCustomers(cQuery)
.then((response) => {
this.fromOptions = response.data.list || [];
})
.catch(() => {
this.fromOptions = [];
});
},
intentDetail(row) {
this.idQuery = row;
// this.idQuery.supId = null;
this.idQuery.customerId = null;
this.codeDetailVisible = true;
},
getBusType() {
let query = {
enabled: true,
};
getBussinessType(query)
.then((response) => {
this.busTypes = response.data.list || [];
this.filterQuery.billAction = this.busTypes[0].action;
// this.getList();
})
.catch(() => {
});
},
getActionName(action) {
for (let i = 0; i < this.busTypes.length; i++) {
if (this.busTypes[i].action === action) {
return this.busTypes[i].name;
}
}
},
},
filters: {
statusFilterType(status) {
const statusMap = {
false: "success",
true: "danger",
};
return statusMap[status];
},
},
mounted() {
document.body.ondrop = function (event) {
event.preventDefault();
event.stopPropagation();
};
},
created() {
this.findMethod();
this.getBusType();
let query = this.$route.query;
this.filterQuery = Object.assign(this.filterQuery, query);
this.filterQuery.limit = parseInt(this.filterQuery.limit);
//
this.getList();
},
};
</script>
<style type="text/scss" lang="scss">
</style>

@ -18,14 +18,25 @@
</el-select>
</el-form-item>
<el-form-item class="query-form-item">
<el-date-picker
v-model="syncTime"
type="datetime"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择同步时间">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button-group style="display:flex;">
<el-button type="primary" icon="el-icon-refresh" @click="onReset"></el-button>
<el-button type="primary" icon="search" @click="getList"></el-button>
<el-button type="primary" icon="search" @click="createSchedule(1)"></el-button>
<el-button type="primary" icon="search" @click="createSchedule(2)"></el-button>
<el-button type="primary" icon="search" @click="createSchedule(3)"></el-button>
<el-button type="primary" icon="search" @click="createSchedule(4)">DI</el-button>
<el-button type="primary" icon="search" @click="createScheduleDialog(1)"></el-button>
<el-button type="primary" icon="search" @click="createScheduleDialog(2)"></el-button>
<el-button type="primary" icon="search" @click="createScheduleDialog(3)"></el-button>
<el-button type="primary" icon="search" @click="createScheduleDialog(4)">DI</el-button>
</el-button-group>
</el-form-item>
</el-row>
@ -40,15 +51,16 @@
<el-table-column
label="任务ID"
prop="id"
width="140"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="任务类型"
prop="idDatas"
width="140"
show-overflow-tooltip
>
<template slot-scope="scope">
<span>{{ type[scope.row.idDatas] }}</span>
</template>
@ -56,6 +68,7 @@
<el-table-column
label="状态"
prop="status"
width="140"
show-overflow-tooltip
>
<template slot-scope="scope">
@ -68,14 +81,21 @@
</el-table-column>
<el-table-column
label="开始时间"
width="180"
prop="startTime"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="结束时间"
width="180"
prop="endTime"
show-overflow-tooltip
:formatter="formatterThirdSys"
></el-table-column>
<el-table-column
label="同步信息"
prop="remark"
show-overflow-tooltip
></el-table-column>
<el-table-column label="操作" fixed="right" width="160">
@ -113,6 +133,7 @@ export default {
status: "1",
page: 1,
limit: 10,
syncTime: null,
},
list: [],
headers: {},
@ -123,7 +144,7 @@ export default {
currentRow: null,
editQuery: null,
type: {
"AutoDownloadOrder": "已完成单据",
"AutoDownloadOrder": "扫码单据",
"AutoDownloadBusType": "单据类型",
"AutoDownloadAllData": "基础信息",
"AutoDownloadDiProducts": "国家库DI数据"
@ -149,7 +170,7 @@ export default {
orderScanFinish: null,
dbDiProducts: null,
downstreamEnable: null,
syncTime: null,
},
uploadFileUrl: null,
uploadData: {
@ -157,6 +178,7 @@ export default {
},
templateDlUrl: null,
checked: false,
syncTime: null,
};
},
@ -167,10 +189,10 @@ export default {
});
this.filterQuery = {
id: null,
status: "1",
page: 1,
limit: 20,
};
this.syncTime = null;
this.getList();
},
getList() {
@ -208,6 +230,7 @@ export default {
});
},
saveConfig() {
updateConfig(this.configQuery)
.then((response) => {
this.loading = false;
@ -236,9 +259,28 @@ export default {
}
,
createScheduleDialog(type) {
if (this.$isNotBlank(this.syncTime)) {
this.$confirm("此操作将从"+this.syncTime+"开始同步最新数据,是否继续", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.createSchedule(type);
})
.catch(() => {
});
} else {
this.createSchedule(type);
}
},
createSchedule(type) {
let query = {
createType: type
createType: type,
syncTime: this.syncTime,
}
createSchedule(query)
@ -247,7 +289,14 @@ export default {
if (response.code == 20000) {
this.$message.success("创建成功!");
} else if (response.code == 501) {
this.$message.warning(response.message);
this.$alert(response.message, '提示', {
confirmButtonText: '确定',
type: "warning",
callback: action => {
}
});
} else {
this.$message.error(response.message);
}

@ -21,10 +21,20 @@
>查询
</el-button
>
<el-button type="primary" icon="search" @click="qrCodeGeneration"
>手持终端地址配置
</el-button
>
</el-button-group>
</el-form-item>
</el-row>
</el-form>
<el-dialog title="手持终端服务IP地址设置" :visible.sync="qrCodeVisible" width="27%">
<div id="qrCodeUrl"></div>
<span slot="footer" class="dialog-footer">
<el-button @click="qrCodeVisible = false">取消</el-button>
</span>
</el-dialog>
<el-table v-loading="loading" :data="list" style="width: 100%">
<el-table-column label="序号" type="index"></el-table-column>
@ -119,8 +129,6 @@
<el-button type="primary" @click="noPassRegister"></el-button>
</span>
</el-dialog>
<el-dialog
title="编辑"
:close-on-click-modal="false"
@ -163,7 +171,6 @@
<el-button type="primary" @click="confirmEdit"></el-button>
</span>
</el-dialog>
<el-pagination
:page-size="filterQuery.limit"
@current-change="handleCurrentChange"
@ -175,6 +182,8 @@
<script>
import {registerList, check, deleterKey} from "../../api/auth/deviceCheck";
import QRCode from 'qrcodejs2'
import axios from "axios";
export default {
data() {
@ -202,6 +211,8 @@ export default {
remark: null,
},
editDialogVisible: false,
qrCodeVisible: false,
serverUrl: false,
};
},
@ -316,14 +327,31 @@ export default {
this.checkRegister();
this.centerDialogVisible = false;
},
qrCodeGeneration() {
this.qrCodeVisible = true;
this.$nextTick(function () {
document.getElementById("qrCodeUrl").innerHTML = "";
let qrCodeUrl = new QRCode("qrCodeUrl", {
width: 200,
height: 200,
text: this.serverUrl,
colorDark: "#409EFF",
colorLight: "#fff"
});
});
}
//
},
mounted() {
},
created() {
this.getList();
axios.get("./config.json").then(res => {
//
this.serverUrl = res.data.BASE_URL;
});
},
};
</script>

@ -462,8 +462,14 @@
<el-checkbox v-model="editQuery.isAdavence"
>是否寄售
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoBatch"
>是否允许无批次号扫码
<el-checkbox v-model="editQuery.allowNoBatch" class=""
>允许无批次号
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoExpire" class=""
>允许无失效日期
</el-checkbox>
<el-checkbox v-model="editQuery.allowNoProduct" class=""
>允许无生产日期
</el-checkbox>
</div>
</el-col>

@ -99,7 +99,7 @@
</el-col>
<el-col :span="8">
<el-form-item class="query-form-item" prop="fromCorp"
v-if="curAction.corpType ==0 || curAction.corpType == 3 || (curAction.corpType == 2 && !curAction.genUnit)">
v-if="curAction.corpType ==0 ">
<el-select
v-model="formData.fromCorp"
filterable
@ -145,7 +145,7 @@
</el-select>
</el-form-item>
<el-form-item class="query-form-item" prop="fromCorp"
v-if="curAction.corpType ==2 && curAction.genUnit">
v-if="curAction.corpType ==2">
<el-input v-model="formData.fromCorp" auto-complete="off"
clearable
placeholder="请输入病人住院号"
@ -197,6 +197,7 @@ export default {
},
busTypes: [],
fromOptions: [],
loading:false,
}
},
@ -308,6 +309,13 @@ export default {
// this.formData.locStorageCode = this.curAction.storageCode;
this.findMethod();
},
getActionItem(action) {
for (let i = 0; i < this.busTypes.length; i++) {
if (this.busTypes[i].action === action) {
return this.busTypes[i];
}
}
},
getBusType() {
let query = {
enabled: true,

@ -78,7 +78,7 @@
</el-table-column>
<el-table-column label="往来单位" prop="fromCorp" width="220">
</el-table-column>
<el-table-column label="当前仓库" prop="locStorageCode" width="150">
<template slot-scope="scope">
@ -203,7 +203,7 @@
<el-dialog
title="新增订单"
:visible.sync="addOrderVisible"
width="75%" append-to-body
width="85%" append-to-body
:close-on-click-modal="false"
:close-on-press-escape="false"
v-if="addOrderVisible"

@ -165,8 +165,6 @@
</el-col>
<el-col :span="12" class="el-col">
<div class="text item" style="margin-top: 6px">
<el-checkbox v-model="formData.outChangeEnable"
:disabled="!curAction.changeEnable || corpOrderIdDisabled">允许出库自动缺量补单
@ -218,9 +216,6 @@
<el-row :gutter="20">
<el-col :span="14" style="margin-left: 40px">
</el-col>
<el-col :span="2">
<el-checkbox v-model="sitcomScan"></el-checkbox>
</el-col>
<el-col :span="3">
<div class="text item" style="margin-left: 30px"> 条码数量{{ total }}
@ -240,7 +235,26 @@
prop="code"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="生产日期"
prop="produceDate"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="失效日期"
prop="expireDate"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="批次号"
prop="batchNo"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="序列号"
prop="serialNo"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="供应商"
prop="supName"
@ -250,7 +264,6 @@
<el-table-column
label="扫码数量"
prop="count"
width="200"
show-overflow-tooltip
></el-table-column>
@ -266,21 +279,24 @@
<el-button
type="text"
size="small"
@click.native.stop="bindRl(scope.row)"
>选择产品
</el-button
>
<!-- :disabled="scope.row.relId != null "-->
<el-button
type="text"
size="small"
@click.native.stop="handleUnitClick(scope.row)"
>选择供应商
</el-button
>
<!-- :disabled=" scope.row.supId !=null"-->
<el-button
type="text"
size="small"
@click.native.stop="editCode(scope.row)"
>编辑
</el-button
>
</template>
</el-table-column>
</el-table>
@ -321,6 +337,33 @@
v-on:closeBindDialog="closeBindDialog"
></selectRlDialog>
</el-dialog>
<el-dialog
:title="editTitle"
:visible.sync="editCodeVisible"
append-to-body width="70%"
v-if="editCodeVisible"
>
<editCodeDialog
editTye="2"
:closeCodeDialog="closeCodeDialog"
:codeDetail="codeDetail">
</editCodeDialog>
</el-dialog>
<el-dialog
:title="editTitle"
:visible.sync="editOriginCodeVisible"
append-to-body width="70%"
v-if="editOriginCodeVisible">
<editCodeDialog
:closeCodeDialog="closeCodeDialog"
:repeatAddCode="repeatAddCode"
:codeDetail="formData"
editTye="1">
</editCodeDialog>
</el-dialog>
</div>
@ -329,17 +372,16 @@
<script>
import {
errorCodeList, addOrderWeb, deleteCodesTempById, submitOrderWeb, saveOrderWeb,
updateCodeBindSup, expireTimeCheck
updateCodeBindSup, enterCodeWeb
} from "../../api/warehouse/order";
import {getBussinessType} from "../../api/basic/bussinessType";
import draggable from "vuedraggable";
import {parseTime} from "../../filtres/index";
import store from "../../store";
import {getBasicUnitMaintains} from "../../api/basic/basicUnitMaintain"
import {filterAll, filterAllByLoc, filterAllByUser} from "@/api/basic/invWarehouse";
import {deleteWarehouse, filterAllByLoc, filterAllByUser} from "@/api/basic/invWarehouse";
import {getLocalBusType, getLocalJoinBusType, getLocalJoinByUser} from "../../api/basic/busLocalType";
import DialogSelectUnit from "./DialogSelectUnit";
import selectRlDialog from "./DialogSelectRl";
import editCodeDialog from "./editCode";
import A from "../../plugin/KeyScaner"
@ -366,6 +408,7 @@ export default {
page: 1,
limit: 10,
},
editCodeVisible: false,
busTypes: [],
billAction: null,
actionEnable: false,
@ -381,7 +424,13 @@ export default {
locStorageCode: null,
outChangeEnable: false,
preCheck: false,
batchNo: null,
produceDate: null,
expireDate: null,
serialNo: null,
},
editOriginCodeVisible: false,
curId: null,
storageList: [],
formRules: {
@ -413,11 +462,15 @@ export default {
selectRlTitle: "绑定产品",
selectUnitTitle: "绑定供应商",
sictomText: "",
codeDetail: null,
originCode: "",
checkSuccess: false,
editTitle: "编辑条码",
};
},
components: {
draggable,
DialogSelectUnit, selectRlDialog
DialogSelectUnit, selectRlDialog, editCodeDialog
},
methods: {
submit(formName) {
@ -468,6 +521,14 @@ export default {
this.loading = false;
});
},
closeCodeDialog() {
this.editCodeVisible = false;
this.editOriginCodeVisible = false;
},
editCode(row) {
this.codeDetail = row;
this.editCodeVisible = true;
},
//
resetForm() {
if (this.$refs["dataForm"]) {
@ -479,15 +540,63 @@ export default {
}
},
enterKey(event) {
if (this.sitcomScan) {
return;
} else {
this.addCode(event);
this.checkSuccess = true;
let tQuery = {
originCode: this.originCode,
code: this.formData.code.trim(),
}
enterCodeWeb(tQuery).then((response) => {
if (response.code === 20000) {
this.$refs.inputRef.focus();
this.$refs.inputRef.select();
this.formData.code = response.data;
this.addCode();
} else {
if (response.code == 502) {
this.checkSuccess = false;
this.formData.code = response.data;
this.originCode = this.formData.code;
} else if (response.code == 501) {
this.checkSuccess = false;
this.formData.code = response.data;
this.originCode = this.formData.code;
} else if (response.code == 503) {
this.checkSuccess = false;
this.formData.code = response.data;
this.$confirm(response.message, "提示", {
type: "warning",
})
.then(() => {
this.formData.code = response.data;
this.addCode();
})
.catch(() => {
this.formData.code = this.originCode;
});
} else {
this.$alert(response.message, '提示', {
confirmButtonText: '确定',
type: 'warning',
closeOnClickModal: true,
callback: action => {
this.$refs.inputRef.focus();
this.$refs.inputRef.select();
}
});
}
}
this.loading = false;
});
},
addCode(event) {
this.originCode = "";
this.sictomText = "";
this.formData.corpOrderId = this.formData.corpOrderId.trim();
this.formData.batchNo = "";
this.formData.produceDate = "";
this.formData.expireDate = "";
this.formData.serialNo = "";
this.actionEnable = true;
if (event == null) {
} else event.target.select();
@ -517,15 +626,21 @@ export default {
tQuery.orderId = this.idQuery.id;
tQuery.actDate = parseTime(this.formData.actDate, '{y}-{m}-{d} {h}:{i}:{s}');
tQuery.action = this.formData.action;
console.log(tQuery.action);
this.addCodeSubmit(tQuery);
this.$refs.inputRef.select();
},
repeatAddCode() {
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.action = this.formData.action;
this.closeCodeDialog();
this.addCodeSubmit(tQuery);
},
addCodeSubmit(tQuery) {
addOrderWeb(tQuery).then((response) => {
if (response.code === 20000) {
this.idQuery.id = response.data.orderId;
if (response.data.errMsg != null) {
@ -538,8 +653,9 @@ export default {
});
}
this.corpOrderIdDisabled = true;
this.$refs.inputRef.focus();
this.getCodeList();
this.$refs.inputRef.focus();
this.$refs.inputRef.select();
} else {
if (response.code == 502) {
this.curRow = response.data;
@ -565,9 +681,7 @@ export default {
}).catch(() => {
});
} else if (response.code == 505) {
this.$confirm(response.message, "提示", {
confirmButtonText: "确定",
cancelButtonText: "忽略",
@ -578,7 +692,13 @@ export default {
}).catch(() => {
});
} else if (response.code == 507) {
this.editTitle = response.message;
this.editOriginCodeVisible = true;
this.formData.produceDate = response.data.produceDate;
this.formData.expireDate = response.data.expireDate;
this.formData.batchNo = response.data.batchNo;
this.formData.serialNo = response.data.serialNo;
} else {
this.$alert(response.message, '提示', {
confirmButtonText: '确定',
@ -586,6 +706,7 @@ export default {
closeOnClickModal: true,
callback: action => {
this.$refs.inputRef.focus();
this.$refs.inputRef.select();
}
});
}
@ -594,17 +715,6 @@ export default {
});
},
scanChange(event) {
this.isScan = !this.isScan;
if (this.isScan) {
this.scanText = "扫码录入:";
// document.getElementById("inputer").focus();
} else {
this.scanText = "手动录入:";
// this.$refs.inputRef.focus();
}
},
unitChange(row) {
console.log(row);
this.formData.fromCorpId = row.erpId;
@ -684,21 +794,12 @@ export default {
let query = {
enabled: true,
};
// console.log("---------1------" + this.curAction.action)
getLocalJoinByUser(query)
.then((response) => {
console.log("--------3--------" + this.formData.action)
this.busTypes = response.data.list || [];
// this.filterQuery.billAction = this.busTypes[0].action;
if (this.formData.action != null) {
this.curAction = this.getActionItem(this.formData.action);
}
// this.curAction = this.getActionItem(this.formData.action);
// if(this.curAction == null){
// this.curAction
// }
// console.log("----------4------" + this.curAction.action + "---" + this.curAction.corpType)
})
.catch(() => {
});
@ -768,11 +869,7 @@ export default {
});
},
getStorage(event) {
// let query = {
// advanceType: this.getActionName(event),
// };
this.storageList = [];
// this.formData.locStorageCode = null;
filterAllByUser()
.then((response) => {
this.storageList = response.data || [];
@ -798,7 +895,6 @@ export default {
},
actionChange(item) {
this.curAction = this.getActionItem(item);
// this.formData.locStorageCode = this.curAction.storageCode;
this.findMethod();
},
@ -888,11 +984,10 @@ export default {
var inputer = document.getElementById("inputer");
window.sc = new A.KeyScaner(inputer);//DOM
sc.onInput = function (text) {
console.log("监听掃碼:" + text);
//onInput500ms
if (text.includes("delete")) {
that.formData.code = "";
that.sictomText = "";
this.originCode = "";
return;
}
if (that.sitcomScan) {
@ -904,15 +999,13 @@ export default {
that.formData.code = text;
}
};
inputer.focus();//divtabindexdocumentBody
inputer.focus();
},
created() {
this.formData.code = '';
this.formData.actDate = new Date();
this.codeArray = [];
// this.formData.fromCorp = store.getters.customerId === 110 ? '' : store.getters.companyName;
// this.formData.customerId = store.getters.customerId;
this.getBusType();
this.getStorage(this.formData.action);
if (this.$isNotBlank(this.idQuery.id)) {

@ -92,9 +92,6 @@
<el-col :span="8">
<el-form-item prop="locStorageCode">
<!--<el-select v-model="formData.billType" style="width: 100%" placeholder="业务类型" :disabled="true">-->
<!--<el-option label="送货单" value="deliveryNote"></el-option>-->
<!--</el-select>-->
<el-select v-model="formData.locStorageCode" placeholder="当前仓库信息" clearable
:disabled="corpOrderIdDisabled">
<el-option
@ -148,9 +145,6 @@
<el-row :gutter="20">
<el-col :span="14" style="margin-left: 40px">
</el-col>
<el-col :span="2">
<el-checkbox v-model="sitcomScan"></el-checkbox>
</el-col>
<el-col :span="3">
<div class="text item" style="margin-left: 30px"> 条码数量{{ total }}
</div>
@ -160,10 +154,6 @@
<el-table v-loading="loading" :data="codeArray" style="width: 100%;" max-height="350" height="350"
:row-style="rowStyle"
ref="multipleTable">
<!-- <el-table-column-->
<!-- type="selection"-->
<!-- width="55">-->
<!-- </el-table-column>-->
<el-table-column label="序号" type="index" width="45"></el-table-column>
<el-table-column
label="条码"
@ -176,7 +166,26 @@
width="80"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="生产日期"
prop="produceDate"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="失效日期"
prop="expireDate"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="批次号"
prop="batchNo"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="序列号"
prop="serialNo"
show-overflow-tooltip
></el-table-column>
<el-table-column label="操作" fixed="right" width="250">
<template slot-scope="scope">
<el-button
@ -193,15 +202,13 @@
>选择产品
</el-button
>
<!-- :disabled="scope.row.relId != null "-->
<!-- <el-button-->
<!-- type="text"-->
<!-- size="small"-->
<!-- :disabled=" scope.row.supId !=null"-->
<!-- @click.native.stop="handleUnitClick(scope.row)"-->
<!-- >选择供应商-->
<!-- </el-button-->
<!-- >-->
<el-button
type="text"
size="small"
@click.native.stop="editCode(scope.row)"
>编辑
</el-button
>
</template>
</el-table-column>
</el-table>
@ -216,19 +223,6 @@
</div>
</el-card>
</el-form>
<el-dialog
title="选择供应商"
:visible.sync="dialogTableVisible"
v-if="dialogTableVisible"
width="70%"
append-to-body
>
<DialogSelectUnit
:codeId="curRow"
v-on:selectSupUnit="selectSupUnit"
v-on:closeBindDialog="closeBindDialog"
></DialogSelectUnit>
</el-dialog>
<el-dialog
title="绑定产品ID"
:visible.sync="selectRlVisible"
@ -243,6 +237,32 @@
v-on:closeBindDialog="closeBindDialog"
></selectRlDialog>
</el-dialog>
<el-dialog
:title="editTitle"
:visible.sync="editCodeVisible"
append-to-body width="70%"
v-if="editCodeVisible"
>
<editCodeDialog
editTye="2"
:closeCodeDialog="closeCodeDialog"
:codeDetail="codeDetail">
</editCodeDialog>
</el-dialog>
<el-dialog
:title="editTitle"
:visible.sync="editOriginCodeVisible"
append-to-body width="70%"
v-if="editOriginCodeVisible">
<editCodeDialog
:closeCodeDialog="closeCodeDialog"
:repeatAddCode="repeatAddCode"
:codeDetail="formData"
editTye="1">
</editCodeDialog>
</el-dialog>
</div>
</template>
@ -260,7 +280,7 @@ import {
deleteCodesTempById,
submitOrderWeb,
updateCodeBindSup,
expireTimeCheck
expireTimeCheck, enterCodeWeb
} from "../../api/warehouse/order";
import draggable from "vuedraggable";
import {saveAs} from "file-saver";
@ -271,21 +291,9 @@ import {filterAll, filterAllByUser} from "@/api/basic/invWarehouse";
import {getLocalBusType, getLocalJoinBusType} from "../../api/basic/busLocalType";
import DialogSelectUnit from "./DialogSelectUnit";
import selectRlDialog from "./DialogSelectRl";
import editCodeDialog from "./editCode";
import A from "../../plugin/KeyScaner"
const formJson = {
corpOrderId: "",
code: "",
actor: "",
fromCorpId: "",
fromCorp: "医院",
fromType: null,
locStorageCode: null,
actDate: new Date(),
billType: null,
preCheck: false,
};
export default {
name: "idQuery",
props: {
@ -313,7 +321,23 @@ export default {
page: 1,
limit: 10,
},
formData: formJson,
formData: {
corpOrderId: "",
code: "",
actor: "",
fromCorpId: "",
fromCorp: "医院",
fromType: null,
locStorageCode: null,
actDate: new Date(),
billType: null,
preCheck: false,
outChangeEnable: false,
batchNo: null,
produceDate: null,
expireDate: null,
serialNo: null,
},
formRules: {
temp: [
{required: true, message: "请输入条码", trigger: "blur"}
@ -334,13 +358,20 @@ export default {
curRow: null,
busTypes: [],
storageList: [],
editOriginCodeVisible: false,
curId: null,
selectRlVisible: false,
dialogTableVisible: false,
sitcomScan: false,
codeDetail: null,
originCode: "",
checkSuccess: false,
editTitle: "编辑条码",
editCodeVisible: false,
};
},
components: {
draggable, DialogSelectUnit, selectRlDialog
draggable, DialogSelectUnit, selectRlDialog, editCodeDialog
},
methods: {
submit(formName) {
@ -353,7 +384,7 @@ export default {
orderId: this.idQuery.id,
action: this.formData.billType,
locStorageCode: this.formData.locStorageCode,
preCheck:this.formData.preCheck,
preCheck: this.formData.preCheck,
}
submitOrderWeb(tQuery)
@ -400,6 +431,16 @@ export default {
this.loading = false;
});
},
closeCodeDialog() {
this.editCodeVisible = false;
this.editOriginCodeVisible = false;
},
editCode(row) {
this.codeDetail = row;
this.editCodeVisible = true;
},
//
resetForm() {
if (this.$refs["dataForm"]) {
@ -412,16 +453,60 @@ export default {
},
enterKey(event) {
if (this.sitcomScan) {
return;
} else {
this.addCode(event);
this.checkSuccess = true;
let tQuery = {
originCode: this.originCode,
code: this.formData.code.trim(),
}
enterCodeWeb(tQuery).then((response) => {
if (response.code === 20000) {
this.$refs.inputRef.focus();
this.$refs.inputRef.select();
this.formData.code = response.data;
this.addCode();
} else {
if (response.code == 502) {
this.checkSuccess = false;
this.formData.code = response.data;
this.originCode = this.formData.code;
} else if (response.code == 501) {
this.checkSuccess = false;
this.formData.code = response.data;
this.originCode = this.formData.code;
} else if (response.code == 503) {
this.checkSuccess = false;
this.formData.code = response.data;
this.$confirm(response.message, "提示", {
type: "warning",
})
.then(() => {
this.formData.code = response.data;
this.addCode();
})
.catch(() => {
this.formData.code = this.originCode;
});
} else {
this.$alert(response.message, '提示', {
confirmButtonText: '确定',
type: 'warning',
closeOnClickModal: true,
callback: action => {
this.$refs.inputRef.focus();
this.$refs.inputRef.select();
}
});
}
}
this.loading = false;
});
},
addCode(event) {
if (event == null) {
} else event.target.select();
this.sictomText = "";
this.originCode = "";
this.$refs.inputRef.select();
if (this.$isBlank(this.formData.billType)) {
this.$message.warning("请选择单据类型!");
@ -450,17 +535,6 @@ export default {
addCodeSubmit(tQuery) {
addOrderWeb(tQuery).then((response) => {
// let teQuery = {code: this.formData.code};
// expireTimeCheck(teQuery).then((response) => {
// if (response.code === 20000) {
// } else {
// this.$message.warning(response.message);
// }
// this.loading = false;
// });
if (response.code === 20000) {
this.idQuery.id = response.data.orderId;
if (response.data.errMsg != null) {
@ -473,7 +547,6 @@ export default {
});
}
this.corpOrderIdDisabled = true;
// this.$refs.inputRef.focus();
this.getCodeList();
} else {
this.corpOrderIdDisabled = true;
@ -483,28 +556,12 @@ export default {
this.getCodeList();
this.selectRlTitle = response.message;
this.bindRl(response.data);
// this.$alert(response.message, '', {
// confirmButtonText: '',
// type: 'warning',
// closeOnClickModal: true,
// callback: action => {
// this.bindRl(response.data);
// }
// });
} else if (response.code == 503) {
this.curRow = response.data;
this.idQuery.id = this.curRow.orderId;
this.getCodeList();
this.selectUnitTitle = response.message;
this.handleUnitClick(response.data);
// this.$alert(response.message, '', {
// confirmButtonText: '',
// type: 'warning',
// closeOnClickModal: true,
// callback: action => {
// this.handleUnitClick(response.data);
// }
// });
} else if (response.code == 504) {
this.$confirm(response.message, "提示", {
@ -531,6 +588,13 @@ export default {
});
} else if (response.code == 507) {
this.editTitle = response.message;
this.editOriginCodeVisible = true;
this.formData.produceDate = response.data.produceDate;
this.formData.expireDate = response.data.expireDate;
this.formData.batchNo = response.data.batchNo;
this.formData.serialNo = response.data.serialNo;
} else {
this.$alert(response.message, '提示', {
confirmButtonText: '确定',
@ -538,6 +602,7 @@ export default {
closeOnClickModal: true,
callback: action => {
this.$refs.inputRef.focus();
this.$refs.inputRef.select();
}
});
}
@ -546,7 +611,15 @@ export default {
});
},
repeatAddCode() {
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.action = this.formData.action;
this.closeCodeDialog();
this.addCodeSubmit(tQuery);
},
deleteCode(index, row) {
console.log(row.id)
this.$confirm("是否确定移除一个条码?", "提示", {
@ -711,27 +784,25 @@ export default {
event.stopPropagation();
};
var that = this;
var inputer = document.getElementById("inputer");
window.sc = new A.KeyScaner(inputer);//DOM
sc.onInput = function (text) {
console.log("监听掃碼:" + text);
//onInput500ms
if (text.includes("delete")) {
that.formData.code = "";
that.sictomText = "";
this.originCode = "";
return;
}
if (that.sitcomScan) {
let tempTxt = text;
let str= tempTxt.replace(/[\r]/g, "");
let str = tempTxt.replace(/[\r]/g, "");
that.sictomText = that.sictomText + str;
that.formData.code = that.sictomText;
} else {
that.formData.code = text;
}
};
inputer.focus();//divtabindexdocumentBody
inputer.focus();
},

@ -0,0 +1,139 @@
<template>
<div>
<el-form :model="codeDetail" :rules="formRules" ref="dataForm">
<el-row :gutter="20">
<el-col :span="3">
<div class="ao-text">
<span>条码</span>
</div>
</el-col>
<el-col :span="16">
<el-form-item prop="code">
<el-input
v-model="codeDetail.code"
clearable
disabled
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="3">
<div class="ao-text">
<span>生产日期</span>
</div>
</el-col>
<el-col :span="7">
<el-form-item prop="productDate">
<el-input v-model="codeDetail.produceDate" auto-complete="off"
oninput="if(value.length>6)value=value.slice(0,6)"
type="number"
:disabled="false"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<div class="ao-text">
<span>失效日期</span>
</div>
</el-col>
<el-col :span="7">
<el-form-item prop="expireDate">
<el-input v-model="codeDetail.expireDate" auto-complete="off"
oninput="if(value.length>6)value=value.slice(0,6)"
type="number"
:disabled="false"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="3">
<div class="ao-text">
<span>批次号</span>
</div>
</el-col>
<el-col :span="7">
<el-form-item prop="batchNo">
<el-input v-model="codeDetail.batchNo" auto-complete="off" :disabled="false"></el-input>
</el-form-item>
</el-col>
<el-col :span="3">
<div class="ao-text">
<span>序列号</span>
</div>
</el-col>
<el-col :span="7">
<el-form-item prop="price">
<el-input v-model="codeDetail.serialNo" auto-complete="off"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="17">
</el-col>
<el-col :span="7">
<el-button @click="cancelDialog"> </el-button>
<el-button type="primary" @click="saveCode()"> </el-button>
</el-col>
</el-row>
</el-form>
</div>
</template>
<script>
import {
saveCode
} from "../../api/warehouse/code";
export default {
name: "editCode",
props: {
editTye: {
type: Object,
required: true,
},
closeCodeDialog: {
type: Function,
required: true,
},
repeatAddCode: {
type: Function,
required: false,
},
codeDetail: {
type: Object,
required: true,
},
},
methods: {
saveCode() {
if (this.editTye == 1) {
this.repeatAddCode();
} else {
saveCode(this.codeDetail)
.then((response) => {
console.log(response)
if (response.code === 20000) {
this.$message.success("提交成功");
this.closeCodeDialog();
} else {
this.$message.error(response.message);
}
this.loading = false;
});
}
},
cancelDialog() {
this.closeCodeDialog();
}
}
}
</script>
<style scoped>
</style>

@ -122,16 +122,14 @@
>发票
</el-button
>
<!-- <el-button-->
<!-- type="text"-->
<!-- size="small"-->
<!-- @click.native="generOrder(scope.row)"-->
<!-- >复制-->
<!-- </el-button-->
<!-- >-->
<!-- v-if="haveDistributionVisible"-->
<el-button
v-if="isSp ==110"
type="text"
size="small"
@click.native="generOrder(scope.row)"
>复制
</el-button
>
<div v-if="scope.row.enableSupplementOrder">
<el-button

@ -801,40 +801,7 @@ export default {
this.currentRow = this.codeArray[0];
this.selectedIndex = 0;
this.focusNext('iCount');
// this.closeConfirmFunction(true);
}
// if (this.orderEditor) {
// this.getStockOrderDetailList();
// if (this.$isNotBlank(rData)) {
// this.$refs.multipleTable.setCurrentRow(this.codeArray[0]);
// this.currentRow = this.codeArray[0];
// this.selectedIndex = 0;
// this.focusNext('iCount');
// }
// } else {
// if (this.$isNotBlank(rData)) {
// // for (let i = 0; i < this.codeArray.length; i++) {
// // if (this.codeArray[i].productId === rData.productId) {
// // this.$alert("", '', {
// // confirmButtonText: '',
// // type: 'warning',
// // closeOnClickModal: true,
// // callback: action => {
// // this.$refs.inputRef.focus();
// // }
// // });
// // break;
// // }
// // if (i + 1 === this.codeArray.length) {
// // this.codeArray.push(rData);
// // this.$refs.multipleTable.setCurrentRow(this.codeArray[0]);
// // this.currentRow = this.codeArray[0];
// // this.selectedIndex = 0;
// // }
// // }
// }
// }
},
rowChange(val) {
this.currentRow = val;
@ -843,22 +810,8 @@ export default {
this.focusNext('iCount');
// let sc = this.selectedIndex + 'reCount';
// const _this = this;
// this.$nextTick(() => {
// setTimeout(function() {
// console.log(sc);
// console.log(_this.$refs[sc]);
// console.log(_this.$refs[sc].focus());
// _this.$refs[sc].focus();
// }, 1)
// // this.$refs['inputBatchNoRef'][0].focus()
// })
},
iCountChange() {
// console.log(this.iCount)
// this.currentRow.count = this.iCount;
// this.currentRow.reCount = this.iCount;
},
iCountEnterFunction() {
if (this.$isNotBlank(this.currentRow)) {
@ -930,7 +883,6 @@ export default {
code: this.code,
};
//012693548470801311200226172302271020022632100025
if (this.orderEditor) {
addStockOrderDetailFromCode(tQuery).then((response) => {
this.loading = false;

@ -1092,7 +1092,7 @@ export default {
getLocalJoinByUser(query)
.then((response) => {
this.busTypes = response.data.list || [];
// this.getStorage(this.formData.billType);
this.getStorage(this.formData.billType);
})
.catch(() => {
});

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save