whj 1 rok pred
rodič
commit
60f80125b1

+ 52 - 0
src/api/purchase/inventory.js

@@ -0,0 +1,52 @@
+import { axios } from '@/utils/request'
+import { stringify } from 'qs'
+
+/**
+ * page func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function getInventoryTree (parameter) {
+  return axios({
+    url: '/inventory/code/tree?' + stringify(parameter),
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+export function fetchInventory (parameter) {
+  return axios({
+    url: `/inventory/code/${parameter.id}`,
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+export function addInventory (parameter) {
+  return axios({
+    url: `/inventory/code`,
+    method: 'POST',
+    headers: {
+      'Accept': 'application/json',
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: parameter
+  })
+}
+export function updateInventory (parameter) {
+  return axios({
+    url: `/inventory/code/${parameter.id}`,
+    method: 'PUT',
+    data: parameter
+  })
+}
+export function deleteInventory (parameter) {
+  return axios({
+    url: `/inventory/code/${parameter.id}`,
+    method: 'DELETE',
+    data: parameter
+  })
+}

+ 2 - 1
src/router/generator-platform-routers.js

@@ -423,7 +423,8 @@ const constantRouterComponents = {
   'PurchaseOrderRecord': () => import('@/views/purchase/purchase-order-record/PurchaseOrderRecord'),
   'PurchaseOrderReport': () => import('@/views/purchase/purchase-order-report/PurchaseOrderReport'),
   'PurchaseOrderReportByTime': () => import('@/views/purchase/purchase-order-report/PurchaseOrderReportByTime'),
-  'PurchaseOrderReportByFifity': () => import('@/views/purchase/purchase-order-report/PurchaseOrderReportByFifity')
+  'PurchaseOrderReportByFifity': () => import('@/views/purchase/purchase-order-report/PurchaseOrderReportByFifity'),
+  'Inventory': () => import('@/views/purchase/inventory/Inventory.vue')
 }
 
 // 前端未找到页面路由(固定不用改)

+ 142 - 0
src/views/purchase/inventory/Inventory.vue

@@ -0,0 +1,142 @@
+<template>
+  <a-card :bordered="false">
+    <a-row :gutter="8">
+      <a-col :span="5">
+        <div class="menu-button-group">
+          <a-button type="primary" @click="handleAdd">添加</a-button>
+          <a-popconfirm title="是否要删除所选部门?" @confirm="handleDelete()" v-show="deleteButtonShow">
+            <a-button type="primary" style="margin-left: 15px">删除</a-button>
+          </a-popconfirm>
+        </div>
+        <a-tree
+          @expand="onExpand"
+          :expandedKeys="expandedKeys"
+          :autoExpandParent="autoExpandParent"
+          @select="onSelect"
+          @rightClick="rightClick"
+          :selectedKeys="selectedKeys"
+          :treeData="treeData"
+        />
+      </a-col>
+      <a-col :span="19">
+        <a-card class="card" :title="title" :bordered="false">
+          <base-form
+            :detail="detail"
+            @ok="refresh">
+          </base-form>
+        </a-card>
+      </a-col>
+    </a-row>
+  </a-card>
+</template>
+
+<script>
+import BaseForm from './modules/BaseForm'
+import { getInventoryTree, fetchInventory, deleteInventory } from '@/api/purchase/inventory'
+
+export default {
+  name: 'TreeList',
+  components: {
+    BaseForm
+  },
+  data () {
+    return {
+      openKeys: [''],
+      title: '添加物料',
+      selectedKeys: [],
+      treeData: [],
+      expandedKeys: [],
+      autoExpandParent: true,
+      deleteButtonShow: false,
+      importFlag: false,
+      rightSelectDept: {},
+      detail: {
+      }
+    }
+  },
+  created () {
+    this.importFlag = false
+    this.rightSelectDept = {}
+    this.initInventorytTree()
+  },
+  methods: {
+    initInventorytTree () {
+      const parameter = {
+      }
+      getInventoryTree(parameter).then(res => {
+        const treeData = res.data
+        this.setClass(treeData)
+        // 循环获取样式
+        this.treeData = treeData
+      })
+    },
+    setClass (treeData) {
+      treeData.forEach(item => {
+        if (this.BaseTool.Object.isNotBlank(item.clazz)) {
+          item['class'] = item.clazz
+        }
+        if (this.BaseTool.Object.isNotBlank(item.children) && item.children.length > 0) {
+          this.setClass(item.children)
+        }
+      })
+    },
+    onSelect (selectedKeys, info) {
+      this.importFlag = false
+      this.rightSelectDept = {}
+      this.title = '编辑部门'
+      this.selectedKeys = selectedKeys
+      if (selectedKeys.length > 0) {
+        fetchInventory({ id: selectedKeys }).then(res => {
+          this.detail = res.data
+          this.deleteButtonShow = true
+        })
+      } else {
+        this.detail = {
+          type: 2
+        }
+      }
+    },
+    onExpand (expandedKeys) {
+      this.expandedKeys = expandedKeys
+      this.autoExpandParent = false
+    },
+    handleAdd () {
+      this.title = '添加部门'
+      if (this.selectedKeys.length > 0) {
+        fetchInventory({ id: this.selectedKeys[0] }).then(res => {
+          this.detail = {
+            type: 2,
+            parentId: res.data.id,
+            parentName: res.data.name
+          }
+        })
+      } else {
+        this.detail = {
+          type: 2
+        }
+      }
+    },
+    handleDelete () {
+      deleteInventory({ id: this.selectedKeys[0] }).then(res => {
+        this.$message.info(`提示:删除成功 `)
+        this.refresh()
+      })
+    },
+    rightClick (info) {
+      this.importFlag = true
+      this.rightSelectDept = info.node.dataRef.item
+    },
+    refresh () {
+      this.initInventorytTree()
+      this.detail = {
+        type: 2
+      }
+    }
+  }
+}
+</script>
+<style>
+  .tree-title-close-dept-future .ant-tree-title {
+    color: #c5baba;
+  }
+</style>

+ 121 - 0
src/views/purchase/inventory/modules/BaseForm.vue

@@ -0,0 +1,121 @@
+<template>
+  <a-form @submit="handleSubmit" :form="form">
+    <a-form-item v-show="false" >
+      <a-input v-decorator="['id']" type="hidden"/>
+      <a-input v-decorator="['parentId']" type="hidden"/>
+    </a-form-item>
+    <a-form-item
+      label="父级名称"
+      :labelCol="{lg: {span: 7}, sm: {span: 7}}"
+      :wrapperCol="{lg: {span: 10}, sm: {span: 17} }">
+      <a-input
+        v-decorator="['parentName']"
+        disabled/>
+    </a-form-item>
+    <a-form-item
+      label="存货名称"
+      :required="true"
+      :labelCol="{lg: {span: 7}, sm: {span: 7}}"
+      :wrapperCol="{lg: {span: 10}, sm: {span: 17} }">
+      <a-input
+        v-decorator="[
+          'name',
+          {rules: [{ required: true, message: '请输入存货名称' }]}
+        ]" />
+    </a-form-item>
+    <a-form-item
+      label="编码"
+      :labelCol="{lg: {span: 7}, sm: {span: 7}}"
+      :wrapperCol="{lg: {span: 10}, sm: {span: 17} }"
+    >
+      <a-input
+        v-decorator="['code']"/>
+    </a-form-item>
+
+    <a-form-item
+      label="排序"
+      :labelCol="{lg: {span: 7}, sm: {span: 7}}"
+      :wrapperCol="{lg: {span: 10}, sm: {span: 17} }">
+      <a-input
+        v-decorator="[
+          'sort'
+        ]"
+        type="number" />
+    </a-form-item>
+    <a-form-item
+      :wrapperCol="{ span: 24 }"
+      style="text-align: center"
+    >
+      <a-button htmlType="submit" :loading="loading" type="primary">提交</a-button>
+    </a-form-item>
+  </a-form>
+</template>
+
+<script>
+import pick from 'lodash.pick'
+import { addInventory, updateInventory } from '@/api/purchase/inventory'
+export default {
+  name: 'BaseDept',
+  data () {
+    return {
+      loading: false,
+      form: this.$form.createForm(this)
+    }
+  },
+  props: {
+    detail: {
+      type: Object,
+      default: () => ({})
+    }
+  },
+  created () {
+  },
+  watch: {
+    detail (newV, oldV) { // watch监听props里status的变化,然后执行操作
+      this.form.resetFields()
+      console.log(newV)
+      this.$nextTick(() => {
+        this.form.setFieldsValue(pick(this.detail, ['id', 'parentId', 'parentName', 'name', 'sort', 'code']))
+      })
+    }
+  },
+  methods: {
+    handleSubmit (e) {
+      e.preventDefault()
+      const { form: { validateFields } } = this
+      validateFields((errors, values) => {
+        if (!errors) {
+          this.loading = true
+          const id = values.id
+          values = {
+            ...values
+          }
+          if (id) {
+            updateInventory(values)
+              .then(() => {
+                setTimeout(() => {
+                  this.loading = false
+                  this.$message.info(`提示:修改成功 `)
+                  this.$emit('ok', values)
+                }, 1500)
+              }).catch(() => {
+                this.loading = false
+              })
+          } else {
+            addInventory(values)
+              .then(() => {
+                setTimeout(() => {
+                  this.loading = false
+                  this.$message.info(`提示:添加成功 `)
+                  this.$emit('ok', values)
+                }, 1500)
+              }).catch(() => {
+                this.loading = false
+              })
+          }
+        }
+      })
+    }
+  }
+}
+</script>