From b6a04be0a4cbf5d5a44006a09b83f52a71dfce27 Mon Sep 17 00:00:00 2001
From: haoyahui <2032914783@qq.com>
Date: 星期五, 17 十一月 2023 10:19:48 +0800
Subject: [PATCH] 部门管理,仓库管理库管员,库存管理

---
 admin-web/src/views/systemManger/server/user/index.vue             |    2 
 admin-web/src/views/stock/inventorycount/inventorytask/index.vue   |    3 
 admin-web/src/views/foundation/store/edit.vue                      |   38 
 admin-web/src/api/stock/inventory.js                               |   42 
 admin-web/src/views/stock/procure/purchaseOrder/detail.vue         |   13 
 admin-web/src/views/stock/transfer/transferApplication/index.vue   |   53 
 admin-web/src/views/foundation/store/index.vue                     |   31 
 admin-web/src/views/stock/accessStock/outbound/detail.vue          |    5 
 admin-web/src/api/baseSetting/finsystenant.js                      |    9 
 admin-web/src/views/systemSetting/department/edit.vue              |  136 ++
 admin-web/src/views/stock/inventorycount/inventorytask/edit.vue    |   41 
 admin-web/src/views/stock/accessStock/outbound/edit.vue            |   87 
 admin-web/src/views/systemSetting/department/index.vue             |  407 ++-----
 admin-web/src/views/stock/procure/receiptDetails/index.vue         |   51 
 admin-web/src/api/system/deptment.js                               |   36 
 admin-web/src/views/foundation/store/person.vue                    |  215 ++++
 admin-web/src/views/stock/transfer/transferApplication/edit.vue    |   52 
 admin-web/src/views/stock/transfer/transferissue/index.vue         |   12 
 admin-web/src/views/stock/scrap/itemScrapping/detail.vue           |    6 
 admin-web/src/styles/store.scss                                    |  201 ++++
 admin-web/src/views/departmentitem/itemdis/distribution/detail.vue |  209 ++++
 admin-web/src/views/systemManger/server/user/edit.vue              |   16 
 admin-web/src/views/stock/procure/purchaseOrder/edit.vue           |   35 
 /dev/null                                                          |   33 
 admin-web/src/api/stock/accessStock.js                             |    8 
 admin-web/src/views/departmentitem/itemdis/distribution/edit.vue   |  549 +++++++++++
 admin-web/src/views/departmentitem/itemdis/distribution/index.vue  |  619 ++++-------
 admin-web/src/api/foudation/store.js                               |   26 
 admin-web/src/views/foundation/material/index.vue                  |    2 
 29 files changed, 1,999 insertions(+), 938 deletions(-)

diff --git a/admin-web/src/api/baseSetting/finsystenant.js b/admin-web/src/api/baseSetting/finsystenant.js
index aafc643..4215cc1 100644
--- a/admin-web/src/api/baseSetting/finsystenant.js
+++ b/admin-web/src/api/baseSetting/finsystenant.js
@@ -177,4 +177,13 @@
 // 鐗╁搧鍒嗙被tree
 export function getCategorySelectTree(parameter) {
   return request.get(SettingIplatform.apiBaseURL + '/pc/base/category/select/tree', {params: parameter})
+}
+
+// 搴撳瓨
+export function warehouseSelectNumber(params) {
+  return request({
+    url: '/pc/base/warehouse/select/number',
+    method: 'get',
+    params,
+  });
 }
\ No newline at end of file
diff --git a/admin-web/src/api/foudation/store.js b/admin-web/src/api/foudation/store.js
new file mode 100644
index 0000000..90589fb
--- /dev/null
+++ b/admin-web/src/api/foudation/store.js
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+import SettingIplatform from '@/utils/settingIplatform';
+
+export function userSelectDepartment(params) {
+  return request({
+    url: '/pc/fin/sys/tenant/user/select/department',
+    method: 'get',
+    params
+  })
+}
+// 娣诲姞浠撳簱绠$悊鍛�
+export function warehouseManagerAdd(data) {
+  return request({
+    url: '/pc/base/warehouse/manager/add',
+    method: 'post',
+    data
+  })
+}
+// 鏌ヨ浠撳簱绠$悊鍛�
+export function warehouseManagerList(params) {
+  return request({
+    url: '/pc/base/warehouse/manager/list',
+    method: 'get',
+    params
+  })
+}
\ No newline at end of file
diff --git a/admin-web/src/api/stock/accessStock.js b/admin-web/src/api/stock/accessStock.js
index 7a0135e..f2fca52 100644
--- a/admin-web/src/api/stock/accessStock.js
+++ b/admin-web/src/api/stock/accessStock.js
@@ -24,14 +24,6 @@
     params,
   });
 }
