From 6843b10472482b305b5580cc2f5cdbb97fb9a203 Mon Sep 17 00:00:00 2001
From: haoyahui <2032914783@qq.com>
Date: 星期一, 13 十一月 2023 17:31:43 +0800
Subject: [PATCH] 调拨,库存盘点,报废管理,台账管理

---
 admin-web/src/views/stock/scrap/itemScrapping/edit.vue |  137 +++++++++++++++++++++++++++------------------
 1 files changed, 82 insertions(+), 55 deletions(-)

diff --git a/admin-web/src/views/stock/scrap/itemScrapping/edit.vue b/admin-web/src/views/stock/scrap/itemScrapping/edit.vue
index 7c48f51..88d341f 100644
--- a/admin-web/src/views/stock/scrap/itemScrapping/edit.vue
+++ b/admin-web/src/views/stock/scrap/itemScrapping/edit.vue
@@ -1,28 +1,17 @@
 <template>
-  <el-dialog
-    :title="`${type == 'create' ? '鏂板' : '缂栬緫'}${title}`"
-    width="60%"
-    :modal="true"
-    :visible.sync="visible"
-    :top="'15vh'"
-    :close-on-click-modal="false"
-    :append-to-body="true"
-    :destroy-on-close="true"
-    @close="close"
-    class="stock-edit"
-  >
+  <win-md class="stock-edit" :title="`${setting.title}鎶ュ簾鎶ュ簾`" @close="close" :width="'800px'">
     <el-form class="form" ref="ruleForm" :model="formData" :rules="rules" label-width="120px">
       <div class="main-w">
         <el-row :gutter="24" class="headerHeight">
           <el-col :span="12">
-            <el-form-item label="鍏ュ簱浠撳簱" prop="warehouseId">
+            <el-form-item label="鎶ュ簾浠撳簱" prop="warehouseId">
               <el-select v-model="formData.warehouseId" placeholder="璇烽�夋嫨" style="width: 100%">
                 <el-option v-for="item in warehouses" :key="item.id" :label="item.warehouseName" :value="item.id" />
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="閲囪喘鏃堕棿" prop="procureTime">
+            <el-form-item label="鎶ュ簾鏃堕棿" prop="procureTime">
               <el-date-picker
                 v-model="formData.procureTime"
                 type="datetime"
@@ -36,9 +25,18 @@
           </el-col>
         </el-row>
         <el-row :gutter="24" class="headerHeight">
+          <el-col :span="12">
+            <el-form-item label="鎶ュ簾绫诲瀷" prop="buyType">
+              <el-select v-model="formData.buyType" placeholder="璇烽�夋嫨" style="width: 100%">
+                <el-option v-for="item in buyTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24" class="headerHeight">
           <el-col :span="24">
-            <el-form-item label="閲囪喘鍏ュ簱鎵嬬画" prop="procureDoc">
-              <upload :settings="uploadSettings" @on-change="uploadChange"></upload>
+            <el-form-item label="鎶ュ簾鎶ュ簾鎵嬬画" prop="procureDoc">
+              <upload ref="uploadRef" :values="fileList" :settings="uploadSettings" @on-change="uploadChange"></upload>
             </el-form-item>
           </el-col>
         </el-row>
@@ -142,7 +140,7 @@
                 <el-input type="number" v-model="scope.row.price"></el-input>
               </template>
             </el-table-column>
-            <el-table-column prop="counts" label="閲囪喘鏁伴噺" align="center">
+            <el-table-column prop="counts" label="鎶ュ簾鏁伴噺" align="center">
               <template slot-scope="scope">
                 <el-input type="number" v-model="scope.row.counts"></el-input>
               </template>
@@ -172,10 +170,10 @@
       </div>
     </el-form>
     <div slot="footer" align="center" class="dialog-footer">
-      <el-button name="纭畾" site="form" type="primary" @click="handleSubmit">纭畾</el-button>
-      <el-button name="鍙栨秷" site="form" @click="close">鍙栨秷</el-button>
+      <my-button name="鍙栨秷" site="form" @click="close"/>
+      <my-button name="淇濆瓨" site="form" @click="handleSubmit"/>
     </div>
