修改库存

This commit is contained in:
liang.chao 2025-08-27 11:43:36 +08:00
parent e885973e01
commit 8fb70056a7
1 changed files with 191 additions and 82 deletions

View File

@ -35,8 +35,8 @@
@mouseleave="onMouseleave()" @mouseleave="onMouseleave()"
> >
<span v-if="isMousemoveId === data.id && node.label.length > 5">{{ <span v-if="isMousemoveId === data.id && node.label.length > 5">{{
node.label.slice(0, 3) + "..." node.label.slice(0, 3) + "..."
}}</span> }}</span>
<span v-else>{{ node.label }}</span> <span v-else>{{ node.label }}</span>
<span class="btn-items" v-if="isMousemoveId === data.id"> <span class="btn-items" v-if="isMousemoveId === data.id">
@ -96,10 +96,12 @@
icon="el-icon-search" icon="el-icon-search"
size="mini" size="mini"
@click="handleQuery" @click="handleQuery"
>查询</el-button >查询
</el-button
> >
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery" <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button >重置
</el-button
> >
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -112,7 +114,7 @@
icon="el-icon-download" icon="el-icon-download"
size="mini" size="mini"
@click="handleExport" @click="handleExport"
>导出 >导出
</el-button> </el-button>
</el-col> </el-col>
<right-toolbar <right-toolbar
@ -128,10 +130,10 @@
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column label="序号" align="center" width="80" type="index"> <el-table-column label="序号" align="center" width="80" type="index">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{(queryParams.pageNum - 1) * 10 + scope.$index + 1}}</span> <span>{{ (queryParams.pageNum - 1) * 10 + scope.$index + 1 }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="类型编码" label="类型编码"
align="center" align="center"
@ -198,6 +200,15 @@
> >
编辑 编辑
</el-button> </el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="updateStorageNum(scope.row)"
v-hasPermi="['ma:type:edit']"
>
修改库存
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@ -334,19 +345,19 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="计量数值" prop="unitValue"> <el-form-item label="计量数值" prop="unitValue">
<el-select <el-select
v-model="form.unitValue" v-model="form.unitValue"
filterable filterable
placeholder="请选择计量数值" placeholder="请选择计量数值"
style="width: 100%" style="width: 100%"
> >
<el-option <el-option
v-for="item in unitValueOptions" v-for="item in unitValueOptions"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- <el-col :span="12"> <!-- <el-col :span="12">
@ -538,7 +549,7 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="抽检比例(%)" prop="samplingRatio"> <el-form-item label="抽检比例(%)" prop="samplingRatio">
<el-input <el-input
@ -648,7 +659,8 @@
v-if="this.title == '新增' || this.title == '修改'" v-if="this.title == '新增' || this.title == '修改'"
type="primary" type="primary"
@click="submitForm" @click="submitForm"
> </el-button >
</el-button
> >
</template> </template>
@ -657,9 +669,51 @@
<!-- <el-button @click="cancel"> </el-button> --> <!-- <el-button @click="cancel"> </el-button> -->
</div> </div>
</el-dialog> </el-dialog>
<!-- 修改库存对话框 -->
<el-dialog
:title="storageTitle"
:visible.sync="storageOpen"
width="600px"
append-to-body
:close-on-click-modal="false"
>
<el-form ref="storageForm" :model="storageForm" :rules="storageRules" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="当前库存" prop="currentStorage">
<el-input
v-model="storageForm.currentStorage"
type="number"
:min="0"
placeholder="当前库存数量"
maxlength="10"
disabled
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="新库存数量" prop="storageNum">
<el-input
v-model="storageForm.storageNum"
type="number"
:min="0"
placeholder="请输入新的库存数量"
maxlength="10"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitStorageForm"> </el-button>
<el-button @click="storageOpen = false"> </el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogVisible"> <el-dialog :visible.sync="dialogVisible">
<img width="100%" height="650px" :src="dialogImageUrl" alt /> <img width="100%" height="650px" :src="dialogImageUrl" alt/>
</el-dialog> </el-dialog>
<!-- 新增弹框 --> <!-- 新增弹框 -->
@ -689,21 +743,22 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="名称" prop="typeName"> <el-form-item label="名称" prop="typeName">
<el-input style="width: 100%" v-model="addFormParams.typeName" /> <el-input style="width: 100%" v-model="addFormParams.typeName"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" v-if="addTitle === '修改' && this.levelTemp == 3"> <el-col :span="12" v-if="addTitle === '修改' && this.levelTemp == 3">
<el-form-item label="是否录入编码" prop="isEnter"> <el-form-item label="是否录入编码" prop="isEnter">
<el-select style="width: 100%" v-model="addFormParams.isEnter"> <el-select style="width: 100%" v-model="addFormParams.isEnter">
<el-option label="是" value="1" /> <el-option label="是" value="1"/>
<el-option label="否" value="0" /> <el-option label="否" value="0"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" v-if="addTitle === '修改' && this.levelTemp == 2"> <el-col :span="12" v-if="addTitle === '修改' && this.levelTemp == 2">
<el-form-item label="是否绑定班组长" prop="keeperUserId"> <el-form-item label="是否绑定班组长" prop="keeperUserId">
<el-select style="width: 100%" v-model="addFormParams.keeperUserId"> <el-select style="width: 100%" v-model="addFormParams.keeperUserId">
<el-option v-for="(item, index) in teamLeaderList" :key="index" :label="item.keeperUserName" :value="item.keeperUserId" /> <el-option v-for="(item, index) in teamLeaderList" :key="index" :label="item.keeperUserName"
:value="item.keeperUserId"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -733,19 +788,21 @@ import {
queryKeeperMatApi, queryKeeperMatApi,
queryKeeperNameApi, queryKeeperNameApi,
delMaType, delMaType,
// API
updateStorageNumApi,
addMaType, addMaType,
updateMaType, updateMaType,
getUserTypeList, getUserTypeList,
updatePartType, updatePartType,
getUserListApi getUserListApi
} from "@/api/ma/base"; } from "@/api/ma/base";
import { getKeeperIds} from "@/api/ma/typeConfigKeeper"; import {getKeeperIds} from "@/api/ma/typeConfigKeeper";
import { getRepairIds } from "@/api/ma/typeConfigRepair"; import {getRepairIds} from "@/api/ma/typeConfigRepair";
import { imgUpLoad } from "@/api/system/upload"; import {imgUpLoad} from "@/api/system/upload";
export default { export default {
name: "Type", name: "Type",
components: { Treeselect }, components: {Treeselect},
data() { data() {
return { return {
// //
@ -760,7 +817,7 @@ export default {
showSearch: true, showSearch: true,
// //
total: 0, total: 0,
unitValueOptions: [{id:"0",name:"整数"},{id:"1",name:"小数"}], unitValueOptions: [{id: "0", name: "整数"}, {id: "1", name: "小数"}],
// //
keeperList: null, keeperList: null,
keeperDataRange: [], keeperDataRange: [],
@ -815,7 +872,6 @@ export default {
children: "children", children: "children",
label: "label", label: "label",
}, },
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -826,7 +882,21 @@ export default {
// status: undefined, // status: undefined,
// typeId: undefined // typeId: undefined
}, },
//
storageOpen: false,
storageTitle: "修改库存",
storageForm: {
typeId: '',
currentStorage: 0,
storageNum: 0,
reason: ''
},
storageRules: {
storageNum: [
{required: true, message: "新库存数量不能为空", trigger: "blur"},
{type: 'number', min: 0, message: "库存数量不能为负数", trigger: "blur"}
],
},
// //
rules: { rules: {
typeName: [ typeName: [
@ -874,7 +944,6 @@ export default {
afterPrice: "", afterPrice: "",
useDate: "", useDate: "",
}, },
/* 新增弹框等数据源定义 */ /* 新增弹框等数据源定义 */
addTitleVisible: false, addTitleVisible: false,
addTitle: "", // addTitle: "", //
@ -931,6 +1000,37 @@ export default {
this.KeeperOptions = response.rows; this.KeeperOptions = response.rows;
}); });
}, },
/** 修改库存按钮操作 */
updateStorageNum(row) {
this.storageForm = {
typeId: row.typeId,
currentStorage: row.storageNum || 0,
storageNum: row.storageNum || 0,
};
this.storageOpen = true;
},
/** 提交库存修改表单 */
submitStorageForm() {
this.$refs["storageForm"].validate((valid) => {
if (valid) {
//
this.storageForm.storageNum = Number(this.storageForm.storageNum);
updateStorageNumApi(this.storageForm).then(response => {
if (response.code === 200) {
this.$modal.msgSuccess("库存修改成功");
this.storageOpen = false;
this.getList(); //
} else {
this.$modal.msgError(response.msg || "库存修改失败");
}
}).catch(error => {
this.$modal.msgError("库存修改失败");
});
}
});
},
async getRepairerData() { async getRepairerData() {
const itemName = "wei_xiu_role_ids"; const itemName = "wei_xiu_role_ids";
let roleIdsTemp = [] let roleIdsTemp = []
@ -946,7 +1046,6 @@ export default {
}, },
/** 查询物资类型 */ /** 查询物资类型 */
async getKeeperDataList(data) { async getKeeperDataList(data) {
let keepdataRes = await queryKeeperDataApi({ let keepdataRes = await queryKeeperDataApi({
@ -966,19 +1065,19 @@ export default {
getMaTypeList().then((response) => { getMaTypeList().then((response) => {
this.treeOptions = response.data; this.treeOptions = response.data;
console.log(this.treeOptions) console.log(this.treeOptions)
if (this.treeOptions.length > 0 ){ if (this.treeOptions.length > 0) {
if(this.treeOptions[0].children&&this.treeOptions[0].children.length > 0) { if (this.treeOptions[0].children && this.treeOptions[0].children.length > 0) {
const firstNode = this.treeOptions[0].children[0]; const firstNode = this.treeOptions[0].children[0];
this.queryParams.typeId = firstNode.id; this.queryParams.typeId = firstNode.id;
this.queryParams.level = 1; this.queryParams.level = 1;
this.queryParams.houseId = firstNode.houseId; this.queryParams.houseId = firstNode.houseId;
this.getList(); this.getList();
}else{ } else {
this.queryParams.typeId = this.treeOptions[0].id; this.queryParams.typeId = this.treeOptions[0].id;
this.queryParams.level = 0; this.queryParams.level = 0;
this.queryParams.houseId = this.treeOptions[0].id; this.queryParams.houseId = this.treeOptions[0].id;
this.getList(); this.getList();
} }
} }
}); });
}, },
@ -1088,10 +1187,10 @@ export default {
const typeId = row.typeId; const typeId = row.typeId;
getMaType(typeId).then((response) => { getMaType(typeId).then((response) => {
this.form = response.data; this.form = response.data;
if(response.data.repairerId){ if (response.data.repairerId) {
this.form.repairerArr = response.data.repairerId.split(",") this.form.repairerArr = response.data.repairerId.split(",")
} }
if(response.data.keeperId){ if (response.data.keeperId) {
this.form.keeperArr = response.data.keeperId.split(",") this.form.keeperArr = response.data.keeperId.split(",")
} }
this.form.isCharging = this.form.isCharging + ""; this.form.isCharging = this.form.isCharging + "";
@ -1116,10 +1215,10 @@ export default {
getMaType(typeId).then((response) => { getMaType(typeId).then((response) => {
this.form = response.data; this.form = response.data;
this.leasePriceTemp = response.data.leasePrice; this.leasePriceTemp = response.data.leasePrice;
if(response.data.repairerId){ if (response.data.repairerId) {
this.form.repairerArr = response.data.repairerId.split(",") this.form.repairerArr = response.data.repairerId.split(",")
} }
if(response.data.keeperId){ if (response.data.keeperId) {
this.form.keeperArr = response.data.keeperId.split(",") this.form.keeperArr = response.data.keeperId.split(",")
} }
this.form.isCharging = this.form.isCharging + ""; this.form.isCharging = this.form.isCharging + "";
@ -1141,35 +1240,36 @@ export default {
console.log(this.form, "提交参数---"); console.log(this.form, "提交参数---");
this.$refs["form"].validate((valid) => { this.$refs["form"].validate((valid) => {
if (valid) { if (valid) {
if(this.form.keeperArr != null && this.form.keeperArr.length > 0){ if (this.form.keeperArr != null && this.form.keeperArr.length > 0) {
this.form.keeperId = this.form.keeperArr.join(",") this.form.keeperId = this.form.keeperArr.join(",")
} }
if(this.form.repairerArr != null && this.form.repairerArr.length > 0){ if (this.form.repairerArr != null && this.form.repairerArr.length > 0) {
this.form.repairerId = this.form.repairerArr.join(",") this.form.repairerId = this.form.repairerArr.join(",")
} }
if (this.form.typeId != undefined) { if (this.form.typeId != undefined) {
if(this.form.leasePrice!=this.leasePriceTemp){ if (this.form.leasePrice != this.leasePriceTemp) {
this.$modal this.$modal
.confirm("是否确认修改后的内部租赁价?") .confirm("是否确认修改后的内部租赁价?")
.then(() => { .then(() => {
this.form.isUpdateLeasePrice = true; this.form.isUpdateLeasePrice = true;
updateMaType(this.form).then((response) => { updateMaType(this.form).then((response) => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.getList(); this.getList();
// this.getTreeData(); // this.getTreeData();
});
})
.catch(() => {
}); });
}) } else {
.catch(() => {}); updateMaType(this.form).then((response) => {
}else{ this.$modal.msgSuccess("修改成功");
updateMaType(this.form).then((response) => { this.open = false;
this.$modal.msgSuccess("修改成功"); this.getList();
this.open = false; // this.getTreeData();
this.getList(); });
// this.getTreeData(); }
}); } else {
}
}else {
addMaType(this.form).then((response) => { addMaType(this.form).then((response) => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.open = false; this.open = false;
@ -1193,7 +1293,8 @@ export default {
this.getList(); this.getList();
// this.getTreeData(); // this.getTreeData();
}) })
.catch(() => {}); .catch(() => {
});
}, },
handleRemove(file, fileList) { handleRemove(file, fileList) {
@ -1327,7 +1428,8 @@ export default {
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess("删除成功");
this.getTreeData(); this.getTreeData();
}) })
.catch(() => {}); .catch(() => {
});
}, },
// //
getTeamLeaderList() { getTeamLeaderList() {
@ -1353,7 +1455,7 @@ export default {
}, },
/* 确定 */ /* 确定 */
onSubmit() { onSubmit() {
const { id, typeName, isEnter, keeperUserId } = this.addFormParams; const {id, typeName, isEnter, keeperUserId} = this.addFormParams;
console.log("level", this.levelTemp); console.log("level", this.levelTemp);
console.log("idTemp", this.idTemp); console.log("idTemp", this.idTemp);
const addParams = { const addParams = {
@ -1416,7 +1518,8 @@ export default {
} }
} }
}); });
} catch (error) {} } catch (error) {
}
}, },
onMousemove(data) { onMousemove(data) {
@ -1437,23 +1540,28 @@ export default {
::v-deep .btn-items .el-button + .el-button { ::v-deep .btn-items .el-button + .el-button {
margin-left: 6px; margin-left: 6px;
} }
.btn-items { .btn-items {
margin-left: 4px; margin-left: 4px;
.el-button--text { .el-button--text {
font-size: 16px; font-size: 16px;
} }
} }
::v-deep .el-tree .el-tree-node__expand-icon.expanded { ::v-deep .el-tree .el-tree-node__expand-icon.expanded {
-webkit-transform: rotate(0deg); -webkit-transform: rotate(0deg);
transform: rotate(0deg); transform: rotate(0deg);
} }
::v-deep .el-tree .el-icon-caret-right:before { ::v-deep .el-tree .el-icon-caret-right:before {
content: "\e783"; content: "\e783";
font-size: 16px; font-size: 16px;
} }
::v-deep ::v-deep
.el-tree .el-tree
.el-tree-node__expand-icon.expanded.el-icon-caret-right:before { .el-tree-node__expand-icon.expanded.el-icon-caret-right:before {
content: "\e781"; content: "\e781";
font-size: 16px; font-size: 16px;
color: #1890ff; color: #1890ff;
@ -1462,14 +1570,15 @@ export default {
::v-deep .el-tree-node__content > .el-tree-node__expand-icon { ::v-deep .el-tree-node__content > .el-tree-node__expand-icon {
color: #1890ff !important; color: #1890ff !important;
} }
::v-deep .el-tree-node__expand-icon.is-leaf { ::v-deep .el-tree-node__expand-icon.is-leaf {
color: transparent !important; color: transparent !important;
} }
::v-deep ::v-deep
.el-tree--highlight-current .el-tree--highlight-current
.el-tree-node.is-current .el-tree-node.is-current
> .el-tree-node__content { > .el-tree-node__content {
background-color: #8decf1; background-color: #8decf1;
} }