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/foundation/classification/edit.vue               |    3 
 admin-web/src/views/stock/inventorycount/inventorytask/index.vue     |  260 +-
 admin-web/src/views/stock/transfer/transferissue/detail.vue          |  128 +
 admin-web/src/views/foundation/store/edit.vue                        |  173 +
 admin-web/src/views/foundation/classification/index.vue              |   43 
 admin-web/src/views/stock/procure/purchaseOrder/detail.vue           |  201 +
 admin-web/src/views/stock/scrap/itemScrapping/edit.vue               |  486 ++++
 admin-web/src/views/stock/transfer/transferApplication/index.vue     |  620 ++---
 admin-web/src/views/stock/accessStock/outbound/detail.vue            |  116 +
 admin-web/src/views/foundation/material/edit.vue                     |    2 
 admin-web/src/views/stock/accessStock/outbound/index.vue             |  587 +---
 admin-web/src/views/stock/inventorycount/inventorytask/edit.vue      |  115 
 admin-web/src/views/stock/index.scss                                 |  188 +
 admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue |   80 
 admin-web/src/views/stock/accessStock/outbound/edit.vue              |  516 ++++
 admin-web/src/views/stock/procure/receiptDetails/index.vue           |  303 +-
 admin-web/src/views/stock/procure/purchaseOrder/index.vue            |  272 -
 admin-web/src/views/stock/transfer/transferApplication/edit.vue      |  516 ++++
 admin-web/src/views/stock/transfer/transferissue/index.vue           |  616 ++---
 admin-web/src/views/stock/scrap/itemScrapping/detail.vue             |  120 +
 admin-web/src/api/stock/procure/purchaseOrder.js                     |    8 
 admin-web/src/views/stock/procure/purchaseOrder/edit.vue             |  141 
 admin-web/src/views/stock/scrap/itemScrapping/index.vue              |  585 +---
 admin-web/src/views/stock/transfer/transferissue/edit.vue            |  495 ++++
 admin-web/src/views/stock/transfer/transferApplication/detail.vue    |  128 +
 admin-web/src/views/stock/accessStock/outboundDetails/index.vue      |   66 
 26 files changed, 4,522 insertions(+), 2,246 deletions(-)

diff --git a/admin-web/src/api/stock/procure/purchaseOrder.js b/admin-web/src/api/stock/procure/purchaseOrder.js
index 7199f73..82180e6 100644
--- a/admin-web/src/api/stock/procure/purchaseOrder.js
+++ b/admin-web/src/api/stock/procure/purchaseOrder.js
@@ -64,18 +64,18 @@
     params,
   });
 }
-export function procureDel(data) {
+export function procureDel(params) {
   return request({
     url: '/pc/whForm/procure/del',
     method: 'delete',
-    data,
+    params,
   });
 }
 // 鍏ュ簱
-export function procureIncome(data) {
+export function procureIncome(params) {
   return request({
     url: '/pc/whForm/procure/income',
     method: 'post',
-    data,
+    params,
   });
 }
\ No newline at end of file
diff --git a/admin-web/src/views/foundation/classification/edit.vue b/admin-web/src/views/foundation/classification/edit.vue
index 808e3f7..2669df8 100644
--- a/admin-web/src/views/foundation/classification/edit.vue
+++ b/admin-web/src/views/foundation/classification/edit.vue
@@ -1,7 +1,7 @@
 <template>
   <win-sm :title="setting.title" @close="close" :width="'800px'">
     <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
-      <el-form-item label="涓婄骇鍒嗙被" prop="fatherCategoryName" :key="key">
+      <el-form-item v-if="setting.pid" label="涓婄骇鍒嗙被" prop="fatherCategoryName" :key="key">
         <el-input
           v-model="formData.fatherCategoryName"
           clearable
@@ -100,6 +100,7 @@
     getEditInfo(id) {},
     // 鍒嗙被鍚嶇О鑾峰彇
     getCategoryName() {
+      if(!this.formData.fatherCategoryId) return
       getCategoryDetail({ id: this.formData.fatherCategoryId }).then((res) => {
         this.formData.fatherCategoryName = res.categoryName;
         this.key = Math.random();
diff --git a/admin-web/src/views/foundation/classification/index.vue b/admin-web/src/views/foundation/classification/index.vue
index 6913db5..59bf55a 100644
--- a/admin-web/src/views/foundation/classification/index.vue
+++ b/admin-web/src/views/foundation/classification/index.vue
@@ -17,7 +17,12 @@
             </el-col>
           </el-row>
           <!--娣诲姞/缂栬緫寮圭獥-->
-          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="refreshData" />
+          <edit
+            v-if="editSetting.show"
+            :setting="editSetting"
+            @close="editSetting.show = false"
+            @search="refreshData"
+          />
         </el-card>
       </el-container>
     </el-container>
@@ -40,8 +45,8 @@
 import { getTree } from '@/api/foudation/classification';
 import myImport from '@/views/components/myImport';
 import { getBaseUrl } from '@/utils/base';
-import {getType} from '@/api/system/dict/type'
-import {getDicts} from '@/api/system/dict/data'
+import { getType } from '@/api/system/dict/type';
+import { getDicts } from '@/api/system/dict/data';
 
 export default {
   name: 'index',
@@ -178,13 +183,13 @@
     // 鑾峰彇鏈烘瀯鏍�
     this.initTreeData();
     // 绫诲埆瀛楀吀
-    getDicts('GOODS_PRICE').then(res=>{
-      this.items[1].options = res.map(v=>{
-        v.label=v.dict_label
-        v.value=v.dict_value
-        return v
-      })
-    })
+    getDicts('GOODS_PRICE').then((res) => {
+      this.items[1].options = res.map((v) => {
+        v.label = v.dict_label;
+        v.value = v.dict_value;
+        return v;
+      });
+    });
   },
   methods: {
     //瀵煎叆
@@ -241,15 +246,17 @@
         .catch(() => {});
     },
     showAdd() {
-      if (!this.editSetting.orgId) {
-        this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
-      } else {
-      this.editSetting.pid = this.p.id;
+      // if (!this.editSetting.orgId) {
+      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
+      // } else {
+      if (this.p && this.p) {
+        this.editSetting.pid = this.p.id;
+      }
       this.editSetting.id = null;
       this.editSetting.info = null;
       this.editSetting.title = '鏂板';
       this.editSetting.show = true;
-      }
+      // }
     },
     showAudit(row) {
       this.editSetting.id = row.id;
@@ -280,14 +287,14 @@
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
       if (pageNum != undefined) {
-        this.$refs.myTable.search({pageNum});
+        this.$refs.myTable.search({ pageNum });
       } else {
         this.$refs.myTable.search();
       }
     },
     refreshData() {
-      this.initTreeData()
-      this.search()
+      this.initTreeData();
+      this.search();
     },
     fifterForm(params) {
       this.filterFrom = Object.assign(this.filterFrom, params);
diff --git a/admin-web/src/views/foundation/material/edit.vue b/admin-web/src/views/foundation/material/edit.vue
index 9b014dd..ae949f5 100644
--- a/admin-web/src/views/foundation/material/edit.vue
+++ b/admin-web/src/views/foundation/material/edit.vue
@@ -59,7 +59,7 @@
         radio1: '',
         code: '',
         name: '',
-        states: '',
+        states: 1,
         summary: '',
         categoryId: null,
         models:[
diff --git a/admin-web/src/views/foundation/store/edit.vue b/admin-web/src/views/foundation/store/edit.vue
index 1445921..c60e02f 100644
--- a/admin-web/src/views/foundation/store/edit.vue
+++ b/admin-web/src/views/foundation/store/edit.vue
@@ -1,19 +1,27 @@
 <template>
   <win-sm :title="setting.title" @close="close" :width="'800px'">
     <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
-      <el-form-item label="缂栧彿" prop="code">
-        <el-input disabled v-model="formData.code" clearable maxlength="20" show-word-limit style="width: 100%"/>
+      <el-form-item label="缂栧彿" prop="warehouseCode">
+        <el-input disabled v-model="formData.warehouseCode" clearable maxlength="20" show-word-limit style="width: 100%" />
       </el-form-item>
       <el-form-item label="浠撳簱鍚嶇О" prop="warehouseName">
-        <el-input v-model="formData.warehouseName" clearable maxlength="20" show-word-limit style="width: 100%"/>
+        <el-input v-model="formData.warehouseName" clearable maxlength="20" show-word-limit style="width: 100%" />
       </el-form-item>
       <el-form-item label="浠撳簱绫诲瀷" prop="classificationCode">
-        <el-select v-model="formData.classificationCode" clearable placeholder="璇烽�夋嫨"  style="width: 100%">
-          <el-option v-for="item in classList" :key="item.dict_code" :label="item.dict_label" :value="item.dict_code"></el-option>
+        <el-select v-model="formData.classificationCode" clearable placeholder="璇烽�夋嫨" style="width: 100%">
+          <el-option
+            v-for="item in classList"
+            :key="item.dict_code"
+            :label="item.dict_label"
+            :value="item.dict_code"
+          ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="鍦板潃" >
-        <el-input v-model="formData.adress" clearable maxlength="20" show-word-limit style="width: 100%"/>
+      <el-form-item label="鎵�灞炴満鏋�" prop="agencyIds">
+          <el-cascader v-model="formData.agencyIds" :options="treeList" :props="{checkStrictly: true,value:'id'}" @change="handleChange" style="width: 100%"></el-cascader>
+      </el-form-item>
+      <el-form-item label="鍦板潃">
+        <el-input v-model="formData.adress" clearable maxlength="20" show-word-limit style="width: 100%" />
       </el-form-item>
       <el-form-item label="鐘舵��" prop="states">
         <el-radio-group v-model="formData.states">
@@ -23,100 +31,145 @@
       </el-form-item>
     </el-form>
     <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-      <my-button name="淇濆瓨" site="form" @click="save"/>
+      <my-button name="鍙栨秷" site="form" @click="close" />
+      <my-button name="淇濆瓨" site="form" @click="save" />
     </div>
   </win-sm>
 </template>
 
 <script>
-import winSm from '@/components/win/win-sm'
-import myButton from '@/components/myButton/myButton'
-import * as finsystenant from '@/api/baseSetting/finsystenant'
+import winSm from '@/components/win/win-sm';
+import myButton from '@/components/myButton/myButton';
+import * as finsystenant from '@/api/baseSetting/finsystenant';
 
 export default {
-  components: {winSm, myButton},
+  components: { winSm, myButton },
   props: {
     setting: {
       type: Object,
-      default: () => {
-      }
-    }
+      default: () => {},
+    },
   },
   data() {
     return {
-      classList:[],
+      classList: [],
+      treeList: [],
       checkAll: false,
       checkedList: [],
       formData: {
+        warehouseCode:null,
         classificationId: null,
+        classificationCode:null,
+        states: 1,
+        agencyIds:[],
+        agencyId:''
       },
       rules: {
-        warehouseName: [
-          {required: true, message: '璇疯緭鍏�', trigger: 'blur'}
-        ],
-        name: [
-          {required: true, message: '璇疯緭鍏�', trigger: 'blur'}
-        ],
-        states: [
-          {required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'blur'}
-        ]
-      }
-    }
+        warehouseName: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+        classificationCode: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
+        agencyIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
+        states: [{ required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'blur' }],
+      },
+    };
   },
   created() {
-    this.class_List()
-    if(this.setting.info){
-      this.formData = Object.assign({},JSON.parse(this.setting.info))
+    this.class_List();
+    this.tree_List();
+    if (this.setting.info) {
+      this.formData = Object.assign({}, JSON.parse(this.setting.info));
     }
   },
   methods: {
-    class_List (){
-      finsystenant.classList().then(res => {
+    class_List() {
+      finsystenant.classList().then((res) => {
         if (res) {
-          console.log(res,'res');
-          this.classList = res
+          console.log(res, 'res');
+          this.classList = res;
         }
-      })
+      });
     },
-    getEditInfo(id){
-
+    tree_List() {
+      finsystenant.getTree().then((res) => {
+        if (res) {
+          this.treeList = res;
+          this.$set(this.formData,'agencyIds',this.findParentIds(this.treeList,this.formData.agencyId))
+        }
+      });
     },
+    handleChange(e){
+      this.formData.agencyId = e[e.length-1]
+    },
+    getEditInfo(id) {},
     close() {
-      this.$emit('close')
+      this.$emit('close');
     },
     save() {
       this.$refs.ruleForm.validate((valid) => {
         if (valid) {
-          const params = Object.assign({}, this.formData)
-          if(this.setting.id){
+          const params = Object.assign({}, this.formData);
+          if (this.setting.id) {
             // 缂栬緫鎺ュ彛
-            finsystenant.editstore(params).then(res => {
+            finsystenant.editstore(params).then((res) => {
               if (res) {
-                this.$message.success('淇濆瓨鎴愬姛锛�')
-                this.close()
-                this.$emit('search')
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
               } else {
-                this.$message.error('淇濆瓨澶辫触')
+                this.$message.error('淇濆瓨澶辫触');
               }
-            })
-          }else{
-            params.orgId = this.setting.orgId
-            finsystenant.addstore(params).then(res => {
+            });
+          } else {
+            params.orgId = this.setting.orgId;
+            finsystenant.addstore(params).then((res) => {
               if (res) {
-                this.$message.success('淇濆瓨鎴愬姛锛�')
-                this.close()
-                this.$emit('search')
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
               } else {
-                this.$message.error('淇濆瓨澶辫触')
+                this.$message.error('淇濆瓨澶辫触');
               }
-            })
+            });
           }
         } else {
-          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��')
+          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��');
         }
-      })
-    }
-  }
-}
+      });
+    },
+    // 閫氳繃瀛愰泦id鏌ュ埌鎵�浠ョ浉鍏崇埗绾d骞惰繑鍥炴暟缁�
+    findParentIds(dataSource, nodeId) {
+      const parentIds = [nodeId]; // 鐢ㄤ簬瀛樺偍鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
+
+      // 瀹氫箟涓�涓�掑綊鍑芥暟锛岀敤浜庨亶鍘嗘暣妫垫爲骞舵煡鎵惧瓙鑺傜偣鐨勬墍鏈夌埗鑺傜偣
+      function traverse(node, nodeId) {
+        if (node.id === nodeId) {
+          // 濡傛灉褰撳墠鑺傜偣鐨処D绛変簬瀛愯妭鐐圭殑ID锛屽垯琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣锛屽彲浠ュ紑濮嬪悜涓婃煡鎵剧埗鑺傜偣
+          return true; // 杩斿洖true琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣
+        }
+
+        if (node.children) {
+          // 濡傛灉褰撳墠鑺傜偣鏈夊瓙鑺傜偣锛屽垯缁х画閬嶅巻瀛愯妭鐐�
+          for (const childNode of node.children) {
+            if (traverse(childNode, nodeId)) {
+              // 濡傛灉鍦ㄥ瓙鑺傜偣涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欏皢褰撳墠鑺傜偣鐨処D娣诲姞鍒扮埗鑺傜偣ID鏁扮粍涓紝骞惰繑鍥瀟rue琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣
+              parentIds.unshift(node.id);
+              return true;
+            }
+          }
+        }
+
+        return false; // 濡傛灉褰撳墠鑺傜偣涓嶆槸瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欒繑鍥瀎alse
+      }
+
+      // 浠庢牴鑺傜偣寮�濮嬮亶鍘嗘暣妫垫爲锛屽苟璋冪敤閫掑綊鍑芥暟鏌ユ壘瀛愯妭鐐圭殑鎵�鏈夌埗鑺傜偣
+      for (const node of dataSource) {
+        if (traverse(node, nodeId)) {
+          // 濡傛灉鍦ㄥ綋鍓嶈妭鐐圭殑瀛愭爲涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欑洿鎺ラ��鍑哄惊鐜�
+          break;
+        }
+      }
+
+      return parentIds; // 杩斿洖鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
+    },
+  },
+};
 </script>
diff --git a/admin-web/src/views/stock/accessStock/outbound/detail.vue b/admin-web/src/views/stock/accessStock/outbound/detail.vue
new file mode 100644
index 0000000..c973e30
--- /dev/null
+++ b/admin-web/src/views/stock/accessStock/outbound/detail.vue
@@ -0,0 +1,116 @@
+<template>
+  <win-md class="stock-detail" :title="setting.title" @close="close" :width="'800px'">
+    <el-row :gutter="20">
+      <el-col :span="8">
+        <span>鍑哄簱鍗曞彿锛�</span>
+        <span>{{ detail.businessFormCode }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>鍑哄簱浠撳簱锛�</span>
+        <span>{{ detail.warehouseName }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>鎵�灞炴満鏋勶細</span>
+        <span>{{ detail.agencyName }}</span>
+      </el-col>
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px">
+      <el-col :span="8">
+        <span>鍒涘缓浜猴細</span>
+        <span>{{ detail.buyerName }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>鍑哄簱鏃堕棿锛�</span>
+        <span>{{ detail.incomeTime | formatTime }}</span>
+      </el-col>
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px">
+      <el-col class="img-row" :span="24">
+        <span>鍑哄簱鎵嬬画锛�</span>
+        <div class="img-box"></div>
+      </el-col>
+    </el-row>
+    <div class="goods-card" v-for="(goodsItem, goodsIndex) in detail.procureGoods" :key="goodsIndex">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <span>鐗╁搧鍒嗙被锛�</span>
+          <span>{{ goodsItem.baseCategoryName }}</span>
+        </el-col>
+        <el-col :span="8">
+          <span>鐗╁搧鍚嶇О锛�</span>
+          <span>{{ goodsItem.goodsTemplateName }}</span>
+        </el-col>
+      </el-row>
+      <el-table :data="goodsItem.models" :stripe="true" style="margin-top: 20px">
+        <el-table-column prop="baseGoodsModelsName" label="瑙勬牸鍨嬪彿" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.baseGoodsModelsName }}
+          </template>
+        </el-table-column>
+        <el-table-column label="鍗曚綅" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.unit }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="counts" label="鍑哄簱鏁伴噺" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.counts }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="counts" label="閲戦" align="center">
+          <template slot-scope="scope">
+            {{ (scope.row.price * scope.row.counts).toFixed(2) }}
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </win-md>
+</template>
+<script>
+import { procureDetail } from '@/api/stock/procure/purchaseOrder';
+import winMd from '@/components/win/win-md';
+import * as DateFormatter from '@/utils/DateFormatter';
+
+export default {
+  components: { winMd },
+
+  props: {
+    setting: {
+      type: Object,
+      default: () => {},
+    },
+  },
+  data() {
+    return {
+      detail: {
+        baseCategoryName: '',
+        businessFormCode: '',
+        goodsTemplateName: '',
+        agencyId: '',
+        agencyName: '',
+        states: '',
+        createName: '',
+        time: '',
+        procureGoods: [{}, {}],
+      },
+    };
+  },
+  filters: {
+    formatTime(time) {
+      if (!time) return;
+      return DateFormatter.LongToDateTime(time);
+    },
+  },
+  created() {
+    procureDetail({ id: this.setting.id }).then((res) => {
+      this.detail = res;
+    });
+  },
+  methods: {
+    close() {},
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import url(../../index.scss);
+</style>
diff --git a/admin-web/src/views/stock/accessStock/outbound/edit.vue b/admin-web/src/views/stock/accessStock/outbound/edit.vue
new file mode 100644
index 0000000..22d1448
--- /dev/null
+++ b/admin-web/src/views/stock/accessStock/outbound/edit.vue
@@ -0,0 +1,516 @@
+<template>
+  <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-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-date-picker
+                v-model="formData.procureTime"
+                type="datetime"
+                value="yyyy-MM-dd HH:mm:ss"
+                value-format="yyyyMMddHHmmss"
+                placeholder="璇烽�夋嫨鏃ユ湡"
+                style="width: 100%"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24" class="headerHeight">
+          <el-col :span="12">
+            <el-form-item label="鍑哄簱鎵嬬画" prop="procureDoc">
+              <upload :settings="uploadSettings" @on-change="uploadChange"></upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <div class="goods-card" v-for="(goodsItem, goodsIndex) in formData.procureGoods" :key="goodsIndex">
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item
+                label="鐗╁搧鍒嗙被"
+                :prop="`procureGoods[${goodsIndex}].baseCategoryIds`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-cascader
+                  v-model="goodsItem.baseCategoryIds"
+                  :options="categoryOptions"
+                  :props="{ value: 'id' }"
+                  @change="categoryChange($event, goodsIndex)"
+                  style="width: 100%"
+                ></el-cascader>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item
+                label="鐗╁搧鍚嶇О"
+                :prop="`procureGoods[${goodsIndex}].baseGoodsTemplateId`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-select
+                  v-model="goodsItem.baseGoodsTemplateId"
+                  placeholder="璇峰厛鎷╃墿鍝佸垎绫�"
+                  filterable
+                  :disabled="!goodsItem.baseCategoryId"
+                  style="width: 100%"
+                  @change="goodsTemplateChange($event, goodsIndex)"
+                >
+                  <el-option
+                    v-for="item in goodsItem.goodsOptions"
+                    :key="item.id"
+                    :label="item.goodsName"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item
+                label="瑙勬牸鍨嬪彿"
+                :prop="`procureGoods[${goodsIndex}].modelsIds`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-select
+                  v-model="goodsItem.modelsIds"
+                  multiple
+                  placeholder="璇峰厛鎷╃墿鍝佸悕绉�"
+                  :disabled="!goodsItem.baseCategoryId"
+                  @change="modelChange($event, goodsIndex)"
+                  @remove-tag="modelRemoveTag($event, goodsIndex)"
+                  style="width: 100%"
+                >
+                  <el-option
+                    v-for="item in goodsItem.modelsOptions"
+                    :key="item.id"
+                    :label="item.modelName"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-table :data="goodsItem.models" :stripe="true">
+            <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center">
+              <template slot-scope="scope">
+                {{ getGoodsModelsName(scope.row.baseGoodsModelsId) }}
+              </template>
+            </el-table-column>
+            <el-table-column label="鍗曚綅" align="center">
+              <template slot-scope="scope">
+                {{ scope.row.unit }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="price" label="鐜版湁搴撳瓨" align="center">
+              <template slot-scope="scope">{{  }}
+                {{ scope.row.worehouseCount }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="counts" label="鍑哄簱鏁伴噺" align="center">
+              <template slot-scope="scope">
+                <el-input
+                  type="number"
+                  v-model="scope.row.counts"
+                  @change="countsChange($event, goodsIndex,scope.$index)"
+                ></el-input>
+              </template>
+            </el-table-column>
+          </el-table>
+          <div class="btn-group">
+            <el-button
+              v-if="formData.procureGoods.length > 1"
+              name="绉婚櫎"
+              type="danger"
+              plain
+              size="mini"
+              @click="removeGoods(goodsIndex)"
+              >绉婚櫎</el-button
+            >
+            <el-button
+              v-if="formData.procureGoods.length - 1 == goodsIndex"
+              name="鏂板鐗╁搧"
+              type="primary"
+              plain
+              size="mini"
+              @click="addGoods"
+              >鏂板鐗╁搧</el-button
+            >
+          </div>
+        </div>
+      </div>
+    </el-form>
+    <div slot="footer" align="center" class="dialog-footer">
+      <my-button name="鍙栨秷" site="form" @click="close" />
+      <my-button name="淇濆瓨" site="form" @click="handleSubmit" />
+    </div>
+  </win-md>
+</template>
+<script>
+import {
+  goodsTemplate,
+  procureAdd,
+  procureEdit,
+  selectTenantWarehouse,
+  goodsModel,
+  procureDetail,
+} from '@/api/stock/procure/purchaseOrder';
+import { getTree } from '@/api/foudation/classification';
+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 SettingIplatform from '../../../../../public/static/config';
+
+export default {
+  components: { MyButton, winMd, upload },
+  props: {
+    setting: {
+      type: Object,
+      default: () => {},
+    },
+  },
+  data() {
+    return {
+      visible: false,
+      loading: false,
+      buyTypeOptions: [
+        {
+          label: '闆嗛噰',
+          value: '1',
+        },
+        {
+          label: '鑷噰',
+          value: '2',
+        },
+      ],
+      warehouses: [], // 鍑哄簱浠撳簱鍒楄〃
+      categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃
+      modelList: [], //鍨嬪彿鍒楄〃
+      formData: {
+        warehouseId: '', // 鍑哄簱浠撳簱id
+        procureTime: '', // 鍑哄簱鏃堕棿
+        buyType: '2', // 鍑哄簱鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
+        procureGoods: [],
+      },
+      goodsItem: {
+        whFormProcureId: '', // 鍑哄簱鍗旾D
+        baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍
+        baseCategoryId: '', // 鍒嗙被缂栧彿
+        baseGoodsTemplateId: '', // 鐗╁搧妯$増缂栧彿
+        goodsTemplateName: '', // 鐗╁搧妯$増鍚嶇О
+        supplier: '', // 渚涘簲鍟�
+        sort: '', // 鏄剧ず椤哄簭
+        goodsOptions: [], // 鐗╁搧鍒楄〃select
+        modelsOptions: [], //瑙勬牸鍨嬪彿select
+        models: [], // 鐗╁搧鍚嶇О
+        modelsIds: [], //瑙勬牸鍨嬪彿
+      },
+      modelsItem: {
+        baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿
+        price: 0, // 鍗曚环(鍑哄簱闇�瑕侊紝璋冩嫧涓嶉渶瑕�)
+        worehouseCount: 0,
+        counts: 0, // 鎿嶄綔鏁伴噺
+        supplier: '', // 渚涘簲鍟�
+        unit: null, //鍗曚綅
+      },
+      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' }],
+        baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        baseGoodsTemplateId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+      },
+
+      uploadSettings: {
+        title: '涓婁紶',
+        max: 20, // 鏈�澶уぇ灏忥紝鍗曚綅M
+        num: 2, // 鏀寔涓婁紶鍥剧墖涓暟
+        accept: '.jpg,.png', // 闄愬埗鏍煎紡
+        tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb`
+        uploadUrl: getUploadUrl(), // 涓婁紶璺緞
+        multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶
+        disabled: false, // 鏄惁绂佺敤
+        type: 'text', // text/picture
+      },
+    };
+  },
+  created() {
+    this.init();
+  },
+  methods: {
+    async init() {
+      this.getWarehouseList();
+      this.getgoodsTemplate();
+      this.getgoodsModel();
+      // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃
+      const treeRes = await getTree();
+      this.categoryOptions = this.removeEmptyChildren(treeRes);
+      if (this.setting.id) {
+        const detail = await procureDetail({ id: this.setting.id });
+        this.formData = Object.assign(this.formData, detail);
+        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];
+          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.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
+      }
+      this.visible = true;
+    },
+
+    // 鑾峰彇鍑哄簱浠撳簱鍒楄〃
+    getWarehouseList() {
+      selectTenantWarehouse()
+        .then((res) => {
+          this.warehouses = res;
+          if (this.warehouses.length && !this.formData.warehouseId) {
+            // 榛樿閫変腑绗竴涓粨搴�
+            this.formData.warehouseId = this.warehouses[0].id;
+          }
+        })
+        .catch((err) => {
+          console.log('err', err);
+        });
+    },
+
+    removeEmptyChildren(arr) {
+      arr.forEach((item) => {
+        if (!item.children || !item.children.length) {
+          delete item.children;
+        } else {
+          this.removeEmptyChildren(item.children);
+        }
+      });
+      return arr;
+    },
+
+    // 鑾峰彇鐗╁搧鍚嶇О鍒楄〃
+    getgoodsTemplate(id, index) {
+      goodsTemplate({ categoryId: id || '' }).then((res) => {
+        if (index || index == 0) {
+          this.$set(this.formData.procureGoods[index], 'goodsOptions', res);
+        } else {
+          this.goodsTemplatelAll = res;
+        }
+      });
+    },
+
+    // 瑙勬牸鍨嬪彿
+    getgoodsModel(id, index) {
+      goodsModel({ goodsTemplatesId: id || '' }).then((res) => {
+        if (index || index == 0) {
+          this.$set(this.formData.procureGoods[index], 'modelsOptions', res);
+        } else {
+          this.goodsModelAll = res;
+        }
+      });
+    },
+
+    // 鏍规嵁鐗╁搧鍚嶇О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);
+      if (item) {
+        return item.modelName;
+      }
+      return;
+    },
+
+    // 鐗╁搧鍒嗙被閫夋嫨
+    categoryChange(e, index) {
+      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];
+      // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃
+      this.getgoodsTemplate(e[e.length - 1], index);
+    },
+
+    // 鐗╁搧鍚嶇О鍒楄〃
+    goodsTemplateChange(e, index) {
+      this.formData.procureGoods[index].modelsOptions = [];
+      this.formData.procureGoods[index].modelsIds = [];
+      this.formData.procureGoods[index].models = [];
+
+      this.formData.procureGoods[index].goodsTemplateName = this.getGoodsTemplateName(e);
+      // 鏍规嵁閫変腑鐗╁搧鍚嶇Оid鑾峰彇瑙勬牸鍨嬪彿鍒楄〃
+      this.getgoodsModel(e, index);
+    },
+
+    // 瑙勬牸鍨嬪彿閫夋嫨
+    modelChange(e, index) {
+      let arr = [...this.formData.procureGoods[index].models];
+      let str = JSON.stringify(arr);
+      e.forEach((item) => {
+        if (str.indexOf(item) == -1) {
+          let temp = this.goodsModelAll.find((v) => v.id == item);
+          arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit });
+        }
+      });
+      this.formData.procureGoods[index].models = arr;
+    },
+
+    // 瑙勬牸鍨嬪彿绉婚櫎
+    modelRemoveTag(e, index) {
+      let arr = this.formData.procureGoods[index].models;
+      let delIndex = arr.findIndex((v) => v.baseGoodsModelsId == e);
+      this.formData.procureGoods[index].models.splice(delIndex, 1);
+    },
+
+    // 涓婁紶
+    uploadChange(e) {
+      console.log('uploadChange', e);
+    },
+
+    // 鐐瑰嚮鏂板鐗╁搧
+    addGoods() {
+      this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
+    },
+
+    // 鐐瑰嚮绉婚櫎
+    removeGoods(index) {
+      this.formData.procureGoods.splice(index, 1);
+    },
+
+    // 鍑哄簱鏁伴噺鏍¢獙
+    countsChange(e, goodsIndex,index) {
+      const curItem = this.formData.procureGoods[goodsIndex].models[index]
+      const worehouseCount = curItem.worehouseCount
+      if (e > worehouseCount) {
+        this.$message.warning('鏁伴瓒呰繃鐜版湁搴撳瓨');
+        curItem.counts = worehouseCount
+      }
+    },
+
+    // 鎻愪氦
+    handleSubmit() {
+      this.$refs['ruleForm'].validate((valid) => {
+        if (valid) {
+          console.log('this.formData', this.formData);
+          if (this.setting.id) {
+            procureAdd(this.formData)
+              .then((res) => {
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
+              })
+              .catch((err) => {
+                console.log('create err', err);
+                this.$message.error('淇濆瓨澶辫触');
+              });
+          } else {
+            procureEdit(this.formData)
+              .then((res) => {
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
+              })
+              .catch((err) => {
+                console.log('edit err', err);
+                this.$message.error('淇濆瓨澶辫触');
+              });
+          }
+        } else {
+          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��');
+        }
+      });
+    },
+
+    close() {
+      this.formData = {
+        warehouseId: '', // 鍑哄簱浠撳簱id
+        procureTime: '', // 鍑哄簱鏃堕棿
+        procureGoods: [],
+      };
+      this.$emit('close');
+    },
+
+    // 閫氳繃瀛愰泦id鏌ュ埌鎵�浠ョ浉鍏崇埗绾d骞惰繑鍥炴暟缁�
+    findParentIds(dataSource, nodeId) {
+      const parentIds = []; // 鐢ㄤ簬瀛樺偍鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
+
+      // 瀹氫箟涓�涓�掑綊鍑芥暟锛岀敤浜庨亶鍘嗘暣妫垫爲骞舵煡鎵惧瓙鑺傜偣鐨勬墍鏈夌埗鑺傜偣
+      function traverse(node, nodeId) {
+        if (node.id === nodeId) {
+          // 濡傛灉褰撳墠鑺傜偣鐨処D绛変簬瀛愯妭鐐圭殑ID锛屽垯琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣锛屽彲浠ュ紑濮嬪悜涓婃煡鎵剧埗鑺傜偣
+          return true; // 杩斿洖true琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣
+        }
+
+        if (node.children) {
+          // 濡傛灉褰撳墠鑺傜偣鏈夊瓙鑺傜偣锛屽垯缁х画閬嶅巻瀛愯妭鐐�
+          for (const childNode of node.children) {
+            if (traverse(childNode, nodeId)) {
+              // 濡傛灉鍦ㄥ瓙鑺傜偣涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欏皢褰撳墠鑺傜偣鐨処D娣诲姞鍒扮埗鑺傜偣ID鏁扮粍涓紝骞惰繑鍥瀟rue琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣
+              parentIds.push(node.id);
+              return true;
+            }
+          }
+        }
+
+        return false; // 濡傛灉褰撳墠鑺傜偣涓嶆槸瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欒繑鍥瀎alse
+      }
+
+      // 浠庢牴鑺傜偣寮�濮嬮亶鍘嗘暣妫垫爲锛屽苟璋冪敤閫掑綊鍑芥暟鏌ユ壘瀛愯妭鐐圭殑鎵�鏈夌埗鑺傜偣
+      for (const node of dataSource) {
+        if (traverse(node, nodeId)) {
+          // 濡傛灉鍦ㄥ綋鍓嶈妭鐐圭殑瀛愭爲涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欑洿鎺ラ��鍑哄惊鐜�
+          break;
+        }
+      }
+
+      return parentIds; // 杩斿洖鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+@import url(../../index.scss);
+</style>
diff --git a/admin-web/src/views/stock/accessStock/outbound/index.vue b/admin-web/src/views/stock/accessStock/outbound/index.vue
index ea1d5b0..28c09d9 100644
--- a/admin-web/src/views/stock/accessStock/outbound/index.vue
+++ b/admin-web/src/views/stock/accessStock/outbound/index.vue
@@ -1,118 +1,78 @@
 <template>
-  <div class="app-container">
+  <div class="app-container stock-container">
     <el-container>
-      <el-container>
-        <el-card class="box-card" style="width: 100%" shadow="never">
-          <!--鎼滅储鏉′欢-->
-          <div class="filter-container">
-            <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
-          </div>
-          <el-row style="margin-top: 15px">
-            <el-col>
-              <!--鍒楄〃-->
-              <my-button name="鏂板" @click="addtable" site="form" />
-              <div :style="{'overflow-y': 'auto', height:`${clientHeight - 320}px`}">
-                    <el-row class="card"
-                            :gutter="5">
-                        <el-col v-for="(item, index) in proData" :key="index" class="cm-item">
-                          <el-card class="card-data">
-                            <div class="card-container">
-                              <div class="hed-one">鍑哄簱鍗曞彿锛歿{ item.order_no }}</div>
-                              <div class="one-hed">
-                                <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鍑哄簱鏃堕棿锛�</span>{{ item.customer_name }}</div>
-                              </div>
-                              <div class="card-end">
-                                <div v-for="(just, index) in item.data" class="two-end">
-                                  <div class="item"><span>{{ just.order_no }}锛�</span>{{ just.customer_name }}</div>
-                                </div>
-                              </div>
-                            </div>
-                            <div class="card-but">
-                              <my-button name="鏌ョ湅璇︽儏"   site="form" />
-                              <my-button name="瀵煎嚭鍑哄簱鍗�" site="form" />
-                            </div>
-                          </el-card>
-                        </el-col>
-                    </el-row>
-              </div>
-              <el-pagination
-                :small="false"
-                :current-page="1"
-                :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
-                :page-size="10"
-                layout="total, sizes, prev, pager, next, jumper"
-                :total="0"
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-              />
-            </el-col>
-          </el-row>
-          <!--娣诲姞/缂栬緫寮圭獥-->
-          <el-dialog title="鏂板鍑哄簱"  :close-on-click-modal="false" :visible.sync="adddialog" width="60%" >
-            <el-form ref="ruleForm" :model="formData" class="demo-ruleForm" label-width="100px">
-              <el-row :gutter="24" class="headerHeight">
-                  <el-col :span="12">
-                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                    </el-form-item>
-                  </el-col>
-                  <el-col :span="12">
-                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="24" class="headerHeight">
-                  <el-col :span="24">
-                    <el-form-item label="鍑哄簱鎵嬬画" prop="name">                      
-                      浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <div style="position: relative;">
-                  <div style="background-color: #F9F9F9;width: 90%;">
-                  <el-row :gutter="24" class="">
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-row :gutter="24" class="">
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-table :data="formData.tableData" height="100%"  :stripe="true">
-                    <el-table-column prop="projectName" label="瑙勬牸鍨嬪彿" align="center"> </el-table-column>
-                    <el-table-column prop="time1" label="鍗曚綅"  align="center"> </el-table-column>
-                    <el-table-column prop="unit" label="鐜版湁搴撳瓨" align="center"> </el-table-column>
-                    <el-table-column prop="time2" label="鍑哄簱鏁伴噺"  align="center"> </el-table-column>
-                  </el-table>
-                  </div>
-                  <div style="position: absolute;right: 0;top: 152px;">
-                    <my-button style="display: block;margin-left: 10px;margin-bottom: 5px;" name="绉婚櫎" site="form"/>
-                    <my-button name="鏂板鐗╁搧" site="form"/>
-                  </div>
-                </div>
-            </el-form>
-            <div slot="footer" align="center" class="dialog-footer">
-              <my-button name="纭畾" site="form" />
-              <my-button name="鍙栨秷" site="form" @click="adddialog = false"/>
+      <el-card class="box-card" style="width: 100%" shadow="never">
+        <!--鎼滅储鏉′欢-->
+        <div class="filter-container">
+          <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
+        </div>
+        <el-row style="margin-top: 15px">
+          <el-col>
+            <!--鍒楄〃-->
+            <div class="table-tool-bar" style="margin-bottom: 15px;">
+              <my-button name="鏂板" @click="handleAdd" site="tools" size="medium" />
+              <my-button name="瀵煎叆" @click="importSetting.dialogShow = true" site="tools" size="medium" />
             </div>
-          </el-dialog>
-        </el-card>
-      </el-container>
+            <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading">
+              <el-row class="card" :gutter="5">
+                <el-col v-for="(item, index) in list" :key="index" class="cm-item">
+                  <el-card class="card-data">
+                    <div class="card-container">
+                      <div class="card-header">
+                        <div class="card-header-left">
+                          <span>鍑哄簱鍗曞彿锛�</span>
+                          <span class="value">{{ item.businessFormCode }}</span>
+                        </div>
+                        <div class="card-header-right">
+                            <el-button site="form" type="success" size="mini" @click="handleExport(item)"
+                              >瀵煎嚭鍑哄簱鍗�</el-button
+                            >
+                          <el-button name="鏌ョ湅璇︽儏" site="form" type="info" size="mini" @click="handleDetail(item)"
+                            >鏌ョ湅璇︽儏</el-button
+                          >
+                        </div>
+                      </div>
+                      <div class="one-hed">
+                        <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.agencyId }}</div>
+                        <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.buyerName }}</div>
+                        <div class="box">
+                          <span class="span-two">鍑哄簱鏃堕棿锛�</span>{{ item.procureTime | formatTime }}
+                        </div>
+                      </div>
+                      <div class="card-end">
+                        <div v-for="(just, index) in item.fromProcureTemplateInfoList" :key="index" class="item">
+                          <div class="name">{{ just.goodsTemplateName }}</div>
+                          <div class="value-box">
+                            <div class="value-box-item">
+                              <span class="label">鏁伴噺锛�</span>
+                              <span class="value">{{ just.count }}</span>
+                              <span class="unit">{{ just.unit }}</span>
+                            </div>
+                          </div>
+                        </div>
+                      </div>
+                    </div>
+                  </el-card>
+                </el-col>
+              </el-row>
+            </div>
+            <el-pagination
+              :small="false"
+              :current-page="pageNum"
+              :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
+              :page-size="pageSize"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="total"
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+            />
+          </el-col>
+        </el-row>
+      </el-card>
     </el-container>
+    <!--娣诲姞/缂栬緫寮圭獥-->
+    <edit v-if="editSetting.show" :setting="editSetting" ref="editRef" @close="editSetting.show=false" @search="refreshData"></edit>
+    <detail v-if="detailSetting.show" :setting="detailSetting" @close="editSetting.show=false" ref="detailRef"></detail>
     <my-import
       :import-setting="importSetting"
       :dialog-show="importSetting.dialogShow"
@@ -122,196 +82,66 @@
 </template>
 
 <script>
-import MyButton from "@/components/myButton/myButton";
+import { procureList, procureDel, procureIncome } from '@/api/stock/procure/purchaseOrder';
+import MyButton from '@/components/myButton/myButton';
 import SettingIplatform from '@/utils/settingIplatform';
-import myImport from '@/views/components/myImport'
-import {getBaseUrl} from '@/utils/base';
+import myImport from '@/views/components/myImport';
+import edit from './edit';
+import detail from './detail';
+import { getBaseUrl } from '@/utils/base';
+import * as DateFormatter from '@/utils/DateFormatter';
 
 export default {
-  name: "index",
-  components: {MyButton, myImport},
+  name: 'index',
+  components: { MyButton, myImport, edit, detail },
   data() {
     return {
-      
+      loading: false,
       adddialog: false,
-      formData:{
-        tableData:[
-          {
-            projectName:'555'
-          },
-          {
-            projectName:'444'
-          }
-        ],
-      },
+      list: [],
       // 鎼滅储妗�
       items: [
         {
           type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'businessFormCode',
           label: '鍑哄簱鍗曞彿',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
         },
         {
           type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'goodsTemplateName',
           label: '鐗╁搧鍚嶇О',
           placeholder: '鍙ā绯婃悳绱�',
-          defaultValue: ''
+          defaultValue: '',
+        },
+        {
+          type: 'select',
+          dataIndex: 'name',
+          label: '鏈烘瀯',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '',
+          options: [],
         },
         {
           type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'buyerName',
           label: '鍒涘缓浜�',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
         },
         {
           type: 'date-picker',
           dataIndex: 'val1',
           label: '鍑哄簱鏃堕棿',
-          defaultValue: ''
+          defaultValue: '',
         },
         {
           type: 'date-picker',
           dataIndex: 'val2',
           label: '鑷�',
-          defaultValue: ''
+          defaultValue: '',
         },
-        // {
-        //   type: 'select',
-        //   dataIndex: 'status',
-        //   label: '鐘舵��',
-        //   placeholder: '璇烽�夋嫨',
-        //   defaultValue: '1',
-        //   options: [
-        //     {
-        //       label: '鍚敤',
-        //       value: '1'
-        //     },
-        //     {
-        //       label: '绂佺敤',
-        //       value: '0'
-        //     }
-        //   ]
-        // }
-      ],
-      proData: [
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        }
       ],
       // 鏍戞暟鎹�
       treeDataList: [],
@@ -320,25 +150,25 @@
         tenantId: null,
         userName: null,
         userPhone: null,
-        status: 1
+        states: null,
       },
       // 瀵煎叆
       importSetting: {
-          dialogTitle: '瀵煎叆',
-          dialogShow: false,
-          fileSettings: {
-              data: {},
-              uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃
-              accept: '.xls', // 鏍煎紡
-              type: 'text', // 鍥炴樉褰㈠紡
-              loading: false // 瀵煎叆鏁堟灉
-          },
-          /* 妯℃澘涓嬭浇 */
-          templateSettings: {
-              templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
-              templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃
-          },
-          onSuccess: null
+        dialogTitle: '瀵煎叆',
+        dialogShow: false,
+        fileSettings: {
+          data: {},
+          uploadUrl: getBaseUrl() + '/pc/fin/sys/tenant/import', // 涓婁紶鍦板潃
+          accept: '.xls', // 鏍煎紡
+          type: 'text', // 鍥炴樉褰㈠紡
+          loading: false, // 瀵煎叆鏁堟灉
+        },
+        /* 妯℃澘涓嬭浇 */
+        templateSettings: {
+          templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
+          templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate', // 涓嬭浇鍦板潃
+        },
+        onSuccess: null,
       },
       editSetting: {
         title: '',
@@ -346,104 +176,129 @@
         orgId: '',
         show: false,
       },
-    }
+      detailSetting: {
+        title: '璇︽儏',
+        id: '',
+        show: false,
+      },
+      pageNum: 1,
+      pageSize: 10,
+      total: 0,
+    };
   },
   computed: {
-    clientHeight () {
-      return document.documentElement.clientHeight
+    clientHeight() {
+      return document.documentElement.clientHeight;
+    },
+  },
+  filters: {
+    formatTime(time) {
+      if (!time) return;
+      return DateFormatter.LongToDateTime(time);
     },
   },
   created() {
+    this.fetchData();
   },
   methods: {
-    handleSizeChange(){},
-    handleCurrentChange(){},
+    fetchData() {
+      this.loading = true;
+      procureList({
+        pageNum: this.pageNum,
+        pageSize: this.pageSize,
+        ...this.filterFrom,
+      }).then((res) => {
+        this.list = res.datas;
+        this.total = res.totalRows;
+        this.loading = false;
+        console.log(this.list);
+      });
+    },
     //瀵煎叆
     importOrg() {
-        this.importSetting.dialogShow = true
-        this.importSetting.onSuccess = (response, callBack) => {
-            if (response.code===1){
-              this.$message.success(response.msg)
-              this.search(1)
-            }else{
-              this.$message.warning(response.msg)
-            }
-            callBack()
+      this.importSetting.dialogShow = true;
+      this.importSetting.onSuccess = (response, callBack) => {
+        if (response.code === 1) {
+          this.$message.success(response.msg);
+          this.search(1);
+        } else {
+          this.$message.warning(response.msg);
         }
+        callBack();
+      };
     },
-   
-    addtable() {
-      this.adddialog = true
+    // 瀵煎嚭
+    handleExport() {},
+    // 鏂板
+    handleAdd() {
+      this.editSetting.id = null;
+      this.editSetting.info = null;
+      this.editSetting.title = '鏂板';
+      this.editSetting.show = true;
+    },
+    // 缂栬緫
+    handleEdit(row) {
+      this.editSetting.id = row.id;
+      this.editSetting.info = null;
+      this.editSetting.title = '缂栬緫';
+      this.editSetting.show = true;
+    },
+    // 璇︽儏
+    handleDetail(row) {
+      this.detailSetting.id = row.id;
+      this.detailSetting.info = JSON.stringify(row);
+      this.detailSetting.title = '璇︽儏';
+      this.detailSetting.show = true;
+    },
+    // 鍑哄簱
+    handleIncome(row) {
+      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  鍑哄簱鍚�?`, '鍑哄簱鍑哄簱')
+        .then(function () {
+          procureIncome({ id: row.id }).then((res) => {
+            this.$message.success('鍑哄簱鎴愬姛锛�');
+            this.search();
+          });
+        })
+        .catch(() => {});
+    },
+    del(row) {
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鍑哄簱鍗曞彿涓�"' + row.businessFormCode + '"鐨勬暟鎹悧锛�')
+        .then(function () {
+          procureDel({ id: row.id }).then((res) => {});
+        })
+        .then((res) => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.search();
+        })
+        .catch(() => {});
+    },
+    // 鍒嗛〉
+    handleSizeChange(pageSize) {
+      this.pageSize = pageSize;
+      this.search({ pageNum: 1 });
+    },
+    handleCurrentChange(pageNum) {
+      this.myTable.paging.page.pageNum = pageNum;
+      this.search({ pageNum: pageNum });
     },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
-      if (pageNum != undefined) {
-        // this.$refs.myTable.search(pageNum)
-      } else {
-        // this.$refs.myTable.search()
-      }
+      this.fetchData();
+    },
+    refreshData() {
+      this.pageNum = 1;
+      this.pageSize = 10;
+      this.search();
     },
     fifterForm(params) {
-      console.log(params,'555');
-      this.filterFrom = Object.assign(this.filterFrom, params)
-      this.search(1)
-    }
-  }
-}
+      this.filterFrom = Object.assign(this.filterFrom, params);
+      this.search(1);
+    },
+  },
+};
 </script>
 
