From 5bdaf416d66b675131004de1aba5d161772a52b0 Mon Sep 17 00:00:00 2001
From: liubp <1535785116@qq.com>
Date: 星期五, 19 十二月 2025 18:27:52 +0800
Subject: [PATCH] 添加所属小区字段

---
 public/pages/property/costDetail/costDetail.js                            |  244 +++++++++++++
 public/pages/common/communityManage/detail/detail.html                    |    8 
 public/pages/admin/contractChangeManage/contractChangeManage.html         |    4 
 public/pages/admin/contractChangeManage/contractChangeManage.js           |    6 
 public/pages/admin/newContractManage/newContractManage.html               |    4 
 public/pages/admin/expirationContractManage/expirationContractManage.js   |    4 
 public/pages/common/communityManage/edit/edit.html                        |   17 
 public/pages/admin/addContract/addContract.js                             |   36 +
 public/pages/common/communityManage/edit/edit.js                          |   75 +++
 public/pages/property/costDetail/costDetail.html                          |  167 ++++-----
 public/pages/admin/addContract/addContract.html                           |   19 +
 public/pages/admin/contractTypeManage/contractTypeManage.js               |    6 
 public/pages/common/communityManage/add/add.js                            |   94 ++--
 public/pages/admin/contractManage/contractManage.js                       |    6 
 public/pages/admin/newContractManage/newContractManage.js                 |    6 
 public/pages/admin/expirationContractManage/expirationContractManage.html |    4 
 public/pages/admin/contractManage/contractManage.html                     |    4 
 public/css/vc.css                                                         |  310 ++++++++++++++++
 public/pages/common/communityManage/add/add.html                          |    6 
 public/pages/common/communityManage/detail/detail.js                      |    2 
 20 files changed, 837 insertions(+), 185 deletions(-)

diff --git a/public/css/vc.css b/public/css/vc.css
index 80e53c4..d756004 100644
--- a/public/css/vc.css
+++ b/public/css/vc.css
@@ -9,7 +9,7 @@
     --vc-menu-sub-font-color: #545761;
     --vc-menu-sub-bg-active-color: #EAF0FE;
     --vc-menu-sub-active-font-color: #3E77FC;
-    --vc-menu-sub-title-font-color: #4F525C;
+    --vc-menu-sub-title-font-color: #404357;
     --vc-menu-sub-footer: #F6F6F7;
     --vc-nav-bg: #1D1F2D;
     --vc-nav-color: #888888;
@@ -534,7 +534,7 @@
 }
 
 .border-bottom {
-    border-bottom: 1px solid #e7eaec !important;
+    border-bottom: 1px solid #e7eaec;
 }
 
 .border-radius {
@@ -747,7 +747,7 @@
 
 .vc-nav ul li.active {
     color: var(--vc-nav-active-color);
-    border-bottom: 2px solid var(--vc-nav-active-color) !important;
+    border-bottom: 2px solid var(--vc-nav-active-color);
 }
 
 .vc-main .vc-main-content {
@@ -1042,7 +1042,7 @@
 }
 
 .table-scroll {
-    overflow-y: scroll !important;
+    overflow-y: scroll;
 }
 
 .hc-table-div::-webkit-scrollbar {
@@ -1197,6 +1197,7 @@
     font-size: 14px;
     font-weight: bold;
     margin: 10px 0 5px;
+    color: #404357;
 }
 
 .community-add .detail-note {
@@ -1240,13 +1241,310 @@
 
 .community-add input.error,
 .community-add select.error {
-    border-color: #dc3545 !important;
+    border-color: #dc3545;
     background-color: #fff5f5;
     box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
 }
 
 .community-add input.error:focus,
 .community-add select.error:focus {
-    border-color: #dc3545 !important;
+    border-color: #dc3545;
     box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
+}
+
+.cost-detail-container {
+    width: 98%;
+    margin: 20px auto;
+    font-family: "寰蒋闆呴粦", sans-serif;
+    background: transparent;
+    padding: 0;
+}
+
+.cost-detail-container * {
+    box-sizing: border-box;
+}
+
+.cost-detail-container h2 {
+    margin-bottom: 20px;
+    color: #333;
+    font-size: 18px;
+    font-weight: 600;
+}
+
+.cost-detail-container .search-bar {
+    margin-bottom: 15px;
+    padding: 15px;
+    background: #f5f5f5;
+    border-radius: 4px;
+    display: flex;
+    align-items: center;
+    flex-wrap: wrap;
+    gap: 12px;
+}
+
+.cost-detail-container .search-bar div {
+    display: flex;
+    align-items: center;
+    gap: 8px;
+}
+
+.cost-detail-container .search-bar label {
+    font-size: 14px;
+    color: #333;
+    white-space: nowrap;
+    font-weight: 500;
+}
+
+.cost-detail-container .search-bar input,
+.cost-detail-container .search-bar select {
+    padding: 6px 12px;
+    border: 1px solid #d9d9d9;
+    border-radius: 4px;
+    font-size: 14px;
+    height: 32px;
+    min-width: 150px;
+    background: #fff;
+}
+
+.cost-detail-container .search-bar .queryDate {
+    position: relative;
+}
+
+.cost-detail-container .search-bar input:focus,
+.cost-detail-container .search-bar select:focus {
+    outline: none;
+    border-color: #1677ff;
+}
+
+.cost-detail-container .search-bar button {
+    padding: 6px 16px;
+    border-radius: 4px;
+    cursor: pointer;
+    font-size: 14px;
+    height: 32px;
+    transition: all 0.3s;
+}
+
+.cost-detail-container .search-bar .query-btn {
+    background: #1677ff;
+    color: #fff;
+    border: 1px solid #1677ff;
+}
+
+.cost-detail-container .search-bar .query-btn:hover {
+    background: #4096ff;
+    color: #fff;
+    border-color: #4096ff;
+}
+
+.cost-detail-container .search-bar .reset-btn {
+    background: #fff;
+    color: #666;
+    border: 1px solid #d9d9d9;
+}
+
+.cost-detail-container .search-bar .reset-btn:hover {
+    color: #333;
+    border-color: #bfbfbf;
+}
+
+.cost-detail-container .search-bar .action-buttons {
+    margin-left: auto;
+    display: flex;
+    gap: 12px;
+}
+
+.cost-detail-container .action-buttons button {
+    padding: 6px 16px;
+    border-radius: 4px;
+    cursor: pointer;
+    font-size: 14px;
+    height: 32px;
+    transition: all 0.3s;
+}
+
+.cost-detail-container .action-buttons .add-btn {
+    background: #1677ff;
+    color: #fff;
+    border: 1px solid #1677ff;
+}
+
+.cost-detail-container .action-buttons .add-btn:hover {
+    background: #4096ff;
+}
+
+.cost-detail-container .action-buttons .import-btn {
+    background: #fff;
+    color: #333;
+    border: 1px solid #d9d9d9;
+}
+
+.cost-detail-container .action-buttons .import-btn:hover {
+    background: #f5f5f5;
+    border-color: #bfbfbf;
+}
+
+.cost-detail-container table {
+    width: 100%;
+    border-collapse: collapse;
+    border: 1px solid #e8e8e8;
+    font-size: 14px;
+    background: #fff;
+    margin-bottom: 0;
+}
+
+.cost-detail-container table th,
+.cost-detail-container table td {
+    padding: 12px;
+    border: 1px solid #e8e8e8;
+    text-align: center;
+}
+
+.cost-detail-container table th {
+    background: #f5f5f5;
+    font-weight: 600;
+    white-space: nowrap;
+    color: #333;
+    text-align: center;
+}
+
+.cost-detail-container table td {
+    color: #333;
+    text-align: center;
+}
+
+.cost-detail-container table tbody tr {
+    background: #fff;
+}
+
+.cost-detail-container table tbody tr:hover {
+    background: #f5f5f5;
+}
+
+.cost-detail-container table td a {
+    color: #1677ff;
+    text-decoration: none;
+    margin-right: 12px;
+    cursor: pointer;
+    white-space: nowrap;
+}
+
+.cost-detail-container table td a:hover {
+    text-decoration: underline;
+    color: #4096ff;
+}
+
+.cost-detail-container table td a:last-child {
+    margin-right: 0;
+}
+
+.cost-detail-container .pagination {
+    margin-top: 20px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    font-size: 14px;
+    color: #333;
+}
+
+.cost-detail-container .pagination .pagination-info {
+    color: #666;
+}
+
+.cost-detail-container .pagination .pagination-controls {
+    display: flex;
+    align-items: center;
+    gap: 8px;
+}
+
+.cost-detail-container .pagination .page-size-select {
+    padding: 4px 8px;
+    border: 1px solid #d9d9d9;
+    border-radius: 4px;
+    font-size: 14px;
+    height: 32px;
+    width: 60px;
+}
+
+.cost-detail-container .pagination .page-size-label,
+.cost-detail-container .pagination .jump-label,
+.cost-detail-container .pagination .page-label {
+    color: #666;
+    margin: 0 4px;
+}
+
+.cost-detail-container .pagination .page-btn {
+    padding: 4px 8px;
+    border: 1px solid #d9d9d9;
+    background: #fff;
+    cursor: pointer;
+    font-size: 14px;
+    min-width: 32px;
+    height: 32px;
+    border-radius: 4px;
+    transition: all 0.3s;
+    color: #333;
+}
+
+.cost-detail-container .pagination .page-btn:hover:not(:disabled) {
+    color: #1677ff;
+    border-color: #1677ff;
+}
+
+.cost-detail-container .pagination .page-btn:disabled {
+    opacity: 0.5;
+    cursor: not-allowed;
+    background: #f5f5f5;
+}
+
+.cost-detail-container .pagination .page-btn.active {
+    background: #1677ff;
+    color: #fff;
+    border-color: #1677ff;
+}
+
+.cost-detail-container .pagination .page-ellipsis {
+    color: #666;
+    padding: 0 4px;
+}
+
+.cost-detail-container .pagination .jump-input {
+    width: 50px;
+    padding: 4px 8px;
+    text-align: center;
+    border: 1px solid #d9d9d9;
+    border-radius: 4px;
+    font-size: 14px;
+    height: 32px;
+    margin: 0 4px;
+}
+
+.cost-detail-container .pagination .jump-input:focus {
+    outline: none;
+    border-color: #1677ff;
+}
+
+.cost-detail-container .action-buttons .add-btn i {
+    margin-right: 4px;
+}
+
+.cost-detail-container .pagination .page-btn[disabled] {
+    background-color: #f5f5f5;
+    border-color: #d9d9d9;
+    color: rgba(0, 0, 0, 0.25);
+}
+
+@media (max-width: 1200px) {
+    .cost-detail-container {
+        width: 95%;
+        overflow-x: auto;
+    }
+    
+    .cost-detail-container table {
+        min-width: 1400px;
+    }
+}
+
+#costDetailTableHead th{
+    background-color: rgb(233, 243, 255);
 }
\ No newline at end of file
diff --git a/public/pages/admin/addContract/addContract.html b/public/pages/admin/addContract/addContract.html
index 31b9a72..1f3ca00 100644
--- a/public/pages/admin/addContract/addContract.html
+++ b/public/pages/admin/addContract/addContract.html
@@ -57,6 +57,25 @@
                             <div class="form-group row">
                                 <label class="col-sm-3 col-form-label padding-lr-sm text-right">
                                     <span>
+                                        <vc:i18n name="鎵�灞炲皬鍖�" namespace="addContract"></vc:i18n>
+                                    </span>
+                                </label>
+                                <div class="col-sm-9 padding-lr-xs">
+                                    <select class="custom-select" v-model="addContractInfo.communityId"
+                                        @change="_changeCommunity()">
+                                        <option selected disabled value="">
+                                            {{vc.i18n('璇烽�夋嫨鎵�灞炲皬鍖�','addContract')}}
+                                        </option>
+                                        <option v-for="(item,index) in addContractInfo.communities" :key="index" :value="item.communityId">{{item.name}}
+                                        </option>
+                                    </select>
+                                </div>
+                            </div>
+                        </div>    
+                        <div class="col-sm-4">
+                            <div class="form-group row">
+                                <label class="col-sm-3 col-form-label padding-lr-sm text-right">
+                                    <span>
                                         <vc:i18n name="鍚堝悓鍚嶇О" namespace="addContract"></vc:i18n>
                                     </span>
                                 </label>
diff --git a/public/pages/admin/addContract/addContract.js b/public/pages/admin/addContract/addContract.js
index e27b978..ccfff1b 100644
--- a/public/pages/admin/addContract/addContract.js
+++ b/public/pages/admin/addContract/addContract.js
@@ -3,6 +3,7 @@
         data: {
             addContractInfo: {
                 communityId: vc.getCurrentCommunity().communityId,
+                communities: [],
                 contractId: '',
                 contractName: '',
                 contractCode: '',
@@ -53,6 +54,7 @@
         },
         _initMethod: function () {
             vc.component._initAddContractInfo();
+            $that._loadCommunities();
             $that._loadAddContractType();
             $that._loadAddContractParkA();
             $that._loadAddContractParkB();
@@ -344,6 +346,13 @@
                             param: "",
                             errInfo: "鍚堝悓绛捐鏃堕棿涓嶈兘涓虹┖"
                         }
+                    ],
+                    'addContractInfo.communityId': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "璇烽�夋嫨鎵�灞炲皬鍖�"
+                        }
                     ]
                 });
             },
