From 332c012e7336f2996c4fe5c8c110d00713c1bde2 Mon Sep 17 00:00:00 2001
From: haoyahui <2032914783@qq.com>
Date: 星期六, 11 十一月 2023 18:51:33 +0800
Subject: [PATCH] 采购单,采购明细,库存管理,出入库,调拨管理,库存盘点

---
 admin-web/src/views/stock/procure/purchaseOrder/edit.vue |  141 ++++++++++++++++++++++++-----------------------
 1 files changed, 72 insertions(+), 69 deletions(-)

diff --git a/admin-web/src/views/stock/procure/purchaseOrder/edit.vue b/admin-web/src/views/stock/procure/purchaseOrder/edit.vue
index 93e1c42..259b8c8 100644
--- a/admin-web/src/views/stock/procure/purchaseOrder/edit.vue
+++ b/admin-web/src/views/stock/procure/purchaseOrder/edit.vue
@@ -1,15 +1,5 @@
 <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"
-  >
+  <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">
@@ -35,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>
+              <upload ref="uploadRef" :values="fileList" :settings="uploadSettings" @on-change="uploadChange"></upload>
             </el-form-item>
           </el-col>
         </el-row>
@@ -171,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 {
@@ -189,29 +188,39 @@
 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,
+      buyTypeOptions:[{
+        label:'闆嗛噰',
+        value: '1'
+      },{
+        label:'鑷噰',
+        value: '2'
+      }],
+      fileList:[],
       warehouses: [], // 鍏ュ簱浠撳簱鍒楄〃
       categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃
       modelList: [], //鍨嬪彿鍒楄〃
       formData: {
+        procureDoc:'',
         warehouseId: '', // 鍏ュ簱浠撳簱id
         procureTime: '', // 閲囪喘鏃堕棿
+        buyType: '2', // 閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
         procureGoods: [],
       },
       goodsItem: {
@@ -237,8 +246,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' }],
@@ -247,41 +257,45 @@
       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);
+          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
         });
       } else {
-        this.type = 'create';
         this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
       }
       this.visible = true;
@@ -318,6 +332,8 @@
       goodsTemplate({ categoryId: id || '' }).then((res) => {
         if (index || index == 0) {
           this.$set(this.formData.procureGoods[index], 'goodsOptions', res);
+        }else {
+          this.goodsTemplatelAll = res;
         }
       });
     },
@@ -333,6 +349,15 @@
       });
     },
 
+    // 鏍规嵁鐗╁搧鍚嶇Оid鑾峰彇鍚嶅瓧
+    getGoodsTemplateName(id) {
+      let item = this.goodsTemplatelAll.find((v) => v.id == id);
+      if (item) {
+        return item.goodsName;
+      }
+      return;
+    },
+
     // 鏍规嵁瑙勬牸鍨嬪彿id鑾峰彇鍚嶅瓧
     getGoodsModelsName(id) {
       let item = this.goodsModelAll.find((v) => v.id == id);
@@ -345,7 +370,11 @@
     // 鐗╁搧鍒嗙被閫夋嫨
     categoryChange(e, index) {
       this.formData.procureGoods[index].goodsOptions = []
-      this.formData.procureGoods[index].baseCategoryId = ''
+      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];
       // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃
@@ -358,6 +387,7 @@
       this.formData.procureGoods[index].modelsIds = []
       this.formData.procureGoods[index].models = []
 
+      this.formData.procureGoods[index].goodsTemplateName = this.getGoodsTemplateName(e)
       // 鏍规嵁閫変腑鐗╁搧鍚嶇Оid鑾峰彇瑙勬牸鍨嬪彿鍒楄〃
       this.getgoodsModel(e, index);
     },
@@ -383,8 +413,9 @@
     },
 
     // 涓婁紶
-    uploadChange(e) {
-      console.log('uploadChange', e);
+    uploadChange() {
+      let arr = this.$refs.uploadRef.fileList
+      this.formData.procureDoc = JSON.stringify(arr)
     },
 
     // 鐐瑰嚮鏂板鐗╁搧
@@ -402,7 +433,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('淇濆瓨鎴愬姛锛�');
@@ -437,12 +468,12 @@
         procureTime: '', // 閲囪喘鏃堕棿
         procureGoods: [],
       }
-      this.visible = false;
+      this.$emit('close')
     },
 
     // 閫氳繃瀛愰泦id鏌ュ埌鎵�浠ョ浉鍏崇埗绾d骞惰繑鍥炴暟缁�
     findParentIds(dataSource, nodeId) {
-      const parentIds = []; // 鐢ㄤ簬瀛樺偍鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
+      const parentIds = [nodeId]; // 鐢ㄤ簬瀛樺偍鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
 
       // 瀹氫箟涓�涓�掑綊鍑芥暟锛岀敤浜庨亶鍘嗘暣妫垫爲骞舵煡鎵惧瓙鑺傜偣鐨勬墍鏈夌埗鑺傜偣
       function traverse(node, nodeId) {
@@ -456,7 +487,7 @@
           for (const childNode of node.children) {
             if (traverse(childNode, nodeId)) {
               // 濡傛灉鍦ㄥ瓙鑺傜偣涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欏皢褰撳墠鑺傜偣鐨処D娣诲姞鍒扮埗鑺傜偣ID鏁扮粍涓紝骞惰繑鍥瀟rue琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣
-              parentIds.push(node.id);
+              parentIds.unshift(node.id);
               return true;
             }
           }
@@ -479,33 +510,5 @@
 };
 </script>
 <style scoped lang="scss">
-.main-w {
-  width: 88%;
-}
-.goods-card {
-  position: relative;
-  background: #f6f6f6;
-  padding: 20px;
-  box-sizing: border-box;
-  border-radius: 4px;
-  background-color: #f9f9f9;
-  margin-top: 20px;
-  &:nth-of-type(1) {
-    margin-top: 0;
-  }
-}
-.btn-group {
-  width: 140px;
-  position: absolute;
-  right: -160px;
-  bottom: 0px;
-  .el-button {
-    margin-bottom: 10px;
-    margin-left: 0;
-    display: block;
-    &:last-child {
-      margin-bottom: 0;
-    }
-  }
-}
+@import url(../../index.scss);
 </style>

--
Gitblit v1.9.1