-<style scoped>
-.card {
-    display: flex;
-    flex-wrap: wrap;
-    margin: 0px !important;
-    .cm-item {
-        width: 100%;
-    }
-    .cm-item /deep/ .el-card__body {
-        padding: 10px;
-    }
-}
-.card-data{
-  margin-top: 8px;
-  .card-container{
-    display: inline-block; 
-    width: 70%;
-    .hed-one{
-      color: #2298EE;
-      font-size: 18px;
-    }
-    .one-hed{
-      margin-top: 15px;
-      .box{
-        display: inline-block;  
-        margin-right: 20px;  
-      }
-    }
-    .span-two{
-      color: #83919e;
-      font-size: 14px;
-    }
-    .card-end{
-      font-size: 14px;
-      color: #3d3d3d;
-      margin-top: 15px;
-      display: flex;  
-      flex-wrap: wrap; 
-      .two-end{
-        width: calc(33.33% - 20px); 
-        margin-bottom: 15px; 
-      }
-    }
-    
-  }
-  .card-but{
-    display: inline-block; 
-  }
-  .end{
-    display: inline-block;  
-  }
-  
-}
-
+<style scoped lang="scss">
+@import url(../../index.scss);
 </style>
diff --git a/admin-web/src/views/stock/accessStock/outboundDetails/index.vue b/admin-web/src/views/stock/accessStock/outboundDetails/index.vue
index 2936cd9..29e6efc 100644
--- a/admin-web/src/views/stock/accessStock/outboundDetails/index.vue
+++ b/admin-web/src/views/stock/accessStock/outboundDetails/index.vue
@@ -14,7 +14,7 @@
             </el-col>
           </el-row>
           <!--娣诲姞/缂栬緫寮圭獥-->
-          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
+          <detail v-if="detailSetting.show" :setting="detailSetting" @close="detailSetting.show = false"/>
         </el-card>
       </el-container>
     </el-container>
@@ -30,14 +30,14 @@
 import MyTableV2 from "@/components/myTable/myTableV2";
 import MyButton from "@/components/myButton/myButton";
 import SettingIplatform from '@/utils/settingIplatform';
-import edit from './edit'
+import detail from '../outbound/detail'
 import * as finsystenant from '@/api/baseSetting/finsystenant'
 import myImport from '@/views/components/myImport'
 import {getBaseUrl} from '@/utils/base';
 
 export default {
   name: "index",
-  components: {MyButton, MyTableV2, edit, myImport},
+  components: {MyButton, MyTableV2, detail, myImport},
   data() {
     return {
       // 鎼滅储妗�
@@ -72,6 +72,23 @@
           label: '鐗╁搧鍚嶇О',
           placeholder: '璇疯緭鍏�',
           defaultValue: ''
+        },
+        {
+          type: 'select',
+          dataIndex: 'modelsIds',
+          label: '瑙勬牸鍨嬪彿',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '',
+          options: [],
+        },
+        {
+          type: 'cascader',
+          dataIndex: 'agencyId',
+          label: '鏈烘瀯',
+          placeholder: '璇烽�夋嫨',
+          optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null },
+          defaultValue: '',
+          options: [],
         },
         {
           type: 'text',
@@ -114,6 +131,11 @@
         orgId: '',
         show: false,
       },
+      detailSetting: {
+        title: '璇︽儏',
+        id: '',
+        show: false,
+      },
       // 琛ㄦ牸鏁版嵁
       table: {
         showIndex: true, // 鏄惁鏄剧ず搴忓彿
@@ -151,7 +173,7 @@
             {
               title: '璇︽儏',
               events: (row) => {
-                this.showAudit(row);
+                this.showDetail(row);
               },
             },
           ],
@@ -227,37 +249,11 @@
         .catch(() => {
         });
     },
