lijiang007 há 2 anos atrás
pai
commit
29f5a6f284

+ 14 - 6
src/api/classifyManage/itemInformation.js

@@ -1,6 +1,6 @@
 import request from '@/utils/request';
 import request from '@/utils/request';
 // 物品信息列表
 // 物品信息列表
-export async function getList (params) {
+export async function getList(params) {
   const res = await request.get('/main/category/getList', { params });
   const res = await request.get('/main/category/getList', { params });
   if (res.data.code == 0) {
   if (res.data.code == 0) {
     return res.data.data;
     return res.data.data;
@@ -8,7 +8,7 @@ export async function getList (params) {
   return Promise.reject(new Error(res.data.message));
   return Promise.reject(new Error(res.data.message));
 }
 }
 // 物品信息保存
 // 物品信息保存
-export async function informationAdd (data) {
+export async function informationAdd(data) {
   const res = await request.post('/main/category/add', data);
   const res = await request.post('/main/category/add', data);
   if (res.data.code == 0) {
   if (res.data.code == 0) {
     return res.data.data;
     return res.data.data;
@@ -17,7 +17,7 @@ export async function informationAdd (data) {
 }
 }
 
 
 // 物品信息编辑
 // 物品信息编辑
-export async function informationEdit (data) {
+export async function informationEdit(data) {
   const res = await request.post('/main/category/edit', data);
   const res = await request.post('/main/category/edit', data);
   if (res.data.code == 0) {
   if (res.data.code == 0) {
     return res.data.data;
     return res.data.data;
@@ -26,7 +26,7 @@ export async function informationEdit (data) {
 }
 }
 
 
 // 物品信息详情
 // 物品信息详情
-export async function getDetails (id) {
+export async function getDetails(id) {
   const res = await request.get(`/main/category/info/${id}`);
   const res = await request.get(`/main/category/info/${id}`);
   if (res.data.code == 0) {
   if (res.data.code == 0) {
     return res.data.data;
     return res.data.data;
@@ -35,7 +35,7 @@ export async function getDetails (id) {
 }
 }
 
 
 // 物品信息删除
 // 物品信息删除
-export async function removeItem (id) {
+export async function removeItem(id) {
   const res = await request.get(`/main/category/remove/${id}`, {});
   const res = await request.get(`/main/category/remove/${id}`, {});
   if (res.data.code == 0) {
   if (res.data.code == 0) {
     return res.data.data;
     return res.data.data;
@@ -44,10 +44,18 @@ export async function removeItem (id) {
 }
 }
 
 
 // 物品信息获取编码
 // 物品信息获取编码
-export async function getOrderNo (prefix) {
+export async function getOrderNo(prefix) {
   const res = await request.get(`/main/category/createOrderNo/${prefix}`, {});
   const res = await request.get(`/main/category/createOrderNo/${prefix}`, {});
   if (res.data.code == 0) {
   if (res.data.code == 0) {
     return res.data.data;
     return res.data.data;
   }
   }
   return Promise.reject(new Error(res.data.message));
   return Promise.reject(new Error(res.data.message));
 }
 }
+//物品信息列表
+export async function pageSubstance(params) {
+  const res = await request.get('/main/category/pageSubstance', { params });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 7 - 7
src/components/AssetTree/index.vue

@@ -61,7 +61,7 @@
       //   default: false
       //   default: false
       // },
       // },
     },
     },
-    data () {
+    data() {
       return {
       return {
         treeList: [],
         treeList: [],
         treeLoading: false,
         treeLoading: false,
@@ -70,17 +70,17 @@
         currentKey: ''
         currentKey: ''
       };
       };
     },
     },
-    mounted () {
+    mounted() {
       if (this.init) {
       if (this.init) {
         this.getTreeData();
         this.getTreeData();
       }
       }
     },
     },
     methods: {
     methods: {
-      getInstance () {
+      getInstance() {
         return this.$refs.tree;
         return this.$refs.tree;
       },
       },
       // 获取树结构数据
       // 获取树结构数据
-      async getTreeData () {
+      async getTreeData() {
         try {
         try {
           this.treeLoading = true;
           this.treeLoading = true;
 
 
@@ -127,17 +127,17 @@
       //   return data;
       //   return data;
       // },
       // },
 
 
-      handleNodeClick (data, node) {
+      handleNodeClick(data, node) {
         this.$emit('handleNodeClick', data, node);
         this.$emit('handleNodeClick', data, node);
       },
       },
       // 设置默认高亮行
       // 设置默认高亮行
-      setCurrentKey (id) {
+      setCurrentKey(id) {
         this.currentKey = id;
         this.currentKey = id;
         this.$refs.tree.setCurrentKey(this.currentKey);
         this.$refs.tree.setCurrentKey(this.currentKey);
       },
       },
 
 
       // 获取树的选中状态
       // 获取树的选中状态
-      getSelectList () {
+      getSelectList() {
         const selectList = this.$refs.tree.getCurrentNode();
         const selectList = this.$refs.tree.getCurrentNode();
         return selectList;
         return selectList;
       }
       }

+ 310 - 0
src/views/ItemInformation/components/Dialog-item.vue

@@ -0,0 +1,310 @@
+<template>
+  <div>
+    <el-dialog
+      title="新建物品"
+      :visible.sync="dialogVisible"
+      width="70%"
+      :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>
+              </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-form-item>
+              <el-form-item label="物品编码" prop="code">
+                <el-input placeholder="请输入" v-model="formData.code">
+                  <template slot="prepend">{{ formData.code1 }}</template>
+                </el-input>
+              </el-form-item>
+              <el-form-item label="物品名称" prop="name">
+                <el-input placeholder="请输入" v-model="formData.name">
+                </el-input>
+              </el-form-item>
+              <el-form-item label="计量单位" prop="unit">
+                <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-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>
+                </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>
+                </div>
+              </el-form-item>
+              <el-form-item label="安全库存" prop="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-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>
+              </el-form-item>
+            </el-card>
+          </div>
+          <div class="right">
+            <el-card class="box-card">
+              <el-row :gutter="20">
+                <el-col :span="8">
+                  <el-form-item label="规格">
+                    <el-input placeholder="请输入" v-model="formData.gg">
+                    </el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="8">
+                  <el-form-item label="型号">
+                    <el-input placeholder="请输入" v-model="formData.xh">
+                    </el-input>
+                  </el-form-item>
+                </el-col>
+                <el-col :span="8">
+                  <el-form-item label="标准产能">
+                    <el-input placeholder="请输入" v-model="formData.cn">
+                      <span slot="append">/小时</span>
+                    </el-input>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+              <div class="dashed-line"></div>
+              <div class="tabs">
+                <el-tabs v-model="activeName" type="card">
+                  <el-tab-pane label="匹配模具" name="first">
+                    <div class="one">
+                      <el-button type="primary">添加</el-button>
+                    </div>
+                    <div class="table">
+                      <el-table :data="tableData" style="width: 100%">
+                        <el-table-column prop="date" label="序号" width="60">
+                        </el-table-column>
+                        <el-table-column prop="fpbm" label="废品编码">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="物品名称">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="编号">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="型号">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="收缩系数">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="大模体型号">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="物品类型">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="分类">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="操作">
+                        </el-table-column>
+                      </el-table>
+                    </div>
+                  </el-tab-pane>
+                  <el-tab-pane label="匹配备品备件" name="second">
+                    <div class="one">
+                      <el-button type="primary">添加</el-button>
+                    </div>
+                    <div class="table">
+                      <el-table :data="tableData" style="width: 100%">
+                        <el-table-column prop="date" label="序号" width="60">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="物品名称">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="物品名称">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="型号">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="物品类型">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="分类">
+                        </el-table-column>
+                        <el-table-column prop="wpmc" label="操作">
+                        </el-table-column>
+                      </el-table>
+                    </div>
+                  </el-tab-pane>
+                </el-tabs>
+              </div>
+            </el-card>
+          </div>
+        </div>
+      </el-form>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @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 };
+        });
+      },
+      open() {
+        this.dialogVisible = true;
+      },
+      handleClose() {},
+      handleOptions(e) {
+        if (e == 4) {
+          this.formData.code1 = 'w1';
+          this.formData.code = 4;
+        }
+      }
+    },
+    mounted() {
+      this.handleTree();
+      this.handleOptions(4);
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .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;
+    }
+  }
+  ::v-deep .el-cascader,
+  .el-select {
+    width: 100%;
+  }
+  .main {
+    display: flex;
+    width: 100%;
+    .left {
+      margin-right: 5px;
+      width: 30%;
+    }
+    .right {
+      margin-left: 5px;
+      width: 70%;
+    }
+  }
+</style>

+ 6 - 6
src/views/ItemInformation/components/product-search.vue

@@ -8,12 +8,12 @@
   >
   >
     <el-row :gutter="10">
     <el-row :gutter="10">
       <el-col v-bind="styleResponsive ? { md: 5 } : { span: 4 }">
       <el-col v-bind="styleResponsive ? { md: 5 } : { span: 4 }">
-        <el-form-item label="品编码">
+        <el-form-item label="品编码">
           <el-input clearable v-model="where.code" placeholder="请输入" />
           <el-input clearable v-model="where.code" placeholder="请输入" />
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
       <el-col v-bind="styleResponsive ? { md: 5 } : { span: 4 }">
       <el-col v-bind="styleResponsive ? { md: 5 } : { span: 4 }">
-        <el-form-item label="品名称">
+        <el-form-item label="品名称">
           <el-input clearable v-model="where.name" placeholder="请输入" />
           <el-input clearable v-model="where.name" placeholder="请输入" />
         </el-form-item>
         </el-form-item>
       </el-col>
       </el-col>
@@ -53,7 +53,7 @@
 
 
 <script>
 <script>
   export default {
   export default {
-    data () {
+    data() {
       // 默认表单数据
       // 默认表单数据
       const defaultWhere = {
       const defaultWhere = {
         name: '',
         name: '',
@@ -74,20 +74,20 @@
     },
     },
     computed: {
     computed: {
       // 是否开启响应式布局
       // 是否开启响应式布局
-      styleResponsive () {
+      styleResponsive() {
         return this.$store.state.theme.styleResponsive;
         return this.$store.state.theme.styleResponsive;
       }
       }
     },
     },
     methods: {
     methods: {
       /* 搜索 */
       /* 搜索 */
-      search () {
+      search() {
         if (this.where.appType === 0) {
         if (this.where.appType === 0) {
           this.where.appType = '';
           this.where.appType = '';
         }
         }
         this.$emit('search', this.where);
         this.$emit('search', this.where);
       },
       },
       /*  重置 */
       /*  重置 */
-      reset () {
+      reset() {
         this.where = { ...this.defaultWhere };
         this.where = { ...this.defaultWhere };
         this.search();
         this.search();
       }
       }

+ 32 - 16
src/views/ItemInformation/index.vue

@@ -10,7 +10,7 @@
         <div class="ele-border-lighter split-layout-right-content">
         <div class="ele-border-lighter split-layout-right-content">
           <AssetTree
           <AssetTree
             ref="assetTreeRef"
             ref="assetTreeRef"
-            id="9"
+            id="4"
             @handleNodeClick="handleNodeClick"
             @handleNodeClick="handleNodeClick"
           />
           />
         </div>
         </div>
@@ -23,33 +23,46 @@
             height="calc(100vh - 350px)"
             height="calc(100vh - 350px)"
             class="dict-table"
             class="dict-table"
           >
           >
+            <template v-slot:toolbar>
+              <el-button
+                size="small"
+                type="primary"
+                icon="el-icon-plus"
+                class="ele-btn-icon"
+                @click="add"
+              >
+                新建物品
+              </el-button>
+            </template>
             <!-- 表头工具栏 -->
             <!-- 表头工具栏 -->
             <template v-slot:action="{ row }">
             <template v-slot:action="{ row }">
-               <el-link
+              <el-link
                 type="primary"
                 type="primary"
                 :underline="false"
                 :underline="false"
                 icon="el-icon-edit"
                 icon="el-icon-edit"
                 @click="handleEdit(row)"
                 @click="handleEdit(row)"
               >
               >
                 修改
                 修改
-              </el-link> 
+              </el-link>
             </template>
             </template>
           </ele-pro-table>
           </ele-pro-table>
         </template>
         </template>
       </ele-split-layout>
       </ele-split-layout>
     </el-card>
     </el-card>
+    <DialogItem ref="dialogItemRef" />
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
   import AssetTree from '@/components/AssetTree';
   import AssetTree from '@/components/AssetTree';
   import ProductSearch from './components/product-search.vue';
   import ProductSearch from './components/product-search.vue';
-  import { getList } from '@/api/classifyManage/itemInformation';
+  import { getList, pageSubstance } from '@/api/classifyManage/itemInformation';
+  import DialogItem from './components/Dialog-item.vue';
 
 
   export default {
   export default {
     name: 'SystemDictionary',
     name: 'SystemDictionary',
-    components: { AssetTree, ProductSearch },
-    data () {
+    components: { AssetTree, ProductSearch, DialogItem },
+    data() {
       return {
       return {
         // 表格列配置
         // 表格列配置
         columns: [
         columns: [
@@ -64,12 +77,12 @@
           },
           },
           {
           {
             prop: 'code',
             prop: 'code',
-            label: '品编码',
+            label: '品编码',
             minWidth: 100
             minWidth: 100
           },
           },
           {
           {
             prop: 'name',
             prop: 'name',
-            label: '品名称',
+            label: '品名称',
             showOverflowTooltip: true,
             showOverflowTooltip: true,
             minWidth: 130
             minWidth: 130
           },
           },
@@ -106,14 +119,12 @@
             prop: 'roughWeight',
             prop: 'roughWeight',
             label: '毛重',
             label: '毛重',
             width: 100
             width: 100
-        
           },
           },
 
 
           {
           {
             prop: 'netWeight',
             prop: 'netWeight',
             label: '净重',
             label: '净重',
             width: 100
             width: 100
-       
           },
           },
 
 
           {
           {
@@ -132,25 +143,30 @@
     },
     },
 
 
     methods: {
     methods: {
+      /* 新建物品 */
+      add() {
+        this.$refs.dialogItemRef.open();
+      },
       /* 表格数据源 */
       /* 表格数据源 */
-      datasource ({ page, where, limit }) {
-        return getList({
+      datasource({ page, where, limit }) {
+        return pageSubstance({
           ...where,
           ...where,
           pageNum: page,
           pageNum: page,
           size: limit,
           size: limit,
           isProduct: true,
           isProduct: true,
-          categoryLevelId: this.categoryLevelId
+          categoryLevelId: this.categoryLevelId,
+          rootCategoryLevelId: 4
         });
         });
       },
       },
-      handleNodeClick (data) {
+      handleNodeClick(data) {
         this.categoryLevelId = data.id;
         this.categoryLevelId = data.id;
         this.reload();
         this.reload();
       },
       },
       /* 刷新表格 */
       /* 刷新表格 */
-      reload (where) {
+      reload(where) {
         this.$refs.table.reload({ where });
         this.$refs.table.reload({ where });
       },
       },
-      handleEdit ({ id }) {
+      handleEdit({ id }) {
         this.$router.push({
         this.$router.push({
           path: '/material/product/detail',
           path: '/material/product/detail',
           query: {
           query: {