From 0d22dac3090ad057a5470610a321c936cdf0d535 Mon Sep 17 00:00:00 2001
From: qx <1084500556@qq.com>
Date: 星期四, 10 四月 2025 16:47:40 +0800
Subject: [PATCH] Merge branch 'master' of http://101.42.27.146:5001/r/ltkj_peisweb_region

---
 src/views/system/package/index.vue |  358 +++++++++++++++-------------------------------------------
 1 files changed, 95 insertions(+), 263 deletions(-)

diff --git a/src/views/system/package/index.vue b/src/views/system/package/index.vue
index de2fd1b..020d483 100644
--- a/src/views/system/package/index.vue
+++ b/src/views/system/package/index.vue
@@ -9,8 +9,7 @@
       </el-form-item>
       <el-form-item label="浣撴绫诲埆" prop="tjCategory">
         <el-select v-model="queryParams.tjCategory" placeholder="璇烽�夋嫨鐘舵��" style="width: 200px" filterable clearable>
-          <el-option v-for="dict in dict.type.dict_tjtype" :key="dict.id" :label="dict.label"
-            :value="dict.value"></el-option>  
+          <el-option v-for="dict in dict.type.dict_tjtype" :key="dict.id" :label="dict.label" :value="dict.value"></el-option>  
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -21,34 +20,25 @@
 
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
-        <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"
-          v-hasPermi="['system:package:add']">鏂板</el-button>
+        <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:package:add']">鏂板</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button type="primary" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUp"
-          v-hasPermi="['system:package:edit']">淇敼</el-button>
+        <el-button type="primary" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUp" v-hasPermi="['system:package:edit']">淇敼</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button type="primary" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
-          v-hasPermi="['system:package:remove']">鍒犻櫎</el-button>
+        <el-button type="primary" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:package:remove']">鍒犻櫎</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport"
-          v-hasPermi="['system:package:export']">瀵煎嚭</el-button>
+        <el-button type="primary" icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['system:package:export']">瀵煎嚭</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <!-- 
-    element-loading-background="rgba(0, 0, 0, 0.1)"
-    element-loading-spinner="el-icon-loading"
-        element-loading-text="姝e湪鍔犺浇涓�..." -->
     <template>
-      <el-table v-loading="loading" style="width: 100%" :data="packageList" @selection-change="handleSelectionChange"
-        border>
+      <el-table v-loading="loading" style="width: 100%" :data="packageList" @selection-change="handleSelectionChange" border>
+        <!-- 琛ㄦ牸鍒椾繚鎸佷笉鍙� -->
         <el-table-column fixed type="selection" width="40" align="center" :show-overflow-tooltip="true" />
         <el-table-column label="搴忓彿" align="center" width="50" prop="newID" fixed />
-        <!-- <el-table-column label="缂栧彿" align="center" prop="pacId" /> -->
         <el-table-column label="浣撴绫诲埆" width="100px" align="center" prop="categoryNames" fixed>
           <template slot-scope="scope">
             <dict-tag :options="dict.type.dict_tjtype" :value="scope.row.tjCategory" />
@@ -57,78 +47,38 @@
         <el-table-column label="濂楅鍚嶇О" align="center" prop="pacName" width="150px" fixed />
         <el-table-column label="鍘熶环" width="80px" align="center" prop="price" fixed></el-table-column>
         <el-table-column label="鎶樻墸" width="80px" align="center" prop="limits" fixed></el-table-column>
-        <el-table-column label="鐜颁环" width="80px" align="center" prop="newPrice" fixed>
-        </el-table-column>
-        <el-table-column label="鍗曢」鍒楄〃" align="center" prop="allProName" width="1200px">
-        </el-table-column>
-        <!-- <el-table-column
-          label="椤圭洰鏄庣粏"
-          align="center"
-          prop="allSonName"
-          :show-overflow-tooltip="true"
-        > 
-        </el-table-column>-->
+        <el-table-column label="鐜颁环" width="80px" align="center" prop="newPrice" fixed></el-table-column>
+        <el-table-column label="鍗曢」鍒楄〃" align="center" prop="allProName" width="1200px"></el-table-column>
         <el-table-column label="濂楅鎻忚堪" align="center" :show-overflow-tooltip="true" width="120px">
           <template slot-scope="scope">
             <div class="showInline">{{ scope.row.pacRemark }}</div>
           </template>
         </el-table-column>