-    showAdd() {
-      // if (!this.editSetting.orgId) {
-      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
-      // } else {
-        this.editSetting.id = null;
-        this.editSetting.info = null;
-        this.editSetting.title = '鏂板';
-        this.editSetting.show = true;
-      // }
-    },
-    showAudit(row) {
-      this.editSetting.id = row.id;
-      this.editSetting.info = JSON.stringify(row);
-      this.editSetting.title = '缂栬緫';
-      this.editSetting.show = true;
-    },
-    nodeClick(param) {
-      param = param || {}
-      this.p = Object.assign({}, {
-        id: param.id,
-        name: param.name
-      })
-      if (this.p.id != undefined && this.p.id != null) {
-        this.filterFrom.tenantId = this.p.id
-        this.editSetting.orgId = this.p.id
-      } else {
-        this.filterFrom.tenantId = null
-        this.editSetting.orgId = null
-      }
-      this.importSetting.fileSettings.data = {pid: param.id}
-      this.search(1)
+    showDetail(row) {
+      this.detailSetting.id = row.id;
+      this.detailSetting.info = JSON.stringify(row);
+      this.detailSetting.title = '璇︽儏';
+      this.detailSetting.show = true;
     },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
diff --git a/admin-web/src/views/stock/index.scss b/admin-web/src/views/stock/index.scss
new file mode 100644
index 0000000..fc19052
--- /dev/null
+++ b/admin-web/src/views/stock/index.scss
@@ -0,0 +1,188 @@
+.stock-container {
+  .ml-20 {
+    margin-left: 20px;
+  }
+  .card {
+    display: flex;
+    flex-wrap: wrap;
+    margin: 0px !important;
+    .cm-item {
+      width: 100%;
+    }
+    .cm-item .el-card__body {
+      padding-bottom: 5px;
+    }
+  }
+  .card-data {
+    position: relative;
+    margin-top: 8px;
+    .card-container {
+      .card-header {
+        height: 48px;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        background: #f3f9fe;
+        padding: 0 32px 0 15px;
+        box-sizing: border-box;
+      }
+      .card-header-left {
+        display: flex;
+        align-items: center;
+        color: #999999;
+        font-family: 'Microsoft YaHei UI';
+        font-size: 18px;
+        font-weight: 700;
+        .value {
+          color: #3d3d3d;
+        }
+
+        .states {
+          width: 54px;
+          height: 22px;
+          line-height: 22px;
+          text-align: center;
+          border-radius: 4px;
+          border: 1px solid #f9675b99;
+          background: #f9675b1a;
+          font-family: 'Microsoft YaHei';
+          color: #f9675b;
+          font-size: 13px;
+          font-style: normal;
+          font-weight: 400;
+          margin-left: 8px;
+        }
+        .states-success {
+          border: 1px solid #39ad6199;
+          background: #39ad610f;
+          color: #39ad61;
+        }
+        .states-info {
+          border: 1px solid #999999;
+          background: #39ad610f;
+          color: #999999;
+        }
+      }
+      .one-hed {
+        margin-top: 15px;
+        padding: 0 32px 0 15px;
+        box-sizing: border-box;
+        .box {
+          display: inline-block;
+          margin-right: 20px;
+        }
+        .span-two {
+          color: #83919e;
+          font-size: 14px;
+        }
+      }
+      .card-end {
+        font-size: 14px;
+        color: #3d3d3d;
+        margin-top: 15px;
+        display: flex;
+        flex-wrap: wrap;
+        font-family: 'Microsoft YaHei UI';
+        padding: 0 16px;
+        box-sizing: border-box;
+        .item {
+          width: 379px;
+          height: 60px;
+          padding: 8px 12px 9px 12px;
+          box-sizing: border-box;
+          align-items: center;
+          gap: 8px;
+          flex-shrink: 0;
+          background: #f9f9f9;
+          margin-right: 15px;
+          margin-bottom: 15px;
+          &:last-child {
+            margin-right: 0;
+          }
+          .name {
+            height: 22px;
+            line-height: 22px;
+          }
+          .value-box {
+            display: flex;
+            .value-box-item {
+              margin-right: 20px;
+              .label {
+                color: #99999999;
+                line-height: 22px;
+              }
+              .value {
+                color: #ff3131;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+/*缂栬緫*/
+.stock-edit{
+  .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: 80px;
+    position: absolute;
+    right: -94px;
+    bottom: 0px;
+    .el-button {
+      margin-bottom: 10px;
+      margin-left: 0;
+      display: block;
+      &:last-child {
+        margin-bottom: 0;
+      }
+    }
+  }
+}
+
+/*璇︽儏*/
+.stock-detail{
+  .img-row {
+    display: flex;
+    align-content: center;
+  }
+  .img-box {
+    display: inline-block;
+    width: 80px;
+    height: 80px;
+    background: #f9f9f9;
+    margin-right: 20px;
+    cursor: pointer;
+    .img {
+      width: 100%;
+    }
+  }
+  
+  .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;
+    }
+  }
+}
\ No newline at end of file
diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue b/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue
index 37b0db9..7a747d4 100644
--- a/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue
+++ b/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue
@@ -1,43 +1,48 @@
 <template>
   <win-sm :title="setting.title" @close="close" :width="'800px'">
     <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
-      <el-form-item label="缂栧彿" prop="code">
-        <el-input disabled v-model="formData.code" clearable maxlength="20" show-word-limit style="width: 100%"/>
+      <el-form-item label="鐩樼偣鍗曞悕" prop="code">
+        <el-input disabled v-model="formData.code" clearable maxlength="20" show-word-limit style="width: 100%" />
       </el-form-item>
-      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+      <el-form-item label="鐩樼偣浠撳簱" prop="name">
+        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%" />
       </el-form-item>
-      <el-form-item label="鍦板潃" >
-        <el-input v-model="formData.adss" clearable maxlength="20" show-word-limit style="width: 100%"/>
+      <el-form-item label="鐩樼偣浜�">
+        <el-input v-model="formData.adss" clearable maxlength="20" show-word-limit style="width: 100%" />
       </el-form-item>
-      <el-form-item label="鐘舵��" prop="status">
-        <el-switch
-          v-model="formData.status"
-          active-color="#0d997c"
-          inactive-color="#C0CCDA">
-        </el-switch>
+      <el-form-item label="鐩戠洏浜�">
+        <el-input v-model="formData.adss" clearable maxlength="20" show-word-limit style="width: 100%" />
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="status">
+        <el-input
+          type="textarea"
+          placeholder="璇疯緭鍏ュ唴瀹�"
+          v-model="formData.adss"
+          resize="none"
+          maxlength="100"
+          show-word-limit
+        ></el-input>
       </el-form-item>
     </el-form>
     <div slot="footer" align="center" class="dialog-footer">
-      <my-button name="鍙栨秷" site="form" @click="close"/>
-      <my-button name="淇濆瓨" site="form" @click="save"/>
+      <my-button name="鍙栨秷" site="form" @click="close" />
+      <my-button name="淇濆瓨" site="form" @click="save" />
     </div>
   </win-sm>
 </template>
 
 <script>
-import winSm from '@/components/win/win-sm'
-import myButton from '@/components/myButton/myButton'
-import * as finsystenant from '@/api/baseSetting/finsystenant'
+import winSm from '@/components/win/win-sm';
+import myButton from '@/components/myButton/myButton';
+import * as finsystenant from '@/api/baseSetting/finsystenant';
 
 export default {
-  components: {winSm, myButton},
+  components: { winSm, myButton },
   props: {
     setting: {
       type: Object,
-      default: () => {
-      }
-    }
+      default: () => {},
+    },
   },
   data() {
     return {
@@ -50,62 +55,54 @@
         summary: '',
       },
       rules: {
-        code: [
-          {required: true, message: '璇疯緭鍏ユ満鏋勭紪鍙�', trigger: 'blur'}
-        ],
-        name: [
-          {required: true, message: '璇疯緭鍏ユ満鏋勫悕绉�', trigger: 'blur'}
-        ],
-        status: [
-          {required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'blur'}
-        ]
-      }
-    }
+        code: [{ required: true, message: '璇疯緭鍏ユ満鏋勭紪鍙�', trigger: 'blur' }],
+        name: [{ required: true, message: '璇疯緭鍏ユ満鏋勫悕绉�', trigger: 'blur' }],
+        status: [{ required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'blur' }],
+      },
+    };
   },
   created() {
-    if(this.setting.info){
-      this.formData = Object.assign({},JSON.parse(this.setting.info))
+    if (this.setting.info) {
+      this.formData = Object.assign({}, JSON.parse(this.setting.info));
     }
   },
   methods: {
-    getEditInfo(id){
-
-    },
+    getEditInfo(id) {},
     close() {
-      this.$emit('close')
+      this.$emit('close');
     },
     save() {
       this.$refs.ruleForm.validate((valid) => {
         if (valid) {
-          const params = Object.assign({}, this.formData)
-          if(this.setting.id){
+          const params = Object.assign({}, this.formData);
+          if (this.setting.id) {
             // 缂栬緫鎺ュ彛
-            finsystenant.edit(params).then(res => {
+            finsystenant.edit(params).then((res) => {
               if (res) {
-                this.$message.success('淇濆瓨鎴愬姛锛�')
-                this.close()
-                this.$emit('search')
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
               } else {
-                this.$message.error('淇濆瓨澶辫触')
+                this.$message.error('淇濆瓨澶辫触');
               }
-            })
-          }else{
-            params.orgId = this.setting.orgId
-            finsystenant.add(params).then(res => {
+            });
+          } else {
+            params.orgId = this.setting.orgId;
+            finsystenant.add(params).then((res) => {
               if (res) {
-                this.$message.success('淇濆瓨鎴愬姛锛�')
-                this.close()
-                this.$emit('search')
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
               } else {
-                this.$message.error('淇濆瓨澶辫触')
+                this.$message.error('淇濆瓨澶辫触');
               }
-            })
+            });
           }
         } else {
-          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��')
+          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��');
         }
-      })
-    }
-  }
-}
+      });
+    },
+  },
+};
 </script>
diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue
index 54f2d7d..97040e4 100644
--- a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue
+++ b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue
@@ -10,11 +10,17 @@
           <el-row style="margin-top: 15px">
             <el-col>
               <!--鍒楄〃-->
-              <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
+              <my-table-v2 ref="myTable" :filter="filterFrom" :table="table" />
             </el-col>
           </el-row>
           <!--娣诲姞/缂栬緫寮圭獥-->
-          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
+          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search" />
+          <inventory
+            v-if="inventorySetting.show"
+            :setting="inventorySetting"
+            @close="inventorySetting.show = false"
+            @search="search"
+          />
         </el-card>
       </el-container>
     </el-container>
@@ -27,17 +33,18 @@
 </template>
 
 <script>
-import MyTableV2 from "@/components/myTable/myTableV2";
-import MyButton from "@/components/myButton/myButton";
+import MyTableV2 from '@/components/myTable/myTableV2';
+import MyButton from '@/components/myButton/myButton';
 import SettingIplatform from '@/utils/settingIplatform';
-import edit from './edit'
-import * as finsystenant from '@/api/baseSetting/finsystenant'
-import myImport from '@/views/components/myImport'
-import {getBaseUrl} from '@/utils/base';
+import edit from './edit';
+import inventory from './inventory';
+import * as finsystenant from '@/api/baseSetting/finsystenant';
+import myImport from '@/views/components/myImport';
+import { getBaseUrl } from '@/utils/base';
 
 export default {
-  name: "index",
-  components: {MyButton, MyTableV2, edit, myImport},
+  name: 'index',
+  components: { MyButton, MyTableV2, edit, myImport, inventory },
   data() {
     return {
       // 鎼滅储妗�
@@ -47,31 +54,14 @@
           dataIndex: 'name',
           label: '鐩樼偣鍗曞彿',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
         },
-        // {
-        //   type: 'select',
-        //   dataIndex: 'status',
-        //   label: '绫诲瀷',
-        //   placeholder: '璇烽�夋嫨',
-        //   defaultValue: '1',
-        //   options: [
-        //     {
-        //       label: '鍚敤',
-        //       value: '1'
-        //     },
-        //     {
-        //       label: '绂佺敤',
-        //       value: '0'
-        //     }
-        //   ]
-        // },
         {
           type: 'text',
           dataIndex: 'name',
           label: '浠诲姟鍚嶇О',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
         },
       ],
       // 鏍戞暟鎹�
@@ -81,27 +71,33 @@
         tenantId: null,
         userName: null,
         userPhone: null,
-        status: 1
+        status: 1,
       },
       // 瀵煎叆
       importSetting: {
-          dialogTitle: '瀵煎叆',
-          dialogShow: false,
-          fileSettings: {
-              data: {},
-              uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃
-              accept: '.xls', // 鏍煎紡
-              type: 'text', // 鍥炴樉褰㈠紡
-              loading: false // 瀵煎叆鏁堟灉
-          },
-          /* 妯℃澘涓嬭浇 */
-          templateSettings: {
-              templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
-              templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃
-          },
-          onSuccess: null
+        dialogTitle: '瀵煎叆',
+        dialogShow: false,
+        fileSettings: {
+          data: {},
+          uploadUrl: getBaseUrl() + '/pc/fin/sys/tenant/import', // 涓婁紶鍦板潃
+          accept: '.xls', // 鏍煎紡
+          type: 'text', // 鍥炴樉褰㈠紡
+          loading: false, // 瀵煎叆鏁堟灉
+        },
+        /* 妯℃澘涓嬭浇 */
+        templateSettings: {
+          templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
+          templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate', // 涓嬭浇鍦板潃
+        },
+        onSuccess: null,
       },
       editSetting: {
+        title: '',
+        id: '',
+        orgId: '',
+        show: false,
+      },
+      inventorySetting: {
         title: '',
         id: '',
         orgId: '',
@@ -114,36 +110,51 @@
         url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃
         // 宸ュ叿鏉�
         tools: {
-          columnsCtrl: {// 鍒楁帶鍒舵寜閽�
-            show: false
+          columnsCtrl: {
+            // 鍒楁帶鍒舵寜閽�
+            show: false,
           },
-          generalExport: {// 閫氱敤瀵煎嚭鎸夐挳
-            show: false
+          generalExport: {
+            // 閫氱敤瀵煎嚭鎸夐挳
+            show: false,
           },
           // 鑷畾涔夊伐鍏锋潯鎸夐挳
           custom: [
-          ]
+            {
+              name: '鏂板',
+              click: () => {
+                this.showAdd();
+              },
+            },
+          ],
         },
         // 鍒椾俊鎭�
         columns: [
-          {title: '鐩樼偣鍗曞彿', field: 'name', align: 'left',},
-          {title: '浠诲姟鍚嶇О', field: 'code', align: 'center'},
-          {title: '鐩樼偣浠撳簱', field: 'lv', align: 'center', },
-          {title: '鐩樼偣浜�', field: 'lv', align: 'center', },
-          {title: '鐩戠洏浜�', field: 'summary', align: 'left',},
-          {title: '鐩樼偣鏃堕棿', field: 'summary', align: 'left',},
-          {title: '鍒涘缓鏃堕棿', field: 'summary', align: 'left',},
-          {title: '鐘舵��', field: 'summary', align: 'left',},
-        ],   
+          { title: '鐩樼偣鍗曞彿', field: 'name', align: 'left' },
+          { title: '浠诲姟鍚嶇О', field: 'code', align: 'center' },
+          { title: '鐩樼偣浠撳簱', field: 'lv', align: 'center' },
+          { title: '鐩樼偣浜�', field: 'lv', align: 'center' },
+          { title: '鐩戠洏浜�', field: 'summary', align: 'left' },
+          { title: '鐩樼偣鏃堕棿', field: 'summary', align: 'left' },
+          { title: '鍒涘缓鏃堕棿', field: 'summary', align: 'left' },
+          { title: '鐘舵��', field: 'summary', align: 'left' },
+        ],
         // 鎿嶄綔淇℃伅
         operation: {
           show: true, // 鏄剧ず鎿嶄綔鍒�
           width: '150', // 鍒楀
           attr: [
             {
-              title: '璇︽儏',
+              title: '缂栬緫',
               events: (row) => {
                 this.showAudit(row);
+              },
+            },
+            {
+              title: '鐩樼偣',
+              type:'success',
+              events: (row) => {
+                this.showInventory(row);
               },
             },
           ],
@@ -155,79 +166,73 @@
             small: false,
             pageNum: 1,
             pageSize: 10,
-            total: 0
-          }
-        }
+            total: 0,
+          },
+        },
       },
-    }
+    };
   },
   created() {
     // 鑾峰彇鏈烘瀯鏍�
-    this.initTreeData()
+    this.initTreeData();
   },
   methods: {
     //瀵煎叆
     importOrg() {
-        this.importSetting.dialogShow = true
-        this.importSetting.onSuccess = (response, callBack) => {
-            if (response.code===1){
-              this.$message.success(response.msg)
-              this.search(1)
-            }else{
-              this.$message.warning(response.msg)
-            }
-            callBack()
+      this.importSetting.dialogShow = true;
+      this.importSetting.onSuccess = (response, callBack) => {
+        if (response.code === 1) {
+          this.$message.success(response.msg);
+          this.search(1);
+        } else {
+          this.$message.warning(response.msg);
         }
+        callBack();
+      };
     },
     // 宸︿晶鏍戝垵濮嬪寲
     initTreeData() {
-      finsystenant.getTree().then(res => {
-        const content = res || []
-        this.treeDataList.splice(0, this.treeDataList.length)
-        this.treeDataList = content
+      finsystenant.getTree().then((res) => {
+        const content = res || [];
+        this.treeDataList.splice(0, this.treeDataList.length);
+        this.treeDataList = content;
         if (content.length > 0) {
-          this.importSetting.fileSettings.data = {pid: content[0].id}
+          this.importSetting.fileSettings.data = { pid: content[0].id };
         }
-      })
+      });
     },
     updState(row) {
-      let vm = this
-      let text = row.status == 0 ? "鍚敤" : "绂佺敤";
+      let vm = this;
+      let text = row.status == 0 ? '鍚敤' : '绂佺敤';
       vm.$modal.confirm('纭瑕�' + text + '"' + row.name + '"鍚楋紵').then(function () {
-        let params = Object.assign({}, row)
-        params.status = row.status == 1 ? 0 : 1
-        finsystenant.edit(params).then(res => {
+        let params = Object.assign({}, row);
+        params.status = row.status == 1 ? 0 : 1;
+        finsystenant.edit(params).then((res) => {
           if (res) {
-            row.status = row.status === 1 ? 0 : 1
-            vm.$modal.msgSuccess(text + "鎴愬姛");
-            vm.search()
+            row.status = row.status === 1 ? 0 : 1;
+            vm.$modal.msgSuccess(text + '鎴愬姛');
+            vm.search();
           }
-        })
-      })
+        });
+      });
     },
     del(row) {
       this.$modal
         .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�')
         .then(function () {
-          finsystenant.del({id: row.id}).then((res) => {
-          });
+          finsystenant.del({ id: row.id }).then((res) => {});
         })
         .then((res) => {
           this.$message.success('鍒犻櫎鎴愬姛锛�');
-          this.search()
+          this.search();
         })
-        .catch(() => {
-        });
+        .catch(() => {});
     },
     showAdd() {
-      // if (!this.editSetting.orgId) {
-      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
-      // } else {
-        this.editSetting.id = null;
-        this.editSetting.info = null;
-        this.editSetting.title = '鏂板';
-        this.editSetting.show = true;
-      // }
+      this.editSetting.id = null;
+      this.editSetting.info = null;
+      this.editSetting.title = '鏂板';
+      this.editSetting.show = true;
     },
     showAudit(row) {
       this.editSetting.id = row.id;
@@ -235,38 +240,45 @@
       this.editSetting.title = '缂栬緫';
       this.editSetting.show = true;
     },
+    showInventory(row) {
+      this.inventorySetting.id = row.id;
+      this.inventorySetting.info = JSON.stringify(row);
+      this.inventorySetting.title = '鐩樼偣';
+      this.inventorySetting.show = true;
+    },
     nodeClick(param) {
-      param = param || {}
-      this.p = Object.assign({}, {
-        id: param.id,
-        name: param.name
-      })
+      param = param || {};
+      this.p = Object.assign(
+        {},
+        {
+          id: param.id,
+          name: param.name,
+        },
+      );
       if (this.p.id != undefined && this.p.id != null) {
-        this.filterFrom.tenantId = this.p.id
-        this.editSetting.orgId = this.p.id
+        this.filterFrom.tenantId = this.p.id;
+        this.editSetting.orgId = this.p.id;
       } else {
-        this.filterFrom.tenantId = null
-        this.editSetting.orgId = null
+        this.filterFrom.tenantId = null;
+        this.editSetting.orgId = null;
       }
-      this.importSetting.fileSettings.data = {pid: param.id}
-      this.search(1)
+      this.importSetting.fileSettings.data = { pid: param.id };
+      this.search(1);
     },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
       if (pageNum != undefined) {
-        this.$refs.myTable.search(pageNum)
+        this.$refs.myTable.search(pageNum);
       } else {
-        this.$refs.myTable.search()
+        this.$refs.myTable.search();
       }
     },
     fifterForm(params) {
-      this.filterFrom = Object.assign(this.filterFrom, params)
-      this.search(1)
-    }
-  }
-}
+      this.filterFrom = Object.assign(this.filterFrom, params);
+      this.search(1);
+    },
+  },
+};
 </script>
 
-<style scoped>
-
-</style>
+<style scoped></style>
diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue b/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue
new file mode 100644
index 0000000..ff242e6
--- /dev/null
+++ b/admin-web/src/views/stock/inventorycount/inventorytask/inventory.vue
@@ -0,0 +1,80 @@
+<template>
+  <win-md :title="setting.title" @close="close" :width="'1200px'">
+    <el-row :gutter="20" style="margin-bottom: 20px" type="flex" align="middle">
+      <el-col :span="6">鐩樼偣鍗曞彿锛歿{ formData.businessFormCode }}</el-col>
+      <el-col :span="6">鐩樼偣浠诲姟锛歿{ formData.businessTaskCode }}</el-col>
+      <el-col :span="6">鐩樼偣浠撳簱锛歿{ formData.warehouseId }}</el-col>
+      <el-col :span="3" :offset="3">
+        <my-button name="瀵煎嚭鐩樼偣鍗�" site="form" size="medium" type="primary" />
+      </el-col>
+    </el-row>
+    <el-table v-loading="loading" :data="formData.tableData" height="100%" :stripe="true" class="the-table">
+      <el-table-column prop="goodsTemplateName" label="鐗╁搧鍚嶇О"> </el-table-column>
+      <el-table-column prop="baseGoodsModelsId" label="鍨嬪彿" align="center"> </el-table-column>
+      <el-table-column prop="classification" label="绫诲埆"> </el-table-column>
+      <el-table-column prop="unit" label="鍗曚綅" align="center"> </el-table-column>
+      <el-table-column prop="kc" label="搴旀湁搴撳瓨" align="center"> </el-table-column>
+      <el-table-column prop="price" label="鍗曚环" align="center"> </el-table-column>
+      <el-table-column prop="inventoryResult" label="閲戦" align="center"> </el-table-column>
+      <el-table-column prop="inventoryCounts" label="瀹炵洏鏁伴噺" align="center">
+        <template slot-scope="scope">
+            <el-input v-model="scope.row.inventoryCounts"></el-input>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <div slot="footer" align="center" class="dialog-footer">
+      <my-button name="鏆傚瓨" site="form" type="primary" @click="close" />
+      <my-button name="瀹屾垚鐩樼偣" site="form" type="success" @click="save" />
+    </div>
+  </win-md>
+</template>
+
+<script>
+import winMd from '@/components/win/win-md';
+import myButton from '@/components/myButton/myButton';
+export default {
+  components: { winMd, myButton },
+  props: {
+    setting: {
+      type: Object,
+      default: () => {},
+    },
+  },
+  data() {
+    return {
+      loading: false,
+      formData: {
+        businessFormCode: '2023080812',
+        businessTaskCode: '2023骞�9鏈堢洏鐐瑰崟',
+        warehouseId: '寮�灏佸競浠撳簱',
+        tableData: [],
+      },
+    };
+  },
+  created() {
+    for (let i = 0; i < 10; i++) {
+      this.formData.tableData.push({
+        goodsTemplateName: '鏂戒箰榛戣壊纰崇矇',
+        baseGoodsModelsId: '鏂戒箰c2201',
+        classification: 'A',
+        unit: '濂�',
+        kc: 10,
+        price: 20,
+        inventoryResult: 200,
+        inventoryCounts: 0,
+      });
+    }
+  },
+  methods: {
+    close() {
+      this.$emit('close');
+    },
+    save() {
+
+    }
+  },
+};
+</script>
+
+<style></style>
diff --git a/admin-web/src/views/stock/procure/purchaseOrder/detail.vue b/admin-web/src/views/stock/procure/purchaseOrder/detail.vue
index 35f7d41..d98bfd2 100644
--- a/admin-web/src/views/stock/procure/purchaseOrder/detail.vue
+++ b/admin-web/src/views/stock/procure/purchaseOrder/detail.vue
@@ -1,15 +1,5 @@
 <template>
-  <el-dialog
-    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-detail" :title="setting.title" @close="close" :width="'800px'">
     <el-row :gutter="20">
       <el-col :span="8">
         <span>鍏ュ簱鍗曞彿锛�</span>
@@ -17,17 +7,17 @@
       </el-col>
       <el-col :span="8">
         <span>鍏ュ簱浠撳簱锛�</span>
-        <span>{{ detail.goodsTemplateName }}</span>
+        <span>{{ detail.warehouseName }}</span>
       </el-col>
       <el-col :span="8">
         <span>鎵�灞炴満鏋勶細</span>
-        <span>{{ detail.agencyId }}</span>
+        <span>{{ detail.agencyName }}</span>
       </el-col>
     </el-row>
     <el-row :gutter="20" style="margin-top: 20px">
       <el-col :span="8">
         <span>鐘舵�侊細</span>
-        <span>{{ detail.states==1?'寰呭叆搴�':'宸插叆搴�' }}</span>
+        <span>{{ detail.states == 1 ? '寰呭叆搴�' : '宸插叆搴�' }}</span>
       </el-col>
       <el-col :span="8">
         <span>鍒涘缓浜猴細</span>
@@ -35,34 +25,42 @@
       </el-col>
       <el-col :span="8">
         <span>鍏ュ簱鏃堕棿锛�</span>
-        <span>{{ detail.time }}</span>
+        <span>{{ detail.incomeTime | formatTime }}</span>
+      </el-col>
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px">
+      <el-col class="img-row" :span="12">
+        <span>閲囪喘绫诲瀷锛�</span>
+        <span>{{ detail.buyType == 1 ? '闆嗛噰' : '鑷噰' }}</span>
       </el-col>
     </el-row>
     <el-row :gutter="20" style="margin-top: 20px">
       <el-col class="img-row" :span="24">
         <span>閲囪喘鎵嬬画鐓х墖锛�</span>
-        <div class="img-box"></div>
+        <div class="img-box" v-for="(item, index) in fileList" :key="index" @click="handlePreview(item)">
+          <img class="img" :src="getUrl(item.path)" alt="" />
+        </div>
       </el-col>
     </el-row>
     <div class="goods-card" v-for="(goodsItem, goodsIndex) in detail.procureGoods" :key="goodsIndex">
       <el-row :gutter="20">
         <el-col :span="8">
           <span>鐗╁搧鍒嗙被锛�</span>
-          <span>{{ goodsItem.baseCategoryId }}</span>
+          <span>{{ goodsItem.baseCategoryName }}</span>
         </el-col>
         <el-col :span="8">
           <span>鐗╁搧鍚嶇О锛�</span>
-          <span>{{ goodsItem.baseGoodsTemplateId }}</span>
+          <span>{{ goodsItem.goodsTemplateName }}</span>
         </el-col>
         <el-col :span="8">
           <span>渚涜揣鍟嗭細</span>
           <span>{{ goodsItem.supplier }}</span>
         </el-col>
       </el-row>
-      <el-table :data="goodsItem.models" :stripe="true" style="margin-top: 20px;">
-        <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center">
+      <el-table :data="goodsItem.models" :stripe="true" style="margin-top: 20px">
+        <el-table-column prop="baseGoodsModelsName" label="瑙勬牸鍨嬪彿" align="center">
           <template slot-scope="scope">
-            {{ scope.row.baseGoodsModelsId }}
+            {{ scope.row.baseGoodsModelsName }}
           </template>
         </el-table-column>
         <el-table-column label="鍗曚綅" align="center">