-  </el-dialog>
+  </win-md>
 </template>
 <script>
 import {
@@ -190,33 +188,42 @@
 import MyButton from '@/components/myButton/myButton';
 import winMd from '@/components/win/win-md';
 import upload from '@/components/upload/index';
-import { getUploadUrl } from '@/utils/base';
+import { getUploadUrl,getDownUrl} from '@/utils/base';
 
 import SettingIplatform from '../../../../../public/static/config';
 
 export default {
   components: { MyButton, winMd, upload },
   props: {
-    title: {
-      type: String,
-      default: '閲囪喘鍏ュ簱',
-    },
+    setting: {
+      type: Object,
+      default: () => {
+      }
+    }
   },
   data() {
     return {
-      type: 'create',
       visible: false,
       loading: false,
-      warehouses: [], // 鍏ュ簱浠撳簱鍒楄〃
+      buyTypeOptions:[{
+        label:'闆嗛噰',
+        value: '1'
+      },{
+        label:'鑷噰',
+        value: '2'
+      }],
+      fileList:[],
+      warehouses: [], // 鎶ュ簾浠撳簱鍒楄〃
       categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃
       modelList: [], //鍨嬪彿鍒楄〃
       formData: {
-        warehouseId: '', // 鍏ュ簱浠撳簱id
-        procureTime: '', // 閲囪喘鏃堕棿
+        procureDoc:'',
+        warehouseId: '', // 鎶ュ簾浠撳簱id
+        procureTime: '', // 鎶ュ簾鏃堕棿
+        buyType: '2', // 鎶ュ簾鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
         procureGoods: [],
       },
       goodsItem: {
-        whFormProcureId: '', // 閲囪喘鍗旾D
         baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍
         baseCategoryId: '', // 鍒嗙被缂栧彿
         baseGoodsTemplateId: '', // 鐗╁搧妯$増缂栧彿
@@ -230,7 +237,7 @@
       },
       modelsItem: {
         baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿
-        price: 0, // 鍗曚环(閲囪喘闇�瑕侊紝璋冩嫧涓嶉渶瑕�)
+        price: 0, // 鍗曚环(鎶ュ簾闇�瑕侊紝璋冩嫧涓嶉渶瑕�)
         counts: 0, // 鎿嶄綔鏁伴噺
         supplier: '', // 渚涘簲鍟�
         unit: null, //鍗曚綅
@@ -238,8 +245,9 @@
       rules: {
         warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
         procureTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        buyType: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
 
-        // procureDoc: [{ required: true, message: '璇蜂笂浼�', trigger: 'change' }],
+        procureDoc: [{ required: true, message: '璇蜂笂浼�', trigger: 'change' }],
         baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
         baseGoodsTemplateId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
         modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
@@ -248,47 +256,51 @@
       uploadSettings: {
         title: '涓婁紶',
         max: 20, // 鏈�澶уぇ灏忥紝鍗曚綅M
-        num: 2, // 鏀寔涓婁紶鍥剧墖涓暟
+        num: 10, // 鏀寔涓婁紶鍥剧墖涓暟
         accept: '.jpg,.png', // 闄愬埗鏍煎紡
         tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb`
         uploadUrl: getUploadUrl(), // 涓婁紶璺緞
         multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶
         disabled: false, // 鏄惁绂佺敤
-        type: 'text', // text/picture
+        type: 'picture', // text/picture
       },
     };
   },
-  created() {},
+  created() {
+    this.init()
+  },
   methods: {
-    async open(id) {
+    async init() {
       this.getWarehouseList();
+      this.getgoodsTemplate()
       this.getgoodsModel();
       // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃
       const treeRes = await getTree();
       this.categoryOptions = this.removeEmptyChildren(treeRes);
-      if (id) {
-        this.type = 'edit';
-        const detail = await procureDetail({ id });
-        console.log('procureDetail', detail);
+      if (this.setting.id) {
+        const detail = await procureDetail({ id:this.setting.id });
         this.formData = Object.assign(this.formData, detail);
+        if(this.formData.procureDoc) {
+          this.fileList = JSON.parse(this.formData.procureDoc)
+        }
+        this.$set(this.formData,'buyType',this.formData.buyType.toString())
         this.formData.procureTime = this.formData.procureTime.toString();
         this.formData.procureGoods.map((item, index) => {
           // 鏍规嵁瀛愰泦ID鎷兼帴鐗╁搧鍒嗙被鍒楄〃
-          let pIds = this.findParentIds(this.categoryOptions, item.baseCategoryId);
-          pIds = pIds.reverse();
-          item.baseCategoryIds = [...pIds, item.baseCategoryId];
-          item.modelsIds = item.models.map((v) => v.baseGoodsModelsId);
+          item.baseCategoryIds = this.findParentIds(this.categoryOptions, item.baseCategoryId);
+          this.$set(this.formData.procureGoods[index],'modelsIds',item.models.map((v) => v.baseGoodsModelsId))
           this.getgoodsTemplate(item.baseCategoryId, index);
           this.getgoodsModel(item.baseGoodsTemplateId, index);
+          return item
         });
+        console.log('this.formData.procureGoods',this.formData.procureGoods)
       } else {
-        this.type = 'create';
         this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
       }
       this.visible = true;
     },
 
-    // 鑾峰彇鍏ュ簱浠撳簱鍒楄〃
+    // 鑾峰彇鎶ュ簾浠撳簱鍒楄〃
     getWarehouseList() {
       selectTenantWarehouse()
         .then((res) => {
@@ -319,6 +331,8 @@
       goodsTemplate({ categoryId: id || '' }).then((res) => {
         if (index || index == 0) {
           this.$set(this.formData.procureGoods[index], 'goodsOptions', res);
+        }else {
+          this.goodsTemplatelAll = res;
         }
       });
     },
@@ -332,6 +346,15 @@
           this.goodsModelAll = res;
         }
       });
+    },
+
+    // 鏍规嵁鐗╁搧鍚嶇Оid鑾峰彇鍚嶅瓧
+    getGoodsTemplateName(id) {
+      let item = this.goodsTemplatelAll.find((v) => v.id == id);
+      if (item) {
+        return item.goodsName;
+      }
+      return;
     },
 
     // 鏍规嵁瑙勬牸鍨嬪彿id鑾峰彇鍚嶅瓧
@@ -348,6 +371,9 @@
       this.formData.procureGoods[index].goodsOptions = []
       this.formData.procureGoods[index].baseGoodsTemplateId = ''
       this.formData.procureGoods[index].goodsTemplateName = ''
+      this.formData.procureGoods[index].modelsOptions = []
+      this.formData.procureGoods[index].modelsIds = []
+      this.formData.procureGoods[index].models = []
 
       this.formData.procureGoods[index].baseCategoryId = e[e.length - 1];
       // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃
@@ -360,7 +386,7 @@
       this.formData.procureGoods[index].modelsIds = []
       this.formData.procureGoods[index].models = []
 
-      this.formData.goodsTemplateName = this.getGoodsModelsName(e)
+      this.formData.procureGoods[index].goodsTemplateName = this.getGoodsTemplateName(e)
       // 鏍规嵁閫変腑鐗╁搧鍚嶇Оid鑾峰彇瑙勬牸鍨嬪彿鍒楄〃
       this.getgoodsModel(e, index);
     },
@@ -386,8 +412,9 @@
     },
 
     // 涓婁紶
-    uploadChange(e) {
-      console.log('uploadChange', e);
+    uploadChange() {
+      let arr = this.$refs.uploadRef.fileList
+      this.formData.procureDoc = JSON.stringify(arr)
     },
 
     // 鐐瑰嚮鏂板鐗╁搧
@@ -405,7 +432,7 @@
       this.$refs['ruleForm'].validate((valid) => {
         if (valid) {
           console.log('this.formData', this.formData);
-          if (this.type == 'create') {
+          if (!this.setting.id) {
             procureAdd(this.formData)
               .then((res) => {
                 this.$message.success('淇濆瓨鎴愬姛锛�');
@@ -436,16 +463,16 @@
 
     close() {
       this.formData ={
-        warehouseId: '', // 鍏ュ簱浠撳簱id
-        procureTime: '', // 閲囪喘鏃堕棿
+        warehouseId: '', // 鎶ュ簾浠撳簱id
+        procureTime: '', // 鎶ュ簾鏃堕棿
         procureGoods: [],
       }
-      this.visible = false;
+      this.$emit('close')
     },
 
     // 閫氳繃瀛愰泦id鏌ュ埌鎵�浠ョ浉鍏崇埗绾d骞惰繑鍥炴暟缁�
     findParentIds(dataSource, nodeId) {
-      const parentIds = []; // 鐢ㄤ簬瀛樺偍鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
+      const parentIds = [nodeId]; // 鐢ㄤ簬瀛樺偍鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
 
       // 瀹氫箟涓�涓�掑綊鍑芥暟锛岀敤浜庨亶鍘嗘暣妫垫爲骞舵煡鎵惧瓙鑺傜偣鐨勬墍鏈夌埗鑺傜偣
       function traverse(node, nodeId) {
@@ -459,7 +486,7 @@
           for (const childNode of node.children) {
             if (traverse(childNode, nodeId)) {
               // 濡傛灉鍦ㄥ瓙鑺傜偣涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欏皢褰撳墠鑺傜偣鐨処D娣诲姞鍒扮埗鑺傜偣ID鏁扮粍涓紝骞惰繑鍥瀟rue琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣
-              parentIds.push(node.id);
+              parentIds.unshift(node.id);
               return true;
             }
           }

--
Gitblit v1.9.1