From 8130823e7e4c36e1c10705c734b0b60b5f193958 Mon Sep 17 00:00:00 2001
From: zhy <luhan1008611>
Date: 星期三, 25 十月 2023 17:30:36 +0800
Subject: [PATCH] feat: 本地修改测试

---
 admin-web/src/views/foundation/classification/edit.vue           |  134 +
 admin-web/src/views/systemManger/server/user/index.vue           |   29 
 admin-web/src/views/foundation/store/edit.vue                    |  111 +
 admin-web/src/views/foundation/classification/index.vue          |  280 +++
 admin-web/src/utils/settingIplatform.js                          |    5 
 admin-web/src/views/foundation/classification/items.js           |   47 
 admin-web/src/views/stock/transfer/transferApplication/index.vue |  457 +++++
 admin-web/src/views/foundation/store/index.vue                   |  307 +++
 admin-web/src/views/systemSetting/department/items.js            |   33 
 admin-web/src/views/foundation/material/edit.vue                 |  130 +
 admin-web/src/views/stock/accessStock/outbound/index.vue         |  449 ++++
 admin-web/src/views/systemManger/org/index.vue                   |   13 
 admin-web/src/views/systemSetting/dict/index.vue                 |   32 
 admin-web/public/static/config.js                                |    5 
 admin-web/src/views/systemSetting/department/index.vue           |  405 ++++
 admin-web/src/views/stock/transfer/transferdetails/index.vue     |  282 +++
 admin-web/src/views/systemSetting/role/index.vue                 |    6 
 admin-web/src/views/stock/procure/receiptDetails/index.vue       |  280 +++
 admin-web/src/views/stock/accessStock/outboundDetails/edit.vue   |  111 +
 admin-web/src/views/stock/procure/purchaseOrder/index.vue        |  457 +++++
 admin-web/src/views/stock/transfer/transferissue/index.vue       |  457 +++++
 admin-web/src/components/myTable/myTableV2.vue                   |    2 
 admin-web/README.md                                              |   61 
 admin-web/src/views/systemSetting/department/data.vue            |  427 ++++
 admin-web/src/views/stock/transfer/transferdetails/edit.vue      |  111 +
 admin-web/src/views/stock/procure/receiptDetails/edit.vue        |  111 +
 admin-web/src/views/systemManger/server/user/items.js            |    4 
 admin-web/src/views/stock/accessStock/outboundDetails/index.vue  |  280 +++
 admin-web/src/views/foundation/material/index.vue                |  342 +++
 29 files changed, 5,332 insertions(+), 36 deletions(-)