@@ -70,78 +68,145 @@
             {{ scope.row.unit }}
           </template>
         </el-table-column>
-        <el-table-column prop="price" label="鐜版湁搴撳瓨" align="center">
+        <el-table-column prop="price" label="鍗曚环" align="center">
           <template slot-scope="scope">
-            <el-input v-model="scope.row.price"></el-input>
+            {{ scope.row.price }}
           </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 v-model="scope.row.counts"></el-input>
+            {{ scope.row.counts }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="counts" label="閲戦" align="center">
+          <template slot-scope="scope">
+            {{ (scope.row.price * scope.row.counts).toFixed(2) }}
           </template>
         </el-table-column>
       </el-table>
     </div>
-  </el-dialog>
+    <div id="uploadPreviewImages" style="display: none">
+      <span v-for="(src, index) in fileList" :key="index">
+        <img
+          v-if="checkImg(src.name)"
+          class="v-img"
+          :src="src.url"
+          :alt="src.name"
+          style="width: 100px; height: 100px"
+        />
+      </span>
+    </div>
+  </win-md>
 </template>
 <script>
-import {
-  procureDetail,
-} from '@/api/stock/procure/purchaseOrder';
+import { procureDetail } from '@/api/stock/procure/purchaseOrder';
+import winMd from '@/components/win/win-md';
+import * as DateFormatter from '@/utils/DateFormatter';
+import { getDownUrl } from '@/utils/base';
+import Viewer from 'viewerjs';
+import 'viewerjs/dist/viewer.css';
+
+let viewer = null;
+
 export default {
+  components: { winMd },
+
+  props: {
+    setting: {
+      type: Object,
+      default: () => {},
+    },
+  },
   data() {
     return {
-      visible: false,
+      fileList: [],
       detail: {
-        businessFormCode:'',
-        goodsTemplateName:'',
-        agencyId:'',
-        states:'',
-        createName:'',
-        time:'',
-        procureGoods:[{},{}]
+        baseCategoryName: '',
+        businessFormCode: '',
+        goodsTemplateName: '',
+        procureDoc: '',
+        agencyId: '',
+        agencyName: '',
+        states: '',
+        createName: '',
+        time: '',
+        procureGoods: [{}, {}],
+        fileKey: Math.random(),
       },
     };
   },
+  filters: {
+    formatTime(time) {
+      if (!time) return;
+      return DateFormatter.LongToDateTime(time);
+    },
+  },
+  created() {
+    procureDetail({ id: this.setting.id }).then((res) => {
+      this.detail = res;
+      this.fileList = this.detail.procureDoc ? JSON.parse(this.detail.procureDoc) : [];
+      this.$nextTick(() => {
+        this.initPreviewImg();
+      });
+    });
+  },
   methods: {
-    open(id) {
-      this.visible = true;
-      procureDetail({ id }).then(res=>{
-        this.detail = res
-      })
+    initPreviewImg() {
+      if (viewer != null) {
+        viewer.destroy();
+      }
+      const ViewerDom = document.querySelector('#uploadPreviewImages');
+      viewer = new Viewer(ViewerDom, {});
+    },
+    handlePreview(file) {
+      if (!this.checkImg(file.name)) {
+        return false;
+      }
+      let index = 0;
+      for (let i = 0; i < this.fileList.length; i++) {
+        const f = this.fileList[i];
+        if (this.checkImg(f.name)) {
+          if (file.id == f.id) {
+            break;
+          }
+          index++;
+        }
+      }
+      // this.fileList.forEach((f, i) => {
+      //   if (file.uid == f.uid) {
+      //     index = i
+      //   }
+      // })
+      // document.querySelector('#uploadPreviewImages').children[0].click()
+      viewer.view(index);
+    },
+    checkImg(name) {
+      const suffix = name.substring(name.lastIndexOf('.'), name.length);
+      const imgArray = ['.jpg', '.jpeg', '.png', '.bmp'];
+      if (imgArray.indexOf(suffix) < 0) {
+        return false;
+      }
+      return true;
+    },
+    getUrl(path) {
+      if (path.substr(0, 7).toLowerCase() == 'http://' || path.substr(0, 8).toLowerCase() == 'https://') {
+        return path;
+      } else {
+        return getDownUrl() + path;
+      }
     },
     close() {
-      this.visible = false;
+      this.$emit('close');
     },
   },
 };
 </script>
 <style lang="scss" scoped>
-.img-row {
-  display: flex;
-  align-content: center;
+@import url(../../index.scss);
+.el-dialog {
+  z-index: 1100 !important;
 }
-.img-box {
-  display: inline-block;
-  width: 80px;
-  height: 80px;
-  background: #f9f9f9;
-  margin-right: 20px;
-  img {
-    width: 100%;
-  }
-}
-
-.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;
-  }
+>>> .el-dialog {
+  z-index: 1100 !important;
 }
 </style>
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>
diff --git a/admin-web/src/views/stock/procure/purchaseOrder/index.vue b/admin-web/src/views/stock/procure/purchaseOrder/index.vue
index 826f06f..d0deb5a 100644
--- a/admin-web/src/views/stock/procure/purchaseOrder/index.vue
+++ b/admin-web/src/views/stock/procure/purchaseOrder/index.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="app-container">
+  <div class="app-container stock-container">
     <el-container>
       <el-card class="box-card" style="width: 100%" shadow="never">
         <!--鎼滅储鏉′欢-->
@@ -9,8 +9,10 @@
         <el-row style="margin-top: 15px">
           <el-col>
             <!--鍒楄〃-->
-            <my-button name="鏂板" @click="addtable" site="tools" size="medium" />
-            <my-button name="瀵煎叆" @click="importSetting.dialogShow = true" site="tools" size="medium" />
+            <div class="table-tool-bar" style="margin-bottom: 15px">
+              <my-button name="鏂板" @click="handleAdd" site="tools" size="medium" />
+              <my-button name="瀵煎叆" @click="importSetting.dialogShow = true" site="tools" size="medium" />
+            </div>
             <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading">
               <el-row class="card" :gutter="5">
                 <el-col v-for="(item, index) in list" :key="index" class="cm-item">
@@ -20,7 +22,9 @@
                         <div class="card-header-left">
                           <span>鍏ュ簱鍗曞彿锛�</span>
                           <span class="value">{{ item.businessFormCode }}</span>
-                          <div class="states" :class="item.states==1?'':'states-income'">{{ item.states == 1 ? '寰呭叆搴�' : '宸插叆搴�' }}</div>
+                          <div class="states" :class="item.states == 1 ? '' : 'states-success'">
+                            {{ item.states == 1 ? '寰呭叆搴�' : '宸插叆搴�' }}
+                          </div>
                         </div>
                         <div class="card-header-right">
                           <template v-if="item.states == 1">
@@ -47,20 +51,21 @@
                       <div class="one-hed">
                         <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.agencyId }}</div>
                         <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.buyerName }}</div>
-                        <div class="box"><span class="span-two">鍑哄簱鏃堕棿锛�</span>{{ item.procureTime }}</div>
-                        <div class="box"><span class="span-two">鍏ュ簱鏃堕棿锛�</span>{{ item.procureTime }}</div>
+                        <div class="box">
+                          <span class="span-two">閲囪喘鏃堕棿锛�</span>{{ item.procureTime | formatTime }}
+                        </div>
+                        <div class="box">
+                          <span class="span-two">鍏ュ簱鏃堕棿锛�</span>{{ item.incomeTime | formatTime }}
+                        </div>
                       </div>
                       <div class="card-end">
-                        <div v-for="(just, index) in item.models" :key="index" class="item">
-                          <div class="name">{{ just.baseGoodsModelsId }}</div>
+                        <div v-for="(just, index) in item.fromProcureTemplateInfoList" :key="index" class="item">
+                          <div class="name">{{ just.goodsTemplateName }}</div>
                           <div class="value-box">
                             <div class="value-box-item">
                               <span class="label">鏁伴噺锛�</span>
-                              <span class="value">{{ just.counts }}</span>
-                            </div>
-                            <div class="value-box-item">
-                              <span class="label">閲戦锛�</span>
-                              <span class="value">{{ just.price }}</span>
+                              <span class="value">{{ just.count }}</span>
+                              <span class="unit">{{ just.unit }}</span>
                             </div>
                           </div>
                         </div>
@@ -85,8 +90,19 @@
       </el-card>
     </el-container>
     <!--娣诲姞/缂栬緫寮圭獥-->
-    <edit ref="editRef"></edit>
-    <detail ref="detailRef"></detail>
+    <edit
+      v-if="editSetting.show"
+      :setting="editSetting"
+      ref="editRef"
+      @close="editSetting.show = false"
+      @search="refreshData"
+    ></edit>
+    <detail
+      v-if="detailSetting.show"
+      :setting="detailSetting"
+      @close="detailSetting.show = false"
+      ref="detailRef"
+    ></detail>
     <my-import
       :import-setting="importSetting"
       :dialog-show="importSetting.dialogShow"
@@ -97,12 +113,14 @@
 
 <script>
 import { procureList, procureDel, procureIncome } from '@/api/stock/procure/purchaseOrder';
+import { getTree } from '@/api/baseSetting/finsystenant';
 import MyButton from '@/components/myButton/myButton';
 import SettingIplatform from '@/utils/settingIplatform';
 import myImport from '@/views/components/myImport';
 import edit from './edit';
 import detail from './detail';
 import { getBaseUrl } from '@/utils/base';
+import * as DateFormatter from '@/utils/DateFormatter';
 
 export default {
   name: 'index',
@@ -112,16 +130,6 @@
       loading: false,
       adddialog: false,
       list: [],
-      formData: {
-        tableData: [
-          {
-            projectName: '555',
-          },
-          {
-            projectName: '444',
-          },
-        ],
-      },
       // 鎼滅储妗�
       items: [
         {
@@ -139,10 +147,11 @@
           defaultValue: '',
         },
         {
-          type: 'select',
-          dataIndex: 'name',
+          type: 'cascader',
+          dataIndex: 'agencyId',
           label: '鏈烘瀯',
           placeholder: '璇烽�夋嫨',
+          optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null },
           defaultValue: '',
           options: [],
         },
@@ -176,13 +185,13 @@
         },
         {
           type: 'date-picker',
-          dataIndex: 'val1',
+          dataIndex: 'incomeTimeStart',
           label: '鍏ュ簱鏃堕棿',
           defaultValue: '',
         },
         {
           type: 'date-picker',
-          dataIndex: 'val2',
+          dataIndex: 'incomeTimeEnd',
           label: '鑷�',
           defaultValue: '',
         },
@@ -220,6 +229,11 @@
         orgId: '',
         show: false,
       },
+      detailSetting: {
+        title: '璇︽儏',
+        id: '',
+        show: false,
+      },
       pageNum: 1,
       pageSize: 10,
       total: 0,
@@ -228,6 +242,12 @@
   computed: {
     clientHeight() {
       return document.documentElement.clientHeight;
+    },
+  },
+  filters: {
+    formatTime(time) {
+      if (!time) return;
+      return DateFormatter.LongToDateTime(time);
     },
   },
   created() {
@@ -247,6 +267,7 @@
         console.log(this.list);
       });
     },
+
     //瀵煎叆
     importOrg() {
       this.importSetting.dialogShow = true;
@@ -261,61 +282,79 @@
       };
     },
     // 瀵煎嚭
-    handleExport() {
-
-    },
+    handleExport() {},
     // 鏂板
-    addtable() {
-      this.$refs.editRef.open();
+    handleAdd() {
+      this.editSetting.id = null;
+      this.editSetting.info = null;
+      this.editSetting.title = '鏂板';
+      this.editSetting.show = true;
     },
     // 缂栬緫
     handleEdit(row) {
-      this.$refs.editRef.open(row.id);
+      this.editSetting.id = row.id;
+      this.editSetting.info = null;
+      this.editSetting.title = '缂栬緫';
+      this.editSetting.show = true;
     },
     // 璇︽儏
     handleDetail(row) {
-      this.$refs.detailRef.open(row.id);
+      this.detailSetting.id = row.id;
+      this.detailSetting.show = true;
     },
     // 鍏ュ簱
     handleIncome(row) {
-      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  鍏ュ簱鍚�?`, '閲囪喘鍏ュ簱')
-        .then(function () {
-          procureIncome({ id: row.id }).then((res) => {
+      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  鍏ュ簱鍚�?`, '閲囪喘鍏ュ簱').then(() => {
+        procureIncome({ id: row.id })
+          .then((res) => {
             this.$message.success('鍏ュ簱鎴愬姛锛�');
-          });
-        })
-        .then((res) => {
-          this.search();
-        })
-        .catch(() => {});
+            this.search();
+          })
+          .catch(() => {});
+      });
     },
     del(row) {
-      this.$modal
-        .confirm('鏄惁纭鍒犻櫎鍏ュ簱鍗曞彿涓�"' + row.businessFormCode + '"鐨勬暟鎹悧锛�')
-        .then(function () {
-          procureDel({ id: row.id }).then((res) => {});
-        })
-        .then((res) => {
-          this.$message.success('鍒犻櫎鎴愬姛锛�');
-          this.search();
-        })
-        .catch(() => {});
+      this.$modal.confirm('鏄惁纭鍒犻櫎鍏ュ簱鍗曞彿涓�"' + row.businessFormCode + '"鐨勬暟鎹悧锛�').then( () => {
+        procureDel({ id: row.id })
+          .then((res) => {
+            this.$message.success('鍒犻櫎鎴愬姛锛�');
+            this.search();
+          })
+          .catch(() => {});
+      });
     },
     // 鍒嗛〉
     handleSizeChange(pageSize) {
       this.pageSize = pageSize;
-      this.search({ pageNum: 1 });
+      this.search(1);
     },
     handleCurrentChange(pageNum) {
-      this.myTable.paging.page.pageNum = pageNum;
-      this.search({ pageNum: pageNum });
+      this.pageNum = pageNum;
+      this.search(pageNum);
     },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
+      if (pageNum) {
+        this.pageNum = pageNum;
+      }
       this.fetchData();
+    },
+    refreshData() {
+      this.pageNum = 1;
+      this.pageSize = 10;
+      this.search();
     },
     fifterForm(params) {
       this.filterFrom = Object.assign(this.filterFrom, params);
+      if (this.filterFrom.incomeTimeStart) {
+        this.filterFrom.incomeTimeStart = this.filterFrom.incomeTimeStart.replace(/\-/g, '');
+      }
+      if (this.filterFrom.incomeTimeEnd) {
+        this.filterFrom.incomeTimeEnd = this.filterFrom.incomeTimeEnd.replace(/\-/g, '');
+      }
+      if (this.filterFrom.agencyId.length) {
+        this.filterFrom.agencyId = this.filterFrom.agencyId[this.filterFrom.agencyId.length - 1];
+      }
       this.search(1);
     },
   },
@@ -323,120 +362,5 @@
 </script>
 
 <style scoped lang="scss">
-.ml-20 {
-  margin-left: 20px;
-}
-.card {
-  display: flex;
-  flex-wrap: wrap;
-  margin: 0px !important;
-  .cm-item {
-    width: 100%;
-  }
-  .cm-item ::v-deep .el-card__body {
-    padding-bottom: 5px;
-  }
-}
-.card-data {
-  position: relative;
-  margin-top: 8px;
-  .card-container {
-    .card-header {
-      height: 48px;
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
-      background: #f3f9fe;
-      padding: 0 32px 0 15px;
-      box-sizing: border-box;
-    }
-    .card-header-left {
-      display: flex;
-      align-items: center;
-      color: #999999;
-      font-family: 'Microsoft YaHei UI';
-      font-size: 18px;
-      font-weight: 700;
-      .value {
-        color: #3d3d3d;
-      }
-
-      .states {
-        width: 54px;
-        height: 22px;
-        line-height: 22px;
-        text-align: center;
-        border-radius: 4px;
-        border: 1px solid #f9675b99;
-        background: #f9675b1a;
-        font-family: 'Microsoft YaHei';
-        color: #f9675b;
-        font-size: 13px;
-        font-style: normal;
-        font-weight: 400;
-        margin-left: 8px;
-      }
-      .states-income {
-        border: 1px solid #39ad6199;
-        background: #39ad610f;
-        color: #39ad61;
-      }
-    }
-    .one-hed {
-      margin-top: 15px;
-      padding: 0 32px 0 15px;
-      box-sizing: border-box;
-      .box {
-        display: inline-block;
-        margin-right: 20px;
-      }
-      .span-two {
-        color: #83919e;
-        font-size: 14px;
-      }
-    }
-    .card-end {
-      font-size: 14px;
-      color: #3d3d3d;
-      margin-top: 15px;
-      display: flex;
-      flex-wrap: wrap;
-      font-family: 'Microsoft YaHei UI';
-      padding: 0 16px;
-      box-sizing: border-box;
-      .item {
-        width: 379px;
-        height: 60px;
-        padding: 8px 12px 9px 12px;
-        box-sizing: border-box;
-        align-items: center;
-        gap: 8px;
-        flex-shrink: 0;
-        background: #f9f9f9;
-        margin-right: 15px;
-        margin-bottom: 15px;
-        &:last-child {
-          margin-right: 0;
-        }
-        .name {
-          height: 22px;
-          line-height: 22px;
-        }
-        .value-box {
-          display: flex;
-          .value-box-item {
-            margin-right: 20px;
-            .label {
-              color: #99999999;
-              line-height: 22px;
-            }
-            .value {
-              color: #ff3131;
-            }
-          }
-        }
-      }
-    }
-  }
-}
+@import url(../../index.scss);
 </style>
diff --git a/admin-web/src/views/stock/procure/receiptDetails/index.vue b/admin-web/src/views/stock/procure/receiptDetails/index.vue
index 494f54e..dd58717 100644
--- a/admin-web/src/views/stock/procure/receiptDetails/index.vue
+++ b/admin-web/src/views/stock/procure/receiptDetails/index.vue
@@ -10,11 +10,11 @@
           <el-row style="margin-top: 15px">
             <el-col>
               <!--鍒楄〃-->
-              <my-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
+              <my-table-v2 ref="myTable" :filter="filterFrom" :table="table" />
             </el-col>
           </el-row>
           <!--娣诲姞/缂栬緫寮圭獥-->
-          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
+          <detail v-if="detailSetting.show" :setting="detailSetting" @close="detailSetting.show = false" />
         </el-card>
       </el-container>
     </el-container>
@@ -27,58 +27,72 @@
 </template>
 
 <script>
-import MyTableV2 from "@/components/myTable/myTableV2";
-import MyButton from "@/components/myButton/myButton";
+import * as DateFormatter from '@/utils/DateFormatter';
+import MyTableV2 from '@/components/myTable/myTableV2';
+import MyButton from '@/components/myButton/myButton';
 import SettingIplatform from '@/utils/settingIplatform';
-import edit from './edit'
-import * as finsystenant from '@/api/baseSetting/finsystenant'
-import myImport from '@/views/components/myImport'
-import {getBaseUrl} from '@/utils/base';
+import detail from '../purchaseOrder/detail';
+import * as finsystenant from '@/api/baseSetting/finsystenant';
+import {goodsModel} from '@/api/stock/procure/purchaseOrder';
+import myImport from '@/views/components/myImport';
+import { getBaseUrl } from '@/utils/base';
 
 export default {
-  name: "index",
-  components: {MyButton, MyTableV2, edit, myImport},
+  name: 'index',
+  components: { MyButton, MyTableV2, detail, myImport },
   data() {
     return {
       // 鎼滅储妗�
       items: [
         {
           type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'businessFormCode',
           label: '鍗曞彿',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
+        },
+        {
+          type: 'text',
+          dataIndex: 'goodsTemplateName',
+          label: '鐗╁搧鍚嶇О',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: '',
         },
         {
           type: 'select',
-          dataIndex: 'status',
-          label: '绫诲瀷',
+          dataIndex: 'baseGoodsTemplateId',
+          label: '瑙勬牸鍨嬪彿',
           placeholder: '璇烽�夋嫨',
-          defaultValue: '1',
-          options: [
-            {
-              label: '鍚敤',
-              value: '1'
-            },
-            {
-              label: '绂佺敤',
-              value: '0'
-            }
-          ]
+          defaultValue: '',
+          options:[]
+        },
+        {
+          type: 'cascader',
+          dataIndex: 'agencyId',
+          label: '鏈烘瀯',
+          placeholder: '璇烽�夋嫨',
+          optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null },
+          defaultValue: '',
+          options: [],
         },
         {
           type: 'text',
-          dataIndex: 'name',
-          label: '鐗╁搧鍚嶇О',
-          placeholder: '璇疯緭鍏�',
-          defaultValue: ''
-        },
-        {
-          type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'buyerName',
           label: '鍒涘缓浜�',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
+        },
+        {
+          type: 'date-picker',
+          dataIndex: 'incomeTimeStart',
+          label: '鏃堕棿',
+          defaultValue: '',
+        },
+        {
+          type: 'date-picker',
+          dataIndex: 'incomeTimeEnd',
+          label: '鑷�',
+          defaultValue: '',
         },
       ],
       // 鏍戞暟鎹�
@@ -86,29 +100,28 @@
       // 鎼滅储鏉′欢
       filterFrom: {
         tenantId: null,
-        userName: null,
-        userPhone: null,
-        status: 1
+        agencyId:[],
+        status: 1,
       },
       // 瀵煎叆
       importSetting: {
-          dialogTitle: '瀵煎叆',
-          dialogShow: false,
-          fileSettings: {
-              data: {},
-              uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃
-              accept: '.xls', // 鏍煎紡
-              type: 'text', // 鍥炴樉褰㈠紡
-              loading: false // 瀵煎叆鏁堟灉
-          },
-          /* 妯℃澘涓嬭浇 */
-          templateSettings: {
-              templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
-              templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃
-          },
-          onSuccess: null
+        dialogTitle: '瀵煎叆',
+        dialogShow: false,
+        fileSettings: {
+          data: {},
+          uploadUrl: getBaseUrl() + '/pc/fin/sys/tenant/import', // 涓婁紶鍦板潃
+          accept: '.xls', // 鏍煎紡
+          type: 'text', // 鍥炴樉褰㈠紡
+          loading: false, // 瀵煎叆鏁堟灉
+        },
+        /* 妯℃澘涓嬭浇 */
+        templateSettings: {
+          templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
+          templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate', // 涓嬭浇鍦板潃
+        },
+        onSuccess: null,
       },
-      editSetting: {
+      detailSetting: {
         title: '',
         id: '',
         orgId: '',
@@ -118,30 +131,39 @@
       table: {
         showIndex: true, // 鏄惁鏄剧ず搴忓彿
         expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
-        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃
+        url: SettingIplatform.apiBaseURL + '/pc/whForm/procure/detail/list', // 璇锋眰鍦板潃
         // 宸ュ叿鏉�
         tools: {
-          columnsCtrl: {// 鍒楁帶鍒舵寜閽�
-            show: false
+          columnsCtrl: {
+            // 鍒楁帶鍒舵寜閽�
+            show: false,
           },
-          generalExport: {// 閫氱敤瀵煎嚭鎸夐挳
-            show: false
+          generalExport: {
+            // 閫氱敤瀵煎嚭鎸夐挳
+            show: false,
           },
           // 鑷畾涔夊伐鍏锋潯鎸夐挳
-          custom: [
-          ]
+          custom: [],
         },
         // 鍒椾俊鎭�
         columns: [
-          {title: '鍗曞彿', field: 'code', align: 'center'},
-          {title: '鐗╁搧鍚嶇О', field: 'lv', align: 'center', },
-          {title: '瑙勬牸鍨嬪彿', field: 'lv', align: 'center', },
-          {title: '鍗曚环', field: 'summary', align: 'left',},
-          {title: '鍏ュ簱鏁伴噺', field: 'summary', align: 'left',},
-          {title: '閲戦', field: 'summary', align: 'left',},
-          {title: '鎵�灞炴満鏋�', field: 'summary', align: 'left',},
-          {title: '鍒涘缓浜�', field: 'summary', align: 'left',},
-          {title: '鎿嶄綔鏃堕棿', field: 'summary', align: 'left',},
+          { title: '鍗曞彿', field: 'businessFormCode', align: 'center' },
+          { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'center' },
+          { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' },
+          { title: '鍗曚环', field: 'price', align: 'center' },
+          { title: '鍏ュ簱鏁伴噺', field: 'counts', align: 'center' },
+          { title: '閲戦', field: 'amount', align: 'center' },
+          { title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'center' },
+          { title: '鍒涘缓浜�', field: 'buyerName', align: 'center' },
+          {
+            title: '鎿嶄綔鏃堕棿',
+            field: 'procureTime',
+            align: 'center',
+            width: 160,
+            formatter: (row) => {
+              return { value: DateFormatter.LongToDateTime(row.procureTime) };
+            },
+          },
         ],
         // 鎿嶄綔淇℃伅
         operation: {
@@ -151,7 +173,7 @@
             {
               title: '璇︽儏',
               events: (row) => {
-                this.showAudit(row);
+                this.showDetail(row);
               },
             },
           ],
@@ -163,118 +185,95 @@
             small: false,
             pageNum: 1,
             pageSize: 10,
-            total: 0
-          }
-        }
+            total: 0,
+          },
+        },
       },
-    }
+    };
   },
   created() {
-    // 鑾峰彇鏈烘瀯鏍�
-    this.initTreeData()
+    // 鎼滅储妗嗚鏍煎瀷鍙�
+    goodsModel().then(res=>{
+      this.items.forEach(v=>{
+        if(v.label=='瑙勬牸鍨嬪彿'){
+          v.options = res.map(item=>{
+            item.label = item.modelName,
+            item.value = item.id
+            return item
+          })
+        }
+      })
+    })
   },
   methods: {
     //瀵煎叆
     importOrg() {
-        this.importSetting.dialogShow = true
-        this.importSetting.onSuccess = (response, callBack) => {
-            if (response.code===1){
-              this.$message.success(response.msg)
-              this.search(1)
-            }else{
-              this.$message.warning(response.msg)
-            }
-            callBack()
+      this.importSetting.dialogShow = true;
+      this.importSetting.onSuccess = (response, callBack) => {
+        if (response.code === 1) {
+          this.$message.success(response.msg);
+          this.search(1);
+        } else {
+          this.$message.warning(response.msg);
         }
-    },
-    // 宸︿晶鏍戝垵濮嬪寲
-    initTreeData() {
-      finsystenant.getTree().then(res => {
-        const content = res || []
-        this.treeDataList.splice(0, this.treeDataList.length)
-        this.treeDataList = content
-        if (content.length > 0) {
-          this.importSetting.fileSettings.data = {pid: content[0].id}
-        }
-      })
+        callBack();
+      };
     },
     updState(row) {
-      let vm = this
-      let text = row.status == 0 ? "鍚敤" : "绂佺敤";
+      let vm = this;
+      let text = row.status == 0 ? '鍚敤' : '绂佺敤';
       vm.$modal.confirm('纭瑕�' + text + '"' + row.name + '"鍚楋紵').then(function () {
-        let params = Object.assign({}, row)
-        params.status = row.status == 1 ? 0 : 1
-        finsystenant.edit(params).then(res => {
+        let params = Object.assign({}, row);
+        params.status = row.status == 1 ? 0 : 1;
+        finsystenant.edit(params).then((res) => {
           if (res) {
-            row.status = row.status === 1 ? 0 : 1
-            vm.$modal.msgSuccess(text + "鎴愬姛");
-            vm.search()
+            row.status = row.status === 1 ? 0 : 1;
+            vm.$modal.msgSuccess(text + '鎴愬姛');
+            vm.search();
           }
-        })
-      })
+        });
+      });
     },
     del(row) {
       this.$modal
         .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�')
         .then(function () {
-          finsystenant.del({id: row.id}).then((res) => {
-          });
+          finsystenant.del({ id: row.id }).then((res) => {});
         })
         .then((res) => {
           this.$message.success('鍒犻櫎鎴愬姛锛�');
-          this.search()
+          this.search();
         })
-        .catch(() => {
-        });
+        .catch(() => {});
     },