-        <!-- <el-table-column
-          label="鍥剧墖"
-          align="center"
-          prop="pacPhone"
-          width="100"
-          :show-overflow-tooltip="true"
-        >
-          <template slot-scope="scope">
-            <image-preview :src="scope.row.pacPhone" :width="50" :height="50" />
-          </template>
-        </el-table-column> -->
-
         <el-table-column label="鍏抽敭瀛�" width="110px" align="center" prop="keyNames"></el-table-column>
         <el-table-column label="鏄惁涓婃灦" width="94px" align="center" prop="isOnSale">
           <template slot-scope="scope">
             <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isOnSale" />
           </template>
         </el-table-column>
-        <!-- <el-table-column
-          label="璇︾粏浠嬬粛"
-          :show-overflow-tooltip="true"
-          width="100px"
-          align="center"
-          prop="detail"
-        ></el-table-column> -->
         <el-table-column label="鎺掑簭" width="50px" align="center" prop="sort"></el-table-column>
         <el-table-column label="灏忕▼搴忎环鏍�" width="90px" align="center" prop="retailPrice"></el-table-column>
-        <!-- <el-table-column
-          label="鍘熶环"
-          width="90px"
-          align="center"
-          prop="counterPrice"
-        ></el-table-column> -->
         <el-table-column label="宸插敭鏁伴噺" width="90px" align="center" prop="saleNum"></el-table-column>
         <el-table-column label="鐘舵��" align="center" prop="pacStatus" fixed="right" width="100px">
           <template slot-scope="scope">
-            <el-switch v-model="scope.row.pacStatus" active-value="0" inactive-value="1"
-              @change="handleStatusChange(scope.row)"></el-switch>
+            <el-switch v-model="scope.row.pacStatus" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)"></el-switch>
           </template>
         </el-table-column>
         <el-table-column label="鎿嶄綔" align="center" width="80px" fixed="right" class-name="small-padding fixed-width">
           <template slot-scope="scope">
-            <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
-              v-hasPermi="['system:package:edit']" title="淇敼"></el-button>
-            <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
-              v-hasPermi="['system:package:remove']" title="鍒犻櫎"></el-button>
-            <!-- <el-button size="mini" type="text" icon="el-icon-circle-check" @click="handleSeach(scope.row)"
-              v-hasPermi="['system:package:Seach']" title="濂楅璇︽儏"></el-button> -->
+            <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:package:edit']" title="淇敼"></el-button>
+            <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:package:remove']" title="鍒犻櫎"></el-button>
           </template>
         </el-table-column>
       </el-table>
 
       <div class="pag">
         <div class="pag1">
-          <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
-            :limit.sync="queryParams.pageSize" @pagination="getList" />
+          <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
         </div>
       </div>
     </template>
@@ -136,60 +86,26 @@
     <!-- 淇敼浣撴濂楅瀵硅瘽妗� -->
     <el-dialog :title="title" :visible.sync="open" width="1400px" append-to-body :close-on-click-modal="false">
       <el-form ref="form" :model="form" :rules="rules" label-width="100px" :inline="true">
-        <!-- <div class="dialo">
-        <div class="dialo1"> -->
+        <!-- 琛ㄥ崟鍐呭淇濇寔涓嶅彉 -->
         <el-form-item label="濂楅鍚嶇О" prop="pacName">
-          <span slot="label" style="display: inline-block; border-bottom: 2px solid blue" @click="handlePackage">
-            濂楅鍚嶇О
-          </span>
+          <span slot="label" style="display: inline-block; border-bottom: 2px solid blue" @click="handlePackage">濂楅鍚嶇О</span>
           <el-input v-model="form.pacName" placeholder="璇疯緭鍏ュ椁愬悕绉�" style="width: 150px" />
         </el-form-item>
         <el-form-item label="濂楅鐘舵��" prop="pacStatus">
-          <!-- <el-radio-group v-model="form.pacStatus">
-              <el-radio :label="0">鍚敤</el-radio>
-              <el-radio :label="1">鍋滅敤</el-radio>
-            </el-radio-group> -->
           <el-select v-model="form.pacStatus" placeholder="璇烽�夋嫨鐘舵��" style="width: 150px" filterable clearable>
-            <el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label"
-              :value="dict.value"></el-option>
+            <el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
           </el-select>
         </el-form-item>