@@ -372,7 +381,8 @@
                     vc.toast(vc.validate.errInfo);
                     return;
                 }
-                $that.addContractInfo.communityId = vc.getCurrentCommunity().communityId;
+                // 浣跨敤涓嬫媺妗嗛�変腑鐨刢ommunityId浼犻�掔粰鎺ュ彛
+                // addContractInfo.communityId 宸查�氳繃 v-model 缁戝畾锛屽寘鍚敤鎴烽�夋嫨鐨勫��
 
                 vc.http.apiPost(
                     '/contract/saveContract',
@@ -443,6 +453,27 @@
                     staffName: '',
                     nextUserId: ''
                 };
+            },
+            _loadCommunities: function () {
+                let param = {
+                    params: {
+                        page: 1,
+                        row: 100
+                    }
+                };
+                //鍙戦�乬et璇锋眰
+                vc.http.apiGet('/community.listCommunitys',
+                    param,
+                    function (json, res) {
+                        let _communityInfo = JSON.parse(json);
+                        if (_communityInfo.code == 0) {
+                            $that.addContractInfo.communities = _communityInfo.communitys || [];
+                        }
+                    },
+                    function (errInfo, error) {
+                        console.log('璇锋眰澶辫触澶勭悊');
+                    }
+                );
             },
             _loadAddContractType: function () {
                 let param = {
@@ -567,6 +598,9 @@
                     }
                 );
             },
+            _changeCommunity: function () {
+                // 灏忓尯鍙樻洿鏃剁殑澶勭悊閫昏緫
+            },
             _goBack: function () {
                 vc.goBack();
             },
diff --git a/public/pages/admin/contractChangeManage/contractChangeManage.html b/public/pages/admin/contractChangeManage/contractChangeManage.html
index 5769b4f..661b199 100644
--- a/public/pages/admin/contractChangeManage/contractChangeManage.html
+++ b/public/pages/admin/contractChangeManage/contractChangeManage.html
@@ -76,6 +76,9 @@
                         <thead>
                         <tr>
                             <th class="text-center">
+                                <vc:i18n name="鎵�灞炲皬鍖�" namespace="contractChangeManage"></vc:i18n>
+                            </th>
+                            <th class="text-center">
                                 <vc:i18n name="鍚堝悓鍚嶇О" namespace="contractChangeManage"></vc:i18n>
                             </th>
                             <th class="text-center">
@@ -112,6 +115,7 @@
                         </thead>
                         <tbody>
                         <tr v-for="contract in contractChangeManageInfo.contracts">
+                            <td class="text-center">{{contract.communityName}}</td>
                             <td class="text-center">{{contract.contractName}}</td>
                             <td class="text-center">{{contract.contractCode}}</td>
                             <td class="text-center">{{contract.contractTypeName}}</td>
diff --git a/public/pages/admin/contractChangeManage/contractChangeManage.js b/public/pages/admin/contractChangeManage/contractChangeManage.js
index 5f74b29..7f0b8dc 100644
--- a/public/pages/admin/contractChangeManage/contractChangeManage.js
+++ b/public/pages/admin/contractChangeManage/contractChangeManage.js
@@ -13,7 +13,7 @@
                 moreCondition: false,
                 contractId: '',
                 conditions: {
-                    communityId: vc.getCurrentCommunity().communityId,
+                    // communityId: vc.getCurrentCommunity().communityId,
                     contractName: '',
                     contractCode: '',
                     contractType: ''
@@ -40,7 +40,7 @@
                 var param = {
                     params: vc.component.contractChangeManageInfo.conditions
                 };
-                param.params.communityId = vc.getCurrentCommunity().communityId;
+                // param.params.communityId = vc.getCurrentCommunity().communityId;
                 param.params.contractName = param.params.contractName.trim();
                 param.params.contractCode = param.params.contractCode.trim();
                 //鍙戦�乬et璇锋眰
@@ -96,7 +96,7 @@
             },
             //閲嶇疆
             _resetContractMethod: function () {
-                vc.component.contractChangeManageInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
+                // vc.component.contractChangeManageInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
                 vc.component.contractChangeManageInfo.conditions.contractName = "";
                 vc.component.contractChangeManageInfo.conditions.contractCode = "";
                 vc.component.contractChangeManageInfo.conditions.contractType = "";
diff --git a/public/pages/admin/contractManage/contractManage.html b/public/pages/admin/contractManage/contractManage.html
index f272222..590ddec 100644
--- a/public/pages/admin/contractManage/contractManage.html
+++ b/public/pages/admin/contractManage/contractManage.html
@@ -99,6 +99,9 @@
                         <thead>
                         <tr>
                             <th class="text-center">
+                                <vc:i18n name="鎵�灞炲皬鍖�" namespace="contractManage"></vc:i18n>
+                            </th>
+                            <th class="text-center">
                                 <vc:i18n name="鍚堝悓鍚嶇О" namespace="contractManage"></vc:i18n>
                             </th>
                             <th class="text-center">
@@ -135,6 +138,7 @@
                         </thead>
                         <tbody>
                         <tr v-for="contract in contractManageInfo.contracts">
+                            <td class="text-center">{{contract.communityName}}</td>
                             <td class="text-center">{{contract.contractName}}</td>
                             <td class="text-center">{{contract.contractCode}}</td>
                             <td class="text-center">
diff --git a/public/pages/admin/contractManage/contractManage.js b/public/pages/admin/contractManage/contractManage.js
index 8f977d9..8b257a9 100644
--- a/public/pages/admin/contractManage/contractManage.js
+++ b/public/pages/admin/contractManage/contractManage.js
@@ -13,7 +13,7 @@
                 moreCondition: false,
                 contractId: '',
                 conditions: {
-                    communityId: vc.getCurrentCommunity().communityId,
+                    // communityId: vc.getCurrentCommunity().communityId,
                     contractNameLike: '',
                     contractCodeLike: '',
                     contractType: '',
@@ -101,7 +101,7 @@
                 var param = {
                     params: vc.component.contractManageInfo.conditions
                 };
-                param.params.communityId = vc.getCurrentCommunity().communityId;
+                // param.params.communityId = vc.getCurrentCommunity().communityId;
                 param.params.contractNameLike = param.params.contractNameLike.trim();
                 param.params.contractCodeLike = param.params.contractCodeLike.trim();
                 param.params.partyBLike = param.params.partyBLike.trim();
@@ -159,7 +159,7 @@
             },
             //閲嶇疆
             _resetContractMethod: function () {
-                vc.component.contractManageInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
+                // vc.component.contractManageInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
                 vc.component.contractManageInfo.conditions.contractNameLike = "";
                 // vc.component.contractManageInfo.conditions.contractCode = "";
                 vc.component.contractManageInfo.conditions.contractType = "";
diff --git a/public/pages/admin/contractTypeManage/contractTypeManage.js b/public/pages/admin/contractTypeManage/contractTypeManage.js
index b8516b5..3d2de5f 100644
--- a/public/pages/admin/contractTypeManage/contractTypeManage.js
+++ b/public/pages/admin/contractTypeManage/contractTypeManage.js
@@ -21,7 +21,7 @@
                     typeName: '',
                     audit: '',
                     contractTypeId: '',
-                    communityId: vc.getCurrentCommunity().communityId,
+                    // communityId: vc.getCurrentCommunity().communityId,
 
                 }
             }