-    showAdd() {
-      // if (!this.editSetting.orgId) {
-      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
-      // } else {
-        this.editSetting.id = null;
-        this.editSetting.info = null;
-        this.editSetting.title = '鏂板';
-        this.editSetting.show = true;
-      // }
-    },
-    showAudit(row) {
-      this.editSetting.id = row.id;
-      this.editSetting.info = JSON.stringify(row);
-      this.editSetting.title = '缂栬緫';
-      this.editSetting.show = true;
-    },
-    nodeClick(param) {
-      param = param || {}
-      this.p = Object.assign({}, {
-        id: param.id,
-        name: param.name
-      })
-      if (this.p.id != undefined && this.p.id != null) {
-        this.filterFrom.tenantId = this.p.id
-        this.editSetting.orgId = this.p.id
-      } else {
-        this.filterFrom.tenantId = null
-        this.editSetting.orgId = null
-      }
-      this.importSetting.fileSettings.data = {pid: param.id}
-      this.search(1)
+    showDetail(row) {
+      this.detailSetting.id=row.businessId
+      this.detailSetting.title='璇︽儏'
+      this.detailSetting.show=true
     },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
       if (pageNum != undefined) {
-        this.$refs.myTable.search(pageNum)
+        this.$refs.myTable.search(pageNum);
       } else {
-        this.$refs.myTable.search()
+        this.$refs.myTable.search();
       }
     },
     fifterForm(params) {
-      this.filterFrom = Object.assign(this.filterFrom, params)
-      this.search(1)
-    }
-  }
-}
+      this.filterFrom = Object.assign(this.filterFrom, params);
+      if (this.filterFrom.incomeTimeStart) {
+        this.filterFrom.incomeTimeStart = this.filterFrom.incomeTimeStart.replace(/\-/g, '');
+      }
+      if (this.filterFrom.incomeTimeEnd) {
+        this.filterFrom.incomeTimeEnd = this.filterFrom.incomeTimeEnd.replace(/\-/g, '');
+      }
+      if (params.agencyId&&params.agencyId.length) {
+        this.filterFrom.agencyId = params.agencyId[params.agencyId.length - 1];
+      }
+      this.search(1);
+    },
+  },
+};
 </script>
 