-
-        <!--  <el-form-item label="濂楅绫荤洰" prop="categoryId">
-          <el-select
-            v-model="form.categoryId"
-            placeholder="璇烽�夋嫨濂楅绫荤洰"
-            style="width: 150px"
-            @change="shangpin"
-            filterable
-            clearablez
-          >
-            <el-option
-              v-for="item in categoryList"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id"
-            ></el-option>
-          </el-select>
-        </el-form-item> -->
         <el-form-item label="浣撴绫诲埆" prop="tjCategory">
           <el-select v-model="form.tjCategory" placeholder="璇烽�夋嫨浣撴绫诲埆" style="width: 150px" filterable clearable>
-            <el-option v-for="dict in dict.type.dict_tjtype" :key="dict.value" :label="dict.label"
-              :value="dict.value"></el-option>
+            <el-option v-for="dict in dict.type.dict_tjtype" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
           </el-select>
         </el-form-item>
-
         <el-form-item label="鏄惁涓婃灦" prop="isOnSale">
-          <!-- <el-radio-group v-model="form.pacStatus">
-              <el-radio :label="0">鍚敤</el-radio>
-              <el-radio :label="1">鍋滅敤</el-radio>
-            </el-radio-group> -->
           <el-select v-model="form.isOnSale" placeholder="璇烽�夋嫨鏄惁涓婃灦" style="width: 140px" filterable clearable>
-            <el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label"
-              :value="dict.value"></el-option>
+            <el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
           </el-select>
         </el-form-item>
-
         <el-form-item label="鎺掑簭" prop="sort">
           <el-input v-model="form.sort" placeholder="璇疯緭鍏ユ帓搴�" style="width: 150px" />
         </el-form-item>
@@ -200,169 +116,79 @@
           <el-input v-model="pics" placeholder="璇疯緭鍏ュ師浠�" style="width: 150px" />
         </el-form-item>
         <el-form-item label="鎶樻墸">
-          <el-input-number style="width: 150px" v-model="youhui" :precision="2" :step="0.1" :max="10" :min="0.1"
-          @change="debounceNumberChange" :debounce="3000"></el-input-number>
+          <el-input-number style="width: 150px" v-model="youhui" :precision="2" :step="0.1" :max="10" :min="0.1" @change="debounceNumberChange" :debounce="3000"></el-input-number>
         </el-form-item>
-
         <el-form-item label="鐜颁环" prop="xianprice">
-          <el-input v-model="form.xianprice" placeholder="鐜颁环" clearable style="width: 140px" @input="changeXianjia"
-            @blur="numberChangeXianPrice(youhui, youhui)" type="number" :debounce="3000" min="0"/>
+          <el-input v-model="form.xianprice" placeholder="鐜颁环" clearable style="width: 140px" @input="changeXianjia" @blur="numberChangeXianPrice(youhui, youhui)" type="number" :debounce="3000" min="0"/>
         </el-form-item>
         <el-form-item label="鍏抽敭瀛�" prop="keywords">
-          <el-select multiple v-model="form.keywords" placeholder="璇烽�夋嫨鍏抽敭瀛�" style="width: 160px" @change="sel" filterable
-            clearable>
+          <el-select multiple v-model="form.keywords" placeholder="璇烽�夋嫨鍏抽敭瀛�" style="width: 160px" @change="sel" filterable clearable>
             <el-option v-for="item in keywordList" :key="item.id" :label="item.keyword" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
-
         <div v-if="!isCollapsed" style="display: flex">
           <div>
             <el-form-item label="濂楅鎻忚堪" prop="pacRemark">
-              <el-input type="textarea" v-model="form.pacRemark" placeholder="璇疯緭鍏ュ椁愭弿杩�" style="width: 670px"
-                rows="2"></el-input>
+              <el-input type="textarea" v-model="form.pacRemark" placeholder="璇疯緭鍏ュ椁愭弿杩�" style="width: 670px" rows="2"></el-input>
             </el-form-item>
             <el-form-item label="璇︾粏浠嬬粛" prop="detail">
-              <!-- <el-input
-            v-model="form.detail"
-            placeholder="璇疯緭鍏ヨ缁嗕粙缁�"
-            style="width: 200px"
-          /> -->
               <editor v-model="form.detail" :min-height="192" style="width: 670px" />
             </el-form-item>
           </div>
-          <!-- </div> -->
           <div class="dialo2">
             <el-form-item label="鍥剧墖">
               <image-upload v-model="form.pacPhone" />
             </el-form-item>
           </div>
-          <!-- </div> -->
         </div>
       </el-form>
