From 5259bd0cab1aa4c3551ba5c0d3d15d156c087a80 Mon Sep 17 00:00:00 2001
From: renkang <8417338+k94314517@user.noreply.gitee.com>
Date: 星期五, 10 一月 2025 14:09:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0.1' into 2.0.1

---
 admin/src/views/stock/check.vue                         |    9 
 admin/src/views/finance/collectionSettings.vue          |   53 +
 admin/src/views/stock/in.vue                            |   42 +
 admin/src/views/statistics/platformRecord.vue           |    4 
 admin/src/views/finance/payments.vue                    |   13 
 admin/src/views/stock/components/InEdit.vue             |  138 +++++
 admin/src/views/stock/assetCate.vue                     |    4 
 admin/src/views/statistics/platformStatic.vue           |    1 
 admin/src/views/system/smsMessage.vue                   |    7 
 admin/src/views/finance/account.vue                     |   12 
 admin/src/views/finance/components/templateKeywords.vue |   72 ++
 admin/src/views/stock/InventoryQuery.vue                |   92 +++
 admin/src/views/stock/assetManagement.vue               |   54 ++
 admin/src/views/stock/components/AssetSel.vue           |  125 ++++
 admin/src/views/operation/device.vue                    |    4 
 admin/src/views/stock/components/newInventory.vue       |   67 ++
 admin/src/views/stock/inventoryCount.vue                |  101 +++
 admin/src/views/stock/components/inventoryDetails.vue   |  183 ++++++
 admin/src/views/stock/components/InDetail.vue           |  164 ++++++
 admin/src/views/finance/company.vue                     |    4 
 admin/src/views/stock/components/OutEdit.vue            |  138 +++++
 admin/src/views/stock/components/newAsset.vue           |   56 ++
 admin/src/views/system/publicMsg.vue                    |    1 
 admin/src/views/stock/out.vue                           |   42 +
 admin/src/views/stock/assetList.vue                     |    1 
 admin/src/views/stock/record.vue                        |    1 
 admin/src/views/stock/asset.vue                         |    9 
 admin/src/views/stock/query.vue                         |    1 
 admin/src/views/stock/components/OutDetail.vue          |  164 ++++++
 29 files changed, 1,510 insertions(+), 52 deletions(-)

diff --git a/admin/src/views/finance/account.vue b/admin/src/views/finance/account.vue
index 1d60573..d8b6ae1 100644
--- a/admin/src/views/finance/account.vue
+++ b/admin/src/views/finance/account.vue
@@ -9,7 +9,7 @@
       <el-table-column prop="title" label="鏀舵敮鏉$洰" min-width="100" show-overflow-tooltip />
       <el-table-column prop="companyName" label="鏀舵鍏徃" min-width="100" show-overflow-tooltip />
       <el-table-column label="璐︽埛绫诲瀷" min-width="100" show-overflow-tooltip>
-        <template v-slot="{row}">
+        <template v-slot="{ row }">
           <span v-if="row.type == 0">瀵瑰叕</span>
           <span v-if="row.type == 1">涓汉</span>
         </template>
@@ -19,7 +19,8 @@
       <el-table-column prop="bankNo" label="閾惰璐﹀彿" min-width="100" show-overflow-tooltip />
       <el-table-column prop="status" label="鐘舵��" min-width="100" show-overflow-tooltip>
         <template v-slot="scope">
-          <el-switch v-model="scope.row.status" @change="e =>changeStatus(scope.row)" :active-value="0" :inactive-value="1">
+          <el-switch v-model="scope.row.status" @change="e => changeStatus(scope.row)" :active-value="0"
+            :inactive-value="1">
           </el-switch>
         </template>
       </el-table-column>
@@ -117,13 +118,13 @@
         this.getList()
       })
     },