-<style scoped>
-
-</style>
+<style scoped></style>
diff --git a/admin-web/src/views/stock/scrap/itemScrapping/detail.vue b/admin-web/src/views/stock/scrap/itemScrapping/detail.vue
new file mode 100644
index 0000000..c1b2bc7
--- /dev/null
+++ b/admin-web/src/views/stock/scrap/itemScrapping/detail.vue
@@ -0,0 +1,120 @@
+<template>
+  <el-dialog
+    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-detail"
+  >
+    <el-row :gutter="20">
+      <el-col :span="8">
+        <span>鍏ュ簱鍗曞彿锛�</span>
+        <span>{{ detail.businessFormCode }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>鍏ュ簱浠撳簱锛�</span>
+        <span>{{ detail.goodsTemplateName }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>鎵�灞炴満鏋勶細</span>
+        <span>{{ detail.agencyId }}</span>
+      </el-col>
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px">
+      <el-col :span="8">
+        <span>鐘舵�侊細</span>
+        <span>{{ detail.states == 1 ? '寰呭叆搴�' : '宸插叆搴�' }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>鍒涘缓浜猴細</span>
+        <span>{{ detail.buyerName }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>鍏ュ簱鏃堕棿锛�</span>
+        <span>{{ detail.time }}</span>
+      </el-col>
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px">
+      <el-col class="img-row" :span="24">
+        <span>閲囪喘鎵嬬画鐓х墖锛�</span>
+        <div class="img-box"></div>
+      </el-col>
+    </el-row>
+    <div class="goods-card" v-for="(goodsItem, goodsIndex) in detail.procureGoods" :key="goodsIndex">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <span>鐗╁搧鍒嗙被锛�</span>
+          <span>{{ goodsItem.baseCategoryId }}</span>
+        </el-col>
+        <el-col :span="8">
+          <span>鐗╁搧鍚嶇О锛�</span>
+          <span>{{ goodsItem.baseGoodsTemplateId }}</span>
+        </el-col>
+        <el-col :span="8">
+          <span>渚涜揣鍟嗭細</span>
+          <span>{{ goodsItem.supplier }}</span>
+        </el-col>
+      </el-row>
+      <el-table :data="goodsItem.models" :stripe="true" style="margin-top: 20px">
+        <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.baseGoodsModelsId }}
+          </template>
+        </el-table-column>
+        <el-table-column label="鍗曚綅" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.unit }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="price" label="鐜版湁搴撳瓨" align="center">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.price"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column prop="counts" label="鍑哄簱鏁伴噺" align="center">
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.counts"></el-input>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </el-dialog>
+</template>
+<script>
+import { procureDetail } from '@/api/stock/procure/purchaseOrder';
+export default {
+  data() {
+    return {
+      visible: false,
+      detail: {
+        businessFormCode: '',
+        goodsTemplateName: '',
+        agencyId: '',
+        states: '',
+        createName: '',
+        time: '',
+        procureGoods: [{}, {}],
+      },
+    };
+  },
+  methods: {
+    open(id) {
+      this.visible = true;
+      procureDetail({ id }).then((res) => {
+        this.detail = res;
+      });
+    },
+    close() {
+      this.visible = false;
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import url(../../index.scss);
+</style>
diff --git a/admin-web/src/views/stock/scrap/itemScrapping/edit.vue b/admin-web/src/views/stock/scrap/itemScrapping/edit.vue
new file mode 100644
index 0000000..7c48f51
--- /dev/null
+++ b/admin-web/src/views/stock/scrap/itemScrapping/edit.vue
@@ -0,0 +1,486 @@
+<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"
+  >
+    <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-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-date-picker
+                v-model="formData.procureTime"
+                type="datetime"
+                value="yyyy-MM-dd HH:mm:ss"
+                value-format="yyyyMMddHHmmss"
+                placeholder="璇烽�夋嫨鏃ユ湡"
+                style="width: 100%"
+              >
+              </el-date-picker>
+            </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>
+          </el-col>
+        </el-row>
+        <div class="goods-card" v-for="(goodsItem, goodsIndex) in formData.procureGoods" :key="goodsIndex">
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item
+                label="鐗╁搧鍒嗙被"
+                :prop="`procureGoods[${goodsIndex}].baseCategoryIds`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-cascader
+                  v-model="goodsItem.baseCategoryIds"
+                  :options="categoryOptions"
+                  :props="{ value: 'id' }"
+                  @change="categoryChange($event, goodsIndex)"
+                  style="width: 100%"
+                ></el-cascader>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item
+                label="鐗╁搧鍚嶇О"
+                :prop="`procureGoods[${goodsIndex}].baseGoodsTemplateId`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-select
+                  v-model="goodsItem.baseGoodsTemplateId"
+                  placeholder="璇峰厛鎷╃墿鍝佸垎绫�"
+                  filterable
+                  :disabled="!goodsItem.baseCategoryId"
+                  style="width: 100%"
+                  @change="goodsTemplateChange($event, goodsIndex)"
+                >
+                  <el-option
+                    v-for="item in goodsItem.goodsOptions"
+                    :key="item.id"
+                    :label="item.goodsName"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item
+                label="瑙勬牸鍨嬪彿"
+                :prop="`procureGoods[${goodsIndex}].modelsIds`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-select
+                  v-model="goodsItem.modelsIds"
+                  multiple
+                  placeholder="璇峰厛鎷╃墿鍝佸悕绉�"
+                  :disabled="!goodsItem.baseCategoryId"
+                  @change="modelChange($event, goodsIndex)"
+                  @remove-tag="modelRemoveTag($event, goodsIndex)"
+                  style="width: 100%"
+                >
+                  <el-option
+                    v-for="item in goodsItem.modelsOptions"
+                    :key="item.id"
+                    :label="item.modelName"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="渚涜揣鍟�" prop="supplier">
+                <el-input v-model="goodsItem.supplier" clearable maxlength="20" show-word-limit />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-table :data="goodsItem.models" :stripe="true">
+            <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center">
+              <template slot-scope="scope">
+                {{ getGoodsModelsName(scope.row.baseGoodsModelsId) }}
+              </template>
+            </el-table-column>
+            <el-table-column label="鍗曚綅" align="center">
+              <template slot-scope="scope">
+                {{ scope.row.unit }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="price" label="鍗曚环锛堝厓锛�" align="center">
+              <template slot-scope="scope">
+                <el-input type="number" v-model="scope.row.price"></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column prop="counts" label="閲囪喘鏁伴噺" align="center">
+              <template slot-scope="scope">
+                <el-input type="number" v-model="scope.row.counts"></el-input>
+              </template>
+            </el-table-column>
+          </el-table>
+          <div class="btn-group">
+            <el-button
+              v-if="formData.procureGoods.length > 1"
+              name="绉婚櫎"
+              type="danger"
+              plain
+              size="mini"
+              @click="removeGoods(goodsIndex)"
+              >绉婚櫎</el-button
+            >
+            <el-button
+              v-if="formData.procureGoods.length - 1 == goodsIndex"
+              name="鏂板鐗╁搧"
+              type="primary"
+              plain
+              size="mini"
+              @click="addGoods"
+              >鏂板鐗╁搧</el-button
+            >
+          </div>
+        </div>
+      </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>
+    </div>
+  </el-dialog>
+</template>
+<script>
+import {
+  goodsTemplate,
+  procureAdd,
+  procureEdit,
+  selectTenantWarehouse,
+  goodsModel,
+  procureDetail,
+} from '@/api/stock/procure/purchaseOrder';
+import { getTree } from '@/api/foudation/classification';
+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 SettingIplatform from '../../../../../public/static/config';
+
+export default {
+  components: { MyButton, winMd, upload },
+  props: {
+    title: {
+      type: String,
+      default: '閲囪喘鍏ュ簱',
+    },
+  },
+  data() {
+    return {
+      type: 'create',
+      visible: false,
+      loading: false,
+      warehouses: [], // 鍏ュ簱浠撳簱鍒楄〃
+      categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃
+      modelList: [], //鍨嬪彿鍒楄〃
+      formData: {
+        warehouseId: '', // 鍏ュ簱浠撳簱id
+        procureTime: '', // 閲囪喘鏃堕棿
+        procureGoods: [],
+      },
+      goodsItem: {
+        whFormProcureId: '', // 閲囪喘鍗旾D
+        baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍
+        baseCategoryId: '', // 鍒嗙被缂栧彿
+        baseGoodsTemplateId: '', // 鐗╁搧妯$増缂栧彿
+        goodsTemplateName: '', // 鐗╁搧妯$増鍚嶇О
+        supplier: '', // 渚涘簲鍟�
+        sort: '', // 鏄剧ず椤哄簭
+        goodsOptions: [], // 鐗╁搧鍒楄〃select
+        modelsOptions: [], //瑙勬牸鍨嬪彿select
+        models: [], // 鐗╁搧鍚嶇О
+        modelsIds: [], //瑙勬牸鍨嬪彿
+      },
+      modelsItem: {
+        baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿
+        price: 0, // 鍗曚环(閲囪喘闇�瑕侊紝璋冩嫧涓嶉渶瑕�)
+        counts: 0, // 鎿嶄綔鏁伴噺
+        supplier: '', // 渚涘簲鍟�
+        unit: null, //鍗曚綅
+      },
+      rules: {
+        warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        procureTime: [{ 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' }],
+      },
+
+      uploadSettings: {
+        title: '涓婁紶',
+        max: 20, // 鏈�澶уぇ灏忥紝鍗曚綅M
+        num: 2, // 鏀寔涓婁紶鍥剧墖涓暟
+        accept: '.jpg,.png', // 闄愬埗鏍煎紡
+        tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb`
+        uploadUrl: getUploadUrl(), // 涓婁紶璺緞
+        multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶
+        disabled: false, // 鏄惁绂佺敤
+        type: 'text', // text/picture
+      },
+    };
+  },
+  created() {},
+  methods: {
+    async open(id) {
+      this.getWarehouseList();
+      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);
+        this.formData = Object.assign(this.formData, detail);
+        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.getgoodsTemplate(item.baseCategoryId, index);
+          this.getgoodsModel(item.baseGoodsTemplateId, index);
+        });
+      } else {
+        this.type = 'create';
+        this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
+      }
+      this.visible = true;
+    },
+
+    // 鑾峰彇鍏ュ簱浠撳簱鍒楄〃
+    getWarehouseList() {
+      selectTenantWarehouse()
+        .then((res) => {
+          this.warehouses = res;
+          if (this.warehouses.length && !this.formData.warehouseId) {
+            // 榛樿閫変腑绗竴涓粨搴�
+            this.formData.warehouseId = this.warehouses[0].id;
+          }
+        })
+        .catch((err) => {
+          console.log('err', err);
+        });
+    },
+
+    removeEmptyChildren(arr) {
+      arr.forEach((item) => {
+        if (!item.children || !item.children.length) {
+          delete item.children;
+        } else {
+          this.removeEmptyChildren(item.children);
+        }
+      });
+      return arr;
+    },
+
+    // 鑾峰彇鐗╁搧鍚嶇О鍒楄〃
+    getgoodsTemplate(id, index) {
+      goodsTemplate({ categoryId: id || '' }).then((res) => {
+        if (index || index == 0) {
+          this.$set(this.formData.procureGoods[index], 'goodsOptions', res);
+        }
+      });
+    },
+
+    // 瑙勬牸鍨嬪彿
+    getgoodsModel(id, index) {
+      goodsModel({ goodsTemplatesId: id || '' }).then((res) => {
+        if (index || index == 0) {
+          this.$set(this.formData.procureGoods[index], 'modelsOptions', res);
+        } else {
+          this.goodsModelAll = res;
+        }
+      });
+    },
+
+    // 鏍规嵁瑙勬牸鍨嬪彿id鑾峰彇鍚嶅瓧
+    getGoodsModelsName(id) {
+      let item = this.goodsModelAll.find((v) => v.id == id);
+      if (item) {
+        return item.modelName;
+      }
+      return;
+    },
+
+    // 鐗╁搧鍒嗙被閫夋嫨
+    categoryChange(e, index) {
+      this.formData.procureGoods[index].goodsOptions = []
+      this.formData.procureGoods[index].baseGoodsTemplateId = ''
+      this.formData.procureGoods[index].goodsTemplateName = ''
+
+      this.formData.procureGoods[index].baseCategoryId = e[e.length - 1];
+      // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃
+      this.getgoodsTemplate(e[e.length - 1], index);
+    },
+
+    // 鐗╁搧鍚嶇О鍒楄〃
+    goodsTemplateChange(e, index) {
+      this.formData.procureGoods[index].modelsOptions = []
+      this.formData.procureGoods[index].modelsIds = []
+      this.formData.procureGoods[index].models = []
+
+      this.formData.goodsTemplateName = this.getGoodsModelsName(e)
+      // 鏍规嵁閫変腑鐗╁搧鍚嶇Оid鑾峰彇瑙勬牸鍨嬪彿鍒楄〃
+      this.getgoodsModel(e, index);
+    },
+
+    // 瑙勬牸鍨嬪彿閫夋嫨
+    modelChange(e, index) {
+      let arr = [...this.formData.procureGoods[index].models];
+      let str = JSON.stringify(arr);
+      e.forEach((item) => {
+        if (str.indexOf(item) == -1) {
+          let temp = this.goodsModelAll.find((v) => v.id == item);
+          arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit });
+        }
+      });
+      this.formData.procureGoods[index].models = arr;
+    },
+
+    // 瑙勬牸鍨嬪彿绉婚櫎
+    modelRemoveTag(e, index) {
+      let arr = this.formData.procureGoods[index].models;
+      let delIndex = arr.findIndex((v) => v.baseGoodsModelsId == e);
+      this.formData.procureGoods[index].models.splice(delIndex, 1);
+    },
+
+    // 涓婁紶
+    uploadChange(e) {
+      console.log('uploadChange', e);
+    },
+
+    // 鐐瑰嚮鏂板鐗╁搧
+    addGoods() {
+      this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
+    },
+
+    // 鐐瑰嚮绉婚櫎
+    removeGoods(index) {
+      this.formData.procureGoods.splice(index, 1);
+    },
+
+    // 鎻愪氦
+    handleSubmit() {
+      this.$refs['ruleForm'].validate((valid) => {
+        if (valid) {
+          console.log('this.formData', this.formData);
+          if (this.type == 'create') {
+            procureAdd(this.formData)
+              .then((res) => {
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
+              })
+              .catch((err) => {
+                console.log('create err', err);
+                this.$message.error('淇濆瓨澶辫触');
+              });
+          } else {
+            procureEdit(this.formData)
+              .then((res) => {
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
+              })
+              .catch((err) => {
+                console.log('edit err', err);
+                this.$message.error('淇濆瓨澶辫触');
+              });
+          }
+        } else {
+          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��');
+        }
+      });
+    },
+
+    close() {
+      this.formData ={
+        warehouseId: '', // 鍏ュ簱浠撳簱id
+        procureTime: '', // 閲囪喘鏃堕棿
+        procureGoods: [],
+      }
+      this.visible = false;
+    },
+
+    // 閫氳繃瀛愰泦id鏌ュ埌鎵�浠ョ浉鍏崇埗绾d骞惰繑鍥炴暟缁�
+    findParentIds(dataSource, nodeId) {
+      const parentIds = []; // 鐢ㄤ簬瀛樺偍鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
+
+      // 瀹氫箟涓�涓�掑綊鍑芥暟锛岀敤浜庨亶鍘嗘暣妫垫爲骞舵煡鎵惧瓙鑺傜偣鐨勬墍鏈夌埗鑺傜偣
+      function traverse(node, nodeId) {
+        if (node.id === nodeId) {
+          // 濡傛灉褰撳墠鑺傜偣鐨処D绛変簬瀛愯妭鐐圭殑ID锛屽垯琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣锛屽彲浠ュ紑濮嬪悜涓婃煡鎵剧埗鑺傜偣
+          return true; // 杩斿洖true琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣
+        }
+
+        if (node.children) {
+          // 濡傛灉褰撳墠鑺傜偣鏈夊瓙鑺傜偣锛屽垯缁х画閬嶅巻瀛愯妭鐐�
+          for (const childNode of node.children) {
+            if (traverse(childNode, nodeId)) {
+              // 濡傛灉鍦ㄥ瓙鑺傜偣涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欏皢褰撳墠鑺傜偣鐨処D娣诲姞鍒扮埗鑺傜偣ID鏁扮粍涓紝骞惰繑鍥瀟rue琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣
+              parentIds.push(node.id);
+              return true;
+            }
+          }
+        }
+
+        return false; // 濡傛灉褰撳墠鑺傜偣涓嶆槸瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欒繑鍥瀎alse
+      }
+
+      // 浠庢牴鑺傜偣寮�濮嬮亶鍘嗘暣妫垫爲锛屽苟璋冪敤閫掑綊鍑芥暟鏌ユ壘瀛愯妭鐐圭殑鎵�鏈夌埗鑺傜偣
+      for (const node of dataSource) {
+        if (traverse(node, nodeId)) {
+          // 濡傛灉鍦ㄥ綋鍓嶈妭鐐圭殑瀛愭爲涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欑洿鎺ラ��鍑哄惊鐜�
+          break;
+        }
+      }
+
+      return parentIds; // 杩斿洖鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+@import url(../../index.scss);
+</style>
diff --git a/admin-web/src/views/stock/scrap/itemScrapping/index.vue b/admin-web/src/views/stock/scrap/itemScrapping/index.vue
index ea1d5b0..0c7be3d 100644
--- a/admin-web/src/views/stock/scrap/itemScrapping/index.vue
+++ b/admin-web/src/views/stock/scrap/itemScrapping/index.vue
@@ -1,118 +1,79 @@
 <template>
-  <div class="app-container">
+  <div class="app-container stock-container">
     <el-container>
-      <el-container>
-        <el-card class="box-card" style="width: 100%" shadow="never">
-          <!--鎼滅储鏉′欢-->
-          <div class="filter-container">
-            <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
-          </div>
-          <el-row style="margin-top: 15px">
-            <el-col>
-              <!--鍒楄〃-->
-              <my-button name="鏂板" @click="addtable" site="form" />
-              <div :style="{'overflow-y': 'auto', height:`${clientHeight - 320}px`}">
-                    <el-row class="card"
-                            :gutter="5">
-                        <el-col v-for="(item, index) in proData" :key="index" class="cm-item">
-                          <el-card class="card-data">
-                            <div class="card-container">
-                              <div class="hed-one">鍑哄簱鍗曞彿锛歿{ item.order_no }}</div>
-                              <div class="one-hed">
-                                <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鍑哄簱鏃堕棿锛�</span>{{ item.customer_name }}</div>
-                              </div>
-                              <div class="card-end">
-                                <div v-for="(just, index) in item.data" class="two-end">
-                                  <div class="item"><span>{{ just.order_no }}锛�</span>{{ just.customer_name }}</div>
-                                </div>
-                              </div>
+      <el-card class="box-card" style="width: 100%" shadow="never">
+        <!--鎼滅储鏉′欢-->
+        <div class="filter-container">
+          <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
+        </div>
+        <el-row style="margin-top: 15px">
+          <el-col>
+            <!--鍒楄〃-->
+            <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading">
+              <el-row class="card" :gutter="5">
+                <el-col v-for="(item, index) in list" :key="index" class="cm-item">
+                  <el-card class="card-data">
+                    <div class="card-container">
+                      <div class="card-header">
+                        <div class="card-header-left">
+                          <span>璋冩嫧鍗曞彿锛�</span>
+                          <span class="value">{{ item.businessFormCode }}</span>
+                          <div class="states" :class="item.states == 1 ? '' : 'states-success'">
+                            {{ item.states == 1 ? '寰呰皟鎷�' : '宸茶皟鎷�' }}
+                          </div>
+                        </div>
+                        <div class="card-header-right">
+                          <el-button site="form" type="success" size="mini" @click="handleExport(item)"
+                            >瀵煎嚭璋冩嫧鍑哄簱鍗�</el-button
+                          >
+                          <el-button name="鏌ョ湅璇︽儏" site="form" type="info" size="mini" @click="handleDetail(item)"
+                            >鏌ョ湅璇︽儏</el-button
+                          >
+                        </div>
+                      </div>
+                      <div class="one-hed">
+                        <div class="box"><span class="span-two">鎺ユ敹鏈烘瀯锛�</span>{{ item.agencyId }}</div>
+                        <div class="box"><span class="span-two">鐢宠浜猴細</span>{{ item.buyerName }}</div>
+                        <div class="box"><span class="span-two">鐢宠璋冩嫧鏃堕棿锛�</span>{{ item.procureTime }}</div>
+                        <div class="box"><span class="span-two">鎺ユ敹鏃堕棿锛�</span>{{ item.procureTime }}</div>
+                        <div class="box"><span class="span-two">璋冩嫧鏈烘瀯锛�</span>{{ item.procureTime }}</div>
+                        <div class="box"><span class="span-two">璋冩嫧浜猴細</span>{{ item.procureTime }}</div>
+                        <div class="box"><span class="span-two">璋冩嫧鏃堕棿锛�</span>{{ item.procureTime }}</div>
+                      </div>
+                      <div class="card-end">
+                        <div v-for="(just, index) in item.models" :key="index" class="item">
+                          <div class="name">{{ just.baseGoodsModelsId }}</div>
+                          <div class="value-box">
+                            <div class="value-box-item">
+                              <span class="label">鏁伴噺锛�</span>
+                              <span class="value">{{ just.counts }}</span>
+                              <span class="unit">{{ just.unit }}</span>
                             </div>
-                            <div class="card-but">
-                              <my-button name="鏌ョ湅璇︽儏"   site="form" />
-                              <my-button name="瀵煎嚭鍑哄簱鍗�" site="form" />
-                            </div>
-                          </el-card>
-                        </el-col>
-                    </el-row>
-              </div>
-              <el-pagination
-                :small="false"
-                :current-page="1"
-                :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
-                :page-size="10"
-                layout="total, sizes, prev, pager, next, jumper"
-                :total="0"
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-              />
-            </el-col>
-          </el-row>
-          <!--娣诲姞/缂栬緫寮圭獥-->
-          <el-dialog title="鏂板鍑哄簱"  :close-on-click-modal="false" :visible.sync="adddialog" width="60%" >
-            <el-form ref="ruleForm" :model="formData" class="demo-ruleForm" label-width="100px">
-              <el-row :gutter="24" class="headerHeight">
-                  <el-col :span="12">
-                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                    </el-form-item>
-                  </el-col>
-                  <el-col :span="12">
-                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="24" class="headerHeight">
-                  <el-col :span="24">
-                    <el-form-item label="鍑哄簱鎵嬬画" prop="name">                      
-                      浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <div style="position: relative;">
-                  <div style="background-color: #F9F9F9;width: 90%;">
-                  <el-row :gutter="24" class="">
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-row :gutter="24" class="">
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-table :data="formData.tableData" height="100%"  :stripe="true">
-                    <el-table-column prop="projectName" label="瑙勬牸鍨嬪彿" align="center"> </el-table-column>
-                    <el-table-column prop="time1" label="鍗曚綅"  align="center"> </el-table-column>
-                    <el-table-column prop="unit" label="鐜版湁搴撳瓨" align="center"> </el-table-column>
-                    <el-table-column prop="time2" label="鍑哄簱鏁伴噺"  align="center"> </el-table-column>
-                  </el-table>
-                  </div>
-                  <div style="position: absolute;right: 0;top: 152px;">
-                    <my-button style="display: block;margin-left: 10px;margin-bottom: 5px;" name="绉婚櫎" site="form"/>
-                    <my-button name="鏂板鐗╁搧" site="form"/>
-                  </div>
-                </div>
-            </el-form>
-            <div slot="footer" align="center" class="dialog-footer">
-              <my-button name="纭畾" site="form" />
-              <my-button name="鍙栨秷" site="form" @click="adddialog = false"/>
+                          </div>
+                        </div>
+                      </div>
+                    </div>
+                  </el-card>
+                </el-col>
+              </el-row>
             </div>
-          </el-dialog>
-        </el-card>
-      </el-container>
+            <el-pagination
+              :small="false"
+              :current-page="pageNum"
+              :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
+              :page-size="pageSize"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="total"
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+            />
+          </el-col>
+        </el-row>
+      </el-card>
     </el-container>
+    <!--娣诲姞/缂栬緫寮圭獥-->
+    <edit ref="editRef"></edit>
+    <detail ref="detailRef"></detail>
     <my-import
       :import-setting="importSetting"
       :dialog-show="importSetting.dialogShow"
@@ -122,196 +83,86 @@
 </template>
 
 <script>
-import MyButton from "@/components/myButton/myButton";
+import { procureList, procureDel, procureIncome } from '@/api/stock/procure/purchaseOrder';
+import MyButton from '@/components/myButton/myButton';
 import SettingIplatform from '@/utils/settingIplatform';
-import myImport from '@/views/components/myImport'
-import {getBaseUrl} from '@/utils/base';
+import myImport from '@/views/components/myImport';
+import edit from './edit';
+import detail from './detail';
+import { getBaseUrl } from '@/utils/base';
 
 export default {
-  name: "index",
-  components: {MyButton, myImport},
+  name: 'index',
+  components: { MyButton, myImport, edit, detail },
   data() {
     return {
-      
+      loading: false,
       adddialog: false,
-      formData:{
-        tableData:[
-          {
-            projectName:'555'
-          },
-          {
-            projectName:'444'
-          }
-        ],
-      },
+      list: [],
       // 鎼滅储妗�
       items: [
         {
           type: 'text',
-          dataIndex: 'name',
-          label: '鍑哄簱鍗曞彿',
+          dataIndex: 'businessFormCode',
+          label: '璋冩嫧鍗曞彿',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
         },
         {
           type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'goodsTemplateName',
           label: '鐗╁搧鍚嶇О',
           placeholder: '鍙ā绯婃悳绱�',
-          defaultValue: ''
+          defaultValue: '',
+        },
+        {
+          type: 'select',
+          dataIndex: 'name',
+          label: '鏈烘瀯',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '',
+          options: [],
         },
         {
           type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'buyerName',
           label: '鍒涘缓浜�',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
+        },
+        {
+          type: 'select',
+          dataIndex: 'states',
+          label: '鐘舵��',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '',
+          options: [
+            {
+              label: '鍏ㄩ儴',
+              value: '',
+            },
+            {
+              label: '寰呰皟鎷�',
+              value: '1',
+            },
+            {
+              label: '宸茶皟鎷�',
+              value: '2',
+            },
+          ],
         },
         {
           type: 'date-picker',
           dataIndex: 'val1',
-          label: '鍑哄簱鏃堕棿',
-          defaultValue: ''
+          label: '璋冩嫧鏃堕棿',
+          defaultValue: '',
         },
         {
           type: 'date-picker',
           dataIndex: 'val2',
           label: '鑷�',
-          defaultValue: ''
+          defaultValue: '',
         },
-        // {
-        //   type: 'select',
-        //   dataIndex: 'status',
-        //   label: '鐘舵��',
-        //   placeholder: '璇烽�夋嫨',
-        //   defaultValue: '1',
-        //   options: [
-        //     {
-        //       label: '鍚敤',
-        //       value: '1'
-        //     },
-        //     {
-        //       label: '绂佺敤',
-        //       value: '0'
-        //     }
-        //   ]
-        // }
-      ],
-      proData: [
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'666',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        }
       ],
       // 鏍戞暟鎹�
       treeDataList: [],
@@ -320,25 +171,25 @@
         tenantId: null,
         userName: null,
         userPhone: null,
-        status: 1
+        states: null,
       },
       // 瀵煎叆
       importSetting: {
-          dialogTitle: '瀵煎叆',
-          dialogShow: false,
-          fileSettings: {
-              data: {},
-              uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃
-              accept: '.xls', // 鏍煎紡
-              type: 'text', // 鍥炴樉褰㈠紡
-              loading: false // 瀵煎叆鏁堟灉
-          },
-          /* 妯℃澘涓嬭浇 */
-          templateSettings: {
-              templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
-              templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃
-          },
-          onSuccess: null
+        dialogTitle: '瀵煎叆',
+        dialogShow: false,
+        fileSettings: {
+          data: {},
+          uploadUrl: getBaseUrl() + '/pc/fin/sys/tenant/import', // 涓婁紶鍦板潃
+          accept: '.xls', // 鏍煎紡
+          type: 'text', // 鍥炴樉褰㈠紡
+          loading: false, // 瀵煎叆鏁堟灉
+        },
+        /* 妯℃澘涓嬭浇 */
+        templateSettings: {
+          templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
+          templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate', // 涓嬭浇鍦板潃
+        },
+        onSuccess: null,
       },
       editSetting: {
         title: '',
@@ -346,104 +197,106 @@
         orgId: '',
         show: false,
       },
-    }
+      pageNum: 1,
+      pageSize: 10,
+      total: 0,
+    };
   },
   computed: {
-    clientHeight () {
-      return document.documentElement.clientHeight
+    clientHeight() {
+      return document.documentElement.clientHeight;
     },
   },
   created() {
+    this.fetchData();
   },
   methods: {
-    handleSizeChange(){},
-    handleCurrentChange(){},
+    fetchData() {
+      this.loading = true;
+      procureList({
+        pageNum: this.pageNum,
+        pageSize: this.pageSize,
+        ...this.filterFrom,
+      }).then((res) => {
+        this.list = res.datas;
+        this.total = res.totalRows;
+        this.loading = false;
+        console.log(this.list);
+      });
+    },
     //瀵煎叆
     importOrg() {
-        this.importSetting.dialogShow = true
-        this.importSetting.onSuccess = (response, callBack) => {
-            if (response.code===1){
-              this.$message.success(response.msg)
-              this.search(1)
-            }else{
-              this.$message.warning(response.msg)
-            }
-            callBack()
+      this.importSetting.dialogShow = true;
+      this.importSetting.onSuccess = (response, callBack) => {
+        if (response.code === 1) {
+          this.$message.success(response.msg);
+          this.search(1);
+        } else {
+          this.$message.warning(response.msg);
         }
+        callBack();
+      };
     },
-   
+    // 瀵煎嚭
+    handleExport() {},
+    // 鏂板
     addtable() {
-      this.adddialog = true
+      this.$refs.editRef.open();
+    },
+    // 缂栬緫
+    handleEdit(row) {
+      this.$refs.editRef.open(row.id);
+    },
+    // 璇︽儏
+    handleDetail(row) {
+      this.$refs.detailRef.open(row.id);
+    },
+    // 璋冩嫧
+    handleIncome(row) {
+      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  璋冩嫧鍚�?`, '閲囪喘璋冩嫧')
+        .then(function () {
+          procureIncome({ id: row.id }).then((res) => {
+            this.$message.success('璋冩嫧鎴愬姛锛�');
+          });
+        })
+        .then((res) => {
+          this.search();
+        })
+        .catch(() => {});
+    },
+    del(row) {
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎璋冩嫧鍗曞彿涓�"' + row.businessFormCode + '"鐨勬暟鎹悧锛�')
+        .then(function () {
+          procureDel({ id: row.id }).then((res) => {});
+        })
+        .then((res) => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.search();
+        })
+        .catch(() => {});
+    },
+    // 鍒嗛〉
+    handleSizeChange(pageSize) {
+      this.pageSize = pageSize;
+      this.search({ pageNum: 1 });
+    },
+    handleCurrentChange(pageNum) {
+      this.myTable.paging.page.pageNum = pageNum;
+      this.search({ pageNum: pageNum });
     },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
-      if (pageNum != undefined) {
-        // this.$refs.myTable.search(pageNum)
-      } else {
-        // this.$refs.myTable.search()
-      }
+      this.fetchData();
     },
     fifterForm(params) {
-      console.log(params,'555');
-      this.filterFrom = Object.assign(this.filterFrom, params)
-      this.search(1)
-    }
-  }
-}
+      this.filterFrom = Object.assign(this.filterFrom, params);
+      this.search(1);
+    },
+  },
+};
 </script>
 
-<style scoped>
-.card {
-    display: flex;
-    flex-wrap: wrap;
-    margin: 0px !important;
-    .cm-item {
-        width: 100%;
-    }
-    .cm-item /deep/ .el-card__body {
-        padding: 10px;
-    }
-}
-.card-data{
-  margin-top: 8px;
-  .card-container{
-    display: inline-block; 
-    width: 70%;
-    .hed-one{
-      color: #2298EE;
-      font-size: 18px;
-    }
-    .one-hed{
-      margin-top: 15px;
-      .box{
-        display: inline-block;  
-        margin-right: 20px;  
-      }
-    }
-    .span-two{
-      color: #83919e;
-      font-size: 14px;
-    }
-    .card-end{
-      font-size: 14px;
-      color: #3d3d3d;
-      margin-top: 15px;
-      display: flex;  
-      flex-wrap: wrap; 
-      .two-end{
-        width: calc(33.33% - 20px); 
-        margin-bottom: 15px; 
-      }
-    }
-    
-  }
-  .card-but{
-    display: inline-block; 
-  }
-  .end{
-    display: inline-block;  
-  }
-  
-}
-
+<style scoped lang="scss">
+@import url(../../index.scss);
 </style>
diff --git a/admin-web/src/views/stock/transfer/transferApplication/detail.vue b/admin-web/src/views/stock/transfer/transferApplication/detail.vue
new file mode 100644
index 0000000..f126f45
--- /dev/null
+++ b/admin-web/src/views/stock/transfer/transferApplication/detail.vue
@@ -0,0 +1,128 @@
+<template>
+  <el-dialog
+    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-detail"
+  >
+    <el-row :gutter="20">
+      <el-col :span="8">
+        <span>璋冩嫧鍗曞彿锛�</span>
+        <span>{{ detail.businessFormCode }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>璋冩嫧浠撳簱锛�</span>
+        <span>{{ detail.warehouseName }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>鎵�灞炴満鏋勶細</span>
+        <span>{{ detail.agencyId }}</span>
+      </el-col>
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px">
+      <el-col :span="8">
+        <span>鐘舵�侊細</span>
+        <span>{{ detail.states == 1 ? '寰呰皟鎷�' : '宸茶皟鎷�' }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>鍒涘缓浜猴細</span>
+        <span>{{ detail.buyerName }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>璋冩嫧鏃堕棿锛�</span>
+        <span>{{ detail.incomeTime | formatTime }}</span>
+      </el-col>
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px">
+      <el-col class="img-row" :span="24">
+        <span>璋冩嫧鎵嬬画鐓х墖锛�</span>
+        <div class="img-box"></div>
+      </el-col>
+    </el-row>
+    <div class="goods-card" v-for="(goodsItem, goodsIndex) in detail.procureGoods" :key="goodsIndex">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <span>鐗╁搧鍒嗙被锛�</span>
+          <span>{{ goodsItem.baseCategoryId }}</span>
+        </el-col>
+        <el-col :span="8">
+          <span>鐗╁搧鍚嶇О锛�</span>
+          <span>{{ goodsItem.goodsTemplateName }}</span>
+        </el-col>
+        <el-col :span="8">
+          <span>渚涜揣鍟嗭細</span>
+          <span>{{ goodsItem.supplier }}</span>
+        </el-col>
+      </el-row>
+      <el-table :data="goodsItem.models" :stripe="true" style="margin-top: 20px">
+        <el-table-column prop="baseGoodsModelsName" label="瑙勬牸鍨嬪彿" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.baseGoodsModelsName }}
+          </template>
+        </el-table-column>
+        <el-table-column label="鍗曚綅" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.unit }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="price" label="鐜版湁搴撳瓨" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.price }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="counts" label="璋冩嫧鏁伴噺" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.counts }}
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </el-dialog>
+</template>
+<script>
+import { procureDetail } from '@/api/stock/procure/purchaseOrder';
+import * as DateFormatter from '@/utils/DateFormatter';
+
+export default {
+  data() {
+    return {
+      visible: false,
+      detail: {
+        businessFormCode: '',
+        goodsTemplateName: '',
+        agencyId: '',
+        states: '',
+        createName: '',
+        time: '',
+        procureGoods: [{}, {}],
+      },
+    };
+  },
+  filters:{
+    formatTime(time) {
+      if(!time) return
+      return DateFormatter.LongToDateTime(time)
+    }
+  },
+  methods: {
+    open(id) {
+      this.visible = true;
+      procureDetail({ id }).then((res) => {
+        this.detail = res;
+      });
+    },
+    close() {
+      this.visible = false;
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import url(../../index.scss);
+</style>
diff --git a/admin-web/src/views/stock/transfer/transferApplication/edit.vue b/admin-web/src/views/stock/transfer/transferApplication/edit.vue
new file mode 100644
index 0000000..dcb0408
--- /dev/null
+++ b/admin-web/src/views/stock/transfer/transferApplication/edit.vue
@@ -0,0 +1,516 @@
+<template>
+  <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-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-date-picker
+                v-model="formData.procureTime"
+                type="datetime"
+                value="yyyy-MM-dd HH:mm:ss"
+                value-format="yyyyMMddHHmmss"
+                placeholder="璇烽�夋嫨鏃ユ湡"
+                style="width: 100%"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24" class="headerHeight">
+          <el-col :span="12">
+            <el-form-item label="璋冩嫧鎵嬬画" prop="procureDoc">
+              <upload :settings="uploadSettings" @on-change="uploadChange"></upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <div class="goods-card" v-for="(goodsItem, goodsIndex) in formData.procureGoods" :key="goodsIndex">
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item
+                label="鐗╁搧鍒嗙被"
+                :prop="`procureGoods[${goodsIndex}].baseCategoryIds`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-cascader
+                  v-model="goodsItem.baseCategoryIds"
+                  :options="categoryOptions"
+                  :props="{ value: 'id' }"
+                  @change="categoryChange($event, goodsIndex)"
+                  style="width: 100%"
+                ></el-cascader>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item
+                label="鐗╁搧鍚嶇О"
+                :prop="`procureGoods[${goodsIndex}].baseGoodsTemplateId`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-select
+                  v-model="goodsItem.baseGoodsTemplateId"
+                  placeholder="璇峰厛鎷╃墿鍝佸垎绫�"
+                  filterable
+                  :disabled="!goodsItem.baseCategoryId"
+                  style="width: 100%"
+                  @change="goodsTemplateChange($event, goodsIndex)"
+                >
+                  <el-option
+                    v-for="item in goodsItem.goodsOptions"
+                    :key="item.id"
+                    :label="item.goodsName"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item
+                label="瑙勬牸鍨嬪彿"
+                :prop="`procureGoods[${goodsIndex}].modelsIds`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-select
+                  v-model="goodsItem.modelsIds"
+                  multiple
+                  placeholder="璇峰厛鎷╃墿鍝佸悕绉�"
+                  :disabled="!goodsItem.baseCategoryId"
+                  @change="modelChange($event, goodsIndex)"
+                  @remove-tag="modelRemoveTag($event, goodsIndex)"
+                  style="width: 100%"
+                >
+                  <el-option
+                    v-for="item in goodsItem.modelsOptions"
+                    :key="item.id"
+                    :label="item.modelName"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-table :data="goodsItem.models" :stripe="true">
+            <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center">
+              <template slot-scope="scope">
+                {{ getGoodsModelsName(scope.row.baseGoodsModelsId) }}
+              </template>
+            </el-table-column>
+            <el-table-column label="鍗曚綅" align="center">
+              <template slot-scope="scope">
+                {{ scope.row.unit }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="price" label="鐜版湁搴撳瓨" align="center">
+              <template slot-scope="scope">{{  }}
+                {{ scope.row.worehouseCount }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="counts" label="璋冩嫧鏁伴噺" align="center">
+              <template slot-scope="scope">
+                <el-input
+                  type="number"
+                  v-model="scope.row.counts"
+                  @change="countsChange($event, goodsIndex,scope.$index)"
+                ></el-input>
+              </template>
+            </el-table-column>
+          </el-table>
+          <div class="btn-group">
+            <el-button
+              v-if="formData.procureGoods.length > 1"
+              name="绉婚櫎"
+              type="danger"
+              plain
+              size="mini"
+              @click="removeGoods(goodsIndex)"
+              >绉婚櫎</el-button
+            >
+            <el-button
+              v-if="formData.procureGoods.length - 1 == goodsIndex"
+              name="鏂板鐗╁搧"
+              type="primary"
+              plain
+              size="mini"
+              @click="addGoods"
+              >鏂板鐗╁搧</el-button
+            >
+          </div>
+        </div>
+      </div>
+    </el-form>
+    <div slot="footer" align="center" class="dialog-footer">
+      <my-button name="鍙栨秷" site="form" @click="close" />
+      <my-button name="淇濆瓨" site="form" @click="handleSubmit" />
+    </div>
+  </win-md>
+</template>
+<script>
+import {
+  goodsTemplate,
+  procureAdd,
+  procureEdit,
+  selectTenantWarehouse,
+  goodsModel,
+  procureDetail,
+} from '@/api/stock/procure/purchaseOrder';
+import { getTree } from '@/api/foudation/classification';
+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 SettingIplatform from '../../../../../public/static/config';
+
+export default {
+  components: { MyButton, winMd, upload },
+  props: {
+    setting: {
+      type: Object,
+      default: () => {},
+    },
+  },
+  data() {
+    return {
+      visible: false,
+      loading: false,
+      buyTypeOptions: [
+        {
+          label: '闆嗛噰',
+          value: '1',
+        },
+        {
+          label: '鑷噰',
+          value: '2',
+        },
+      ],
+      warehouses: [], // 璋冩嫧浠撳簱鍒楄〃
+      categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃
+      modelList: [], //鍨嬪彿鍒楄〃
+      formData: {
+        warehouseId: '', // 璋冩嫧浠撳簱id
+        procureTime: '', // 璋冩嫧鏃堕棿
+        buyType: '2', // 璋冩嫧鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
+        procureGoods: [],
+      },
+      goodsItem: {
+        whFormProcureId: '', // 璋冩嫧鍗旾D
+        baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍
+        baseCategoryId: '', // 鍒嗙被缂栧彿
+        baseGoodsTemplateId: '', // 鐗╁搧妯$増缂栧彿
+        goodsTemplateName: '', // 鐗╁搧妯$増鍚嶇О
+        supplier: '', // 渚涘簲鍟�
+        sort: '', // 鏄剧ず椤哄簭
+        goodsOptions: [], // 鐗╁搧鍒楄〃select
+        modelsOptions: [], //瑙勬牸鍨嬪彿select
+        models: [], // 鐗╁搧鍚嶇О
+        modelsIds: [], //瑙勬牸鍨嬪彿
+      },
+      modelsItem: {
+        baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿
+        price: 0, // 鍗曚环(璋冩嫧闇�瑕侊紝璋冩嫧涓嶉渶瑕�)
+        worehouseCount: 0,
+        counts: 0, // 鎿嶄綔鏁伴噺
+        supplier: '', // 渚涘簲鍟�
+        unit: null, //鍗曚綅
+      },
+      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' }],
+        baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        baseGoodsTemplateId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+      },
+
+      uploadSettings: {
+        title: '涓婁紶',
+        max: 20, // 鏈�澶уぇ灏忥紝鍗曚綅M
+        num: 2, // 鏀寔涓婁紶鍥剧墖涓暟
+        accept: '.jpg,.png', // 闄愬埗鏍煎紡
+        tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb`
+        uploadUrl: getUploadUrl(), // 涓婁紶璺緞
+        multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶
+        disabled: false, // 鏄惁绂佺敤
+        type: 'text', // text/picture
+      },
+    };
+  },
+  created() {
+    this.init();
+  },
+  methods: {
+    async init() {
+      this.getWarehouseList();
+      this.getgoodsTemplate();
+      this.getgoodsModel();
+      // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃
+      const treeRes = await getTree();
+      this.categoryOptions = this.removeEmptyChildren(treeRes);
+      if (this.setting.id) {
+        const detail = await procureDetail({ id: this.setting.id });
+        this.formData = Object.assign(this.formData, detail);
+        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];
+          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.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
+      }
+      this.visible = true;
+    },
+
+    // 鑾峰彇璋冩嫧浠撳簱鍒楄〃
+    getWarehouseList() {
+      selectTenantWarehouse()
+        .then((res) => {
+          this.warehouses = res;
+          if (this.warehouses.length && !this.formData.warehouseId) {
+            // 榛樿閫変腑绗竴涓粨搴�
+            this.formData.warehouseId = this.warehouses[0].id;
+          }
+        })
+        .catch((err) => {
+          console.log('err', err);
+        });
+    },
+
+    removeEmptyChildren(arr) {
+      arr.forEach((item) => {
+        if (!item.children || !item.children.length) {
+          delete item.children;
+        } else {
+          this.removeEmptyChildren(item.children);
+        }
+      });
+      return arr;
+    },
+
+    // 鑾峰彇鐗╁搧鍚嶇О鍒楄〃
+    getgoodsTemplate(id, index) {
+      goodsTemplate({ categoryId: id || '' }).then((res) => {
+        if (index || index == 0) {
+          this.$set(this.formData.procureGoods[index], 'goodsOptions', res);
+        } else {
+          this.goodsTemplatelAll = res;
+        }
+      });
+    },
+
+    // 瑙勬牸鍨嬪彿
+    getgoodsModel(id, index) {
+      goodsModel({ goodsTemplatesId: id || '' }).then((res) => {
+        if (index || index == 0) {
+          this.$set(this.formData.procureGoods[index], 'modelsOptions', res);
+        } else {
+          this.goodsModelAll = res;
+        }
+      });
+    },
+
+    // 鏍规嵁鐗╁搧鍚嶇О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);
+      if (item) {
+        return item.modelName;
+      }
+      return;
+    },
+
+    // 鐗╁搧鍒嗙被閫夋嫨
+    categoryChange(e, index) {
+      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];
+      // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃
+      this.getgoodsTemplate(e[e.length - 1], index);
+    },
+
+    // 鐗╁搧鍚嶇О鍒楄〃
+    goodsTemplateChange(e, index) {
+      this.formData.procureGoods[index].modelsOptions = [];
+      this.formData.procureGoods[index].modelsIds = [];
+      this.formData.procureGoods[index].models = [];
+
+      this.formData.procureGoods[index].goodsTemplateName = this.getGoodsTemplateName(e);
+      // 鏍规嵁閫変腑鐗╁搧鍚嶇Оid鑾峰彇瑙勬牸鍨嬪彿鍒楄〃
+      this.getgoodsModel(e, index);
+    },
+
+    // 瑙勬牸鍨嬪彿閫夋嫨
+    modelChange(e, index) {
+      let arr = [...this.formData.procureGoods[index].models];
+      let str = JSON.stringify(arr);
+      e.forEach((item) => {
+        if (str.indexOf(item) == -1) {
+          let temp = this.goodsModelAll.find((v) => v.id == item);
+          arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit });
+        }
+      });
+      this.formData.procureGoods[index].models = arr;
+    },
+
+    // 瑙勬牸鍨嬪彿绉婚櫎
+    modelRemoveTag(e, index) {
+      let arr = this.formData.procureGoods[index].models;
+      let delIndex = arr.findIndex((v) => v.baseGoodsModelsId == e);
+      this.formData.procureGoods[index].models.splice(delIndex, 1);
+    },
+
+    // 涓婁紶
+    uploadChange(e) {
+      console.log('uploadChange', e);
+    },
+
+    // 鐐瑰嚮鏂板鐗╁搧
+    addGoods() {
+      this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
+    },
+
+    // 鐐瑰嚮绉婚櫎
+    removeGoods(index) {
+      this.formData.procureGoods.splice(index, 1);
+    },
+
+    // 璋冩嫧鏁伴噺鏍¢獙
+    countsChange(e, goodsIndex,index) {
+      const curItem = this.formData.procureGoods[goodsIndex].models[index]
+      const worehouseCount = curItem.worehouseCount
+      if (e > worehouseCount) {
+        this.$message.warning('鏁伴瓒呰繃鐜版湁搴撳瓨');
+        curItem.counts = worehouseCount
+      }
+    },
+
+    // 鎻愪氦
+    handleSubmit() {
+      this.$refs['ruleForm'].validate((valid) => {
+        if (valid) {
+          console.log('this.formData', this.formData);
+          if (this.setting.id) {
+            procureAdd(this.formData)
+              .then((res) => {
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
+              })
+              .catch((err) => {
+                console.log('create err', err);
+                this.$message.error('淇濆瓨澶辫触');
+              });
+          } else {
+            procureEdit(this.formData)
+              .then((res) => {
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
+              })
+              .catch((err) => {
+                console.log('edit err', err);
+                this.$message.error('淇濆瓨澶辫触');
+              });
+          }
+        } else {
+          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��');
+        }
+      });
+    },
+
+    close() {
+      this.formData = {
+        warehouseId: '', // 璋冩嫧浠撳簱id
+        procureTime: '', // 璋冩嫧鏃堕棿
+        procureGoods: [],
+      };
+      this.$emit('close');
+    },
+
+    // 閫氳繃瀛愰泦id鏌ュ埌鎵�浠ョ浉鍏崇埗绾d骞惰繑鍥炴暟缁�
+    findParentIds(dataSource, nodeId) {
+      const parentIds = []; // 鐢ㄤ簬瀛樺偍鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
+
+      // 瀹氫箟涓�涓�掑綊鍑芥暟锛岀敤浜庨亶鍘嗘暣妫垫爲骞舵煡鎵惧瓙鑺傜偣鐨勬墍鏈夌埗鑺傜偣
+      function traverse(node, nodeId) {
+        if (node.id === nodeId) {
+          // 濡傛灉褰撳墠鑺傜偣鐨処D绛変簬瀛愯妭鐐圭殑ID锛屽垯琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣锛屽彲浠ュ紑濮嬪悜涓婃煡鎵剧埗鑺傜偣
+          return true; // 杩斿洖true琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣
+        }
+
+        if (node.children) {
+          // 濡傛灉褰撳墠鑺傜偣鏈夊瓙鑺傜偣锛屽垯缁х画閬嶅巻瀛愯妭鐐�
+          for (const childNode of node.children) {
+            if (traverse(childNode, nodeId)) {
+              // 濡傛灉鍦ㄥ瓙鑺傜偣涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欏皢褰撳墠鑺傜偣鐨処D娣诲姞鍒扮埗鑺傜偣ID鏁扮粍涓紝骞惰繑鍥瀟rue琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣
+              parentIds.push(node.id);
+              return true;
+            }
+          }
+        }
+
+        return false; // 濡傛灉褰撳墠鑺傜偣涓嶆槸瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欒繑鍥瀎alse
+      }
+
+      // 浠庢牴鑺傜偣寮�濮嬮亶鍘嗘暣妫垫爲锛屽苟璋冪敤閫掑綊鍑芥暟鏌ユ壘瀛愯妭鐐圭殑鎵�鏈夌埗鑺傜偣
+      for (const node of dataSource) {
+        if (traverse(node, nodeId)) {
+          // 濡傛灉鍦ㄥ綋鍓嶈妭鐐圭殑瀛愭爲涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欑洿鎺ラ��鍑哄惊鐜�
+          break;
+        }
+      }
+
+      return parentIds; // 杩斿洖鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+@import url(../../index.scss);
+</style>
diff --git a/admin-web/src/views/stock/transfer/transferApplication/index.vue b/admin-web/src/views/stock/transfer/transferApplication/index.vue
index 77df32b..fe44d28 100644
--- a/admin-web/src/views/stock/transfer/transferApplication/index.vue
+++ b/admin-web/src/views/stock/transfer/transferApplication/index.vue
@@ -1,125 +1,77 @@
 <template>
-  <div class="app-container">
+  <div class="app-container stock-container">
     <el-container>
-      <el-container>
-        <el-card class="box-card" style="width: 100%" shadow="never">
-          <!--鎼滅储鏉′欢-->
-          <div class="filter-container">
-            <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
-          </div>
-          <el-row style="margin-top: 15px">
-            <el-col>
-              <!--鍒楄〃-->
-              <my-button name="鏂板" @click="addtable" site="form" />
-              <div :style="{'overflow-y': 'auto', height:`${clientHeight - 320}px`}">
-                    <el-row class="card"
-                            :gutter="5">
-                        <el-col v-for="(item, index) in proData" :key="index" class="cm-item">
-                          <el-card class="card-data">
-                            <div class="card-container">
-                              <div class="hed-one"> <span>璋冩嫧鍗曞彿锛歿{ item.order_no }}</span><span style="margin-left: 20px;"><el-button type="warning" plain size="mini">寰呮帴鏀�</el-button></span></div>
-                              <div class="one-hed">
-                                <div class="box"><span class="span-two">鎺ュ彈鏈烘瀯锛�</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鐢宠浜猴細</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鐢宠璋冩嫧鏃堕棿锛�</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鎺ユ敹鏃堕棿锛�</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">璋冩嫧鏃堕棿锛�</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鎺ュ彈浜猴細</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鎺ュ彈鏃堕棿锛�</span>{{ item.customer_name }}</div>
-                              </div>
-                              <div class="card-end">
-                                <div v-for="(just, index) in item.data" class="two-end">
-                                  <div class="item"><span>{{ just.order_no }}锛�</span>{{ just.customer_name }}</div>
-                                </div>
-                              </div>
-                            </div>
-                            <div class="card-but">
-                              <div  style="margin-top: 10px;">
-                                <my-button style="width: 120px;" name="鍒犻櫎"   site="form" />
-                                <my-button style="width: 120px;" name="鏌ョ湅璇︽儏" site="form" />
-                              </div>
-                            </div>
-                            
-                          </el-card>
-                        </el-col>
-                    </el-row>
-              </div>
-              <el-pagination
-                :small="false"
-                :current-page="1"
-                :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
-                :page-size="10"
-                layout="total, sizes, prev, pager, next, jumper"
-                :total="0"
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-              />
-            </el-col>
-          </el-row>
-          <!--娣诲姞/缂栬緫寮圭獥-->
-          <el-dialog title="鏂板鍑哄簱"  :close-on-click-modal="false" :visible.sync="adddialog" width="60%" >
-            <el-form ref="ruleForm" :model="formData" class="demo-ruleForm" label-width="100px">
-              <el-row :gutter="24" class="headerHeight">
-                  <el-col :span="12">
-                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                    </el-form-item>
-                  </el-col>
-                  <el-col :span="12">
-                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="24" class="headerHeight">
-                  <el-col :span="24">
-                    <el-form-item label="鍑哄簱鎵嬬画" prop="name">                      
-                      浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <div style="position: relative;">
-                  <div style="background-color: #F9F9F9;width: 90%;">
-                  <el-row :gutter="24" class="">
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-row :gutter="24" class="">
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-table :data="formData.tableData" height="100%"  :stripe="true">
-                    <el-table-column prop="projectName" label="瑙勬牸鍨嬪彿" align="center"> </el-table-column>
-                    <el-table-column prop="time1" label="鍗曚綅"  align="center"> </el-table-column>
-                    <el-table-column prop="unit" label="鐜版湁搴撳瓨" align="center"> </el-table-column>
-                    <el-table-column prop="time2" label="鍑哄簱鏁伴噺"  align="center"> </el-table-column>
-                  </el-table>
-                  </div>
-                  <div style="position: absolute;right: 0;top: 152px;">
-                    <my-button style="display: block;margin-left: 10px;margin-bottom: 5px;" name="绉婚櫎" site="form"/>
-                    <my-button name="鏂板鐗╁搧" site="form"/>
-                  </div>
-                </div>
-            </el-form>
-            <div slot="footer" align="center" class="dialog-footer">
-              <my-button name="纭畾" site="form" />
-              <my-button name="鍙栨秷" site="form" @click="adddialog = false"/>
+      <el-card class="box-card" style="width: 100%" shadow="never">
+        <!--鎼滅储鏉′欢-->
+        <div class="filter-container">
+          <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
+        </div>
+        <el-row style="margin-top: 15px">
+          <el-col>
+            <!--鍒楄〃-->
+            <div class="table-tool-bar" style="margin-bottom: 15px;">
+              <my-button name="鏂板" @click="handleAdd" site="tools" size="medium" />
             </div>
-          </el-dialog>
-        </el-card>
-      </el-container>
+            <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading">
+              <el-row class="card" :gutter="5">
+                <el-col v-for="(item, index) in list" :key="index" class="cm-item">
+                  <el-card class="card-data">
+                    <div class="card-container">
+                      <div class="card-header">
+                        <div class="card-header-left">
+                          <span>璋冩嫧鍗曞彿锛�</span>
+                          <span class="value">{{ item.businessFormCode }}</span>
+                        </div>
+                        <div class="card-header-right">
+                            <el-button site="form" type="success" size="mini" @click="handleExport(item)"
+                              >瀵煎嚭璋冩嫧鍗�</el-button
+                            >
+                          <el-button name="鏌ョ湅璇︽儏" site="form" type="info" size="mini" @click="handleDetail(item)"
+                            >鏌ョ湅璇︽儏</el-button
+                          >
+                        </div>
+                      </div>
+                      <div class="one-hed">
+                        <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.agencyId }}</div>
+                        <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.buyerName }}</div>
+                        <div class="box">
+                          <span class="span-two">璋冩嫧鏃堕棿锛�</span>{{ item.procureTime | formatTime }}
+                        </div>
+                      </div>
+                      <div class="card-end">
+                        <div v-for="(just, index) in item.fromProcureTemplateInfoList" :key="index" class="item">
+                          <div class="name">{{ just.goodsTemplateName }}</div>
+                          <div class="value-box">
+                            <div class="value-box-item">
+                              <span class="label">鏁伴噺锛�</span>
+                              <span class="value">{{ just.count }}</span>
+                              <span class="unit">{{ just.unit }}</span>
+                            </div>
+                          </div>
+                        </div>
+                      </div>
+                    </div>
+                  </el-card>
+                </el-col>
+              </el-row>
+            </div>
+            <el-pagination
+              :small="false"
+              :current-page="pageNum"
+              :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
+              :page-size="pageSize"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="total"
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+            />
+          </el-col>
+        </el-row>
+      </el-card>
     </el-container>
+    <!--娣诲姞/缂栬緫寮圭獥-->
+    <edit v-if="editSetting.show" :setting="editSetting" ref="editRef" @close="editSetting.show=false" @search="refreshData"></edit>
+    <detail ref="detailRef"></detail>
     <my-import
       :import-setting="importSetting"
       :dialog-show="importSetting.dialogShow"
@@ -129,196 +81,100 @@
 </template>
 
 <script>
-import MyButton from "@/components/myButton/myButton";
+import { procureList, procureDel, procureIncome } from '@/api/stock/procure/purchaseOrder';
+import MyButton from '@/components/myButton/myButton';
 import SettingIplatform from '@/utils/settingIplatform';
-import myImport from '@/views/components/myImport'
-import {getBaseUrl} from '@/utils/base';
+import myImport from '@/views/components/myImport';
+import edit from './edit';
+import detail from './detail';
+import { getBaseUrl } from '@/utils/base';
+import * as DateFormatter from '@/utils/DateFormatter';
 
 export default {
-  name: "index",
-  components: {MyButton, myImport},
+  name: 'index',
+  components: { MyButton, myImport, edit, detail },
   data() {
     return {
-      
+      loading: false,
       adddialog: false,
-      formData:{
-        tableData:[
-          {
-            projectName:'555'
-          },
-          {
-            projectName:'444'
-          }
-        ],
-      },
+      list: [],
       // 鎼滅储妗�
       items: [
         {
           type: 'text',
-          dataIndex: 'name',
-          label: '鍑哄簱鍗曞彿',
+          dataIndex: 'businessFormCode',
+          label: '璋冩嫧鍗曞彿',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
         },
         {
           type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'goodsTemplateName',
           label: '鐗╁搧鍚嶇О',
           placeholder: '鍙ā绯婃悳绱�',
-          defaultValue: ''
+          defaultValue: '',
         },
         {
-          type: 'text',
+          type: 'select',
           dataIndex: 'name',
-          label: '鍒涘缓浜�',
-          placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          label: '璋冩嫧鏈烘瀯',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '',
+          options: [],
+        },
+        {
+          type: 'select',
+          dataIndex: 'name',
+          label: '鎺ユ敹鏈烘瀯',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '',
+          options: [],
+        },
+        {
+          type: 'select',
+          dataIndex: 'states',
+          label: '鐘舵��',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '',
+          options: [
+            {
+              label: '鍏ㄩ儴',
+              value: '',
+            },
+            {
+              label: '寰呰皟鎷�',
+              value: '1',
+            },
+            {
+              label: '宸茶皟鎷�',
+              value: '2',
+            },
+          ],
         },
         {
           type: 'date-picker',
           dataIndex: 'val1',
-          label: '鍑哄簱鏃堕棿',
-          defaultValue: ''
+          label: '鐢宠鏃堕棿',
+          defaultValue: '',
         },
         {
           type: 'date-picker',
           dataIndex: 'val2',
           label: '鑷�',
-          defaultValue: ''
-        },
-        // {
-        //   type: 'select',
-        //   dataIndex: 'status',
-        //   label: '鐘舵��',
-        //   placeholder: '璇烽�夋嫨',
-        //   defaultValue: '1',
-        //   options: [
-        //     {
-        //       label: '鍚敤',
-        //       value: '1'
-        //     },
-        //     {
-        //       label: '绂佺敤',
-        //       value: '0'
-        //     }
-        //   ]
-        // }
-      ],
-      proData: [
-        {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
+          defaultValue: '',
         },
         {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃'
-            },
-          ]
+          type: 'date-picker',
+          dataIndex: 'val1',
+          label: '鎺ユ敹鏃堕棿',
+          defaultValue: '',
         },
         {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
+          type: 'date-picker',
+          dataIndex: 'val2',
+          label: '鑷�',
+          defaultValue: '',
         },
-        {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        }
       ],
       // 鏍戞暟鎹�
       treeDataList: [],
@@ -327,25 +183,25 @@
         tenantId: null,
         userName: null,
         userPhone: null,
-        status: 1
+        states: null,
       },
       // 瀵煎叆
       importSetting: {
-          dialogTitle: '瀵煎叆',
-          dialogShow: false,
-          fileSettings: {
-              data: {},
-              uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃
-              accept: '.xls', // 鏍煎紡
-              type: 'text', // 鍥炴樉褰㈠紡
-              loading: false // 瀵煎叆鏁堟灉
-          },
-          /* 妯℃澘涓嬭浇 */
-          templateSettings: {
-              templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
-              templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃
-          },
-          onSuccess: null
+        dialogTitle: '瀵煎叆',
+        dialogShow: false,
+        fileSettings: {
+          data: {},
+          uploadUrl: getBaseUrl() + '/pc/fin/sys/tenant/import', // 涓婁紶鍦板潃
+          accept: '.xls', // 鏍煎紡
+          type: 'text', // 鍥炴樉褰㈠紡
+          loading: false, // 瀵煎叆鏁堟灉
+        },
+        /* 妯℃澘涓嬭浇 */
+        templateSettings: {
+          templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
+          templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate', // 涓嬭浇鍦板潃
+        },
+        onSuccess: null,
       },
       editSetting: {
         title: '',
@@ -353,105 +209,121 @@
         orgId: '',
         show: false,
       },
-    }
+      pageNum: 1,
+      pageSize: 10,
+      total: 0,
+    };
   },
   computed: {
-    clientHeight () {
-      return document.documentElement.clientHeight
+    clientHeight() {
+      return document.documentElement.clientHeight;
+    },
+  },
+  filters: {
+    formatTime(time) {
+      if (!time) return;
+      return DateFormatter.LongToDateTime(time);
     },
   },
   created() {
+    this.fetchData();
   },
   methods: {
-    handleSizeChange(){},
-    handleCurrentChange(){},
+    fetchData() {
+      this.loading = true;
+      procureList({
+        pageNum: this.pageNum,
+        pageSize: this.pageSize,
+        ...this.filterFrom,
+      }).then((res) => {
+        this.list = res.datas;
+        this.total = res.totalRows;
+        this.loading = false;
+        console.log(this.list);
+      });
+    },
     //瀵煎叆
     importOrg() {
-        this.importSetting.dialogShow = true
-        this.importSetting.onSuccess = (response, callBack) => {
-            if (response.code===1){
-              this.$message.success(response.msg)
-              this.search(1)
-            }else{
-              this.$message.warning(response.msg)
-            }
-            callBack()
+      this.importSetting.dialogShow = true;
+      this.importSetting.onSuccess = (response, callBack) => {
+        if (response.code === 1) {
+          this.$message.success(response.msg);
+          this.search(1);
+        } else {
+          this.$message.warning(response.msg);
         }
+        callBack();
+      };
     },
-   
-    addtable() {
-      this.adddialog = true
+    // 瀵煎嚭
+    handleExport() {},
+    // 鏂板
+    handleAdd() {
+      this.editSetting.id = null;
+      this.editSetting.info = null;
+      this.editSetting.title = '鏂板';
+      this.editSetting.show = true;
+    },
+    // 缂栬緫
+    handleEdit(row) {
+      this.editSetting.id = row.id;
+      this.editSetting.info = null;
+      this.editSetting.title = '缂栬緫';
+      this.editSetting.show = true;
+    },
+    // 璇︽儏
+    handleDetail(row) {
+      this.$refs.detailRef.open(row.id);
+    },
+    // 璋冩嫧
+    handleIncome(row) {
+      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  璋冩嫧鍚�?`, '璋冩嫧璋冩嫧')
+        .then(function () {
+          procureIncome({ id: row.id }).then((res) => {
+            this.$message.success('璋冩嫧鎴愬姛锛�');
+            this.search();
+          });
+        })
+        .catch(() => {});
+    },
+    del(row) {
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎璋冩嫧鍗曞彿涓�"' + row.businessFormCode + '"鐨勬暟鎹悧锛�')
+        .then(function () {
+          procureDel({ id: row.id }).then((res) => {});
+        })
+        .then((res) => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.search();
+        })
+        .catch(() => {});
+    },
+    // 鍒嗛〉
+    handleSizeChange(pageSize) {
+      this.pageSize = pageSize;
+      this.search({ pageNum: 1 });
+    },
+    handleCurrentChange(pageNum) {
+      this.myTable.paging.page.pageNum = pageNum;
+      this.search({ pageNum: pageNum });
     },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
-      if (pageNum != undefined) {
-        // this.$refs.myTable.search(pageNum)
-      } else {
-        // this.$refs.myTable.search()
-      }
+      this.fetchData();
+    },
+    refreshData() {
+      this.pageNum = 1;
+      this.pageSize = 10;
+      this.search();
     },
     fifterForm(params) {
-      console.log(params,'555');
-      this.filterFrom = Object.assign(this.filterFrom, params)
-      this.search(1)
-    }
-  }
-}
+      this.filterFrom = Object.assign(this.filterFrom, params);
+      this.search(1);
+    },
+  },
+};
 </script>
 