-      <el-button type="primary" plain size="mini" @click="toggleCollapse">{{
-        isCollapsed ? "灞曞紑" : "鏀惰捣"
-      }}</el-button>
-      <!-- <el-button type="primary" plain size="mini" icon="el-icon-plus" @click="addmembers()">鏂板鍗曢」</el-button>
-      <el-table v-loading="loading" :data="form.tjProjectList" @selection-change="handleSelectionChange" border
-        max-height="275" style="margin: 10px 0">
-        <el-table-column label="搴忓彿" align="center" type="index" />
-        <el-table-column label="椤圭洰鍚嶇О" align="center" prop="proName" width="180px">
-          <template slot-scope="scope">
-            <el-select filterable v-model="scope.row.proName" placeholder="璇烽�夋嫨椤圭洰鍚嶇О" @change="getSelectValue">
-              <el-option v-for="(item, index) in allList" :key="index" :label="item.proName" :value="item.proName">
-              </el-option>
-            </el-select>
-          </template>
-        </el-table-column>
-        <el-table-column label="椤圭洰鏄庣粏" align="center" prop="allSonProName" width="400px" :show-overflow-tooltip="true">
-        </el-table-column>
-        <el-table-column label="鍘熶环(鍏�)" align="center" prop="proPrice" width="80px" />
-        <el-table-column label="鐜颁环(鍏�)" align="center" prop="priceNow" width="80px">
-          <template slot-scope="scope">
-            <el-input v-model="scope.row.priceNow" autocomplete="off" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
-          </template>
-        </el-table-column>
-        <el-table-column label="鎿嶄綔" fixed="right" align="center" class-name="small-padding fixed-width">
-          <template slot-scope="scope">
-            <el-button size="mini" type="text" icon="el-icon-circle-plus-outline" @click="addmembers(scope.row)"
-              v-hasPermi="['system:package:edit']" title="鏂板琛�"></el-button>
-            <el-button size="mini" type="text" icon="el-icon-delete" @click.native.prevent="Delete(scope.$index)"
-              v-hasPermi="['hosp:consumables:remove']" title="鍒犻櫎"></el-button>
-          </template>
-        </el-table-column>
-      </el-table> -->
+      <el-button type="primary" plain size="mini" @click="toggleCollapse">{{ isCollapsed ? "灞曞紑" : "鏀惰捣" }}</el-button>
 
       <el-row style="display: flex; width: 1300px">
         <el-col>
-          <div style="text-align: center; margin-bottom: 10px; margin-top: 10px">
-            椤圭洰鍒楄〃
-          </div>
-          <el-input placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" @input="handleFilterInput" v-model="queryParams1.nr" clearable />
+          <div style="text-align: center; margin-bottom: 10px; margin-top: 10px">椤圭洰鍒楄〃</div>
+          <el-input placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" v-model="filterText" @input="debounceFilter" clearable />
           <div class="tab3" style="height: 365px">
-            <el-tree class="filter-tree" v-loading="loading" :data="Treedata" :props="defaultProps" show-checkbox
-              node-key="proId" @check-change="handleCurrentChecked" :default-checked-keys="checkedkey"
-              :filter-node-method="filterNode" ref="tree" :render-content="renderContent">
-            </el-tree>
-            <pagination small v-show="total1 > 0" :total="total1" :page.sync="queryParams1.page"
-              :limit.sync="queryParams1.pageSize" @pagination="getDataList" />
-          </div>
-        </el-col>
-        <!--  <el-col :span="6">
-          <div
-            style="text-align: center; margin-bottom: 10px; margin-top: 10px"
-          >
-            鏄庣粏椤圭洰鍒楄〃
-          </div>
-          <div class="tab3">
             <el-tree
               class="filter-tree"
               v-loading="loading"
-              :data="TreedataList"
-              node-key="proId"
+              :data="filteredTreeData"
               :props="defaultProps"
-              :filter-node-method="filterNode"
               show-checkbox
-              @check-change="handleCurrentChecked1"
-              :default-checked-keys="checkedListkey"
-              ref="trees"
+              node-key="proId"
+              @check-change="handleCurrentChecked"
+              :default-checked-keys="checkedkey"
+              ref="tree"
               :render-content="renderContent"
             >
             </el-tree>
+            <pagination 
+              small 
+              v-show="total1 > 0" 
+              :total="total1" 
+              :page.sync="queryParams1.page"
+              :limit.sync="queryParams1.pageSize" 
+              @pagination="getDataList" 
+            />
           </div>