-// 搴撳瓨
-export function outputSelectNumber(params) {
-  return request({
-    url: '/pc/l/wh/form/output/select/number',
-    method: 'get',
-    params,
-  });
-}
 // 鏄庣粏璇︽儏
 export function outputDtailList(params) {
   return request({
diff --git a/admin-web/src/api/stock/inventory.js b/admin-web/src/api/stock/inventory.js
new file mode 100644
index 0000000..804a57b
--- /dev/null
+++ b/admin-web/src/api/stock/inventory.js
@@ -0,0 +1,42 @@
+import request from '@/utils/request';
+
+// 鍒楄〃
+export function inventoryListApi(params) {
+  return '/pc/l/wh/form/inventory/list'
+}
+
+// 鏂板
+export function inventoryAdd(data) {
+  return request({
+    url: '/pc/l/wh/form/inventory/add',
+    method: 'post',
+    data,
+  });
+}
+
+// 缂栬緫
+export function inventoryEdit(data) {
+  return request({
+    url: '/pc/l/wh/form/inventory/edit',
+    method: 'post',
+    data,
+  });
+}
+
+// 鍒犻櫎
+export function inventoryDel(data) {
+  return request({
+    url: '/pc/l/wh/form/inventory/del',
+    method: 'post',
+    data,
+  });
+}
+
+// 瀹屾垚鐩樼偣
+export function inventoryFinish(data) {
+  return request({
+    url: '/pc/l/wh/form/inventory/finish',
+    method: 'post',
+    data,
+  });
+}
diff --git a/admin-web/src/api/system/deptment.js b/admin-web/src/api/system/deptment.js
new file mode 100644
index 0000000..9a89cb5
--- /dev/null
+++ b/admin-web/src/api/system/deptment.js
@@ -0,0 +1,36 @@
+import request from '@/utils/request';
+
+// 閮ㄩ棬鏂板
+export function departmentAdd(data) {
+  return request({
+    url: '/pc/fin/sys/tenant/department/add',
+    method: 'post',
+    data,
+  });
+}
+// 缂栬緫
+export function departmentEdit(data) {
+  return request({
+    url: '/pc/fin/sys/tenant/department/edit',
+    method: 'post',
+    data,
+  });
+}
+
+// 缂栬緫
+export function departmentDetail(params) {
+  return request({
+    url: '/pc/fin/sys/tenant/department/detail',
+    method: 'get',
+    params,
+  });
+}
+
+export function departmentListAll(params) {
+    return request({
+      url: '/pc/fin/sys/tenant/department/list/all',
+      method: 'get',
+      params,
+    });
+  }
+
diff --git a/admin-web/src/styles/store.scss b/admin-web/src/styles/store.scss
new file mode 100644
index 0000000..3227b22
--- /dev/null
+++ b/admin-web/src/styles/store.scss
@@ -0,0 +1,201 @@
+.stock-container {
+    .ml-20 {
+      margin-left: 20px;
+    }
+    .card,.list-item {
+      display: flex;
+      flex-wrap: wrap;
+      margin: 0px !important;
+      width: 100%;
+      min-height: 100%;
+      .cm-item {
+        width: 100%;
+      }
+      .cm-item .el-card__body {
+        padding-bottom: 5px;
+      }
+    }
+    .card-data {
+      width: 100%;
+      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: rgba($color:#f9675b99,$alpha:0.1);
+            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: rgba($color:#39ad6199,$alpha:0.1);
+            color: #39ad61;
+          }
+          .states-info {
+            border: 1px solid #999999;
+            background: rgba($color:#999999,$alpha:0.1);
+            color: #999999;
+          }
+          .states-warning {
+            border: 1px solid #e6a23c;
+            background: rgba($color:#e6a23c,$alpha:0.1);
+            color: #e6a23c;
+          }
+        }
+        .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;
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  .no-data{
+    margin-top: 100px;
+    text-align: center;
+    color: #909399;
+  }
+  
+  /*缂栬緫*/
+  .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/departmentitem/itemdis/distribution/detail.vue b/admin-web/src/views/departmentitem/itemdis/distribution/detail.vue
new file mode 100644
index 0000000..d306e90
--- /dev/null
+++ b/admin-web/src/views/departmentitem/itemdis/distribution/detail.vue
@@ -0,0 +1,209 @@
+<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.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="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" 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.baseCategoryName }}</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 | formatPrice }}
+          </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  | formatPrice}}
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+    <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 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 {
+      fileList: [],
+      detail: {
+        baseCategoryName: '',
+        businessFormCode: '',
+        goodsTemplateName: '',
+        procureDoc: '',
+        agencyId: '',
+        agencyName: '',
+        states: '',
+        createName: '',
+        time: '',
+        procureGoods: [{}, {}],
+        fileKey: Math.random(),
+      },
+    };
+  },
+  filters: {
+    formatTime(time) {
+      if (!time) return '-';
+      return DateFormatter.LongToDateTime(time);
+    },
+    formatPrice(price) {
+      return price / 100
+    }
+  },
+  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: {
+    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.$emit('close');
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import url(../../../../styles/store.scss);
+</style>
diff --git a/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue b/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue
new file mode 100644
index 0000000..f9c6b1c
--- /dev/null
+++ b/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue
@@ -0,0 +1,549 @@
+<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="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 ref="uploadRef" :values="fileList" :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="rules.baseGoodsTemplateId"
+              >
+                <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="priceYuan" label="鍗曚环锛堝厓锛�" align="center">
+              <template slot-scope="scope">
+                <el-form-item
+                  label-width="0"
+                  style="margin-bottom: 0"
+                  :prop="`procureGoods[${goodsIndex}].models[${scope.$index}].priceYuan`"
+                  :rules="rules.priceYuan"
+                >
+                  <el-input
+                    type="number"
+                    v-model.number="scope.row.priceYuan"
+                    @change="priceChange($event, goodsIndex, scope.$index)"
+                  ></el-input>
+                </el-form-item>
+              </template>
+            </el-table-column>
+            <el-table-column prop="counts" label="閲囪喘鏁伴噺" align="center">
+              <template slot-scope="scope">
+                <el-form-item
+                  label-width="0"
+                  style="margin-bottom: 0"
+                  :prop="`procureGoods[${goodsIndex}].models[${scope.$index}].counts`"
+                  :rules="rules.counts"
+                >
+                  <el-input v-model.number="scope.row.counts"></el-input>
+                </el-form-item>
+              </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, getDownUrl } from '@/utils/base';
+import { findParentIds } from '@/utils/index';
+import { mapGetters } from 'vuex';
+
+export default {
+  components: { MyButton, winMd, upload },
+  props: {
+    setting: {
+      type: Object,
+      default: () => {},
+    },
+  },
+  data() {
+    // 鑷畾涔夋牎楠�
+    // 鐗╁搧閲嶅鏍¢獙
+    var checkGoodsTemplateId = (rule, value, callback) => {
+      if (!value) {
+        return callback(new Error('璇烽�夋嫨'));
+      }
+      let temp = this.formData.procureGoods.filter((v) => v.baseGoodsTemplateId == value);
+      if (!temp || temp.length != 1) {
+        return callback(new Error('宸查�夎繃姝ょ墿鍝�'));
+      }
+      callback();
+    };
+    // 閲戦鏍¢獙
+    var checkPrice = (rule, value, callback) => {
+      console.log(value);
+      if (!value) {
+        return callback(new Error('璇疯緭鍏�'));
+      }
+      if (value == 0) {
+        this.$message.warning('鏁板瓧鍊间笉鑳戒负0');
+        return callback(new Error('鏁板瓧鍊间笉鑳戒负0'));
+      }
+      callback();
+    };
+    // 鏁伴噺鏍¢獙
+    var checkCounts = (rule, value, callback) => {
+      console.log(value);
+      if (!value) {
+        return callback(new Error('璇疯緭鍏�'));
+      }
+      if (!Number.isInteger(value)) {
+        this.$message.warning('璇疯緭鍏ユ暟瀛楀��');
+        return callback(new Error('璇疯緭鍏ユ暟瀛楀��'));
+      }
+      if (value == 0) {
+        this.$message.warning('鏁板瓧鍊间笉鑳戒负0');
+        return callback(new Error('鏁板瓧鍊间笉鑳戒负0'));
+      }
+      callback();
+    };
+    return {
+      loading: false,
+      buyTypeOptions: [
+        {
+          label: '闆嗛噰',
+          value: '1',
+        },
+        {
+          label: '鑷噰',
+          value: '2',
+        },
+      ],
+      fileList: [],
+      warehouses: [], // 鍏ュ簱浠撳簱鍒楄〃
+      categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃
+      modelList: [], //鍨嬪彿鍒楄〃
+      formData: {
+        procureDoc: '',
+        warehouseId: '', // 鍏ュ簱浠撳簱id
+        procureTime: '', // 閲囪喘鏃堕棿
+        buyType: '2', // 閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛�
+        procureGoods: [],
+      },
+      goodsItem: {
+        baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍
+        baseCategoryId: '', // 鍒嗙被缂栧彿
+        baseGoodsTemplateId: '', // 鐗╁搧妯$増缂栧彿
+        goodsTemplateName: '', // 鐗╁搧妯$増鍚嶇О
+        supplier: '', // 渚涘簲鍟�
+        sort: '', // 鏄剧ず椤哄簭
+        goodsOptions: [], // 鐗╁搧鍒楄〃select
+        modelsOptions: [], //瑙勬牸鍨嬪彿select
+        models: [], // 鐗╁搧鍚嶇О
+        modelsIds: [], //瑙勬牸鍨嬪彿
+      },
+      modelsItem: {
+        baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿
+        priceYuan: null, // 鍗曚环(鍏�)
+        price: null, // 鍗曚环(鍒� 閲囪喘闇�瑕侊紝璋冩嫧涓嶉渶瑕�)
+        counts: null, // 鎿嶄綔鏁伴噺
+        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: [{ validator: checkGoodsTemplateId, trigger: ['blur', 'change'] }],
+        modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        priceYuan: [{ validator: checkPrice, trigger: 'blur' }],
+        counts: [{ validator: checkCounts, trigger: 'blur' }],
+      },
+
+      uploadSettings: {
+        title: '涓婁紶',
+        max: 20, // 鏈�澶уぇ灏忥紝鍗曚綅M
+        num: 10, // 鏀寔涓婁紶鍥剧墖涓暟
+        accept: '.jpg,.png', // 闄愬埗鏍煎紡
+        tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb`
+        uploadUrl: getUploadUrl(), // 涓婁紶璺緞
+        multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶
+        disabled: false, // 鏄惁绂佺敤
+        type: 'picture', // text/picture
+      },
+    };
+  },
+  computed: {
+    ...mapGetters(['userInfo']),
+  },
+  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);
+        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鎷兼帴鐗╁搧鍒嗙被鍒楄〃
+          item.baseCategoryIds = findParentIds(this.categoryOptions, item.baseCategoryId);
+          this.$set(
+            this.formData.procureGoods[index],
+            'modelsIds',
+            item.models.map((v) => v.baseGoodsModelsId),
+          );
+          this.getgoodsTemplate(item.baseCategoryId, index);
+          this.getgoodsModel(item.baseGoodsTemplateId, index);
+          item.models.forEach((child, childIndex) => {
+            this.$set(this.formData.procureGoods[index].models[childIndex], 'priceYuan', child.price / 100);
+          });
+          return item;
+        });
+      }
+    },
+
+    // 鑾峰彇鍏ュ簱浠撳簱鍒楄〃
+    getWarehouseList() {
+      selectTenantWarehouse({ agencyId: this.userInfo.tenantId })
+        .then((res) => {
+          this.warehouses = res;
+          if (!this.setting.id && res.length) {
+            this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
+          }
+          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);
+    },
+
+    // 浠锋牸input鐩戝惉 杞负鍒�
+    priceChange(e, goodsIndex, index) {
+      this.formData.procureGoods[goodsIndex].models[index].price = e * 100;
+    },
+
+    // 涓婁紶
+    uploadChange() {
+      let arr = this.$refs.uploadRef.fileList;
+      this.formData.procureDoc = JSON.stringify(arr);
+    },
+
+    // 鐐瑰嚮鏂板鐗╁搧
+    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('formData', this.formData);
+          debugger;
+          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');
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+@import url(../../../../styles/store.scss);
+</style>
diff --git a/admin-web/src/views/departmentitem/itemdis/distribution/index.vue b/admin-web/src/views/departmentitem/itemdis/distribution/index.vue
index ea1d5b0..0c1733b 100644
--- a/admin-web/src/views/departmentitem/itemdis/distribution/index.vue
+++ b/admin-web/src/views/departmentitem/itemdis/distribution/index.vue
@@ -1,118 +1,109 @@
 <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 v-if="list.length" 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">
+                          <template v-if="item.states == 1">
+                            <el-button name="缂栬緫" site="form" type="success" size="mini" @click="handleEdit(item)"
+                              >缂栬緫</el-button
+                            >
+                            <el-button name="鍏ュ簱" site="form" type="primary" size="mini" @click="handleIncome(item)"
+                              >鍏ュ簱</el-button
+                            >
+                            <el-button name="鍒犻櫎" site="form" type="danger" size="mini" @click="del(item)"
+                              >鍒犻櫎</el-button
+                            >
+                          </template>
+                          <template v-if="item.states != 1">
+                            <el-button site="form" type="success" size="mini" @click="handleExport(item)"
+                              >瀵煎嚭鍏ュ簱鍗�</el-button
+                            >
+                          </template>
+                          <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.incomeTime | 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 class="no-data" v-else>鏆傛棤鏁版嵁</div>
+            </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="detailSetting.show = false"
+      ref="detailRef"
+    ></detail>
     <my-import
       :import-setting="importSetting"
       :dialog-show="importSetting.dialogShow"
@@ -122,328 +113,178 @@
 </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 listPage from '../../../mixins/listPage'
 
 export default {
-  name: "index",
-  components: {MyButton, myImport},
+  name: 'index',
+  mixins: [listPage],
+  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: 'cascader',
+          dataIndex: 'agencyId',
+          label: '鏈烘瀯',
+          placeholder: '璇烽�夋嫨',
+          optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null },
+          defaultValue: '',
+          options: [],
         },
         {
           type: 'text',
-          dataIndex: 'name',
+          dataIndex: 'createName',
           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: ''
+          dataIndex: 'incomeTimeStart',
+          label: '鍏ュ簱鏃堕棿',
+          defaultValue: '',
         },
         {
           type: 'date-picker',
-          dataIndex: 'val2',
+          dataIndex: 'incomeTimeEnd',
           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: [],
-      // 鎼滅储鏉′欢
-      filterFrom: {
-        tenantId: null,
-        userName: null,
-        userPhone: null,
-        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,
-      },
-    }
-  },
-  computed: {
-    clientHeight () {
-      return document.documentElement.clientHeight
-    },
-  },
-  created() {
+    };
   },
   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
+    // 鍏ュ簱
+    handleIncome(row) {
+      this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  鍏ュ簱鍚�?`, '閲囪喘鍏ュ簱').then(() => {
+        procureIncome({ id: row.id })
+          .then((res) => {
+            this.$message.success('鍏ュ簱鎴愬姛锛�');
+            this.search();
+          })
+          .catch(() => {});
+      });
     },
-    // 鏌ヨtable鍒楄〃
-    search(pageNum) {
-      if (pageNum != undefined) {
-        // this.$refs.myTable.search(pageNum)
-      } else {
-        // this.$refs.myTable.search()
-      }
+    del(row) {
+      this.$modal.confirm('鏄惁纭鍒犻櫎鍏ュ簱鍗曞彿涓�"' + row.businessFormCode + '"鐨勬暟鎹悧锛�').then( () => {
+        procureDel({ id: row.id })
+          .then((res) => {
+            this.$message.success('鍒犻櫎鎴愬姛锛�');
+            this.search();
+          })
+          .catch(() => {});
+      });
     },
     fifterForm(params) {
-      console.log(params,'555');
-      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 (this.filterFrom.agencyId && this.filterFrom.agencyId.length) {
+        this.filterFrom.agencyId = this.filterFrom.agencyId[this.filterFrom.agencyId.length - 1];
+      }
+      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(../../../../styles/store.scss);
 </style>
diff --git a/admin-web/src/views/foundation/material/index.vue b/admin-web/src/views/foundation/material/index.vue
index 12b56a6..314fbb1 100644
--- a/admin-web/src/views/foundation/material/index.vue
+++ b/admin-web/src/views/foundation/material/index.vue
@@ -164,7 +164,7 @@
           {title: '鍒嗙被', field: 'categoryName', align: 'center'},
           {title: '绫诲埆', field: 'classification', align: 'center'},
           // {title: '閲囪喘绫诲瀷', field: 'categoryId', align: 'center'},
-          {title: '鎵�灞炴満鏋�', field: '', align: 'center'},
+          {title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'center'},
           {
             title: '鍒涘缓鏃堕棿',
             field: 'createDate',
diff --git a/admin-web/src/views/foundation/store/edit.vue b/admin-web/src/views/foundation/store/edit.vue
index c60e02f..5a23abe 100644
--- a/admin-web/src/views/foundation/store/edit.vue
+++ b/admin-web/src/views/foundation/store/edit.vue
@@ -41,6 +41,7 @@
 import winSm from '@/components/win/win-sm';
 import myButton from '@/components/myButton/myButton';
 import * as finsystenant from '@/api/baseSetting/finsystenant';
+import { findParentIds } from '@/utils/index';
 
 export default {
   components: { winSm, myButton },
@@ -92,7 +93,7 @@
       finsystenant.getTree().then((res) => {
         if (res) {
           this.treeList = res;
-          this.$set(this.formData,'agencyIds',this.findParentIds(this.treeList,this.formData.agencyId))
+          this.$set(this.formData,'agencyIds',findParentIds(this.treeList,this.formData.agencyId))
         }
       });
     },
@@ -134,41 +135,6 @@
           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鐨勬暟缁�
     },
   },
 };
diff --git a/admin-web/src/views/foundation/store/index.vue b/admin-web/src/views/foundation/store/index.vue
index 9df6b08..965ccfe 100644
--- a/admin-web/src/views/foundation/store/index.vue
+++ b/admin-web/src/views/foundation/store/index.vue
@@ -15,6 +15,7 @@
           </el-row>
           <!--娣诲姞/缂栬緫寮圭獥-->
           <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
+          <person v-if="personSetting.show" :setting="personSetting" @close="personSetting.show = false" @search="search"/>
         </el-card>
       </el-container>
     </el-container>
@@ -31,13 +32,14 @@
 import MyButton from "@/components/myButton/myButton";
 import SettingIplatform from '@/utils/settingIplatform';
 import edit from './edit'
+import person from './person'
 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, edit, myImport, person},
   data() {
     return {
       // 鎼滅储妗�
@@ -95,6 +97,12 @@
           onSuccess: null
       },
       editSetting: {
+        title: '',
+        id: '',
+        orgId: '',
+        show: false,
+      },
+      personSetting: {
         title: '',
         id: '',
         orgId: '',
@@ -161,7 +169,7 @@
         // 鎿嶄綔淇℃伅
         operation: {
           show: true, // 鏄剧ず鎿嶄綔鍒�
-          width: '150', // 鍒楀
+          width: '250', // 鍒楀
           attr: [
             {
               title: '缂栬緫',
@@ -175,12 +183,13 @@
                 this.del(row);
               },
             },
-            // {
-            //   title: '浠撳簱鍛�',
-            //   events: (row) => {
-            //     this.showAudit(row);
-            //   },
-            // }
+            {
+              title: '搴撶鍛�',
+              type:'primary',
+              events: (row) => {
+                this.showPerson(row);
+              },
+            }
           ],
         },
         paging: {
@@ -270,6 +279,12 @@
       this.editSetting.title = '缂栬緫';
       this.editSetting.show = true;
     },
+    showPerson(row) {
+      this.personSetting.id = row.id;
+      this.personSetting.info = JSON.stringify(row);
+      this.personSetting.title = '閫夋嫨搴撶鍛�';
+      this.personSetting.show = true;
+    },
     nodeClick(param) {
       param = param || {}
       this.p = Object.assign({}, {
diff --git a/admin-web/src/views/foundation/store/person.vue b/admin-web/src/views/foundation/store/person.vue
new file mode 100644
index 0000000..040a042
--- /dev/null
+++ b/admin-web/src/views/foundation/store/person.vue
@@ -0,0 +1,215 @@
+<template>
+  <win-md :title="setting.title" @close="close" :width="'800px'">
+    <div class="section-container">
+      <div class="section-left">
+        <div class="header-row"><span class="title">閫夋嫨浜哄憳锛�</span></div>
+        <div class="section-body">
+          <el-tree ref="tree" :data="treeData" node-key="id" :props="defaultProps" default-expand-all>
+            <template slot-scope="{ node, data }">
+              <div v-if="data.type != 'user'">{{ data.name }}</div>
+              <div v-else class="leaf-node" :class="data.checked ? 'checked' : ''" @click="handleCheckItem(node, data)">
+                {{ data.name }}
+              </div>
+            </template>
+          </el-tree>
+        </div>
+      </div>
+      <div class="section-right">
+        <div class="header-row">
+          <span class="title">宸查�夛細</span>
+          <span class="btn" @click="handleClear">娓呯┖</span>
+        </div>
+        <div class="section-body">
+          <div class="section-item" v-for="(item, index) in selectdSections" :key="index">
+            <span class="label">{{ item.name }}</span>
+            <span class="btn del-btn" @click="handleDel(item)">鍒犻櫎</span>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div slot="footer" align="center" class="dialog-footer">
+      <my-button name="鍙栨秷" site="form" @click="close" />
+      <my-button name="淇濆瓨" site="form" @click="save" />
+    </div>
+  </win-md>
+</template>
+
+<script>
+import { departmentListAll } from '@/api/system/deptment';
+import { userSelectDepartment, warehouseManagerAdd, warehouseManagerList } from '@/api/foudation/store';
+import winMd from '@/components/win/win-md';
+import myButton from '@/components/myButton/myButton';
+import * as finsystenant from '@/api/baseSetting/finsystenant';
+
+export default {
+  name: 'person',
+  components: { winMd, myButton },
+  props: {
+    setting: {
+      type: Object,
+      default: () => {},
+    },
+  },
+  data() {
+    return {
+      selectdSections: [],
+      treeData: [],
+      formData: {},
+      defaultProps: {
+        children: 'children',
+        label: 'name',
+      },
+    };
+  },
+  computed: {
+    checkedKeys() {
+      return this.selectdSections.map((v) => v.id);
+    },
+  },
+  created() {
+    console.log(this.setting);
+    if (this.setting.info) {
+      this.formData = Object.assign({}, JSON.parse(this.setting.info));
+    }
+    this.initTree();
+    warehouseManagerList({ warehouseId: this.formData.id }).then((res) => {
+      console.log(res);
+    });
+  },
+  methods: {
+    initTree() {
+      userSelectDepartment({ agencyId: this.formData.agencyId }).then((res) => {
+        this.treeData = [res];
+      });
+    },
+    handleCheckItem(node, data) {
+      this.selectdSections = [];
+      this.treeData[0].children.forEach((item, index) => {
+        if (item.children) {
+          item.children.forEach((child, childIndex) => {
+            if (child.id == data.id) {
+              this.$set(this.treeData[0].children[index].children[childIndex], 'checked', !child.checked);
+            }
+            if (child.checked) {
+              this.selectdSections.push(child);
+            }
+          });
+        }
+      });
+      console.log(this.treeData);
+    },
+    handleDel(item) {
+      this.handleCheckItem({}, item);
+    },
+    handleClear() {
+      this.selectdSections.forEach((item) => {
+        this.handleCheckItem({}, item);
+      });
+      this.selectdSections = [];
+    },
+    close() {
+      this.$emit('close');
+    },
+    save() {
+      let params = [];
+      this.selectdSections.forEach((item) => {
+        params.push({
+          managerId: item.id,
+          managerName: item.name,
+          baseWarehouseId: this.setting.id,
+        });
+      });
+      debugger;
+      warehouseManagerAdd(params).then((res) => {
+        if (res) {
+          this.$message.success('淇濆瓨鎴愬姛锛�');
+          this.close();
+          this.$emit('search');
+        } else {
+          this.$message.error('淇濆瓨澶辫触');
+        }
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.section-container {
+  height: 400px;
+  display: flex;
+  justify-content: space-between;
+  ::v-deep {
+    .el-tree-node__expand-icon.is-leaf {
+      display: none;
+    }
+  }
+}
+.section-left,
+.section-right {
+  width: calc((100% - 20px) / 2);
+  height: 100%;
+  border: 1px solid #dcdfe6;
+  padding: 10px;
+  box-sizing: border-box;
+  border-radius: 4px;
+  overflow-y: auto;
+}
+.header-row {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  .title {
+    color: #3d3d3d;
+    font-size: 14px;
+    font-style: normal;
+    font-weight: 400;
+  }
+}
+.section-body {
+  margin-top: 20px;
+}
+.section-right {
+  .btn {
+    display: inline-block;
+    width: 44px;
+    height: 22px;
+    line-height: 22px;
+    text-align: center;
+    flex-shrink: 0;
+    border-radius: 4px;
+    color: #0d997c;
+    border: 1px solid #0d997c;
+    background: rgba($color: #0d997c, $alpha: 0.1);
+    cursor: pointer;
+  }
+  .del-btn {
+    color: #f9675b;
+    border: 1px solid #f9675b;
+    background: rgba($color: #f9675b, $alpha: 0.1);
+  }
+  .section-item {
+    width: 44%;
+    margin: 0 auto;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-bottom: 10px;
+  }
+}
+.leaf-node {
+  width: 100%;
+  height: 26px;
+  line-height: 26px;
+  padding-left: 10px;
+  &:hover {
+    background: #f5f7fa;
+  }
+}
+.checked {
+  width: 100%;
+  background: #f5f7fa;
+  height: 26px;
+  line-height: 26px;
+  box-sizing: border-box;
+}
+</style>
diff --git a/admin-web/src/views/stock/accessStock/outbound/detail.vue b/admin-web/src/views/stock/accessStock/outbound/detail.vue
index 0e6994e..9ad74bf 100644
--- a/admin-web/src/views/stock/accessStock/outbound/detail.vue
+++ b/admin-web/src/views/stock/accessStock/outbound/detail.vue
@@ -59,7 +59,7 @@
         </el-table-column>
         <el-table-column prop="counts" label="閲戦" align="center">
           <template slot-scope="scope">
-            {{ (scope.row.price * scope.row.counts).toFixed(2) }}
+            {{ scope.row.price * scope.row.counts | formatPrice}}
           </template>
         </el-table-column>
       </el-table>
@@ -99,6 +99,9 @@
       if (!time) return;
       return DateFormatter.LongToDateTime(time);
     },
+    formatPrice(price) {
+      return price / 100
+    }
   },
   created() {
     outputDetail({ id: this.setting.id }).then((res) => {
diff --git a/admin-web/src/views/stock/accessStock/outbound/edit.vue b/admin-web/src/views/stock/accessStock/outbound/edit.vue
index 064fcf2..1521f03 100644
--- a/admin-web/src/views/stock/accessStock/outbound/edit.vue
+++ b/admin-web/src/views/stock/accessStock/outbound/edit.vue
@@ -1,12 +1,17 @@
 <template>
-  <win-md class="stock-edit" :title="`${setting.title}鍑哄簱鍑哄簱`" @close="close" :width="'800px'">
+  <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 warehouseOptions" :key="item.id" :label="item.warehouseName" :value="item.id" />
+                <el-option
+                  v-for="item in warehouseOptions"
+                  :key="item.id"
+                  :label="item.warehouseName"
+                  :value="item.id"
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -118,7 +123,7 @@
               </template>
             </el-table-column>
             <el-table-column prop="price" label="鐜版湁搴撳瓨" align="center">
-              <template slot-scope="scope">{{  }}
+              <template slot-scope="scope">
                 {{ scope.row.worehouseCount }}
               </template>
             </el-table-column>
@@ -130,11 +135,11 @@
                   :prop="`goods[${goodsIndex}].models[${scope.$index}].counts`"
                   :rules="rules.counts"
                 >
-                <el-input
-                  type="number"
-                  v-model="scope.row.counts"
-                  @change="countsChange($event, goodsIndex,scope.$index)"
-                ></el-input>
+                  <el-input
+                    type="number"
+                    v-model="scope.row.counts"
+                    @change="countsChange($event, goodsIndex, scope.$index)"
+                  ></el-input>
                 </el-form-item>
               </template>
             </el-table-column>
@@ -173,17 +178,15 @@
   goodsTemplate,
   goodsModel,
   selectTenantWarehouse,
+  warehouseSelectNumber,
 } from '@/api/baseSetting/finsystenant';
-import {
-  outputAdd,
-  outputSelectNumber
-} from '@/api/stock/accessStock';
+import { outputAdd } from '@/api/stock/accessStock';
 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 {mapGetters} from 'vuex'
+import { mapGetters } from 'vuex';
 
 export default {
   components: { MyButton, winMd, upload },
@@ -201,7 +204,7 @@
         return callback(new Error('璇烽�夋嫨'));
       }
       let temp = this.formData.goods.filter((v) => v.baseGoodsTemplateId == value);
-      if (!temp || temp.length!=1) {
+      if (!temp || temp.length != 1) {
         return callback(new Error('宸查�夎繃姝ょ墿鍝�'));
       }
       callback();
@@ -257,8 +260,8 @@
       },
     };
   },
-  computed:{
-    ...mapGetters(['userInfo'])
+  computed: {
+    ...mapGetters(['userInfo']),
   },
   created() {
     this.init();
@@ -275,10 +278,10 @@
 
     // 鑾峰彇鍑哄簱浠撳簱鍒楄〃
     getWarehouseList() {
-      selectTenantWarehouse({agencyId:this.userInfo.tenantId})
+      selectTenantWarehouse({ agencyId: this.userInfo.tenantId })
         .then((res) => {
-          this.warehouseOptions = res
-          if(res.length) {
+          this.warehouseOptions = res;
+          if (res.length) {
             this.formData.goods.push(JSON.parse(JSON.stringify(this.goodsItem)));
           }
           if (this.warehouseOptions.length && !this.formData.warehouseId) {
@@ -371,12 +374,18 @@
     async modelChange(e, index) {
       let arr = [...this.formData.goods[index].models];
       let str = JSON.stringify(arr);
-      for(let item of e) {
+      for (let item of e) {
         if (str.indexOf(item) == -1) {
           let temp = this.goodsModelAll.find((v) => v.id == item);
           // 鑾峰彇搴撳瓨
-          let num = await outputSelectNumber({warehouseId:this.formData.warehouseId,baseGoodsModelsId:item})
-          arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit,worehouseCount: num});
+          let num = await warehouseSelectNumber({
+            warehouseId: this.formData.warehouseId,
+            baseGoodsModelsId: item,
+            warehouseType: 0,
+            states: 1,
+            buyType: null,
+          });
+          arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit, worehouseCount: num });
         }
       }
       this.formData.goods[index].models = arr;
@@ -391,8 +400,8 @@
 
     // 涓婁紶
     uploadChange() {
-      let arr = this.$refs.uploadRef.fileList
-      this.formData.procureDoc = JSON.stringify(arr)
+      let arr = this.$refs.uploadRef.fileList;
+      this.formData.procureDoc = JSON.stringify(arr);
     },
 
     // 鐐瑰嚮鏂板鐗╁搧
@@ -406,16 +415,16 @@
     },
 
     // 鍑哄簱鏁伴噺鏍¢獙
-    countsChange(e, goodsIndex,index) {
-      const curItem = this.formData.goods[goodsIndex].models[index]
-      const worehouseCount = curItem.worehouseCount
+    countsChange(e, goodsIndex, index) {
+      const curItem = this.formData.goods[goodsIndex].models[index];
+      const worehouseCount = curItem.worehouseCount;
       if (e == 0) {
         this.$message.warning('鏁伴涓嶈兘涓�0');
-        curItem.counts = null
+        curItem.counts = null;
       }
       if (e > worehouseCount) {
         this.$message.warning('鏁伴瓒呰繃鐜版湁搴撳瓨');
-        curItem.counts = worehouseCount > 0 ? worehouseCount : null
+        curItem.counts = worehouseCount > 0 ? worehouseCount : null;
       }
     },
 
@@ -424,16 +433,16 @@
       this.$refs['ruleForm'].validate((valid) => {
         if (valid) {
           console.log('this.formData', this.formData);
-            outputAdd(this.formData)
-              .then((res) => {
-                this.$message.success('淇濆瓨鎴愬姛锛�');
-                this.close();
-                this.$emit('search');
-              })
-              .catch((err) => {
-                console.log('edit err', err);
-                this.$message.error('淇濆瓨澶辫触');
-              });
+          outputAdd(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('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��');
         }
diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue b/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue
index 78b8913..8aa9b05 100644
--- a/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue
+++ b/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue
@@ -3,26 +3,25 @@
     <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
       <el-form-item label="鐩樼偣鍗曞悕" prop="businessFormName">
         <el-input
-          disabled
           v-model="formData.businessFormName"
           clearable
           maxlength="20"
-          show-word-limit
           style="width: 100%"
+          placeholder="璇疯緭鍏�"
         />
       </el-form-item>
-      <el-form-item label="鐩樼偣浠撳簱" prop="warehouseName">
+      <el-form-item label="鐩樼偣浠撳簱" prop="warehouseId">
         <el-select v-model="formData.warehouseId" placeholder="璇烽�夋嫨" style="width: 100%">
           <el-option v-for="item in warehouseOptions" :key="item.id" :label="item.warehouseName" :value="item.id" />
         </el-select>
       </el-form-item>
-      <el-form-item label="鐩樼偣浜�" prop="operatorName">
-        <el-select v-model="formData.warehouseId" placeholder="璇烽�夋嫨" style="width: 100%">
+      <el-form-item label="鐩樼偣浜�" prop="operatorId">
+        <el-select v-model="formData.operatorId" placeholder="璇烽�夋嫨" style="width: 100%">
           <el-option v-for="item in operatorOptions" :key="item.id" :label="item.warehouseName" :value="item.id" />
         </el-select>
       </el-form-item>
-      <el-form-item label="鐩戠洏浜�" prop="operatorName2">
-        <el-select v-model="formData.warehouseId" placeholder="璇烽�夋嫨" style="width: 100%">
+      <el-form-item label="鐩戠洏浜�" prop="operatorId2">
+        <el-select v-model="formData.operatorId2" placeholder="璇烽�夋嫨" style="width: 100%">
           <el-option v-for="item in operatorOptions" :key="item.id" :label="item.warehouseName" :value="item.id" />
         </el-select>
       </el-form-item>
@@ -46,9 +45,10 @@
 
 <script>
 import { selectTenantWarehouse } from '@/api/baseSetting/finsystenant';
+import { inventoryAdd, inventoryEdit } from '@/api/stock/inventory';
 import winSm from '@/components/win/win-sm';
 import myButton from '@/components/myButton/myButton';
-import * as finsystenant from '@/api/baseSetting/finsystenant';
+import {formatDate} from '@/utils/DateFormatter'
 
 export default {
   components: { winSm, myButton },
@@ -64,25 +64,25 @@
       checkedList: [],
       warehouseOptions: [], // 浠撳簱鍒楄〃
       operatorOptions:[],
-      formData: {
-        code: '',
-        name: '',
-        status: true,
-        summary: '',
-      },
+      formData: {},
       rules: {
-        businessFormName: [{ required: true, message: '璇疯緭鍏ユ満鏋勭紪鍙�', trigger: 'blur' }],
-        warehouseName: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
-        operatorName: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
-        operatorName2: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
+        businessFormName: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+        warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
+        operatorId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
+        operatorId2: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }],
       },
     };
   },
   created() {
     if (this.setting.info) {
       this.formData = Object.assign({}, JSON.parse(this.setting.info));
+    }else {
+      this.formData.businessFormName = formatDate(new Date(),'yyyy骞碝M鏈堜唤鐩樼偣')
     }
     this.handleSelectTenantWarehouse();
+    let temp = 
+    this.formData.operatorId = '1109327915216504'
+    this.formData.operatorId2 = '10990356630810'
   },
   methods: {
     // 鑾峰彇浠撳簱鍒楄〃
@@ -101,7 +101,7 @@
           const params = Object.assign({}, this.formData);
           if (this.setting.id) {
             // 缂栬緫鎺ュ彛
-            finsystenant.edit(params).then((res) => {
+            inventoryEdit(params).then((res) => {
               if (res) {
                 this.$message.success('淇濆瓨鎴愬姛锛�');
                 this.close();
@@ -111,8 +111,7 @@
               }
             });
           } else {
-            params.orgId = this.setting.orgId;
-            finsystenant.add(params).then((res) => {
+            inventoryAdd(params).then((res) => {
               if (res) {
                 this.$message.success('淇濆瓨鎴愬姛锛�');
                 this.close();
diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue
index 2313f2c..a8ce8af 100644
--- a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue
+++ b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue
@@ -42,6 +42,7 @@
 import myImport from '@/views/components/myImport';
 import { getBaseUrl } from '@/utils/base';
 import { selectTenantWarehouse } from '@/api/baseSetting/finsystenant';
+import {inventoryListApi} from '@/api/stock/inventory'
 
 export default {
   name: 'index',
@@ -128,7 +129,7 @@
       table: {
         showIndex: true, // 鏄惁鏄剧ず搴忓彿
         expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
-        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃
+        url: SettingIplatform.apiBaseURL + inventoryListApi(), // 璇锋眰鍦板潃
         // 宸ュ叿鏉�
         tools: {
           columnsCtrl: {
diff --git a/admin-web/src/views/stock/procure/purchaseOrder/detail.vue b/admin-web/src/views/stock/procure/purchaseOrder/detail.vue
index b5bf873..4dc2ce5 100644
--- a/admin-web/src/views/stock/procure/purchaseOrder/detail.vue
+++ b/admin-web/src/views/stock/procure/purchaseOrder/detail.vue
@@ -70,7 +70,7 @@
         </el-table-column>
         <el-table-column prop="price" label="鍗曚环" align="center">
           <template slot-scope="scope">
-            {{ scope.row.price }}
+            {{ scope.row.price | formatPrice }}
           </template>
         </el-table-column>
         <el-table-column prop="counts" label="鍏ュ簱鏁伴噺" align="center">
@@ -80,7 +80,7 @@
         </el-table-column>
         <el-table-column prop="counts" label="閲戦" align="center">
           <template slot-scope="scope">
-            {{ (scope.row.price * scope.row.counts).toFixed(2) }}
+            {{ scope.row.price * scope.row.counts  | formatPrice}}
           </template>
         </el-table-column>
       </el-table>
@@ -140,6 +140,9 @@
       if (!time) return '-';
       return DateFormatter.LongToDateTime(time);
     },
+    formatPrice(price) {
+      return price / 100
+    }
   },
   created() {
     procureDetail({ id: this.setting.id }).then((res) => {
@@ -203,10 +206,4 @@
 </script>
 <style lang="scss" scoped>
 @import url(../../index.scss);
-.el-dialog {
-  z-index: 1100 !important;
-}
->>> .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 9ed3d61..7d8cc0c 100644
--- a/admin-web/src/views/stock/procure/purchaseOrder/edit.vue
+++ b/admin-web/src/views/stock/procure/purchaseOrder/edit.vue
@@ -68,7 +68,7 @@
                 :rules="rules.baseGoodsTemplateId"
               >
                 <el-select
-                 v-model="goodsItem.baseGoodsTemplateId"
+                  v-model="goodsItem.baseGoodsTemplateId"
                   placeholder="璇峰厛鎷╃墿鍝佸垎绫�"
                   filterable
                   :disabled="!goodsItem.baseCategoryId"
@@ -131,15 +131,19 @@
                 {{ scope.row.unit }}
               </template>
             </el-table-column>
-            <el-table-column prop="price" label="鍗曚环锛堝厓锛�" align="center">
+            <el-table-column prop="priceYuan" label="鍗曚环锛堝厓锛�" align="center">
               <template slot-scope="scope">
                 <el-form-item
                   label-width="0"
                   style="margin-bottom: 0"
-                  :prop="`procureGoods[${goodsIndex}].models[${scope.$index}].price`"
-                  :rules="rules.price"
+                  :prop="`procureGoods[${goodsIndex}].models[${scope.$index}].priceYuan`"
+                  :rules="rules.priceYuan"
                 >
-                  <el-input type="number" v-model.number="scope.row.price"></el-input>
+                  <el-input
+                    type="number"
+                    v-model.number="scope.row.priceYuan"
+                    @change="priceChange($event, goodsIndex, scope.$index)"
+                  ></el-input>
                 </el-form-item>
               </template>
             </el-table-column>
@@ -218,13 +222,14 @@
         return callback(new Error('璇烽�夋嫨'));
       }
       let temp = this.formData.procureGoods.filter((v) => v.baseGoodsTemplateId == value);
-      if (!temp || temp.length!=1) {
+      if (!temp || temp.length != 1) {
         return callback(new Error('宸查�夎繃姝ょ墿鍝�'));
       }
       callback();
     };
     // 閲戦鏍¢獙
     var checkPrice = (rule, value, callback) => {
+      console.log(value);
       if (!value) {
         return callback(new Error('璇疯緭鍏�'));
       }
@@ -236,7 +241,7 @@
     };
     // 鏁伴噺鏍¢獙
     var checkCounts = (rule, value, callback) => {
-      console.log(value)
+      console.log(value);
       if (!value) {
         return callback(new Error('璇疯緭鍏�'));
       }
@@ -287,7 +292,8 @@
       },
       modelsItem: {
         baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿
-        price: null, // 鍗曚环(閲囪喘闇�瑕侊紝璋冩嫧涓嶉渶瑕�)
+        priceYuan: null, // 鍗曚环(鍏�)
+        price: null, // 鍗曚环(鍒� 閲囪喘闇�瑕侊紝璋冩嫧涓嶉渶瑕�)
         counts: null, // 鎿嶄綔鏁伴噺
         unit: null, //鍗曚綅
       },
@@ -300,7 +306,7 @@
         baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
         baseGoodsTemplateId: [{ validator: checkGoodsTemplateId, trigger: ['blur', 'change'] }],
         modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
-        price: [{ validator: checkPrice, trigger: 'blur' }],
+        priceYuan: [{ validator: checkPrice, trigger: 'blur' }],
         counts: [{ validator: checkCounts, trigger: 'blur' }],
       },
 
@@ -349,6 +355,9 @@
           );
           this.getgoodsTemplate(item.baseCategoryId, index);
           this.getgoodsModel(item.baseGoodsTemplateId, index);
+          item.models.forEach((child, childIndex) => {
+            this.$set(this.formData.procureGoods[index].models[childIndex], 'priceYuan', child.price / 100);
+          });
           return item;
         });
       }
@@ -468,6 +477,11 @@
       this.formData.procureGoods[index].models.splice(delIndex, 1);
     },
 
+    // 浠锋牸input鐩戝惉 杞负鍒�
+    priceChange(e, goodsIndex, index) {
+      this.formData.procureGoods[goodsIndex].models[index].price = e * 100;
+    },
+
     // 涓婁紶
     uploadChange() {
       let arr = this.$refs.uploadRef.fileList;
@@ -488,7 +502,8 @@
     handleSubmit() {
       this.$refs['ruleForm'].validate((valid) => {
         if (valid) {
-          console.log('this.formData', this.formData);
+          console.log('formData', this.formData);
+          debugger;
           if (!this.setting.id) {
             procureAdd(this.formData)
               .then((res) => {
diff --git a/admin-web/src/views/stock/procure/receiptDetails/edit.vue b/admin-web/src/views/stock/procure/receiptDetails/edit.vue
deleted file mode 100644
index 37b0db9..0000000
--- a/admin-web/src/views/stock/procure/receiptDetails/edit.vue
+++ /dev/null
@@ -1,111 +0,0 @@
-<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>
-      <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>
-      <el-form-item label="鐘舵��" prop="status">
-        <el-switch
-          v-model="formData.status"
-          active-color="#0d997c"
-          inactive-color="#C0CCDA">
-        </el-switch>
-      </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"/>
-    </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'
-
-export default {
-  components: {winSm, myButton},
-  props: {
-    setting: {
-      type: Object,
-      default: () => {
-      }
-    }
-  },
-  data() {
-    return {
-      checkAll: false,
-      checkedList: [],
-      formData: {
-        code: '',
-        name: '',
-        status: true,
-        summary: '',
-      },
-      rules: {
-        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))
-    }
-  },
-  methods: {
-    getEditInfo(id){
-
-    },
-    close() {
-      this.$emit('close')
-    },
-    save() {
-      this.$refs.ruleForm.validate((valid) => {
-        if (valid) {
-          const params = Object.assign({}, this.formData)
-          if(this.setting.id){
-            // 缂栬緫鎺ュ彛
-            finsystenant.edit(params).then(res => {
-              if (res) {
-                this.$message.success('淇濆瓨鎴愬姛锛�')
-                this.close()
-                this.$emit('search')
-              } else {
-                this.$message.error('淇濆瓨澶辫触')
-              }
-            })
-          }else{
-            params.orgId = this.setting.orgId
-            finsystenant.add(params).then(res => {
-              if (res) {
-                this.$message.success('淇濆瓨鎴愬姛锛�')
-                this.close()
-                this.$emit('search')
-              } else {
-                this.$message.error('淇濆瓨澶辫触')
-              }
-            })
-          }
-        } else {
-          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��')
-        }
-      })
-    }
-  }
-}
-</script>
diff --git a/admin-web/src/views/stock/procure/receiptDetails/index.vue b/admin-web/src/views/stock/procure/receiptDetails/index.vue
index acb87e4..7f80beb 100644
--- a/admin-web/src/views/stock/procure/receiptDetails/index.vue
+++ b/admin-web/src/views/stock/procure/receiptDetails/index.vue
@@ -33,7 +33,7 @@
 import SettingIplatform from '@/utils/settingIplatform';
 import detail from '../purchaseOrder/detail';
 import * as finsystenant from '@/api/baseSetting/finsystenant';
-import {goodsModel} from '@/api/stock/procure/purchaseOrder';
+import { goodsModel } from '@/api/stock/procure/purchaseOrder';
 import myImport from '@/views/components/myImport';
 import { getBaseUrl } from '@/utils/base';
 
@@ -64,7 +64,7 @@
           label: '瑙勬牸鍨嬪彿',
           placeholder: '璇烽�夋嫨',
           defaultValue: '',
-          options:[]
+          options: [],
         },
         {
           type: 'cascader',
@@ -100,7 +100,7 @@
       // 鎼滅储鏉′欢
       filterFrom: {
         tenantId: null,
-        agencyId:[],
+        agencyId: [],
         status: 1,
       },
       // 瀵煎叆
@@ -150,9 +150,23 @@
           { title: '鍗曞彿', field: 'businessFormCode', align: 'center' },
           { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'center' },
           { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' },
-          { title: '鍗曚环', field: 'price', align: 'center' },
+          {
+            title: '鍗曚环',
+            field: 'price',
+            align: 'center',
+            formatter: (row) => {
+              return { value: row.price / 100 };
+            },
+          },
           { title: '鍏ュ簱鏁伴噺', field: 'counts', align: 'center' },
-          { title: '閲戦', field: 'amount', align: 'center' },
+          {
+            title: '閲戦',
+            field: 'amount',
+            align: 'center',
+            formatter: (row) => {
+              return { value: row.price / 100 };
+            },
+          },
           { title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'center' },
           { title: '鍒涘缓浜�', field: 'buyerName', align: 'center' },
           {
@@ -193,17 +207,16 @@
   },
   created() {
     // 鎼滅储妗嗚鏍煎瀷鍙�
-    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
-          })
+    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: {
     //瀵煎叆
@@ -247,9 +260,9 @@
         .catch(() => {});
     },
     showDetail(row) {
-      this.detailSetting.id=row.businessId
-      this.detailSetting.title='璇︽儏'
-      this.detailSetting.show=true
+      this.detailSetting.id = row.businessId;
+      this.detailSetting.title = '璇︽儏';
+      this.detailSetting.show = true;
     },
     // 鏌ヨtable鍒楄〃
     search(pageNum) {
@@ -267,7 +280,7 @@
       if (this.filterFrom.incomeTimeEnd) {
         this.filterFrom.incomeTimeEnd = this.filterFrom.incomeTimeEnd.replace(/\-/g, '');
       }
-      if (params.agencyId&&params.agencyId.length) {
+      if (params.agencyId && params.agencyId.length) {
         this.filterFrom.agencyId = params.agencyId[params.agencyId.length - 1];
       }
       this.search(1);
diff --git a/admin-web/src/views/stock/scrap/itemScrapping/detail.vue b/admin-web/src/views/stock/scrap/itemScrapping/detail.vue
index f8efa9f..c6b0a1e 100644
--- a/admin-web/src/views/stock/scrap/itemScrapping/detail.vue
+++ b/admin-web/src/views/stock/scrap/itemScrapping/detail.vue
@@ -203,10 +203,4 @@
 </script>
 <style lang="scss" scoped>
 @import url(../../index.scss);
-.el-dialog {
-  z-index: 1100 !important;
-}
->>> .el-dialog {
-  z-index: 1100 !important;
-}
 </style>
diff --git a/admin-web/src/views/stock/transfer/transferApplication/edit.vue b/admin-web/src/views/stock/transfer/transferApplication/edit.vue
index a990b13..e09140b 100644
--- a/admin-web/src/views/stock/transfer/transferApplication/edit.vue
+++ b/admin-web/src/views/stock/transfer/transferApplication/edit.vue
@@ -174,8 +174,8 @@
 </template>
 <script>
 import { transferAdd } from '@/api/stock/transfer';
-import { getCategorySelectTree, getTree, goodsTemplate, goodsModel } from '@/api/baseSetting/finsystenant';
-import { getParentTenant,queryWarehouseGoods } from '@/api/stock/transfer';
+import { getCategorySelectTree, goodsModel, warehouseSelectNumber } from '@/api/baseSetting/finsystenant';
+import { getParentTenant, queryWarehouseGoods } from '@/api/stock/transfer';
 import MyButton from '@/components/myButton/myButton';
 import winMd from '@/components/win/win-md';
 import upload from '@/components/upload/index';
@@ -219,7 +219,7 @@
         unit: null, //鍗曚綅
       },
       rules: {
-        warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        outAgencyId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
         createTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
 
         baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
@@ -256,14 +256,18 @@
       this.getgoodsTemplate();
       this.getgoodsModel();
       this.getCategoryTree();
-      this.formData.transferGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
     },
 
     // 鑾峰彇涓婄骇鏈烘瀯
     handegetParentTenant() {
       getParentTenant().then((res) => {
-        this.agencyOptions = [res];
-        this.formData.outAgencyId = res.id;
+        if (res.id != this.userInfo.tenantId) {
+          this.agencyOptions = [res];
+          this.formData.outAgencyId = res.id;
+          this.formData.transferGoods.push(JSON.parse(JSON.stringify(this.goodsItem)));
+        }else{
+          this.$message.warning('鏃犱笂绾ф満鏋�')
+        }
       });
     },
 
@@ -340,12 +344,12 @@
 
     // 鐗╁搧鍚嶇О鍒楄〃閫夋嫨
     goodsTemplateChange(e, index) {
-      let temp = this.formData.transferGoods.find(v=>v.baseGoodsTemplateId==e)
-      if(temp) {
-        this.$message.warning('宸查�夎繃姝ょ墿鍝�')
-        return
-      }else{
-        this.formData.transferGoods[index].baseGoodsTemplateId = e
+      let temp = this.formData.transferGoods.find((v) => v.baseGoodsTemplateId == e);
+      if (temp) {
+        this.$message.warning('宸查�夎繃姝ょ墿鍝�');
+        return;
+      } else {
+        this.formData.transferGoods[index].baseGoodsTemplateId = e;
       }
       this.formData.transferGoods[index].modelsOptions = [];
       this.formData.transferGoods[index].modelsIds = [];
@@ -357,15 +361,22 @@
     },
 
     // 瑙勬牸鍨嬪彿閫夋嫨
-    modelChange(e, index) {
+    async modelChange(e, index) {
       let arr = [...this.formData.transferGoods[index].models];
       let str = JSON.stringify(arr);
-      e.forEach((item) => {
+      for (let item of e) {
         if (str.indexOf(item) == -1) {
           let temp = this.goodsModelAll.find((v) => v.id == item);
-          arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit });
+          let num = await warehouseSelectNumber({
+            baseGoodsModelsId: item,
+            warehouseType: 0,
+            states: 1,
+            buyType: 1,
+            agencyId: this.formData.outAgencyId,
+          });
+          arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit, worehouseCount: num });
         }
-      });
+      }
       this.formData.transferGoods[index].models = arr;
     },
 
@@ -395,9 +406,9 @@
     countsChange(e, goodsIndex, index) {
       const curItem = this.formData.transferGoods[goodsIndex].models[index];
       const worehouseCount = curItem.worehouseCount;
-      if(e==0) {
+      if (e == 0) {
         this.$message.warning('鏁伴噺涓嶈兘涓�0');
-        curItem.counts = null
+        curItem.counts = null;
       }
       if (e > worehouseCount) {
         this.$message.warning('鏁伴噺瓒呰繃鐜版湁搴撳瓨');
@@ -427,11 +438,6 @@
     },
 
     close() {
-      this.formData = {
-        warehouseId: '', // 璋冩嫧浠撳簱id
-        procureTime: '', // 璋冩嫧鏃堕棿
-        transferGoods: [],
-      };
       this.$emit('close');
     },
   },
diff --git a/admin-web/src/views/stock/transfer/transferApplication/index.vue b/admin-web/src/views/stock/transfer/transferApplication/index.vue
index 64f853c..4c6cfec 100644
--- a/admin-web/src/views/stock/transfer/transferApplication/index.vue
+++ b/admin-web/src/views/stock/transfer/transferApplication/index.vue
@@ -62,9 +62,7 @@
                         <div class="box">
                           <span class="span-two">鐢宠璋冩嫧鏃堕棿锛�</span>{{ item.createTime | formatTime }}
                         </div>
-                        <div class="box">
-                          <span class="span-two">鎺ユ敹鏃堕棿锛�</span>{{ item.inTime | formatTime }}
-                        </div>
+                        <div class="box"><span class="span-two">鎺ユ敹鏃堕棿锛�</span>{{ item.inTime | formatTime }}</div>
                       </div>
                       <div class="one-hed">
                         <div class="box"><span class="span-two">璋冩嫧鏈烘瀯锛�</span>{{ item.outAgencyName }}</div>
@@ -158,24 +156,6 @@
           defaultValue: '',
         },
         {
-          type: 'cascader',
-          dataIndex: 'outAgencyId',
-          label: '璋冩嫧鏈烘瀯',
-          placeholder: '璇烽�夋嫨',
-          optionsConfig: { url: commonsApi.cascader_tree_fin_tenant, props: null },
-          defaultValue: '',
-          options: [],
-        },
-        {
-          type: 'cascader',
-          dataIndex: 'inAgencyId',
-          label: '鎺ユ敹鏈烘瀯',
-          placeholder: '璇烽�夋嫨',
-          optionsConfig: { url: commonsApi.cascader_tree_fin_tenant, props: null },
-          defaultValue: '',
-          options: [],
-        },
-        {
           type: 'select',
           dataIndex: 'states',
           label: '鐘舵��',
@@ -208,14 +188,13 @@
           defaultValue: '',
         },
       ],
-      filterFrom:{
-      }
+      filterFrom: {},
     };
   },
   created() {
     this.filterFrom = {
-      operatorId:this.userInfo.id
-    }
+      inAgencyId: this.userInfo.tenantId,
+    };
     this.fetchData();
     this.items.map((v) => {
       if (v.label == '鐘舵��') {
@@ -238,33 +217,29 @@
         console.log(this.list);
       });
     },
-    
+
     // 鍏ュ簱
     handleIncome(row) {
       this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode}  璋冩嫧鍑哄簱鍚�?`, '璋冩嫧鍑哄簱').then(() => {
-        transfeIncome({ id: row.id })
-          .then((res) => {
-            this.$message.success('璋冩嫧鍑哄簱鎴愬姛锛�');
-            this.search(1);
-          })
+        transfeIncome({ id: row.id }).then((res) => {
+          this.$message.success('璋冩嫧鍑哄簱鎴愬姛锛�');
+          this.search(1);
+        });
       });
     },
 
     // 瀵煎嚭
     handleExport(row) {
-      transferExport({id:row.id}).then(res=>{
-        
-      })
+      transferExport({ id: row.id }).then((res) => {});
     },
 
     // 鎾ら攢
     handleRevoke(row) {
       this.$confirm(`鎮ㄧ‘瀹氭挙閿�鍗曞彿涓�"${row.businessFormCode}"  鐨勬暟鎹悧?`, '鎾ら攢').then(() => {
-        transferUpdStatus({ id: row.id })
-          .then((res) => {
-            this.$message.success('鎾ら攢鎴愬姛锛�');
-            this.search(1);
-          })
+        transferUpdStatus({ id: row.id }).then((res) => {
+          this.$message.success('鎾ら攢鎴愬姛锛�');
+          this.search(1);
+        });
       });
     },
     fifterForm(params) {
diff --git a/admin-web/src/views/stock/transfer/transferissue/index.vue b/admin-web/src/views/stock/transfer/transferissue/index.vue
index 26aa693..f3f2404 100644
--- a/admin-web/src/views/stock/transfer/transferissue/index.vue
+++ b/admin-web/src/views/stock/transfer/transferissue/index.vue
@@ -145,15 +145,6 @@
         },
         {
           type: 'cascader',
-          dataIndex: 'outAgencyId',
-          label: '璋冩嫧鏈烘瀯',
-          placeholder: '璇烽�夋嫨',
-          optionsConfig: { url: commonsApi.cascader_tree_fin_tenant, props: null },
-          defaultValue: '',
-          options: [],
-        },
-        {
-          type: 'cascader',
           dataIndex: 'inAgencyId',
           label: '鎺ユ敹鏈烘瀯',
           placeholder: '璇烽�夋嫨',
@@ -197,6 +188,9 @@
     };
   },
   created() {
+    this.filterFrom = {
+      outAgencyId: this.userInfo.tenantId,
+    };
     this.fetchData();
     this.items.map((v) => {
       if (v.label == '鐘舵��') {
diff --git a/admin-web/src/views/systemManger/server/user/edit.vue b/admin-web/src/views/systemManger/server/user/edit.vue
index 840efc6..14efd94 100644
--- a/admin-web/src/views/systemManger/server/user/edit.vue
+++ b/admin-web/src/views/systemManger/server/user/edit.vue
@@ -11,6 +11,11 @@
       <el-form-item label="褰撳墠鏈烘瀯">
         <el-input v-model="setting.tenantName" disabled style="width: 250px"/>
       </el-form-item>
+      <el-form-item label="閮ㄩ棬" prop="sysDeptId">
+        <el-select v-model="formData.sysDeptId">
+            <el-option v-for="(item,index) in deptmentOptions" :key="index" :label="item.name" :value="item.id"></el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item label="浜哄憳濮撳悕" prop="userName">
         <el-input v-model="formData.userName" clearable maxlength="20" show-word-limit style="width: 250px"/>
       </el-form-item>
@@ -66,6 +71,7 @@
     import * as DateFormatter from '@/utils/DateFormatter'
     import * as role from "@/api/system/role";
     import * as user from "@/api/user";
+    import {departmentListAll} from "@/api/system/deptment";
 
     export default {
         components: {winSm, myButton},
@@ -103,6 +109,7 @@
                     label: 'name',
                 },
                 formData: {
+                    sysDeptId:'',
                     userName: '',
                     userCode: '',
                     userPhone: '',
@@ -112,6 +119,9 @@
                     seq: null,
                 },
                 rules: {
+                    sysDeptId: [
+                        {required: true, message: '璇疯緭鍏�', trigger: 'blur'}
+                    ],
                     userName: [
                         {required: true, message: '璇疯緭鍏ヤ汉鍛樺鍚�', trigger: 'blur'}
                     ],
@@ -133,6 +143,7 @@
         created() {
             this.getInfo()
             this.getAllRole()
+            this.getDeptmentOptions()
         },
         methods: {
             // 鑾峰彇鎵�鏈夎鑹�
@@ -158,6 +169,11 @@
                     }
                 );
             },
+            getDeptmentOptions(){
+                departmentListAll({tenantId:this.setting.tenantId}).then(res=>{
+                    this.deptmentOptions = res
+                })
+            },
             handleCheckAllChange(val) {
                 if (val) {
                     this.checkedList = this.roleOptions.map(x => {
diff --git a/admin-web/src/views/systemManger/server/user/index.vue b/admin-web/src/views/systemManger/server/user/index.vue
index 44b94d6..c562be2 100644
--- a/admin-web/src/views/systemManger/server/user/index.vue
+++ b/admin-web/src/views/systemManger/server/user/index.vue
@@ -111,7 +111,7 @@
           { title: '鐢ㄦ埛濮撳悕', field: 'userName', align: 'left' },
           { title: '鐧诲綍鍚�', field: 'userPhone', align: 'center' },
           { title: '鎵�灞炴満鏋�', field: 'userPhone', align: 'center', width: 150 },
-          { title: '閮ㄩ棬', field: 'userPhone', align: 'center' },
+          { title: '閮ㄩ棬', field: 'sysDeptName', align: 'center' },
           {
             field: 'status',
             title: '鐘舵��',
diff --git a/admin-web/src/views/systemSetting/department/edit.vue b/admin-web/src/views/systemSetting/department/edit.vue
new file mode 100644
index 0000000..4e2b1b4
--- /dev/null
+++ b/admin-web/src/views/systemSetting/department/edit.vue
@@ -0,0 +1,136 @@
+<template>
+  <win-sm :title="setting.title" @close="close">
+    <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px">
+      <el-form-item label="鎵�灞炴満鏋�" prop="tenantIds">
+        <el-cascader
+          v-model="formData.tenantIds"
+          disabled
+          :options="treeList"
+          :props="{ checkStrictly: true,value: 'id' }"
+          style="width: 100%"
+        ></el-cascader>
+      </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>
+      <el-form-item label="缂栧彿" prop="code">
+        <el-input v-model="formData.code" clearable maxlength="20" show-word-limit style="width: 100%" />
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-radio-group v-model="formData.status">
+          <el-radio :label="0">姝e父</el-radio>
+          <el-radio :label="1">绂佺敤</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="椤哄簭" prop="orderNum">
+        <el-input-number v-model="formData.orderNum" controls-position="right" :min="0" />
+      </el-form-item>
+      <el-form-item label="澶囨敞" prop="summary">
+        <el-input
+          type="textarea"
+          v-model="formData.summary"
+          clearable
+          maxlength="20"
+          show-word-limit
+          style="width: 100%"
+        />
+      </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" />
+    </div>
+  </win-sm>
+</template>
+
+<script>
+import { departmentAdd, departmentEdit, departmentDetail } from '@/api/system/deptment';
+import winSm from '@/components/win/win-sm';
+import myButton from '@/components/myButton/myButton';
+import * as finsystenant from '@/api/baseSetting/finsystenant';
+import { findParentIds } from '@/utils/index';
+import { mapGetters } from 'vuex';
+
+export default {
+  components: { winSm, myButton },
+  props: {
+    setting: {
+      type: Object,
+      default: () => {},
+    },
+  },
+  data() {
+    return {
+      treeList: [],
+      formData: {
+        tenantIds:[],
+        tenantId:'',
+        name:'',
+        code:'',
+        status:0,
+        orderNum:1
+      },
+      rules: {
+        name: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+        code: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+      },
+    };
+  },
+  created() {
+    console.log(this.setting)
+    if (this.setting.info) {
+        departmentDetail({id:this.setting.id}).then(res=>{
+            this.formData = res
+        })
+    } else {
+      this.formData.tenantId = this.setting.tenantId;
+    }
+    this.tree_List();
+  },
+  methods: {
+    tree_List() {
+      finsystenant.getTree().then((res) => {
+        if (res) {
+          this.treeList = res;
+          this.$set(this.formData, 'tenantIds', findParentIds(this.treeList, this.formData.tenantId));
+          console.log(this.formData)
+        }
+      });
+    },
+    close() {
+      this.$emit('close');
+    },
+    save() {
+      this.$refs.ruleForm.validate((valid) => {
+        if (valid) {
+          const params = Object.assign({}, this.formData);
+          if (this.setting.id) {
+            // 缂栬緫鎺ュ彛
+            departmentEdit(params).then((res) => {
+              if (res) {
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
+              } else {
+                this.$message.error('淇濆瓨澶辫触');
+              }
+            });
+          } else {
+            departmentAdd(params).then((res) => {
+              if (res) {
+                this.$message.success('淇濆瓨鎴愬姛锛�');
+                this.close();
+                this.$emit('search');
+              } else {
+                this.$message.error('淇濆瓨澶辫触');
+              }
+            });
+          }
+        } else {
+          this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��');
+        }
+      });
+    },
+  },
+};
+</script>
diff --git a/admin-web/src/views/systemSetting/department/index.vue b/admin-web/src/views/systemSetting/department/index.vue
index f4e556c..9544286 100644
--- a/admin-web/src/views/systemSetting/department/index.vue
+++ b/admin-web/src/views/systemSetting/department/index.vue
@@ -2,88 +2,14 @@
   <div class="app-container">
     <!--宸︿晶鏍戝舰寮�濮�-->
     <el-col :span="5">
-        <el-card class="box-card" shadow="never">
-          <my-tree ref="searchTree" :tree-list="treeDataList" @setNode="nodeClick" @search="search"></my-tree>
-        </el-card>
-      </el-col>
-      <!--宸︿晶鏍戝舰缁撴潫-->
-      <!--鍙充晶鍒楄〃寮�濮�-->
+      <el-card class="box-card" shadow="never">
+        <my-tree ref="searchTree" :tree-list="treeDataList" @setNode="nodeClick" @search="search"></my-tree>
+      </el-card>
+    </el-col>
+    <!--宸︿晶鏍戝舰缁撴潫-->
+    <!--鍙充晶鍒楄〃寮�濮�-->
     <el-container>
       <el-card class="box-card" style="width: 100%" shadow="never">
-<!--      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">-->
-<!--        <el-form-item label="瀛楀吀鍚嶇О" prop="dictName">-->
-<!--          <el-input-->
-<!--            v-model="queryParams.dictName"-->
-<!--            placeholder="璇疯緭鍏�"-->
-<!--            clearable-->
-<!--            style="width: 150px"-->
-<!--            @keyup.enter.native="handleQuery"-->
-<!--          />-->
-<!--        </el-form-item>-->
-<!--        <el-form-item label="鐘舵��" prop="status">-->
-<!--          <el-select-->
-<!--            v-model="queryParams.status"-->
-<!--            placeholder="璇烽�夋嫨"-->
-<!--            clearable-->
-<!--            style="width: 150px"-->
-<!--          >-->
-<!--            <el-option-->
-<!--              v-for="item in constants.normalOrDisabled"-->
-<!--              :key="item.value"-->
-<!--              :label="item.label"-->
-<!--              :value="item.value"-->
-<!--            />-->
-<!--          </el-select>-->
-<!--        </el-form-item>-->
-<!--        <el-form-item>-->
-<!--          <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鏌ヨ</el-button>-->
-<!--          <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>-->
-<!--        </el-form-item>-->
-<!--      </el-form>-->
-<!--      <el-table v-loading="loading" :data="typeList" @selection-change="handleSelectionChange">-->
-<!--        <el-table-column type="selection" width="55" align="center" />-->
-<!--        <el-table-column label="瀛楀吀缂栧彿" align="center" prop="dict_id" />-->
-<!--        <el-table-column label="瀛楀吀鍚嶇О" align="center" prop="dict_name" :show-overflow-tooltip="true" />-->
-<!--        <el-table-column label="瀛楀吀绫诲瀷" align="center" :show-overflow-tooltip="true">-->
-<!--          <template slot-scope="scope">-->
-<!--            <router-link :to="'/systemSetting/dictdata/data/' + scope.row.dict_id" class="link-type">-->
-<!--              <span>{{ scope.row.dict_type }}</span>-->
-<!--            </router-link>-->
-<!--          </template>-->
-<!--        </el-table-column>-->
-<!--        <el-table-column label="鐘舵��" align="center" prop="status">-->
-<!--          <template slot-scope="scope">-->
-<!--            <span>{{ scope.row.status == 0? '姝e父':'绂佺敤' }}</span>-->
-<!--          </template>-->
-<!--        </el-table-column>-->
-<!--        <el-table-column label="澶囨敞" align="center" prop="remark" :show-overflow-tooltip="true" />-->
-<!--        <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="create_time" width="180">-->
-<!--          <template slot-scope="scope">-->
-<!--            <span>{{ dateTo(scope.row.create_time) }}</span>-->
-<!--          </template>-->
-<!--          &lt;!&ndash;        <template slot-scope="scope">&ndash;&gt;-->
-<!--          &lt;!&ndash;          <span>{{ parseTime(scope.row.create_time) }}</span>&ndash;&gt;-->
-<!--          &lt;!&ndash;        </template>&ndash;&gt;-->
-<!--        </el-table-column>-->
-<!--        <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="180">-->
-<!--          <template slot-scope="scope">-->
-<!--            <el-button-->
-<!--              size="mini"-->
-<!--              type="text"-->
-<!--              icon="el-icon-edit"-->
-<!--              @click="handleUpdate(scope.row)"-->
-<!--              v-hasPermi="['system:dict:edit']"-->
-<!--            >淇敼</el-button>-->
-<!--  &lt;!&ndash;          <el-button-->
-<!--              size="mini"-->
-<!--              type="text"-->
-<!--              icon="el-icon-delete"-->
-<!--              @click="handleDelete(scope.row)"-->
-<!--              v-hasPermi="['system:dict:remove']"-->
-<!--            >鍒犻櫎</el-button>&ndash;&gt;-->
-<!--          </template>-->
-<!--        </el-table-column>-->
-<!--      </el-table>-->
         <!--鎼滅储鏉′欢-->
         <div class="filter-container">
           <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
@@ -91,52 +17,28 @@
         <el-row style="margin-top: 8px">
           <el-col>
             <!--鍒楄〃-->
-            <my-table-v2 ref="myTable" :filter="queryParams" :table="table"/>
+            <my-table-v2 ref="myTable" :filter="filterFrom" :table="table" />
           </el-col>
         </el-row>
       </el-card>
     </el-container>
     <!-- 娣诲姞鎴栦慨鏀瑰弬鏁伴厤缃璇濇 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="瀛楀吀鍚嶇О" prop="dictName">
-          <el-input v-model="form.dictName" placeholder="璇疯緭鍏ュ瓧鍏稿悕绉�" />
-        </el-form-item>
-        <el-form-item label="瀛楀吀绫诲瀷" prop="dictType">
-          <el-input v-model="form.dictType" placeholder="璇疯緭鍏ュ瓧鍏哥被鍨�" />
-        </el-form-item>
-        <el-form-item label="鐘舵��" prop="status">
-          <el-radio-group v-model="form.status">
-            <el-radio
-              v-for="item in constants.normalOrDisabled"
-              :key="item.value"
-              :label="item.value"
-            >{{item.label}}</el-radio>
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item label="澶囨敞" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
-        <el-button @click="cancel">鍙� 娑�</el-button>
-      </div>
-    </el-dialog>
+
+    <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search()" />
   </div>
 </template>
 
 <script>
 import myTree from '@/components/myTree/index';
-import { listType, getType, delType, addType, updateType, refreshCache } from "@/api/system/dict/type";
-import * as DateFormatter from "@/utils/DateFormatter";
-import MyTableV2 from "@/components/myTable/myTableV2";
+import { listType, getType, delType, addType, updateType, refreshCache } from '@/api/system/dict/type';
+import * as DateFormatter from '@/utils/DateFormatter';
+import MyTableV2 from '@/components/myTable/myTableV2';
 import SettingIplatform from '@/utils/settingIplatform';
-import items from './items'
+import edit from './edit';
 import * as finsystenant from '@/api/baseSetting/finsystenant';
 export default {
-  name: "Dict",
-  components: { MyTableV2, myTree },
+  name: 'Dict',
+  components: { MyTableV2, myTree, edit },
   data() {
     return {
       // 鏍戞暟鎹�
@@ -157,75 +59,103 @@
       // 瀛楀吀琛ㄦ牸鏁版嵁
       typeList: [],
       // 寮瑰嚭灞傛爣棰�
-      title: "",
+      title: '',
       // 鏄惁鏄剧ず寮瑰嚭灞�
       open: false,
       // 鏃ユ湡鑼冨洿
       dateRange: [],
-      // 鏌ヨ鍙傛暟
-      queryParams: {
-        dictName: undefined,
-        dictType: undefined,
-        status: 0
+      editSetting: {
+        title: '',
+        id: '',
+        show: false,
       },
-      items:items,
+      filterFrom: {},
+      items: [
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '閮ㄩ棬鍚嶇О',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: '',
+        },
+        {
+          type: 'text',
+          dataIndex: 'code',
+          label: '缂栧彿',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: '',
+        },
+        {
+          type: 'select',
+          dataIndex: 'status',
+          label: '鐘舵��',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '0',
+          options: [
+            {
+              value: '0',
+              label: '鍚敤',
+            },
+            {
+              value: '1',
+              label: '绂佺敤',
+            },
+          ],
+        },
+      ],
       table: {
         showIndex: true, // 鏄惁鏄剧ず搴忓彿
         expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
-        url: SettingIplatform.apiBaseURL + '/system/dict/type/list', // 璇锋眰鍦板潃
+        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/department/list', // 璇锋眰鍦板潃
         // 宸ュ叿鏉�
         tools: {
-          columnsCtrl: {// 鍒楁帶鍒舵寜閽�
-            show: false
+          columnsCtrl: {
+            // 鍒楁帶鍒舵寜閽�
+            show: false,
           },
-          generalExport: {// 閫氱敤瀵煎嚭鎸夐挳
-            show: false
+          generalExport: {
+            // 閫氱敤瀵煎嚭鎸夐挳
+            show: false,
           },
           // 鑷畾涔夊伐鍏锋潯鎸夐挳
           custom: [
-          {
+            {
               name: '鏂板',
               click: () => {
-                this.showAdd(null);
+                this.handleAdd(null);
               },
             },
-          ]
+          ],
         },
         // 鍒椾俊鎭�
         columns: [
-          {title: '缂栧彿', field: 'dict_id', align: 'center', width: '100px'},
-          {title: '閮ㄩ棬', field: 'dict_name', align: 'left'},
-          {title: '椤哄簭鍙�', field: 'dict_name', align: 'left'},
-          {title: '澶囨敞', field: 'remark', align: 'left', width: '200px'},
+          { title: '缂栧彿', field: 'code', align: 'center', width: '100px' },
+          { title: '閮ㄩ棬', field: 'name', align: 'left' },
+          { title: '椤哄簭鍙�', field: 'orderNum', align: 'left' },
+          { title: '澶囨敞', field: 'remark', align: 'left', width: '200px' },
           {
-            title: '鐘舵��', field: 'status', align: 'center', width: '180px',
-            formatter: row => {
-              return { value: row.status=== 0? '鍚敤':'绂佺敤'  }
-            }
+            title: '鐘舵��',
+            field: 'status',
+            align: 'center',
+            width: '180px',
+            formatter: (row) => {
+              return { value: row.status === 0 ? '鍚敤' : '绂佺敤' };
+            },
           },
         ],
         // 鎿嶄綔淇℃伅
         operation: {
-          // width: 150,
+          width: 150,
           align: 'center',
-          show: false, // 鏄剧ず鎿嶄綔鍒�
+          show: true, // 鏄剧ず鎿嶄綔鍒�
           attr: [
-            // 鍒嗙被涓嬫湁姝e湪杩涜涓殑椤圭洰鏃讹紝缁欏嚭鎻愮ず涓嶅厑璁哥鐢ㄥ拰鍒犻櫎銆備笖绂佺敤涓�绾у垎绫诲墠闇�瑕佸厛绂佺敤涓嬮潰鐨勬墍鏈変簩绾э紝鏈夊惎鐢ㄧ殑浜岀骇鏃朵笉鍏佽绂佺敤涓�绾�
             {
-              // checkPermission:'system:role:edit',
-              title: '淇敼',
-              events: row => {
-                this.handleUpdate(row)
-              }
+              title: '缂栬緫',
+              events: (row) => {
+                this.showEdit(row);
+              },
             },
-            // {
-            //   // checkPermission: 'system:role:remove',
-            //   title: '鍒犻櫎',
-            //   events: row => {
-            //     this.handleDelete(row)
-            //   }
-            // },
-          ]
+          ],
         },
         paging: {
           show: true, // 鏄剧ず鍒嗛〉
@@ -234,25 +164,14 @@
             small: false,
             pageNum: 1,
             pageSize: 10,
-            total: 0
-          }
-        }
+            total: 0,
+          },
+        },
       },
-      // 琛ㄥ崟鍙傛暟
-      form: {},
-      // 琛ㄥ崟鏍¢獙
-      rules: {
-        dictName: [
-          { required: true, message: "瀛楀吀鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
-        ],
-        dictType: [
-          { required: true, message: "瀛楀吀绫诲瀷涓嶈兘涓虹┖", trigger: "blur" }
-        ]
-      }
     };
   },
   created() {
-    this.initTreeData()
+    this.initTreeData();
   },
   methods: {
     // 宸︿晶鏍戝垵濮嬪寲
@@ -269,137 +188,53 @@
       });
     },
     nodeClick(param) {
-      console.log(param,'param');
-      this.search(1)
+      console.log(param, 'param');
+      this.p = Object.assign(
+        {},
+        {
+          id: param.id,
+          name: param.name,
+        },
+      );
+      if (this.p.id) {
+        this.filterFrom.tenantId = this.p.id;
+        this.editSetting.tenantId = this.p.id;
+      } else {
+        this.filterFrom.tenantId = null;
+        this.editSetting.tenantId = null;
+      }
+      this.search(1);
     },
     fifterForm(params) {
-      this.queryParams = Object.assign(this.queryParams, params)
-      this.search(1)
+      this.filterFrom = Object.assign(this.filterFrom, params);
+      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();
       }
-    },
-    dateTo(val) {
-      return DateFormatter.LongToDateTime(val);
-    },
-    changeSize(e){
-      this.queryParams.pageSize = e
-      this.getList()
-    },
-    changePage(e){
-      this.queryParams.pageNum = e
-      this.getList()
-    },
-    /** 鏌ヨ瀛楀吀绫诲瀷鍒楄〃 */
-    getList() {
-      this.loading = true;
-      listType(this.queryParams).then(response => {
-          // this.typeList = response.rows;
-          this.typeList = response.datas;
-          this.total = response.totalRows;
-          this.loading = false;
-        }
-      );
-    },
-    // 鍙栨秷鎸夐挳
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 琛ㄥ崟閲嶇疆
-    reset() {
-      this.form = {
-        dictId: undefined,
-        dictName: undefined,
-        dictType: undefined,
-        status: "0",
-        remark: undefined
-      };
-      this.resetForm("form");
-    },
-    /** 鎼滅储鎸夐挳鎿嶄綔 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 閲嶇疆鎸夐挳鎿嶄綔 */
-    resetQuery() {
-      this.dateRange = [];
-      this.resetForm("queryForm");
-      this.handleQuery();
     },
     /** 鏂板鎸夐挳鎿嶄綔 */
     handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "娣诲姞瀛楀吀绫诲瀷";
+      if (this.editSetting.tenantId) {
+        this.editSetting.id = null;
+        this.editSetting.info = null;
+        this.editSetting.title = '鏂板';
+        this.editSetting.show = true;
+      } else {
+        this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯');
+      }
     },
-    // 澶氶�夋閫変腑鏁版嵁
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.dictId)
-      this.single = selection.length!=1
-      this.multiple = !selection.length
+    showEdit(row) {
+      console.log(row);
+      this.editSetting.id = row.id;
+      this.editSetting.info = row;
+      this.editSetting.title = '缂栬緫';
+      this.editSetting.show = true;
     },
-    /** 淇敼鎸夐挳鎿嶄綔 */
-    handleUpdate(row) {
-      this.reset();
-      const dictId = row.dict_id || this.ids
-      getType(dictId).then(response => {
-        this.form = response;
-        this.form.dictName = this.form.dict_name
-        this.form.dictType = this.form.dict_type
-        this.open = true;
-        this.title = "淇敼瀛楀吀绫诲瀷";
-      });
-    },
-    /** 鎻愪氦鎸夐挳 */
-    submitForm: function() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.dictId != undefined) {
-            updateType(this.form).then(response => {
-              this.$modal.msgSuccess("淇敼鎴愬姛");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addType(this.form).then(response => {
-              this.$modal.msgSuccess("鏂板鎴愬姛");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
-    },
-    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
-    handleDelete(row) {
-      const dictIds = row.dictId || this.ids;
-      this.$modal.confirm('鏄惁纭鍒犻櫎瀛楀吀缂栧彿涓�"' + dictIds + '"鐨勬暟鎹」锛�').then(function() {
-        return delType(dictIds);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-      }).catch(() => {});
-    },
-    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
-    handleExport() {
-      this.download('system/dict/type/export', {
-        ...this.queryParams
-      }, `type_${new Date().getTime()}.xlsx`)
-    },
-    /** 鍒锋柊缂撳瓨鎸夐挳鎿嶄綔 */
-    handleRefreshCache() {
-      refreshCache().then(() => {
-        this.$modal.msgSuccess("鍒锋柊鎴愬姛");
-        this.$store.dispatch('dict/cleanDict');
-      });
-    }
-  }
+  },
 };
 </script>
diff --git a/admin-web/src/views/systemSetting/department/items.js b/admin-web/src/views/systemSetting/department/items.js
deleted file mode 100644
index cae6307..0000000
--- a/admin-web/src/views/systemSetting/department/items.js
+++ /dev/null
@@ -1,33 +0,0 @@
-export default [
-  {
-    type: 'text',
-    dataIndex: 'dictName',
-    label: '閮ㄩ棬鍚嶇О',
-    placeholder: '璇疯緭鍏�',
-    defaultValue: ''
-  },
-  {
-    type: 'text',
-    dataIndex: 'dictName',
-    label: '缂栧彿',
-    placeholder: '璇疯緭鍏�',
-    defaultValue: ''
-  },
-  {
-    type: 'select',
-    dataIndex: 'status',
-    label: '鐘舵��',
-    placeholder: '璇烽�夋嫨',
-    defaultValue: '0',
-    options: [
-      {
-        value: '0',
-        label: '鍚敤'
-      },
-      {
-        value: '1',
-        label: '绂佺敤'
-      }
-    ]
-  }
-]

--
Gitblit v1.9.1