-<style scoped>
-.card {
-    display: flex;
-    flex-wrap: wrap;
-    margin: 0px !important;
-    .cm-item {
-        width: 100%;
-    }
-    .cm-item /deep/ .el-card__body {
-        padding: 10px;
-    }
-}
-.card-data{
-  position: relative;
-  margin-top: 8px;
-  .card-container{
-    display: inline-block; 
-    width: 70%;
-    .hed-one{
-      color: #2298EE;
-      font-size: 18px;
-    }
-    .one-hed{
-      margin-top: 5px;
-      .box{
-        display: inline-block;  
-        margin-right: 20px;  
-        margin-top: 10px;
-      }
-    }
-    .span-two{
-      color: #83919e;
-      font-size: 14px;
-    }
-    .card-end{
-      font-size: 14px;
-      color: #3d3d3d;
-      margin-top: 15px;
-      display: flex;  
-      flex-wrap: wrap; 
-      .two-end{
-        width: calc(33.33% - 20px); 
-        margin-bottom: 15px; 
-      }
-    }
-    
-  }
-  .card-but{
-    position: absolute;
-    right: 20px;
-    top: 40%;
-  }
-  
-}
-
+<style scoped lang="scss">
+@import url(../../index.scss);
 </style>
diff --git a/admin-web/src/views/stock/transfer/transferissue/detail.vue b/admin-web/src/views/stock/transfer/transferissue/detail.vue
new file mode 100644
index 0000000..f126f45
--- /dev/null
+++ b/admin-web/src/views/stock/transfer/transferissue/detail.vue
@@ -0,0 +1,128 @@
+<template>
+  <el-dialog
+    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-detail"
+  >
+    <el-row :gutter="20">
+      <el-col :span="8">
+        <span>璋冩嫧鍗曞彿锛�</span>
+        <span>{{ detail.businessFormCode }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>璋冩嫧浠撳簱锛�</span>
+        <span>{{ detail.warehouseName }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>鎵�灞炴満鏋勶細</span>
+        <span>{{ detail.agencyId }}</span>
+      </el-col>
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px">
+      <el-col :span="8">
+        <span>鐘舵�侊細</span>
+        <span>{{ detail.states == 1 ? '寰呰皟鎷�' : '宸茶皟鎷�' }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>鍒涘缓浜猴細</span>
+        <span>{{ detail.buyerName }}</span>
+      </el-col>
+      <el-col :span="8">
+        <span>璋冩嫧鏃堕棿锛�</span>
+        <span>{{ detail.incomeTime | formatTime }}</span>
+      </el-col>
+    </el-row>
+    <el-row :gutter="20" style="margin-top: 20px">
+      <el-col class="img-row" :span="24">
+        <span>璋冩嫧鎵嬬画鐓х墖锛�</span>
+        <div class="img-box"></div>
+      </el-col>
+    </el-row>
+    <div class="goods-card" v-for="(goodsItem, goodsIndex) in detail.procureGoods" :key="goodsIndex">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <span>鐗╁搧鍒嗙被锛�</span>
+          <span>{{ goodsItem.baseCategoryId }}</span>
+        </el-col>
+        <el-col :span="8">
+          <span>鐗╁搧鍚嶇О锛�</span>
+          <span>{{ goodsItem.goodsTemplateName }}</span>
+        </el-col>
+        <el-col :span="8">
+          <span>渚涜揣鍟嗭細</span>
+          <span>{{ goodsItem.supplier }}</span>
+        </el-col>
+      </el-row>
+      <el-table :data="goodsItem.models" :stripe="true" style="margin-top: 20px">
+        <el-table-column prop="baseGoodsModelsName" label="瑙勬牸鍨嬪彿" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.baseGoodsModelsName }}
+          </template>
+        </el-table-column>
+        <el-table-column label="鍗曚綅" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.unit }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="price" label="鐜版湁搴撳瓨" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.price }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="counts" label="璋冩嫧鏁伴噺" align="center">
+          <template slot-scope="scope">
+            {{ scope.row.counts }}
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </el-dialog>
+</template>
+<script>
+import { procureDetail } from '@/api/stock/procure/purchaseOrder';
+import * as DateFormatter from '@/utils/DateFormatter';
+
+export default {
+  data() {
+    return {
+      visible: false,
+      detail: {
+        businessFormCode: '',
+        goodsTemplateName: '',
+        agencyId: '',
+        states: '',
+        createName: '',
+        time: '',
+        procureGoods: [{}, {}],
+      },
+    };
+  },
+  filters:{
+    formatTime(time) {
+      if(!time) return
+      return DateFormatter.LongToDateTime(time)
+    }
+  },
+  methods: {
+    open(id) {
+      this.visible = true;
+      procureDetail({ id }).then((res) => {
+        this.detail = res;
+      });
+    },
+    close() {
+      this.visible = false;
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import url(../../index.scss);
+</style>
diff --git a/admin-web/src/views/stock/transfer/transferissue/edit.vue b/admin-web/src/views/stock/transfer/transferissue/edit.vue
new file mode 100644
index 0000000..40ccc04
--- /dev/null
+++ b/admin-web/src/views/stock/transfer/transferissue/edit.vue
@@ -0,0 +1,495 @@
+<template>
+  <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-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-date-picker
+                v-model="formData.procureTime"
+                type="datetime"
+                value="yyyy-MM-dd HH:mm:ss"
+                value-format="yyyyMMddHHmmss"
+                placeholder="璇烽�夋嫨鏃ユ湡"
+                style="width: 100%"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="24" class="headerHeight">
+          <el-col :span="12">
+            <el-form-item label="璋冩嫧鎵嬬画" prop="procureDoc">
+              <upload :settings="uploadSettings" @on-change="uploadChange"></upload>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <div class="goods-card" v-for="(goodsItem, goodsIndex) in formData.procureGoods" :key="goodsIndex">
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item
+                label="鐗╁搧鍒嗙被"
+                :prop="`procureGoods[${goodsIndex}].baseCategoryIds`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-cascader
+                  v-model="goodsItem.baseCategoryIds"
+                  :options="categoryOptions"
+                  :props="{ value: 'id' }"
+                  @change="categoryChange($event, goodsIndex)"
+                  style="width: 100%"
+                ></el-cascader>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item
+                label="鐗╁搧鍚嶇О"
+                :prop="`procureGoods[${goodsIndex}].baseGoodsTemplateId`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-select
+                  v-model="goodsItem.baseGoodsTemplateId"
+                  placeholder="璇峰厛鎷╃墿鍝佸垎绫�"
+                  filterable
+                  :disabled="!goodsItem.baseCategoryId"
+                  style="width: 100%"
+                  @change="goodsTemplateChange($event, goodsIndex)"
+                >
+                  <el-option
+                    v-for="item in goodsItem.goodsOptions"
+                    :key="item.id"
+                    :label="item.goodsName"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="24">
+            <el-col :span="12">
+              <el-form-item
+                label="瑙勬牸鍨嬪彿"
+                :prop="`procureGoods[${goodsIndex}].modelsIds`"
+                :rules="{
+                  required: true,
+                  message: '璇烽�夋嫨',
+                  trigger: 'change',
+                }"
+              >
+                <el-select
+                  v-model="goodsItem.modelsIds"
+                  multiple
+                  placeholder="璇峰厛鎷╃墿鍝佸悕绉�"
+                  :disabled="!goodsItem.baseCategoryId"
+                  @change="modelChange($event, goodsIndex)"
+                  @remove-tag="modelRemoveTag($event, goodsIndex)"
+                  style="width: 100%"
+                >
+                  <el-option
+                    v-for="item in goodsItem.modelsOptions"
+                    :key="item.id"
+                    :label="item.modelName"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-table :data="goodsItem.models" :stripe="true">
+            <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center">
+              <template slot-scope="scope">
+                {{ getGoodsModelsName(scope.row.baseGoodsModelsId) }}
+              </template>
+            </el-table-column>
+            <el-table-column label="鍗曚綅" align="center">
+              <template slot-scope="scope">
+                {{ scope.row.unit }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="price" label="鍗曚环锛堝厓锛�" align="center">
+              <template slot-scope="scope">
+                <el-input type="number" v-model="scope.row.price"></el-input>
+              </template>
+            </el-table-column>
+            <el-table-column prop="counts" label="璋冩嫧鏁伴噺" align="center">
+              <template slot-scope="scope">
+                <el-input type="number" v-model="scope.row.counts"></el-input>
+              </template>
+            </el-table-column>
+          </el-table>
+          <div class="btn-group">
+            <el-button
+              v-if="formData.procureGoods.length > 1"
+              name="绉婚櫎"
+              type="danger"
+              plain
+              size="mini"
+              @click="removeGoods(goodsIndex)"
+              >绉婚櫎</el-button
+            >
+            <el-button
+              v-if="formData.procureGoods.length - 1 == goodsIndex"
+              name="鏂板鐗╁搧"
+              type="primary"
+              plain
+              size="mini"
+              @click="addGoods"
+              >鏂板鐗╁搧</el-button
+            >
+          </div>
+        </div>
+      </div>
+    </el-form>
+    <div slot="footer" align="center" class="dialog-footer">
+      <my-button name="鍙栨秷" site="form" @click="close"/>
+      <my-button name="淇濆瓨" site="form" @click="handleSubmit"/>
+    </div>
+  </win-md>
+</template>
+<script>
+import {
+  goodsTemplate,
+  procureAdd,
+  procureEdit,
+  selectTenantWarehouse,
+  goodsModel,
+  procureDetail,
+} from '@/api/stock/procure/purchaseOrder';
+import { getTree } from '@/api/foudation/classification';
+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 SettingIplatform from '../../../../../public/static/config';
+
+export default {
+  components: { MyButton, winMd, upload },
+  props: {
+    setting: {
+      type: Object,
+      default: () => {
+      }
+    }
+  },
+  data() {
+    return {
+      visible: false,
+      loading: false,
+      buyTypeOptions:[{
+        label:'闆嗛噰',
+        value: '1'
+      },{
+        label:'鑷噰',
+        value: '2'
+      }],
+      warehouses: [], // 璋冩嫧浠撳簱鍒楄〃
+      categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃
+      modelList: [], //鍨嬪彿鍒楄〃
+      formData: {
+        warehouseId: '', // 璋冩嫧浠撳簱id
+        procureTime: '', // 璋冩嫧鏃堕棿
+        buyType: '2', // 璋冩嫧鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
+        procureGoods: [],
+      },
+      goodsItem: {
+        whFormProcureId: '', // 璋冩嫧鍗旾D
+        baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍
+        baseCategoryId: '', // 鍒嗙被缂栧彿
+        baseGoodsTemplateId: '', // 鐗╁搧妯$増缂栧彿
+        goodsTemplateName: '', // 鐗╁搧妯$増鍚嶇О
+        supplier: '', // 渚涘簲鍟�
+        sort: '', // 鏄剧ず椤哄簭
+        goodsOptions: [], // 鐗╁搧鍒楄〃select
+        modelsOptions: [], //瑙勬牸鍨嬪彿select
+        models: [], // 鐗╁搧鍚嶇О
+        modelsIds: [], //瑙勬牸鍨嬪彿
+      },
+      modelsItem: {
+        baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿
+        price: 0, // 鍗曚环(璋冩嫧闇�瑕侊紝璋冩嫧涓嶉渶瑕�)
+        counts: 0, // 鎿嶄綔鏁伴噺
+        supplier: '', // 渚涘簲鍟�
+        unit: null, //鍗曚綅
+      },
+      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' }],
+        baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        baseGoodsTemplateId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+      },
+
+      uploadSettings: {
+        title: '涓婁紶',
+        max: 20, // 鏈�澶уぇ灏忥紝鍗曚綅M
+        num: 2, // 鏀寔涓婁紶鍥剧墖涓暟
+        accept: '.jpg,.png', // 闄愬埗鏍煎紡
+        tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb`
+        uploadUrl: getUploadUrl(), // 涓婁紶璺緞
+        multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶
+        disabled: false, // 鏄惁绂佺敤
+        type: 'text', // text/picture
+      },
+    };
+  },
+  created() {
+    this.init()
+  },
+  methods: {
+    async init() {
+      this.getWarehouseList();
+      this.getgoodsTemplate()
+      this.getgoodsModel();
+      // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃
+      const treeRes = await getTree();
+      this.categoryOptions = this.removeEmptyChildren(treeRes);
+      if (this.setting.id) {
+        const detail = await procureDetail({ id:this.setting.id });
+        this.formData = Object.assign(this.formData, detail);
+        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];
+          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.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
+      }
+      this.visible = true;
+    },
+
+    // 鑾峰彇璋冩嫧浠撳簱鍒楄〃
+    getWarehouseList() {
+      selectTenantWarehouse()
+        .then((res) => {
+          this.warehouses = res;
+          if (this.warehouses.length && !this.formData.warehouseId) {
+            // 榛樿閫変腑绗竴涓粨搴�
+            this.formData.warehouseId = this.warehouses[0].id;
+          }
+        })
+        .catch((err) => {
+          console.log('err', err);
+        });
+    },
+
+    removeEmptyChildren(arr) {
+      arr.forEach((item) => {
+        if (!item.children || !item.children.length) {
+          delete item.children;
+        } else {
+          this.removeEmptyChildren(item.children);
+        }
+      });
+      return arr;
+    },
+
+    // 鑾峰彇鐗╁搧鍚嶇О鍒楄〃
+    getgoodsTemplate(id, index) {
+      goodsTemplate({ categoryId: id || '' }).then((res) => {
+        if (index || index == 0) {
+          this.$set(this.formData.procureGoods[index], 'goodsOptions', res);
+        }else {
+          this.goodsTemplatelAll = res;
+        }
+      });
+    },
+
+    // 瑙勬牸鍨嬪彿
+    getgoodsModel(id, index) {
+      goodsModel({ goodsTemplatesId: id || '' }).then((res) => {
+        if (index || index == 0) {
+          this.$set(this.formData.procureGoods[index], 'modelsOptions', res);
+        } else {
+          this.goodsModelAll = res;
+        }
+      });
+    },
+
+    // 鏍规嵁鐗╁搧鍚嶇О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);
+      if (item) {
+        return item.modelName;
+      }
+      return;
+    },
+
+    // 鐗╁搧鍒嗙被閫夋嫨
+    categoryChange(e, index) {
+      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];
+      // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃
+      this.getgoodsTemplate(e[e.length - 1], index);
+    },
+
+    // 鐗╁搧鍚嶇О鍒楄〃
+    goodsTemplateChange(e, index) {
+      this.formData.procureGoods[index].modelsOptions = []
+      this.formData.procureGoods[index].modelsIds = []
+      this.formData.procureGoods[index].models = []
+
+      this.formData.procureGoods[index].goodsTemplateName = this.getGoodsTemplateName(e)
+      // 鏍规嵁閫変腑鐗╁搧鍚嶇Оid鑾峰彇瑙勬牸鍨嬪彿鍒楄〃
+      this.getgoodsModel(e, index);
+    },
+
+    // 瑙勬牸鍨嬪彿閫夋嫨
+    modelChange(e, index) {
+      let arr = [...this.formData.procureGoods[index].models];
+      let str = JSON.stringify(arr);
+      e.forEach((item) => {
+        if (str.indexOf(item) == -1) {
+          let temp = this.goodsModelAll.find((v) => v.id == item);
+          arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit });
+        }
+      });
+      this.formData.procureGoods[index].models = arr;
+    },
+
+    // 瑙勬牸鍨嬪彿绉婚櫎
+    modelRemoveTag(e, index) {
+      let arr = this.formData.procureGoods[index].models;
+      let delIndex = arr.findIndex((v) => v.baseGoodsModelsId == e);
+      this.formData.procureGoods[index].models.splice(delIndex, 1);
+    },
+
+    // 涓婁紶
+    uploadChange(e) {
+      console.log('uploadChange', e);
+    },
+
+    // 鐐瑰嚮鏂板鐗╁搧
+    addGoods() {
+      this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
+    },
+
+    // 鐐瑰嚮绉婚櫎
+    removeGoods(index) {
+      this.formData.procureGoods.splice(index, 1);
+    },
+
+    // 鎻愪氦
+    handleSubmit() {
+      this.$refs['ruleForm'].validate((valid) => {
+        if (valid) {
+          console.log('this.formData', this.formData);
+          if (this.setting.id) {
+            procureAdd(this.formData)
+              .then((res) => {
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
+              })
+              .catch((err) => {
+                console.log('create err', err);
+                this.$message.error('淇濆瓨澶辫触');
+              });
+          } else {
+            procureEdit(this.formData)
+              .then((res) => {
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
+              })
+              .catch((err) => {
+                console.log('edit err', err);
+                this.$message.error('淇濆瓨澶辫触');
+              });
+          }
+        } else {
+          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��');
+        }
+      });
+    },
+
+    close() {
+      this.formData ={
+        warehouseId: '', // 璋冩嫧浠撳簱id
+        procureTime: '', // 璋冩嫧鏃堕棿
+        procureGoods: [],
+      }
+      this.$emit('close')
+    },
+
+    // 閫氳繃瀛愰泦id鏌ュ埌鎵�浠ョ浉鍏崇埗绾d骞惰繑鍥炴暟缁�
+    findParentIds(dataSource, nodeId) {
+      const parentIds = []; // 鐢ㄤ簬瀛樺偍鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
+
+      // 瀹氫箟涓�涓�掑綊鍑芥暟锛岀敤浜庨亶鍘嗘暣妫垫爲骞舵煡鎵惧瓙鑺傜偣鐨勬墍鏈夌埗鑺傜偣
+      function traverse(node, nodeId) {
+        if (node.id === nodeId) {
+          // 濡傛灉褰撳墠鑺傜偣鐨処D绛変簬瀛愯妭鐐圭殑ID锛屽垯琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣锛屽彲浠ュ紑濮嬪悜涓婃煡鎵剧埗鑺傜偣
+          return true; // 杩斿洖true琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣
+        }
+
+        if (node.children) {
+          // 濡傛灉褰撳墠鑺傜偣鏈夊瓙鑺傜偣锛屽垯缁х画閬嶅巻瀛愯妭鐐�
+          for (const childNode of node.children) {
+            if (traverse(childNode, nodeId)) {
+              // 濡傛灉鍦ㄥ瓙鑺傜偣涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欏皢褰撳墠鑺傜偣鐨処D娣诲姞鍒扮埗鑺傜偣ID鏁扮粍涓紝骞惰繑鍥瀟rue琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣
+              parentIds.push(node.id);
+              return true;
+            }
+          }
+        }
+
+        return false; // 濡傛灉褰撳墠鑺傜偣涓嶆槸瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欒繑鍥瀎alse
+      }
+
+      // 浠庢牴鑺傜偣寮�濮嬮亶鍘嗘暣妫垫爲锛屽苟璋冪敤閫掑綊鍑芥暟鏌ユ壘瀛愯妭鐐圭殑鎵�鏈夌埗鑺傜偣
+      for (const node of dataSource) {
+        if (traverse(node, nodeId)) {
+          // 濡傛灉鍦ㄥ綋鍓嶈妭鐐圭殑瀛愭爲涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欑洿鎺ラ��鍑哄惊鐜�
+          break;
+        }
+      }
+
+      return parentIds; // 杩斿洖鎵�鏈夌埗鑺傜偣ID鐨勬暟缁�
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+@import url(../../index.scss);
+</style>
diff --git a/admin-web/src/views/stock/transfer/transferissue/index.vue b/admin-web/src/views/stock/transfer/transferissue/index.vue
index 77df32b..0c0d7c4 100644
--- a/admin-web/src/views/stock/transfer/transferissue/index.vue
+++ b/admin-web/src/views/stock/transfer/transferissue/index.vue
@@ -1,125 +1,84 @@
 <template>
-  <div class="app-container">
+  <div class="app-container stock-container">
     <el-container>
-      <el-container>
-        <el-card class="box-card" style="width: 100%" shadow="never">
-          <!--鎼滅储鏉′欢-->
-          <div class="filter-container">
-            <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
-          </div>
-          <el-row style="margin-top: 15px">
-            <el-col>
-              <!--鍒楄〃-->
-              <my-button name="鏂板" @click="addtable" site="form" />
-              <div :style="{'overflow-y': 'auto', height:`${clientHeight - 320}px`}">
-                    <el-row class="card"
-                            :gutter="5">
-                        <el-col v-for="(item, index) in proData" :key="index" class="cm-item">
-                          <el-card class="card-data">
-                            <div class="card-container">
-                              <div class="hed-one"> <span>璋冩嫧鍗曞彿锛歿{ item.order_no }}</span><span style="margin-left: 20px;"><el-button type="warning" plain size="mini">寰呮帴鏀�</el-button></span></div>
-                              <div class="one-hed">
-                                <div class="box"><span class="span-two">鎺ュ彈鏈烘瀯锛�</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鐢宠浜猴細</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鐢宠璋冩嫧鏃堕棿锛�</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鎺ユ敹鏃堕棿锛�</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">璋冩嫧鏃堕棿锛�</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鎺ュ彈浜猴細</span>{{ item.customer_name }}</div>
-                                <div class="box"><span class="span-two">鎺ュ彈鏃堕棿锛�</span>{{ item.customer_name }}</div>
-                              </div>
-                              <div class="card-end">
-                                <div v-for="(just, index) in item.data" class="two-end">
-                                  <div class="item"><span>{{ just.order_no }}锛�</span>{{ just.customer_name }}</div>
-                                </div>
-                              </div>
+      <el-card class="box-card" style="width: 100%" shadow="never">
+        <!--鎼滅储鏉′欢-->
+        <div class="filter-container">
+          <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
+        </div>
+        <el-row style="margin-top: 15px">
+          <el-col>
+            <!--鍒楄〃-->
+            <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading">
+              <el-row class="card" :gutter="5">
+                <el-col v-for="(item, index) in list" :key="index" class="cm-item">
+                  <el-card class="card-data">
+                    <div class="card-container">
+                      <div class="card-header">
+                        <div class="card-header-left">
+                          <span>璋冩嫧鍗曞彿锛�</span>
+                          <span class="value">{{ item.businessFormCode }}</span>
+                        </div>
+                        <div class="card-header-right">
+                            <el-button site="form" type="success" size="mini" @click="handleExport(item)"
+                              >瀵煎嚭璋冩嫧鍗�</el-button
+                            >
+                          <el-button name="鏌ョ湅璇︽儏" site="form" type="info" size="mini" @click="handleDetail(item)"
+                            >鏌ョ湅璇︽儏</el-button
+                          >
+                        </div>
+                      </div>
+                      <div class="one-hed">
+                        <div class="box"><span class="span-two">鎺ユ敹鏈烘瀯锛�</span>{{ item.agencyId }}</div>
+                        <div class="box"><span class="span-two">鐢宠浜猴細</span>{{ item.buyerName }}</div>
+                        <div class="box">
+                          <span class="span-two">鐢宠璋冩嫧鏃堕棿锛�</span>{{ item.procureTime | formatTime }}
+                        </div>
+                        <div class="box">
+                          <span class="span-two">鎺ユ敹鏃堕棿锛�</span>{{ item.procureTime | formatTime }}
+                        </div>
+                      </div>
+                      <div class="one-hed">
+                        <div class="box"><span class="span-two">璋冩嫧鏈烘瀯锛�</span>{{ item.agencyId }}</div>
+                        <div class="box"><span class="span-two">璋冩嫧浜猴細</span>{{ item.buyerName }}</div>
+                        <div class="box">
+                          <span class="span-two">璋冩嫧鏃堕棿锛�</span>{{ item.procureTime | formatTime }}
+                        </div>
+                      </div>
+                      <div class="card-end">
+                        <div v-for="(just, index) in item.fromProcureTemplateInfoList" :key="index" class="item">
+                          <div class="name">{{ just.goodsTemplateName }}</div>
+                          <div class="value-box">
+                            <div class="value-box-item">
+                              <span class="label">鏁伴噺锛�</span>
+                              <span class="value">{{ just.count }}</span>
+                              <span class="unit">{{ just.unit }}</span>
                             </div>
-                            <div class="card-but">
-                              <div  style="margin-top: 10px;">
-                                <my-button style="width: 120px;" name="鍒犻櫎"   site="form" />
-                                <my-button style="width: 120px;" name="鏌ョ湅璇︽儏" site="form" />
-                              </div>
-                            </div>
-                            
-                          </el-card>
-                        </el-col>
-                    </el-row>
-              </div>
-              <el-pagination
-                :small="false"
-                :current-page="1"
-                :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
-                :page-size="10"
-                layout="total, sizes, prev, pager, next, jumper"
-                :total="0"
-                @size-change="handleSizeChange"
-                @current-change="handleCurrentChange"
-              />
-            </el-col>
-          </el-row>
-          <!--娣诲姞/缂栬緫寮圭獥-->
-          <el-dialog title="鏂板鍑哄簱"  :close-on-click-modal="false" :visible.sync="adddialog" width="60%" >
-            <el-form ref="ruleForm" :model="formData" class="demo-ruleForm" label-width="100px">
-              <el-row :gutter="24" class="headerHeight">
-                  <el-col :span="12">
-                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                    </el-form-item>
-                  </el-col>
-                  <el-col :span="12">
-                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <el-row :gutter="24" class="headerHeight">
-                  <el-col :span="24">
-                    <el-form-item label="鍑哄簱鎵嬬画" prop="name">                      
-                      浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢
-                    </el-form-item>
-                  </el-col>
-                </el-row>
-                <div style="position: relative;">
-                  <div style="background-color: #F9F9F9;width: 90%;">
-                  <el-row :gutter="24" class="">
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-row :gutter="24" class="">
-                    <el-col :span="12">
-                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
-                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
-                      </el-form-item>
-                    </el-col>
-                  </el-row>
-                  <el-table :data="formData.tableData" height="100%"  :stripe="true">
-                    <el-table-column prop="projectName" label="瑙勬牸鍨嬪彿" align="center"> </el-table-column>
-                    <el-table-column prop="time1" label="鍗曚綅"  align="center"> </el-table-column>
-                    <el-table-column prop="unit" label="鐜版湁搴撳瓨" align="center"> </el-table-column>
-                    <el-table-column prop="time2" label="鍑哄簱鏁伴噺"  align="center"> </el-table-column>
-                  </el-table>
-                  </div>
-                  <div style="position: absolute;right: 0;top: 152px;">
-                    <my-button style="display: block;margin-left: 10px;margin-bottom: 5px;" name="绉婚櫎" site="form"/>
-                    <my-button name="鏂板鐗╁搧" site="form"/>
-                  </div>
-                </div>
-            </el-form>
-            <div slot="footer" align="center" class="dialog-footer">
-              <my-button name="纭畾" site="form" />
-              <my-button name="鍙栨秷" site="form" @click="adddialog = false"/>
+                          </div>
+                        </div>
+                      </div>
+                    </div>
+                  </el-card>
+                </el-col>
+              </el-row>
             </div>
-          </el-dialog>
-        </el-card>
-      </el-container>
+            <el-pagination
+              :small="false"
+              :current-page="pageNum"
+              :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
+              :page-size="pageSize"
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="total"
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+            />
+          </el-col>
+        </el-row>
+      </el-card>
     </el-container>
+    <!--娣诲姞/缂栬緫寮圭獥-->
+    <edit v-if="editSetting.show" :setting="editSetting" ref="editRef" @close="editSetting.show=false" @search="refreshData"></edit>
+    <detail ref="detailRef"></detail>
     <my-import
       :import-setting="importSetting"
       :dialog-show="importSetting.dialogShow"
@@ -129,196 +88,87 @@
 </template>
 
 <script>
-import MyButton from "@/components/myButton/myButton";
+import { procureList, procureDel, procureIncome } from '@/api/stock/procure/purchaseOrder';
+import MyButton from '@/components/myButton/myButton';
 import SettingIplatform from '@/utils/settingIplatform';
-import myImport from '@/views/components/myImport'
-import {getBaseUrl} from '@/utils/base';
+import myImport from '@/views/components/myImport';
+import edit from './edit';
+import detail from './detail';
+import { getBaseUrl } from '@/utils/base';
+import * as DateFormatter from '@/utils/DateFormatter';
 
 export default {
-  name: "index",
-  components: {MyButton, myImport},
+  name: 'index',
+  components: { MyButton, myImport, edit, detail },
   data() {
     return {
-      
+      loading: false,
       adddialog: false,
-      formData:{
-        tableData:[
-          {
-            projectName:'555'
-          },
-          {
-            projectName:'444'
-          }
-        ],
-      },
+      list: [],
       // 鎼滅储妗�
       items: [
         {
           type: 'text',
-          dataIndex: 'name',
-          label: '鍑哄簱鍗曞彿',
+          dataIndex: 'businessFormCode',
+          label: '璋冩嫧鍗曞彿',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
         },
         {
           type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'goodsTemplateName',
           label: '鐗╁搧鍚嶇О',
           placeholder: '鍙ā绯婃悳绱�',
-          defaultValue: ''
+          defaultValue: '',
+        },
+        {
+          type: 'select',
+          dataIndex: 'name',
+          label: '鏈烘瀯',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '',
+          options: [],
         },
         {
           type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'buyerName',
           label: '鍒涘缓浜�',
           placeholder: '璇疯緭鍏�',
-          defaultValue: ''
+          defaultValue: '',
+        },
+        {
+          type: 'select',
+          dataIndex: 'states',
+          label: '鐘舵��',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '',
+          options: [
+            {
+              label: '鍏ㄩ儴',
+              value: '',
+            },
+            {
+              label: '寰呰皟鎷�',
+              value: '1',
+            },
+            {
+              label: '宸茶皟鎷�',
+              value: '2',
+            },
+          ],
         },
         {
           type: 'date-picker',
           dataIndex: 'val1',
-          label: '鍑哄簱鏃堕棿',
-          defaultValue: ''
+          label: '璋冩嫧鏃堕棿',
+          defaultValue: '',
         },
         {
           type: 'date-picker',
           dataIndex: 'val2',
           label: '鑷�',
-          defaultValue: ''
+          defaultValue: '',
         },
-        // {
-        //   type: 'select',
-        //   dataIndex: 'status',
-        //   label: '鐘舵��',
-        //   placeholder: '璇烽�夋嫨',
-        //   defaultValue: '1',
-        //   options: [
-        //     {
-        //       label: '鍚敤',
-        //       value: '1'
-        //     },
-        //     {
-        //       label: '绂佺敤',
-        //       value: '0'
-        //     }
-        //   ]
-        // }
-      ],
-      proData: [
-        {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-        },
-        {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃'
-            },
-          ]
-        },
-        {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-        },
-        {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        },
-        {
-          order_no:'55555',
-          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
-          data:[
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'20浠�'
-            },
-            {
-              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
-              customer_name:'666'
-            },
-          ]
-          
-        }
       ],
       // 鏍戞暟鎹�
       treeDataList: [],
@@ -327,25 +177,25 @@
         tenantId: null,
         userName: null,
         userPhone: null,
-        status: 1
+        states: null,
       },
       // 瀵煎叆
       importSetting: {
-          dialogTitle: '瀵煎叆',
-          dialogShow: false,
-          fileSettings: {
-              data: {},
-              uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃
-              accept: '.xls', // 鏍煎紡
-              type: 'text', // 鍥炴樉褰㈠紡
-              loading: false // 瀵煎叆鏁堟灉
-          },
-          /* 妯℃澘涓嬭浇 */
-          templateSettings: {
-              templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
-              templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃
-          },
-          onSuccess: null
+        dialogTitle: '瀵煎叆',
+        dialogShow: false,
+        fileSettings: {
+          data: {},
+          uploadUrl: getBaseUrl() + '/pc/fin/sys/tenant/import', // 涓婁紶鍦板潃
+          accept: '.xls', // 鏍煎紡
+          type: 'text', // 鍥炴樉褰㈠紡
+          loading: false, // 瀵煎叆鏁堟灉
+        },
+        /* 妯℃澘涓嬭浇 */
+        templateSettings: {
+          templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О
+          templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate', // 涓嬭浇鍦板潃
+        },
+        onSuccess: null,
       },
       editSetting: {
         title: '',
@@ -353,105 +203,121 @@
         orgId: '',
         show: false,
       },
-    }
+      pageNum: 1,
+      pageSize: 10,
+      total: 0,
+    };
   },
   computed: {
-    clientHeight () {
-      return document.documentElement.clientHeight
+    clientHeight() {
+      return document.documentElement.clientHeight;
+    },
+  },
+  filters: {
+    formatTime(time) {
+      if (!time) return;
+      return DateFormatter.LongToDateTime(time);
     },
   },
   created() {
+    this.fetchData();
   },
   methods: {
-    handleSizeChange(){},
-    handleCurrentChange(){},
+    fetchData() {
+      this.loading = true;
+      procureList({
+        pageNum: this.pageNum,
+        pageSize: this.pageSize,
+        ...this.filterFrom,
+      }).then((res) => {
+        this.list = res.datas;
+        this.total = res.totalRows;
+        this.loading = false;
+        console.log(this.list);
+      });
+    },
     //瀵煎叆
     importOrg() {
-        this.importSetting.dialogShow = true
-        this.importSetting.onSuccess = (response, callBack) => {
-            if (response.code===1){
-              this.$message.success(response.msg)
-              this.search(1)
-            }else{
-              this.$message.warning(response.msg)
-            }
-            callBack()
+      this.importSetting.dialogShow = true;
+      this.importSetting.onSuccess = (response, callBack) => {
+        if (response.code === 1) {
+          this.$message.success(response.msg);
+          this.search(1);
+        } else {
+          this.$message.warning(response.msg);
         }
+        callBack();
+      };
     },
-   
-    addtable() {
-      this.adddialog = true
+    // 瀵煎嚭
+    handleExport() {},
+    // 鏂板
+    handleAdd() {
+      this.editSetting.id = null;
+      this.editSetting.info = null;
+      this.editSetting.title = '鏂板';
+      this.editSetting.show = true;
+    },
+    // 缂栬緫
+    handleEdit(row) {
+      this.editSetting.id = row.id;
+      this.editSetting.info = null;
+      this.editSetting.title = '缂栬緫';
+      this.editSetting.show = true;
+    },
+    // 璇︽儏
+    handleDetail(row) {
+      this.$refs.detailRef.open(row.id);
+    },
+    // 璋冩嫧
+    handleIncome(row) {
+      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  璋冩嫧鍚�?`, '璋冩嫧璋冩嫧')
+        .then(function () {
+          procureIncome({ id: row.id }).then((res) => {
+            this.$message.success('璋冩嫧鎴愬姛锛�');
+            this.search();
+          });
+        })
+        .catch(() => {});
+    },
+    del(row) {
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎璋冩嫧鍗曞彿涓�"' + row.businessFormCode + '"鐨勬暟鎹悧锛�')
+        .then(function () {
+          procureDel({ id: row.id }).then((res) => {});
+        })
+        .then((res) => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.search();
+        })
+        .catch(() => {});
+    },
+    // 鍒嗛〉
+    handleSizeChange(pageSize) {
+      this.pageSize = pageSize;
+      this.search({ pageNum: 1 });
+    },
+    handleCurrentChange(pageNum) {
+      this.myTable.paging.page.pageNum = pageNum;
+      this.search({ pageNum: pageNum });
     },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
-      if (pageNum != undefined) {
-        // this.$refs.myTable.search(pageNum)
-      } else {
-        // this.$refs.myTable.search()
-      }
+      this.fetchData();
+    },
+    refreshData() {
+      this.pageNum = 1;
+      this.pageSize = 10;
+      this.search();
     },
     fifterForm(params) {
-      console.log(params,'555');
-      this.filterFrom = Object.assign(this.filterFrom, params)
-      this.search(1)
-    }
-  }
-}
+      this.filterFrom = Object.assign(this.filterFrom, params);
+      this.search(1);
+    },
+  },
+};
 </script>
 