-        </el-col> -->
+        </el-col>
         <el-col>
           <div class="grid-content bg-purple">
-            <div style="
-                text-align: center;
-                margin-bottom: 10px;
-                margin-top: 10px;
-                margin-left: 8%;
-              ">
-              宸查�夐」鐩垪琛�
-            </div>
-            <el-table :data="DataList" border style="width: 90%; margin-left: 20px" height="400"
-              :span-method="objectSpanMethod">
-              <el-table-column prop="proName" label="妫�鏌ラ」鐩�">
-              </el-table-column>
-
-              <el-table-column prop="priceOrd" label="鍘熶环" align="center" width="80px">
-              </el-table-column>
+            <div style="text-align: center; margin-bottom: 10px; margin-top: 10px; margin-left: 8%;">宸查�夐」鐩垪琛�</div>
+            <el-table :data="DataList" border style="width: 90%; margin-left: 20px" height="400" :span-method="objectSpanMethod">
+              <el-table-column prop="proName" label="妫�鏌ラ」鐩�"></el-table-column>
+              <el-table-column prop="priceOrd" label="鍘熶环" align="center" width="80px"></el-table-column>
               <el-table-column label="鎶樻墸" width="100px">
                 <template slot-scope="scope">
-                  <!-- 鍙緭鍏ョ函鏁板瓧鎶樻墸 -->
-                  <el-input v-model.number="scope.row.limits" @input="calculateDiscount(scope.row)" placeholder="杈撳叆鎶樻墸"
-                    size="small" type="number" min="0" step="0.1" max="10">
-                  </el-input>
+                  <el-input v-model.number="scope.row.limits" @input="calculateDiscount(scope.row)" placeholder="杈撳叆鎶樻墸" size="small" type="number" min="0" step="0.1" max="10"></el-input>
                 </template>
               </el-table-column>
-              <el-table-column prop="priceNow" label="鐜颁环" width="80px" align="center">
-              </el-table-column>
+              <el-table-column prop="priceNow" label="鐜颁环" width="80px" align="center"></el-table-column>
               <el-table-column label="鎿嶄綔" align="center" width="80px">
                 <template slot-scope="scope">
-                  <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete1(scope.row)" title="鍒犻櫎">
-                  </el-button>
+                  <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete1(scope.row)" title="鍒犻櫎"></el-button>
                 </template>
               </el-table-column>
-              <!-- <el-table-column prop="proName" label="鏄庣粏椤圭洰" width="260px">
-              </el-table-column> -->
-
-              <!-- <el-table-column
-                label="鎿嶄綔"
-                align="center"
-                fixed="right"
-                class-name="small-padding fixed-width"
-                width="50px"
-              >
-                <template slot-scope="scope">
-                  <el-button
-                    size="mini"
-                    type="text"
-                    icon="el-icon-delete"
-                    @click="handleDeletes(scope.row)"
-                    title="鍒犻櫎"
-                  ></el-button>
-                </template> 
-              </el-table-column>-->
             </el-table>
             <h4 style="font-weight: 600;padding-left:20px">涓�鍏遍�変腑{{DataList.length}}椤癸紝鍚堣锛歿{ form.xianprice }}鍏�</h4>
           </div>
@@ -375,22 +201,6 @@
       </div>
     </el-dialog>
 
-    <!-- 濂楅璇︽儏 -->
-    <!-- <el-dialog :title="title" :visible.sync="Seachopen" width="500px" append-to-body>
-      <template>
-        <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">鍏ㄩ��</el-checkbox>
-        <div style="margin: 15px 0px; width: 60px"></div>
-        <el-checkbox-group v-model="newproName" @change="handleCheckedCitiesChange">
-          <el-checkbox style="margin: 15px 0px; width: 180px" v-for="item in allList" :label="item.proName"
-            :key="item.proId">{{ item.proName }}</el-checkbox>
-        </el-checkbox-group>
-
-        <div slot="footer" class="dialog-footer">
-          <el-button type="primary" @click="submitcheckbox">纭� 瀹�</el-button>
-          <el-button @click="cancel">鍙� 娑�</el-button>
-        </div>
-      </template>
-    </el-dialog> -->
     <Packages ref="aaa" @add="handleChanges" />
   </div>
 </template>
