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/newMaterial.vue |  196 ++++++++++++++++++++++++++----------------------
 1 files changed, 106 insertions(+), 90 deletions(-)

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 }
       }
     }
   }

--
Gitblit v1.9.3