|
|
@@ -1,38 +1,18 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <el-dialog
|
|
|
- title="新建物品"
|
|
|
- :visible.sync="dialogVisible"
|
|
|
- width="70%"
|
|
|
- :before-close="handleClose"
|
|
|
- >
|
|
|
- <el-form
|
|
|
- :model="formData"
|
|
|
- :rules="rules"
|
|
|
- ref="ruleForm"
|
|
|
- label-width="80px"
|
|
|
- >
|
|
|
+ <el-dialog title="新建物品" :visible.sync="dialogVisible" width="80%" :before-close="handleClose">
|
|
|
+ <el-form :model="formData" :rules="rules" ref="ruleForm" label-width="80px">
|
|
|
<div class="main">
|
|
|
<div class="left">
|
|
|
<el-card class="box-card">
|
|
|
<el-form-item label="物品类别" prop="categoryId">
|
|
|
- <el-select
|
|
|
- v-model="formData.categoryId"
|
|
|
- @change="handleOptions"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in newObj"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id"
|
|
|
- ></el-option>
|
|
|
+ <el-select v-model="formData.categoryId" @change="chooseItem">
|
|
|
+ <el-option v-for="(item, index) in typeList" :key="index" :label="item.name" :value="item.id"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="分类" prop="type">
|
|
|
- <el-cascader
|
|
|
- v-model="formData.type"
|
|
|
- :options="options"
|
|
|
- :props="{ value: 'id', label: 'name' }"
|
|
|
- ></el-cascader>
|
|
|
+ <el-cascader v-model="formData.type" :options="classList"
|
|
|
+ :props="{ value: 'id', label: 'name' }"></el-cascader>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="物品编码" prop="code">
|
|
|
<el-input placeholder="请输入" v-model="formData.code">
|
|
|
@@ -47,69 +27,42 @@
|
|
|
<el-input placeholder="请输入" v-model="formData.unit">
|
|
|
</el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="包装单位" prop="bz">
|
|
|
- <el-input placeholder="请输入" v-model="formData.bz">
|
|
|
+ <el-form-item label="包装单位" prop="packingUnit">
|
|
|
+ <el-input placeholder="请输入" v-model="formData.packingUnit">
|
|
|
</el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="参考单价">
|
|
|
<div class="dj">
|
|
|
- <el-input-number
|
|
|
- v-model="formData.dj"
|
|
|
- :min="1"
|
|
|
- :max="10"
|
|
|
- label="请输入"
|
|
|
- ></el-input-number>
|
|
|
- <el-select style="width: 40%" v-model="formData.djUnit">
|
|
|
- <el-option label="元" value="元"></el-option>
|
|
|
- <el-option label="万元" value="万元"></el-option>
|
|
|
- </el-select>
|
|
|
+ <el-input-number style="width:300px" v-model="formData.price" :min="1" :max="10"
|
|
|
+ label="请输入"></el-input-number>
|
|
|
+ <DictSelection dictName="金额单位" clearable filterable v-model="formData.priceUnit">
|
|
|
+ </DictSelection>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="保质期">
|
|
|
<div class="dj">
|
|
|
- <el-input-number
|
|
|
- v-model="formData.warrantyPeriod"
|
|
|
- :min="1"
|
|
|
- :max="10"
|
|
|
- label="请输入"
|
|
|
- ></el-input-number>
|
|
|
- <el-select
|
|
|
- style="width: 40%"
|
|
|
- v-model="formData.warrantyPeriodUnit"
|
|
|
- >
|
|
|
- <el-option label="分钟" value="元"></el-option>
|
|
|
- <el-option label="小时" value="万元"></el-option>
|
|
|
- <el-option label="天" value="天"></el-option>
|
|
|
- <el-option label="月" value="月"></el-option>
|
|
|
- <el-option label="年" value="年"></el-option>
|
|
|
- </el-select>
|
|
|
+ <el-input-number style="width:300px" v-model="formData.warrantyPeriod" :min="1" :max="10"
|
|
|
+ label="请输入"></el-input-number>
|
|
|
+
|
|
|
+ <DictSelection dictName="时间单位" clearable filterable v-model="formData.warrantyPeriodUnit">
|
|
|
+ </DictSelection>
|
|
|
+
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="安全库存" prop="secureInventory">
|
|
|
- <el-input
|
|
|
- placeholder="请输入"
|
|
|
- v-model="formData.secureInventory"
|
|
|
- >
|
|
|
+ <el-input placeholder="请输入" v-model="formData.secureInventory">
|
|
|
</el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="盘点模式" prop="inventoryMode">
|
|
|
- <el-radio v-model="formData.inventoryMode" label="1"
|
|
|
- >逐个盘点</el-radio
|
|
|
- >
|
|
|
- <el-radio v-model="formData.inventoryMode" label="2"
|
|
|
- >批量盘点</el-radio
|
|
|
- >
|
|
|
+ <el-radio v-model="formData.inventoryMode" label="1">逐个盘点</el-radio>
|
|
|
+ <el-radio v-model="formData.inventoryMode" label="2">批量盘点</el-radio>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="允许拆包">
|
|
|
<el-switch v-model="formData.isUnpack" active-color="#13ce66">
|
|
|
</el-switch>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="描述">
|
|
|
- <el-input
|
|
|
- type="textarea"
|
|
|
- placeholder="请输入"
|
|
|
- v-model="formData.ms"
|
|
|
- >
|
|
|
+ <el-input type="textarea" placeholder="请输入" v-model="formData.description">
|
|
|
</el-input>
|
|
|
</el-form-item>
|
|
|
</el-card>
|
|
|
@@ -201,110 +154,147 @@
|
|
|
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
- <el-button type="primary" @click="submit">确 定</el-button>
|
|
|
+ <el-button type="primary" :loading="loading" @click="submit">确 定</el-button>
|
|
|
</span>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- import { getTreeByPid } from '@/api/classifyManage';
|
|
|
- export default {
|
|
|
- data() {
|
|
|
- return {
|
|
|
- dialogVisible: false,
|
|
|
- formData: {
|
|
|
- categoryId: '4',
|
|
|
- isUnpack: true,
|
|
|
- inventoryMode: '2'
|
|
|
- },
|
|
|
- rules: {
|
|
|
- categoryId: [
|
|
|
- { required: true, message: '请选择', trigger: 'change' }
|
|
|
- ],
|
|
|
- warrantyPeriod: [
|
|
|
- { required: true, message: '请输入', trigger: 'blur' }
|
|
|
- ],
|
|
|
- warrantyPeriodUnit: [
|
|
|
- { required: true, message: '请选择', trigger: 'change' }
|
|
|
- ],
|
|
|
- inventoryMode: [
|
|
|
- { required: true, message: '请选择', trigger: 'change' }
|
|
|
- ]
|
|
|
- },
|
|
|
- options: [],
|
|
|
- activeName: 'first',
|
|
|
- tableData: [],
|
|
|
- newObj: []
|
|
|
- };
|
|
|
- },
|
|
|
- methods: {
|
|
|
- submit() {},
|
|
|
- async handleTree() {
|
|
|
- const res = await getTreeByPid(4);
|
|
|
- console.log(res);
|
|
|
- this.options = res.data;
|
|
|
- this.newObj = res.data.map((item) => {
|
|
|
- return { id: item.id, name: item.code + ' ' + item.name };
|
|
|
- });
|
|
|
+import { getTreeByPid } from '@/api/classifyManage';
|
|
|
+import { informationAdd } from '@/api/classifyManage/itemInformation'
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ dialogVisible: false,
|
|
|
+ formData: {
|
|
|
+ categoryId: '',
|
|
|
+ isUnpack: true,
|
|
|
+ inventoryMode: '2'
|
|
|
},
|
|
|
- open() {
|
|
|
- this.dialogVisible = true;
|
|
|
+ rules: {
|
|
|
+ categoryId: [
|
|
|
+ { required: true, message: '请选择', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ warrantyPeriod: [
|
|
|
+ { required: true, message: '请输入', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ warrantyPeriodUnit: [
|
|
|
+ { required: true, message: '请选择', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ inventoryMode: [
|
|
|
+ { required: true, message: '请选择', trigger: 'change' }
|
|
|
+ ],
|
|
|
+
|
|
|
+ name: [
|
|
|
+ { required: true, message: '请输入物品名称', trigger: 'blur' }
|
|
|
+ ]
|
|
|
},
|
|
|
- handleClose() {},
|
|
|
- handleOptions(e) {
|
|
|
- if (e == 4) {
|
|
|
- this.formData.code1 = 'w1';
|
|
|
- this.formData.code = 4;
|
|
|
+ classList: [],
|
|
|
+ activeName: 'first',
|
|
|
+ tableData: [],
|
|
|
+ typeList: [],
|
|
|
+
|
|
|
+
|
|
|
+ // 提交状态
|
|
|
+ loading: false,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ submit() {
|
|
|
+ this.$refs.ruleForm.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ this.loading = true;
|
|
|
+ informationAdd({ category: this.formData}).then((msg) => {
|
|
|
+ this.formData = {};
|
|
|
+ this.loading = false;
|
|
|
+ this.$message.success(msg);
|
|
|
+ this.handleClose();
|
|
|
+ this.$emit('done');
|
|
|
+ }).finally(() => {
|
|
|
+ this.loading = false;
|
|
|
+ })
|
|
|
}
|
|
|
- }
|
|
|
+
|
|
|
+ })
|
|
|
+ },
|
|
|
+ async handleTree(code) {
|
|
|
+ const res = await getTreeByPid(code);
|
|
|
+ this.classList = res.data;
|
|
|
+ this.typeList = res.data.map((item) => {
|
|
|
+ return { id: item.id, name: item.code + ' ' + item.name };
|
|
|
+ });
|
|
|
},
|
|
|
- mounted() {
|
|
|
- this.handleTree();
|
|
|
- this.handleOptions(4);
|
|
|
+ open() {
|
|
|
+ this.dialogVisible = true;
|
|
|
+ },
|
|
|
+ handleClose() {
|
|
|
+ this.dialogVisible = false;
|
|
|
+ },
|
|
|
+ chooseItem(val) {
|
|
|
+ this.classList.map(item => {
|
|
|
+ if (item.id == val) {
|
|
|
+ this.formData.code1 = item.code
|
|
|
+ this.itemForm.code = val
|
|
|
+ this.getTreeData(item.code)
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
- };
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.handleTree(0);
|
|
|
+ }
|
|
|
+};
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
- .el-card {
|
|
|
- height: 100%;
|
|
|
- }
|
|
|
- .tabs {
|
|
|
- margin-top: 20px;
|
|
|
- .one {
|
|
|
- .el-button {
|
|
|
- margin: 10px 0;
|
|
|
- }
|
|
|
+.el-card {
|
|
|
+ height: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+.tabs {
|
|
|
+ margin-top: 20px;
|
|
|
+
|
|
|
+ .one {
|
|
|
+ .el-button {
|
|
|
+ margin: 10px 0;
|
|
|
}
|
|
|
}
|
|
|
- .dashed-line {
|
|
|
- border-bottom: 1px dashed #999;
|
|
|
- margin-top: 10px;
|
|
|
- }
|
|
|
- ::v-deep .el-form-item {
|
|
|
- margin-bottom: 10px;
|
|
|
- }
|
|
|
- .dj {
|
|
|
- display: flex;
|
|
|
- ::v-deep .el-select {
|
|
|
- margin-left: 10px;
|
|
|
- }
|
|
|
+}
|
|
|
+
|
|
|
+.dashed-line {
|
|
|
+ border-bottom: 1px dashed #999;
|
|
|
+ margin-top: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+.dj {
|
|
|
+ display: flex;
|
|
|
+
|
|
|
+ ::v-deep .el-select {
|
|
|
+ margin-left: 10px;
|
|
|
}
|
|
|
- ::v-deep .el-cascader,
|
|
|
- .el-select {
|
|
|
- width: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+::v-deep .el-cascader,
|
|
|
+.el-select {
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+.main {
|
|
|
+ display: flex;
|
|
|
+ width: 100%;
|
|
|
+
|
|
|
+ .left {
|
|
|
+ margin-right: 5px;
|
|
|
+ width: 30%;
|
|
|
}
|
|
|
- .main {
|
|
|
- display: flex;
|
|
|
- width: 100%;
|
|
|
- .left {
|
|
|
- margin-right: 5px;
|
|
|
- width: 30%;
|
|
|
- }
|
|
|
- .right {
|
|
|
- margin-left: 5px;
|
|
|
- width: 70%;
|
|
|
- }
|
|
|
+
|
|
|
+ .right {
|
|
|
+ margin-left: 5px;
|
|
|
+ width: 70%;
|
|
|
}
|
|
|
+}
|
|
|
</style>
|