-<style scoped>
-.card {
-    display: flex;
-    flex-wrap: wrap;
-    margin: 0px !important;
-    .cm-item {
-        width: 100%;
-    }
-    .cm-item /deep/ .el-card__body {
-        padding: 10px;
-    }
-}
-.card-data{
-  position: relative;
-  margin-top: 8px;
-  .card-container{
-    display: inline-block; 
-    width: 70%;
-    .hed-one{
-      color: #2298EE;
-      font-size: 18px;
-    }
-    .one-hed{
-      margin-top: 5px;
-      .box{
-        display: inline-block;  
-        margin-right: 20px;  
-        margin-top: 10px;
-      }
-    }
-    .span-two{
-      color: #83919e;
-      font-size: 14px;
-    }
-    .card-end{
-      font-size: 14px;
-      color: #3d3d3d;
-      margin-top: 15px;
-      display: flex;  
-      flex-wrap: wrap; 
-      .two-end{
-        width: calc(33.33% - 20px); 
-        margin-bottom: 15px; 
-      }
-    }
-    
-  }
-  .card-but{
-    position: absolute;
-    right: 20px;
-    top: 40%;
-  }
-  
-}
-
+<style scoped lang="scss">
+@import url(../../index.scss);
 </style>

--
Gitblit v1.9.1