CTP 2 years ago
commit 910ca85c12

@ -23,3 +23,12 @@ export function selectPlaceList(params) {
params: params
});
}
export function selectMutiPlace(params) {
return axios({
url: "/spms/inv/product/mutiPlace",
method: "get",
params: params
});
}

@ -240,7 +240,7 @@
<el-row>
<el-col span="5">
<span class="sptext">是否只允许有库存产品出库</span>
<span class="sptext">允许单据库存0库存出库</span>
</el-col>
<el-divider direction="vertical"></el-divider>
<el-col span="5">
@ -252,7 +252,7 @@
</el-col>
<el-divider direction="vertical"></el-divider>
<el-col span="13">
<span class="sptext">设置是否只允许有库存产品出库</span>
<span class="sptext">允许单据库存0库存出库</span>
</el-col>
</el-row>
<el-divider></el-divider>

@ -1,7 +1,7 @@
<template>
<div>
<el-card>
<el-form :model="filterQuery" class="query-form" size="mini" label-width="100px" v-show="showSearch">
<el-form :model="filterQuery" class="query-form" size="mini" label-width="100px" v-show="showSearch">
<el-row>
<el-col :span="6">
<el-form-item class="query-form-item" label="单据类型:">
@ -9,37 +9,37 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="出入库类型:">
<el-select v-model="filterQuery.mainAction" style="width: 90%" placeholder="请选择出入库类型">
<el-option label="全部" value=""></el-option>
<el-option label="入库" value="WareHouseIn"></el-option>
<el-option label="出库" value="WareHouseOut"></el-option>
</el-select>
</el-form-item>
<el-form-item class="query-form-item" label="出入库类型:">
<el-select v-model="filterQuery.mainAction" style="width: 90%" placeholder="请选择出入库类型">
<el-option label="全部" value=""></el-option>
<el-option label="入库" value="WareHouseIn"></el-option>
<el-option label="出库" value="WareHouseOut"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="是否启用:">
<el-select v-model="filterQuery.enable" style="width: 90%" placeholder="是否启用">
<el-option label="全部" value=""></el-option>
<el-option label="已启用" value="1"></el-option>
<el-option label="未启用" value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item class="query-form-item" label="是否启用:">
<el-select v-model="filterQuery.enable" style="width: 90%" placeholder="是否启用">
<el-option label="全部" value=""></el-option>
<el-option label="已启用" value="1"></el-option>
<el-option label="未启用" value="0"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="query-form-item" label="仓库类型:">
<el-select v-model="filterQuery.actionType" style="width: 90%" placeholder="请选择仓库类型">
<el-option label="入账库" :value="1"></el-option>
<el-option label="预验收库" :value="2"></el-option>
<el-option label="寄售库" :value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item class="query-form-item" label="仓库类型:">
<el-select v-model="filterQuery.actionType" style="width: 90%" placeholder="请选择仓库类型">
<el-option label="入账库" :value="1"></el-option>
<el-option label="预验收库" :value="2"></el-option>
<el-option label="寄售库" :value="3"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="top-right-btn" >
<div class="top-right-btn">
<el-button-group style="width: 600px">
<el-button icon="el-icon-view" type="primary" @click="hideSearch">/</el-button>
<el-button type="primary" icon="el-icon-refresh" @click="onReset"></el-button>
@ -169,12 +169,12 @@
</div>
</template>
<script>
import { getBusTypeList, deleteBusType, updateBusType, insertBusType, exportFile } from '@/api/basic/busType'
import {getBusTypeList, deleteBusType, updateBusType, insertBusType, exportFile} from '@/api/basic/busType'
import modifyDialog from './bussinessTypeModify'
import axios from 'axios'
import store from '@/store'
import { findConfig } from '@/api/sync/spsSyncStatus'
import { isBlank } from '@/utils/strUtil'
import {findConfig} from '@/api/sync/spsSyncStatus'
import {isBlank} from '@/utils/strUtil'
export default {
data() {
@ -186,7 +186,7 @@ export default {
page: 1,
limit: 20
},
showSearch:true,
showSearch: true,
addDialogVisible: false,
modifyDialogVisible: false,
list: [],
@ -224,7 +224,7 @@ export default {
storageCode: null,
supplementOrderType: null,
defaultUnit: null,
useDyCount: false,
useDyCount: 0,
expireTip: true,
prefix: null,
outToSpms: null,
@ -242,6 +242,7 @@ export default {
checkBalance: null,
secCheckBalance: null,
preInBack: false,
spaceOut: 0,
vailDispatch: false,
vailGroupBuy: 0,
inStock: false,
@ -375,6 +376,7 @@ export default {
if (this.inputQuery.sortNum < 0) {
this.$message.error("排序不能小于0");
return;
} else if (this.inputQuery.sortNum > 999) {
this.$message.error("排序不能大于999");
return;
@ -451,7 +453,7 @@ export default {
const binaryData = []
binaryData.push(response)
let url = window.URL.createObjectURL(
new Blob(binaryData, { type: 'application/json' })
new Blob(binaryData, {type: 'application/json'})
)
this.loading = false
const eleLink = document.createElement('a')
@ -504,7 +506,7 @@ export default {
storageCode: null,
supplementOrderType: null,
defaultUnit: null,
useDyCount: false,
useDyCount: 0,
expireTip: true,
prefix: null,
outToSpms: null,
@ -520,6 +522,7 @@ export default {
preIn: null,
originAction: null,
preInBack: false,
spaceOut: 0,
vailDispatch: false,
vailGroupBuy: 0,
inStock: false,

@ -188,7 +188,7 @@
</el-form-item>
</el-col>
</el-row>
<el-row type="flex">
<el-col :span="11">
<el-form-item label="禁用单据类型" prop="prefix">
@ -326,7 +326,26 @@
</el-row>
<el-divider direction="horizontal"></el-divider>
</div>
<el-row>
<el-col span="5">
<span class="sptext">物资使用出库模式</span>
</el-col>
<el-divider direction="vertical"></el-divider>
<el-col span="5">
<el-select v-model="inputQuery.useDyCount" style="width: 65%"
:disabled=" inputQuery.mainAction!= 'WareHouseOut' || inputQuery.corpType != 1"
placeholder="是否启用"
>
<el-option label="正常" :value="0"></el-option>
<el-option label="物资多次使用出库" :value="1"></el-option>
</el-select>
</el-col>
<el-divider direction="vertical"></el-divider>
<el-col span="13">
<span class="sptext">设置物资使用出库模式</span>
</el-col>
</el-row>
<el-divider></el-divider>
<el-row>
<el-col span="5">
<span class="sptext">预验收使用禁止无库存出库</span>
@ -369,7 +388,7 @@
<el-row>
<el-col span="5">
<span class="sptext">是否只允许有库存产品出库</span>
<span class="sptext">允许单据库存0库存出库</span>
</el-col>
<el-divider direction="vertical"></el-divider>
<el-col span="5">
@ -383,32 +402,33 @@
</el-col>
<el-divider direction="vertical"></el-divider>
<el-col span="13">
<span class="sptext">设置是否只允许有库存产品出库</span>
<span class="sptext">允许单据库存0库存出库</span>
</el-col>
</el-row>
<el-divider></el-divider>
<el-row>
<el-col span="5">
<span class="sptext">允许科室多次使用出库</span>
<span class="sptext">按货位出库</span>
</el-col>
<el-divider direction="vertical"></el-divider>
<el-col span="5">
<el-select v-model="inputQuery.useDyCount" style="width: 65%"
:disabled=" inputQuery.mainAction!= 'WareHouseOut' || inputQuery.corpType != 1"
placeholder="是否启用"
<el-select v-model="inputQuery.spaceOut" style="width: 65%"
:disabled=" inputQuery.mainAction!= 'WareHouseOut'"
>
<el-option label="是" :value="true"></el-option>
<el-option label="否" :value="false"></el-option>
<el-option label="无" :value="0"></el-option>
<el-option label="整单按指定货位出库" :value="1"></el-option>
<el-option label="按物资摆放货位出库" :value="2"></el-option>
</el-select>
</el-col>
<el-divider direction="vertical"></el-divider>
<el-col span="13">
<span class="sptext">允许科室多次使用出库</span>
<span class="sptext">设置是否按货位出库</span>
</el-col>
</el-row>
<el-divider></el-divider>
<el-row>
<el-col span="5">
<span class="sptext">预验收剩余库存自动退库</span>

@ -164,7 +164,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="预警时间单位:">
<el-select v-model="editQuery.isDateBy" style="width: 65%" placeholder="状态" clearable>
<el-select v-model="editQuery.isDateBy" style="width: 80%" placeholder="状态" clearable>
<el-option label="天" :value="1"></el-option>
<el-option label="小时" :value="2"></el-option>
</el-select>

@ -350,7 +350,7 @@ export default {
},
showImgViewer(row) {
this.certFileUrl = this.IMAGE_URL + "/mapi" + "/udiwms/image/register/file/getImage?type=image2&name=";
this.certFileUrl = this.BASE_URL + "/udiwms/image/register/file/getImage?type=image2&name=";
this.imgList = [];
previewImage({imageUrl: this.inputQuery.filePath, certFileUrl: this.certFileUrl}).then(response => {
if (response.code === 20000) {

@ -5,7 +5,7 @@
:model="orderFormData"
:rules="formRules"
ref="dataForm"
label-width="100px"
label-width="110px"
style="margin-bottom: -15px"
>
<el-button-group
@ -210,20 +210,18 @@
</el-form-item>
</el-col>
</el-row>
<el-row v-if="preSpaceShow">
<el-row v-if="curSpaceShow">
<el-col :span="11">
<el-form-item prop="checkPreInInvCode" label="预验收仓库:">
<el-form-item prop="curSpaceCode" label="当前货位:">
<el-select
v-model="orderFormData.checkPreInInvCode"
placeholder="预验收仓库"
v-model="orderFormData.curSpaceCode"
placeholder="当前货位"
style="width: 90%"
:disabled="corpOrderIdDisabled"
@change="changePreInInv"
filterable
>
<el-option
v-for="item in curPreInInvOptions"
v-for="item in curSpaceOptions"
:key="item.name"
:label="item.name"
:value="item.code"
@ -236,8 +234,34 @@
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="preInSpaceShow">
<!-- <el-col :span="11">-->
<!-- <el-form-item prop="checkPreInInvCode" label="预验收出库仓库:">-->
<!-- <el-select-->
<!-- v-model="orderFormData.checkPreInInvCode"-->
<!-- placeholder="预验收仓库"-->
<!-- style="width: 90%"-->
<!-- :disabled="corpOrderIdDisabled"-->
<!-- @change="changePreInInv"-->
<!-- filterable-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in curPreInInvOptions"-->
<!-- :key="item.name"-->
<!-- :label="item.name"-->
<!-- :value="item.code"-->
<!-- >-->
<!-- <span style="float: left">{{ item.name }}</span>-->
<!-- <span style="float: right; color: #8492a6; font-size: 13px">{{-->
<!-- item.code-->
<!-- }}</span>-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="11">
<el-form-item prop="checkPreInSpaceCode" label="预验收货位:">
<el-form-item prop="checkPreInSpaceCode" label="预验收出库货位:">
<el-select
v-model="orderFormData.checkPreInSpaceCode"
placeholder="预验收货位"
@ -261,6 +285,59 @@
</el-col>
</el-row>
<el-row v-if="preSpaceShow">
<!-- <el-col :span="11">-->
<!-- <el-form-item prop="checkPreInInvCode" label="预验收仓库:">-->
<!-- <el-select-->
<!-- v-model="orderFormData.checkPreInInvCode"-->
<!-- placeholder="预验收仓库"-->
<!-- style="width: 90%"-->
<!-- :disabled="corpOrderIdDisabled"-->
<!-- @change="changePreInInv"-->
<!-- filterable-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in curPreInInvOptions"-->
<!-- :key="item.name"-->
<!-- :label="item.name"-->
<!-- :value="item.code"-->
<!-- >-->
<!-- <span style="float: left">{{ item.name }}</span>-->
<!-- <span style="float: right; color: #8492a6; font-size: 13px">{{-->
<!-- item.code-->
<!-- }}</span>-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="11">
<el-form-item prop="preCurSpaceCode" label="寄售出库货位:">
<el-select
v-model="orderFormData.preCurSpaceCode"
placeholder="寄售出库货位"
style="width: 90%"
:disabled="corpOrderIdDisabled"
filterable
>
<el-option
v-for="item in curPreSpaceOptions"
:key="item.name"
:label="item.name"
:value="item.code"
>
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{
item.code
}}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="errView == 1">
<el-col :span="20">
@ -379,6 +456,21 @@
></DialogSelectUnit>
</el-dialog>
<el-dialog
title="请指定当前产品所在货位"
:visible.sync="selectSpaceVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
v-if="selectSpaceVisible"
width="80%"
append-to-body
>
<DialogSelectSpace
:spaceCodeList="spaceCodeList"
v-on:selectSpaceBind="selectSpaceBind"
></DialogSelectSpace>
</el-dialog>
</div>
</template>
@ -406,6 +498,7 @@ import A from "../../plugins/KeyScaner";
import {findByInvUser} from "@/api/basic/busType";
import {getInvSpaceList} from "@/api/inventory/invSpace";
import DialogSelectUnit from "./DialogSelectUnit";
import DialogSelectSpace from "./DialogSelectSpace";
export default {
name: "ioCreateOrder",
@ -444,6 +537,10 @@ export default {
checkPreInOrders: null,
checkPreInInvCode: null,
checkPreInSpaceCode: null,
curSpaceCode: null,
preSpaceCode: null,
preCurSpaceCode: null, //
},
checkPreInArray: [],
errView: 0,
@ -463,9 +560,11 @@ export default {
busTypeOptions: [],
fromInvOptions: [],
preSpaceShow: false, //
curPreInInvOptions: [], //
curPreInSpaceOptions: [], //
curPreSpaceOptions: [], //
curSpaceOptions: [], //
curAction: {
corpType: 0,
@ -512,6 +611,7 @@ export default {
fromStorageOptions: [],
curRow: null,
dialogTableVisible: false,
selectSpaceVisible: false,
sitcomScan: false,
selectRlTitle: "绑定产品",
selectUnitTitle: "绑定供应商",
@ -526,7 +626,12 @@ export default {
viewBizVisible: false,
viewCodeVisible: false,
viewCodeDetailVisible: false,
documentShow: false, //
documentShow: false, //
curSpaceShow: false, //
preInSpaceShow: false, //
preSpaceShow: false, //
spaceCodeList: [],
};
},
components: {
@ -535,7 +640,7 @@ export default {
bizDetailPanel,
editCodeDialog,
DialogCreateOrderSelect,
DialogSelectUnit
DialogSelectUnit, DialogSelectSpace
},
methods: {
//
@ -549,8 +654,9 @@ export default {
this.curInvOptions.length > 0 &&
this.orderFormData.invWarehouseCode == null
) {
this.orderFormData.invWarehouseCode = this.curInvOptions[0].code;
this.orderFormData.invCode = this.curInvOptions[0].code;
this.getBusTypeByInv();
this.findCurSpaceList(this.orderFormData.invCode);
}
})
.catch(() => {
@ -566,14 +672,22 @@ export default {
// this.orderFormData.checkPreInOrders = JSON.parse(JSON.stringify(val));
},
//
changeInv() {
changeInv(row) {
this.orderFormData.action = null;
this.orderFormData.checkPreInOrders = null;
this.checkPreInArray = [];
if (this.documentShow) {
this.documentShow = false;
}
this.curSpaceShow = false;
this.preInSpaceShow = false;
this.preSpaceShow = false;
this.orderFormData.curSpaceCode = false;
this.orderFormData.checkPreInSpaceCode = false;
this.orderFormData.preCurSpaceCode = false;
this.getBusTypeByInv();
this.findCurSpaceList(row);
},
//,
@ -677,11 +791,43 @@ export default {
if (this.curAction.scanPreIn && this.curAction.backPreinType == 1 && this.curAction.preInBack) {
this.documentShow = true;
} else if (this.curAction.scanPreIn && this.curAction.backPreinType == 2 && this.curAction.preInBack) {
this.preSpaceShow = true;
this.preInSpaceShow = true;
this.findPreInInvList();
} else {
this.documentShow = false;
this.preInSpaceShow = false;
}
if (this.curAction.scanPreIn && this.curAction.spaceOut == 1) {
this.preInSpaceShow = true;
this.curSpaceShow = false;
this.preSpaceShow = false;
this.orderFormData.curSpaceCode = null;
this.orderFormData.checkPreInSpaceCode = null;
this.orderFormData.preCurSpaceCode = null;
this.findPreInSpaceList();
} else if (this.curAction.advancePreIn && this.curAction.spaceOut == 1) {
this.preInSpaceShow = false;
this.curSpaceShow = false;
this.preSpaceShow = true;
this.orderFormData.curSpaceCode = null;
this.orderFormData.checkPreInSpaceCode = null;
this.orderFormData.preCurSpaceCode = null;
this.findPreSpaceList()
} else if (this.curAction.spaceOut == 1) {
this.curSpaceShow = true;
this.preInSpaceShow = false;
this.preSpaceShow = false;
this.orderFormData.curSpaceCode = null;
this.orderFormData.checkPreInSpaceCode = null;
this.orderFormData.preCurSpaceCode = null;
} else {
this.curSpaceShow = false;
this.preInSpaceShow = false;
this.preSpaceShow = false;
this.orderFormData.curSpaceCode = null;
this.orderFormData.checkPreInSpaceCode = null;
this.orderFormData.preCurSpaceCode = null;
}
},
@ -712,6 +858,7 @@ export default {
//
changePreInInv(row) {
this.orderFormData.checkPreInSpaceCode = null;
this.findPreInSpaceList(row.code);
},
@ -732,7 +879,7 @@ export default {
//
findPreInSpaceList(val) {
let query = {
invStorageCode: val,
filterType: "preIn",
status: 1,
code: this.orderFormData.checkPreInSpaceCode,
}
@ -742,6 +889,32 @@ export default {
},
//
findPreSpaceList(val) {
let query = {
filterType: "pre",
status: 1,
code: this.orderFormData.preSpaceCode,
}
getInvSpaceList(query).then((res) => {
this.curPreSpaceOptions = res.data.list || [];
})
},
//
findCurSpaceList(val) {
let query = {
invWarehouseCode: val,
status: 1,
code: this.orderFormData.curSpaceCode,
}
getInvSpaceList(query).then((res) => {
this.curSpaceOptions = res.data.list || [];
})
},
//
addCode(event) {
this.originCode = "";
@ -831,12 +1004,14 @@ export default {
this.$refs.inputRef.select();
} else {
if (response.code == 502) {
//ID
this.curRow = response.data;
this.orderFormData.billNo = this.curRow.orderId;
this.refreshCodesPanel();
this.$message.error(response.message);
this.selectRlTitle = response.message;
} else if (response.code == 503) {
//
this.curRow = response.data;
this.orderFormData.billNo = this.curRow.orderId;
this.codeFormData.relId = this.curRow.relId,
@ -902,6 +1077,10 @@ export default {
message: "提交失败!" + this.editTitle,
customClass: "messageIndex",
});
} else if (response.code == 511) {
//UDI
this.spaceCodeList = response.data;
this.selectSpaceVisible = true;
} else {
this.$alert(response.message, "提示", {
confirmButtonText: "确定",
@ -1087,6 +1266,20 @@ export default {
this.orderFormData.selectSupId = row.erpId;
this.addCode();
},
selectSpaceBind(val) {
if (this.curAction.scanPreIn) {
this.orderFormData.checkPreInSpaceCode = val;
} else if (this.curAction.advancePreIn) {
this.orderFormData.preCurSpaceCode = val;
} else {
this.orderFormData.curSpaceCode = val;
}
this.addCode();
this.selectSpaceVisible = false;
},
closeCodeDialog() {
this.editOriginCodeVisible = false;
this.refreshCodesPanel();

@ -0,0 +1,91 @@
<template>
<div>
<el-table
v-loading="loading"
:data="spaceCodeList"
style="width: 100%"
highlight-current-row
height="500"
border
@current-change="handleDetail"
>
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column
label="UDI码"
prop="code"
width="220"
show-overflow-tooltip
></el-table-column>
<el-table-column label="仓库" prop="invName" width="120"></el-table-column>
<el-table-column label="货位" prop="invSpaceName" width="120"></el-table-column>
<el-table-column label="DI/物资编码" prop="nameCode" width="150"></el-table-column>
<el-table-column label="物资名称" prop="productName" width="200" show-overflow-tooltip></el-table-column>
<el-table-column label="规格型号" prop="ggxh" width="150" show-overflow-tooltip></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="expireDate" width="120"></el-table-column>
<el-table-column label="注册备案号" prop="zczbhhzbapzbh" show-overflow-tooltip
width="200"></el-table-column>
<el-table-column label="生产厂家" prop="manufactory" show-overflow-tooltip
width="200"></el-table-column>
<el-table-column label="供应商" prop="supName" show-overflow-tooltip
width="200"></el-table-column>
<el-table-column width="200" label="操作" fixed="right">
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click.native.stop="selectSpace(scope.row)"
>选入绑定
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import {selectMutiPlace} from "@/api/inventory/invPlaceOrder";
export default {
name: "DialogSelectSpace",
props: {
spaceCodeList: {
type: Object,
required: true,
},
},
data() {
return {
loading: false,
list: [],
filterQuery: {
invCode: null,
code: null,
},
}
},
methods: {
selectSpace(row) {
this.$emit("selectSpaceBind", row.invSpaceCode);
this.$emit("closeBindDialog", true);
},
},
created() {
this.list = this.spaceCodeList;
},
mounted() {
}
}
</script>
<style scoped>
</style>

@ -653,7 +653,7 @@ export default {
},
showImgViewer(row) {
this.certFileUrl =
this.IMAGE_URL + "/mapi" +
this.BASE_URL +
"/udiwms/image/register/file/getImage?type=image2&name=";
this.imgList = [];
previewImage({

@ -777,7 +777,7 @@ export default {
this.showSearch = !this.showSearch;
},
showImgViewer(row) {
this.certFileUrl = this.IMAGE_URL + "/mapi" + "/udiwms/image/register/file/getImage?type=image2&name=";
this.certFileUrl = this.BASE_URL + "/udiwms/image/register/file/getImage?type=image2&name=";
this.imgList = [];
previewImage({imageUrl: row.licenseUrl, certFileUrl: this.certFileUrl}).then(response => {
if (response.code === 20000) {

@ -1,9 +1,9 @@
<template>
<div>
<el-card>
<el-form :model="determineData" label-width="150px" border>
<el-form :model="determineData" label-width="150px" border>
<el-row type="flex" justify="end" >
<el-row type="flex" justify="end">
<el-button-group style="display: flex;margin-bottom: 15px; margin-right: 50px;margin-top: 10px">
<el-button type="primary" @click.native="determineBtn()" :loading="loading">确认</el-button>
<el-button type="primary" @click.native="closeDialog()" :loading="loading">取消</el-button>
@ -13,12 +13,14 @@
<el-row>
<el-col :span="12">
<el-form-item label="单据号" prop="billNo">
<el-input v-model="determineData.billNo" style="width: 90%" auto-complete="off" :disabled="true"></el-input>
<el-input v-model="determineData.billNo" style="width: 90%" auto-complete="off"
:disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="收货仓库" prop="billNo">
<el-input v-model="determineData.invName" style="width: 90%" auto-complete="off" :disabled="true"></el-input>
<el-form-item label="收货仓库" prop="billNo">
<el-input v-model="determineData.invName" style="width: 90%" auto-complete="off"
:disabled="true"></el-input>
</el-form-item>
</el-col>
</el-row>
@ -26,12 +28,14 @@
<el-row>
<el-col :span="12">
<el-form-item label="单据类型" prop="billNo">
<el-input v-model="determineData.billTypeName" style="width: 90%" auto-complete="off" :disabled="true"></el-input>
<el-input v-model="determineData.billTypeName" style="width: 90%" auto-complete="off"
:disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="送货单位" prop="billNo">
<el-input v-model="determineData.fromCorpName" style="width: 90%" auto-complete="off" :disabled="true"></el-input>
<el-form-item label="送货单位" prop="billNo">
<el-input v-model="determineData.fromCorpName" style="width: 90%" auto-complete="off"
:disabled="true"></el-input>
</el-form-item>
</el-col>
</el-row>
@ -218,23 +222,15 @@
<script>
import {
deleteByOrderId,
getOrderList, rollUnReceivebackOrder, filterInvoice, filterOrder
} from '../../api/inout/order'
import { getLocalJoinByUser } from '@/api/basic/busType'
import { getInvListByUser } from '@/api/system/invWarehouse'
import { isBlank } from '@/utils/strUtil'
import { selectSysParamByKey } from '@/api/param/systemParamConfig'
import { filterListInvoice, getBizDetailList, deleteById, insertInvoice, updateOrder,filterBizOrderList } from '@/api/inout/orderDetailBiz'
import { getCodeList } from '@/api/inout/code'
filterListInvoice,
updateOrder,
filterBizOrderList
} from '@/api/inout/orderDetailBiz'
import AcceptOrder from '@/views/inout/DialogReviewOrder'
import DialogInvoice from '@/views/inout/DialogInvoice'
import InvoiceRegister from '@/views/inout/InvoiceRegister'
import { inspectionOrderPDFFromTemplateFile, orderPDFFromTemplateFile } from '@/api/itextpdf/orderPrint'
import { getDeptListByUser } from '@/api/auth/authDept'
import { getBasicUnitMaintains } from '@/api/basic/basicUnitMaintain'
import { previewImage } from '@/api/purchase/supCompany'
import {previewImage} from '@/api/purchase/supCompany'
import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
const formJson = {
@ -400,7 +396,7 @@ export default {
subRow: null
}
},
components: { AcceptOrder, DialogInvoice, InvoiceRegister, ElImageViewer },
components: {AcceptOrder, DialogInvoice, InvoiceRegister, ElImageViewer},
methods: {
getOrderDetails() {
this.codeQuery.page = 1;
@ -435,7 +431,7 @@ export default {
},
getBizDetailList(row) {
this.bizQuery.orderIdFk = this.determineData.billNo;
if(row != null) {
if (row != null) {
this.bizQuery.batchNo = row.batchNo;
this.bizQuery.relId = row.bindRlFk;
}
@ -458,26 +454,26 @@ export default {
},
determineBtn() {
var data={
billNo:this.determineData.billNo,
checkStatus:1
var data = {
billNo: this.determineData.billNo,
checkStatus: 1
}
let index = this.codeDetailList.findIndex(item=>item.regStatus==false)
if(index!=-1){
let index = this.codeDetailList.findIndex(item => item.regStatus == false)
if (index != -1) {
this.$confirm("还有未登记的发票, 是否继续提交?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then( ()=>{
}).then(() => {
updateOrder(data).then((res) => {
this.closeDialog();
}).catch((error) => {
})
}).catch( ()=>{
}).catch(() => {
})
}else{
} else {
updateOrder(data).then((res) => {
this.closeDialog();
}).catch((error) => {

@ -251,15 +251,19 @@
prop="price"
></el-table-column>
<el-table-column
label="生产企业" width="180"
prop="manufacturer"
show-overflow-tooltip
label="计量单位" width="100"
prop="measname"
></el-table-column>
<el-table-column
label="注册/备案号"
prop="certCode" width="180"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="生产企业" width="180"
prop="manufacturer"
show-overflow-tooltip
></el-table-column>
</el-table>
<pagination
v-show="bizTotal>0"
@ -327,11 +331,6 @@
label="序列号"
prop="serialNo"
></el-table-column>
<el-table-column
label="供应商"
prop="supName"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="扫码数量"
prop="reCount"
@ -340,6 +339,11 @@
label="实际数量"
prop="reCount"
></el-table-column>
<el-table-column
label="供应商"
prop="supName"
show-overflow-tooltip
></el-table-column>
</el-table>
<pagination
v-show="resultTotal>0"
@ -736,7 +740,7 @@ export default {
printOrder(row) {
let tQuery = {
action: row.action,
moduleId: 1,
status: row.status,
}
this.loading = true;
inspectionOrderPDFFromTemplateFile(tQuery).then((response) => {
@ -745,7 +749,7 @@ export default {
templateId: response.data,
orderIdFk: row.billNo,
action: row.action,
moduleId: 1,
status: row.status,
}
orderPDFFromTemplateFile(tQuery).then((response) => {
//pdfurl

@ -242,6 +242,10 @@
label="价格" width="100"
prop="price"
></el-table-column>
<el-table-column
label="计量单位" width="100"
prop="measname"
></el-table-column>
<el-table-column
label="生产企业" width="180"
prop="manufacturer"
@ -349,8 +353,12 @@
prop="reCount" width="100"
></el-table-column>
<el-table-column
label="供应商"
prop="supName" width="180"
label="计量单位" width="100"
prop="measname"
></el-table-column>
<el-table-column
label="注册/备案号" width="180"
prop="certCode"
show-overflow-tooltip
></el-table-column>
<el-table-column
@ -359,8 +367,8 @@
show-overflow-tooltip
></el-table-column>
<el-table-column
label="注册/备案号" width="180"
prop="certCode"
label="供应商"
prop="supName" width="180"
show-overflow-tooltip
></el-table-column>
</el-table>
@ -429,10 +437,6 @@
label="序列号"
prop="serialNo" width="120"
></el-table-column>
<el-table-column
label="供应商"
prop="supName" width="180"
></el-table-column>
<el-table-column
label="扫码数量"
prop="count" width="100"
@ -441,6 +445,10 @@
label="实际数量"
prop="reCount" width="100"
></el-table-column>
<el-table-column
label="供应商"
prop="supName" width="180"
></el-table-column>
</el-table>
<pagination
@ -520,6 +528,7 @@ export default {
imgList: [],
imgViewerVisible: false,
BASE_URL: process.env.VUE_APP_BASE_API,
IMAGE_URL: process.env.VUE_APP_SYNC_API,
showSearch: true,
filterQuery: {
id: "",
@ -730,13 +739,14 @@ export default {
printOrder(row) {
let tQuery = {
action: row.action,
moduleId: 2,
status: row.status,
}
this.loading = true;
inspectionOrderPDFFromTemplateFile(tQuery).then((response) => {
if (response.code === 20000) {
tQuery = {
templateId: response.data,
status: row.status,
orderIdFk: row.billNo,
action: row.action,
moduleId: 2,
@ -892,7 +902,7 @@ export default {
page: 1,
limit: 10
};
if(!isBlank(this.currentRow.billNo)) {
if (!isBlank(this.currentRow.billNo)) {
this.getBizDetailList();
}
},
@ -930,7 +940,7 @@ export default {
page: 1,
limit: 10
};
if(!isBlank(this.currentRow.billNo)) {
if (!isBlank(this.currentRow.billNo)) {
this.getCodeDetailList();
}
},
@ -970,7 +980,7 @@ export default {
page: 1,
limit: 10
};
if(!isBlank(this.currentRow.billNo)) {
if (!isBlank(this.currentRow.billNo)) {
this.getResultDetailList();
}

@ -233,15 +233,19 @@
prop="price"
></el-table-column>
<el-table-column
label="生产企业" width="180"
prop="manufacturer"
show-overflow-tooltip
label="计量单位" width="100"
prop="measname"
></el-table-column>
<el-table-column
label="注册/备案号"
prop="certCode" width="180"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="生产企业" width="180"
prop="manufacturer"
show-overflow-tooltip
></el-table-column>
</el-table>
<pagination
v-show="bizTotal>0"
@ -315,8 +319,12 @@
prop="reCount" width="100"
></el-table-column>
<el-table-column
label="供应商"
prop="supName" width="180"
label="计量单位" width="100"
prop="measname"
></el-table-column>
<el-table-column
label="注册/备案号" width="180"
prop="certCode"
show-overflow-tooltip
></el-table-column>
<el-table-column
@ -325,8 +333,8 @@
show-overflow-tooltip
></el-table-column>
<el-table-column
label="注册/备案号" width="180"
prop="certCode"
label="供应商"
prop="supName" width="180"
show-overflow-tooltip
></el-table-column>
</el-table>
@ -394,10 +402,6 @@
label="序列号"
prop="serialNo"
></el-table-column>
<el-table-column
label="供应商"
prop="supName"
></el-table-column>
<el-table-column
label="扫码数量"
prop="count"
@ -406,6 +410,10 @@
label="实际数量"
prop="reCount"
></el-table-column>
<el-table-column
label="供应商"
prop="supName"
></el-table-column>
</el-table>
<pagination

@ -228,6 +228,10 @@
label="价格" width="100"
prop="price"
></el-table-column>
<el-table-column
label="计量单位" width="100"
prop="measname"
></el-table-column>
<el-table-column
label="生产企业" width="180"
prop="manufacturer"

@ -140,15 +140,19 @@
prop="price"
></el-table-column>
<el-table-column
label="生产企业" width="180"
prop="manufacturer"
show-overflow-tooltip
label="计量单位" width="100"
prop="measname"
></el-table-column>
<el-table-column
label="注册/备案号"
prop="certCode" width="180"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="生产企业" width="180"
prop="manufacturer"
show-overflow-tooltip
></el-table-column>
</el-table>
<pagination
v-show="bizTotal>0"
@ -223,8 +227,12 @@
prop="reCount"
></el-table-column>
<el-table-column
label="供应商"
prop="supName"
label="计量单位" width="100"
prop="measname"
></el-table-column>
<el-table-column
label="注册/备案凭证号"
prop="certCode"
show-overflow-tooltip
></el-table-column>
<el-table-column
@ -233,8 +241,8 @@
show-overflow-tooltip
></el-table-column>
<el-table-column
label="注册/备案凭证号"
prop="certCode"
label="供应商"
prop="supName"
show-overflow-tooltip
></el-table-column>
</el-table>
@ -304,11 +312,6 @@
label="序列号"
prop="serialNo"
></el-table-column>
<el-table-column
label="供应商"
prop="supName"
show-overflow-tooltip
></el-table-column>
<el-table-column
label="扫码数量"
prop="reCount"
@ -317,6 +320,11 @@
label="实际数量"
prop="reCount"
></el-table-column>
<el-table-column
label="供应商"
prop="supName"
show-overflow-tooltip
></el-table-column>
</el-table>
<pagination
v-show="resultTotal>0"

@ -160,7 +160,11 @@
<el-table-column label="批次号" prop="batchNo" 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"></el-table-column>
<el-table-column label="结余数量" prop="reCount" width="120">
<template slot-scope="scope">
<span>{{ scope.row.inCount - scope.row.outCount }}</span>
</template>
</el-table-column>
<el-table-column label="部门" prop="deptName" v-if="showSup"
show-overflow-tooltip width="120"></el-table-column>
<el-table-column label="仓库" prop="invName" v-if="showSup"

@ -4,10 +4,12 @@
style="display: flex; margin: 0px 0 10px 80%; height: 35px"
>
<el-button size="mini" type="primary" @click.native="saveData()"
>提交</el-button
>提交
</el-button
>
<el-button size="mini" type="primary" @click.native="closePlaceDialog(1)"
>关闭</el-button
>关闭
</el-button
>
</el-button-group>
<el-row>
@ -69,7 +71,7 @@
size="mini"
@click.native.stop="addCode()"
style="margin-left: 15px"
>添加
>添加
</el-button>
</el-col>
</el-row>
@ -142,14 +144,15 @@
</template>
<script>
import { getInvListByUser } from "@/api/system/invWarehouse";
import { getInvSpaceList } from "@/api/inventory/invSpace";
import { isBlank } from "@/utils/strUtil";
import {getInvListByUser} from "@/api/system/invWarehouse";
import {getInvSpaceList} from "@/api/inventory/invSpace";
import {isBlank} from "@/utils/strUtil";
import {
bindInvSpace,
getInvPlaceOrderDetailList,
getInvProductInfo,
} from "@/api/inventory/invPlace";
import A from "@/plugins/KeyScaner";
export default {
props: {
@ -174,6 +177,7 @@ export default {
spaceList: [],
loading: false,
spaceSearchResult: [],
sitcomScan: false,
};
},
methods: {
@ -218,7 +222,8 @@ export default {
this.$message.error(error.message);
});
})
.catch(() => {});
.catch(() => {
});
},
clearFormData() {
//
@ -262,7 +267,7 @@ export default {
},
createStateFilter(queryString) {
return (state) => {
const { value, code } = state;
const {value, code} = state;
return (
value === queryString.toLowerCase() ||
code === queryString.toLowerCase()
@ -285,7 +290,8 @@ export default {
this.getList();
this.$refs.spaceInputRef.focus();
})
.catch(() => {});
.catch(() => {
});
},
getSpaceList() {
let params = {
@ -327,7 +333,7 @@ export default {
getInvProductInfo(params).then((res) => {
if (res.code == 20000) {
this.orderId = res.data;
getInvPlaceOrderDetailList({ orderId: this.orderId }).then((res) => {
getInvPlaceOrderDetailList({orderId: this.orderId}).then((res) => {
this.list = res.data.list;
});
} else {
@ -361,6 +367,27 @@ export default {
mounted() {
//
this.$refs.spaceInputRef.focus();
document.body.ondrop = function (event) {
event.preventDefault();
event.stopPropagation();
};
var that = this;
var inputer = document.getElementById("inputer");
window.sc = new A.KeyScaner(inputer);//DOM
sc.onInput = function (text) {
//onInput500ms
if (text.includes("delete")) {
that.formData.code = "";
return;
}
if (that.sitcomScan) {
that.formData.code = that.formData.code;
} else {
that.formData.code = text;
}
};
inputer.focus();//divtabindexdocumentBody
},
};
</script>

@ -153,14 +153,20 @@
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="供应商" prop="supName" v-if="showSup" show-overflow-tooltip
width="120"></el-table-column>
<el-table-column label="货架" prop="spaceName" v-if="filterQuery.invSpaceCode!='' && filterQuery.invSpaceCode!=null" show-overflow-tooltip width="120"></el-table-column>
<el-table-column label="货架" prop="spaceName"
v-if="filterQuery.invSpaceCode!='' && filterQuery.invSpaceCode!=null" show-overflow-tooltip
width="120"></el-table-column>
<el-table-column label="DI/物资编码" prop="nameCode" width="150"></el-table-column>
<el-table-column label="物资名称" prop="cpmctymc" width="180" show-overflow-tooltip></el-table-column>
<el-table-column label="规格型号" prop="ggxh" show-overflow-tooltip width="180"></el-table-column>
<el-table-column label="批次号" prop="batchNo" 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"></el-table-column>
<el-table-column label="结余数量" prop="reCount" width="120">
<template slot-scope="scope">
<span>{{ scope.row.inCount - scope.row.outCount }}</span>
</template>
</el-table-column>
<el-table-column label="部门" prop="deptName" v-if="showSup"
show-overflow-tooltip width="120"></el-table-column>
<el-table-column label="仓库" prop="invName" v-if="showSup"
@ -472,7 +478,7 @@ export default {
};
},
created() {
this.filterQuery.invCode=this.$store.getters.locInvCode
this.filterQuery.invCode = this.$store.getters.locInvCode
let supId = this.$store.getters.customerId;
if (supId == "110") {
this.showSup = true;

@ -152,14 +152,20 @@
border>
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="供应商" prop="supName" v-if="showSup" show-overflow-tooltip width="120"></el-table-column>
<el-table-column label="货架" prop="spaceName" v-if="filterQuery.invSpaceCode!='' && filterQuery.invSpaceCode!=null" show-overflow-tooltip width="120"></el-table-column>
<el-table-column label="货架" prop="spaceName"
v-if="filterQuery.invSpaceCode!='' && filterQuery.invSpaceCode!=null" show-overflow-tooltip
width="120"></el-table-column>
<el-table-column label="DI/物资编码" prop="nameCode" width="150"></el-table-column>
<el-table-column label="物资名称" prop="cpmctymc" width="180" show-overflow-tooltip></el-table-column>
<el-table-column label="规格型号" prop="ggxh" show-overflow-tooltip width="180"></el-table-column>
<el-table-column label="批次号" prop="batchNo" 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"></el-table-column>
<el-table-column label="结余数量" prop="reCount" width="120">
<template slot-scope="scope">
<span>{{ scope.row.inCount - scope.row.outCount }}</span>
</template>
</el-table-column>
<el-table-column label="部门" prop="deptName" v-if="showSup"
show-overflow-tooltip width="120"></el-table-column>
<el-table-column label="仓库" prop="invName" v-if="showSup"
@ -331,9 +337,9 @@ export default {
findAllInvByUser(query)
.then((response) => {
this.invList = response.data || [];
for(var i=0;i< this.invList.length;i++){
if(this.invList[i].advanceType == 2){
this.filterQuery.invCode=this.invList[i].code;
for (var i = 0; i < this.invList.length; i++) {
if (this.invList[i].advanceType == 2) {
this.filterQuery.invCode = this.invList[i].code;
}
}
this.getList();
@ -449,7 +455,7 @@ export default {
}
this.findMethod();
this.getInvList();
// this.getList();
// this.getList();
},
};
</script>

@ -1,6 +1,13 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" v-show="showSearch" label-width="68px">
<el-form
:model="queryParams"
ref="queryForm"
size="mini"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<!-- <el-form-item label="登录地址:" prop="ipaddr" label-width="80px">-->
<!-- <el-input-->
<!-- v-model="queryParams.ipaddr"-->
@ -18,105 +25,153 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态:" prop="status">
<el-select
v-model="queryParams.status"
placeholder="登录状态"
clearable
>
<el-option
v-for="dict in dict.type.sys_common_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<!--<el-form-item label="状态:" prop="status">-->
<!-- <el-select-->
<!-- v-model="queryParams.status"-->
<!-- placeholder="登录状态"-->
<!-- clearable-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="dict in dict.type.sys_common_status"-->
<!-- :key="dict.value"-->
<!-- :label="dict.label"-->
<!-- :value="dict.value"-->
<!-- />-->
<!-- </el-select>-->
<!--</el-form-item>-->
<el-form-item>
<el-button-group>
<el-button type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button
type="primary"
icon="el-icon-delete"
icon="el-icon-refresh"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['monitor:logininfor:remove']"
>删除
</el-button>
@click="resetQuery"
>重置
</el-button
>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索
</el-button
>
</el-button-group>
</el-form-item>
</el-form>
<!-- <el-row :gutter="10" class="mb8">-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['monitor:logininfor:remove']"-->
<!-- >删除-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- @click="handleClean"-->
<!-- v-hasPermi="['monitor:logininfor:remove']"-->
<!-- >清空-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-unlock"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUnlock"-->
<!-- v-hasPermi="['monitor:logininfor:unlock']"-->
<!-- >解锁-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="warning"-->
<!-- plain-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handleExport"-->
<!-- v-hasPermi="['monitor:logininfor:export']"-->
<!-- >导出-->
<!-- </el-button>-->
<!-- </el-col>-->
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
<!-- </el-row>-->
<!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['monitor:logininfor:remove']"
>删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
@click="handleClean"
v-hasPermi="['monitor:logininfor:remove']"
>清空
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-unlock"
size="mini"
:disabled="single"
@click="handleUnlock"
v-hasPermi="['monitor:logininfor:unlock']"
>解锁
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['monitor:logininfor:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> -->
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" border
:default-sort="defaultSort" @sort-change="handleSortChange">
<el-table-column type="selection" width="55" align="center"/>
<!-- <el-table
ref="tables"
v-loading="loading"
:data="list"
@selection-change="handleSelectionChange"
border
:default-sort="defaultSort"
@sort-change="handleSortChange"
> -->
<el-table
ref="tables"
v-loading="loading"
:data="list"
border
:default-sort="defaultSort"
>
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" sortable="custom"
:sort-orders="['descending', 'ascending']"/>
<el-table-column label="登录地址" align="center" prop="ipaddr" width="130" :show-overflow-tooltip="true"/>
<el-table-column label="登录地点" align="center" prop="loginLocation" :show-overflow-tooltip="true"/>
<el-table-column label="浏览器" align="center" prop="browser" :show-overflow-tooltip="true"/>
<el-table-column label="操作系统" align="center" prop="os" show-overflow-tooltip/>
<el-table-column label="登录状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column
label="用户名称"
align="center"
prop="userName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="登录地址"
align="center"
prop="ipaddr"
width="130"
:show-overflow-tooltip="true"
/>
<el-table-column
label="登录地点"
align="center"
prop="loginLocation"
:show-overflow-tooltip="true"
/>
<el-table-column
label="浏览器"
align="center"
prop="browser"
:show-overflow-tooltip="true"
/>
<el-table-column
label="操作系统"
align="center"
prop="os"
show-overflow-tooltip
/>
<!--<el-table-column label="登录状态" align="center" prop="status">-->
<!-- <template slot-scope="scope">-->
<!-- <dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/>-->
<!-- </template>-->
<!--</el-table-column>-->
<el-table-column label="操作信息" align="center" prop="msg"/>
<el-table-column label="登录日期" align="center" prop="loginTime" width="180">
<el-table-column
label="登录日期"
align="center"
prop="loginTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.loginTime) }}</span>
</template>
@ -127,7 +182,7 @@
</el-table>
<pagination
v-show="total>0"
v-show="total > 0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.limit"
@ -137,11 +192,11 @@
</template>
<script>
import {list, delLogininfor, cleanLogininfor, unlockLogininfor} from "@/api/monitor/logininfor";
import {list} from "@/api/monitor/logininfor";
export default {
name: "Logininfor",
dicts: ['sys_common_status'],
dicts: ["sys_common_status"],
data() {
return {
//
@ -163,15 +218,14 @@ export default {
//
dateRange: [],
//
defaultSort: {prop: 'loginTime', order: 'descending'},
//
queryParams: {
page: 1,
limit: 10,
ipaddr: undefined,
userName: undefined,
status: undefined
}
status: undefined,
},
};
},
created() {
@ -181,7 +235,8 @@ export default {
/** 查询登录日志列表 */
getList() {
this.loading = true;
list(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
list(this.addDateRange(this.queryParams, this.dateRange)).then(
(response) => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
@ -197,60 +252,72 @@ export default {
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order);
this.handleQuery();
},
/** 多选框选中数据 */
handleSelectionChange(selection) {
this.ids = selection.map(item => item.infoId)
this.single = selection.length != 1
this.multiple = !selection.length
this.selectName = selection.map(item => item.userName);
},
/* handleSelectionChange(selection) {
this.ids = selection.map((item) => item.infoId);
this.single = selection.length != 1;
this.multiple = !selection.length;
this.selectName = selection.map((item) => item.userName);
}, */
/** 排序触发事件 */
handleSortChange(column, prop, order) {
/* handleSortChange(column, prop, order) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
}, */
/** 删除按钮操作 */
handleDelete(row) {
/* handleDelete(row) {
const infoIds = row.infoId || this.ids;
this.$modal.confirm('是否确认删除访问编号为"' + infoIds + '"的数据项?').then(function () {
return delLogininfor(infoIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
});
},
this.$modal
.confirm('是否确认删除访问编号为"' + infoIds + '"的数据项?')
.then(function () {
return delLogininfor(infoIds);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
}, */
/** 清空按钮操作 */
handleClean() {
this.$modal.confirm('是否确认清空所有登录日志数据项?').then(function () {
return cleanLogininfor();
}).then(() => {
this.getList();
this.$modal.msgSuccess("清空成功");
}).catch(() => {
});
},
/* handleClean() {
this.$modal
.confirm("是否确认清空所有登录日志数据项?")
.then(function () {
return cleanLogininfor();
})
.then(() => {
this.getList();
this.$modal.msgSuccess("清空成功");
})
.catch(() => {});
}, */
/** 解锁按钮操作 */
handleUnlock() {
/* handleUnlock() {
const username = this.selectName;
this.$modal.confirm('是否确认解锁用户"' + username + '"数据项?').then(function () {
return unlockLogininfor(username);
}).then(() => {
this.$modal.msgSuccess("用户" + username + "解锁成功");
}).catch(() => {
});
},
this.$modal
.confirm('是否确认解锁用户"' + username + '"数据项?')
.then(function () {
return unlockLogininfor(username);
})
.then(() => {
this.$modal.msgSuccess("用户" + username + "解锁成功");
})
.catch(() => {});
}, */
/** 导出按钮操作 */
handleExport() {
this.download('monitor/logininfor/export', {
...this.queryParams
}, `logininfor_${new Date().getTime()}.xlsx`)
}
}
/* handleExport() {
this.download(
"monitor/logininfor/export",
{
...this.queryParams,
},
`logininfor_${new Date().getTime()}.xlsx`
);
}, */
},
};
</script>

@ -1,7 +1,13 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="mini" :inline="true" v-show="showSearch" label-width="68px">
<el-form
:model="queryParams"
ref="queryForm"
size="mini"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="系统模块:" prop="title" label-width="80px">
<el-input
v-model="queryParams.title"
@ -18,49 +24,48 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="类型:" prop="businessType">
<el-select
v-model="queryParams.businessType"
placeholder="操作类型"
clearable
>
<el-option
v-for="dict in dict.type.sys_oper_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<!--<el-form-item label="类型:" prop="businessType">-->
<!-- <el-select-->
<!-- v-model="queryParams.businessType"-->
<!-- placeholder="操作类型"-->
<!-- clearable-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="dict in dict.type.sys_oper_type"-->
<!-- :key="dict.value"-->
<!-- :label="dict.label"-->
<!-- :value="dict.value"-->
<!-- />-->
<!-- </el-select>-->
<!--</el-form-item>-->
<el-form-item label="状态:" prop="status">
<el-select
v-model="queryParams.status"
placeholder="操作状态"
clearable
>
<el-option
v-for="dict in dict.type.sys_common_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-option label="正常" value="0"/>
<el-option label="失败" value="1"/>
</el-select>
</el-form-item>
<el-form-item>
<el-button-group>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button type="primary" icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
<el-button
type="primary"
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['monitor:operlog:remove']"
>删除
</el-button>
</el-button-group>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索
</el-button
>
<el-button
type="primary"
icon="el-icon-refresh"
size="mini"
@click="resetQuery"
>重置
</el-button
>
</el-form-item>
<!-- <el-form-item label="操作时间:" label-width="80px">-->
@ -74,39 +79,76 @@
<!-- end-placeholder="结束日期"-->
<!-- ></el-date-picker>-->
<!-- </el-form-item>-->
</el-form>
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange"
:default-sort="defaultSort" @sort-change="handleSortChange" border>
<el-table-column type="selection" width="55" align="center"/>
<el-table
ref="tables"
v-loading="loading"
:data="list"
:default-sort="defaultSort"
border
>
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="序号" type="index"></el-table-column>
<el-table-column label="系统模块" align="center" prop="title"/>
<el-table-column label="操作类型" align="center" prop="businessType">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_oper_type" :value="scope.row.businessType"/>
</template>
</el-table-column>
<!--<el-table-column label="操作类型" align="center" prop="businessType">-->
<!-- <template slot-scope="scope">-->
<!-- <dict-tag :options="dict.type.sys_oper_type" :value="scope.row.businessType"/>-->
<!-- </template>-->
<!--</el-table-column>-->
<el-table-column label="请求方式" align="center" prop="requestMethod"/>
<el-table-column label="操作人员" align="center" prop="operUserName" width="100" :show-overflow-tooltip="true"
sortable="custom" :sort-orders="['descending', 'ascending']"/>
<el-table-column label="操作地址" align="center" prop="operIp" width="130" :show-overflow-tooltip="true"/>
<el-table-column label="操作地点" align="center" prop="operLocation" :show-overflow-tooltip="true"/>
<el-table-column
label="操作人员"
align="center"
prop="operUserName"
width="100"
:show-overflow-tooltip="true"
/>
<el-table-column
label="操作地址"
align="center"
prop="operIp"
width="130"
:show-overflow-tooltip="true"
/>
<el-table-column
label="操作地点"
align="center"
prop="operLocation"
:show-overflow-tooltip="true"
/>
<el-table-column label="操作状态" align="center" prop="status">
<!-- <template slot-scope="scope">
<dict-tag
:options="dict.type.sys_common_status"
:value="scope.row.status"
/>
</template> -->
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/>
<el-tag :type="scope.row.status === 0 ? 'success' : 'warning'">{{
scope.row.status === 0 ? "正常" : "失败"
}}
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作日期" align="center" prop="operTime" sortable="custom"
:sort-orders="['descending', 'ascending']" width="180">
<el-table-column
label="操作日期"
align="center"
prop="operTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.operTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
type="text"
@click="handleView(scope.row,scope.index)"
@click="handleView(scope.row, scope.index)"
v-hasPermi="['monitor:operlog:query']"
>详情
</el-button>
@ -114,7 +156,7 @@
</el-table-column>
</el-table>
<pagination
v-show="total>0"
v-show="total > 0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.limit"
@ -122,19 +164,29 @@
/>
<!-- 操作日志详细 -->
<el-dialog title="操作日志-详情" :visible.sync="open" width="700px" append-to-body>
<el-dialog
title="操作日志-详情"
:visible.sync="open"
width="700px"
append-to-body
>
<el-form ref="form" :model="form" label-width="100px" size="mini">
<el-row>
<el-col :span="12">
<el-form-item label="操作模块:">{{ form.title }} / {{ typeFormat(form) }}</el-form-item>
<el-form-item
label="登录信息:"
<el-form-item label="操作模块:"
>{{ form.title }} / {{ typeFormat(form) }}
</el-form-item
>
<el-form-item label="登录信息:"
>{{ form.operName }} / {{ form.operIp }} / {{ form.operLocation }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="请求地址:">{{ form.operUrl }}</el-form-item>
<el-form-item label="请求方式:">{{ form.requestMethod }}</el-form-item>
<el-form-item label="请求方式:">{{
form.requestMethod
}}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="操作方法:">{{ form.method }}</el-form-item>
@ -143,7 +195,10 @@
<el-form-item label="请求参数:">{{ form.operParam }}</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="返回参数:">{{ form.jsonResult }}</el-form-item>
<el-form-item label="返回参数:">{{
form.jsonResult
}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="操作状态:">
@ -152,10 +207,16 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="操作时间:">{{ parseTime(form.operTime) }}</el-form-item>
<el-form-item label="操作时间:">{{
parseTime(form.operTime)
}}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="异常信息:" v-if="form.status === 1">{{ form.errorMsg }}</el-form-item>
<el-form-item label="异常信息:" v-if="form.status === 1">{{
form.errorMsg
}}
</el-form-item>
</el-col>
</el-row>
</el-form>
@ -171,7 +232,7 @@ import {list, delOperlog, cleanOperlog} from "@/api/monitor/operlog";
export default {
name: "Operlog",
dicts: ['sys_oper_type', 'sys_common_status'],
dicts: ["sys_oper_type", "sys_common_status"],
data() {
return {
//
@ -191,7 +252,6 @@ export default {
//
dateRange: [],
//
defaultSort: {prop: 'operTime', order: 'descending'},
//
form: {},
//
@ -201,8 +261,8 @@ export default {
title: undefined,
operName: undefined,
businessType: undefined,
status: undefined
}
status: undefined,
},
};
},
created() {
@ -212,7 +272,8 @@ export default {
/** 查询登录日志 */
getList() {
this.loading = true;
list(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
list(this.addDateRange(this.queryParams, this.dateRange)).then(
(response) => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
@ -221,7 +282,10 @@ export default {
},
//
typeFormat(row, column) {
return this.selectDictLabel(this.dict.type.sys_oper_type, row.businessType);
return this.selectDictLabel(
this.dict.type.sys_oper_type,
row.businessType
);
},
/** 搜索按钮操作 */
handleQuery() {
@ -232,53 +296,62 @@ export default {
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order);
this.handleQuery();
},
/** 多选框选中数据 */
handleSelectionChange(selection) {
this.ids = selection.map(item => item.operId)
this.multiple = !selection.length
},
/* handleSelectionChange(selection) {
this.ids = selection.map((item) => item.operId);
this.multiple = !selection.length;
}, */
/** 排序触发事件 */
handleSortChange(column, prop, order) {
/* handleSortChange(column, prop, order) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
}, */
/** 详细按钮操作 */
handleView(row) {
this.open = true;
this.form = row;
},
/** 删除按钮操作 */
handleDelete(row) {
/* handleDelete(row) {
const operIds = row.operId || this.ids;
this.$modal.confirm('是否确认删除日志编号为"' + operIds + '"的数据项?').then(function () {
return delOperlog(operIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
});
},
this.$modal
.confirm('是否确认删除日志编号为"' + operIds + '"的数据项?')
.then(function () {
return delOperlog(operIds);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
}, */
/** 清空按钮操作 */
handleClean() {
this.$modal.confirm('是否确认清空所有操作日志数据项?').then(function () {
return cleanOperlog();
}).then(() => {
this.getList();
this.$modal.msgSuccess("清空成功");
}).catch(() => {
});
},
/* handleClean() {
this.$modal
.confirm("是否确认清空所有操作日志数据项?")
.then(function () {
return cleanOperlog();
})
.then(() => {
this.getList();
this.$modal.msgSuccess("清空成功");
})
.catch(() => {});
}, */
/** 导出按钮操作 */
handleExport() {
this.download('monitor/operlog/export', {
...this.queryParams
}, `operlog_${new Date().getTime()}.xlsx`)
}
}
/* handleExport() {
this.download(
"monitor/operlog/export",
{
...this.queryParams,
},
`operlog_${new Date().getTime()}.xlsx`
);
}, */
},
};
</script>

@ -141,7 +141,7 @@
:close-on-click-modal="false"
:close-on-press-escape="false"
:before-close="closeAddDialog"
width="60%"
width="80%"
>
<addInvRemindSetDialog
:closeDialog="closeAddDialog"

@ -218,7 +218,7 @@ export default {
this.userTotal = res.data.total;
}).catch((error) => {
this.$message.error("用户数据加载失败")
this.$message.error("数据正在处理,请勿重复提交")
});
},

Loading…
Cancel
Save