From 508567cbb4a41070718afb1e2eaab1e489e784c6 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 14 一月 2025 09:47:40 +0800
Subject: [PATCH] 仓库管理、资产分类、资产管理

---
 admin/src/views/stock/components/newWarehouse.vue |   54 +++-
 admin/.env.test                                   |    2 
 admin/src/api/ywMaterial.js                       |   28 ++
 admin/src/views/stock/components/CateEdit.vue     |   20 +-
 admin/src/views/stock/components/newMaterial.vue  |  196 ++++++++++---------
 admin/src/views/stock/assetList.vue               |  107 +++++-----
 admin/src/api/ywWarehouse.js                      |   28 ++
 admin/src/views/stock/assetCate.vue               |   16 
 admin/src/views/stock/asset.vue                   |   93 ++++----
 9 files changed, 317 insertions(+), 227 deletions(-)

diff --git a/admin/.env.test b/admin/.env.test
index 074e999..0e38ccc 100644
--- a/admin/.env.test
+++ b/admin/.env.test
@@ -4,7 +4,7 @@
 # VUE_APP_API_URL  = 'http://192.168.5.13/gateway_interface'
 
 # 浠诲悍
-# VUE_APP_API_URL  = 'http://192.168.0.137:10010/'
+# VUE_APP_API_URL  = 'http://192.168.0.143:10010'
 
 # 钀嶅
 # VUE_APP_API_URL  = 'http://192.168.0.108:10010/'