diff --git a/admin-web/README.md b/admin-web/README.md
index d7977b7..dd5a982 100644
--- a/admin-web/README.md
+++ b/admin-web/README.md
@@ -232,4 +232,63 @@
 ```
     "highlight.js": "10.7.3",
 
-
+## 璺敱鏂囦欢鍚嶇О
+# 搴撳瓨绠$悊/鍑哄叆搴撶鐞�
+<!-- 鍑哄簱绠$悊 -->
+/stock/accessStock/outbound
+<!-- 鍑哄叆搴撴槑缁� -->
+/stock/accessStock/outboundDetails 
+# 搴撳瓨绠$悊/閲囪喘绠$悊
+<!-- 閲囪喘鍗� -->
+/stock/procure/purchaseOrder
+<!-- 閲囪喘鍏ュ簱鏄庣粏 -->
+/stock/procure/receiptDetails
+# 搴撳瓨绠$悊/璋冩嫧绠$悊
+<!-- 璋冩嫧鐢宠 -->
+/stock/transfer/transferApplication
+<!-- 璋冩嫧鍑哄簱 -->
+/stock/transfer/transferissue
+<!-- 璋冩嫧鏄庣粏 -->
+/stock/transfer/transferdetails
+# 搴撳瓨绠$悊/搴撳瓨鐩樼偣
+<!-- 鐩樼偣浠诲姟 -->
+/stock/inventorycount/inventorytask
+<!-- 寮傚父鏄庣粏 -->
+/stock/inventorycount/exceptionDetails
+# 搴撳瓨绠$悊/鎶ュ簾绠$悊
+<!-- 鐗╁搧鎶ュ簾 -->
+/stock/scrap/itemScrapping
+<!-- 鎶ュ簾鏄庣粏 -->
+/stock/scrap/scrapDetails
+# 搴撳瓨绠$悊/鍙拌处鏌ヨ
+<!-- 搴撳瓨鏌ヨ -->
+/stock/ledger/inventoryQuery
+<!-- 搴撳瓨棰勮璁剧疆 -->
+/stock/ledger/inventoryAlert
+<!-- 棰勮鏌ヨ -->
+/stock/ledger/alertQuery
+<!-- 鍙拌处鏌ヨ -->
+/stock/ledger/ledgerQuery
+# 閮ㄩ棬鐗╁搧绠$悊/鐗╁搧鍒嗗彂
+<!-- 鐗╁搧鍒嗗彂 -->
+/departmentitem/itemdis/distribution
+<!-- 鍒嗗彂鏄庣粏 -->
+/departmentitem/itemdis/disDetails
+# 閮ㄩ棬鐗╁搧绠$悊/鐗╁搧閫�鍥�
+<!-- 閫�鍥炲崟 -->
+/departmentitem/itemret/returnNote
+<!-- 閫�鍥炴槑缁� -->
+/departmentitem/itemret/retDetails
+# 閮ㄩ棬鐗╁搧绠$悊/鐗╁搧鎶ュ簾
+<!-- 鐗╁搧鎶ュ簾 -->
+/departmentitem/itemscr/scrapping
+<!-- 鎶ュ簾鏄庣粏 -->
+/departmentitem/itemscr/scrappDetails
+# 閮ㄩ棬鐗╁搧绠$悊/鍙拌处鏌ヨ
+<!-- 鐗╁搧鏌ヨ -->
+/departmentitem/ledgerquy/itemQuy
+<!-- 鍙拌处鏌ヨ -->
+/departmentitem/ledgerquy/ledQuy
+#  缁熻鎶ヨ〃
+<!-- 鐗╁搧缁熻琛� -->
+/statisticalreport/itemReport
\ No newline at end of file
diff --git a/admin-web/public/static/config.js b/admin-web/public/static/config.js
index 96f2e66..40ba56b 100644
--- a/admin-web/public/static/config.js
+++ b/admin-web/public/static/config.js
@@ -9,11 +9,12 @@
   // 鏈嶅姟鍣ㄥ湴鍧�
   httpUrl: VUE_APP_API_URL,
   // 涓婁紶璺緞
-  ftpUrl: 'http://172.16.60.209:8082/progress',//寮�鍙�
+  ftpUrl: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙�
   // ftpUrl:'https://jmy.jinmingyuan.com/progress',// 娴嬭瘯,
 // 鎺ュ彛璇锋眰鍦板潃
 // apiBaseURL: 'http://116.198.39.83:8082/progress', // 姝e紡
-  apiBaseURL: 'http://172.16.60.90:8082/progress',//寮�鍙�
+  // apiBaseURL: 'http://172.16.60.90:8082/progress',//寮�鍙�
+  apiBaseURL: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙�
 // apiBaseURL: 'https://jmy.jinmingyuan.com/progress',// 娴嬭瘯,
   // socket杩炴帴
   wsSocketUrl: VUE_APP_WS_URL,
diff --git a/admin-web/src/components/myTable/myTableV2.vue b/admin-web/src/components/myTable/myTableV2.vue
index 5857918..faeb6c2 100644
--- a/admin-web/src/components/myTable/myTableV2.vue
+++ b/admin-web/src/components/myTable/myTableV2.vue
@@ -365,7 +365,7 @@
 		 */
     search(param) {
       this.$nextTick(() => {
-        this.myTable.loading = true
+        // this.myTable.loading = true
         const params = Object.assign({}, this.filter)
         if(this.myTable.paging.show){
           params.pageSize = this.myTable.paging.page.pageSize
diff --git a/admin-web/src/utils/settingIplatform.js b/admin-web/src/utils/settingIplatform.js
index 3743ccf..22e6d80 100644
--- a/admin-web/src/utils/settingIplatform.js
+++ b/admin-web/src/utils/settingIplatform.js
@@ -8,11 +8,12 @@
   // 鏈嶅姟鍣ㄥ湴鍧�
   httpUrl: VUE_APP_API_URL,
   // 涓婁紶璺緞
-  ftpUrl: 'http://172.16.60.209:8082/progress',//寮�鍙�
+  ftpUrl: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙�
   // ftpUrl:'https://jmy.jinmingyuan.com/progress',// 娴嬭瘯,
 // 鎺ュ彛璇锋眰鍦板潃
 // apiBaseURL: 'http://116.198.39.83:8082/progress', // 姝e紡
-  apiBaseURL: 'http://172.16.60.90:8082/progress',//寮�鍙�
+  // apiBaseURL: 'http://172.16.60.90:8082/progress',//寮�鍙�
+  apiBaseURL: 'https://yqzx.jinmingyuan.com/lowConsum',//寮�鍙�
 // apiBaseURL: 'https://jmy.jinmingyuan.com/progress',// 娴嬭瘯,
   // socket杩炴帴
   wsSocketUrl: VUE_APP_WS_URL,
diff --git a/admin-web/src/views/foundation/classification/edit.vue b/admin-web/src/views/foundation/classification/edit.vue
new file mode 100644
index 0000000..137165d
--- /dev/null
+++ b/admin-web/src/views/foundation/classification/edit.vue
@@ -0,0 +1,134 @@
+<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 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="绫诲埆" prop="name">
+        <!-- <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/> -->
+        <el-select v-model="formData.planTypeCode" placeholder="" clearable style="width: 100%">
+          <el-option
+            v-for="item in options"
+            :key="item.code"
+            :label="item.label"
+            :value="item.code">
+          </el-option>
+        </el-select>
+      </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="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: [],
+      options:[
+        {
+          code: 1,
+          label:'A'
+        },
+        {
+          code: 2,
+          label:'B'
+        },
+        {
+          code: 3,
+          label:'C'
+        }
+      ],
+      formData: {
+        code: '',
+        name: '',
+        status: true,
+        summary: '',
+        planTypeCode:''
+      },
+      rules: {
+        code: [
+          {required: true, message: '璇疯緭鍏ユ満鏋勭紪鍙�', trigger: 'blur'}
+        ],
+        name: [
+          {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/foundation/classification/index.vue b/admin-web/src/views/foundation/classification/index.vue
new file mode 100644
index 0000000..026e52c
--- /dev/null
+++ b/admin-web/src/views/foundation/classification/index.vue
@@ -0,0 +1,280 @@
+<template>
+  <div class="app-container">
+    <el-container>
+      <el-card shadow="never" style="width: 240px;margin-right: 15px">
+        <my-tree ref="searchTree" :tree-list="treeDataList" @setNode="nodeClick" @search="search"></my-tree>
+      </el-card>
+      <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-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
+            </el-col>
+          </el-row>
+          <!--娣诲姞/缂栬緫寮圭獥-->
+          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
+        </el-card>
+      </el-container>
+    </el-container>
+    <my-import
+      :import-setting="importSetting"
+      :dialog-show="importSetting.dialogShow"
+      :dialog-title="importSetting.dialogTitle"
+    />
+  </div>
+</template>
+
+<script>
+import myTree from '@/components/myTree/index'
+import MyTableV2 from "@/components/myTable/myTableV2";
+import MyButton from "@/components/myButton/myButton";
+import SettingIplatform from '@/utils/settingIplatform';
+import items from './items'
+import edit from './edit'
+import * as finsystenant from '@/api/baseSetting/finsystenant'
+import myImport from '@/views/components/myImport'
+import {updStatus} from "@/api/baseSetting/finsystenant";
+import {getBaseUrl, getUploadUrl} from '@/utils/base';
+
+export default {
+  name: "index",
+  components: {MyButton, MyTableV2, edit, myTree, myImport},
+  data() {
+    return {
+      // 鎼滅储妗�
+      items: items,
+      // 鏍戞暟鎹�
+      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
+      },
+      editSetting: {
+        title: '',
+        id: '',
+        orgId: '',
+        show: false,
+      },
+      // 琛ㄦ牸鏁版嵁
+      table: {
+        showIndex: true, // 鏄惁鏄剧ず搴忓彿
+        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
+        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃
+        // 宸ュ叿鏉�
+        tools: {
+          columnsCtrl: {// 鍒楁帶鍒舵寜閽�
+            show: false
+          },
+          generalExport: {// 閫氱敤瀵煎嚭鎸夐挳
+            show: false
+          },
+          // 鑷畾涔夊伐鍏锋潯鎸夐挳
+          custom: [
+            {
+              name: '鏂板',
+              click: () => {
+                this.showAdd(null);
+              },
+            },
+          ]
+        },
+        // 鍒椾俊鎭�
+        columns: [
+          {title: '鍒嗙被鍚嶇О', field: 'category_Name', align: 'center'},
+          {title: '绫诲埆', field: 'classification', align: 'left'},
+          {title: '鏄剧ず椤哄簭', field: 'order_Number', align: 'center', width: '80px'},
+          {
+            field: 'states',
+            title: '鐘舵��',
+            align: 'center',
+            width: 100,
+            switch: row => {
+              const result = {}
+              if (row.status == 1) {
+                Object.assign(result, {
+                  value: true, // 寮�
+                  label: '鏄�', // 寮�鐨勬弿杩�
+                  click: () => { // 鐐瑰嚮浜嬩欢
+                    this.updState(row)
+                  }
+                })
+              } else {
+                Object.assign(result, {
+                  value: false, // 鍏�
+                  label: '鍚�', // 鍏崇殑鎻忚堪
+                  click: () => {
+                    this.updState(row)
+                  }
+                })
+              }
+              return result
+            }
+          }
+        ],
+        // 鎿嶄綔淇℃伅
+        operation: {
+          show: true, // 鏄剧ず鎿嶄綔鍒�
+          width: '150', // 鍒楀
+          attr: [
+            {
+              title: '缂栬緫',
+              events: (row) => {
+                this.showAudit(row);
+              },
+            },
+            {
+              title: '鍒犻櫎',
+              events: (row) => {
+                this.del(row);
+              },
+            }
+          ],
+        },
+        paging: {
+          show: true, // 鏄剧ず鍒嗛〉
+          // 鍒嗛〉淇℃伅
+          page: {
+            small: false,
+            pageNum: 1,
+            pageSize: 10,
+            total: 0
+          }
+        }
+      },
+    }
+  },
+  created() {
+    // 鑾峰彇鏈烘瀯鏍�
+    this.initTreeData()
+  },
+  methods: {
+    //瀵煎叆
+    importOrg() {
+        this.importSetting.dialogShow = true
+        this.importSetting.onSuccess = (response, callBack) => {
+            if (response.code===1){
+              this.$message.success(response.msg)
+              this.search(1)
+            }else{
+              this.$message.warning(response.msg)
+            }
+            callBack()
+        }
+    },
+    // 宸︿晶鏍戝垵濮嬪寲
+    initTreeData() {
+      finsystenant.getTree().then(res => {
+        const content = res || []
+        this.treeDataList.splice(0, this.treeDataList.length)
+        this.treeDataList = content
+        if (content.length > 0) {
+          this.importSetting.fileSettings.data = {pid: content[0].id}
+        }
+      })
+    },
+    updState(row) {
+      let vm = this
+      let text = row.status == 0 ? "鍚敤" : "绂佺敤";
+      vm.$modal.confirm('纭瑕�' + text + '"' + row.name + '"鍚楋紵').then(function () {
+        let params = Object.assign({}, row)
+        params.status = row.status == 1 ? 0 : 1
+        finsystenant.edit(params).then(res => {
+          if (res) {
+            row.status = row.status === 1 ? 0 : 1
+            vm.$modal.msgSuccess(text + "鎴愬姛");
+            vm.search()
+          }
+        })
+      })
+    },
+    del(row) {
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�')
+        .then(function () {
+          finsystenant.del({id: row.id}).then((res) => {
+          });
+        })
+        .then((res) => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.search()
+        })
+        .catch(() => {
+        });
+    },
+    showAdd() {
+      // if (!this.editSetting.orgId) {
+      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
+      // } else {
+        this.editSetting.id = null;
+        this.editSetting.info = null;
+        this.editSetting.title = '鏂板';
+        this.editSetting.show = true;
+      // }
+    },
+    showAudit(row) {
+      this.editSetting.id = row.id;
+      this.editSetting.info = JSON.stringify(row);
+      this.editSetting.title = '缂栬緫';
+      this.editSetting.show = true;
+    },
+    nodeClick(param) {
+      param = param || {}
+      this.p = Object.assign({}, {
+        id: param.id,
+        name: param.name
+      })
+      if (this.p.id != undefined && this.p.id != null) {
+        this.filterFrom.tenantId = this.p.id
+        this.editSetting.orgId = this.p.id
+      } else {
+        this.filterFrom.tenantId = null
+        this.editSetting.orgId = null
+      }
+      this.importSetting.fileSettings.data = {pid: param.id}
+      this.search(1)
+    },
+    // 鏌ヨtable鍒楄〃
+    search(pageNum) {
+      if (pageNum != undefined) {
+        this.$refs.myTable.search(pageNum)
+      } else {
+        this.$refs.myTable.search()
+      }
+    },
+    fifterForm(params) {
+      this.filterFrom = Object.assign(this.filterFrom, params)
+      this.search(1)
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/admin-web/src/views/foundation/classification/items.js b/admin-web/src/views/foundation/classification/items.js
new file mode 100644
index 0000000..82b5b87
--- /dev/null
+++ b/admin-web/src/views/foundation/classification/items.js
@@ -0,0 +1,47 @@
+export default [
+  {
+    type: 'text',
+    dataIndex: 'name',
+    label: '鍒嗙被鍚嶇О',
+    placeholder: '璇疯緭鍏�',
+    defaultValue: ''
+  },
+  {
+    type: 'select',
+    dataIndex: 'status',
+    label: '绫诲埆',
+    placeholder: '璇烽�夋嫨',
+    defaultValue: '1',
+    options: [
+      {
+        label: 'A',
+        value: '1'
+      },
+      {
+        label: 'B',
+        value: '2'
+      },
+      {
+        label: 'C',
+        value: '3'
+      }
+    ]
+  },
+  {
+    type: 'select',
+    dataIndex: 'status',
+    label: '鐘舵��',
+    placeholder: '璇烽�夋嫨',
+    defaultValue: '1',
+    options: [
+      {
+        label: '鍚敤',
+        value: '1'
+      },
+      {
+        label: '绂佺敤',
+        value: '0'
+      }
+    ]
+  }
+]
diff --git a/admin-web/src/views/foundation/material/edit.vue b/admin-web/src/views/foundation/material/edit.vue
new file mode 100644
index 0000000..1d1ad94
--- /dev/null
+++ b/admin-web/src/views/foundation/material/edit.vue
@@ -0,0 +1,130 @@
+<template>
+  <win-md :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="鐗╁搧缂栧彿">
+        <el-input v-model="formData.code88" disabled 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 style="margin-left: -100px;" v-for="(m, i) in formData.code">
+        <el-form-item label="瑙勬牸鍨嬪彿" prop="name" style="float: left;">
+          <el-input v-model="m.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+        </el-form-item>
+        <el-form-item label="鍗曚綅" prop="name" style="float: left;">
+          <el-input v-model="m.code" clearable maxlength="20" show-word-limit style="width: 100%"/>
+        </el-form-item>
+        <my-button name="鏂板鍨嬪彿" type="" @click="addCode"/>
+        <my-button name="鍒犻櫎" type="" @click="delCode(i)"/>
+      </el-form-item>
+      <el-form-item label="鐘舵��">
+        <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-md>
+</template>
+
+<script>
+import winMd from '@/components/win/win-md'
+import myButton from '@/components/myButton/myButton'
+import * as finsystenant from '@/api/baseSetting/finsystenant'
+
+export default {
+  components: {winMd, myButton},
+  props: {
+    setting: {
+      type: Object,
+      default: () => {
+      }
+    }
+  },
+  data() {
+    return {
+      checkAll: false,
+      checkedList: [],
+      formData: {
+        radio1: '',
+        code: '',
+        name: '',
+        status: true,
+        summary: '',
+        code:[
+          {
+            name:'12',
+            code:'13'
+          },
+        ]
+      },
+      rules: {
+        name: [
+          {required: true, message: '璇疯緭鍏ョ墿鍝佸悕绉�', trigger: 'blur'}
+        ]
+      }
+    }
+  },
+  created() {
+    if(this.setting.info){
+      this.formData = Object.assign({},JSON.parse(this.setting.info))
+    }
+  },
+  methods: {
+    addCode(){
+      this.formData.code.push(
+        {
+          name:'',
+          code:''
+        }
+      )
+    },
+    delCode(index){
+      this.formData.code.splice(index, 1)
+    },
+    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/foundation/material/index.vue b/admin-web/src/views/foundation/material/index.vue
new file mode 100644
index 0000000..167fd9a
--- /dev/null
+++ b/admin-web/src/views/foundation/material/index.vue
@@ -0,0 +1,342 @@
+<template>
+  <div class="app-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-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
+            </el-col>
+          </el-row>
+          <!--娣诲姞/缂栬緫寮圭獥-->
+          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
+        </el-card>
+      </el-container>
+    </el-container>
+    <my-import
+      :import-setting="importSetting"
+      :dialog-show="importSetting.dialogShow"
+      :dialog-title="importSetting.dialogTitle"
+    />
+  </div>
+</template>
+
+<script>
+import myTree from '@/components/myTree/index'
+import MyTableV2 from "@/components/myTable/myTableV2";
+import MyButton from "@/components/myButton/myButton";
+import SettingIplatform from '@/utils/settingIplatform';
+import edit from './edit'
+import * as finsystenant from '@/api/baseSetting/finsystenant'
+import myImport from '@/views/components/myImport'
+import {getBaseUrl} from '@/utils/base';
+
+export default {
+  name: "index",
+  components: {MyButton, MyTableV2, edit, myTree, myImport},
+  data() {
+    return {
+      // 鎼滅储妗�
+      items: [
+        {
+          type: 'text',
+          dataIndex: 'goods_Name',
+          label: '鐗╁搧鍚嶇О',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'text',
+          dataIndex: 'goods_Code',
+          label: '鐗╁搧缂栧彿',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'select',
+          dataIndex: 'status',
+          label: '绫诲埆',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '1',
+          options: [
+            {
+              label: 'A',
+              value: '1'
+            },
+            {
+              label: 'B',
+              value: '2'
+            },
+            {
+              label: 'C',
+              value: '3'
+            }
+          ]
+        },
+        {
+          type: 'select',
+          dataIndex: 'status',
+          label: '閲囪喘绫诲埆',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '1',
+          options: [
+            {
+              label: '鍏ㄩ儴',
+              value: '1'
+            },
+            {
+              label: '鑷噰',
+              value: '2'
+            },
+            {
+              label: '闆嗛噰',
+              value: '3'
+            }
+          ]
+        },
+        {
+          type: 'select',
+          dataIndex: 'status',
+          label: '鐘舵��',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '1',
+          options: [
+            {
+              label: '鍚敤',
+              value: '1'
+            },
+            {
+              label: '绂佺敤',
+              value: '0'
+            }
+          ]
+        }
+      ],
+      // 鎼滅储鏉′欢
+      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
+      },
+      editSetting: {
+        title: '',
+        id: '',
+        orgId: '',
+        show: false,
+      },
+      // 琛ㄦ牸鏁版嵁
+      table: {
+        showIndex: true, // 鏄惁鏄剧ず搴忓彿
+        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
+        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃
+        // 宸ュ叿鏉�
+        tools: {
+          columnsCtrl: {// 鍒楁帶鍒舵寜閽�
+            show: false
+          },
+          generalExport: {// 閫氱敤瀵煎嚭鎸夐挳
+            show: false
+          },
+          // 鑷畾涔夊伐鍏锋潯鎸夐挳
+          custom: [
+            {
+              name: '鏂板',
+              click: () => {
+                this.showAdd(null);
+              },
+            },
+            {
+              name: '瀵煎叆',
+              click: () => {
+                this.importOrg();
+              },
+            }
+          ]
+        },
+        // 鍒椾俊鎭�
+        columns: [
+          {title: '鐗╁搧缂栧彿', field: 'goods_Code', align: 'center'},
+          {title: '鐗╁搧鍚嶇О', field: 'goods_Name', align: 'center'},
+          {title: '鍒嗙被', field: 'classification', align: 'center'},
+          {title: '绫诲埆', field: 'states', align: 'center'},
+          {title: '閲囪喘绫诲瀷', field: 'category_id', align: 'center'},
+          {title: '鎵�灞炴満鏋�', field: 'agency_Name', align: 'center'},
+          {
+            title: '鍒涘缓鏃堕棿',
+            field: 'create_Date',
+            align: 'center',
+            width: 160,
+            formatter: (row) => {
+              return {value: DateFormatter.LongToDateTime(row.create_Date)};
+            },
+          },
+          {
+            field: 'states',
+            title: '鐘舵��',
+            align: 'center',
+            width: 100,
+            switch: row => {
+              const result = {}
+              if (row.status == 1) {
+                Object.assign(result, {
+                  value: true, // 寮�
+                  label: '鏄�', // 寮�鐨勬弿杩�
+                  click: () => { // 鐐瑰嚮浜嬩欢
+                    this.updState(row)
+                  }
+                })
+              } else {
+                Object.assign(result, {
+                  value: false, // 鍏�
+                  label: '鍚�', // 鍏崇殑鎻忚堪
+                  click: () => {
+                    this.updState(row)
+                  }
+                })
+              }
+              return result
+            }
+          }
+        ],
+        // 鎿嶄綔淇℃伅
+        operation: {
+          show: true, // 鏄剧ず鎿嶄綔鍒�
+          width: '150', // 鍒楀
+          attr: [
+            {
+              title: '缂栬緫',
+              events: (row) => {
+                this.showAudit(row);
+              },
+            },
+            {
+              title: '鍒犻櫎',
+              events: (row) => {
+                this.del(row);
+              },
+            },
+            {
+              title: '瑙勬牸鍨嬪彿',
+              events: (row) => {
+                this.showAudit(row);
+              },
+            },
+          ],
+        },
+        paging: {
+          show: true, // 鏄剧ず鍒嗛〉
+          // 鍒嗛〉淇℃伅
+          page: {
+            small: false,
+            pageNum: 1,
+            pageSize: 10,
+            total: 0
+          }
+        }
+      },
+    }
+  },
+  created() {
+  },
+  methods: {
+    //瀵煎叆
+    importOrg() {
+        this.importSetting.dialogShow = true
+        this.importSetting.onSuccess = (response, callBack) => {
+            if (response.code===1){
+              this.$message.success(response.msg)
+              this.search(1)
+            }else{
+              this.$message.warning(response.msg)
+            }
+            callBack()
+        }
+    },
+    updState(row) {
+      let vm = this
+      let text = row.status == 0 ? "鍚敤" : "绂佺敤";
+      vm.$modal.confirm('纭瑕�' + text + '"' + row.name + '"鍚楋紵').then(function () {
+        let params = Object.assign({}, row)
+        params.status = row.status == 1 ? 0 : 1
+        finsystenant.edit(params).then(res => {
+          if (res) {
+            row.status = row.status === 1 ? 0 : 1
+            vm.$modal.msgSuccess(text + "鎴愬姛");
+            vm.search()
+          }
+        })
+      })
+    },
+    del(row) {
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�')
+        .then(function () {
+          finsystenant.del({id: row.id}).then((res) => {
+          });
+        })
+        .then((res) => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.search()
+        })
+        .catch(() => {
+        });
+    },
+    showAdd() {
+      // if (!this.editSetting.orgId) {
+      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
+      // } else {
+        this.editSetting.id = null;
+        this.editSetting.info = null;
+        this.editSetting.title = '鏂板';
+        this.editSetting.show = true;
+      // }
+    },
+    showAudit(row) {
+      this.editSetting.id = row.id;
+      this.editSetting.info = JSON.stringify(row);
+      this.editSetting.title = '缂栬緫';
+      this.editSetting.show = true;
+    },
+    // 鏌ヨtable鍒楄〃
+    search(pageNum) {
+      if (pageNum != undefined) {
+        this.$refs.myTable.search(pageNum)
+      } else {
+        this.$refs.myTable.search()
+      }
+    },
+    fifterForm(params) {
+      this.filterFrom = Object.assign(this.filterFrom, params)
+      this.search(1)
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/admin-web/src/views/foundation/store/edit.vue b/admin-web/src/views/foundation/store/edit.vue
new file mode 100644
index 0000000..37b0db9
--- /dev/null
+++ b/admin-web/src/views/foundation/store/edit.vue
@@ -0,0 +1,111 @@
+<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/foundation/store/index.vue b/admin-web/src/views/foundation/store/index.vue
new file mode 100644
index 0000000..3f7a463
--- /dev/null
+++ b/admin-web/src/views/foundation/store/index.vue
@@ -0,0 +1,307 @@
+<template>
+  <div class="app-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-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
+            </el-col>
+          </el-row>
+          <!--娣诲姞/缂栬緫寮圭獥-->
+          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
+        </el-card>
+      </el-container>
+    </el-container>
+    <my-import
+      :import-setting="importSetting"
+      :dialog-show="importSetting.dialogShow"
+      :dialog-title="importSetting.dialogTitle"
+    />
+  </div>
+</template>
+
+<script>
+import MyTableV2 from "@/components/myTable/myTableV2";
+import MyButton from "@/components/myButton/myButton";
+import SettingIplatform from '@/utils/settingIplatform';
+import edit from './edit'
+import * as finsystenant from '@/api/baseSetting/finsystenant'
+import myImport from '@/views/components/myImport'
+import {getBaseUrl} from '@/utils/base';
+
+export default {
+  name: "index",
+  components: {MyButton, MyTableV2, edit, myImport},
+  data() {
+    return {
+      // 鎼滅储妗�
+      items: [
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '浠撳簱鍚嶇О',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'select',
+          dataIndex: 'status',
+          label: '鐘舵��',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '1',
+          options: [
+            {
+              label: '鍚敤',
+              value: '1'
+            },
+            {
+              label: '绂佺敤',
+              value: '0'
+            }
+          ]
+        }
+      ],
+      // 鏍戞暟鎹�
+      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
+      },
+      editSetting: {
+        title: '',
+        id: '',
+        orgId: '',
+        show: false,
+      },
+      // 琛ㄦ牸鏁版嵁
+      table: {
+        showIndex: true, // 鏄惁鏄剧ず搴忓彿
+        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
+        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃
+        // 宸ュ叿鏉�
+        tools: {
+          columnsCtrl: {// 鍒楁帶鍒舵寜閽�
+            show: false
+          },
+          generalExport: {// 閫氱敤瀵煎嚭鎸夐挳
+            show: false
+          },
+          // 鑷畾涔夊伐鍏锋潯鎸夐挳
+          custom: [
+            {
+              name: '鏂板',
+              click: () => {
+                this.showAdd(null);
+              },
+            },
+          ]
+        },
+        // 鍒椾俊鎭�
+        columns: [
+          {title: '鍚嶇О浠撳簱', field: 'name', align: 'left',},
+          {title: '缂栧彿', field: 'code', align: 'center'},
+          {title: '绫诲瀷', field: 'lv', align: 'center', },
+          {title: '鍦板潃', field: 'lv', align: 'center', },
+          {title: '鎵�灞炴満鏋�', field: 'summary', align: 'left',},
+          {
+            field: 'belongProvince',
+            title: '鐘舵��',
+            align: 'center',
+            width: 100,
+            switch: row => {
+              const result = {}
+              if (row.status == 1) {
+                Object.assign(result, {
+                  value: true, // 寮�
+                  label: '鏄�', // 寮�鐨勬弿杩�
+                  click: () => { // 鐐瑰嚮浜嬩欢
+                    this.updState(row)
+                  }
+                })
+              } else {
+                Object.assign(result, {
+                  value: false, // 鍏�
+                  label: '鍚�', // 鍏崇殑鎻忚堪
+                  click: () => {
+                    this.updState(row)
+                  }
+                })
+              }
+              return result
+            }
+          }
+        ],
+        // 鎿嶄綔淇℃伅
+        operation: {
+          show: true, // 鏄剧ず鎿嶄綔鍒�
+          width: '150', // 鍒楀
+          attr: [
+            {
+              title: '缂栬緫',
+              events: (row) => {
+                this.showAudit(row);
+              },
+            },
+            {
+              title: '鍒犻櫎',
+              events: (row) => {
+                this.del(row);
+              },
+            },
+            {
+              title: '浠撳簱鍛�',
+              events: (row) => {
+                this.showAudit(row);
+              },
+            }
+          ],
+        },
+        paging: {
+          show: true, // 鏄剧ず鍒嗛〉
+          // 鍒嗛〉淇℃伅
+          page: {
+            small: false,
+            pageNum: 1,
+            pageSize: 10,
+            total: 0
+          }
+        }
+      },
+    }
+  },
+  created() {
+    // 鑾峰彇鏈烘瀯鏍�
+    this.initTreeData()
+  },
+  methods: {
+    //瀵煎叆
+    importOrg() {
+        this.importSetting.dialogShow = true
+        this.importSetting.onSuccess = (response, callBack) => {
+            if (response.code===1){
+              this.$message.success(response.msg)
+              this.search(1)
+            }else{
+              this.$message.warning(response.msg)
+            }
+            callBack()
+        }
+    },
+    // 宸︿晶鏍戝垵濮嬪寲
+    initTreeData() {
+      finsystenant.getTree().then(res => {
+        const content = res || []
+        this.treeDataList.splice(0, this.treeDataList.length)
+        this.treeDataList = content
+        if (content.length > 0) {
+          this.importSetting.fileSettings.data = {pid: content[0].id}
+        }
+      })
+    },
+    updState(row) {
+      let vm = this
+      let text = row.status == 0 ? "鍚敤" : "绂佺敤";
+      vm.$modal.confirm('纭瑕�' + text + '"' + row.name + '"鍚楋紵').then(function () {
+        let params = Object.assign({}, row)
+        params.status = row.status == 1 ? 0 : 1
+        finsystenant.edit(params).then(res => {
+          if (res) {
+            row.status = row.status === 1 ? 0 : 1
+            vm.$modal.msgSuccess(text + "鎴愬姛");
+            vm.search()
+          }
+        })
+      })
+    },
+    del(row) {
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�')
+        .then(function () {
+          finsystenant.del({id: row.id}).then((res) => {
+          });
+        })
+        .then((res) => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.search()
+        })
+        .catch(() => {
+        });
+    },
+    showAdd() {
+      // if (!this.editSetting.orgId) {
+      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
+      // } else {
+        this.editSetting.id = null;
+        this.editSetting.info = null;
+        this.editSetting.title = '鏂板';
+        this.editSetting.show = true;
+      // }
+    },
+    showAudit(row) {
+      this.editSetting.id = row.id;
+      this.editSetting.info = JSON.stringify(row);
+      this.editSetting.title = '缂栬緫';
+      this.editSetting.show = true;
+    },
+    nodeClick(param) {
+      param = param || {}
+      this.p = Object.assign({}, {
+        id: param.id,
+        name: param.name
+      })
+      if (this.p.id != undefined && this.p.id != null) {
+        this.filterFrom.tenantId = this.p.id
+        this.editSetting.orgId = this.p.id
+      } else {
+        this.filterFrom.tenantId = null
+        this.editSetting.orgId = null
+      }
+      this.importSetting.fileSettings.data = {pid: param.id}
+      this.search(1)
+    },
+    // 鏌ヨtable鍒楄〃
+    search(pageNum) {
+      if (pageNum != undefined) {
+        this.$refs.myTable.search(pageNum)
+      } else {
+        this.$refs.myTable.search()
+      }
+    },
+    fifterForm(params) {
+      this.filterFrom = Object.assign(this.filterFrom, params)
+      this.search(1)
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/admin-web/src/views/stock/accessStock/outbound/index.vue b/admin-web/src/views/stock/accessStock/outbound/index.vue
new file mode 100644
index 0000000..ea1d5b0
--- /dev/null
+++ b/admin-web/src/views/stock/accessStock/outbound/index.vue
@@ -0,0 +1,449 @@
+<template>
+  <div class="app-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"/>
+            </div>
+          </el-dialog>
+        </el-card>
+      </el-container>
+    </el-container>
+    <my-import
+      :import-setting="importSetting"
+      :dialog-show="importSetting.dialogShow"
+      :dialog-title="importSetting.dialogTitle"
+    />
+  </div>
+</template>
+
+<script>
+import MyButton from "@/components/myButton/myButton";
+import SettingIplatform from '@/utils/settingIplatform';
+import myImport from '@/views/components/myImport'
+import {getBaseUrl} from '@/utils/base';
+
+export default {
+  name: "index",
+  components: {MyButton, myImport},
+  data() {
+    return {
+      
+      adddialog: false,
+      formData:{
+        tableData:[
+          {
+            projectName:'555'
+          },
+          {
+            projectName:'444'
+          }
+        ],
+      },
+      // 鎼滅储妗�
+      items: [
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍑哄簱鍗曞彿',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鐗╁搧鍚嶇О',
+          placeholder: '鍙ā绯婃悳绱�',
+          defaultValue: ''
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍒涘缓浜�',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'date-picker',
+          dataIndex: 'val1',
+          label: '鍑哄簱鏃堕棿',
+          defaultValue: ''
+        },
+        {
+          type: 'date-picker',
+          dataIndex: 'val2',
+          label: '鑷�',
+          defaultValue: ''
+        },
+        // {
+        //   type: 'select',
+        //   dataIndex: 'status',
+        //   label: '鐘舵��',
+        //   placeholder: '璇烽�夋嫨',
+        //   defaultValue: '1',
+        //   options: [
+        //     {
+        //       label: '鍚敤',
+        //       value: '1'
+        //     },
+        //     {
+        //       label: '绂佺敤',
+        //       value: '0'
+        //     }
+        //   ]
+        // }
+      ],
+      proData: [
+        {
+          order_no:'55555',
+          customer_name:'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
+      },
+      editSetting: {
+        title: '',
+        id: '',
+        orgId: '',
+        show: false,
+      },
+    }
+  },
+  computed: {
+    clientHeight () {
+      return document.documentElement.clientHeight
+    },
+  },
+  created() {
+  },
+  methods: {
+    handleSizeChange(){},
+    handleCurrentChange(){},
+    //瀵煎叆
+    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()
+        }
+    },
+   
+    addtable() {
+      this.adddialog = true
+    },
+    // 鏌ヨtable鍒楄〃
+    search(pageNum) {
+      if (pageNum != undefined) {
+        // this.$refs.myTable.search(pageNum)
+      } else {
+        // this.$refs.myTable.search()
+      }
+    },
+    fifterForm(params) {
+      console.log(params,'555');
+      this.filterFrom = Object.assign(this.filterFrom, params)
+      this.search(1)
+    }
+  }
+}
+</script>
+
+<style scoped>
+.card {
+    display: flex;
+    flex-wrap: wrap;
+    margin: 0px !important;
+    .cm-item {
+        width: 100%;
+    }
+    .cm-item /deep/ .el-card__body {
+        padding: 10px;
+    }
+}
+.card-data{
+  margin-top: 8px;
+  .card-container{
+    display: inline-block; 
+    width: 70%;
+    .hed-one{
+      color: #2298EE;
+      font-size: 18px;
+    }
+    .one-hed{
+      margin-top: 15px;
+      .box{
+        display: inline-block;  
+        margin-right: 20px;  
+      }
+    }
+    .span-two{
+      color: #83919e;
+      font-size: 14px;
+    }
+    .card-end{
+      font-size: 14px;
+      color: #3d3d3d;
+      margin-top: 15px;
+      display: flex;  
+      flex-wrap: wrap; 
+      .two-end{
+        width: calc(33.33% - 20px); 
+        margin-bottom: 15px; 
+      }
+    }
+    
+  }
+  .card-but{
+    display: inline-block; 
+  }
+  .end{
+    display: inline-block;  
+  }
+  
+}
+
+</style>
diff --git a/admin-web/src/views/stock/accessStock/outboundDetails/edit.vue b/admin-web/src/views/stock/accessStock/outboundDetails/edit.vue
new file mode 100644
index 0000000..37b0db9
--- /dev/null
+++ b/admin-web/src/views/stock/accessStock/outboundDetails/edit.vue
@@ -0,0 +1,111 @@
+<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/accessStock/outboundDetails/index.vue b/admin-web/src/views/stock/accessStock/outboundDetails/index.vue
new file mode 100644
index 0000000..2936cd9
--- /dev/null
+++ b/admin-web/src/views/stock/accessStock/outboundDetails/index.vue
@@ -0,0 +1,280 @@
+<template>
+  <div class="app-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-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
+            </el-col>
+          </el-row>
+          <!--娣诲姞/缂栬緫寮圭獥-->
+          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
+        </el-card>
+      </el-container>
+    </el-container>
+    <my-import
+      :import-setting="importSetting"
+      :dialog-show="importSetting.dialogShow"
+      :dialog-title="importSetting.dialogTitle"
+    />
+  </div>
+</template>
+
+<script>
+import MyTableV2 from "@/components/myTable/myTableV2";
+import MyButton from "@/components/myButton/myButton";
+import SettingIplatform from '@/utils/settingIplatform';
+import edit from './edit'
+import * as finsystenant from '@/api/baseSetting/finsystenant'
+import myImport from '@/views/components/myImport'
+import {getBaseUrl} from '@/utils/base';
+
+export default {
+  name: "index",
+  components: {MyButton, MyTableV2, edit, myImport},
+  data() {
+    return {
+      // 鎼滅储妗�
+      items: [
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍗曞彿',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'select',
+          dataIndex: 'status',
+          label: '绫诲瀷',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '1',
+          options: [
+            {
+              label: '鍚敤',
+              value: '1'
+            },
+            {
+              label: '绂佺敤',
+              value: '0'
+            }
+          ]
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鐗╁搧鍚嶇О',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍒涘缓浜�',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+      ],
+      // 鏍戞暟鎹�
+      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
+      },
+      editSetting: {
+        title: '',
+        id: '',
+        orgId: '',
+        show: false,
+      },
+      // 琛ㄦ牸鏁版嵁
+      table: {
+        showIndex: true, // 鏄惁鏄剧ず搴忓彿
+        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
+        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃
+        // 宸ュ叿鏉�
+        tools: {
+          columnsCtrl: {// 鍒楁帶鍒舵寜閽�
+            show: false
+          },
+          generalExport: {// 閫氱敤瀵煎嚭鎸夐挳
+            show: false
+          },
+          // 鑷畾涔夊伐鍏锋潯鎸夐挳
+          custom: [
+          ]
+        },
+        // 鍒椾俊鎭�
+        columns: [
+          {title: '绫诲瀷', field: 'name', align: 'left',},
+          {title: '鍗曞彿', field: 'code', align: 'center'},
+          {title: '鐗╁搧鍚嶇О', field: 'lv', align: 'center', },
+          {title: '瑙勬牸鍨嬪彿', field: 'lv', align: 'center', },
+          {title: '鍑哄叆搴撴暟閲�', field: 'summary', align: 'left',},
+          {title: '閲戦', field: 'summary', align: 'left',},
+          {title: '鎵�灞炴満鏋�', field: 'summary', align: 'left',},
+          {title: '鍒涘缓浜�', field: 'summary', align: 'left',},
+          {title: '鎿嶄綔鏃堕棿', field: 'summary', align: 'left',},
+        ],
+        // 鎿嶄綔淇℃伅
+        operation: {
+          show: true, // 鏄剧ず鎿嶄綔鍒�
+          width: '150', // 鍒楀
+          attr: [
+            {
+              title: '璇︽儏',
+              events: (row) => {
+                this.showAudit(row);
+              },
+            },
+          ],
+        },
+        paging: {
+          show: true, // 鏄剧ず鍒嗛〉
+          // 鍒嗛〉淇℃伅
+          page: {
+            small: false,
+            pageNum: 1,
+            pageSize: 10,
+            total: 0
+          }
+        }
+      },
+    }
+  },
+  created() {
+    // 鑾峰彇鏈烘瀯鏍�
+    this.initTreeData()
+  },
+  methods: {
+    //瀵煎叆
+    importOrg() {
+        this.importSetting.dialogShow = true
+        this.importSetting.onSuccess = (response, callBack) => {
+            if (response.code===1){
+              this.$message.success(response.msg)
+              this.search(1)
+            }else{
+              this.$message.warning(response.msg)
+            }
+            callBack()
+        }
+    },
+    // 宸︿晶鏍戝垵濮嬪寲
+    initTreeData() {
+      finsystenant.getTree().then(res => {
+        const content = res || []
+        this.treeDataList.splice(0, this.treeDataList.length)
+        this.treeDataList = content
+        if (content.length > 0) {
+          this.importSetting.fileSettings.data = {pid: content[0].id}
+        }
+      })
+    },
+    updState(row) {
+      let vm = this
+      let text = row.status == 0 ? "鍚敤" : "绂佺敤";
+      vm.$modal.confirm('纭瑕�' + text + '"' + row.name + '"鍚楋紵').then(function () {
+        let params = Object.assign({}, row)
+        params.status = row.status == 1 ? 0 : 1
+        finsystenant.edit(params).then(res => {
+          if (res) {
+            row.status = row.status === 1 ? 0 : 1
+            vm.$modal.msgSuccess(text + "鎴愬姛");
+            vm.search()
+          }
+        })
+      })
+    },
+    del(row) {
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�')
+        .then(function () {
+          finsystenant.del({id: row.id}).then((res) => {
+          });
+        })
+        .then((res) => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.search()
+        })
+        .catch(() => {
+        });
+    },
+    showAdd() {
+      // if (!this.editSetting.orgId) {
+      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
+      // } else {
+        this.editSetting.id = null;
+        this.editSetting.info = null;
+        this.editSetting.title = '鏂板';
+        this.editSetting.show = true;
+      // }
+    },
+    showAudit(row) {
+      this.editSetting.id = row.id;
+      this.editSetting.info = JSON.stringify(row);
+      this.editSetting.title = '缂栬緫';
+      this.editSetting.show = true;
+    },
+    nodeClick(param) {
+      param = param || {}
+      this.p = Object.assign({}, {
+        id: param.id,
+        name: param.name
+      })
+      if (this.p.id != undefined && this.p.id != null) {
+        this.filterFrom.tenantId = this.p.id
+        this.editSetting.orgId = this.p.id
+      } else {
+        this.filterFrom.tenantId = null
+        this.editSetting.orgId = null
+      }
+      this.importSetting.fileSettings.data = {pid: param.id}
+      this.search(1)
+    },
+    // 鏌ヨtable鍒楄〃
+    search(pageNum) {
+      if (pageNum != undefined) {
+        this.$refs.myTable.search(pageNum)
+      } else {
+        this.$refs.myTable.search()
+      }
+    },
+    fifterForm(params) {
+      this.filterFrom = Object.assign(this.filterFrom, params)
+      this.search(1)
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/admin-web/src/views/stock/procure/purchaseOrder/index.vue b/admin-web/src/views/stock/procure/purchaseOrder/index.vue
new file mode 100644
index 0000000..e5f7a65
--- /dev/null
+++ b/admin-web/src/views/stock/procure/purchaseOrder/index.vue
@@ -0,0 +1,457 @@
+<template>
+  <div class="app-container">
+    <el-container>
+      <el-container>
+        <el-card class="box-card" style="width: 100%" shadow="never">
+          <!--鎼滅储鏉′欢-->
+          <div class="filter-container">
+            <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
+          </div>
+          <el-row style="margin-top: 15px">
+            <el-col>
+              <!--鍒楄〃-->
+              <my-button name="鏂板" @click="addtable" site="form" />
+              <div :style="{'overflow-y': 'auto', height:`${clientHeight - 320}px`}">
+                    <el-row class="card"
+                            :gutter="5">
+                        <el-col v-for="(item, index) in proData" :key="index" class="cm-item">
+                          <el-card class="card-data">
+                            <div class="card-container">
+                              <div class="hed-one"> <span>鍏ュ簱鍗曞彿锛歿{ item.order_no }}</span><span style="margin-left: 20px;"><el-button type="warning" plain size="mini">寰呭叆搴�</el-button></span></div>
+                              <div class="one-hed">
+                                <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鍑哄簱鏃堕棿锛�</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鍏ュ簱鏃堕棿锛�</span>{{ item.customer_name }}</div>
+                              </div>
+                              <div class="card-end">
+                                <div v-for="(just, index) in item.data" class="two-end">
+                                  <div class="item"><span>{{ just.order_no }}锛�</span>{{ just.customer_name }}</div>
+                                </div>
+                              </div>
+                            </div>
+                            <div class="card-but">
+                              <div>
+                                <my-button style="width: 120px;" name="缂栬緫"   site="form" />
+                                <my-button style="width: 120px;" name="鍏ュ簱"   site="form" />
+                              </div>
+                              <div  style="margin-top: 10px;">
+                                <my-button style="width: 120px;" name="鍒犻櫎"   site="form" />
+                                <my-button style="width: 120px;" name="鏌ョ湅璇︽儏" site="form" />
+                              </div>
+                            </div>
+                            
+                          </el-card>
+                        </el-col>
+                    </el-row>
+              </div>
+              <el-pagination
+                :small="false"
+                :current-page="1"
+                :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
+                :page-size="10"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="0"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+              />
+            </el-col>
+          </el-row>
+          <!--娣诲姞/缂栬緫寮圭獥-->
+          <el-dialog title="鏂板鍑哄簱"  :close-on-click-modal="false" :visible.sync="adddialog" width="60%" >
+            <el-form ref="ruleForm" :model="formData" class="demo-ruleForm" label-width="100px">
+              <el-row :gutter="24" class="headerHeight">
+                  <el-col :span="12">
+                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="12">
+                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <el-row :gutter="24" class="headerHeight">
+                  <el-col :span="24">
+                    <el-form-item label="鍑哄簱鎵嬬画" prop="name">                      
+                      浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <div style="position: relative;">
+                  <div style="background-color: #F9F9F9;width: 90%;">
+                  <el-row :gutter="24" class="">
+                    <el-col :span="12">
+                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+                  <el-row :gutter="24" class="">
+                    <el-col :span="12">
+                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+                  <el-table :data="formData.tableData" height="100%"  :stripe="true">
+                    <el-table-column prop="projectName" label="瑙勬牸鍨嬪彿" align="center"> </el-table-column>
+                    <el-table-column prop="time1" label="鍗曚綅"  align="center"> </el-table-column>
+                    <el-table-column prop="unit" label="鐜版湁搴撳瓨" align="center"> </el-table-column>
+                    <el-table-column prop="time2" label="鍑哄簱鏁伴噺"  align="center"> </el-table-column>
+                  </el-table>
+                  </div>
+                  <div style="position: absolute;right: 0;top: 152px;">
+                    <my-button style="display: block;margin-left: 10px;margin-bottom: 5px;" name="绉婚櫎" site="form"/>
+                    <my-button name="鏂板鐗╁搧" site="form"/>
+                  </div>
+                </div>
+            </el-form>
+            <div slot="footer" align="center" class="dialog-footer">
+              <my-button name="纭畾" site="form" />
+              <my-button name="鍙栨秷" site="form" @click="adddialog = false"/>
+            </div>
+          </el-dialog>
+        </el-card>
+      </el-container>
+    </el-container>
+    <my-import
+      :import-setting="importSetting"
+      :dialog-show="importSetting.dialogShow"
+      :dialog-title="importSetting.dialogTitle"
+    />
+  </div>
+</template>
+
+<script>
+import MyButton from "@/components/myButton/myButton";
+import SettingIplatform from '@/utils/settingIplatform';
+import myImport from '@/views/components/myImport'
+import {getBaseUrl} from '@/utils/base';
+
+export default {
+  name: "index",
+  components: {MyButton, myImport},
+  data() {
+    return {
+      
+      adddialog: false,
+      formData:{
+        tableData:[
+          {
+            projectName:'555'
+          },
+          {
+            projectName:'444'
+          }
+        ],
+      },
+      // 鎼滅储妗�
+      items: [
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍑哄簱鍗曞彿',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鐗╁搧鍚嶇О',
+          placeholder: '鍙ā绯婃悳绱�',
+          defaultValue: ''
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍒涘缓浜�',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'date-picker',
+          dataIndex: 'val1',
+          label: '鍑哄簱鏃堕棿',
+          defaultValue: ''
+        },
+        {
+          type: 'date-picker',
+          dataIndex: 'val2',
+          label: '鑷�',
+          defaultValue: ''
+        },
+        // {
+        //   type: 'select',
+        //   dataIndex: 'status',
+        //   label: '鐘舵��',
+        //   placeholder: '璇烽�夋嫨',
+        //   defaultValue: '1',
+        //   options: [
+        //     {
+        //       label: '鍚敤',
+        //       value: '1'
+        //     },
+        //     {
+        //       label: '绂佺敤',
+        //       value: '0'
+        //     }
+        //   ]
+        // }
+      ],
+      proData: [
+        {
+          order_no:'55555',
+          customer_name:'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
+      },
+      editSetting: {
+        title: '',
+        id: '',
+        orgId: '',
+        show: false,
+      },
+    }
+  },
+  computed: {
+    clientHeight () {
+      return document.documentElement.clientHeight
+    },
+  },
+  created() {
+  },
+  methods: {
+    handleSizeChange(){},
+    handleCurrentChange(){},
+    //瀵煎叆
+    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()
+        }
+    },
+   
+    addtable() {
+      this.adddialog = true
+    },
+    // 鏌ヨtable鍒楄〃
+    search(pageNum) {
+      if (pageNum != undefined) {
+        // this.$refs.myTable.search(pageNum)
+      } else {
+        // this.$refs.myTable.search()
+      }
+    },
+    fifterForm(params) {
+      console.log(params,'555');
+      this.filterFrom = Object.assign(this.filterFrom, params)
+      this.search(1)
+    }
+  }
+}
+</script>
+
+<style scoped>
+.card {
+    display: flex;
+    flex-wrap: wrap;
+    margin: 0px !important;
+    .cm-item {
+        width: 100%;
+    }
+    .cm-item /deep/ .el-card__body {
+        padding: 10px;
+    }
+}
+.card-data{
+  position: relative;
+  margin-top: 8px;
+  .card-container{
+    display: inline-block; 
+    width: 70%;
+    .hed-one{
+      color: #2298EE;
+      font-size: 18px;
+    }
+    .one-hed{
+      margin-top: 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{
+    position: absolute;
+    right: 20px;
+    top: 40%;
+  }
+  
+}
+
+</style>
diff --git a/admin-web/src/views/stock/procure/receiptDetails/edit.vue b/admin-web/src/views/stock/procure/receiptDetails/edit.vue
new file mode 100644
index 0000000..37b0db9
--- /dev/null
+++ b/admin-web/src/views/stock/procure/receiptDetails/edit.vue
@@ -0,0 +1,111 @@
+<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
new file mode 100644
index 0000000..494f54e
--- /dev/null
+++ b/admin-web/src/views/stock/procure/receiptDetails/index.vue
@@ -0,0 +1,280 @@
+<template>
+  <div class="app-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-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
+            </el-col>
+          </el-row>
+          <!--娣诲姞/缂栬緫寮圭獥-->
+          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
+        </el-card>
+      </el-container>
+    </el-container>
+    <my-import
+      :import-setting="importSetting"
+      :dialog-show="importSetting.dialogShow"
+      :dialog-title="importSetting.dialogTitle"
+    />
+  </div>
+</template>
+
+<script>
+import MyTableV2 from "@/components/myTable/myTableV2";
+import MyButton from "@/components/myButton/myButton";
+import SettingIplatform from '@/utils/settingIplatform';
+import edit from './edit'
+import * as finsystenant from '@/api/baseSetting/finsystenant'
+import myImport from '@/views/components/myImport'
+import {getBaseUrl} from '@/utils/base';
+
+export default {
+  name: "index",
+  components: {MyButton, MyTableV2, edit, myImport},
+  data() {
+    return {
+      // 鎼滅储妗�
+      items: [
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍗曞彿',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'select',
+          dataIndex: 'status',
+          label: '绫诲瀷',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '1',
+          options: [
+            {
+              label: '鍚敤',
+              value: '1'
+            },
+            {
+              label: '绂佺敤',
+              value: '0'
+            }
+          ]
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鐗╁搧鍚嶇О',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍒涘缓浜�',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+      ],
+      // 鏍戞暟鎹�
+      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
+      },
+      editSetting: {
+        title: '',
+        id: '',
+        orgId: '',
+        show: false,
+      },
+      // 琛ㄦ牸鏁版嵁
+      table: {
+        showIndex: true, // 鏄惁鏄剧ず搴忓彿
+        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
+        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃
+        // 宸ュ叿鏉�
+        tools: {
+          columnsCtrl: {// 鍒楁帶鍒舵寜閽�
+            show: false
+          },
+          generalExport: {// 閫氱敤瀵煎嚭鎸夐挳
+            show: false
+          },
+          // 鑷畾涔夊伐鍏锋潯鎸夐挳
+          custom: [
+          ]
+        },
+        // 鍒椾俊鎭�
+        columns: [
+          {title: '鍗曞彿', field: 'code', align: 'center'},
+          {title: '鐗╁搧鍚嶇О', field: 'lv', align: 'center', },
+          {title: '瑙勬牸鍨嬪彿', field: 'lv', align: 'center', },
+          {title: '鍗曚环', field: 'summary', align: 'left',},
+          {title: '鍏ュ簱鏁伴噺', field: 'summary', align: 'left',},
+          {title: '閲戦', field: 'summary', align: 'left',},
+          {title: '鎵�灞炴満鏋�', field: 'summary', align: 'left',},
+          {title: '鍒涘缓浜�', field: 'summary', align: 'left',},
+          {title: '鎿嶄綔鏃堕棿', field: 'summary', align: 'left',},
+        ],
+        // 鎿嶄綔淇℃伅
+        operation: {
+          show: true, // 鏄剧ず鎿嶄綔鍒�
+          width: '150', // 鍒楀
+          attr: [
+            {
+              title: '璇︽儏',
+              events: (row) => {
+                this.showAudit(row);
+              },
+            },
+          ],
+        },
+        paging: {
+          show: true, // 鏄剧ず鍒嗛〉
+          // 鍒嗛〉淇℃伅
+          page: {
+            small: false,
+            pageNum: 1,
+            pageSize: 10,
+            total: 0
+          }
+        }
+      },
+    }
+  },
+  created() {
+    // 鑾峰彇鏈烘瀯鏍�
+    this.initTreeData()
+  },
+  methods: {
+    //瀵煎叆
+    importOrg() {
+        this.importSetting.dialogShow = true
+        this.importSetting.onSuccess = (response, callBack) => {
+            if (response.code===1){
+              this.$message.success(response.msg)
+              this.search(1)
+            }else{
+              this.$message.warning(response.msg)
+            }
+            callBack()
+        }
+    },
+    // 宸︿晶鏍戝垵濮嬪寲
+    initTreeData() {
+      finsystenant.getTree().then(res => {
+        const content = res || []
+        this.treeDataList.splice(0, this.treeDataList.length)
+        this.treeDataList = content
+        if (content.length > 0) {
+          this.importSetting.fileSettings.data = {pid: content[0].id}
+        }
+      })
+    },
+    updState(row) {
+      let vm = this
+      let text = row.status == 0 ? "鍚敤" : "绂佺敤";
+      vm.$modal.confirm('纭瑕�' + text + '"' + row.name + '"鍚楋紵').then(function () {
+        let params = Object.assign({}, row)
+        params.status = row.status == 1 ? 0 : 1
+        finsystenant.edit(params).then(res => {
+          if (res) {
+            row.status = row.status === 1 ? 0 : 1
+            vm.$modal.msgSuccess(text + "鎴愬姛");
+            vm.search()
+          }
+        })
+      })
+    },
+    del(row) {
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�')
+        .then(function () {
+          finsystenant.del({id: row.id}).then((res) => {
+          });
+        })
+        .then((res) => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.search()
+        })
+        .catch(() => {
+        });
+    },
+    showAdd() {
+      // if (!this.editSetting.orgId) {
+      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
+      // } else {
+        this.editSetting.id = null;
+        this.editSetting.info = null;
+        this.editSetting.title = '鏂板';
+        this.editSetting.show = true;
+      // }
+    },
+    showAudit(row) {
+      this.editSetting.id = row.id;
+      this.editSetting.info = JSON.stringify(row);
+      this.editSetting.title = '缂栬緫';
+      this.editSetting.show = true;
+    },
+    nodeClick(param) {
+      param = param || {}
+      this.p = Object.assign({}, {
+        id: param.id,
+        name: param.name
+      })
+      if (this.p.id != undefined && this.p.id != null) {
+        this.filterFrom.tenantId = this.p.id
+        this.editSetting.orgId = this.p.id
+      } else {
+        this.filterFrom.tenantId = null
+        this.editSetting.orgId = null
+      }
+      this.importSetting.fileSettings.data = {pid: param.id}
+      this.search(1)
+    },
+    // 鏌ヨtable鍒楄〃
+    search(pageNum) {
+      if (pageNum != undefined) {
+        this.$refs.myTable.search(pageNum)
+      } else {
+        this.$refs.myTable.search()
+      }
+    },
+    fifterForm(params) {
+      this.filterFrom = Object.assign(this.filterFrom, params)
+      this.search(1)
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/admin-web/src/views/stock/transfer/transferApplication/index.vue b/admin-web/src/views/stock/transfer/transferApplication/index.vue
new file mode 100644
index 0000000..77df32b
--- /dev/null
+++ b/admin-web/src/views/stock/transfer/transferApplication/index.vue
@@ -0,0 +1,457 @@
+<template>
+  <div class="app-container">
+    <el-container>
+      <el-container>
+        <el-card class="box-card" style="width: 100%" shadow="never">
+          <!--鎼滅储鏉′欢-->
+          <div class="filter-container">
+            <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
+          </div>
+          <el-row style="margin-top: 15px">
+            <el-col>
+              <!--鍒楄〃-->
+              <my-button name="鏂板" @click="addtable" site="form" />
+              <div :style="{'overflow-y': 'auto', height:`${clientHeight - 320}px`}">
+                    <el-row class="card"
+                            :gutter="5">
+                        <el-col v-for="(item, index) in proData" :key="index" class="cm-item">
+                          <el-card class="card-data">
+                            <div class="card-container">
+                              <div class="hed-one"> <span>璋冩嫧鍗曞彿锛歿{ item.order_no }}</span><span style="margin-left: 20px;"><el-button type="warning" plain size="mini">寰呮帴鏀�</el-button></span></div>
+                              <div class="one-hed">
+                                <div class="box"><span class="span-two">鎺ュ彈鏈烘瀯锛�</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鐢宠浜猴細</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鐢宠璋冩嫧鏃堕棿锛�</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鎺ユ敹鏃堕棿锛�</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">璋冩嫧鏃堕棿锛�</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鎺ュ彈浜猴細</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鎺ュ彈鏃堕棿锛�</span>{{ item.customer_name }}</div>
+                              </div>
+                              <div class="card-end">
+                                <div v-for="(just, index) in item.data" class="two-end">
+                                  <div class="item"><span>{{ just.order_no }}锛�</span>{{ just.customer_name }}</div>
+                                </div>
+                              </div>
+                            </div>
+                            <div class="card-but">
+                              <div  style="margin-top: 10px;">
+                                <my-button style="width: 120px;" name="鍒犻櫎"   site="form" />
+                                <my-button style="width: 120px;" name="鏌ョ湅璇︽儏" site="form" />
+                              </div>
+                            </div>
+                            
+                          </el-card>
+                        </el-col>
+                    </el-row>
+              </div>
+              <el-pagination
+                :small="false"
+                :current-page="1"
+                :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
+                :page-size="10"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="0"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+              />
+            </el-col>
+          </el-row>
+          <!--娣诲姞/缂栬緫寮圭獥-->
+          <el-dialog title="鏂板鍑哄簱"  :close-on-click-modal="false" :visible.sync="adddialog" width="60%" >
+            <el-form ref="ruleForm" :model="formData" class="demo-ruleForm" label-width="100px">
+              <el-row :gutter="24" class="headerHeight">
+                  <el-col :span="12">
+                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="12">
+                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <el-row :gutter="24" class="headerHeight">
+                  <el-col :span="24">
+                    <el-form-item label="鍑哄簱鎵嬬画" prop="name">                      
+                      浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <div style="position: relative;">
+                  <div style="background-color: #F9F9F9;width: 90%;">
+                  <el-row :gutter="24" class="">
+                    <el-col :span="12">
+                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+                  <el-row :gutter="24" class="">
+                    <el-col :span="12">
+                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+                  <el-table :data="formData.tableData" height="100%"  :stripe="true">
+                    <el-table-column prop="projectName" label="瑙勬牸鍨嬪彿" align="center"> </el-table-column>
+                    <el-table-column prop="time1" label="鍗曚綅"  align="center"> </el-table-column>
+                    <el-table-column prop="unit" label="鐜版湁搴撳瓨" align="center"> </el-table-column>
+                    <el-table-column prop="time2" label="鍑哄簱鏁伴噺"  align="center"> </el-table-column>
+                  </el-table>
+                  </div>
+                  <div style="position: absolute;right: 0;top: 152px;">
+                    <my-button style="display: block;margin-left: 10px;margin-bottom: 5px;" name="绉婚櫎" site="form"/>
+                    <my-button name="鏂板鐗╁搧" site="form"/>
+                  </div>
+                </div>
+            </el-form>
+            <div slot="footer" align="center" class="dialog-footer">
+              <my-button name="纭畾" site="form" />
+              <my-button name="鍙栨秷" site="form" @click="adddialog = false"/>
+            </div>
+          </el-dialog>
+        </el-card>
+      </el-container>
+    </el-container>
+    <my-import
+      :import-setting="importSetting"
+      :dialog-show="importSetting.dialogShow"
+      :dialog-title="importSetting.dialogTitle"
+    />
+  </div>
+</template>
+
+<script>
+import MyButton from "@/components/myButton/myButton";
+import SettingIplatform from '@/utils/settingIplatform';
+import myImport from '@/views/components/myImport'
+import {getBaseUrl} from '@/utils/base';
+
+export default {
+  name: "index",
+  components: {MyButton, myImport},
+  data() {
+    return {
+      
+      adddialog: false,
+      formData:{
+        tableData:[
+          {
+            projectName:'555'
+          },
+          {
+            projectName:'444'
+          }
+        ],
+      },
+      // 鎼滅储妗�
+      items: [
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍑哄簱鍗曞彿',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鐗╁搧鍚嶇О',
+          placeholder: '鍙ā绯婃悳绱�',
+          defaultValue: ''
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍒涘缓浜�',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'date-picker',
+          dataIndex: 'val1',
+          label: '鍑哄簱鏃堕棿',
+          defaultValue: ''
+        },
+        {
+          type: 'date-picker',
+          dataIndex: 'val2',
+          label: '鑷�',
+          defaultValue: ''
+        },
+        // {
+        //   type: 'select',
+        //   dataIndex: 'status',
+        //   label: '鐘舵��',
+        //   placeholder: '璇烽�夋嫨',
+        //   defaultValue: '1',
+        //   options: [
+        //     {
+        //       label: '鍚敤',
+        //       value: '1'
+        //     },
+        //     {
+        //       label: '绂佺敤',
+        //       value: '0'
+        //     }
+        //   ]
+        // }
+      ],
+      proData: [
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'20浠�'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+          ]
+        },
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃'
+            },
+          ]
+        },
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'20浠�'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+          ]
+        },
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'20浠�'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+          ]
+          
+        },
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'20浠�'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+          ]
+          
+        },
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'20浠�'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+          ]
+          
+        },
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'20浠�'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+          ]
+          
+        }
+      ],
+      // 鏍戞暟鎹�
+      treeDataList: [],
+      // 鎼滅储鏉′欢
+      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
+      },
+      editSetting: {
+        title: '',
+        id: '',
+        orgId: '',
+        show: false,
+      },
+    }
+  },
+  computed: {
+    clientHeight () {
+      return document.documentElement.clientHeight
+    },
+  },
+  created() {
+  },
+  methods: {
+    handleSizeChange(){},
+    handleCurrentChange(){},
+    //瀵煎叆
+    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()
+        }
+    },
+   
+    addtable() {
+      this.adddialog = true
+    },
+    // 鏌ヨtable鍒楄〃
+    search(pageNum) {
+      if (pageNum != undefined) {
+        // this.$refs.myTable.search(pageNum)
+      } else {
+        // this.$refs.myTable.search()
+      }
+    },
+    fifterForm(params) {
+      console.log(params,'555');
+      this.filterFrom = Object.assign(this.filterFrom, params)
+      this.search(1)
+    }
+  }
+}
+</script>
+
+<style scoped>
+.card {
+    display: flex;
+    flex-wrap: wrap;
+    margin: 0px !important;
+    .cm-item {
+        width: 100%;
+    }
+    .cm-item /deep/ .el-card__body {
+        padding: 10px;
+    }
+}
+.card-data{
+  position: relative;
+  margin-top: 8px;
+  .card-container{
+    display: inline-block; 
+    width: 70%;
+    .hed-one{
+      color: #2298EE;
+      font-size: 18px;
+    }
+    .one-hed{
+      margin-top: 5px;
+      .box{
+        display: inline-block;  
+        margin-right: 20px;  
+        margin-top: 10px;
+      }
+    }
+    .span-two{
+      color: #83919e;
+      font-size: 14px;
+    }
+    .card-end{
+      font-size: 14px;
+      color: #3d3d3d;
+      margin-top: 15px;
+      display: flex;  
+      flex-wrap: wrap; 
+      .two-end{
+        width: calc(33.33% - 20px); 
+        margin-bottom: 15px; 
+      }
+    }
+    
+  }
+  .card-but{
+    position: absolute;
+    right: 20px;
+    top: 40%;
+  }
+  
+}
+
+</style>
diff --git a/admin-web/src/views/stock/transfer/transferdetails/edit.vue b/admin-web/src/views/stock/transfer/transferdetails/edit.vue
new file mode 100644
index 0000000..37b0db9
--- /dev/null
+++ b/admin-web/src/views/stock/transfer/transferdetails/edit.vue
@@ -0,0 +1,111 @@
+<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/transfer/transferdetails/index.vue b/admin-web/src/views/stock/transfer/transferdetails/index.vue
new file mode 100644
index 0000000..a0db784
--- /dev/null
+++ b/admin-web/src/views/stock/transfer/transferdetails/index.vue
@@ -0,0 +1,282 @@
+<template>
+  <div class="app-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-table-v2 ref="myTable" :filter="filterFrom" :table="table"/>
+            </el-col>
+          </el-row>
+          <!--娣诲姞/缂栬緫寮圭獥-->
+          <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/>
+        </el-card>
+      </el-container>
+    </el-container>
+    <my-import
+      :import-setting="importSetting"
+      :dialog-show="importSetting.dialogShow"
+      :dialog-title="importSetting.dialogTitle"
+    />
+  </div>
+</template>
+
+<script>
+import MyTableV2 from "@/components/myTable/myTableV2";
+import MyButton from "@/components/myButton/myButton";
+import SettingIplatform from '@/utils/settingIplatform';
+import edit from './edit'
+import * as finsystenant from '@/api/baseSetting/finsystenant'
+import myImport from '@/views/components/myImport'
+import {getBaseUrl} from '@/utils/base';
+
+export default {
+  name: "index",
+  components: {MyButton, MyTableV2, edit, myImport},
+  data() {
+    return {
+      // 鎼滅储妗�
+      items: [
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍗曞彿',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'select',
+          dataIndex: 'status',
+          label: '绫诲瀷',
+          placeholder: '璇烽�夋嫨',
+          defaultValue: '1',
+          options: [
+            {
+              label: '鍚敤',
+              value: '1'
+            },
+            {
+              label: '绂佺敤',
+              value: '0'
+            }
+          ]
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鐗╁搧鍚嶇О',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍒涘缓浜�',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+      ],
+      // 鏍戞暟鎹�
+      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
+      },
+      editSetting: {
+        title: '',
+        id: '',
+        orgId: '',
+        show: false,
+      },
+      // 琛ㄦ牸鏁版嵁
+      table: {
+        showIndex: true, // 鏄惁鏄剧ず搴忓彿
+        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
+        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃
+        // 宸ュ叿鏉�
+        tools: {
+          columnsCtrl: {// 鍒楁帶鍒舵寜閽�
+            show: false
+          },
+          generalExport: {// 閫氱敤瀵煎嚭鎸夐挳
+            show: false
+          },
+          // 鑷畾涔夊伐鍏锋潯鎸夐挳
+          custom: [
+          ]
+        },
+        // 鍒椾俊鎭�
+        columns: [
+          {title: '鍗曞彿', field: 'code', align: 'center'},
+          {title: '鐗╁搧鍚嶇О', field: 'lv', align: 'center', },
+          {title: '瑙勬牸鍨嬪彿', field: 'lv', align: 'center', },
+          {title: '鏁伴噺', field: 'summary', align: 'left',},
+          {title: '鎺ュ彈鏈烘瀯', field: 'summary', align: 'left',},
+          {title: '鍒涘缓浜�', field: 'summary', align: 'left',},
+          {title: '鐢宠鏃堕棿', field: 'summary', align: 'left',},
+          {title: '鎺ユ敹鏃堕棿', field: 'summary', align: 'left',},
+          {title: '璋冩嫧鏈烘瀯', field: 'summary', align: 'left',},
+          {title: '璋冩嫧浜�', field: 'summary', align: 'left',},
+          {title: '璋冩嫧鏃堕棿', field: 'summary', align: 'left',},
+        ],
+        // 鎿嶄綔淇℃伅
+        operation: {
+          show: true, // 鏄剧ず鎿嶄綔鍒�
+          width: '150', // 鍒楀
+          attr: [
+            {
+              title: '璇︽儏',
+              events: (row) => {
+                this.showAudit(row);
+              },
+            },
+          ],
+        },
+        paging: {
+          show: true, // 鏄剧ず鍒嗛〉
+          // 鍒嗛〉淇℃伅
+          page: {
+            small: false,
+            pageNum: 1,
+            pageSize: 10,
+            total: 0
+          }
+        }
+      },
+    }
+  },
+  created() {
+    // 鑾峰彇鏈烘瀯鏍�
+    this.initTreeData()
+  },
+  methods: {
+    //瀵煎叆
+    importOrg() {
+        this.importSetting.dialogShow = true
+        this.importSetting.onSuccess = (response, callBack) => {
+            if (response.code===1){
+              this.$message.success(response.msg)
+              this.search(1)
+            }else{
+              this.$message.warning(response.msg)
+            }
+            callBack()
+        }
+    },
+    // 宸︿晶鏍戝垵濮嬪寲
+    initTreeData() {
+      finsystenant.getTree().then(res => {
+        const content = res || []
+        this.treeDataList.splice(0, this.treeDataList.length)
+        this.treeDataList = content
+        if (content.length > 0) {
+          this.importSetting.fileSettings.data = {pid: content[0].id}
+        }
+      })
+    },
+    updState(row) {
+      let vm = this
+      let text = row.status == 0 ? "鍚敤" : "绂佺敤";
+      vm.$modal.confirm('纭瑕�' + text + '"' + row.name + '"鍚楋紵').then(function () {
+        let params = Object.assign({}, row)
+        params.status = row.status == 1 ? 0 : 1
+        finsystenant.edit(params).then(res => {
+          if (res) {
+            row.status = row.status === 1 ? 0 : 1
+            vm.$modal.msgSuccess(text + "鎴愬姛");
+            vm.search()
+          }
+        })
+      })
+    },
+    del(row) {
+      this.$modal
+        .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬満鏋勫悧锛�')
+        .then(function () {
+          finsystenant.del({id: row.id}).then((res) => {
+          });
+        })
+        .then((res) => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.search()
+        })
+        .catch(() => {
+        });
+    },
+    showAdd() {
+      // if (!this.editSetting.orgId) {
+      //   this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯')
+      // } else {
+        this.editSetting.id = null;
+        this.editSetting.info = null;
+        this.editSetting.title = '鏂板';
+        this.editSetting.show = true;
+      // }
+    },
+    showAudit(row) {
+      this.editSetting.id = row.id;
+      this.editSetting.info = JSON.stringify(row);
+      this.editSetting.title = '缂栬緫';
+      this.editSetting.show = true;
+    },
+    nodeClick(param) {
+      param = param || {}
+      this.p = Object.assign({}, {
+        id: param.id,
+        name: param.name
+      })
+      if (this.p.id != undefined && this.p.id != null) {
+        this.filterFrom.tenantId = this.p.id
+        this.editSetting.orgId = this.p.id
+      } else {
+        this.filterFrom.tenantId = null
+        this.editSetting.orgId = null
+      }
+      this.importSetting.fileSettings.data = {pid: param.id}
+      this.search(1)
+    },
+    // 鏌ヨtable鍒楄〃
+    search(pageNum) {
+      if (pageNum != undefined) {
+        this.$refs.myTable.search(pageNum)
+      } else {
+        this.$refs.myTable.search()
+      }
+    },
+    fifterForm(params) {
+      this.filterFrom = Object.assign(this.filterFrom, params)
+      this.search(1)
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/admin-web/src/views/stock/transfer/transferissue/index.vue b/admin-web/src/views/stock/transfer/transferissue/index.vue
new file mode 100644
index 0000000..77df32b
--- /dev/null
+++ b/admin-web/src/views/stock/transfer/transferissue/index.vue
@@ -0,0 +1,457 @@
+<template>
+  <div class="app-container">
+    <el-container>
+      <el-container>
+        <el-card class="box-card" style="width: 100%" shadow="never">
+          <!--鎼滅储鏉′欢-->
+          <div class="filter-container">
+            <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
+          </div>
+          <el-row style="margin-top: 15px">
+            <el-col>
+              <!--鍒楄〃-->
+              <my-button name="鏂板" @click="addtable" site="form" />
+              <div :style="{'overflow-y': 'auto', height:`${clientHeight - 320}px`}">
+                    <el-row class="card"
+                            :gutter="5">
+                        <el-col v-for="(item, index) in proData" :key="index" class="cm-item">
+                          <el-card class="card-data">
+                            <div class="card-container">
+                              <div class="hed-one"> <span>璋冩嫧鍗曞彿锛歿{ item.order_no }}</span><span style="margin-left: 20px;"><el-button type="warning" plain size="mini">寰呮帴鏀�</el-button></span></div>
+                              <div class="one-hed">
+                                <div class="box"><span class="span-two">鎺ュ彈鏈烘瀯锛�</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鐢宠浜猴細</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鐢宠璋冩嫧鏃堕棿锛�</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鎺ユ敹鏃堕棿锛�</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">璋冩嫧鏃堕棿锛�</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鎺ュ彈浜猴細</span>{{ item.customer_name }}</div>
+                                <div class="box"><span class="span-two">鎺ュ彈鏃堕棿锛�</span>{{ item.customer_name }}</div>
+                              </div>
+                              <div class="card-end">
+                                <div v-for="(just, index) in item.data" class="two-end">
+                                  <div class="item"><span>{{ just.order_no }}锛�</span>{{ just.customer_name }}</div>
+                                </div>
+                              </div>
+                            </div>
+                            <div class="card-but">
+                              <div  style="margin-top: 10px;">
+                                <my-button style="width: 120px;" name="鍒犻櫎"   site="form" />
+                                <my-button style="width: 120px;" name="鏌ョ湅璇︽儏" site="form" />
+                              </div>
+                            </div>
+                            
+                          </el-card>
+                        </el-col>
+                    </el-row>
+              </div>
+              <el-pagination
+                :small="false"
+                :current-page="1"
+                :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]"
+                :page-size="10"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="0"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+              />
+            </el-col>
+          </el-row>
+          <!--娣诲姞/缂栬緫寮圭獥-->
+          <el-dialog title="鏂板鍑哄簱"  :close-on-click-modal="false" :visible.sync="adddialog" width="60%" >
+            <el-form ref="ruleForm" :model="formData" class="demo-ruleForm" label-width="100px">
+              <el-row :gutter="24" class="headerHeight">
+                  <el-col :span="12">
+                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="12">
+                    <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                      <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <el-row :gutter="24" class="headerHeight">
+                  <el-col :span="24">
+                    <el-form-item label="鍑哄簱鎵嬬画" prop="name">                      
+                      浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <div style="position: relative;">
+                  <div style="background-color: #F9F9F9;width: 90%;">
+                  <el-row :gutter="24" class="">
+                    <el-col :span="12">
+                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+                  <el-row :gutter="24" class="">
+                    <el-col :span="12">
+                      <el-form-item label="浠撳簱鍚嶇О" prop="name">
+                        <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
+                  <el-table :data="formData.tableData" height="100%"  :stripe="true">
+                    <el-table-column prop="projectName" label="瑙勬牸鍨嬪彿" align="center"> </el-table-column>
+                    <el-table-column prop="time1" label="鍗曚綅"  align="center"> </el-table-column>
+                    <el-table-column prop="unit" label="鐜版湁搴撳瓨" align="center"> </el-table-column>
+                    <el-table-column prop="time2" label="鍑哄簱鏁伴噺"  align="center"> </el-table-column>
+                  </el-table>
+                  </div>
+                  <div style="position: absolute;right: 0;top: 152px;">
+                    <my-button style="display: block;margin-left: 10px;margin-bottom: 5px;" name="绉婚櫎" site="form"/>
+                    <my-button name="鏂板鐗╁搧" site="form"/>
+                  </div>
+                </div>
+            </el-form>
+            <div slot="footer" align="center" class="dialog-footer">
+              <my-button name="纭畾" site="form" />
+              <my-button name="鍙栨秷" site="form" @click="adddialog = false"/>
+            </div>
+          </el-dialog>
+        </el-card>
+      </el-container>
+    </el-container>
+    <my-import
+      :import-setting="importSetting"
+      :dialog-show="importSetting.dialogShow"
+      :dialog-title="importSetting.dialogTitle"
+    />
+  </div>
+</template>
+
+<script>
+import MyButton from "@/components/myButton/myButton";
+import SettingIplatform from '@/utils/settingIplatform';
+import myImport from '@/views/components/myImport'
+import {getBaseUrl} from '@/utils/base';
+
+export default {
+  name: "index",
+  components: {MyButton, myImport},
+  data() {
+    return {
+      
+      adddialog: false,
+      formData:{
+        tableData:[
+          {
+            projectName:'555'
+          },
+          {
+            projectName:'444'
+          }
+        ],
+      },
+      // 鎼滅储妗�
+      items: [
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍑哄簱鍗曞彿',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鐗╁搧鍚嶇О',
+          placeholder: '鍙ā绯婃悳绱�',
+          defaultValue: ''
+        },
+        {
+          type: 'text',
+          dataIndex: 'name',
+          label: '鍒涘缓浜�',
+          placeholder: '璇疯緭鍏�',
+          defaultValue: ''
+        },
+        {
+          type: 'date-picker',
+          dataIndex: 'val1',
+          label: '鍑哄簱鏃堕棿',
+          defaultValue: ''
+        },
+        {
+          type: 'date-picker',
+          dataIndex: 'val2',
+          label: '鑷�',
+          defaultValue: ''
+        },
+        // {
+        //   type: 'select',
+        //   dataIndex: 'status',
+        //   label: '鐘舵��',
+        //   placeholder: '璇烽�夋嫨',
+        //   defaultValue: '1',
+        //   options: [
+        //     {
+        //       label: '鍚敤',
+        //       value: '1'
+        //     },
+        //     {
+        //       label: '绂佺敤',
+        //       value: '0'
+        //     }
+        //   ]
+        // }
+      ],
+      proData: [
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'20浠�'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+          ]
+        },
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃'
+            },
+          ]
+        },
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'20浠�'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+          ]
+        },
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'20浠�'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+          ]
+          
+        },
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'20浠�'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+          ]
+          
+        },
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'20浠�'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+          ]
+          
+        },
+        {
+          order_no:'55555',
+          customer_name:'閮戝窞甯傞偖鏀垮垎鍏徃',
+          data:[
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'20浠�'
+            },
+            {
+              order_no:'鐭冲嫆鑺鑹茬⒊绮�',
+              customer_name:'666'
+            },
+          ]
+          
+        }
+      ],
+      // 鏍戞暟鎹�
+      treeDataList: [],
+      // 鎼滅储鏉′欢
+      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
+      },
+      editSetting: {
+        title: '',
+        id: '',
+        orgId: '',
+        show: false,
+      },
+    }
+  },
+  computed: {
+    clientHeight () {
+      return document.documentElement.clientHeight
+    },
+  },
+  created() {
+  },
+  methods: {
+    handleSizeChange(){},
+    handleCurrentChange(){},
+    //瀵煎叆
+    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()
+        }
+    },
+   
+    addtable() {
+      this.adddialog = true
+    },
+    // 鏌ヨtable鍒楄〃
+    search(pageNum) {
+      if (pageNum != undefined) {
+        // this.$refs.myTable.search(pageNum)
+      } else {
+        // this.$refs.myTable.search()
+      }
+    },
+    fifterForm(params) {
+      console.log(params,'555');
+      this.filterFrom = Object.assign(this.filterFrom, params)
+      this.search(1)
+    }
+  }
+}
+</script>
+
+<style scoped>
+.card {
+    display: flex;
+    flex-wrap: wrap;
+    margin: 0px !important;
+    .cm-item {
+        width: 100%;
+    }
+    .cm-item /deep/ .el-card__body {
+        padding: 10px;
+    }
+}
+.card-data{
+  position: relative;
+  margin-top: 8px;
+  .card-container{
+    display: inline-block; 
+    width: 70%;
+    .hed-one{
+      color: #2298EE;
+      font-size: 18px;
+    }
+    .one-hed{
+      margin-top: 5px;
+      .box{
+        display: inline-block;  
+        margin-right: 20px;  
+        margin-top: 10px;
+      }
+    }
+    .span-two{
+      color: #83919e;
+      font-size: 14px;
+    }
+    .card-end{
+      font-size: 14px;
+      color: #3d3d3d;
+      margin-top: 15px;
+      display: flex;  
+      flex-wrap: wrap; 
+      .two-end{
+        width: calc(33.33% - 20px); 
+        margin-bottom: 15px; 
+      }
+    }
+    
+  }
+  .card-but{
+    position: absolute;
+    right: 20px;
+    top: 40%;
+  }
+  
+}
+
+</style>
diff --git a/admin-web/src/views/systemManger/org/index.vue b/admin-web/src/views/systemManger/org/index.vue
index b7964cd..11d81b3 100644
--- a/admin-web/src/views/systemManger/org/index.vue
+++ b/admin-web/src/views/systemManger/org/index.vue
@@ -115,6 +115,7 @@
           {title: '缂栧彿', field: 'code', align: 'center', width: '150px'},
           {title: '鏈烘瀯鍚嶇О', field: 'name', align: 'left'},
           {title: '灞傜骇', field: 'lv', align: 'center', width: '80px'},
+          {title: '椤哄簭鍙�', field: 'lv', align: 'center', width: '80px'},
           {title: '澶囨敞', field: 'summary', align: 'left', width: '150px'},
           {
             field: 'belongProvince',
@@ -155,12 +156,12 @@
                 this.showAudit(row);
               },
             },
-            {
-              title: '鍒犻櫎',
-              events: (row) => {
-                this.del(row);
-              },
-            }
+            // {
+            //   title: '鍒犻櫎',
+            //   events: (row) => {
+            //     this.del(row);
+            //   },
+            // }
           ],
         },
         paging: {
diff --git a/admin-web/src/views/systemManger/server/user/index.vue b/admin-web/src/views/systemManger/server/user/index.vue
index e777bbb..44b94d6 100644
--- a/admin-web/src/views/systemManger/server/user/index.vue
+++ b/admin-web/src/views/systemManger/server/user/index.vue
@@ -107,18 +107,11 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          { title: '浜哄憳濮撳悕', field: 'userName', align: 'left' },
-          { title: '鍛樺伐缂栧彿', field: 'userCode', align: 'left' },
-          { title: '鎵嬫満鍙�', field: 'userPhone', align: 'center', width: 150 },
-          {
-            title: '鍒涘缓鏃堕棿',
-            field: 'createTime',
-            align: 'center',
-            width: 200,
-            formatter: (row) => {
-              return { value: DateFormatter.LongToDateTime(row.createTime) };
-            },
-          },
+          { title: '缂栧彿', field: 'userCode', align: 'left' },
+          { title: '鐢ㄦ埛濮撳悕', field: 'userName', align: 'left' },
+          { title: '鐧诲綍鍚�', field: 'userPhone', align: 'center' },
+          { title: '鎵�灞炴満鏋�', field: 'userPhone', align: 'center', width: 150 },
+          { title: '閮ㄩ棬', field: 'userPhone', align: 'center' },
           {
             field: 'status',
             title: '鐘舵��',
@@ -154,18 +147,18 @@
           width: '250', // 鍒楀
           attr: [
             {
-              title: '瑙掕壊',
-              events: (row) => {
-                this.showEditRole(row.id);
-              },
-            },
-            {
               title: '缂栬緫',
               events: (row) => {
                 this.showAdd(row.id);
               },
             },
             {
+              title: '瑙掕壊',
+              events: (row) => {
+                this.showEditRole(row.id);
+              },
+            },
+            {
               title: '瀵嗙爜鍒濆鍖�',
               events: (row) => {
                 this.updPassWord(row);
diff --git a/admin-web/src/views/systemManger/server/user/items.js b/admin-web/src/views/systemManger/server/user/items.js
index a59a1c7..b76f203 100644
--- a/admin-web/src/views/systemManger/server/user/items.js
+++ b/admin-web/src/views/systemManger/server/user/items.js
@@ -2,14 +2,14 @@
   {
     type: 'text',
     dataIndex: 'userName',
-    label: '浜哄憳濮撳悕',
+    label: '鐢ㄦ埛濮撳悕',
     placeholder: "璇疯緭鍏�",
     defaultValue: ''
   },
   {
     type: 'text',
     dataIndex: 'userPhone',
-    label: '鎵嬫満鍙�',
+    label: '缂栧彿',
     placeholder: "璇疯緭鍏�",
     defaultValue: ''
   },
diff --git a/admin-web/src/views/systemSetting/department/data.vue b/admin-web/src/views/systemSetting/department/data.vue
new file mode 100644
index 0000000..b0836af
--- /dev/null
+++ b/admin-web/src/views/systemSetting/department/data.vue
@@ -0,0 +1,427 @@
+<template>
+  <div class="divBox">
+    <el-card class="box-card">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="瀛楀吀鍚嶇О" prop="dictType">
+        <el-select v-model="queryParams.dictType">
+          <el-option
+            v-for="item in typeOptions"
+            :key="item.dict_id"
+            :label="item.dict_name"
+            :value="item.dict_type"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="瀛楀吀鏍囩" prop="dictLabel">
+        <el-input
+          v-model="queryParams.dictLabel"
+          placeholder="璇疯緭鍏ュ瓧鍏告爣绛�"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="queryParams.status" placeholder="鏁版嵁鐘舵��" clearable>
+          <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-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:dict:add']"
+        >鏂板</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:dict:remove']"
+        >鍒犻櫎</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:dict:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-close"
+          size="mini"
+          @click="handleClose"
+        >鍏抽棴</el-button>
+      </el-col>
+<!--      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
+    </el-row>
+
+    <el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="瀛楀吀ID" align="center" prop="dict_code" />
+      <el-table-column label="瀛楀吀鍚嶇О" align="center" prop="dict_label">
+        <template slot-scope="scope">
+          <span v-if="scope.row.list_class == '' || scope.row.list_class == 'default'">{{scope.row.dict_label}}</span>
+          <el-tag v-else :type="scope.row.list_class == 'primary' ? '' : scope.row.list_class">{{scope.row.dict_label}}</el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column label="瀛楀吀鍊�" align="center" prop="dict_value" />
+      <el-table-column label="鎺掑簭" align="center" prop="dict_sort" />
+      <el-table-column label="鐘舵��" align="center" prop="status">
+        <template slot-scope="scope">
+<!--          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>-->
+          <span>{{ scope.row.status == 0? '姝e父':'绂佺敤' }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="鐖秈d" align="center" prop="parent_id" />
+      <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>{{ parseTime(scope.row.create_time) }}</span>-->
+<!--        </template>-->
+      </el-table-column>
+      <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+        <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>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:dict:remove']"
+          >鍒犻櫎</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+<!--    <pagination-->
+<!--      v-show="total>0"-->
+<!--      :total="total"-->
+<!--      :page.sync="queryParams.pageNum"-->
+<!--      :limit.sync="queryParams.pageSize"-->
+<!--      @pagination="getList"-->
+<!--    />-->
+    <el-pagination
+      :current-page="queryParams.pageNum"
+      :page-sizes="constants.page.limit"
+      :layout="constants.page.layout"
+      :total="this.total"
+      @size-change="getList"
+      @current-change="getList"
+    />
+    </el-card>
+
+    <!-- 娣诲姞鎴栦慨鏀瑰弬鏁伴厤缃璇濇 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" :before-close="cancel" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="瀛楀吀ID">
+          <el-input v-model="form.dict_code" :disabled="false" placeholder="涓�涓敮涓�鏁板瓧"/>
+        </el-form-item>
+        <el-form-item label="瀛楀吀绫诲瀷">
+          <el-input v-model="form.dict_type" :disabled="true" />
+        </el-form-item>
+        <el-form-item label="瀛楀吀鍚嶇О" prop="dict_label">
+          <el-input v-model="form.dict_label" placeholder="璇疯緭鍏ユ暟鎹爣绛�" />
+        </el-form-item>
+        <el-form-item label="瀛楀吀鍊�" prop="dict_value">
+          <el-input v-model="form.dict_value" placeholder="涓嶅~鍜屽瓧鍏窱D涓�鑷�" />
+        </el-form-item>
+        <el-form-item label="鏍峰紡灞炴��" prop="css_class">
+          <el-input v-model="form.css_class" placeholder="璇疯緭鍏ユ牱寮忓睘鎬�" />
+        </el-form-item>
+        <el-form-item label="鏄剧ず鎺掑簭" prop="dict_sort">
+          <el-input-number v-model="form.dict_sort" controls-position="right" :min="0" />
+        </el-form-item>
+        <el-form-item label="鍥炴樉鏍峰紡" prop="list_class">
+          <el-select v-model="form.list_class">
+            <el-option
+              v-for="item in listClassOptions"
+              :key="item.value"
+              :label="item.label + '(' + item.value + ')'"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鐘舵��" prop="status">
+          <el-radio-group v-model="form.status">
+            <el-radio
+              v-for="dict in constants.normalOrDisabled"
+              :key="dict.value"
+              :label="dict.value * 1"
+            >{{dict.label}}</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="鐖跺瓧鍏窱D" prop="dict_label">
+          <el-input v-model="form.parent_id" placeholder="鐖跺瓧鍏竔d锛屽繀濉�" />
+        </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>
+  </div>
+</template>
+
+<script>
+import { listData, getData, delData, addData, updateData } from "@/api/system/dict/data";
+import { optionselect as getDictOptionselect, getType } from "@/api/system/dict/type";
+
+export default {
+  name: "Data",
+  // dicts: ['sys_normal_disable'],
+  data() {
+    return {
+      constants: this.$constants,
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 瀛楀吀琛ㄦ牸鏁版嵁
+      dataList: [],
+      // 榛樿瀛楀吀绫诲瀷
+      defaultDictType: "",
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏁版嵁鏍囩鍥炴樉鏍峰紡
+      listClassOptions: [
+        {
+          value: "default",
+          label: "榛樿"
+        },
+        {
+          value: "primary",
+          label: "涓昏"
+        },
+        {
+          value: "success",
+          label: "鎴愬姛"
+        },
+        {
+          value: "info",
+          label: "淇℃伅"
+        },
+        {
+          value: "warning",
+          label: "璀﹀憡"
+        },
+        {
+          value: "danger",
+          label: "鍗遍櫓"
+        }
+      ],
+      // 绫诲瀷鏁版嵁瀛楀吀
+      typeOptions: [],
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        dictName: undefined,
+        dictType: undefined,
+        status: undefined
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {
+        status: '1'
+      },
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        dict_code: [
+          { required: true, message: "瀛楀吀id蹇呴』杈撳叆", trigger: "blur" }
+        ],
+        dict_label: [
+          { required: true, message: "鏁版嵁鏍囩涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        parent_id: [
+          { required: true, message: "鐖秈d涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        // dict_value: [
+        //   { required: true, message: "鏁版嵁閿�间笉鑳戒负绌�", trigger: "blur" }
+        // ],
+        dict_sort: [
+          { required: true, message: "鏁版嵁椤哄簭涓嶈兘涓虹┖", trigger: "blur" }
+        ]
+      },
+      editMode: false
+    };
+  },
+  created() {
+    const dictId = this.$route.params && this.$route.params.dictId;
+    this.getType(dictId);
+    this.getTypeList();
+  },
+  methods: {
+    /** 鏌ヨ瀛楀吀绫诲瀷璇︾粏 */
+    getType(dictId) {
+      getType(dictId).then(response => {
+        // this.queryParams.dictType = response.data.dict_type;
+        // this.defaultDictType = response.data.dict_type;
+        this.queryParams.dictType = response.dict_type;
+        this.defaultDictType = response.dict_type;
+        this.getList();
+      });
+    },
+    /** 鏌ヨ瀛楀吀绫诲瀷鍒楄〃 */
+    getTypeList() {
+      getDictOptionselect().then(response => {
+        this.typeOptions = response.data;
+      });
+    },
+    /** 鏌ヨ瀛楀吀鏁版嵁鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listData(this.queryParams).then(response => {
+        this.dataList = response.datas;
+        this.total = response.totalRows;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        dict_code: undefined,
+        dict_label: undefined,
+        dict_value: undefined,
+        css_class: undefined,
+        list_class: 'default',
+        dict_sort: 0,
+        status: "0",
+        parent_id: undefined,
+        remark: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 杩斿洖鎸夐挳鎿嶄綔 */
+    handleClose() {
+      const obj = { path: "/system/dict" };
+      this.$tab.closeOpenPage(obj);
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.queryParams.dictType = this.defaultDictType;
+      this.handleQuery();
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.editMode = false;
+      this.open = true;
+      this.title = "娣诲姞瀛楀吀鏁版嵁";
+      // this.form.dictType = this.queryParams.dictType;
+      this.form.dict_type = this.queryParams.dictType;
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.dictCode)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.reset();
+      this.editMode = true;
+      const dictCode = row.dict_code || this.ids
+      getData(dictCode).then(response => {
+        this.form = response;
+        this.open = true;
+        this.title = "淇敼瀛楀吀鏁版嵁";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          // if (this.form.dict_code != undefined) {
+          if (this.editMode == true) {
+            updateData(this.form).then(response => {
+              this.$store.dispatch('dict/removeDict', this.queryParams.dictType);
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            console.log(this.form);
+            addData(this.form).then(response => {
+              this.$store.dispatch('dict/removeDict', this.queryParams.dictType);
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const dictCodes = row.dict_code || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎瀛楀吀缂栫爜涓�"' + dictCodes + '"鐨勬暟鎹」锛�').then(function() {
+        return delData(dictCodes);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        this.$store.dispatch('dict/removeDict', this.queryParams.dictType);
+      }).catch(() => {});
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('system/dict/data/export', {
+        ...this.queryParams
+      }, `data_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/admin-web/src/views/systemSetting/department/index.vue b/admin-web/src/views/systemSetting/department/index.vue
new file mode 100644
index 0000000..f4e556c
--- /dev/null
+++ b/admin-web/src/views/systemSetting/department/index.vue
@@ -0,0 +1,405 @@
+<template>
+  <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-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>
+        </div>
+        <el-row style="margin-top: 8px">
+          <el-col>
+            <!--鍒楄〃-->
+            <my-table-v2 ref="myTable" :filter="queryParams" :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>
+  </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 SettingIplatform from '@/utils/settingIplatform';
+import items from './items'
+import * as finsystenant from '@/api/baseSetting/finsystenant';
+export default {
+  name: "Dict",
+  components: { MyTableV2, myTree },
+  data() {
+    return {
+      // 鏍戞暟鎹�
+      treeDataList: [],
+      constants: this.$constants,
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 瀛楀吀琛ㄦ牸鏁版嵁
+      typeList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏃ユ湡鑼冨洿
+      dateRange: [],
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        dictName: undefined,
+        dictType: undefined,
+        status: 0
+      },
+      items:items,
+      table: {
+        showIndex: true, // 鏄惁鏄剧ず搴忓彿
+        expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
+        url: SettingIplatform.apiBaseURL + '/system/dict/type/list', // 璇锋眰鍦板潃
+        // 宸ュ叿鏉�
+        tools: {
+          columnsCtrl: {// 鍒楁帶鍒舵寜閽�
+            show: false
+          },
+          generalExport: {// 閫氱敤瀵煎嚭鎸夐挳
+            show: false
+          },
+          // 鑷畾涔夊伐鍏锋潯鎸夐挳
+          custom: [
+          {
+              name: '鏂板',
+              click: () => {
+                this.showAdd(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: 'status', align: 'center', width: '180px',
+            formatter: row => {
+              return { value: row.status=== 0? '鍚敤':'绂佺敤'  }
+            }
+          },
+        ],
+        // 鎿嶄綔淇℃伅
+        operation: {
+          // width: 150,
+          align: 'center',
+          show: false, // 鏄剧ず鎿嶄綔鍒�
+          attr: [
+            // 鍒嗙被涓嬫湁姝e湪杩涜涓殑椤圭洰鏃讹紝缁欏嚭鎻愮ず涓嶅厑璁哥鐢ㄥ拰鍒犻櫎銆備笖绂佺敤涓�绾у垎绫诲墠闇�瑕佸厛绂佺敤涓嬮潰鐨勬墍鏈変簩绾э紝鏈夊惎鐢ㄧ殑浜岀骇鏃朵笉鍏佽绂佺敤涓�绾�
+            {
+              // checkPermission:'system:role:edit',
+              title: '淇敼',
+              events: row => {
+                this.handleUpdate(row)
+              }
+            },
+            // {
+            //   // checkPermission: 'system:role:remove',
+            //   title: '鍒犻櫎',
+            //   events: row => {
+            //     this.handleDelete(row)
+            //   }
+            // },
+          ]
+        },
+        paging: {
+          show: true, // 鏄剧ず鍒嗛〉
+          // 鍒嗛〉淇℃伅
+          page: {
+            small: false,
+            pageNum: 1,
+            pageSize: 10,
+            total: 0
+          }
+        }
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        dictName: [
+          { required: true, message: "瀛楀吀鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        dictType: [
+          { required: true, message: "瀛楀吀绫诲瀷涓嶈兘涓虹┖", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.initTreeData()
+  },
+  methods: {
+    // 宸︿晶鏍戝垵濮嬪寲
+    initTreeData() {
+      finsystenant.getTree().then((res) => {
+        const content = res || [];
+        this.treeDataList.splice(0, this.treeDataList.length);
+        this.treeDataList = content;
+        if (this.treeDataList && this.treeDataList.length > 0) {
+          this.tenantId = this.treeDataList[0].id;
+          this.tenantName = this.treeDataList[0].label;
+          this.tenantCode = this.treeDataList[0].code;
+        }
+      });
+    },
+    nodeClick(param) {
+      console.log(param,'param');
+      this.search(1)
+    },
+    fifterForm(params) {
+      this.queryParams = Object.assign(this.queryParams, params)
+      this.search(1)
+    },
+    // 鏌ヨtable鍒楄〃
+    search(pageNum) {
+      if (pageNum != undefined) {
+        this.$refs.myTable.search(pageNum)
+      } else {
+        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 = "娣诲姞瀛楀吀绫诲瀷";
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.dictId)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    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
new file mode 100644
index 0000000..cae6307
--- /dev/null
+++ b/admin-web/src/views/systemSetting/department/items.js
@@ -0,0 +1,33 @@
+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: '绂佺敤'
+      }
+    ]
+  }
+]
diff --git a/admin-web/src/views/systemSetting/dict/index.vue b/admin-web/src/views/systemSetting/dict/index.vue
index 73bece6..0a98279 100644
--- a/admin-web/src/views/systemSetting/dict/index.vue
+++ b/admin-web/src/views/systemSetting/dict/index.vue
@@ -1,5 +1,13 @@
 <template>
   <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-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">-->
@@ -119,16 +127,20 @@
 </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 SettingIplatform from '@/utils/settingIplatform';
 import items from './items'
+import * as finsystenant from '@/api/baseSetting/finsystenant';
 export default {
   name: "Dict",
-  components: { MyTableV2 },
+  components: { MyTableV2, myTree },
   data() {
     return {
+      // 鏍戞暟鎹�
+      treeDataList: [],
       constants: this.$constants,
       // 閬僵灞�
       loading: true,
@@ -246,8 +258,26 @@
     };
   },
   created() {
+    this.initTreeData()
   },
   methods: {
+    // 宸︿晶鏍戝垵濮嬪寲
+    initTreeData() {
+      finsystenant.getTree().then((res) => {
+        const content = res || [];
+        this.treeDataList.splice(0, this.treeDataList.length);
+        this.treeDataList = content;
+        if (this.treeDataList && this.treeDataList.length > 0) {
+          this.tenantId = this.treeDataList[0].id;
+          this.tenantName = this.treeDataList[0].label;
+          this.tenantCode = this.treeDataList[0].code;
+        }
+      });
+    },
+    nodeClick(param) {
+      console.log(param,'param');
+      this.search(1)
+    },
     fifterForm(params) {
       this.queryParams = Object.assign(this.queryParams, params)
       this.search(1)
diff --git a/admin-web/src/views/systemSetting/role/index.vue b/admin-web/src/views/systemSetting/role/index.vue
index e2e25f5..7795ade 100644
--- a/admin-web/src/views/systemSetting/role/index.vue
+++ b/admin-web/src/views/systemSetting/role/index.vue
@@ -277,7 +277,7 @@
           custom: [
             {
               name: '鏂板',
-              checkPermission:'system:role:edit',
+              // checkPermission:'system:role:edit',
               click: () => {
                 this.handleAdd(null)
               }
@@ -289,7 +289,7 @@
           {title: '瑙掕壊缂栧彿', field: 'role_id', align: 'center', width: '200px'},
           {title: '瑙掕壊鍚嶇О', field: 'role_name', align: 'center', width: '260px'},
           {title: '鏉冮檺瀛楃', field: 'role_key', align: 'center', width: '260px'},
-          {title: '鏄剧ず椤哄簭', field: 'role_sort', align: 'center', width: '100px'},
+          {title: '椤哄簭鍙�', field: 'role_sort', align: 'center', width: '100px'},
           {
             title: '鐘舵��', field: 'status', align: 'center', width: '100px',
             switch: row => {
@@ -314,7 +314,7 @@
               return result
             }
           },
-          {title: '澶囨敞', field: 'remark', align: 'left', width: '250px'},
+          // {title: '澶囨敞', field: 'remark', align: 'left', width: '250px'},
         ],
         // 鎿嶄綔淇℃伅
         operation: {

--
Gitblit v1.9.1