@@ -425,7 +235,10 @@
   data() {
     return {
       pics: 0,
-      filterText: "",
+      filterText: '',
+      filteredTreeData: [],
+      debounceTimer: null,
+      originalTreeData: [],
       DataList: [],
       list1: true,
       activeName: "1",
@@ -486,10 +299,15 @@
       },
       forms: {},
       youhui: 10,
-      debounceTimer: null,
       rules: {},
-      initializing: true, // 鍒濆鍖栨爣蹇�
+      initializing: true,
     };
+  },
+  watch: {
+    Treedata(newVal) {
+      this.originalTreeData = JSON.parse(JSON.stringify(newVal));
+      this.filteredTreeData = this.originalTreeData;
+    }
   },
   created() {
     this.getList();
@@ -497,11 +315,37 @@
     this.getCategory();
   },
   methods: {
+    debounceFilter() {
+      clearTimeout(this.debounceTimer);
+      this.debounceTimer = setTimeout(() => {
+        this.filterTree();
+      }, 600);
+    },
+    filterTree() {
+      if (!this.filterText) {
+        this.filteredTreeData = this.originalTreeData;
+        return;
+      }
+      const filterTextLower = this.filterText.toLowerCase();
+      this.filteredTreeData = this.filterNodes(this.originalTreeData, filterTextLower);
+    },
+    filterNodes(nodes, filterText) {
+      return nodes.filter(node => {
+        const matches = node.proName.toLowerCase().includes(filterText) || 
+                       (node.proEngName && node.proEngName.toLowerCase().includes(filterText));
+        if (matches) return true;
+        if (node.children && node.children.length) {
+          node.children = this.filterNodes(node.children, filterText);
+          return node.children.length > 0;
+        }
+        return false;
+      });
+    },
     debounceNumberChange(currentValue, oldValue) {
       clearTimeout(this.debounceTimer);
       this.debounceTimer = setTimeout(() => {
         this.numberChange(currentValue, oldValue);
-      }, 300);
+      }, 1000);
     },
     numberChange(currentValue, oldValue) {
       this.$confirm("纭畾淇敼鎵�鏈夊瓙椤圭殑鎶樻墸鍚楋紵", "鎻愮ず", {
@@ -547,10 +391,6 @@
     },
     toggleCollapse() {
       this.isCollapsed = !this.isCollapsed;
-    },
-    filterNode(value, data) {
-      if (!value) return true;
-      return data.proName.indexOf(value) !== -1 || data.proEngName.indexOf(value) !== -1;
     },
     getList() {
       this.loading = true;
@@ -607,7 +447,9 @@
         counterPrice: null,
         limits: 10,
       };
-      this.initializing = true; 
+      this.filterText = '';
+      this.filteredTreeData = this.originalTreeData;
+      this.initializing = true;
       this.resetForm("form");
     },
     handleQuery() {
@@ -648,6 +490,7 @@
       this.queryParams1.page = 1;
       this.checkedListkey = [];
       this.checkedNodes = [];
+      this.filterText = '';
       this.getDataList();
     },
     handleStatusChange(row) {
@@ -824,23 +667,20 @@
         this.Treedata = response.data.list;
         this.total1 = response.data.total;
         this.pics = this.DataList.reduce((total, item) => total + item.priceOrd, 0);
+        this.filteredTreeData = this.Treedata;
+        this.originalTreeData = JSON.parse(JSON.stringify(this.Treedata));
         this.$nextTick(() => {
           this.$refs.tree.setCheckedKeys(this.checkedNodes);
           this.initializing = false;
+          this.loading = false;
         });
-      });
-      this.loading = false;
-    },
-    handleFilterInput() {
-      this.queryParams1.page = 1;
-      this.getDataList();
-      this.$nextTick(() => {
-        this.$refs.tree.setCheckedKeys(this.checkedNodes);
+      }).catch(() => {
+        this.loading = false;
       });
     },
     handleCurrentChecked(data, checked, indeterminate) {
       if (this.initializing) {
-        return; // 鍒濆鍖栨椂涓嶅鐞�
+        return;
       }
       if (checked) {
         if (!this.DataList.some((item) => item.proId === data.proId)) {
@@ -999,6 +839,7 @@
   },
 };
 </script>
+
 <style>
 .el-tooltip__popper {
   max-width: 800px;
@@ -1034,13 +875,4 @@
   overflow-y: auto;
   border: 1px solid #d9d9d9;
 }
-
-/* .custom-tree-node {
-    flex: 1;
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    font-size: 14px;
-    padding-right: 8px;
-  } */
 </style>
\ No newline at end of file

--
Gitblit v1.8.0