@@ -50,7 +50,7 @@
                 var param = {
                     params: vc.component.contractTypeManageInfo.conditions
                 };
-                param.params.communityId = vc.getCurrentCommunity().communityId;
+                // param.params.communityId = vc.getCurrentCommunity().communityId;
                 param.params.typeName = param.params.typeName.trim();
                 param.params.audit = param.params.audit.trim();
                 //鍙戦�乬et璇锋眰
@@ -88,7 +88,7 @@
             //閲嶇疆
             _resetContractTypeMethod: function () {
                 vc.component.contractTypeManageInfo.conditions.typeName = "";
-                vc.component.contractTypeManageInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
+                // vc.component.contractTypeManageInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
                 vc.component.contractTypeManageInfo.conditions.audit = "";
                 vc.component._listContractTypes(DEFAULT_PAGE, DEFAULT_ROWS);
             },
diff --git a/public/pages/admin/expirationContractManage/expirationContractManage.html b/public/pages/admin/expirationContractManage/expirationContractManage.html
index ddef9e3..d9978fc 100644
--- a/public/pages/admin/expirationContractManage/expirationContractManage.html
+++ b/public/pages/admin/expirationContractManage/expirationContractManage.html
@@ -64,6 +64,9 @@
                         <thead>
                         <tr>
                             <th class="text-center">
+                                <span><vc:i18n name="鎵�灞炲皬鍖�" namespace="expirationContractManage"></vc:i18n></span>
+                            </th>
+                            <th class="text-center">
                                 <span><vc:i18n name="鍚堝悓鍚嶇О" namespace="expirationContractManage"></vc:i18n></span>
                             </th>
                             <th class="text-center">
@@ -100,6 +103,7 @@
                         </thead>
                         <tbody>
                         <tr v-for="contract in expirationContractInfo.contracts">
+                            <td class="text-center">{{contract.communityName}}</td>
                             <td class="text-center">{{contract.contractName}}</td>
                             <td class="text-center">{{contract.contractCode}}</td>
                             <td class="text-center">{{contract.contractTypeName}}</td>