diff --git a/admin/src/api/ywMaterial.js b/admin/src/api/ywMaterial.js
new file mode 100644
index 0000000..e7da119
--- /dev/null
+++ b/admin/src/api/ywMaterial.js
@@ -0,0 +1,28 @@
+import request from '@/utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywMaterial/page', data, {
+    trim: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywMaterial/create', data)
+}
+
+// 鏍规嵁ID淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywMaterial/updateById', data)
+}
+
+// 鏍规嵁ID淇敼鐘舵��
+export function updateStatus (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywMaterial/updateStatus', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/ywMaterial/delete/${id}`)
+}
diff --git a/admin/src/api/ywWarehouse.js b/admin/src/api/ywWarehouse.js
new file mode 100644
index 0000000..aa5511c
--- /dev/null
+++ b/admin/src/api/ywWarehouse.js
@@ -0,0 +1,28 @@
+import request from '@/utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywWarehouse/page', data, {
+    trim: true
+  })
+}
+
+// 鍒涘缓
+export function create (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywWarehouse/create', data)
+}
+
+// 鏍规嵁ID淇敼
+export function updateById (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywWarehouse/updateById', data)
+}
+
+// 鏍规嵁ID淇敼鐘舵��
+export function updateStatusById (data) {
+  return request.post('/visitsAdmin/cloudService/business/ywWarehouse/updateStatusById', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+  return request.get(`/visitsAdmin/cloudService/business/ywWarehouse/delete/${id}`)
+}
diff --git a/admin/src/views/stock/asset.vue b/admin/src/views/stock/asset.vue
index d3880e6..8f78846 100644
--- a/admin/src/views/stock/asset.vue
+++ b/admin/src/views/stock/asset.vue
@@ -5,16 +5,27 @@
       <el-button type="primary" @click="$refs.newWarehouse.open('鏂板缓浠撳簱鍚嶇О')">鏂板</el-button>
     </div>
     <el-table v-loading="loading" :data="list" stripe>
-      <el-table-column prop="platformName" label="浠撳簱鍚嶇О" min-width="120" show-overflow-tooltip />
-      <el-table-column prop="platformGroupName" label="璐熻矗浜�" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeFront" label="浠撳簱浣嶇疆" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeBack" label="鎺掑簭鐮�" min-width="110" show-overflow-tooltip />
-      <el-table-column prop="param1" label="澶囨敞" min-width="120" show-overflow-tooltip />
-      <el-table-column prop="param2" label="鐘舵��" min-width="90" show-overflow-tooltip />
+      <el-table-column prop="name" label="浠撳簱鍚嶇О" min-width="120" show-overflow-tooltip />
+      <el-table-column prop="userName" label="璐熻矗浜�" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="position" label="浠撳簱浣嶇疆" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="110" show-overflow-tooltip />
+      <el-table-column prop="remark" label="澶囨敞" min-width="120" show-overflow-tooltip />
+      <el-table-column label="鐘舵��" min-width="90">
+        <template v-slot="{ row }">
+          <el-switch
+            v-model="row.status"
+            active-color="#13ce66"
+            inactive-color="#ff4949"
+            @change="changeStatus($event, row)"
+            :active-value="0"
+            :inactive-value="1">
+          </el-switch>
+        </template>
+      </el-table-column>
       <el-table-column prop="workTime" label="鎿嶄綔" min-width="100" show-overflow-tooltip>
         <template v-slot="{ row }">
-          <span class="primaryColor pointer">鏌ョ湅璇︽儏</span>
-          <span class="red pointer">鍒犻櫎</span>
+          <el-button type="text" @click="$refs.newWarehouse.open('鏂板缓浠撳簱鍚嶇О', row)">缂栬緫</el-button>
+          <el-button type="text" @click="dele(row.id)">鍒犻櫎</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -32,7 +43,7 @@
 import dayjs from 'dayjs'
 import duration from 'dayjs/plugin/duration'
 dayjs.extend(duration)
-import { platformLogPage, getPlatformGroupList } from '@/api'
+import { fetchList, deleteById, updateStatusById } from '@/api/ywWarehouse'
 export default {
   components: {
     Pagination,
@@ -53,15 +64,18 @@
       queryFormConfig: {
         formItems: [
           {
-            filed: 'carCodeFront',
+            filed: 'name',
             type: 'input',
             label: '浠撳簱鍚嶇О',
           },
           {
-            filed: 'platformGroupId',
+            filed: 'status',
             type: 'select',
             label: '浠撳簱鐘舵��',
-            options: []
+            options: [
+              { value: 0, label: '鍚敤' },
+              { value: 1, label: '绂佺敤' }
+            ]
           }
         ],
         online: true
@@ -69,50 +83,21 @@
     }
   },
   created() {
-    // this.getList()
-    // this.getGroupList()
+    this.getList()
   },
   methods: {
-    handleSub() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          alert('submit!')
-        }
-      })
-    },
-    handleEx() { },
-    getGroupList() {
-      getPlatformGroupList({ queryData: 0, queryType: 0 }).then(res => {
-        this.queryFormConfig.formItems[1].options = res.map(i => {
-          return {
-            value: i.id,
-            label: i.name
-          }
-        })
-        // this.queryFormConfig.formItems[1].options.unshift({ value: '', label: '鍏ㄩ儴鏈堝彴缁�' })
-      })
-    },
     getList(page) {
       const { pagination, filters } = this
       this.loading = true
-      platformLogPage({
+      fetchList({
         model: {
-          ...filters,
-          queryStatus: '6,7,8',
-          beginWorkDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
-          beginWorkDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
+          ...filters
         },
-        sorts: [{ direction: 'DESC', property: 'param1' }],
         capacity: pagination.pageSize,
         page: page || pagination.page,
       }).then(res => {
         this.loading = false
         this.list = res.records || []
-        this.list.forEach(item => {
-          item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
-          item.taskOrigin = 'WMS鑾峰彇'
-          item.workTime = dayjs.duration(item.param3, 'seconds').format('H鏃秏鍒唖绉�')
-        })
         this.pagination.total = res.total || 0
       }, () => {
         this.loading = false
@@ -124,6 +109,26 @@
       this.pagination.page = 1
       this.getList()
     },
+    changeStatus(e, row) {
+      updateStatusById({ id: row.id, status: e })
+        .then(res => {
+          this.getList()
+        })
+    },
+    dele(id) {
+      this.$confirm('鏄惁纭鍒犻櫎璇ヤ粨搴�?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        deleteById(id)
+          .then(res => {
+            this.getList()
+          })
+      }).catch(() => {
+      
+      });
+    },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
       this.getList()
diff --git a/admin/src/views/stock/assetCate.vue b/admin/src/views/stock/assetCate.vue
index 375678f..cfa31b6 100644
--- a/admin/src/views/stock/assetCate.vue
+++ b/admin/src/views/stock/assetCate.vue
@@ -1,16 +1,13 @@
 <template>
   <TableLayout>
     <template v-slot:table-wrap>
-      <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
-        <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
-            v-permissions="['business:category:create']">鏂板缓</el-button></li>
-        <li v-permissions="['business:category:exportExcel']"><el-button type="primary"
-            @click="exportExcel">瀵煎嚭</el-button></li>
+      <ul class="toolbar">
+        <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus">鏂板缓</el-button></li>
+        <li><el-button type="primary" @click="exportExcel">瀵煎嚭</el-button></li>
       </ul>
       <el-table row-key="id" :tree-props="{ children: 'childCategoryList' }" v-loading="isWorking.search"
         :data="dataList" stripe @selection-change="handleSelectionChange">
         <el-table-column prop="name" label="璧勪骇鍒嗙被" min-width="100px"></el-table-column>
-        <!-- <el-table-column prop="parentName" label="鎵�灞炲垎绫�" min-width="100px"></el-table-column> -->
         <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
         <el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])" label="鎿嶄綔"
           min-width="120" fixed="right">
@@ -46,6 +43,9 @@
       filters: {
         parentId: ''
       },
+      form: {
+        type: 7
+      },
       isShowEdit: false,
       loading: false,
       pagination: {
@@ -58,7 +58,7 @@
   },
   created() {
     this.config({
-      module: '杞﹁締淇℃伅琛�',
+      module: '鍒嗙被淇℃伅琛�',
       api: '/business/category',
       'field.id': 'id',
       'field.main': 'id'
@@ -93,7 +93,7 @@
       const { pagination, filters } = this
       this.loading = true
       fetchList({
-        model: { ...filters, type: 5 },
+        model: { ...filters, type: 7 },
         capacity: pagination.pageSize,
         page: pagination.page,
       }).then(res => {
diff --git a/admin/src/views/stock/assetList.vue b/admin/src/views/stock/assetList.vue
index b3b5894..1b28a25 100644
--- a/admin/src/views/stock/assetList.vue
+++ b/admin/src/views/stock/assetList.vue
@@ -7,19 +7,30 @@
       <el-button>瀵煎叆</el-button>
     </div>
     <el-table v-loading="loading" :data="list" stripe>
-      <el-table-column prop="platformName" label="璧勪骇缂栫爜" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="platformGroupName" label="璧勪骇鍚嶇О" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeFront" label="鏉$爜" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="carCodeBack" label="鍝佺墝" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="param1" label="瑙勬牸鍨嬪彿" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="param2" label="鍗曚綅" min-width="70" show-overflow-tooltip />
-      <el-table-column prop="param2" label="瀹夊叏搴撳瓨(涓嬮檺)" min-width="120" show-overflow-tooltip />
-      <el-table-column prop="param2" label="瀹夊叏搴撳瓨(涓婇檺)" min-width="120" show-overflow-tooltip />
-      <el-table-column prop="param2" label="鐘舵��" min-width="80" show-overflow-tooltip />
+      <el-table-column prop="code" label="璧勪骇缂栫爜" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="name" label="璧勪骇鍚嶇О" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="qrcode" label="鏉$爜" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="brand" label="鍝佺墝" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="attr" label="瑙勬牸鍨嬪彿" min-width="100" show-overflow-tooltip />
+      <el-table-column prop="unitName" label="鍗曚綅" min-width="70" show-overflow-tooltip />
+      <el-table-column prop="minStock" label="瀹夊叏搴撳瓨(涓嬮檺)" min-width="120" show-overflow-tooltip />
+      <el-table-column prop="maxStock" label="瀹夊叏搴撳瓨(涓婇檺)" min-width="120" show-overflow-tooltip />
+      <el-table-column label="鐘舵��" min-width="80">
+        <template v-slot="{ row }">
+          <el-switch
+            v-model="row.status"
+            active-color="#13ce66"
+            inactive-color="#ff4949"
+            @change="changeStatus($event, row)"
+            :active-value="0"
+            :inactive-value="1">
+          </el-switch>
+        </template>
+      </el-table-column>
       <el-table-column prop="workTime" label="鎿嶄綔" min-width="100" show-overflow-tooltip>
         <template v-slot="{ row }">
-          <span class="primaryColor pointer">缂栬緫</span>
-          <span class="red pointer">鍒犻櫎</span>
+          <el-button type="text" @click="$refs.newMaterial.open('缂栬緫鐗╂枡', {...row, cateArr: [row.parentCateId, row.cateId] })">缂栬緫</el-button>
+          <el-button type="text" @click="dele(row.id)">鍒犻櫎</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -37,7 +48,7 @@
 import dayjs from 'dayjs'
 import duration from 'dayjs/plugin/duration'
 dayjs.extend(duration)
-import { platformLogPage, getPlatformGroupList } from '@/api'
+import { fetchList, updateStatus, deleteById } from '@/api/ywMaterial'
 export default {
   components: {
     Pagination,
@@ -58,77 +69,61 @@
       queryFormConfig: {
         formItems: [
           {
-            filed: 'carCodeFront',
+            filed: 'code',
             type: 'input',
-            label: '璧勪骇淇℃伅',
-            placeholder: '璇疯緭鍏ヨ祫浜у悕绉�/缂栫爜'
+            label: '鍚嶇О/缂栫爜',
+            placeholder: '璇疯緭鍏ュ悕绉�/缂栫爜'
           },
           {
-            filed: 'carCodeFront',
+            filed: 'attr',
             type: 'input',
             label: '瑙勬牸鍨嬪彿',
-          },
-          {
-            filed: 'platformGroupId',
-            type: 'select',
-            label: '鎵�灞為」鐩�',
-            options: []
           }
-        ],
-        online: true
+        ]
       }
     }
   },
   created() {
-    // this.getList()
-    // this.getGroupList()
+    this.getList()
   },
   methods: {
-    handleSub() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          alert('submit!')
-        }
-      })
-    },
-    handleEx() { },
-    getGroupList() {
-      getPlatformGroupList({ queryData: 0, queryType: 0 }).then(res => {
-        this.queryFormConfig.formItems[1].options = res.map(i => {
-          return {
-            value: i.id,
-            label: i.name
-          }
-        })
-        // this.queryFormConfig.formItems[1].options.unshift({ value: '', label: '鍏ㄩ儴鏈堝彴缁�' })
-      })
-    },
     getList(page) {
       const { pagination, filters } = this
       this.loading = true
-      platformLogPage({
+      fetchList({
         model: {
-          ...filters,
-          queryStatus: '6,7,8',
-          beginWorkDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
-          beginWorkDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
+          ...filters
         },
-        sorts: [{ direction: 'DESC', property: 'param1' }],
         capacity: pagination.pageSize,
         page: page || pagination.page,
       }).then(res => {
         this.loading = false
         this.list = res.records || []
-        this.list.forEach(item => {
-          item.inTypeTemp = item.inType == 0 ? '鏁存墭鐩�' : '浠剁儫'
-          item.taskOrigin = 'WMS鑾峰彇'
-          item.workTime = dayjs.duration(item.param3, 'seconds').format('H鏃秏鍒唖绉�')
-        })
         this.pagination.total = res.total || 0
       }, () => {
         this.loading = false
       })
     },
+    dele(id) {
+      this.$confirm('鏄惁纭鍒犻櫎璇ョ墿鏂�?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        deleteById(id)
+          .then(res => {
+            this.getList()
+          })
+      }).catch(() => {
+      
+      });
+    },
+    changeStatus(e, row) {
+      updateStatus({ id: row.id, status: e })
+        .then(res => {
+          this.getList()
+        })
+    },
     clear() {
       this.filters = {}
       this.pagination.pageSize = 10
diff --git a/admin/src/views/stock/components/CateEdit.vue b/admin/src/views/stock/components/CateEdit.vue
index a066862..6ca3043 100644
--- a/admin/src/views/stock/components/CateEdit.vue
+++ b/admin/src/views/stock/components/CateEdit.vue
@@ -1,8 +1,13 @@
 <template>
-  <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @confirm="confirm">
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :confirm-working="isWorking"
+    width="600px"
+    @confirm="confirm">
     <el-form :model="form" ref="form" :rules="rules">
       <el-form-item label="鍒嗙被鍚嶇О" prop="name">
-        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" v-trim />
+        <el-input v-model="form.name" maxlength="30" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" v-trim />
       </el-form-item>
       <el-form-item label="鎵�灞炲垎绫�" prop="parentId">
         <el-select :disabled="form.id" v-model="form.parentId" placeholder="涓嶅~涓哄垯涓�绾у垎绫�">
@@ -19,7 +24,7 @@
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
-import { create, fetchCateList, getInfoById } from '@/api/business/category.js'
+import { fetchCateList, getInfoById } from '@/api/business/category.js'
 export default {
   name: 'OperaCategoryWindow',
   extends: BaseOpera,
@@ -33,7 +38,7 @@
         remark: '',
         status: '',
         sortnum: '',
-        type: 5
+        type: 7
       },
       // 楠岃瘉瑙勫垯
       rules: {
@@ -55,14 +60,9 @@
   },
   methods: {
     getList() {
-      fetchCateList({ type: 5 }).then(res => {
+      fetchCateList({ type: 7 }).then(res => {
         this.dataList = res || []
-        
       })
-    },
-    close() {
-      this.visible = false
-      this.$emit('close')
     },
     getDetail(id) {
       getInfoById(id).then(res => {
diff --git a/admin/src/views/stock/components/newMaterial.vue b/admin/src/views/stock/components/newMaterial.vue
index 519bf22..8557f6c 100644
--- a/admin/src/views/stock/components/newMaterial.vue
+++ b/admin/src/views/stock/components/newMaterial.vue
@@ -9,67 +9,47 @@
             <div class="main_content">
                 <el-form :model="form" label-position="top" ref="form" :rules="rules">
                     <div class="list">
-                        <el-form-item label="鐗╂枡缂栫爜" prop="contractId">
-                            <el-input v-model="form.renterName" placeholder="涓嶈緭鍏ョ郴缁熶細鑷姩缂栫爜" v-trim />
+                        <el-form-item label="鐗╂枡缂栫爜" prop="code">
+                            <el-input v-model="form.code" placeholder="涓嶈緭鍏ョ郴缁熶細鑷姩缂栫爜" v-trim />
                         </el-form-item>
-                        <el-form-item label="鐗╂枡鍚嶇О" prop="renterName">
-                            <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+                        <el-form-item label="鐗╂枡鍚嶇О" prop="name">
+                            <el-input v-model="form.name" placeholder="璇疯緭鍏�" v-trim />
                         </el-form-item>
-                        <el-form-item label="鐗╂枡鍒嗙被" prop="ywContractRoomList">
-                            <el-select v-model="form.ywContractRoomList" placeholder="璇烽�夋嫨">
-                                <el-option
-                                    v-for="(item, index) in houseList"
-                                    :key="index"
-                                    :value="item.id"
-                                    :label="item.projectName + item.buildingName + item.floorName + item.roomName" />
-                            </el-select>
+                        <el-form-item label="鐗╂枡鍒嗙被" prop="cateArr">
+                            <el-cascader
+                                v-model="form.cateArr"
+                                :options="cateList"
+                                @change="getCateVal"
+                                :props="{ label: 'name', value: 'id', children: 'childCategoryList' }"
+                                placeholder="璇烽�夋嫨" />
                         </el-form-item>
-                        <el-form-item label="鏉$爜" prop="costType">
-                            <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+                        <el-form-item label="鏉$爜" prop="qrcode">
+                            <el-input v-model="form.qrcode" placeholder="璇疯緭鍏�" v-trim />
                         </el-form-item>
-                        <el-form-item label="鍝佺墝" prop="date">
-                            <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+                        <el-form-item label="鍝佺墝" prop="brand">
+                            <el-input v-model="form.brand" placeholder="璇疯緭鍏�" v-trim />
                         </el-form-item>
-                        <el-form-item label="瑙勬牸鍨嬪彿" prop="totleFee">
-                            <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+                        <el-form-item label="瑙勬牸鍨嬪彿" prop="attr">
+                            <el-input v-model="form.attr" placeholder="璇疯緭鍏�" v-trim />
                         </el-form-item>
-                        <el-form-item label="瀹夊叏搴撳瓨锛堜笅闄愶級" prop="planPayDate">
-                            <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+                        <el-form-item label="瀹夊叏搴撳瓨锛堜笅闄愶級" prop="minStock">
+                            <el-input v-model="form.minStock" placeholder="璇疯緭鍏�" v-trim />
                         </el-form-item>
-                        <el-form-item label="瀹夊叏搴撳瓨锛堜笂闄愶級" prop="companyId">
-                            <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+                        <el-form-item label="瀹夊叏搴撳瓨锛堜笂闄愶級" prop="maxStock">
+                            <el-input v-model="form.maxStock" placeholder="璇疯緭鍏�" v-trim />
                         </el-form-item>
-                        <el-form-item label="鍗曚綅" prop="companyId">
-                            <el-input v-model="form.renterName" placeholder="璇疯緭鍏�" v-trim />
+                        <el-form-item label="鍗曚綅" prop="unitName">
+                            <el-input v-model="form.unitName" placeholder="璇疯緭鍏�" v-trim />
                         </el-form-item>
-                        <el-form-item label="鎵�灞為」鐩�" prop="companyId">
-                            <el-select v-model="form.ywContractRoomList" placeholder="璇烽�夋嫨">
-                                <el-option
-                                    v-for="(item, index) in houseList"
-                                    :key="index"
-                                    :value="item.id"
-                                    :label="item.projectName + item.buildingName + item.floorName + item.roomName" />
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="鎵�灞炴埧婧�" prop="companyId">
-                            <el-select v-model="form.ywContractRoomList" placeholder="璇烽�夋嫨">
-                                <el-option
-                                    v-for="(item, index) in houseList"
-                                    :key="index"
-                                    :value="item.id"
-                                    :label="item.projectName + item.buildingName + item.floorName + item.roomName" />
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="鐗╂枡鐓х墖" prop="companyId">
+                        <el-form-item label="鐗╂枡鐓х墖" prop="multifile">
                             <el-upload
-                                class="upload-demo"
-                                :show-file-list="false"
-                                :data="uploadData"
                                 :action="uploadImgUrl"
+                                :file-list="fileList"
+                                :data="uploadData"
+                                list-type="picture-card"
                                 :on-success="uploadAvatarSuccess"
-                                :before-upload="beforeUpload"
-                                :on-error="uploadError">
-                                <el-button icon="el-icon-plus" plain>涓婁紶</el-button>
+                                :on-remove="dele">
+                                <i class="el-icon-plus"></i>
                             </el-upload>
                         </el-form-item>
                         <el-form-item style="width: 100%;" label="澶囨敞" prop="remark">
@@ -85,6 +65,7 @@
 <script>
   import GlobalWindow from '@/components/common/GlobalWindow'
   import BaseOpera from '@/components/base/BaseOpera'
+  import { fetchList } from '@/api/business/category.js'
   export default {
     name: 'newMaterial',
     components: {
@@ -92,68 +73,103 @@
     },
     extends: BaseOpera,
     data () {
+      var validateCateArr = (rule, value, callback) => {
+        if (value.length === 0) {
+          callback(new Error('璇烽�夋嫨鐗╂枡鍒嗙被'));
+        } else {
+          callback();
+        }
+      };
       return {
         form: {
-          contractId: '',
-          renterName: '',
-          renterId: '',
-          costType: '',
-          type: '',
-          companyId: '',
+          id: null,
+          code: '',
+          name: '',
+          parentCateId: '',
+          cateId: '',
+          cateArr: [],
+          multifile: {},
           remark: '',
-          startDate: '',
-          endDate: '',
-          totleFee: '',
-          planPayDate: '',
-          multifileList: [],
-          ywContractRoomList: [],
-          date: [],
-          RoomName: ''
+          unitName: '',
+          maxStock: '',
+          minStock: '',
+          attr: '',
+          brand: '',
+          qrcode: ''
         },
-        rules: [],
-        loadingInstance: null,
+        rules: {
+          name: [
+            { required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉�', trigger: 'blur' }
+          ],
+          cateArr: [
+            { required: true, validator: validateCateArr, trigger: 'blur' }
+          ],
+          qrcode: [
+            { required: true, message: '璇疯緭鍏ユ潯鐮�', trigger: 'blur' }
+          ]
+        },
+        cateList: [],
         uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/uploadBatch',
         fileList: [],
         uploadData: {
-          folder: 'YW_CONTRACT_BILL'
-        },
+          folder: 'YW_MATERIAL'
+        }
       }
+    },
+    created () {
+      this.config({
+        api: '/ywMaterial'
+      })
     },
     methods: {
       open (title, target) {
         this.title = title
+        this.fileList = []
         this.visible = true
-      },
-      dele (imgaddr) {
-        this.form.multifileList.forEach((item, index) => {
-          if (imgaddr === item.imgaddr) {
-            this.form.multifileList.splice(index, 1)
+        this.getCategry()
+        // 鏂板缓
+        if (target == null) {
+          this.$nextTick(() => {
+            this.$refs.form.resetFields()
+            this.form[this.configData['field.id']] = null
+          })
+          return
+        }
+        // 缂栬緫
+        this.$nextTick(() => {
+          for (const key in this.form) {
+            this.form[key] = target[key]
+          }
+          if (this.form.multifile) {
+            this.fileList = [
+              { url: this.form.multifile.fileurlFull, ...this.form.multifile }
+            ]
           }
         })
       },
-      beforeUpload (file) {
-        this.loadingInstance = Loading.service({
-          lock: true,
-          text: 'Loading',
-          spinner: 'el-icon-loading',
-          background: 'rgba(0, 0, 0, 0.7)'
+      getCateVal(e) {
+        this.form.parentCateId = e[0]
+        this.form.cateId = e[1]
+      },
+      getCategry() {
+        fetchList({
+          capacity: 1000,
+          model: {
+            type: 7
+          },
+          page: 1
+        }).then(res => {
+          this.cateList = res.records
         })
       },
-      uploadError () {
-        this.$nextTick(() => { // 浠ユ湇鍔$殑鏂瑰紡璋冪敤鐨� Loading 闇�瑕佸紓姝ュ叧闂�
-          if (this.loadingInstance) {
-            this.loadingInstance.close()
-          }
-        })
+      dele (e) {
+        this.fileList = []
+        this.form.multifile = {}
       },
       uploadAvatarSuccess (file) {
-        this.$nextTick(() => {
-          if (this.loadingInstance) {
-            this.loadingInstance.close()
-          }
-        })
         const item = file.data[0]
-        this.form.multifileList.push({ ...item, fileurl: item.imgaddr, name: item.originname, userName: this.userInfo.realname, createTime: this.getDay() })
+        this.fileList.push({ ...item, fileurl: item.imgaddr, name: item.originname })
+        this.form.multifile = { ...item, fileurl: item.imgaddr, name: item.originname }
       }
     }
   }
diff --git a/admin/src/views/stock/components/newWarehouse.vue b/admin/src/views/stock/components/newWarehouse.vue
index 70386ad..e2f076b 100644
--- a/admin/src/views/stock/components/newWarehouse.vue
+++ b/admin/src/views/stock/components/newWarehouse.vue
@@ -9,30 +9,33 @@
             <el-form-item label="浠撳簱鍚嶇О" prop="name">
                 <el-input v-model="form.name" placeholder="璇疯緭鍏�" v-trim />
             </el-form-item>
-            <el-form-item label="鎵�鍦ㄤ綅缃�" prop="name">
-                <el-input v-model="form.name" placeholder="璇疯緭鍏�" v-trim />
+            <el-form-item label="鎵�鍦ㄤ綅缃�" prop="position">
+                <el-input v-model="form.position" placeholder="璇疯緭鍏�" v-trim />
             </el-form-item>
-            <el-form-item label="璐熻矗浜�" prop="name">
-                <el-select v-model="form.name" placeholder="璇烽�夋嫨">
-                    <el-option label="寮犱笁" :value="1"></el-option>
-                    <el-option label="鏉庡洓" :value="1"></el-option>
-                    <el-option label="鐜嬩簩" :value="1"></el-option>
+            <el-form-item label="璐熻矗浜�" prop="userId">
+                <el-select v-model="form.userId" filterable placeholder="璇烽�夋嫨">
+                    <el-option
+                        v-for="item in userList"
+                        :key="item.id"
+                        :label="item.realname"
+                        :value="item.id">
+                    </el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="name">
-                <el-input v-model="form.name" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim />
+                <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
+                <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim />
             </el-form-item>
-            <el-form-item label="鐘舵��" prop="name">
+            <el-form-item label="鐘舵��" prop="status">
                 <el-switch
-                    v-model="form.name"
+                    v-model="form.status"
                     active-color="#13ce66"
                     inactive-color="#ff4949"
-                    active-value="100"
-                    inactive-value="0">
+                    :active-value="0"
+                    :inactive-value="1">
                 </el-switch>
             </el-form-item>
-            <el-form-item label="澶囨敞" prop="name">
-                <el-input v-model="form.name" type="textarea" :autosize="{ minRows: 2, maxRows: 4}" placeholder="璇疯緭鍏�" v-trim />
+            <el-form-item label="澶囨敞" prop="remark">
+                <el-input v-model="form.remark" type="textarea" :autosize="{ minRows: 2, maxRows: 4}" placeholder="璇疯緭鍏�" v-trim />
             </el-form-item>
         </el-form>
     </GlobalWindow>
@@ -41,6 +44,7 @@
 <script>
   import BaseOpera from '@/components/base/BaseOpera'
   import GlobalWindow from '@/components/common/GlobalWindow'
+  import { getUserList } from '@/api/system/user'
   export default {
     name: 'newWarehouse',
     extends: BaseOpera,
@@ -51,18 +55,32 @@
         form: {
           id: '',
           name: '',
+          position: '',
+          userId: '',
+          sortnum: '',
+          remark: '',
+          status: 0
         },
         // 楠岃瘉瑙勫垯
         rules: {
-          name: [{ required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur' }]
+          name: [{ required: true, message: '浠撳簱鍚嶇О涓嶈兘涓虹┖', trigger: 'blur' }]
         },
+        userList: []
       }
     },
     created() {
       this.config({
-        api: '/project/ywProject',
-        'field.id': 'id'
+        api: '/ywWarehouse'
       })
+      this.getUser()
+    },
+    methods: {
+      getUser() {
+        getUserList({})
+            .then(res => {
+              this.userList = res
+            })
+      }
     }
   }
 </script>

--
Gitblit v1.9.3