-    getCompany(){
+    getCompany() {
       companyGetList({
-        model: {type: 2},
+        model: { type: 2 },
         capacity: 9999,
         page: 1
       }).then(res => {
-       this.queryFormConfig.formItems[1].options = res.records || []
+        this.queryFormConfig.formItems[1].options = res.records || []
       })
     },
     handleEdit(row) {
@@ -156,6 +157,7 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
diff --git a/admin/src/views/finance/collectionSettings.vue b/admin/src/views/finance/collectionSettings.vue
index 891f73a..6e428e0 100644
--- a/admin/src/views/finance/collectionSettings.vue
+++ b/admin/src/views/finance/collectionSettings.vue
@@ -1,10 +1,59 @@
 <template>
-    
+    <div class="box">
+        <div class="content">
+            <div class="content_form">
+                <el-form ref="form" :model="form" label-width="120px">
+                    <el-form-item label="鐭俊妯℃澘">
+                        <div style="display: flex; align-items: self-start;">
+                            <el-input type="textarea" rows="5" v-model="form.desc"></el-input>
+                            <el-button type="primary" style="margin-left: 10px;">淇濆瓨</el-button>
+                        </div>
+                    </el-form-item>
+                    <el-form-item label="閭妯℃澘">
+                        <div style="display: flex; align-items: self-start;">
+                            <el-input type="textarea" rows="5" v-model="form.desc"></el-input>
+                            <el-button type="primary" style="margin-left: 10px;">淇濆瓨</el-button>
+                        </div>
+                    </el-form-item>
+                </el-form>
+            </div>
+            <el-button @click="$refs.templateKeywords.open('妯℃澘鍏抽敭瀛�')">妯℃澘鍏抽敭瀛�</el-button>
+        </div>
+        <templateKeywords ref="templateKeywords" />
+    </div>
 </template>
 
 <script>
+    import templateKeywords from './components/templateKeywords'
   export default {
-    name: 'collectionSettings'
+    name: 'collectionSettings',
+    data() {
+      return {
+        form: {
+          desc: ''
+        }
+      }
+    },
+    components: { templateKeywords }
   }
 </script>
 
+<style lang="scss" scoped>
+    .box {
+        width: 100%;
+        padding: 20px;
+        box-sizing: border-box;
+        .content {
+            width: 100%;
+            padding: 20px;
+            box-sizing: border-box;
+            background: #ffffff;
+            display: flex;
+            align-items: self-start;
+            justify-content: space-between;
+            .content_form {
+                width: 60%;
+            }
+        }
+    }
+</style>
diff --git a/admin/src/views/finance/company.vue b/admin/src/views/finance/company.vue
index 5f2b7ee..d8f5aed 100644
--- a/admin/src/views/finance/company.vue
+++ b/admin/src/views/finance/company.vue
@@ -13,7 +13,8 @@
       <el-table-column prop="accountNum" label="鏀舵敮璐︽埛鏁伴噺" min-width="100" show-overflow-tooltip />
       <el-table-column prop="status" label="鐘舵��" min-width="100" show-overflow-tooltip>
         <template v-slot="scope">
-          <el-switch v-model="scope.row.status" @change="e => changeStatus(scope.row)" :active-value="0" :inactive-value="1">
+          <el-switch v-model="scope.row.status" @change="e => changeStatus(scope.row)" :active-value="0"
+            :inactive-value="1">
           </el-switch>
         </template>
       </el-table-column>
@@ -132,6 +133,7 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
diff --git a/admin/src/views/finance/components/templateKeywords.vue b/admin/src/views/finance/components/templateKeywords.vue
new file mode 100644
index 0000000..1d748b1
--- /dev/null
+++ b/admin/src/views/finance/components/templateKeywords.vue
@@ -0,0 +1,72 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        :visible.sync="visible"
+        width="100%">
+        <div class="main">
+            <div class="title">璐﹀崟淇℃伅</div>
+            <div class="list">
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${璐圭敤鍚嶇О}</el-tag>
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${璁¤垂鍛ㄦ湡}</el-tag>
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${鍗曚环}</el-tag>
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${鍗曚綅}</el-tag>
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${搴旀敹鏃ユ湡}</el-tag>
+            </div>
+            <div class="title">鍚堝悓淇℃伅</div>
+            <div class="list">
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${璐圭敤鍚嶇О}</el-tag>
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${璁¤垂鍛ㄦ湡}</el-tag>
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${鍗曚环}</el-tag>
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${鍗曚綅}</el-tag>
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${搴旀敹鏃ユ湡}</el-tag>
+            </div>
+            <div class="title">鍏朵粬淇℃伅</div>
+            <div class="list">
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${璐圭敤鍚嶇О}</el-tag>
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${璁¤垂鍛ㄦ湡}</el-tag>
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${鍗曚环}</el-tag>
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${鍗曚綅}</el-tag>
+                <el-tag type="info" size="medium" effect="plain" style="margin-right: 10px;">${搴旀敹鏃ユ湡}</el-tag>
+            </div>
+        </div>
+    </GlobalWindow>
+</template>
+
+<script>
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import BaseOpera from '@/components/base/BaseOpera'
+  export default {
+    name: "templateKeywords",
+    components: { GlobalWindow },
+    extends: BaseOpera,
+    data() {
+      return {
+      
+      }
+    },
+    methods: {
+
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+    @import '@/assets/style/variables.scss';
+    .main {
+        padding-top: 20px;
+        box-sizing: border-box;
+        .title {
+            font-weight: 500;
+            font-size: 18px;
+            color: $primary-color;
+            margin-bottom: 15px;
+        }
+        
+        .list {
+            display: flex;
+            flex-wrap: wrap;
+            border-radius: 2px;
+            margin-bottom: 30px;
+        }
+    }
+</style>
diff --git a/admin/src/views/finance/payments.vue b/admin/src/views/finance/payments.vue
index 212bc99..2be18ee 100644
--- a/admin/src/views/finance/payments.vue
+++ b/admin/src/views/finance/payments.vue
@@ -2,7 +2,7 @@
   <div class="main_app">
     <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
     <div class="mt20">
-<!--      <el-button v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>-->
+      <!--      <el-button v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>-->
     </div>
     <el-table v-loading="loading" :data="list" stripe>
       <el-table-column prop="customerName" label="瀹㈡埛鍚嶇О" min-width="100" show-overflow-tooltip />
@@ -10,7 +10,7 @@
       <el-table-column label="鎴垮彿" min-width="100" show-overflow-tooltip>
         <template slot-scope="{row}">
           <div style="display: flex; flex-direction: column;" v-if="row.roomPathName">
-            <span v-for="(item, index) in row.roomPathName.split(';')" :key="index">{{item}}</span>
+            <span v-for="(item, index) in row.roomPathName.split(';')" :key="index">{{ item }}</span>
           </div>
         </template>
       </el-table-column>
@@ -123,7 +123,7 @@
     this.getList()
   },
   methods: {
-    isShow (status, contractStatus) {
+    isShow(status, contractStatus) {
       if (status === 1) return false
       if (contractStatus === '3' || contractStatus === '4') return false
       return true
@@ -150,7 +150,7 @@
         this.loading = false
       })
     },
-    closeDW (id) {
+    closeDW(id) {
       this.$confirm('纭鍏抽棴姝ゆ祦姘村悧?', '鎻愮ず', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
@@ -161,8 +161,8 @@
             this.getList()
           })
       }).catch(() => {
-      
-      });
+
+      })
     },
     handleDel(row) {
       let message = `纭鍒犻櫎璇ヨ褰曞悧?`
@@ -185,6 +185,7 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
diff --git a/admin/src/views/operation/device.vue b/admin/src/views/operation/device.vue
index 9025984..770219c 100644
--- a/admin/src/views/operation/device.vue
+++ b/admin/src/views/operation/device.vue
@@ -21,7 +21,8 @@
       </el-table-column>
       <el-table-column label="鎿嶄綔" min-width="130" fixed="right">
         <template slot-scope="{row}">
-          <el-button type="text" @click="handleDetail(row)" v-permissions="['business:category:update']">鏌ョ湅璇︽儏</el-button>
+          <el-button type="text" @click="handleDetail(row)"
+            v-permissions="['business:category:update']">鏌ョ湅璇︽儏</el-button>
           <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
             v-permissions="['business:category:update']">缂栬緫</el-button>
           <el-button type="text" @click="handleDel(row)" icon="el-icon-delete"
@@ -146,6 +147,7 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
diff --git a/admin/src/views/statistics/platformRecord.vue b/admin/src/views/statistics/platformRecord.vue
index 49f98e1..5659e49 100644
--- a/admin/src/views/statistics/platformRecord.vue
+++ b/admin/src/views/statistics/platformRecord.vue
@@ -9,8 +9,7 @@
       <el-table-column prop="param1" label="浣滀笟寮�濮�" min-width="100" show-overflow-tooltip />
       <el-table-column prop="param2" label="浣滀笟缁撴潫" min-width="100" show-overflow-tooltip />
       <el-table-column prop="workTime" label="浣滀笟鏃堕暱" min-width="100" show-overflow-tooltip />
-      <el-table-column prop="name"
-        label="杩愯緭鍗曞彿/鍚堝悓鍙�" min-width="100" show-overflow-tooltip>
+      <el-table-column prop="name" label="杩愯緭鍗曞彿/鍚堝悓鍙�" min-width="100" show-overflow-tooltip>
         <template v-slot="scope">
           <span>{{ scope.row.billCode || scope.row.contractNum }}</span>
         </template>
@@ -131,6 +130,7 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
diff --git a/admin/src/views/statistics/platformStatic.vue b/admin/src/views/statistics/platformStatic.vue
index 6bec585..520748a 100644
--- a/admin/src/views/statistics/platformStatic.vue
+++ b/admin/src/views/statistics/platformStatic.vue
@@ -130,6 +130,7 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
diff --git a/admin/src/views/stock/InventoryQuery.vue b/admin/src/views/stock/InventoryQuery.vue
new file mode 100644
index 0000000..ad038c6
--- /dev/null
+++ b/admin/src/views/stock/InventoryQuery.vue
@@ -0,0 +1,92 @@
+<template>
+    <TableLayout :permissions="['business:ywroom:query']">
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
+            <el-form-item label="浠撳簱" prop="buildingId">
+                <el-select v-model="searchForm.buildingId" placeholder="璇烽�夋嫨妤煎畤" clearable>
+                    <el-option v-for="item in buildList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="璧勪骇鍚嶇О/缂栫爜" prop="roomNum">
+                <el-input v-model="searchForm.roomNum" placeholder="璇疯緭鍏ユ埧鍙�" @keypress.enter.native="search"></el-input>
+            </el-form-item>
+            <el-form-item label="鍨嬪彿" prop="roomNum">
+                <el-input v-model="searchForm.roomNum" placeholder="璇疯緭鍏ユ埧鍙�" @keypress.enter.native="search"></el-input>
+            </el-form-item>
+            <section>
+                <el-button type="primary" @click="search">鎼滅储</el-button>
+                <el-button @click="reset">閲嶇疆</el-button>
+            </section>
+        </el-form>
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <ul class="toolbar" v-permissions="['business:ywroom:create', 'business:ywroom:delete']">
+                <li><el-button>瀵煎嚭</el-button></li>
+            </ul>
+            <el-table v-loading="isWorking.search" :data="tableData.list" stripe>
+                <el-table-column prop="projectName" label="璧勪骇缂栧彿" min-width="100px"></el-table-column>
+                <el-table-column prop="buildingName" label="璧勪骇鍚嶇О" min-width="70px"></el-table-column>
+                <el-table-column prop="floorName" label="鏉$爜" min-width="60px"></el-table-column>
+                <el-table-column prop="roomNum" label="鍝佺墝" min-width="60px"></el-table-column>
+                <el-table-column prop="rentArea" label="瑙勬牸鍨嬪彿" min-width="80px"></el-table-column>
+                <el-table-column prop="feeArea" label="鎵�鍦ㄤ粨搴�" min-width="80px"></el-table-column>
+                <el-table-column prop="feeArea" label="搴撳瓨" min-width="80px"></el-table-column>
+            </el-table>
+            <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+            </pagination>
+        </template>
+    </TableLayout>
+</template>
+
+<script>
+  import BaseTable from '@/components/base/BaseTable'
+  import TableLayout from '@/layouts/TableLayout'
+  import Pagination from '@/components/common/Pagination'
+  export default {
+    name: 'InventoryQuery',
+    extends: BaseTable,
+    components: { TableLayout, Pagination },
+    data() {
+      return {
+        // 鎼滅储
+        searchForm: {
+          id: '',
+          creator: '',
+          createDate: '',
+          editor: '',
+          editDate: '',
+          isdeleted: '',
+          name: '',
+          remark: '',
+          status: '',
+          sortnum: '',
+          imgurl: '',
+          code: '',
+          roomNum: '',
+          isInvestment: '',
+          area: '',
+          feeArea: '',
+          rentArea: '',
+          floor: '',
+          projectId: '',
+          buildingId: ''
+        },
+        projectList: [],
+        buildList: [],
+
+        filters: {}
+      }
+    },
+    created() {
+      this.config({
+        module: '杩愮淮鎴挎簮淇℃伅琛�',
+        api: '/project/ywRoom',
+        'field.id': 'id',
+        'field.main': 'id'
+      })
+    },
+    methods: {
+    
+    }
+  }
+</script>
diff --git a/admin/src/views/stock/asset.vue b/admin/src/views/stock/asset.vue
index 61d0ab4..e1535d2 100644
--- a/admin/src/views/stock/asset.vue
+++ b/admin/src/views/stock/asset.vue
@@ -12,7 +12,7 @@
       <el-table-column prop="param1" label="澶囨敞" min-width="120" show-overflow-tooltip />
       <el-table-column prop="param2" label="鐘舵��" min-width="90" show-overflow-tooltip />
       <el-table-column prop="workTime" label="鎿嶄綔" min-width="100" show-overflow-tooltip>
-        <template v-slot="{row}">
+        <template v-slot="{ row }">
           <span class="primaryColor pointer">鏌ョ湅璇︽儏</span>
           <span class="red pointer">鍒犻櫎</span>
         </template>
@@ -49,7 +49,7 @@
       total: 0,
       queryFormConfig: {
         formItems: [
-        {
+          {
             filed: 'carCodeFront',
             type: 'input',
             label: '浠撳簱鍚嶇О',
@@ -123,11 +123,10 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
 </script>
 
-<style>
-
-</style>
+<style></style>
diff --git a/admin/src/views/stock/assetCate.vue b/admin/src/views/stock/assetCate.vue
index 965a882..375678f 100644
--- a/admin/src/views/stock/assetCate.vue
+++ b/admin/src/views/stock/assetCate.vue
@@ -9,7 +9,7 @@
       </ul>
       <el-table row-key="id" :tree-props="{ children: 'childCategoryList' }" v-loading="isWorking.search"
         :data="dataList" stripe @selection-change="handleSelectionChange">
-        <el-table-column prop="name" label="璁惧鍒嗙被" min-width="100px"></el-table-column>
+        <el-table-column prop="name" label="璧勪骇鍒嗙被" min-width="100px"></el-table-column>
         <!-- <el-table-column prop="parentName" label="鎵�灞炲垎绫�" min-width="100px"></el-table-column> -->
         <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
         <el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])" label="鎿嶄綔"
@@ -68,7 +68,7 @@
   methods: {
     handleEdit(row) {
       this.isShowEdit = true
-      let str = row && row.id ? '缂栬緫璁惧鍒嗙被' : '鏂板缓璁惧鍒嗙被'
+      let str = row && row.id ? '缂栬緫璧勪骇鍒嗙被' : '鏂板缓璧勪骇鍒嗙被'
       this.$nextTick(() => {
         this.$refs.CateEditRef.open(str)
         this.$refs.CateEditRef.getList()
diff --git a/admin/src/views/stock/assetList.vue b/admin/src/views/stock/assetList.vue
index c5851ae..ace748c 100644
--- a/admin/src/views/stock/assetList.vue
+++ b/admin/src/views/stock/assetList.vue
@@ -132,6 +132,7 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
diff --git a/admin/src/views/stock/assetManagement.vue b/admin/src/views/stock/assetManagement.vue
new file mode 100644
index 0000000..014815f
--- /dev/null
+++ b/admin/src/views/stock/assetManagement.vue
@@ -0,0 +1,54 @@
+<template>
+    <TableLayout>
+        <template v-slot:table-wrap>
+            <ul class="toolbar">
+                <li><el-button type="primary" icon="el-icon-plus" @click="$refs.newAsset.open('鏂板缓璧勪骇鍒嗙被')">鏂板缓</el-button></li>
+            </ul>
+            <el-table row-key="id" :tree-props="{ children: 'childCategoryList' }" v-loading="isWorking.search"
+                :data="dataList" stripe>
+                <el-table-column prop="name" label="璧勪骇鍒嗙被" min-width="100px"></el-table-column>
+                <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
+                <el-table-column label="鎿嶄綔" min-width="120" fixed="right">
+                    <template slot-scope="{row}">
+                        <el-button type="text" icon="el-icon-edit">缂栬緫</el-button>
+                        <el-button type="text" icon="el-icon-delete">鍒犻櫎</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            ></pagination>
+        </template>
+        <newAsset ref="newAsset" />
+    </TableLayout>
+</template>
+
+<script>
+  import BaseTable from '@/components/base/BaseTable'
+  import TableLayout from '@/layouts/TableLayout'
+  import Pagination from '@/components/common/Pagination'
+  import newAsset from './components/newAsset'
+  export default {
+    name: 'assetManagement',
+    extends: BaseTable,
+    components: { TableLayout, Pagination, newAsset },
+    data() {
+      return {
+        dataList: []
+      }
+    },
+    created() {
+      this.config({
+        module: '杞﹁締淇℃伅琛�',
+        api: '/business/category',
+        'field.id': 'id',
+        'field.main': 'id'
+      })
+    },
+    methods: {
+    
+    }
+  }
+</script>
diff --git a/admin/src/views/stock/check.vue b/admin/src/views/stock/check.vue
index 86c05ec..eaebf2d 100644
--- a/admin/src/views/stock/check.vue
+++ b/admin/src/views/stock/check.vue
@@ -13,7 +13,7 @@
       <el-table-column prop="param2" label="鍒涘缓鏃堕棿" min-width="140" show-overflow-tooltip />
       <el-table-column prop="workTime" label="鐩樼偣鐘舵��" min-width="80" show-overflow-tooltip />
       <el-table-column prop="workTime" label="鎿嶄綔" min-width="140" show-overflow-tooltip>
-        <template v-slot="{row}">
+        <template v-slot="{ row }">
           <span class="primaryColor pointer">鏌ョ湅璇︽儏</span>
           <span class="primaryColor pointer">鍙栨秷</span>
           <span class="primaryColor pointer">鍒犻櫎</span>
@@ -51,7 +51,7 @@
       total: 0,
       queryFormConfig: {
         formItems: [
-        {
+          {
             filed: 'carCodeFront',
             type: 'input',
             label: '鐩樼偣鍗�',
@@ -125,11 +125,10 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
 </script>
 
-<style>
-
-</style>
+<style></style>
diff --git a/admin/src/views/stock/components/AssetSel.vue b/admin/src/views/stock/components/AssetSel.vue
new file mode 100644
index 0000000..afbbb23
--- /dev/null
+++ b/admin/src/views/stock/components/AssetSel.vue
@@ -0,0 +1,125 @@
+<template>
+  <GlobalWindow title="閫夋嫨鐗╂枡" :visible.sync="isShowModal" :confirm-working="isLoading" width="900px" @close="close"
+    @confirm="confirm">
+    <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
+      <el-form-item prop="areaType" label="鐗╂枡淇℃伅">
+        <el-input v-model="searchForm.aaa" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�/鍚嶇О" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item prop="areaIds" label="鐗╂枡鍒嗙被">
+        <el-cascader v-model="searchForm.areaIds" @change="changeSel" placeholder="璇烽�夋嫨鐗╂枡鍒嗙被" clearable
+          :options="cateList" :props="{
+            label: 'name',
+            value: 'id',
+            children: 'childCategoryList'
+          }"></el-cascader>
+      </el-form-item>
+      <span>
+        <el-button type="primary" @click="getList">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </span>
+    </el-form>
+    <!--  -->
+    <el-table @selection-change="handleSelectionChange" :data="list" stripe>
+      <el-table-column type="selection"  width="55" />
+      <el-table-column prop="categoryName" label="鐗╂枡缂栫爜" min-width="100px"></el-table-column>
+      <el-table-column prop="creatorName" label="鐗╂枡鍚嶇О" min-width="80px"></el-table-column>
+      <el-table-column prop="createDate" label="鏉$爜" min-width="100px"></el-table-column>
+      <el-table-column prop="dealUserName" label="鍝佺墝" min-width="80px"></el-table-column>
+      <el-table-column prop="dealUserName" label="瑙勬牸鍨嬪彿" min-width="80px"></el-table-column>
+      <el-table-column prop="dealUserName" label="鍗曚綅" min-width="80px"></el-table-column>
+      <el-table-column prop="dealUserName" label="搴撳瓨" min-width="80px"></el-table-column>
+    </el-table>
+    <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination">
+    </Pagination>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import Pagination from '@/components/common/Pagination'
+import { fetchList as getCateList } from '@/api/business/category.js'
+export default {
+  name: 'OperaCategoryWindow',
+  components: { GlobalWindow, Pagination },
+  data() {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      searchForm: {},
+      pagination: {
+        pageSize: 10,
+        page: 1,
+        total: 0
+      },
+      list: [],
+      selList: [],
+      cateList: [],
+      isShowModal: false,
+      isLoading: false,
+      // 楠岃瘉瑙勫垯
+      rules: {
+        name: [{ required: true, message: '璇疯緭鍏ヤ簩绾у垎绫诲悕绉�', trigger: 'blur' }],
+      },
+      dataList: []
+    }
+  },
+  created() {
+    this.initData()
+  },
+  methods: {
+    confirm() {
+      this.$emit('change', this.selList)
+      this.close()
+    },
+    handleSelectionChange(val) {
+      this.selList = val
+    },
+    getList(page) {
+      const { pagination, searchForm } = this
+      this.listLoading = true
+      if(page){pagination.page = page}
+      fetchList({
+        capacity: pagination.pageSize,
+        page: pagination.page,
+        model: {...searchForm}
+      }).then((res) => {
+        this.listLoading = false
+        this.list = res.records
+        this.pagination.total = res.total || 0
+      }, () => {
+        this.listLoading = false
+      })
+    },
+    initData() {
+      getCateList({
+        model: { type: 3 },
+        capacity: 1000,
+        page: 1,
+      }).then(res => {
+        this.cateList = res.records || []
+      })
+    },
+    changeSel(e) {
+      if (e && e.length == 2) {
+        this.$set(this.searchForm, 'cateId', e[1])
+      } else {
+        this.$set(this.searchForm, 'cateId', '')
+      }
+    },
+    reset() {
+      this.searchForm = {}
+      this.pagination.pageSize = 10
+      this.pagination.page = 1
+      this.getList()
+    },
+    handleSizeChange(capacity) {
+      this.pagination.pageSize = capacity
+      this.getList()
+    },
+    close() {
+      this.isShowModal = false
+      this.$emit('close')
+    },
+  }
+}
+</script>
diff --git a/admin/src/views/stock/components/InDetail.vue b/admin/src/views/stock/components/InDetail.vue
new file mode 100644
index 0000000..ad73ba4
--- /dev/null
+++ b/admin/src/views/stock/components/InDetail.vue
@@ -0,0 +1,164 @@
+<template>
+  <GlobalWindow width="960px" title="鍑哄簱鍗曡鎯�" :visible.sync="visible" :confirm-working="isWorking" @close="close"
+    @confirm="confirm">
+    <div class="main">
+      <div class="title">
+        <span>宸ュ崟璇︽儏</span>
+      </div>
+      <div class="main_content">
+        <div class="list">
+          <div class="item">
+            <div class="la">鍑哄簱浠撳簱</div>
+            <div class="val">{{ info.projectName }}</div>
+          </div>
+          <div class="item">
+            <div class="la">鍑哄簱鏃ユ湡</div>
+            <div class="val">{{ info.categoryName }}</div>
+          </div>
+          <div class="item">
+            <div class="la">鍑哄簱绫诲瀷</div>
+            <div class="val">{{ info.creatorName }}{{ info.creatorCompany ? "-" + info.creatorCompany : '' }}</div>
+          </div>
+          <div class="item">
+            <div class="la">澶勭悊浜�</div>
+            <div class="val">{{ info.creatorPhone || info.creatorMobile }}</div>
+          </div>
+          <div class="item">
+            <div class="la">澶囨敞</div>
+            <div class="val">{{ info.createDate }}</div>
+          </div>
+        </div>
+      </div>
+      <div class="title">鐗╂枡淇℃伅</div>
+      <el-table :data="list" stripe>
+        <el-table-column align="center" type="index" width="55" />
+        <el-table-column prop="creatorName" label="鐗╂枡鍚嶇О" show-overflow-tooltip min-width="80px"></el-table-column>
+        <el-table-column prop="categoryName" label="鐗╂枡缂栫爜" show-overflow-tooltip min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鏉″舰鐮�" show-overflow-tooltip min-width="100px"></el-table-column>
+        <el-table-column prop="dealUserName" label="鍝佺墝" show-overflow-tooltip min-width="80px"></el-table-column>
+        <el-table-column prop="dealUserName" label="鍗曚綅" show-overflow-tooltip min-width="80px"></el-table-column>
+        <el-table-column prop="dealUserName" label="鍑哄簱鏁伴噺" show-overflow-tooltip min-width="80px"></el-table-column>
+      </el-table>
+    </div>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import BaseOpera from '@/components/base/BaseOpera'
+import { detailById, dispatchOrder, dealOrder } from '@/api/workorder/ywWorkorder'
+import { getUserList } from '@/api/system/user'
+import { Message, Loading } from 'element-ui'
+import dayjs from 'dayjs'
+export default {
+  components: {
+    GlobalWindow
+  },
+  extends: BaseOpera,
+  data() {
+    return {
+      id: '',
+      visible: false,
+      info: {},
+      list: []
+
+
+    }
+  },
+  created() {
+    // this.getDetail()
+  },
+  methods: {
+    getDetail() {
+      const { id } = this
+      detailById(id).then(res => {
+        this.info = res
+      })
+    },
+    close() {
+      this.visible = false
+      this.$emit('close')
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '@/assets/style/variables.scss';
+
+.main {
+  padding-top: 20px;
+
+  .title {
+    font-weight: 500;
+    font-size: 18px;
+    color: $primary-color;
+    margin-bottom: 10px;
+    display: flex;
+    align-items: center;
+
+    .status {
+      padding: 0 12px;
+      height: 24px;
+      line-height: 24px;
+      border-radius: 2px;
+      border: 1px solid #00BA92;
+      color: #00BA92;
+      font-weight: 400;
+      font-size: 12px;
+      margin-left: 10px;
+    }
+
+    .primaryColor {
+      border: 1px solid rgba(63, 126, 239, .2);
+      background-color: rgba(63, 126, 239, .2);
+    }
+
+    .green {
+      background-color: rgba(83, 183, 148, .2);
+      border: 1px solid rgba(83, 183, 148, .2);
+    }
+
+    .gray {
+      color: #333333;
+      background-color: rgba(128, 128, 128, .2);
+      border: 1px solid rgba(128, 128, 128, .2);
+    }
+  }
+
+  .list {
+    display: flex;
+    flex-wrap: wrap;
+    /* background: #F7F7F7; */
+    border-radius: 2px;
+    padding: 15px 20px;
+    margin-bottom: 16px;
+
+    .item {
+      width: 33.3%;
+      margin-bottom: 14px;
+
+      .la {
+        color: #7f7f7f;
+        margin-bottom: 6px;
+      }
+    }
+
+    .item2 {
+      width: 100%;
+      display: flex;
+      align-items: center;
+
+      .la {
+        margin-bottom: 0;
+        width: 72px;
+      }
+    }
+
+    .max {
+      width: 100%;
+    }
+  }
+
+}
+</style>
diff --git a/admin/src/views/stock/components/InEdit.vue b/admin/src/views/stock/components/InEdit.vue
new file mode 100644
index 0000000..3bc1a30
--- /dev/null
+++ b/admin/src/views/stock/components/InEdit.vue
@@ -0,0 +1,138 @@
+<template>
+  <GlobalWindow title="鏂板缓鍑哄簱鍗�" :visible.sync="isShowModal" :confirm-working="isLoading" width="900px" @close="close"
+    @confirm="confirm">
+    <el-form :model="param" ref="form" :rules="rules">
+      <div class="df_ac">
+        <el-form-item class="w3" label="鍑哄簱浠撳簱" prop="parentId">
+          <el-select :disabled="param.id" v-model="param.parentId" placeholder="涓嶅~涓哄垯涓�绾у垎绫�">
+            <el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item class="w3" label="鍑哄簱鏃ユ湡">
+          <el-date-picker type="date" v-model="param.getDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨鍑哄簱鏃ユ湡"></el-date-picker>
+        </el-form-item>
+        <el-form-item class="w3" label="鍑哄簱绫诲瀷" prop="parentId">
+          <el-select :disabled="param.id" v-model="param.parentId" placeholder="涓嶅~涓哄垯涓�绾у垎绫�">
+            <el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item class="w3" label="澶勭悊浜�" prop="name">
+          <el-input v-model="param.name" v-trim />
+        </el-form-item>
+        <el-form-item class="w6" label="澶囨敞" prop="name">
+          <el-input v-model="param.name" placeholder="璇疯緭鍏�" v-trim />
+        </el-form-item>
+      </div>
+    </el-form>
+    <!--  -->
+    <el-tabs v-model="activeName">
+      <el-tab-pane label="鐗╂枡淇℃伅" name="first"></el-tab-pane>
+    </el-tabs>
+    <el-button type="primary" @click="handleOpenMaterial">閫夋嫨鐗╂枡</el-button>
+    <el-table :data="list" stripe>
+      <el-table-column align="center" label="搴忓彿" type="index" width="50" />
+      <el-table-column prop="creatorName" label="鐗╂枡鍚嶇О" show-overflow-tooltip min-width="80px"></el-table-column>
+      <el-table-column prop="categoryName" label="鐗╂枡缂栫爜" show-overflow-tooltip min-width="90px"></el-table-column>
+      <el-table-column prop="createDate" label="鏉″舰鐮�" show-overflow-tooltip min-width="70px"></el-table-column>
+      <el-table-column prop="dealUserName" label="鍝佺墝" show-overflow-tooltip min-width="70px"></el-table-column>
+      <el-table-column prop="dealUserName" label="鍗曚綅" show-overflow-tooltip min-width="70px"></el-table-column>
+      <el-table-column prop="dealUserName" label="鍑哄簱鏁伴噺" min-width="90px">
+        <template v-slot="{row}">
+          <el-input oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 11)" v-model="row.aa" class="w100"></el-input>
+        </template>
+      </el-table-column>
+      <el-table-column prop="dealUserName" label="搴撳瓨鏁伴噺" show-overflow-tooltip min-width="80px"></el-table-column>
+      <el-table-column prop="dealUserName" label="鎿嶄綔" min-width="60px">
+        <template v-slot="scope">
+          <span @click="handleDel(scope)" class="red pointer">鍒犻櫎</span>
+        </template>
+      </el-table-column>
+    </el-table>
+    <!--  -->
+    <AssetSel v-if="isShowSel" ref="AssetSelRef" @change="changeSel" @close="isShowSel = false" />
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import AssetSel from './AssetSel'
+import { create, fetchCateList, getInfoById } from '@/api/business/category.js'
+export default {
+  name: 'OperaCategoryWindow',
+  components: { GlobalWindow, AssetSel },
+  data() {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      param: {},
+      activeName: 'first',
+      isShowModal: false,
+      isShowSel: false,
+      isLoading: false,
+      // 楠岃瘉瑙勫垯
+      rules: {
+        name: [{ required: true, message: '璇疯緭鍏ヤ簩绾у垎绫诲悕绉�', trigger: 'blur' }],
+      },
+      list: [{}],
+
+      dataList: [],
+    }
+  },
+  created() {
+
+  },
+  methods: {
+    confirm() {
+
+    },
+    getList() {
+      fetchCateList({ type: 5 }).then(res => {
+        this.dataList = res || []
+
+      })
+    },
+    changeSel() {
+
+    },
+    handleDel(val) {
+      const index = val.$index
+      this.list.splice(index, 1)
+      
+    },
+    handleOpenMaterial() {
+      this.isShowSel = true
+      this.$nextTick(() => {
+        this.$refs.AssetSelRef.isShowModal = true
+      })
+    },
+    close() {
+      this.isShowModal = false
+      this.$emit('close')
+    },
+    getDetail(id) {
+      getInfoById(id).then(res => {
+        this.param = res
+      })
+    },
+  }
+}
+</script>
+<style lang="scss" scoped>
+.df_ac {
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+
+  .w3 {
+    width: 33.3%;
+    padding: 0 10px;
+    box-sizing: border-box;
+  }
+
+  .w6 {
+    width: 66.6%;
+    padding: 0 10px;
+    box-sizing: border-box;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/stock/components/OutDetail.vue b/admin/src/views/stock/components/OutDetail.vue
new file mode 100644
index 0000000..ad73ba4
--- /dev/null
+++ b/admin/src/views/stock/components/OutDetail.vue
@@ -0,0 +1,164 @@
+<template>
+  <GlobalWindow width="960px" title="鍑哄簱鍗曡鎯�" :visible.sync="visible" :confirm-working="isWorking" @close="close"
+    @confirm="confirm">
+    <div class="main">
+      <div class="title">
+        <span>宸ュ崟璇︽儏</span>
+      </div>
+      <div class="main_content">
+        <div class="list">
+          <div class="item">
+            <div class="la">鍑哄簱浠撳簱</div>
+            <div class="val">{{ info.projectName }}</div>
+          </div>
+          <div class="item">
+            <div class="la">鍑哄簱鏃ユ湡</div>
+            <div class="val">{{ info.categoryName }}</div>
+          </div>
+          <div class="item">
+            <div class="la">鍑哄簱绫诲瀷</div>
+            <div class="val">{{ info.creatorName }}{{ info.creatorCompany ? "-" + info.creatorCompany : '' }}</div>
+          </div>
+          <div class="item">
+            <div class="la">澶勭悊浜�</div>
+            <div class="val">{{ info.creatorPhone || info.creatorMobile }}</div>
+          </div>
+          <div class="item">
+            <div class="la">澶囨敞</div>
+            <div class="val">{{ info.createDate }}</div>
+          </div>
+        </div>
+      </div>
+      <div class="title">鐗╂枡淇℃伅</div>
+      <el-table :data="list" stripe>
+        <el-table-column align="center" type="index" width="55" />
+        <el-table-column prop="creatorName" label="鐗╂枡鍚嶇О" show-overflow-tooltip min-width="80px"></el-table-column>
+        <el-table-column prop="categoryName" label="鐗╂枡缂栫爜" show-overflow-tooltip min-width="100px"></el-table-column>
+        <el-table-column prop="createDate" label="鏉″舰鐮�" show-overflow-tooltip min-width="100px"></el-table-column>
+        <el-table-column prop="dealUserName" label="鍝佺墝" show-overflow-tooltip min-width="80px"></el-table-column>
+        <el-table-column prop="dealUserName" label="鍗曚綅" show-overflow-tooltip min-width="80px"></el-table-column>
+        <el-table-column prop="dealUserName" label="鍑哄簱鏁伴噺" show-overflow-tooltip min-width="80px"></el-table-column>
+      </el-table>
+    </div>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import BaseOpera from '@/components/base/BaseOpera'
+import { detailById, dispatchOrder, dealOrder } from '@/api/workorder/ywWorkorder'
+import { getUserList } from '@/api/system/user'
+import { Message, Loading } from 'element-ui'
+import dayjs from 'dayjs'
+export default {
+  components: {
+    GlobalWindow
+  },
+  extends: BaseOpera,
+  data() {
+    return {
+      id: '',
+      visible: false,
+      info: {},
+      list: []
+
+
+    }
+  },
+  created() {
+    // this.getDetail()
+  },
+  methods: {
+    getDetail() {
+      const { id } = this
+      detailById(id).then(res => {
+        this.info = res
+      })
+    },
+    close() {
+      this.visible = false
+      this.$emit('close')
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '@/assets/style/variables.scss';
+
+.main {
+  padding-top: 20px;
+
+  .title {
+    font-weight: 500;
+    font-size: 18px;
+    color: $primary-color;
+    margin-bottom: 10px;
+    display: flex;
+    align-items: center;
+
+    .status {
+      padding: 0 12px;
+      height: 24px;
+      line-height: 24px;
+      border-radius: 2px;
+      border: 1px solid #00BA92;
+      color: #00BA92;
+      font-weight: 400;
+      font-size: 12px;
+      margin-left: 10px;
+    }
+
+    .primaryColor {
+      border: 1px solid rgba(63, 126, 239, .2);
+      background-color: rgba(63, 126, 239, .2);
+    }
+
+    .green {
+      background-color: rgba(83, 183, 148, .2);
+      border: 1px solid rgba(83, 183, 148, .2);
+    }
+
+    .gray {
+      color: #333333;
+      background-color: rgba(128, 128, 128, .2);
+      border: 1px solid rgba(128, 128, 128, .2);
+    }
+  }
+
+  .list {
+    display: flex;
+    flex-wrap: wrap;
+    /* background: #F7F7F7; */
+    border-radius: 2px;
+    padding: 15px 20px;
+    margin-bottom: 16px;
+
+    .item {
+      width: 33.3%;
+      margin-bottom: 14px;
+
+      .la {
+        color: #7f7f7f;
+        margin-bottom: 6px;
+      }
+    }
+
+    .item2 {
+      width: 100%;
+      display: flex;
+      align-items: center;
+
+      .la {
+        margin-bottom: 0;
+        width: 72px;
+      }
+    }
+
+    .max {
+      width: 100%;
+    }
+  }
+
+}
+</style>
diff --git a/admin/src/views/stock/components/OutEdit.vue b/admin/src/views/stock/components/OutEdit.vue
new file mode 100644
index 0000000..3bc1a30
--- /dev/null
+++ b/admin/src/views/stock/components/OutEdit.vue
@@ -0,0 +1,138 @@
+<template>
+  <GlobalWindow title="鏂板缓鍑哄簱鍗�" :visible.sync="isShowModal" :confirm-working="isLoading" width="900px" @close="close"
+    @confirm="confirm">
+    <el-form :model="param" ref="form" :rules="rules">
+      <div class="df_ac">
+        <el-form-item class="w3" label="鍑哄簱浠撳簱" prop="parentId">
+          <el-select :disabled="param.id" v-model="param.parentId" placeholder="涓嶅~涓哄垯涓�绾у垎绫�">
+            <el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item class="w3" label="鍑哄簱鏃ユ湡">
+          <el-date-picker type="date" v-model="param.getDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
+            placeholder="璇烽�夋嫨鍑哄簱鏃ユ湡"></el-date-picker>
+        </el-form-item>
+        <el-form-item class="w3" label="鍑哄簱绫诲瀷" prop="parentId">
+          <el-select :disabled="param.id" v-model="param.parentId" placeholder="涓嶅~涓哄垯涓�绾у垎绫�">
+            <el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item class="w3" label="澶勭悊浜�" prop="name">
+          <el-input v-model="param.name" v-trim />
+        </el-form-item>
+        <el-form-item class="w6" label="澶囨敞" prop="name">
+          <el-input v-model="param.name" placeholder="璇疯緭鍏�" v-trim />
+        </el-form-item>
+      </div>
+    </el-form>
+    <!--  -->
+    <el-tabs v-model="activeName">
+      <el-tab-pane label="鐗╂枡淇℃伅" name="first"></el-tab-pane>
+    </el-tabs>
+    <el-button type="primary" @click="handleOpenMaterial">閫夋嫨鐗╂枡</el-button>
+    <el-table :data="list" stripe>
+      <el-table-column align="center" label="搴忓彿" type="index" width="50" />
+      <el-table-column prop="creatorName" label="鐗╂枡鍚嶇О" show-overflow-tooltip min-width="80px"></el-table-column>
+      <el-table-column prop="categoryName" label="鐗╂枡缂栫爜" show-overflow-tooltip min-width="90px"></el-table-column>
+      <el-table-column prop="createDate" label="鏉″舰鐮�" show-overflow-tooltip min-width="70px"></el-table-column>
+      <el-table-column prop="dealUserName" label="鍝佺墝" show-overflow-tooltip min-width="70px"></el-table-column>
+      <el-table-column prop="dealUserName" label="鍗曚綅" show-overflow-tooltip min-width="70px"></el-table-column>
+      <el-table-column prop="dealUserName" label="鍑哄簱鏁伴噺" min-width="90px">
+        <template v-slot="{row}">
+          <el-input oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 11)" v-model="row.aa" class="w100"></el-input>
+        </template>
+      </el-table-column>
+      <el-table-column prop="dealUserName" label="搴撳瓨鏁伴噺" show-overflow-tooltip min-width="80px"></el-table-column>
+      <el-table-column prop="dealUserName" label="鎿嶄綔" min-width="60px">
+        <template v-slot="scope">
+          <span @click="handleDel(scope)" class="red pointer">鍒犻櫎</span>
+        </template>
+      </el-table-column>
+    </el-table>
+    <!--  -->
+    <AssetSel v-if="isShowSel" ref="AssetSelRef" @change="changeSel" @close="isShowSel = false" />
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import AssetSel from './AssetSel'
+import { create, fetchCateList, getInfoById } from '@/api/business/category.js'
+export default {
+  name: 'OperaCategoryWindow',
+  components: { GlobalWindow, AssetSel },
+  data() {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      param: {},
+      activeName: 'first',
+      isShowModal: false,
+      isShowSel: false,
+      isLoading: false,
+      // 楠岃瘉瑙勫垯
+      rules: {
+        name: [{ required: true, message: '璇疯緭鍏ヤ簩绾у垎绫诲悕绉�', trigger: 'blur' }],
+      },
+      list: [{}],
+
+      dataList: [],
+    }
+  },
+  created() {
+
+  },
+  methods: {
+    confirm() {
+
+    },
+    getList() {
+      fetchCateList({ type: 5 }).then(res => {
+        this.dataList = res || []
+
+      })
+    },
+    changeSel() {
+
+    },
+    handleDel(val) {
+      const index = val.$index
+      this.list.splice(index, 1)
+      
+    },
+    handleOpenMaterial() {
+      this.isShowSel = true
+      this.$nextTick(() => {
+        this.$refs.AssetSelRef.isShowModal = true
+      })
+    },
+    close() {
+      this.isShowModal = false
+      this.$emit('close')
+    },
+    getDetail(id) {
+      getInfoById(id).then(res => {
+        this.param = res
+      })
+    },
+  }
+}
+</script>
+<style lang="scss" scoped>
+.df_ac {
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+
+  .w3 {
+    width: 33.3%;
+    padding: 0 10px;
+    box-sizing: border-box;
+  }
+
+  .w6 {
+    width: 66.6%;
+    padding: 0 10px;
+    box-sizing: border-box;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/stock/components/inventoryDetails.vue b/admin/src/views/stock/components/inventoryDetails.vue
new file mode 100644
index 0000000..b0c6d1c
--- /dev/null
+++ b/admin/src/views/stock/components/inventoryDetails.vue
@@ -0,0 +1,183 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        :visible.sync="visible"
+        :withFooter="false"
+        :confirm-working="isWorking"
+        @confirm="confirm">
+        <div class="main">
+            <div class="title">鐩樼偣淇℃伅</div>
+            <div class="list">
+                <div class="item">
+                    <div class="la">鐩樼偣鍗曞悕绉�</div>
+                    <div class="val">搴撳瓨鐩樼偣20241212</div>
+                </div>
+                <div class="item">
+                    <div class="la">鐩樼偣鏃ユ湡</div>
+                    <div class="val">2024-11-17</div>
+                </div>
+                <div class="item">
+                    <div class="la">鐩樼偣浠撳簱</div>
+                    <div class="val">浠撳簱1</div>
+                </div>
+                <div class="item">
+                    <div class="la">鐩樼偣鍛�</div>
+                    <div class="val">寮犱笁</div>
+                </div>
+                <div class="item">
+                    <div class="la">鐩樼偣鐘舵��</div>
+                    <div class="val">宸插畬鎴�</div>
+                </div>
+            </div>
+            <div class="title">鐩樼偣缁撴灉</div>
+            <div class="list">
+                <div class="list_search">
+                    <div class="list_search_left">
+                        <el-input v-model="input" style="width: 200px; margin-right: 10px;" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
+                        <el-select v-model="input" style="width: 200px; margin-right: 10px;" placeholder="璇烽�夋嫨">
+                            <el-option
+                                v-for="item in options"
+                                :key="item.value"
+                                :label="item.label"
+                                :value="item.value">
+                            </el-option>
+                        </el-select>
+                        <el-button type="primary">鏌ヨ</el-button>
+                        <el-button>娓呯┖</el-button>
+                        <el-button>瀵煎嚭</el-button>
+                    </div>
+                    <div class="list_search_right">
+                        <span>宸茬洏:100</span>
+                        <span>鏈洏:20</span>
+                        <span>璐﹀疄鐩哥:88</span>
+                        <span>鐩樼泩:2</span>
+                        <span>鐩樹簭:20</span>
+                    </div>
+                </div>
+                <div style="width: 100%; margin: 20px 0;">
+                    <el-table :data="roomList" stripe>
+                        <el-table-column prop="projectName" label="璧勪骇缂栫爜" show-overflow-tooltip />
+                        <el-table-column prop="buildingName" label="璧勪骇鍚嶇О" show-overflow-tooltip />
+                        <el-table-column prop="buildingName" label="鏉$爜" show-overflow-tooltip />
+                        <el-table-column prop="buildingName" label="鍝佺墝" show-overflow-tooltip />
+                        <el-table-column prop="buildingName" label="瑙勬牸鍨嬪彿" show-overflow-tooltip />
+                        <el-table-column prop="buildingName" label="鍗曚綅" show-overflow-tooltip />
+                        <el-table-column prop="buildingName" label="鎵�鍦ㄤ粨搴�" show-overflow-tooltip />
+                        <el-table-column prop="buildingName" label="璐﹂潰鏁伴噺" show-overflow-tooltip />
+                        <el-table-column prop="buildingName" label="鐩樼偣鏁伴噺" show-overflow-tooltip />
+                        <el-table-column prop="buildingName" label="澶囨敞" show-overflow-tooltip />
+                    </el-table>
+                </div>
+                <div class="list_pagination">
+                    <el-pagination
+                        @size-change="handleSizeChange"
+                        @current-change="handleCurrentChange"
+                        :current-page="page"
+                        :page-sizes="[10, 20, 30, 40]"
+                        :page-size="pageSize"
+                        layout="total, sizes, prev, pager, next, jumper"
+                        :total="total">
+                    </el-pagination>
+                </div>
+            </div>
+        </div>
+    </GlobalWindow>
+</template>
+
+<script>
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  import BaseOpera from '@/components/base/BaseOpera'
+  export default {
+    name: "inventoryDetails",
+    components: {
+      GlobalWindow
+    },
+    extends: BaseOpera,
+    data() {
+      return {
+        info: {},
+        input: '',
+        options: [],
+        roomList: [],
+
+        pageSize: 10,
+        total: 0,
+        page: 1
+      }
+    },
+    methods: {
+      handleSizeChange(size) {
+        this.pageSize = size
+      },
+      handleCurrentChange(page) {
+        this.page = page
+      },
+      open (title) {
+        this.title = title
+        this.visible = true
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+    @import '@/assets/style/variables.scss';
+    
+    .main {
+        .title {
+            font-weight: 500;
+            font-size: 18px;
+            padding-top: 20px;
+            box-sizing: border-box;
+            color: $primary-color;
+            margin-bottom: 15px;
+        }
+        
+        .list {
+            display: flex;
+            flex-wrap: wrap;
+            /*background: #F7F7F7;*/
+            border-radius: 2px;
+            /*padding: 15px 20px;*/
+            margin-bottom: 20px;
+            
+            .list_pagination {
+                width: 100%;
+                text-align: right;
+            }
+            
+            .list_search {
+                width: 100%;
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+                .list_search_left {
+                    display: flex;
+                    align-items: center;
+                }
+                .list_search_right {
+                    display: flex;
+                    align-items: center;
+                    span {
+                        color: #7E7E7E;
+                        font-size: 14px;
+                        margin-right: 15px;
+                        &:last-child {
+                            margin: 0 !important;
+                        }
+                    }
+                }
+            }
+            
+            .item {
+                width: 20%;
+                margin-bottom: 16px;
+                
+                .la {
+                    color: #7f7f7f;
+                    margin-bottom: 10px;
+                }
+            }
+        }
+    }
+</style>
diff --git a/admin/src/views/stock/components/newAsset.vue b/admin/src/views/stock/components/newAsset.vue
new file mode 100644
index 0000000..ce1aed2
--- /dev/null
+++ b/admin/src/views/stock/components/newAsset.vue
@@ -0,0 +1,56 @@
+<template>
+    <GlobalWindow
+        width="50%"
+        :title="title"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm">
+        <el-form :model="form" ref="form" :rules="rules">
+            <el-form-item label="鍒嗙被鍚嶇О" prop="name">
+                <el-input v-model="form.name" placeholder="璇疯緭鍏ュ垎绫诲悕绉�" v-trim />
+            </el-form-item>
+            <el-form-item label="鎵�灞炲垎绫�" prop="name">
+                <el-select v-model="form.name" placeholder="璇烽�夋嫨">
+                    <el-option label="寮犱笁" :value="1"></el-option>
+                    <el-option label="鏉庡洓" :value="1"></el-option>
+                    <el-option label="鐜嬩簩" :value="1"></el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="name">
+                <el-input v-model="form.name" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim />
+            </el-form-item>
+        </el-form>
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  export default {
+    name: 'newAsset',
+    extends: BaseOpera,
+    components: { GlobalWindow },
+    data() {
+      return {
+        // 琛ㄥ崟鏁版嵁
+        form: {
+          id: '',
+          name: '',
+        },
+        // 楠岃瘉瑙勫垯
+        rules: {
+          name: [{ required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur' }]
+        },
+      }
+    },
+    created() {
+      this.config({
+        api: '/project/ywProject',
+        'field.id': 'id'
+      })
+    },
+    methods: {
+
+    }
+  }
+</script>
diff --git a/admin/src/views/stock/components/newInventory.vue b/admin/src/views/stock/components/newInventory.vue
new file mode 100644
index 0000000..eb57f94
--- /dev/null
+++ b/admin/src/views/stock/components/newInventory.vue
@@ -0,0 +1,67 @@
+<template>
+    <GlobalWindow
+        width="50%"
+        :title="title"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm">
+        <el-form :model="form" ref="form" :rules="rules">
+            <el-form-item label="鐩樼偣鍗曞悕绉�" prop="name">
+                <el-input v-model="form.name" placeholder="璇疯緭鍏ョ洏鐐瑰崟鍚嶇О" v-trim />
+            </el-form-item>
+            <el-form-item label="鐩樼偣鏃ユ湡" prop="name">
+                <el-date-picker
+                    v-model="form.name"
+                    type="date"
+                    placeholder="閫夋嫨鏃ユ湡">
+                </el-date-picker>
+            </el-form-item>
+            <el-form-item label="鐩樼偣浠撳簱" prop="name">
+                <el-select v-model="form.name" placeholder="璇烽�夋嫨">
+                    <el-option label="寮犱笁" :value="1"></el-option>
+                    <el-option label="鏉庡洓" :value="1"></el-option>
+                    <el-option label="鐜嬩簩" :value="1"></el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="鐩樼偣鍛�" prop="name">
+                <el-select v-model="form.name" placeholder="璇烽�夋嫨">
+                    <el-option label="寮犱笁" :value="1"></el-option>
+                    <el-option label="鏉庡洓" :value="1"></el-option>
+                    <el-option label="鐜嬩簩" :value="1"></el-option>
+                </el-select>
+            </el-form-item>
+        </el-form>
+    </GlobalWindow>
+</template>
+
+<script>
+  import BaseOpera from '@/components/base/BaseOpera'
+  import GlobalWindow from '@/components/common/GlobalWindow'
+  export default {
+    name: 'newInventory',
+    extends: BaseOpera,
+    components: { GlobalWindow },
+    data() {
+      return {
+        // 琛ㄥ崟鏁版嵁
+        form: {
+          id: '',
+          name: '',
+        },
+        // 楠岃瘉瑙勫垯
+        rules: {
+          name: [{ required: true, message: '璇疯緭鍏ラ」鐩悕绉�', trigger: 'blur' }]
+        },
+      }
+    },
+    created() {
+      this.config({
+        api: '/project/ywProject',
+        'field.id': 'id'
+      })
+    },
+    methods: {
+    
+    }
+  }
+</script>
diff --git a/admin/src/views/stock/in.vue b/admin/src/views/stock/in.vue
index e71d95d..ee899e6 100644
--- a/admin/src/views/stock/in.vue
+++ b/admin/src/views/stock/in.vue
@@ -2,7 +2,8 @@
   <div class="main_app">
     <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
     <div class="mt20">
-      <el-button type="primary" @click="handleEx()" v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>
+      <el-button type="primary" @click="handleEdit()" v-permissions="['business:ywpatrolline:create']">鏂板缓鍑哄簱鍗�</el-button>
+      <el-button @click="handleEx()" v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>
     </div>
     <el-table v-loading="loading" :data="list" stripe>
       <el-table-column prop="platformName" label="鍑哄簱鍗曞彿" min-width="120" show-overflow-tooltip />
@@ -13,20 +14,25 @@
       <el-table-column prop="param2" label="鎿嶄綔浜�" min-width="90" show-overflow-tooltip />
       <el-table-column prop="workTime" label="鎿嶄綔鏃堕棿" min-width="140" show-overflow-tooltip />
       <el-table-column prop="workTime" label="鎿嶄綔" min-width="80" show-overflow-tooltip>
-        <template v-slot="{row}">
-          <span class="primaryColor pointer">鏌ョ湅璇︽儏</span>
+        <template v-slot="{ row }">
+          <span @click="handleDetail(row)" class="primaryColor pointer">鏌ョ湅璇︽儏</span>
         </template>
       </el-table-column>
     </el-table>
     <div class="mt20">
       <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
     </div>
+    <!--  -->
+    <InEdit v-if="isShowEdit" @close="isShowEdit = false" @success="getList" ref="InEditRef" />
+    <InDetail v-if="isShowDetail" ref="InDetailRef" />
   </div>
 </template>
 
 <script>
 import Pagination from '@/components/common/Pagination'
 import QueryForm from '@/components/common/QueryForm'
+import InEdit from './components/InEdit'
+import InDetail from './components/InDetail'
 import dayjs from 'dayjs'
 import duration from 'dayjs/plugin/duration'
 dayjs.extend(duration)
@@ -34,22 +40,26 @@
 export default {
   components: {
     Pagination,
-    QueryForm
+    QueryForm,
+    InEdit,
+    InDetail
   },
   data() {
     return {
       loading: false,
+      isShowEdit: false,
+      isShowDetail: false,
       pagination: {
         pageSize: 10,
         page: 1,
         total: 0
       },
       filters: {},
-      list: [],
+      list: [{}],
       total: 0,
       queryFormConfig: {
         formItems: [
-        {
+          {
             filed: 'carCodeFront',
             type: 'input',
             label: '鍑哄簱鍗曞彿',
@@ -82,6 +92,18 @@
         }
       })
     },
+    handleEdit() {
+      this.isShowEdit = true
+      this.$nextTick(() => {
+        this.$refs.InEditRef.isShowModal = true
+      })
+    },
+    handleDetail() {
+      this.isShowDetail = true
+      this.$nextTick(() => {
+        this.$refs.InDetailRef.visible = true
+      })
+    },
     handleEx() { },
     getGroupList() {
       getPlatformGroupList({ queryData: 0, queryType: 0 }).then(res => {
@@ -97,6 +119,7 @@
     getList(page) {
       const { pagination, filters } = this
       this.loading = true
+      if(page){pagination.page = page}
       platformLogPage({
         model: {
           ...filters,
@@ -106,7 +129,7 @@
         },
         sorts: [{ direction: 'DESC', property: 'param1' }],
         capacity: pagination.pageSize,
-        page: page || pagination.page,
+        page: page,
       }).then(res => {
         this.loading = false
         this.list = res.records || []
@@ -128,11 +151,10 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
 </script>
 
-<style>
-
-</style>
+<style></style>
diff --git a/admin/src/views/stock/inventoryCount.vue b/admin/src/views/stock/inventoryCount.vue
new file mode 100644
index 0000000..97b46ce
--- /dev/null
+++ b/admin/src/views/stock/inventoryCount.vue
@@ -0,0 +1,101 @@
+<template>
+    <TableLayout :permissions="['business:ywroom:query']">
+        <!-- 鎼滅储琛ㄥ崟 -->
+        <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="120px" inline>
+            <el-form-item label="鐩樼偣鍗曞悕绉�" prop="roomNum">
+                <el-input v-model="searchForm.roomNum" placeholder="璇疯緭鍏ョ洏鐐瑰崟鍚嶇О" @keypress.enter.native="search"></el-input>
+            </el-form-item>
+            <el-form-item label="鐘舵��" prop="buildingId">
+                <el-select v-model="searchForm.buildingId" placeholder="璇烽�夋嫨妤煎畤" clearable>
+                    <el-option v-for="item in buildList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                </el-select>
+            </el-form-item>
+            <section>
+                <el-button type="primary" @click="search">鎼滅储</el-button>
+                <el-button @click="reset">閲嶇疆</el-button>
+            </section>
+        </el-form>
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <ul class="toolbar">
+                <li><el-button type="primary" @click="$refs.newInventory.open('鏂板缓鐩樼偣鍗�')">娣诲姞</el-button></li>
+                <li><el-button type="primary" @click="$refs.inventoryDetails.open('鐩樼偣璇︾粏')">璇︽儏</el-button></li>
+            </ul>
+            <el-table v-loading="isWorking.search" :data="tableData.list" stripe>
+                <el-table-column prop="projectName" label="鐩樼偣鍗曞悕绉�" min-width="100px"></el-table-column>
+                <el-table-column prop="buildingName" label="鐩樼偣浠撳簱" min-width="70px"></el-table-column>
+                <el-table-column prop="floorName" label="鐩樼偣鍛�" min-width="60px"></el-table-column>
+                <el-table-column prop="roomNum" label="鐩樼偣鏃ユ湡" min-width="60px"></el-table-column>
+                <el-table-column prop="rentArea" label="鍒涘缓浜�" min-width="80px"></el-table-column>
+                <el-table-column prop="feeArea" label="鍒涘缓鏃堕棿" min-width="80px"></el-table-column>
+                <el-table-column prop="feeArea" label="鐩樼偣鐘舵��" min-width="80px"></el-table-column>
+                <el-table-column label="鎿嶄綔">
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="$refs.inventoryDetails.open('鐩樼偣璇︾粏')">鏌ョ湅璇︽儏</el-button>
+                        <el-button type="text">鍙栨秷</el-button>
+                        <el-button type="text">鍒犻櫎</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
+            </pagination>
+            <newInventory ref="newInventory" />
+            <inventoryDetails ref="inventoryDetails" />
+        </template>
+    </TableLayout>
+</template>
+
+<script>
+  import BaseTable from '@/components/base/BaseTable'
+  import TableLayout from '@/layouts/TableLayout'
+  import Pagination from '@/components/common/Pagination'
+  import newInventory from './components/newInventory'
+  import inventoryDetails from './components/inventoryDetails'
+  export default {
+    name: 'inventoryCount',
+    extends: BaseTable,
+    components: { TableLayout, Pagination, newInventory, inventoryDetails },
+    data() {
+      return {
+        // 鎼滅储
+        searchForm: {
+          id: '',
+          creator: '',
+          createDate: '',
+          editor: '',
+          editDate: '',
+          isdeleted: '',
+          name: '',
+          remark: '',
+          status: '',
+          sortnum: '',
+          imgurl: '',
+          code: '',
+          roomNum: '',
+          isInvestment: '',
+          area: '',
+          feeArea: '',
+          rentArea: '',
+          floor: '',
+          projectId: '',
+          buildingId: ''
+        },
+        projectList: [],
+        buildList: [],
+
+        filters: {}
+      }
+    },
+    created() {
+      this.config({
+        module: '杩愮淮鎴挎簮淇℃伅琛�',
+        api: '/project/ywRoom',
+        'field.id': 'id',
+        'field.main': 'id'
+      })
+    },
+    methods: {
+
+    }
+  }
+</script>
diff --git a/admin/src/views/stock/out.vue b/admin/src/views/stock/out.vue
index e71d95d..07aca66 100644
--- a/admin/src/views/stock/out.vue
+++ b/admin/src/views/stock/out.vue
@@ -2,7 +2,8 @@
   <div class="main_app">
     <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear" />
     <div class="mt20">
-      <el-button type="primary" @click="handleEx()" v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>
+      <el-button type="primary" @click="handleEdit()" v-permissions="['business:ywpatrolline:create']">鏂板缓鍑哄簱鍗�</el-button>
+      <el-button @click="handleEx()" v-permissions="['business:ywpatrolline:create']">瀵煎嚭</el-button>
     </div>
     <el-table v-loading="loading" :data="list" stripe>
       <el-table-column prop="platformName" label="鍑哄簱鍗曞彿" min-width="120" show-overflow-tooltip />
@@ -13,20 +14,25 @@
       <el-table-column prop="param2" label="鎿嶄綔浜�" min-width="90" show-overflow-tooltip />
       <el-table-column prop="workTime" label="鎿嶄綔鏃堕棿" min-width="140" show-overflow-tooltip />
       <el-table-column prop="workTime" label="鎿嶄綔" min-width="80" show-overflow-tooltip>
-        <template v-slot="{row}">
-          <span class="primaryColor pointer">鏌ョ湅璇︽儏</span>
+        <template v-slot="{ row }">
+          <span @click="handleDetail(row)" class="primaryColor pointer">鏌ョ湅璇︽儏</span>
         </template>
       </el-table-column>
     </el-table>
     <div class="mt20">
       <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
     </div>
+    <!--  -->
+    <OutEdit v-if="isShowEdit" @close="isShowEdit = false" @success="getList" ref="OutEditRef" />
+    <OutDetail v-if="isShowDetail" ref="OutDetailRef" />
   </div>
 </template>
 
 <script>
 import Pagination from '@/components/common/Pagination'
 import QueryForm from '@/components/common/QueryForm'
+import OutEdit from './components/OutEdit'
+import OutDetail from './components/OutDetail'
 import dayjs from 'dayjs'
 import duration from 'dayjs/plugin/duration'
 dayjs.extend(duration)
@@ -34,22 +40,26 @@
 export default {
   components: {
     Pagination,
-    QueryForm
+    QueryForm,
+    OutEdit,
+    OutDetail
   },
   data() {
     return {
       loading: false,
+      isShowEdit: false,
+      isShowDetail: false,
       pagination: {
         pageSize: 10,
         page: 1,
         total: 0
       },
       filters: {},
-      list: [],
+      list: [{}],
       total: 0,
       queryFormConfig: {
         formItems: [
-        {
+          {
             filed: 'carCodeFront',
             type: 'input',
             label: '鍑哄簱鍗曞彿',
@@ -82,6 +92,18 @@
         }
       })
     },
+    handleEdit() {
+      this.isShowEdit = true
+      this.$nextTick(() => {
+        this.$refs.OutEditRef.isShowModal = true
+      })
+    },
+    handleDetail() {
+      this.isShowDetail = true
+      this.$nextTick(() => {
+        this.$refs.OutDetailRef.visible = true
+      })
+    },
     handleEx() { },
     getGroupList() {
       getPlatformGroupList({ queryData: 0, queryType: 0 }).then(res => {
@@ -97,6 +119,7 @@
     getList(page) {
       const { pagination, filters } = this
       this.loading = true
+      if(page){pagination.page = page}
       platformLogPage({
         model: {
           ...filters,
@@ -106,7 +129,7 @@
         },
         sorts: [{ direction: 'DESC', property: 'param1' }],
         capacity: pagination.pageSize,
-        page: page || pagination.page,
+        page: page,
       }).then(res => {
         this.loading = false
         this.list = res.records || []
@@ -128,11 +151,10 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
 </script>
 
-<style>
-
-</style>
+<style></style>
diff --git a/admin/src/views/stock/query.vue b/admin/src/views/stock/query.vue
index 7c318d2..9432354 100644
--- a/admin/src/views/stock/query.vue
+++ b/admin/src/views/stock/query.vue
@@ -124,6 +124,7 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
diff --git a/admin/src/views/stock/record.vue b/admin/src/views/stock/record.vue
index 7f1764b..f7f37f0 100644
--- a/admin/src/views/stock/record.vue
+++ b/admin/src/views/stock/record.vue
@@ -142,6 +142,7 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
diff --git a/admin/src/views/system/publicMsg.vue b/admin/src/views/system/publicMsg.vue
index 085dbd0..136d910 100644
--- a/admin/src/views/system/publicMsg.vue
+++ b/admin/src/views/system/publicMsg.vue
@@ -145,6 +145,7 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }
diff --git a/admin/src/views/system/smsMessage.vue b/admin/src/views/system/smsMessage.vue
index f3f551f..0dbf752 100644
--- a/admin/src/views/system/smsMessage.vue
+++ b/admin/src/views/system/smsMessage.vue
@@ -3,8 +3,7 @@
     <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear">
     </QueryForm>
     <div class="pt16 mb10">
-      <el-button type="primary" @click="batchStatus(0)"
-        v-permissions="['business:platformjob:update']">鎵归噺鍚敤</el-button>
+      <el-button type="primary" @click="batchStatus(0)" v-permissions="['business:platformjob:update']">鎵归噺鍚敤</el-button>
       <el-button @click="batchStatus(1)" v-permissions="['business:platformjob:update']">鎵归噺绂佺敤</el-button>
     </div>
     <el-table @selection-change="handleSelectionChange" class="mb20" v-loading="loading" :data="list" stripe>
@@ -15,7 +14,8 @@
       <el-table-column prop="content" label="娑堟伅妯℃澘" min-width="300" show-overflow-tooltip />
       <el-table-column label="鐘舵��" width="120" align="center" fixed="right">
         <template v-slot="scope">
-          <el-switch v-permissions="['business:platformjob:update']" v-model="scope.row.status" @change="changeStatus(scope.row)" :active-value="0" :inactive-value="1">
+          <el-switch v-permissions="['business:platformjob:update']" v-model="scope.row.status"
+            @change="changeStatus(scope.row)" :active-value="0" :inactive-value="1">
           </el-switch>
         </template>
       </el-table-column>
@@ -145,6 +145,7 @@
     },
     handleSizeChange(capacity) {
       this.pagination.pageSize = capacity
+      this.getList()
     }
   }
 }

--
Gitblit v1.9.3