diff --git a/public/pages/admin/expirationContractManage/expirationContractManage.js b/public/pages/admin/expirationContractManage/expirationContractManage.js
index b1ccc13..55c3028 100644
--- a/public/pages/admin/expirationContractManage/expirationContractManage.js
+++ b/public/pages/admin/expirationContractManage/expirationContractManage.js
@@ -13,7 +13,7 @@
                 moreCondition: false,
                 contractId: '',
                 conditions: {
-                    communityId: vc.getCurrentCommunity().communityId,
+                    // communityId: vc.getCurrentCommunity().communityId,
                     contractNameLike: '',
                     contractCode: '',
                     contractType: '',
@@ -93,7 +93,7 @@
             },
             //閲嶇疆
             _resetContractMethod: function () {
-                vc.component.expirationContractInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
+                // vc.component.expirationContractInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
                 vc.component.expirationContractInfo.conditions.contractNameLike = "";
                 vc.component.expirationContractInfo.conditions.contractCode = "";
                 vc.component.expirationContractInfo.conditions.contractType = "";
diff --git a/public/pages/admin/newContractManage/newContractManage.html b/public/pages/admin/newContractManage/newContractManage.html
index b6e363b..a2f1306 100644
--- a/public/pages/admin/newContractManage/newContractManage.html
+++ b/public/pages/admin/newContractManage/newContractManage.html
@@ -67,6 +67,9 @@
                         <thead>
                         <tr>
                             <th class="text-center">
+                                <span><vc:i18n name="鎵�灞炲皬鍖�" namespace="newContractManage"></vc:i18n></span>
+                            </th>
+                            <th class="text-center">
                                 <span><vc:i18n name="鍚堝悓鍚嶇О" namespace="newContractManage"></vc:i18n></span>
                             </th>
                             <th class="text-center">
@@ -103,6 +106,7 @@
                         </thead>
                         <tbody>
                         <tr v-for="contract in newContractManageInfo.contracts">
+                            <td class="text-center">{{contract.communityName}}</td>
                             <td class="text-center">{{contract.contractName}}</td>
                             <td class="text-center">{{contract.contractCode}}</td>
                             <td class="text-center">
diff --git a/public/pages/admin/newContractManage/newContractManage.js b/public/pages/admin/newContractManage/newContractManage.js
index c924e5e..4192c76 100644
--- a/public/pages/admin/newContractManage/newContractManage.js
+++ b/public/pages/admin/newContractManage/newContractManage.js
@@ -14,7 +14,7 @@
                 contractId: '',
                 conditions: {
                     contractNameLike: '',
-                    communityId: vc.getCurrentCommunity().communityId,
+                    // communityId: vc.getCurrentCommunity().communityId,
                     contractCode: '',
                     contractType: '',
                     state: ''
@@ -42,7 +42,7 @@
                     params: vc.component.newContractManageInfo.conditions
                 };
                 param.params.contractNameLike = param.params.contractNameLike.trim();
-                param.params.communityId = vc.getCurrentCommunity().communityId;
+                // param.params.communityId = vc.getCurrentCommunity().communityId;
                 param.params.contractCode = param.params.contractCode.trim();
                 //鍙戦�乬et璇锋眰
                 vc.http.apiGet('/contract/queryContract',
@@ -102,7 +102,7 @@
             //閲嶇疆
             _resetContractMethod: function () {
                 vc.component.newContractManageInfo.conditions.contractNameLike = "";
-                vc.component.newContractManageInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
+                // vc.component.newContractManageInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
                 vc.component.newContractManageInfo.conditions.contractCode = "";
                 vc.component.newContractManageInfo.conditions.contractType = "";
                 vc.component._listContracts(DEFAULT_PAGE, DEFAULT_ROWS);
diff --git a/public/pages/common/communityManage/add/add.html b/public/pages/common/communityManage/add/add.html
index c3ae5cb..1d4bc8d 100644
--- a/public/pages/common/communityManage/add/add.html
+++ b/public/pages/common/communityManage/add/add.html
@@ -238,10 +238,10 @@
                 
                 <div class="radio-group" style="width: 153px; margin-right: 90px;">
                     <label>鏄惁鏈夊浐瀹氱殑瑁呬慨鍨冨溇鍫嗘斁鐐�</label>
-                    <label style="margin-left: -40px;"><input type="radio" name="garbage" value=true v-model="formData.hasDecorationRubbishPoint"> 鏈�</label>
-                    <label style="margin-left: -40px;"><input type="radio" name="garbage" value=false v-model="formData.hasDecorationRubbishPoint"> 鏃�</label>
+                    <label><input type="radio" name="garbage" value="鏄�" v-model="formData.hasDecorationRubbishPoint"> 鏈�</label>
+                    <label><input type="radio" name="garbage" value="鍚�" v-model="formData.hasDecorationRubbishPoint"> 鏃�</label>
                 </div>
-                <label>闇�淇濆畨鍊煎畧鍑哄叆鍙�(涓�)</label>
+                <label style="margin-left: 100px;">闇�淇濆畨鍊煎畧鍑哄叆鍙�(涓�)</label>
                 <input type="text" placeholder="璇疯緭鍏�" style="width: 153px;" v-model.number="formData.securityEntranceCount">
             </div>
         </div>
diff --git a/public/pages/common/communityManage/add/add.js b/public/pages/common/communityManage/add/add.js
index 292903a..43ee78d 100644
--- a/public/pages/common/communityManage/add/add.js
+++ b/public/pages/common/communityManage/add/add.js
@@ -122,7 +122,7 @@
             // 纭繚 vc.component 宸插畬鍏ㄥ垵濮嬪寲鍚庡啀璋冪敤
             let retryCount = 0;
             const maxRetries = 20; // 鏈�澶氶噸璇�20娆★紙绾�1绉掞級
-            const loadData = function() {
+            const loadData = function () {
                 if (vc.component && typeof vc.component._loadCommunityDetail === 'function') {
                     vc.component._loadCommunityDetail();
                 } else {
@@ -140,14 +140,14 @@
         _initEvent: function () {
             // 鍒濆鍖栨椂娣诲姞杈撳叆浜嬩欢鐩戝惉锛岃嚜鍔ㄧЩ闄ら敊璇牱寮�
             const $that = this;
-            setTimeout(function() {
+            setTimeout(function () {
                 // 涓烘墍鏈夎緭鍏ユ鍜岄�夋嫨妗嗘坊鍔犺緭鍏ヤ簨浠剁洃鍚�
                 const inputs = document.querySelectorAll('.community-add input, .community-add select');
-                inputs.forEach(function(input) {
-                    input.addEventListener('input', function() {
+                inputs.forEach(function (input) {
+                    input.addEventListener('input', function () {
                         $that.removeError(input.id);
                     });
-                    input.addEventListener('change', function() {
+                    input.addEventListener('change', function () {
                         $that.removeError(input.id);
                     });
                 });
@@ -155,33 +155,33 @@
         },
         methods: {
             // 娣诲姞閿欒鏍峰紡
-            addError: function(elementId) {
+            addError: function (elementId) {
                 const element = document.getElementById(elementId);
                 if (element) {
                     element.classList.add('error');
                 }
             },
             // 绉婚櫎閿欒鏍峰紡
-            removeError: function(elementId) {
+            removeError: function (elementId) {
                 const element = document.getElementById(elementId);
                 if (element) {
                     element.classList.remove('error');
                 }
             },
             // 娓呴櫎鎵�鏈夐敊璇牱寮�
-            clearAllErrors: function() {
+            clearAllErrors: function () {
                 const elements = document.querySelectorAll('.community-add input.error, .community-add select.error');
-                elements.forEach(function(element) {
+                elements.forEach(function (element) {
                     element.classList.remove('error');
                 });
             },
-            toBoolString: function(value, defaultValue) {
+            toBoolString: function (value, defaultValue) {
                 if (value === undefined || value === null) {
                     return defaultValue;
                 }
                 return value ? 'true' : 'false';
             },
-            chooseProvince: function(event) {
+            chooseProvince: function (event) {
                 const provCode = event.target.value;
                 vc.component.selectProv = provCode;
                 vc.component.selectCity = '';
@@ -190,7 +190,7 @@
                 vc.component.areas = [];
                 // 鏇存柊 formData 涓殑鐪佷唤鍚嶇О
                 if (vc.component.provs && vc.component.provs.length > 0) {
-                    vc.component.provs.forEach(function(_param) {
+                    vc.component.provs.forEach(function (_param) {
                         if (_param.areaCode == provCode) {
                             vc.component.selectProvName = _param.areaName;
                             vc.component.formData.projectAddressProvince = _param.areaName;
@@ -204,14 +204,14 @@
                     vc.component._initArea('202', provCode);
                 }
             },
-            chooseCity: function(event) {
+            chooseCity: function (event) {
                 const cityCode = event.target.value;
                 vc.component.selectCity = cityCode;
                 vc.component.selectArea = '';
                 vc.component.areas = [];
                 // 鏇存柊 formData 涓殑鍩庡競鍚嶇О
                 if (vc.component.citys && vc.component.citys.length > 0) {
-                    vc.component.citys.forEach(function(_param) {
+                    vc.component.citys.forEach(function (_param) {
                         if (_param.areaCode == cityCode) {
                             vc.component.selectCityName = _param.areaName;
                             vc.component.formData.projectAddressCity = _param.areaName;
@@ -224,25 +224,25 @@
                     vc.component._initArea('303', cityCode);
                 }
             },
-            chooseArea: function(event) {
+            chooseArea: function (event) {
                 const areaCode = event.target.value;
                 vc.component.selectArea = areaCode;
                 vc.component.formData.cityCode = areaCode;
                 vc.component.formData.areaAddress = '';
-                
+
                 // 鏇存柊 formData 涓殑鍖哄幙鍚嶇О
                 if (vc.component.areas && vc.component.areas.length > 0) {
-                    vc.component.areas.forEach(function(_param) {
+                    vc.component.areas.forEach(function (_param) {
                         if (_param.areaCode == areaCode) {
                             vc.component.selectAreaName = _param.areaName;
                             vc.component.formData.projectAddressDistrict = _param.areaName;
                         }
                     });
                 }
-                
+
                 // 鏋勫缓鍖哄煙鍦板潃
                 if (vc.component.provs && vc.component.provs.length > 0) {
-                    vc.component.provs.forEach(function(_param) {
+                    vc.component.provs.forEach(function (_param) {
                         if (_param.areaCode == vc.component.selectProv) {
                             vc.component.selectProvName = _param.areaName;
                             vc.component.formData.areaAddress = _param.areaName;
@@ -250,7 +250,7 @@
                     });
                 }
                 if (vc.component.citys && vc.component.citys.length > 0) {
-                    vc.component.citys.forEach(function(_param) {
+                    vc.component.citys.forEach(function (_param) {
                         if (_param.areaCode == vc.component.selectCity) {
                             vc.component.selectCityName = _param.areaName;
                             if (vc.component.formData.areaAddress) {
@@ -262,7 +262,7 @@
                     });
                 }
                 if (vc.component.areas && vc.component.areas.length > 0) {
-                    vc.component.areas.forEach(function(_param) {
+                    vc.component.areas.forEach(function (_param) {
                         if (_param.areaCode == vc.component.selectArea) {
                             vc.component.selectAreaName = _param.areaName;
                             if (vc.component.formData.areaAddress) {
@@ -274,7 +274,7 @@
                     });
                 }
             },
-            _initArea: function(_areaLevel, _parentAreaCode) {
+            _initArea: function (_areaLevel, _parentAreaCode) {
                 var _param = {
                     params: {
                         areaLevel: _areaLevel,
@@ -291,7 +291,7 @@
                                 // 濉厖鐪佷唤涓嬫媺妗�
                                 const provinceSelect = document.getElementById('province');
                                 if (provinceSelect) {
-                                    _tmpAreas.forEach(function(item) {
+                                    _tmpAreas.forEach(function (item) {
                                         const option = document.createElement('option');
                                         option.value = item.areaCode;
                                         option.textContent = item.areaName;
@@ -304,7 +304,7 @@
                                 const citySelect = document.getElementById('city');
                                 if (citySelect) {
                                     citySelect.innerHTML = '<option value="">璇烽�夋嫨甯�</option>';
-                                    _tmpAreas.forEach(function(item) {
+                                    _tmpAreas.forEach(function (item) {
                                         const option = document.createElement('option');
                                         option.value = item.areaCode;
                                         option.textContent = item.areaName;
@@ -317,7 +317,7 @@
                                 const areaSelect = document.getElementById('area');
                                 if (areaSelect) {
                                     areaSelect.innerHTML = '<option value="">璇烽�夋嫨鍖�</option>';
-                                    _tmpAreas.forEach(function(item) {
+                                    _tmpAreas.forEach(function (item) {
                                         const option = document.createElement('option');
                                         option.value = item.areaCode;
                                         option.textContent = item.areaName;
@@ -338,7 +338,7 @@
                     return {};
                 }
                 return {
-                    communityId: info.communityId || info.communityId || '',
+                    communityId: info.communityId || '',
                     newBId: info.newBId || '',
                     feePrice: info.feePrice || '',
                     projectAddressProvince: info.projectAddressProvince || info.provinceName || '',
@@ -393,7 +393,7 @@
                     groundNonMotorVehicleArea: info.groundNonMotorVehicleArea || info.nonElectricCarGroundArea || '',
                     undergroundNonMotorVehicleArea: info.undergroundNonMotorVehicleArea || info.nonElectricCarUndergroundArea || '',
                     clubhouseArea: info.clubhouseArea || info.clubArea || '',
-                    hasDecorationRubbishPoint: vc.component.toBoolString(info.hasDecorationRubbishPoint, info.garbageFixed ? 'true' : 'false'),
+                    hasDecorationRubbishPoint: info.hasDecorationRubbishPoint === '鏄�' || info.garbageFixed == 1 ? '鏄�' : '鍚�',
                     securityEntranceCount: info.securityEntranceCount || info.gateGuardTotal || '',
                     elevatorCount: info.elevatorCount || info.elevatorTotal || '',
                     elevatorType: info.elevatorType || '',
@@ -435,17 +435,17 @@
                 }
                 const $that = this;
                 const formData = vc.component.formData;
-                
+
                 // 娓呴櫎涔嬪墠鐨勯敊璇牱寮�
                 vc.component.clearAllErrors();
-                
+
                 // 楠岃瘉蹇呭~瀛楁
                 if (!formData.name || formData.name.trim() === '') {
                     vc.toast('璇疯緭鍏ュ皬鍖哄悕绉�');
                     vc.component.addError('input-name');
                     return;
                 }
-                
+
                 // 鏋勫缓璇︾粏鍦板潃
                 const addressParts = [];
                 if (formData.projectAddressTown) {
@@ -455,7 +455,7 @@
                     addressParts.push(formData.projectAddressRoad);
                 }
                 const address = addressParts.join(' ') || '';
-                
+
                 if (!address || address.trim() === '') {
                     vc.toast('璇疯緭鍏ヨ缁嗗湴鍧�');
                     if (!formData.projectAddressTown || formData.projectAddressTown.trim() === '') {
@@ -466,7 +466,7 @@
                     }
                     return;
                 }
-                
+
                 // 鏋勫缓鍖哄煙鍦板潃
                 let areaAddress = formData.areaAddress || '';
                 // 濡傛灉 areaAddress 涓虹┖锛屽皾璇曚粠鐪佸競鍖哄悕绉版瀯寤�
@@ -489,7 +489,7 @@
                     }
                     areaAddress = areaParts.join('');
                 }
-                
+
                 if (!areaAddress || areaAddress.trim() === '') {
                     vc.toast('璇烽�夋嫨鎵�鍦ㄥ煄甯�');
                     if (!vc.component.selectProv) {
@@ -503,7 +503,7 @@
                     }
                     return;
                 }
-                
+
                 // 楠岃瘉鍖哄煙缂栫爜锛堝繀椤婚�夋嫨鍒板尯鍘跨骇鍒級
                 const cityCode = formData.cityCode || vc.component.selectArea || '';
                 if (!cityCode || cityCode.trim() === '') {
@@ -519,7 +519,7 @@
                     }
                     return;
                 }
-                
+
                 // 楠岃瘉鑱旂郴鐢佃瘽锛堜娇鐢ㄧ墿涓氳仈绯讳汉鐢佃瘽鎴栨姤淇數璇濓級
                 const tel = formData.propertyManagerPhone || formData.dayRepairPhone || '';
                 if (!tel || tel.trim() === '') {
@@ -529,13 +529,13 @@
                         vc.component.addError('input-phone');
                     }
                     // 濡傛灉鐗╀笟鑱旂郴浜虹數璇濅负绌猴紝涓旀棩闂寸數璇濅篃涓虹┖锛屽垯涔熸爣璁版棩闂寸數璇�
-                    if ((!formData.propertyManagerPhone || formData.propertyManagerPhone.trim() === '') && 
+                    if ((!formData.propertyManagerPhone || formData.propertyManagerPhone.trim() === '') &&
                         (!formData.dayRepairPhone || formData.dayRepairPhone.trim() === '')) {
                         vc.component.addError('input-day-phone');
                     }
                     return;
                 }
-                
+
                 // 鐘舵�佹槧灏勶細statusCd (1=姝e父, 2=鏆傚仠, 3=娉ㄩ攢) -> state (鐘舵�佺紪鐮�)
                 let state = '1100'; // 榛樿姝e父鐘舵��
                 if (formData.statusCd === '1') {
@@ -545,7 +545,7 @@
                 } else if (formData.statusCd === '3') {
                     state = '1300'; // 娉ㄩ攢锛堝亣璁剧紪鐮侊級
                 }
-                
+
                 // 鏋勫缓鎻愪氦鏁版嵁
                 const submitData = {
                     // 鍩虹鍙傛暟 - 蹇呭~
@@ -555,7 +555,7 @@
                     tel: tel,
                     cityCode: cityCode,
                     state: state,
-                    
+
                     // 鍩虹鍙傛暟 - 鍙��
                     tmpAddress: formData.tmpAddress || '',
                     nearbyLandmarks: formData.nearbyLandmarks || '',
@@ -568,7 +568,7 @@
                     communityId: formData.communityId || '',
                     communityCode: formData.communityCode || '',
                     communityArea: formData.communityArea || '',
-                    
+
                     // 椤圭洰鎵╁睍鍙傛暟
                     projectAddressProvince: formData.projectAddressProvince || '',
                     projectAddressCity: formData.projectAddressCity || '',
@@ -622,7 +622,6 @@
                     groundNonMotorVehicleArea: formData.groundNonMotorVehicleArea || '',
                     undergroundNonMotorVehicleArea: formData.undergroundNonMotorVehicleArea || '',
                     clubhouseArea: formData.clubhouseArea || '',
-                    hasDecorationRubbishPoint: formData.hasDecorationRubbishPoint || '',
                     securityEntranceCount: formData.securityEntranceCount || '',
                     elevatorCount: formData.elevatorCount || '',
                     elevatorType: formData.elevatorType || '',
@@ -650,11 +649,11 @@
                     multilayerVillaBuildingCount: formData.multilayerVillaBuildingCount || '',
                     residentialHouseholdCount: formData.residentialHouseholdCount || '',
                     shopHouseholdCount: formData.shopHouseholdCount || '',
-                    
+
                     // 鎵╁睍灞炴��
                     attrs: formData.attrs || []
                 };
-                
+
                 // 杞崲鏁板瓧瀛楁
                 const numberFields = [
                     'fireHydrantCount', 'fireChannelCount', 'waterTankCount', 'reservoirCount',
@@ -665,23 +664,22 @@
                     'barrierGateCount', 'waterPumpCount', 'groundParkingSpaces', 'undergroundParkingSpaces',
                     'totalBuildingCount', 'buildingUnitCount', 'highRiseBuildingCount',
                     'multilayerVillaBuildingCount', 'residentialHouseholdCount', 'shopHouseholdCount',
-                    'payFeeMonth', 'hasManagerCertificate', 'hasDecorationRubbishPoint'
+                    'payFeeMonth', 'hasManagerCertificate'
                 ];
                 numberFields.forEach(field => {
                     if (submitData[field] !== '' && submitData[field] !== null && submitData[field] !== undefined) {
                         submitData[field] = Number(submitData[field]);
-                    } else if (field === 'hasManagerCertificate' || field === 'hasDecorationRubbishPoint') {
+                    } else if (field === 'hasManagerCertificate') {
                         submitData[field] = 0;
                     }
                 });
-                
                 // 杞崲Decimal瀛楁
                 const decimalFields = [
                     'feePrice', 'projectLandArea', 'totalConstructionArea', 'chargeableTotalArea',
                     'chargeableAreaMultilayer', 'chargeableAreaHighRise1', 'chargeableAreaHighRiseUp',
                     'chargeableAreaShop', 'chargeableAreaVilla', 'chargeableAreaOffice',
                     'chargeableAreaCommercialHouse', 'greenArea', 'groundNonMechanicalFee',
-                    'garageNonMechanicalFee', 'temporaryHourlyFee', 'temporaryDailyFee', 
+                    'garageNonMechanicalFee', 'temporaryHourlyFee', 'temporaryDailyFee',
                     'temporaryPerTimeFee', 'communityArea'
                 ];
                 decimalFields.forEach(field => {
@@ -691,7 +689,7 @@
                         submitData[field] = 0;
                     }
                 });
-                
+
                 // 娓呯悊绌哄瓧绗︿覆瀛楁锛岃浆鎹负null鎴栧垹闄�
                 Object.keys(submitData).forEach(key => {
                     if (submitData[key] === '') {
diff --git a/public/pages/common/communityManage/detail/detail.html b/public/pages/common/communityManage/detail/detail.html
index daba27b..994e97b 100644
--- a/public/pages/common/communityManage/detail/detail.html
+++ b/public/pages/common/communityManage/detail/detail.html
@@ -71,7 +71,7 @@
             <p>{{communityDetailInfo.publicArea || '--'}} 銕�</p>
         </div>
         <div class="detail-note">
-            闈㈢Н鏄庣粏锛歿{communityDetailInfo.areaDetails || ('鎬伙細' + communityDetailInfo.totalArea + ' 鍖呮嫭锛�(浣忓畢锛�' + communityDetailInfo.residentialArea + ' 闈炰綇瀹咃細' + communityDetailInfo.nonResidentialArea + ')') || '--'}}
+            <label style="color: #404357; font-weight: 800;"> 闈㈢Н鏄庣粏锛�</label>{{communityDetailInfo.areaDetails || ('鎬伙細' + communityDetailInfo.totalArea + ' 鍖呮嫭锛�(浣忓畢锛�' + communityDetailInfo.residentialArea + ' 闈炰綇瀹咃細' + communityDetailInfo.nonResidentialArea + ')') || '--'}}
         </div>
     </div>
 
@@ -82,7 +82,7 @@
             <label>鐗╀笟绠$悊澶勫湴鍧�锛�</label>
             <p>{{communityDetailInfo.managementAddress || '--'}}</p>
         </div>
-        <div class="sub-title">绠$悊澶勮仈绯讳汉锛�</div>
+        <div class="sub-title" style="color: #404357;">绠$悊澶勮仈绯讳汉锛�</div>
         <div class="form-group">
             <label>濮撳悕锛�</label>
             <p>{{communityDetailInfo.managementContactName || '--'}}</p>
@@ -94,7 +94,7 @@
             <label>澶滈棿鐢佃瘽锛�</label>
             <p>{{communityDetailInfo.managementContactNightTel || '--'}}</p>
         </div>
-        <div class="sub-title">灏忓尯缁忕悊/璐熻矗浜�</div>
+        <div class="sub-title" style="color: #404357;">灏忓尯缁忕悊/璐熻矗浜�</div>
         <div class="form-group">
             <label>濮撳悕锛�</label>
             <p>{{communityDetailInfo.managerName || '--'}}</p>
@@ -198,7 +198,7 @@
             <p>{{communityDetailInfo.pumpTotal || '--'}}</p>
             <label>鏄惁鏈夊浐瀹氱殑瑁呬慨鍨冨溇鍫嗘斁鐐癸細</label>
             <div class="radio-group">
-                <p>{{communityDetailInfo.hasDecorationRubbishPoint === true ? '鏈�' : '鏃�'}}</p>
+                <p>{{communityDetailInfo.hasDecorationRubbishPoint}}</p>
             </div>
             <label>闇�淇濆畨鍊煎畧鍑哄叆鍙�(涓�)锛�</label>
             <p>{{communityDetailInfo.gateGuardTotal || '--'}}</p>
diff --git a/public/pages/common/communityManage/detail/detail.js b/public/pages/common/communityManage/detail/detail.js
index 3f991d4..e6b8e20 100644
--- a/public/pages/common/communityManage/detail/detail.js
+++ b/public/pages/common/communityManage/detail/detail.js
@@ -234,7 +234,7 @@
                     gateSupplierContactName: info.barrierSupplierContact || info.gateSupplierContactName || '',
                     gateSupplierContactTel: info.barrierSupplierPhone || info.gateSupplierContactTel || '',
                     pumpTotal: info.waterPumpCount || info.pumpTotal || '',
-                    hasDecorationRubbishPoint: info.hasDecorationRubbishPoint || info.hasDecorationRubbishPoint,
+                    hasDecorationRubbishPoint: info.hasDecorationRubbishPoint,
                     gateGuardTotal: info.securityEntranceCount || info.gateGuardTotal || '',
                     carTotal: info.totalMotorVehicleSpaces || info.carTotal || '',
                     carGroundTotal: info.groundMotorVehicleSpaces || info.groundParkingSpaces || info.carGroundTotal || '',
diff --git a/public/pages/common/communityManage/edit/edit.html b/public/pages/common/communityManage/edit/edit.html
index 6eb20bc..09c6866 100644
--- a/public/pages/common/communityManage/edit/edit.html
+++ b/public/pages/common/communityManage/edit/edit.html
@@ -12,13 +12,13 @@
         </div>
         <div class="form-group">
             <label>鎵�鍦ㄥ煄甯�</label>
-            鐪�<select id="province" v-model="selectProv" @change="chooseProvince($event); removeError('province')">
+            鐪�<select id="province" name="projectAddressProvince" v-model="selectProv" @change="chooseProvince($event); removeError('province')">
                 <option value="">璇烽�夋嫨鐪�</option>
             </select>
-            甯�<select id="city" v-model="selectCity" @change="chooseCity($event); removeError('city')">
+            甯�<select id="city" name="projectAddressCity" v-model="selectCity" @change="chooseCity($event); removeError('city')">
                 <option value="">璇烽�夋嫨甯�</option>
             </select>
-            鍖�<select id="area" v-model="selectArea" @change="chooseArea($event); removeError('area')">
+            鍖�<select id="area" name="projectAddressDistrict" v-model="selectArea" @change="chooseArea($event); removeError('area')">
                 <option value="">璇烽�夋嫨鍖�</option>
             </select>
             <label>璇︾粏鍦板潃</label>
@@ -238,10 +238,15 @@
             
             <div class="radio-group" style="width: 153px; margin-right: 90px;">
                 <label>鏄惁鏈夊浐瀹氱殑瑁呬慨鍨冨溇鍫嗘斁鐐�</label>
-                <label style="margin-left: -40px;"><input type="radio" name="garbage" value=true v-model="formData.hasDecorationRubbishPoint"> 鏈�</label>
-                <label style="margin-left: -40px;"><input type="radio" name="garbage" value=false v-model="formData.hasDecorationRubbishPoint"> 鏃�</label>
+                <!-- 浣跨敤鈥滄槸 / 鍚︹�濓紝涓庢帴鍙e瓧娈典繚鎸佷竴鑷� -->
+                <label>
+                    <input type="radio" name="garbage" value="鏄�" v-model="formData.hasDecorationRubbishPoint"> 鏈�
+                </label>
+                <label>
+                    <input type="radio" name="garbage" value="鍚�" v-model="formData.hasDecorationRubbishPoint"> 鏃�
+                </label>
             </div>
-            <label>闇�淇濆畨鍊煎畧鍑哄叆鍙�(涓�)</label>
+            <label style="margin-left: 100px;">闇�淇濆畨鍊煎畧鍑哄叆鍙�(涓�)</label>
             <input type="text" placeholder="璇疯緭鍏�" style="width: 153px;" v-model.number="formData.securityEntranceCount">
         </div>
     </div>
diff --git a/public/pages/common/communityManage/edit/edit.js b/public/pages/common/communityManage/edit/edit.js
index 7b57da9..d5e7e3e 100644
--- a/public/pages/common/communityManage/edit/edit.js
+++ b/public/pages/common/communityManage/edit/edit.js
@@ -367,7 +367,7 @@
                 if (!detail) {
                     return;
                 }
-                // 澶勭悊琛屾斂鍖虹紪鐮侊紙濡�310115 -> 鐪侊細310000锛屽競锛�310100锛屽尯锛�310115锛�
+                // 浼樺厛浣跨敤 cityCode锛堣鏀垮尯缂栫爜锛屽310115 -> 鐪侊細310000锛屽競锛�310100锛屽尯锛�310115锛�
                 const areaCode = detail.cityCode || '';
                 if (areaCode && areaCode.length >= 6) {
                     const provCode = areaCode.substring(0, 2) + '0000';
@@ -378,8 +378,62 @@
                     // 鍏堝姞杞藉競锛屽啀鍔犺浇鍖�
                     vc.component._initArea('202', provCode);
                     vc.component._initArea('303', cityCode);
+                } else {
+                    // 濡傛灉娌℃湁 cityCode锛屽垯鏍规嵁鎺ュ彛杩斿洖鐨勭渷甯傚尯鍚嶇О鍖归厤涓嬫媺閫夐」
+                    // 杩欓噷鍦板尯鏁版嵁鏄紓姝ュ姞杞界殑锛屽洜姝ら噰鐢ㄩ噸璇曟柟寮忥紝鐩村埌鍖归厤鎴愬姛鎴栬揪鍒版渶澶ф鏁�
+                    let retry = 0;
+                    const maxRetry = 20;
+                    const matchAreaByName = function() {
+                        const provName = detail.projectAddressProvince || '';
+                        const cityName = detail.projectAddressCity || '';
+                        const districtName = detail.projectAddressDistrict || '';
+
+                        // 1. 鍖归厤鐪�
+                        if (provName && !vc.component.selectProv && vc.component.provs && vc.component.provs.length > 0) {
+                            const prov = vc.component.provs.find(p => p.areaName === provName);
+                            if (prov) {
+                                vc.component.selectProv = prov.areaCode;
+                                vc.component.selectProvName = prov.areaName;
+                                vc.component.formData.projectAddressProvince = prov.areaName;
+                                // 鍔犺浇甯傚垪琛�
+                                vc.component._initArea('202', prov.areaCode);
+                            }
+                        }
+
+                        // 2. 鍖归厤甯�
+                        if (cityName && vc.component.selectProv && !vc.component.selectCity &&
+                            vc.component.citys && vc.component.citys.length > 0) {
+                            const city = vc.component.citys.find(c => c.areaName === cityName);
+                            if (city) {
+                                vc.component.selectCity = city.areaCode;
+                                vc.component.selectCityName = city.areaName;
+                                vc.component.formData.projectAddressCity = city.areaName;
+                                // 鍔犺浇鍖哄垪琛�
+                                vc.component._initArea('303', city.areaCode);
+                            }
+                        }
+
+                        // 3. 鍖归厤鍖�
+                        if (districtName && vc.component.selectCity && !vc.component.selectArea &&
+                            vc.component.areas && vc.component.areas.length > 0) {
+                            const area = vc.component.areas.find(a => a.areaName === districtName);
+                            if (area) {
+                                vc.component.selectArea = area.areaCode;
+                                vc.component.selectAreaName = area.areaName;
+                                vc.component.formData.projectAddressDistrict = area.areaName;
+                                vc.component.formData.cityCode = area.areaCode;
+                            }
+                        }
+
+                        // 濡傛灉杩樻病鏈夊畬鏁村尮閰嶅埌鍖猴紝骞朵笖鏈秴杩囬噸璇曟鏁帮紝鍒欑户缁噸璇�
+                        if ((!vc.component.selectArea || !vc.component.formData.cityCode) && retry < maxRetry) {
+                            retry++;
+                            setTimeout(matchAreaByName, 100);
+                        }
+                    };
+                    matchAreaByName();
                 }
-                // 琛ラ綈鍚嶇О锛堢敤浜庢彁浜わ級
+                // 琛ラ綈鍚嶇О锛堢敤浜庢彁浜わ紝闃叉鎺ュ彛鏈夊�间絾涓婇潰鏈鐩栵級
                 vc.component.formData.projectAddressProvince = detail.projectAddressProvince || vc.component.formData.projectAddressProvince;
                 vc.component.formData.projectAddressCity = detail.projectAddressCity || vc.component.formData.projectAddressCity;
                 vc.component.formData.projectAddressDistrict = detail.projectAddressDistrict || vc.component.formData.projectAddressDistrict;
@@ -399,11 +453,11 @@
                     return fallback;
                 };
                 return {
-                    communityId: info.communityId || info.communityId || '',
+                    communityId: info.communityId || '',
                     newBId: info.newBId || '',
                     feePrice: info.feePrice || '',
-                    projectAddressProvince: info.projectAddressProvince || info.provinceName || '',
-                    projectAddressCity: info.projectAddressCity || info.cityName || '',
+                    projectAddressProvince: info.projectAddressProvince || '',
+                    projectAddressCity: info.projectAddressCity || '',
                     projectAddressDistrict: info.projectAddressDistrict || info.areaName || '',
                     projectAddressTown: info.projectAddressTown || '',
                     projectAddressRoad: info.projectAddressRoad || '',
@@ -456,7 +510,7 @@
                     groundNonMotorVehicleArea: info.groundNonMotorVehicleArea || info.nonElectricCarGroundArea || '',
                     undergroundNonMotorVehicleArea: info.undergroundNonMotorVehicleArea || info.nonElectricCarUndergroundArea || '',
                     clubhouseArea: info.clubhouseArea || info.clubArea || '',
-                    hasDecorationRubbishPoint: toBoolString(info.hasDecorationRubbishPoint, info.garbageFixed ? 'true' : 'false'),
+                    hasDecorationRubbishPoint: info.hasDecorationRubbishPoint === '鏄�' || info.garbageFixed == 1 ? '鏄�' : '鍚�',
                     securityEntranceCount: info.securityEntranceCount || info.gateGuardTotal || '',
                     elevatorCount: info.elevatorCount || info.elevatorTotal || '',
                     elevatorType: info.elevatorType || '',
@@ -626,18 +680,19 @@
                         submitData[field] = Number(submitData[field]);
                     }
                 });
-                // 纭繚Integer瀛楁涓烘暣鏁扮被鍨�
+                // 纭繚Integer瀛楁涓烘暣鏁扮被鍨嬶紙浠呯敤浜庨渶瑕佷紶 0/1 鐨勫竷灏斿瓧娈碉級
                 const normalizeBoolToNumber = function(val) {
-                    if (val === true || val === 'true' || val === 1 || val === '1') {
+                    if (val === true || val === 'true' || val === 1 || val === '1' || val === '鏄�') {
                         return 1;
                     }
-                    if (val === false || val === 'false' || val === 0 || val === '0') {
+                    if (val === false || val === 'false' || val === 0 || val === '0' || val === '鍚�') {
                         return 0;
                     }
                     return val;
                 };
+                // 涓婂矖璇佷粛鐒舵寜 0/1 鎻愪氦
                 submitData.hasManagerCertificate = normalizeBoolToNumber(submitData.hasManagerCertificate);
-                submitData.hasDecorationRubbishPoint = normalizeBoolToNumber(submitData.hasDecorationRubbishPoint);
+                // hasDecorationRubbishPoint 淇濇寔涓衡�滄槸 / 鍚︹�濓紝鐩存帴闅忚〃鍗曟彁浜�
                 // 鎻愪氦鏁版嵁
                 vc.http.apiPost(
                     '/community.updateCommunity',
diff --git a/public/pages/property/costDetail/costDetail.html b/public/pages/property/costDetail/costDetail.html
index 94a61ef..ae94c64 100644
--- a/public/pages/property/costDetail/costDetail.html
+++ b/public/pages/property/costDetail/costDetail.html
@@ -1,132 +1,115 @@
-<div class="container">
+<div class="cost-detail-container">
     <h2>璐圭敤鏄庣粏琛�</h2>
-
+    
     <!-- 鎼滅储鏍� -->
     <div class="search-bar">
         <div>
-            <label>鏃ユ湡</label>
-            <input type="datetime-local" value="2023-08-08T12:12:12">
+            <label>鏃ユ湡锛�</label>
+            <input type="text" class="form-control queryDate" placeholder="璇烽�夋嫨鏃ユ湡" v-model="costDetailInfo.conditions.date" />
         </div>
         <div>
-            <label>灏忓尯</label>
-            <select>
-                <option>楸煎鑺卞洯A鍖�</option>
+            <label>灏忓尯锛�</label>
+            <select class="form-control" v-model="costDetailInfo.conditions.communityName" style="text-align: center;line-height: 0px;">
+                <option value="">璇烽�夋嫨</option>
+                <option value="楸煎鑺卞洯A鍖�">楸煎鑺卞洯A鍖�</option>
             </select>
         </div>
         <div>
-            <label>灏忓尯缂栫爜</label>
-            <input type="text" placeholder="璇疯緭鍏�">
+            <label>灏忓尯缂栫爜锛�</label>
+            <input type="text" class="form-control" placeholder="璇疯緭鍏�" v-model="costDetailInfo.conditions.communityCode" />
         </div>
-        <button>鏌ヨ</button>
-        <button>閲嶇疆</button>
-        <div style="margin-left: auto;">
-            <button class="add-btn">娣诲姞</button>
-            <button class="import-btn">璐圭敤瀵煎叆</button>
+        <button type="button" class="query-btn" v-on:click="_queryCostDetails()" style="line-height: 0px;">鏌ヨ</button>
+        <button type="button" class="reset-btn" v-on:click="_resetQuery()" style="line-height: 0px;">閲嶇疆</button>
+        <div class="action-buttons">
+            <button type="button" class="add-btn" v-on:click="_addCostDetail()" style="line-height: 0px;">
+                娣诲姞
+            </button>
+            <button type="button" class="import-btn" v-on:click="_importCostDetail()" style="line-height: 0px;">璐圭敤瀵煎叆</button>
         </div>
     </div>
 
     <!-- 璐圭敤琛ㄦ牸 -->
     <table>
         <thead>
-            <tr>
+            <tr id="costDetailTableHead">
                 <th>搴忓彿</th>
                 <th>娴佽浆缂栫爜</th>
                 <th>灏忓尯缂栫爜</th>
                 <th>灏忓尯鍚嶇О</th>
                 <th>鏃ユ湡</th>
                 <th>宸ョ▼鍐呭</th>
-                <th>绠$悊澶勯噾棰�(鍏�)</th>
+                <th>绠$悊澶勯噾棰� (鍏�)</th>
                 <th>鏄惁鐩栫珷</th>
-                <th>涓氬浼氶噾棰�(鍏�)</th>
-                <th>瀹′环閲戦(鍏�)</th>
+                <th>涓氬浼氶噾棰� (鍏�)</th>
+                <th>瀹′环閲戦 (鍏�)</th>
                 <th>鏄惁鐩栫珷</th>
                 <th>绛炬姤閮ㄩ棬</th>
-                <th>鍩洪噾绫诲瀷涓�绾у垎绫�</th>
-                <th>鍩洪噾绫诲瀷浜岀骇鍒嗙被</th>
+                <th>鍩洪噾绫诲瀷-涓�绾у垎绫�</th>
+                <th>鍩洪噾绫诲瀷-浜岀骇鍒嗙被</th>
                 <th>骞�/鍏ㄤ綋</th>
                 <th>缁翠慨绫诲瀷</th>
                 <th>鎿嶄綔</th>
             </tr>
         </thead>
         <tbody>
-            <tr>
-                <td>1</td>
-                <td>118652</td>
-                <td>A-15-1-6</td>
-                <td>楸煎鑺卞洯</td>
-                <td>2025-10-10</td>
-                <td>璺潰閬撶墮銆佸闈㈠ぇ鐞嗙煶</td>
-                <td>50000.00</td>
-                <td>鏄�</td>
-                <td>50000.00</td>
-                <td>50000.00</td>
-                <td>鏄�</td>
-                <td>宸ョ▼閮�</td>
-                <td>缁翠慨鍩洪噾</td>
-                <td>闃叉按</td>
-                <td>鍏ㄤ綋</td>
-                <td>閬撹矾</td>
-                <td><a href="#">鏇村</a> <a href="#">缂栬緫</a> <a href="#">鍒犻櫎</a></td>
+            <tr v-for="(item, index) in costDetailInfo.costDetails">
+                <td>{{(costDetailInfo.paginationInfo.currentPage - 1) * costDetailInfo.paginationInfo.rows + index + 1}}</td>
+                <td>{{item.flowCode || '-'}}</td>
+                <td>{{item.communityCode || '-'}}</td>
+                <td>{{item.communityName || '-'}}</td>
+                <td>{{item.date || '-'}}</td>
+                <td>{{item.projectContent || '-'}}</td>
+                <td>{{item.managementAmount || '-'}}</td>
+                <td>{{item.managementStamped == '1' ? '鏄�' : '鍚�'}}</td>
+                <td>{{item.committeeAmount || '-'}}</td>
+                <td>{{item.appraisalAmount || '-'}}</td>
+                <td>{{item.committeeStamped == '1' ? '鏄�' : '鍚�'}}</td>
+                <td>{{item.approvalDepartment || '-'}}</td>
+                <td>{{item.fundTypeLevel1 || '-'}}</td>
+                <td>{{item.fundTypeLevel2 || '-'}}</td>
+                <td>{{item.buildingType || '-'}}</td>
+                <td>{{item.maintenanceType || '-'}}</td>
+                <td>
+                    <a href="javascript:void(0)" v-on:click="_viewMore(item)">鏇村</a>
+                    <a href="javascript:void(0)" v-on:click="_editCostDetail(item)">缂栬緫</a>
+                    <a href="javascript:void(0)" v-on:click="_deleteCostDetail(item)">鍒犻櫎</a>
+                </td>
             </tr>
-            <tr>
-                <td>2</td>
-                <td>118407</td>
-                <td>A-15-1-5</td>
-                <td>楸煎鑺卞洯</td>
-                <td>2025-10-10</td>
-                <td>璺潰閬撶墮銆佸闈㈠ぇ鐞嗙煶</td>
-                <td>50000.00</td>
-                <td>鏄�</td>
-                <td>50000.00</td>
-                <td>50000.00</td>
-                <td>鏄�</td>
-                <td>宸ョ▼閮�</td>
-                <td>缁翠慨鍩洪噾</td>
-                <td>鎴垮眿缁翠慨</td>
-                <td>鍏ㄤ綋</td>
-                <td>閬撹矾</td>
-                <td><a href="#">鏇村</a> <a href="#">缂栬緫</a> <a href="#">鍒犻櫎</a></td>
+            <tr v-if="costDetailInfo.costDetails.length == 0">
+                <td colspan="17" style="text-align: center; color: #999;">鏆傛棤鏁版嵁</td>
             </tr>
-            <tr>
-                <td>3</td>
-                <td>118652</td>
-                <td>A-15-1-4</td>
-                <td>楸煎鑺卞洯</td>
-                <td>2025-10-10</td>
-                <td>璺潰閬撶墮銆佸闈㈠ぇ鐞嗙煶</td>
-                <td>50000.00</td>
-                <td>鍚�</td>
-                <td>50000.00</td>
-                <td>50000.00</td>
-                <td>鍚�</td>
-                <td>宸ョ▼閮�</td>
-                <td>鍏叡鏀剁泭閲�</td>
-                <td>绯荤粺澶�</td>
-                <td>鍏ㄤ綋</td>
-                <td>閬撹矾</td>
-                <td><a href="#">鏇村</a> <a href="#">缂栬緫</a> <a href="#">鍒犻櫎</a></td>
-            </tr>
-            <!-- 鍙户缁坊鍔犲叾浠栬锛堢ず渚嬩粎灞曠ず鍓�3琛岋級 -->
         </tbody>
     </table>
 
     <!-- 鍒嗛〉鏍� -->
     <div class="pagination">
-        <span>鍏�100鏉¤褰�</span>
-        <div style="margin-left: auto;">
-            <span>45/椤�</span>
-            <button>&lt;</button>
-            <button>1</button>
-            <button class="active">2</button>
-            <button>3</button>
-            <button>4</button>
-            <button>5</button>
-            <span>...</span>
-            <button>99</button>
-            <button>&gt;</button>
-            <span>璺宠浆鑷�</span>
-            <input type="text" value="2">
-            <span>椤�</span>
+        <span class="pagination-info">鍏眥{costDetailInfo.paginationInfo.dataCount || 0}}鏉¤褰�</span>
+        <div class="pagination-controls">
+            <select class="page-size-select" v-model="costDetailInfo.paginationInfo.rows" v-on:change="_changePageSize()">
+                <option value="15">15</option>
+                <option value="30">30</option>
+                <option value="50">50</option>
+                <option value="100">100</option>
+            </select>
+            <span class="page-size-label">/椤�</span>
+            <button class="page-btn" v-on:click="_goToPage(costDetailInfo.paginationInfo.currentPage - 1)" 
+                    :disabled="costDetailInfo.paginationInfo.currentPage == 1">鈥�</button>
+            <button class="page-btn" v-for="page in costDetailInfo.paginationInfo.pageList" 
+                    :class="{active: page.currentPage}" 
+                    v-on:click="_goToPage(page.page)"
+                    v-if="page.pageView != '...'">
+                {{page.pageView}}
+            </button>
+            <span v-for="page in costDetailInfo.paginationInfo.pageList" 
+                  v-if="page.pageView == '...'"
+                  class="page-ellipsis">...</span>
+            <button class="page-btn" v-on:click="_goToPage(costDetailInfo.paginationInfo.currentPage + 1)" 
+                    :disabled="costDetailInfo.paginationInfo.currentPage == costDetailInfo.paginationInfo.total">鈥�</button>
+            <span class="jump-label">璺宠浆鑷�</span>
+            <input type="number" class="jump-input" v-model="costDetailInfo.jumpPage" min="1" :max="costDetailInfo.paginationInfo.total" />
+            <span class="page-label">椤�</span>
+            <button class="page-btn" v-on:click="_jumpToPage()">纭畾</button>
         </div>
     </div>
-</div>
\ No newline at end of file
+</div>
+
diff --git a/public/pages/property/costDetail/costDetail.js b/public/pages/property/costDetail/costDetail.js
index e69de29..978e309 100644
--- a/public/pages/property/costDetail/costDetail.js
+++ b/public/pages/property/costDetail/costDetail.js
@@ -0,0 +1,244 @@
+/**
+ 璐圭敤鏄庣粏琛�
+ **/
+(function (vc) {
+    var DEFAULT_PAGE = 1;
+    var DEFAULT_ROWS = 15;
+    var $that = {};
+    vc.extends({
+        data: {
+            costDetailInfo: {
+                costDetails: [],
+                paginationInfo: {
+                    currentPage: 1,
+                    rows: DEFAULT_ROWS,
+                    total: 1,
+                    dataCount: 0,
+                    pageList: []
+                },
+                jumpPage: 1,
+                conditions: {
+                    date: '',
+                    communityName: '',
+                    communityCode: ''
+                }
+            }
+        },
+        _initMethod: function () {
+            $that = vc.component;
+            $that._injectStyles();
+            $that._listCostDetails(DEFAULT_PAGE, DEFAULT_ROWS);
+            $that._initDate();
+        },
+        _initEvent: function () {
+            vc.on('costDetail', 'listCostDetail', function (_param) {
+                $that._listCostDetails(DEFAULT_PAGE, DEFAULT_ROWS);
+            });
+        },
+        methods: {
+            _initDate: function () {
+                $(".queryDate").datetimepicker({
+                    language: 'zh-CN',
+                    fontAwesome: 'fa',
+                    format: 'yyyy-mm-dd hh:ii:ss',
+                    initTime: true,
+                    initialDate: new Date(),
+                    autoClose: 1,
+                    todayBtn: true
+                });
+                $('.queryDate').datetimepicker()
+                    .on('changeDate', function (ev) {
+                        var value = $(".queryDate").val();
+                        $that.costDetailInfo.conditions.date = value;
+                    });
+                //闃叉澶氭鐐瑰嚮鏃堕棿鎻掍欢澶卞幓鐒︾偣
+                var queryDateElements = document.getElementsByClassName('form-control queryDate');
+                if (queryDateElements.length > 0) {
+                    queryDateElements[0].addEventListener('click', function(e) {
+                        e.currentTarget.blur();
+                    });
+                }
+            },
+            _listCostDetails: function (_page, _rows) {
+                $that.costDetailInfo.conditions.page = _page;
+                $that.costDetailInfo.conditions.row = _rows;
+                $that.costDetailInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
+                var param = {
+                    params: $that.costDetailInfo.conditions
+                };
+                //鍙戦�乬et璇锋眰
+                vc.http.apiGet('/costDetail/queryCostDetail',
+                    param,
+                    function (json, res) {
+                        var _json = JSON.parse(json);
+                        $that.costDetailInfo.paginationInfo.dataCount = _json.total || 0;
+                        $that.costDetailInfo.paginationInfo.total = _json.records || 1;
+                        $that.costDetailInfo.costDetails = _json.data || [];
+                        $that.costDetailInfo.paginationInfo.currentPage = _page;
+                        $that._freshPageList();
+                    },
+                    function (errInfo, error) {
+                        console.log('璇锋眰澶辫触澶勭悊');
+                        $that.costDetailInfo.costDetails = [];
+                        $that.costDetailInfo.paginationInfo.dataCount = 0;
+                        $that.costDetailInfo.paginationInfo.total = 1;
+                        $that._freshPageList();
+                    }
+                );
+            },
+            _freshPageList: function () {
+                var currentPage = $that.costDetailInfo.paginationInfo.currentPage;
+                var total = $that.costDetailInfo.paginationInfo.total;
+                var pageList = [];
+                
+                if (total <= 7) {
+                    // 鎬婚〉鏁板皬浜庣瓑浜�7锛屾樉绀烘墍鏈夐〉鐮�
+                    for (var i = 1; i <= total; i++) {
+                        pageList.push({
+                            page: i,
+                            pageView: i,
+                            currentPage: i == currentPage
+                        });
+                    }
+                } else {
+                    // 鎬婚〉鏁板ぇ浜�7锛屾樉绀洪儴鍒嗛〉鐮�
+                    if (currentPage <= 4) {
+                        // 褰撳墠椤靛湪鍓�4椤�
+                        for (var i = 1; i <= 5; i++) {
+                            pageList.push({
+                                page: i,
+                                pageView: i,
+                                currentPage: i == currentPage
+                            });
+                        }
+                        pageList.push({
+                            page: 0,
+                            pageView: '...',
+                            currentPage: false
+                        });
+                        pageList.push({
+                            page: total,
+                            pageView: total,
+                            currentPage: false
+                        });
+                    } else if (currentPage >= total - 3) {
+                        // 褰撳墠椤靛湪鍚�4椤�
+                        pageList.push({
+                            page: 1,
+                            pageView: 1,
+                            currentPage: false
+                        });
+                        pageList.push({
+                            page: 0,
+                            pageView: '...',
+                            currentPage: false
+                        });
+                        for (var i = total - 4; i <= total; i++) {
+                            pageList.push({
+                                page: i,
+                                pageView: i,
+                                currentPage: i == currentPage
+                            });
+                        }
+                    } else {
+                        // 褰撳墠椤靛湪涓棿
+                        pageList.push({
+                            page: 1,
+                            pageView: 1,
+                            currentPage: false
+                        });
+                        pageList.push({
+                            page: 0,
+                            pageView: '...',
+                            currentPage: false
+                        });
+                        for (var i = currentPage - 1; i <= currentPage + 1; i++) {
+                            pageList.push({
+                                page: i,
+                                pageView: i,
+                                currentPage: i == currentPage
+                            });
+                        }
+                        pageList.push({
+                            page: 0,
+                            pageView: '...',
+                            currentPage: false
+                        });
+                        pageList.push({
+                            page: total,
+                            pageView: total,
+                            currentPage: false
+                        });
+                    }
+                }
+                
+                $that.costDetailInfo.paginationInfo.pageList = pageList;
+            },
+            _queryCostDetails: function () {
+                $that._listCostDetails(DEFAULT_PAGE, $that.costDetailInfo.paginationInfo.rows);
+            },
+            _resetQuery: function () {
+                $that.costDetailInfo.conditions.date = '';
+                $that.costDetailInfo.conditions.communityName = '';
+                $that.costDetailInfo.conditions.communityCode = '';
+                $('.queryDate').val('');
+                $that._listCostDetails(DEFAULT_PAGE, $that.costDetailInfo.paginationInfo.rows);
+            },
+            _changePageSize: function () {
+                $that._listCostDetails(DEFAULT_PAGE, $that.costDetailInfo.paginationInfo.rows);
+            },
+            _goToPage: function (_page) {
+                if (!_page || _page < 1 || _page > $that.costDetailInfo.paginationInfo.total) {
+                    return;
+                }
+                $that._listCostDetails(_page, $that.costDetailInfo.paginationInfo.rows);
+            },
+            _jumpToPage: function () {
+                var page = parseInt($that.costDetailInfo.jumpPage);
+                if (isNaN(page) || page < 1) {
+                    page = 1;
+                }
+                if (page > $that.costDetailInfo.paginationInfo.total) {
+                    page = $that.costDetailInfo.paginationInfo.total;
+                }
+                $that._listCostDetails(page, $that.costDetailInfo.paginationInfo.rows);
+            },
+            _addCostDetail: function () {
+                // 璺宠浆鍒版坊鍔犻〉闈㈡垨鎵撳紑娣诲姞寮圭獥
+                vc.jumpToPage('/#/pages/property/costDetail/add');
+            },
+            _importCostDetail: function () {
+                // 鎵撳紑瀵煎叆寮圭獥鎴栬烦杞埌瀵煎叆椤甸潰
+                vc.toast('璐圭敤瀵煎叆鍔熻兘');
+            },
+            _viewMore: function (_item) {
+                // 鏌ョ湅璇︽儏
+                vc.jumpToPage('/#/pages/property/costDetail/detail?costDetailId=' + _item.costDetailId);
+            },
+            _editCostDetail: function (_item) {
+                // 缂栬緫
+                vc.jumpToPage('/#/pages/property/costDetail/edit?costDetailId=' + _item.costDetailId);
+            },
+            _deleteCostDetail: function (_item) {
+                vc.confirm('纭畾瑕佸垹闄よ繖鏉¤垂鐢ㄦ槑缁嗗悧锛�', function () {
+                    var param = {
+                        params: {
+                            costDetailId: _item.costDetailId
+                        }
+                    };
+                    vc.http.apiPost('/costDetail/deleteCostDetail',
+                        param,
+                        function (json, res) {
+                            vc.toast('鍒犻櫎鎴愬姛');
+                            $that._listCostDetails($that.costDetailInfo.paginationInfo.currentPage, $that.costDetailInfo.paginationInfo.rows);
+                        },
+                        function (errInfo, error) {
+                            vc.message(errInfo);
+                        }
+                    );
+                });
+            }
+        }
+    });
+})(window.vc);
+

--
Gitblit v1.8.0