Commit 30b370be authored by 黄媛媛's avatar 黄媛媛

耗材盘点

parent 3ad77478
<template>
<div class="assetsList InventoryDetail">
<div class="routerTitle">
<span class="pageTitle">耗材盘点明细<span @click="Backto" style="position:relative;top:-5px" class="backTo">返回</span></span>
<span
@click="morequery = !morequery"
style="display:inline-flex;align-items:center;cursor: pointer;"
class="f12 cd6"
>
<span style="margin-right:5px">高级查询</span>
<img
v-show="!morequery"
style="width:12px;height:12px;"
src="../../assets/img/more.png"
alt=""
/>
<img
v-show="morequery"
class="roatImg"
style="width:12px;height:12px"
src="../../assets/img/more.png"
alt=""
/>
</span>
<span @click="getList" style="margin-left:20px" class="chaxunSpan"
>查询</span
>
</div>
<div class="padContent">
<ul v-show="morequery" class="queryul">
<li>
<el-input
class="w200"
size="small"
v-model="msg.SuppliesId"
placeholder="物料Id"
@keyup.enter.native="msg.pageIndex=1,getList()"
></el-input>
</li>
<li>
<el-input
class="w200"
size="small"
v-model="msg.SuppliesName"
placeholder="物料名称"
@keyup.enter.native="msg.pageIndex=1,getList()"
></el-input>
</li>
<li>
<el-select size="small" v-model="msg.CheckStatus" @change="msg.pageIndex=1,getList()">
<el-option label="盘点状态" :value="0"> </el-option>
<el-option v-for="item in getCheckStatusList" :key="item.Id" :label="item.Name" :value="item.Id"> </el-option>
</el-select>
</li>
</ul>
<vxe-table stripe style="margin-top:15px" :loading="loading"
:data="tableData">
<vxe-table-column field="Name" title="状态">
<template v-slot="{ row }">
<span class="ColorSpan huangSpan" v-if="row.CheckStatus == 1"></span>
<span class="ColorSpan greenSpan" v-if="row.CheckStatus == 2"></span>
<span class="ColorSpan purpleSpan" v-if="row.CheckStatus == 3"></span>
<span class="ColorSpan redSpan" v-if="row.CheckStatus == 4"></span>
<span >{{row.CheckStatusName}}</span>
</template>
</vxe-table-column>
<vxe-table-column field="SuppliesNo" title="物料编号"></vxe-table-column>
<vxe-table-column field="SuppliesId" title="物料id"></vxe-table-column>
<vxe-table-column field="SuppliesName" title="物料名称"></vxe-table-column>
<vxe-table-column field="SpecificationList" title="规格">
<template v-slot="{ row }">
<span v-for="(x,y) in row.SpecificationList" :key="y">{{x}} <span v-if="row.SpecificationList.length !== y+1"> , </span></span>
</template>
</vxe-table-column>
<vxe-table-column field="InventoryNum" title="库存"></vxe-table-column>
<vxe-table-column field="RealityNum" title="实际数量"></vxe-table-column>
<vxe-table-column field="Remark" title="备注"></vxe-table-column>
<vxe-table-column field="CheckEmpName" title="盘点人名称"></vxe-table-column>
<vxe-table-column field="CheckDate" title="盘点时间"></vxe-table-column>
<vxe-table-column field="address" title="操作">
<template v-slot="{ row }">
<el-tooltip class="item" effect="dark" content="保存" placement="top" v-if="row.CheckState ==1">
<img v-if="row.CheckState ==1" @click="Edit(row)" style="width:24px;height:24px" src="../../assets/img/edit.png" alt="">
</el-tooltip>
</template>
</vxe-table-column>
</vxe-table>
<el-pagination
@current-change="currentChange"
background
:page-size="msg.pageSize"
layout="prev, pager, next"
:total="total"
:current-page.sync="msg.pageIndex"
>
</el-pagination>
</div>
</div>
</template>
<script>
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "assetsList",
components: {
Treeselect
},
data() {
return {
valueConsistsOf: 'ALL',
queryLoad:false,
addMsg: {
Id: 0,
WarehouseId:'',
StartDate: "",
EndDate: ""
},
morequery: false,
dateList: [],
currentPage: 1,
tableData: [],
loading: false,
total: 0,
msg: {
pageIndex: 1,
pageSize: 99999999,
CheckId:0,
SuppliesId:'',
SuppliesName:'',
CheckStatus:0,
// DealStatus:0,//盈亏处理状态 (在盈亏界面使用)
IsSelectCheckLoss:0,//是否只查询盘点盈亏的 1是 0否
IsSelectHaveInventory:0,//是否只查询有库存数量的 1是 0否
},
getCheckStatusList:[],
dialogtitle: "新增",
dialogState: false,
};
},
mounted() {
this.msg.CheckId = this.$route.query.CheckId
this.getList();
this.getCheckStatus()
},
methods: {
limitText(val){
return `+${val}`
},
SetEnd(item,type){
let that=this;
let msg={};
this.$confirm("确认该操作?","提示", {
confirmButtonText:"确定",
cancelButtonText: "取消",
type: 'warning'
}).then(() => {
msg.CheckId = item.Id;
msg.Type = type;
this.apiJavaPost(
"/api/property/SetPropertyCheckStatus",
msg,
res => {
if (res.data.resultCode === 1) {
this.getList();
this.Success(res.data.message);
} else {
this.Error(res.data.message);
}
},
null
);
}).catch(() => {
});
},
SeeDetails(item,path){
this.$router.push({
path: path,
query: {
CheckId:item.Id
}
});
},
Delete(item) {
let Id = item.Id;
this.$confirm("确认取消?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.apiJavaPost(
"/api/supplies/CancelSuppliesCheck",
{ CheckId: Id },
res => {
if (res.data.resultCode === 1) {
this.getList();
this.Success(res.data.message);
} else {
this.Error(res.data.message);
}
},
null
);
})
.catch(() => {
this.$message.info("已取消!");
});
},
analyse(item){
let Id = item.Id;
this.$confirm("确认复盘?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.apiJavaPost(
"/api/supplies/RepeatSuppliesCheck",
{ CheckId: Id },
res => {
if (res.data.resultCode === 1) {
this.getList();
this.Success(res.data.message);
} else {
this.Error(res.data.message);
}
},
null
);
})
.catch(() => {
this.$message.info("已取消复盘!");
});
},
submitForm(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
if(this.dateList && this.dateList.length>0){
this.addMsg.StartDate=this.dateList[0];
this.addMsg.EndDate=this.dateList[1];
}
delete this.addMsg.UpdateBy;
delete this.addMsg.UpdateDate;
this.queryLoad=true;
this.apiJavaPost(
"/api/supplies/SetSuppliesCheck",
this.addMsg,
res => {
this.queryLoad=false;
if (res.data.resultCode === 1) {
this.getList();
this.Success(res.data.message);
this.dialogState = false;
} else {
this.Error(res.data.message);
}
},
null
);
} else {
return false;
}
});
},
currentChange(val) {
this.msg.pageIndex = val;
this.getList();
},
getList() {
this.loading = true;
this.apiJavaPost(
"/api/supplies/GetSuppliesCheckDetailPageList",
this.msg,
res => {
this.loading = false;
if (res.data.resultCode === 1) {
this.tableData = res.data.data.pageData;
this.total = res.data.data.count;
} else {
this.Error(res.data.message);
}
},
null
);
},
getCheckStatus(){
this.apiJavaPost("/api/property/GetPropertyCheckStatusEnumList", {},
res => {
if (res.data.resultCode === 1) {
this.getCheckStatusList = res.data.data;
} else {
this.Error(res.data.message);
}
},
null
);
},
Backto(){
this.$router.push({
path: "/consumablesInventory"
});
}
}
};
</script>
<style>
.InventoryDetail .MyEditForm .dateList .el-input__inner{
/* width:300px; */
}
.InventoryDetail .dateList .el-date-editor .el-range__icon{
line-height: 24px;
}
.InventoryDetail .dateList .el-date-editor .el-range-separator{
line-height: 22px;
}
.InventoryDetail .MyEditForm .dateList.el-input__inner{
width: 300px;
}
.assetsList .MyEditForm .baseform .el-form-item:nth-child(4n) {
margin-right: 0;
}
.assetsList .zczt1 {
background: #ffe4d5;
color: #ffa87c;
}
.assetsList .zczt2 {
background: #beeff0;
color: #089bab;
}
.assetsList .zczt3 {
background: #ffd6d5;
color: #ff7874;
}
.assetsList .zczt4 {
background: #d7d6ff;
color: #7b78ff;
}
.assetsList .Commonzczt {
display: inline-block;
width: 24px;
height: 24px;
line-height: 24px;
text-align: center;
border-radius: 50%;
font-size: 12px;
font-family: "Microsoft YaHei";
}
.assetsList {
width: 100%;
height: 100%;
}
</style>
<template>
<div class="assetsList consumablesInventory">
<div class="routerTitle">
<span class="pageTitle">耗材盘点单列表</span>
<span
@click="morequery = !morequery"
style="display:inline-flex;align-items:center;cursor: pointer;"
class="f12 cd6"
>
<span style="margin-right:5px">高级查询</span>
<img
v-show="!morequery"
style="width:12px;height:12px;"
src="../../assets/img/more.png"
alt=""
/>
<img
v-show="morequery"
class="roatImg"
style="width:12px;height:12px"
src="../../assets/img/more.png"
alt=""
/>
</span>
<span @click="getList" style="margin-left:20px" class="chaxunSpan"
>查询</span
>
<span @click="addSupplier" style="margin-left:20px" class="addSpan">
<img
style="width:10px;height:10px;margin-right:6px"
src="../../assets/img/add.png"
alt=""
/>
新增</span
>
</div>
<div class="padContent">
<ul v-show="morequery" class="queryul">
<li>
<el-input
class="w200"
size="small"
v-model="msg.Periods"
placeholder="期数"
@keyup.enter.native="msg.pageIndex=1,getList()"
></el-input>
</li>
<li>
<el-select size="small" v-model="msg.WarehouseId" @change="msg.pageIndex=1,getList()">
<el-option label="仓库名称" :value="0"> </el-option>
<el-option v-for="item in getWareHouseList" :key="item.Id" :label="item.Name" :value="item.Id"> </el-option>
</el-select>
</li>
<li>
<el-select size="small" v-model="msg.CheckState" @change="msg.pageIndex=1,getList()">
<el-option label="盘点状态" :value="0"> </el-option>
<el-option v-for="item in getCheckStatusList" :key="item.Id" :label="item.Name" :value="item.Id"> </el-option>
</el-select>
</li>
</ul>
<vxe-table stripe style="margin-top:15px" :loading="loading"
:data="tableData">
<vxe-table-column field="Name" title="状态">
<template v-slot="{ row }">
<span class="ColorSpan huangSpan" v-if="row.CheckState == 1"></span>
<span class="ColorSpan greenSpan" v-if="row.CheckState == 2"></span>
<span class="ColorSpan purpleSpan" v-if="row.CheckState == 3"></span>
<span >{{row.CheckStateName}}</span>
</template>
</vxe-table-column>
<vxe-table-column field="Periods" title="盘点期数"></vxe-table-column>
<vxe-table-column field="WarehouseName" title="仓库"></vxe-table-column>
<vxe-table-column field="Mobile" title="时间(开始/结束)">
<template v-slot="{ row }">
<p v-if="row.StartDate && row.StartDate!=''">{{row.StartDate}}</p>
<p v-if="row.EndDate && row.EndDate!=''">{{row.EndDate}}</p>
</template>
</vxe-table-column>
<vxe-table-column field="Remark" title="备注"></vxe-table-column>
<vxe-table-column field="UpdateBy" title="操作人"></vxe-table-column>
<vxe-table-column field="UpdateDate" title="操作时间"></vxe-table-column>
<vxe-table-column field="address" title="操作">
<template v-slot="{ row }">
<el-tooltip class="item" effect="dark" content="编辑" placement="top" v-if="row.CheckState ==1">
<img v-if="row.CheckState ==1" @click="Edit(row)" style="width:24px;height:24px" src="../../assets/img/edit.png" alt="">
</el-tooltip>
<el-tooltip class="item" effect="dark" content="取消" placement="top" v-if="row.CheckState ==1">
<img v-if="row.CheckState ==1" @click="Delete(row)" style="width:24px;height:24px" src="../../assets/img/qx.png" alt="">
</el-tooltip>
<el-tooltip class="item" effect="dark" content="查看详情" placement="top" v-if="row.CheckState==2">
<img v-if="row.CheckState==2" @click="SeeDetails(row,'/InventoryDetails')" style="width:24px;height:24px" src="../../assets/img/chakan.png" alt="" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="盘点明细" placement="top" v-if="row.CheckState==1">
<img v-if="row.CheckState==1" @click="SeeDetails(row,'/InventoryDetail')" style="width:24px;height:24px" src="../../assets/img/sz.png" alt="" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下载明细" placement="top" v-if="row.CheckState==1">
<img v-if="row.CheckState == 1" @click="" style="width:24px;height:24px" src="../../assets/img/xz.png" alt="" />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="复盘" placement="top" v-if="row.CheckState==2">
<img v-if="row.CheckState == 2" @click="analyse(row)" style="width:24px;height:24px" src="../../assets/img/cz.png" alt="" />
</el-tooltip>
</template>
</vxe-table-column>
</vxe-table>
<el-pagination
@current-change="currentChange"
background
:page-size="msg.pageSize"
layout="prev, pager, next"
:total="total"
:current-page.sync="msg.pageIndex"
>
</el-pagination>
</div>
<el-dialog
:title="dialogtitle"
:close-on-click-modal="false"
:visible.sync="dialogState"
top="0"
width="620px"
>
<el-form
class="MyEditForm"
:model="addMsg"
:rules="rules"
ref="addMsg"
label-width="0px"
>
<div class="basefix">
<div class="baseform">
<el-form-item label="" prop="WarehouseId">
<span class="label">仓库</span>
<el-select
:disabled = dialogdisabled
size="mini"
v-model="addMsg.WarehouseId"
placeholder="请选择"
>
<el-option
v-for="item in getWareHouseList"
:key="item.Id"
:label="item.Name"
:value="item.Id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item class="dateList" label="" style="width:300px">
<span class="label">计划时间</span>
<div>
<el-date-picker style="width:300px"
v-model="dateList"
type="daterange"
range-separator="至"
value-format="yyyy-MM-dd"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</div>
</el-form-item>
</div>
</div>
<div class="btnformItem">
<span v-loading="queryLoad" class="submitBtn" type="primary" @click="submitForm('addMsg')"
>确定</span
>
<span class="exitBtn" @click="dialogState = false">取消</span>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
name: "assetsList",
components: {
Treeselect
},
data() {
return {
valueConsistsOf: 'ALL',
queryLoad:false,
addMsg: {
Id: 0,
WarehouseId:'',
StartDate: "",
EndDate: ""
},
morequery: false,
dateList: [],
currentPage: 1,
tableData: [],
loading: false,
total: 0,
msg: {
pageIndex: 1,
pageSize: 10,
Periods: "",
WarehouseId:0,
CheckState:0,
},
getWareHouseList:[],
getCheckStatusList:[],
dialogtitle: "新增",
dialogState: false,
rules: {
Name: [{ required: true, message: "请输入名称", trigger: "blur" }],
WarehouseId: [
{ required: true, message: "请选择仓库", trigger: "change" }
]
},
dialogdisabled:false,
};
},
mounted() {
this.getList();
this.getWareHouse();
this.getCheckStatus()
},
methods: {
limitText(val){
return `+${val}`
},
SetEnd(item,type){
let that=this;
let msg={};
this.$confirm("确认该操作?","提示", {
confirmButtonText:"确定",
cancelButtonText: "取消",
type: 'warning'
}).then(() => {
msg.CheckId = item.Id;
msg.Type = type;
this.apiJavaPost(
"/api/property/SetPropertyCheckStatus",
msg,
res => {
if (res.data.resultCode === 1) {
this.getList();
this.Success(res.data.message);
} else {
this.Error(res.data.message);
}
},
null
);
}).catch(() => {
});
},
SeeDetails(item,path){
this.$router.push({
path: path,
query: {
CheckId:item.Id
}
});
},
addSupplier() {
this.addMsg = {
Id: 0,
WarehouseId:'',
StartDate: "",
EndDate: ""
};
this.dialogtitle = "新增";
this.dialogState = true;
this.dialogdisabled = false
},
Edit(item) {
this.dialogdisabled = true
this.dialogtitle = "编辑";
this.dialogState = true;
let itemdata =Object.assign({}, item)
this.addMsg.Id =itemdata.Id ;
this.addMsg.WarehouseId =itemdata.WarehouseId ;
this.addMsg.StartDate =itemdata.StartDate ;
this.addMsg.EndDate =itemdata.EndDate ;
this.dateList=[];
this.dateList[0]=this.addMsg.StartDate;
this.dateList[1]=this.addMsg.EndDate;
},
Delete(item) {
let Id = item.Id;
this.$confirm("确认取消?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.apiJavaPost(
"/api/supplies/CancelSuppliesCheck",
{ CheckId: Id },
res => {
if (res.data.resultCode === 1) {
this.getList();
this.Success(res.data.message);
} else {
this.Error(res.data.message);
}
},
null
);
})
.catch(() => {
this.$message.info("已取消!");
});
},
analyse(item){
let Id = item.Id;
this.$confirm("确认复盘?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.apiJavaPost(
"/api/supplies/RepeatSuppliesCheck",
{ CheckId: Id },
res => {
if (res.data.resultCode === 1) {
this.getList();
this.Success(res.data.message);
} else {
this.Error(res.data.message);
}
},
null
);
})
.catch(() => {
this.$message.info("已取消复盘!");
});
},
submitForm(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
if(this.dateList && this.dateList.length>0){
this.addMsg.StartDate=this.dateList[0];
this.addMsg.EndDate=this.dateList[1];
}
delete this.addMsg.UpdateBy;
delete this.addMsg.UpdateDate;
this.queryLoad=true;
this.apiJavaPost(
"/api/supplies/SetSuppliesCheck",
this.addMsg,
res => {
this.queryLoad=false;
if (res.data.resultCode === 1) {
this.getList();
this.Success(res.data.message);
this.dialogState = false;
} else {
this.Error(res.data.message);
}
},
null
);
} else {
return false;
}
});
},
currentChange(val) {
this.msg.pageIndex = val;
this.getList();
},
getList() {
this.loading = true;
this.apiJavaPost(
"/api/supplies/GetSuppliesCheckPageList",
this.msg,
res => {
this.loading = false;
if (res.data.resultCode === 1) {
this.tableData = res.data.data.pageData;
this.total = res.data.data.count;
} else {
this.Error(res.data.message);
}
},
null
);
},
getWareHouse() {
this.apiJavaPost("/api/Supplies/GetWareHouseList", {
Name: ''
},
res => {
if (res.data.resultCode === 1) {
this.getWareHouseList = res.data.data;
} else {
this.Error(res.data.message);
}
},
null
);
},
getCheckStatus(){
this.apiJavaPost("/api/supplies/GetSuppliesCheckStatusEnumList", {},
res => {
if (res.data.resultCode === 1) {
this.getCheckStatusList = res.data.data;
} else {
this.Error(res.data.message);
}
},
null
);
}
}
};
</script>
<style>
.consumablesInventory .MyEditForm .dateList .el-input__inner{
/* width:300px; */
}
.consumablesInventory .dateList .el-date-editor .el-range__icon{
line-height: 24px;
}
.consumablesInventory .dateList .el-date-editor .el-range-separator{
line-height: 22px;
}
.consumablesInventory .MyEditForm .dateList.el-input__inner{
width: 300px;
}
.assetsList .MyEditForm .baseform .el-form-item:nth-child(4n) {
margin-right: 0;
}
.assetsList .zczt1 {
background: #ffe4d5;
color: #ffa87c;
}
.assetsList .zczt2 {
background: #beeff0;
color: #089bab;
}
.assetsList .zczt3 {
background: #ffd6d5;
color: #ff7874;
}
.assetsList .zczt4 {
background: #d7d6ff;
color: #7b78ff;
}
.assetsList .Commonzczt {
display: inline-block;
width: 24px;
height: 24px;
line-height: 24px;
text-align: center;
border-radius: 50%;
font-size: 12px;
font-family: "Microsoft YaHei";
}
.assetsList {
width: 100%;
height: 100%;
}
</style>
......@@ -223,6 +223,19 @@ export default {
name: 'chukudan',
component: resolve => require(['@/components/Materialman/chukudan'], resolve),
},
// 耗材盘点
{
path: '/consumablesInventory',
name: 'consumablesInventory',
component: resolve => require(['@/components/Materialman/consumablesInventory'], resolve),
},
// 耗材盘点明細
{
path: '/InventoryDetail',
name: 'InventoryDetail',
component: resolve => require(['@/components/Materialman/InventoryDetail'], resolve),
},
// 现存量查询
{
path: '/SpotQuery',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment