From e0484caee313954ee31645c73cd97488c10349aa Mon Sep 17 00:00:00 2001 From: qx <1084500556@qq.com> Date: 星期二, 18 三月 2025 15:07:35 +0800 Subject: [PATCH] Merge branch 'master' of http://101.42.27.146:5001/r/ltkj_peisweb_region --- src/views/system/package/index.vue | 1382 +++++++++++++++++--------------------------------------- 1 files changed, 431 insertions(+), 951 deletions(-) diff --git a/src/views/system/package/index.vue b/src/views/system/package/index.vue index 8a46b9a..2a1edc4 100644 --- a/src/views/system/package/index.vue +++ b/src/views/system/package/index.vue @@ -1,106 +1,42 @@ <template> <div class="app-container"> - <el-form - :model="queryParams" - ref="queryForm" - size="small" - :inline="true" - v-show="showSearch" - label-width="68px" - > + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form-item label="濂楅鍚嶇О" prop="pacName"> - <el-input - v-model="queryParams.pacName" - placeholder="璇疯緭鍏ュ椁愬悕绉�" - clearable - @keyup.enter.native="handleQuery" - /> + <el-input v-model="queryParams.pacName" placeholder="璇疯緭鍏ュ椁愬悕绉�" clearable @keyup.enter.native="handleQuery" /> </el-form-item> <el-form-item label="濂楅鎻忚堪" prop="pacRemark"> - <el-input - v-model="queryParams.pacRemark" - placeholder="璇疯緭鍏ュ椁愭弿杩�" - clearable - @keyup.enter.native="handleQuery" - /> + <el-input v-model="queryParams.pacRemark" placeholder="璇疯緭鍏ュ椁愭弿杩�" clearable @keyup.enter.native="handleQuery" /> </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-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-select> </el-form-item> <el-form-item> - <el-button - type="primary" - icon="el-icon-search" - size="mini" - @click="handleQuery" - >鎼滅储</el-button - > - <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" - >閲嶇疆</el-button - > + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> </el-form-item> </el-form> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> - <el-button - type="primary" - 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="handleUpdate" - 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> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> <!-- @@ -108,77 +44,22 @@ 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-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 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 - > + <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" - /> + <dict-tag :options="dict.type.dict_tjtype" :value="scope.row.tjCategory" /> </template> </el-table-column> - <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 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 label="鍗曢」鍒楄〃" align="center" prop="allProName" width="1200px"> </el-table-column> <!-- <el-table-column label="椤圭洰鏄庣粏" @@ -187,12 +68,7 @@ :show-overflow-tooltip="true" > </el-table-column>--> - <el-table-column - label="濂楅鎻忚堪" - align="center" - :show-overflow-tooltip="true" - width="120px" - > + <el-table-column label="濂楅鎻忚堪" align="center" :show-overflow-tooltip="true" width="120px"> <template slot-scope="scope"> <div class="showInline">{{ scope.row.pacRemark }}</div> </template> @@ -209,23 +85,10 @@ </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" - > + <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" - /> + <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isOnSale" /> </template> </el-table-column> <!-- <el-table-column @@ -235,70 +98,27 @@ 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="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" - > + <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" - > + <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-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> --> </template> @@ -307,66 +127,31 @@ <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> <!-- 淇敼浣撴濂楅瀵硅瘽妗� --> - <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" - > + <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 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-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-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-select> </el-form-item> @@ -377,7 +162,7 @@ style="width: 150px" @change="shangpin" filterable - clearable + clearablez > <el-option v-for="item in categoryList" @@ -388,19 +173,9 @@ </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-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-select> </el-form-item> @@ -409,93 +184,42 @@ <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-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-select> </el-form-item> <el-form-item label="鎺掑簭" prop="sort"> - <el-input - v-model="form.sort" - placeholder="璇疯緭鍏ユ帓搴�" - style="width: 150px" - /> + <el-input v-model="form.sort" placeholder="璇疯緭鍏ユ帓搴�" style="width: 150px" /> </el-form-item> <el-form-item label="灏忕▼搴忎环鏍�" prop="retailPrice"> - <el-input - v-model="form.retailPrice" - placeholder="璇疯緭鍏ュ皬绋嬪簭浠锋牸" - style="width: 150px" - /> + <el-input v-model="form.retailPrice" placeholder="璇疯緭鍏ュ皬绋嬪簭浠锋牸" style="width: 150px" /> </el-form-item> <el-form-item label="鍘熶环" prop="pics"> - <el-input - v-model="pics" - placeholder="璇疯緭鍏ュ師浠�" - style="width: 150px" - /> + <el-input v-model="pics" placeholder="璇疯緭鍏ュ師浠�" style="width: 150px" /> </el-form-item> <el-form-item label="鎶樻墸"> - <el-input-number - ref="inputNumber" - style="width: 150px" - v-model="youhui" - :precision="2" - :step="0.1" - :max="10" - :min="1" - @change="numberChange" - ></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="浼樻儬浠�"> - <el-input - ref="inputName" - v-model="form.xianprice" - placeholder="浼樻儬浠�" - clearable - style="width: 140px" - /> + + <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"/> </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-option - v-for="item in keywordList" - :key="item.id" - :label="item.keyword" - :value="item.id" - ></el-option> + <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 @@ -503,11 +227,7 @@ placeholder="璇疯緭鍏ヨ缁嗕粙缁�" style="width: 200px" /> --> - <editor - v-model="form.detail" - :min-height="192" - style="width: 670px" - /> + <editor v-model="form.detail" :min-height="192" style="width: 670px" /> </el-form-item> </div> <!-- </div> --> @@ -554,40 +274,17 @@ <el-row style="display: flex; width: 1300px"> <el-col> - <div - style="text-align: center; margin-bottom: 10px; margin-top: 10px" - > + <div style="text-align: center; margin-bottom: 10px; margin-top: 10px"> 椤圭洰鍒楄〃 </div> - <el-input - placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" - @input="handleFilterInput" - v-model="queryParams1.nr" - clearable - /> + <el-input placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" @input="handleFilterInput" v-model="queryParams1.nr" 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 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" - /> + <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"> @@ -615,65 +312,34 @@ </el-col> --> <el-col> <div class="grid-content bg-purple"> - <div - style=" + <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 :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 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 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 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 size="mini" type="text" icon="el-icon-delete" @click="handleDelete1(scope.row)" title="鍒犻櫎"> </el-button> </template> </el-table-column> @@ -698,10 +364,7 @@ </template> </el-table-column>--> </el-table> - <!-- 娣诲姞椤圭洰鎬绘暟鏄剧ず --> - <div style="margin-top: 10px; text-align: right;font-size: 14px"> - 鍏辫 <span style="font-weight: bold;">{{ DataList.length }}</span> 鏉¢」鐩� - </div> + <h4 style="font-weight: 600;padding-left:20px">涓�鍏遍�変腑{{DataList.length}}椤癸紝鍚堣锛歿{ form.xianprice }}鍏�</h4> </div> </el-col> </el-row> @@ -736,12 +399,7 @@ import Packages from "@/components/Packages"; import { listCategory } from "@/api/mall/category"; import { listKeyword } from "@/api/mall/keyword"; -// import { getProParentIdDxList, getProSonDxList } from "@/api/system/tijian"; -import { - getProParentIdDxList, - search, - getProSonDxList, -} from "@/api/system/package"; +import { getProParentIdDxList, search, getProSonDxList } from "@/api/system/package"; import { getPacList, getPacInFo, @@ -758,22 +416,13 @@ saveOreditTjPacNew, } from "@/api/system/package"; import { Message } from "element-ui"; -import Big from "big.js"; +import Big from 'big.js'; + export default { name: "Package", dicts: ["sys_normal_disable", "sys_yes_no", "dict_tjtype"], components: { Packages }, data() { - let checkPhoneNum = (rule, value, callback) => { - let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/); - if (value == "" && value == undefined && !value) { - return callback(""); - } else if (value != undefined && value != "") { - return callback(); - } else if (!patter.test(value)) { - return callback(""); - } - }; return { pics: 0, filterText: "", @@ -792,48 +441,33 @@ children: [], label: "proName", }, - isCollapsed: true, // 榛樿涓烘姌鍙犵姸鎬� + isCollapsed: true, categoryList: [], keys: "", keywordList: [], dataListAll: [], - // 澶氶�夋 priceNow: "", checkAll: false, isIndeterminate: true, - // 閬僵灞� loading: false, radio: 3, - // 閫変腑鏁扮粍 ids: [], - // 闈炲崟涓鐢� single: true, - // 闈炲涓鐢� multiple: true, - // 鏄剧ず鎼滅储鏉′欢 showSearch: true, - // 浣撴濂楅琛ㄦ牸鏁版嵁 packageList: [], - // 濂楅閫変腑鐨勭埗椤� allpackageList: [], - // 宸查�� newproName: [], - // 鎵�鏈変綋妫�椤圭洰路 allList: [], treeList: [], - // 鎵�鏈夊椁愭暟鎹� - // allpackage:[], - // 寮瑰嚭灞傛爣棰� title: "", - // 鏄惁鏄剧ず寮瑰嚭灞� + lastXianPrice: 0, open: false, Seachopen: false, checkedNodes: [], pacId: "", - // 鎬绘潯鏁� total: 0, total1: 0, - // 鏌ヨ鍙傛暟 queryParams: { pageNum: 1, pageSize: 10, @@ -845,364 +479,29 @@ pageSize: 30, nr: "", }, - // 琛ㄥ崟鍙傛暟 form: { - xianprice: null, // 浼樻儬浠� - counterPrice: null, //鍘熶环 + xianprice: null, + counterPrice: null, limits: 10, }, forms: {}, youhui: 10, - // 琛ㄥ崟鏍¢獙 - rules: { - deleted: [ - { required: true, validator: checkPhoneNum, trigger: "blur" }, - ], - pacName: [ - { required: true, validator: checkPhoneNum, trigger: "blur" }, - ], - pacStatus: [ - { required: true, validator: checkPhoneNum, trigger: "change" }, - ], - // categoryId: [ - // { required: true, validator: checkPhoneNum, trigger: "change" }, - // ], - /* keywords: [ - { required: true, validator: checkPhoneNum, trigger: "change" }, - ], */ - isOnSale: [ - { required: true, validator: checkPhoneNum, trigger: "change" }, - ], - sort: [{ required: true, validator: checkPhoneNum, trigger: "blur" }], - retailPrice: [ - { required: true, validator: checkPhoneNum, trigger: "blur" }, - ], - counterPrice: [ - { required: true, validator: checkPhoneNum, trigger: "blur" }, - ], - tjCategory: [ - { required: true, validator: checkPhoneNum, trigger: "blur" }, - ], - }, + debounceTimer: null, + rules: {}, }; }, - // watch: { - // filterText(val) { - // this.$refs.tree.filter(val); - // }, - // }, - created() { this.getList(); this.getKeyword(); this.getCategory(); }, methods: { - toggleCollapse() { - this.isCollapsed = !this.isCollapsed; // 鐐瑰嚮鎸夐挳鏃跺垏鎹sCollapsed鐨勫�� + debounceNumberChange(currentValue, oldValue) { + clearTimeout(this.debounceTimer); + this.debounceTimer = setTimeout(() => { + this.numberChange(currentValue, oldValue); + }, 300); }, - filterNode(value, data) { - if (!value) return true; - // return data.proName.indexOf(value) !== -1; - if (data.proName.indexOf(value) !== -1) { - return data.proName.indexOf(value) !== -1; - } else { - return data.proEngName.indexOf(value) !== -1; - } - }, - /** 鏌ヨ浣撴濂楅鍒楄〃 */ - getList() { - this.loading = true; - getPacTjProjectList().then((response) => { - this.allList = response.data; - if (this.allList.proStatus === 0) { - this.allList.proStatus = "鍚敤"; - } else { - this.allList.proStatus = "鍋滅敤"; - } - this.loading = false; - }); - getPacList(this.queryParams).then((response) => { - response.rows.forEach((item, index) => { - item.newID = - (this.queryParams.pageNum - 1) * this.queryParams.pageSize + - index + - 1; - }); - this.total = response.total; - this.packageList = response.rows; - this.loading = false; - }); - }, - - /** 鏌ヨ鍏抽敭瀛楀垪琛� */ - getKeyword() { - this.loading = true; - listKeyword(this.queryParams).then((response) => { - this.keywordList = response.rows; - }); - }, - sel(val) { - let id = val; - this.keys = ""; - id.forEach((item) => { - this.keys += item + ","; - }); - }, - /** 鏌ヨ绫荤洰鍒楄〃 */ - getCategory() { - this.loading = true; - listCategory(this.queryParams).then((response) => { - this.categoryList = response.rows; - console.log(this.categoryList, 9988); - }); - }, - shangpin(vals) {}, - // 鍙栨秷鎸夐挳 - cancel() { - this.open = false; - this.Seachopen = false; - this.reset(); - }, - // 琛ㄥ崟閲嶇疆 - reset() { - this.form = { - pacId: null, - pacName: null, - pacRemark: null, - createBy: null, - createTime: null, - updateBy: null, - updateTime: null, - deleted: null, - allSonName: null, - allProName: null, - priceNow: null, - proId: null, - // pacStatus: "鍚敤", - }; - this.resetForm("form"); - }, - /** 鎼滅储鎸夐挳鎿嶄綔 */ - handleQuery() { - this.queryParams.pageNum = 1; - this.getList(); - }, - - handlePackage() { - this.$refs.aaa.open = true; - this.$refs.aaa.getList(); - this.$refs.aaa.title = "濂楅瀛楀吀"; - }, - handleChanges(param1) { - this.form.pacName = param1[0].pacName; - this.form.hisPacId = param1[0].pacId; - if (param1[0].price) { - this.form.counterPrice = param1[0].price; - this.form.retailPrice = param1[0].price; - } - }, - /** 閲嶇疆鎸夐挳鎿嶄綔 */ - resetQuery() { - this.resetForm("queryForm"); - this.handleQuery(); - }, - // 澶氶�夋閫変腑鏁版嵁 - handleSelectionChange(selection) { - if (!selection[0]) { - return; - } - this.forms = selection[0]; - this.ids = selection.map((item) => item.pacId); - this.single = selection.length !== 1; - this.multiple = !selection.length; - }, - /** 鏂板鎸夐挳鎿嶄綔 */ - handleAdd() { - this.reset(); - this.open = true; - this.title = "浣撴濂楅淇℃伅缁存姢"; - this.DataList = []; - this.checkedkey = []; - this.checkedListkey = []; - this.getDataList(); - // getAllList().then((response) => { - // this.allList = response.data; - // if (this.allList.proStatus === 0) { - // this.allList.proStatus = "鍚敤"; - // } else { - // this.allList.proStatus = "鍋滅敤"; - // } - // this.loading = false; - // }); - // if (!this.form.tjProjectList) { - // this.form.tjProjectList = [] - // this.form.tjProjectList.push({ - // id: parseInt(length), - // proName: "", - // allSonProName: "", - // proPrice: "", - // priceNow: "", - // proId: "", - // Selection, - // }); - // } - }, - - // 鏄惁鍚敤 - handleStatusChange(row) { - let data = { - pacId: row.pacId, - pacStatus: row.pacStatus, - }; - let text = row.pacStatus === "0" ? "鍚敤" : "鍋滅敤"; - this.$confirm("纭瑕�" + text + row.pacName + "濂楅鍚楋紵") - .then(function () { - return updateStatus(data); - }) - .then(() => { - this.msgSuccess(text + "鎴愬姛"); - }) - .catch(function () { - row.pacStatus = row.pacStatus === "0" ? "0" : "1"; - }); - }, - - /** 淇敼鎸夐挳鎿嶄綔 */ - handleUpdate(row) { - this.title = "浣撴濂楅淇℃伅缁存姢"; - this.open = true; - // 閲嶇疆鏁版嵁 - this.DataList = []; - this.checkedkey = []; - this.checkedListkey = []; - this.checkedNodes = []; // 娣诲姞杩欒锛岄噸缃�変腑鑺傜偣 - - getPacInFo(row.pacId).then((response) => { - this.form = response.data; - - // 澶勭悊鍏抽敭瀛� - if (this.form.keywords) { - this.form.keywords = this.form.keywords.slice(0, -1); - this.form.keywords = this.form.keywords.split(","); - } - - // 澶勭悊椤圭洰鏁版嵁 - if (response.data.packageProjects && response.data.packageProjects.length > 0) { - this.DataList = response.data.packageProjects; - - // 鏇存柊閫変腑鐘舵�� - this.DataList.forEach((item) => { - this.checkedkey.push(item.proId); - this.checkedListkey.push(item.proId); - this.checkedNodes.push(item.proId); // 娣诲姞鍒伴�変腑鑺傜偣鏁扮粍 - }); - - // 璁$畻鎬讳环鍜屾姌鎵� - this.pics = this.DataList.reduce((total, item) => total + item.priceOrd, 0); - this.form.xianprice = this.DataList.reduce((total, item) => total + item.priceNow, 0); - this.youhui = this.DataList[0]?.limits || 10; - } - - // 鑾峰彇鏂扮殑鏁版嵁鍒楄〃 - this.getDataList(); - }); - }, - - // 鏂板琛� - addmembers() { - if (this.form.pacName) { - if (!this.form.tjProjectList) { - this.form.tjProjectList = []; - this.form.tjProjectList.push({ - id: parseInt(length), - proName: "", - allSonProName: "", - proPrice: "", - priceNow: "", - proId: "", - Selection, - }); - } else { - this.form.tjProjectList.push({ - id: parseInt(length), - proName: "", - allSonProName: "", - proPrice: "", - priceNow: "", - proId: "", - Selection, - }); - } - } else { - Message.warning("璇峰厛濉啓濂楅鍚嶇О"); - } - this.$forceUpdate(); - }, - - // 鍒犻櫎琛� - Delete(index) { - if (this.form.tjProjectList.length == 0) { - this.$alert("璇峰厛閫夋嫨瑕佸垹闄ょ殑鏁版嵁", "鎻愮ず", { - confirmButtonText: "纭畾", - }); - } else { - this.form.tjProjectList.splice(index, 1); - } - }, - - /** 鍒犻櫎鎸夐挳鎿嶄綔 */ - handleDelete1(row) { - this.DataList = this.DataList.filter((item) => item.proId !== row.proId); - // 浠� checkedNodes 涓Щ闄� - const index = this.checkedNodes.indexOf(row.proId); - if (index > -1) { - this.checkedNodes.splice(index, 1); - } - const tree = this.$refs.tree; - const node = tree.getNode(row.proId); - if (node) { - node.setChecked(false); - } - this.updateTotalPrice(); - }, - getSelectValue(val) { - this.form.tjProjectList.forEach((formitem) => { - if (formitem.proName == val) { - formitem.allSonProName = ""; - this.allList.find((item) => { - if (item.proName == val) { - formitem.proId = item.proId; - formitem.proPrice = item.proPrice; - formitem.priceNow = item.proPrice; - formitem.allSonProName = item.allSonProName; - // item.tjProjectList.forEach((item1) => { - // this.$nextTick(() => { - // formitem.allSonProName = - // formitem.allSonProName + "," + item1.proName; - // }); - // // this.form.tjProjectList.allSonProName = this.form.tjProjectList.allSonProName+','+item1.proName - // }); - } - }); - } - }); - - for (let i = 0; i < this.form.tjProjectList.length; i++) { - for (let j = i + 1; j < this.form.tjProjectList.length; j++) { - if ( - this.form.tjProjectList[i].proId == this.form.tjProjectList[j].proId - ) { - this.form.tjProjectList.splice(j, 1); - j--; - this.$modal.msgError("姝ら」鐩凡褰曞叆锛屼笉鍙噸澶嶅綍鍏�"); - } - } - } - - return this.form.tjProjectList; - }, - numberChange(currentValue, oldValue) { this.$confirm("纭畾淇敼鎵�鏈夊瓙椤圭殑鎶樻墸鍚楋紵", "鎻愮ず", { confirmButtonText: "纭畾", @@ -1217,37 +516,279 @@ const limits = new Big(item.limits); const result = proPrice.times(limits.div(10)); item.priceNow = result.toNumber(); - this.form.xianprice = this.DataList.reduce((sum, item) => { - return sum.plus(new Big(item.priceNow || "0")); - }, new Big(0)); }); + this.form.xianprice = this.DataList.reduce((sum, item) => { + return sum.plus(new Big(item.priceNow || "0")); + }, new Big(0)).toNumber(); + this.lastXianPrice = this.form.xianprice; }) .catch(() => { this.youhui = oldValue; }); }, - updateProPrice(row) { const proPrice = new Big(row.priceOrd); const limits = new Big(row.limits); - const result = proPrice.times(limits.div(10)); // ordPrice * (discount / 10) + const result = proPrice.times(limits.div(10)); row.priceNow = result.toNumber(); this.form.xianprice = this.DataList.reduce((sum, item) => { return sum.plus(new Big(item.priceNow || "0")); }, new Big(0)).toNumber(); - this.youhui = - (Math.floor((this.form.xianprice / this.pics) * 100) / 100) * 10; - // console.log(this.youhui, 1212); + this.youhui = (Math.floor((this.form.xianprice / this.pics) * 100) / 100) * 10; }, calculateDiscount(row) { if (row.limits > 10) { - row.limits = 10; // 寮哄埗灏嗗�艰缃负鏈�澶у�� + row.limits = 10; } else if (row.limits < 0) { - row.limits = 0; // 寮哄埗灏嗗�艰缃负鏈�灏忓�� + row.limits = 0; } - this.updateProPrice(row); // 鏇存柊浠锋牸鎴栧叾浠栭�昏緫 + this.updateProPrice(row); }, - // 榛樿鎺ュ彈鍥涗釜鍊� { 褰撳墠琛岀殑鍊�, 褰撳墠鍒楃殑鍊�, 琛岀殑涓嬫爣, 鍒楃殑涓嬫爣 } + 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; + getPacTjProjectList().then((response) => { + this.allList = response.data; + this.loading = false; + }); + getPacList(this.queryParams).then((response) => { + response.rows.forEach((item, index) => { + item.newID = (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + 1; + }); + this.total = response.total; + this.packageList = response.rows; + this.loading = false; + }); + }, + getKeyword() { + this.loading = true; + listKeyword(this.queryParams).then((response) => { + this.keywordList = response.rows; + }); + }, + sel(val) { + let id = val; + this.keys = id.join(","); + }, + getCategory() { + this.loading = true; + listCategory(this.queryParams).then((response) => { + this.categoryList = response.rows; + }); + }, + shangpin(vals) {}, + cancel() { + this.open = false; + this.Seachopen = false; + this.reset(); + }, + reset() { + this.form = { + pacId: null, + pacName: null, + pacRemark: null, + createBy: null, + createTime: null, + updateBy: null, + updateTime: null, + deleted: null, + allSonName: null, + allProName: null, + priceNow: null, + proId: null, + xianprice: null, + counterPrice: null, + limits: 10, + }; + this.resetForm("form"); + }, + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + handlePackage() { + this.$refs.aaa.open = true; + this.$refs.aaa.getList(); + this.$refs.aaa.title = "濂楅瀛楀吀"; + }, + handleChanges(param1) { + this.form.pacName = param1[0].pacName; + this.form.hisPacId = param1[0].pacId; + if (param1[0].price) { + this.form.counterPrice = param1[0].price; + this.form.retailPrice = param1[0].price; + } + }, + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, + handleSelectionChange(selection) { + if (!selection[0]) return; + this.forms = selection[0]; + this.ids = selection.map((item) => item.pacId); + this.single = selection.length !== 1; + this.multiple = !selection.length; + }, + handleAdd() { + this.reset(); + this.open = true; + this.title = "浣撴濂楅淇℃伅缁存姢"; + this.DataList = []; + this.checkedkey = []; + this.queryParams1.nr = ""; + this.queryParams1.page = 1; + this.checkedListkey = []; + this.checkedNodes = []; + this.getDataList(); + }, + handleStatusChange(row) { + let data = { + pacId: row.pacId, + pacStatus: row.pacStatus, + }; + let text = row.pacStatus === "0" ? "鍚敤" : "鍋滅敤"; + this.$confirm("纭瑕�" + text + row.pacName + "濂楅鍚楋紵") + .then(() => updateStatus(data)) + .then(() => { + this.msgSuccess(text + "鎴愬姛"); + }) + .catch(() => { + row.pacStatus = row.pacStatus === "0" ? "0" : "1"; + }); + }, + handleUp() { + this.title = "浣撴濂楅淇℃伅缁存姢"; + this.open = true; + getPacInFo(this.forms.pacId).then((response) => { + Object.keys(response.data).forEach((key) => { + this.$set(this.form, key, response.data[key]); + }); + this.youhui = response.data.limits || 10; + this.pics = response.data.price || 0; + this.form.xianprice = response.data.newPrice || 0; + this.lastXianPrice = this.form.xianprice; + this.form.keywords = response.data.keywords && response.data.keywords.length > 0 + ? response.data.keywords.slice(0, -1).split(",") + : []; + this.DataList = response.data.packageProjects || []; + this.checkedkey = this.DataList.map(item => item.proId || ''); + this.checkedListkey = [...this.checkedkey]; + this.checkedNodes = [...this.checkedkey]; + this.getDataList(); + }); + }, + handleUpdate(row) { + this.reset(); + this.title = "浣撴濂楅淇℃伅缁存姢"; + this.open = true; + this.loading = true; + getPacInFo(row.pacId).then((response) => { + const data = response.data || {}; + Object.keys(data).forEach((key) => { + this.$set(this.form, key, data[key]); + }); + this.youhui = data.limits || 10; + this.pics = data.price || 0; + this.form.xianprice = data.newPrice || 0; + this.lastXianPrice = this.form.xianprice; + this.form.keywords = data.keywords && data.keywords.length > 0 + ? data.keywords.slice(0, -1).split(",") + : []; + this.DataList = data.packageProjects || []; + this.checkedkey = this.DataList.map(item => item.proId || ''); + this.checkedListkey = [...this.checkedkey]; + this.checkedNodes = [...this.checkedkey]; + return this.getDataList(); + }).then(() => { + this.loading = false; + this.$nextTick(() => { + this.$refs.form.validate(); + }); + }).catch((error) => { + this.loading = false; + this.$message.error("鍔犺浇鏁版嵁澶辫触"); + console.error(error); + }); + }, + addmembers() { + if (this.form.pacName) { + if (!this.form.tjProjectList) { + this.form.tjProjectList = []; + this.form.tjProjectList.push({ + id: parseInt(length), + proName: "", + allSonProName: "", + proPrice: "", + priceNow: "", + proId: "", + }); + } else { + this.form.tjProjectList.push({ + id: parseInt(length), + proName: "", + allSonProName: "", + proPrice: "", + priceNow: "", + proId: "", + }); + } + } else { + Message.warning("璇峰厛濉啓濂楅鍚嶇О"); + } + this.$forceUpdate(); + }, + Delete(index) { + if (this.form.tjProjectList.length === 0) { + this.$alert("璇峰厛閫夋嫨瑕佸垹闄ょ殑鏁版嵁", "鎻愮ず", { confirmButtonText: "纭畾" }); + } else { + this.form.tjProjectList.splice(index, 1); + } + }, + handleDelete1(row) { + this.DataList = this.DataList.filter((item) => item.proId !== row.proId); + const index = this.checkedNodes.indexOf(row.proId); + if (index > -1) { + this.checkedNodes.splice(index, 1); + } + const tree = this.$refs.tree; + const node = tree.getNode(row.proId); + if (node) { + node.setChecked(false); + } + this.updateTotalPrice(); + }, + getSelectValue(val) { + this.form.tjProjectList.forEach((formitem) => { + if (formitem.proName === val) { + formitem.allSonProName = ""; + this.allList.find((item) => { + if (item.proName === val) { + formitem.proId = item.proId; + formitem.proPrice = item.proPrice; + formitem.priceNow = item.proPrice; + formitem.allSonProName = item.allSonProName; + } + }); + } + }); + for (let i = 0; i < this.form.tjProjectList.length; i++) { + for (let j = i + 1; j < this.form.tjProjectList.length; j++) { + if (this.form.tjProjectList[i].proId === this.form.tjProjectList[j].proId) { + this.form.tjProjectList.splice(j, 1); + j--; + this.$modal.msgError("姝ら」鐩凡褰曞叆锛屼笉鍙噸澶嶅綍鍏�"); + } + } + } + return this.form.tjProjectList; + }, objectSpanMethod({ row, column, rowIndex, columnIndex }) { let fields = ["propinName"]; let cellValue = row[column.property]; @@ -1278,14 +819,9 @@ getDataList() { this.loading = true; search(this.queryParams1).then((response) => { - this.Treedata = response.data.list; // 鏇存柊鏍戝舰鏁版嵁 - this.total1 = response.data.total; // 鏇存柊鎬绘潯鏁� - this.pics = this.DataList.reduce( - (total, item) => total + item.priceOrd, - 0 - ); - - // 纭繚鍦ㄦ暟鎹姞杞藉悗淇濇寔閫変腑鐘舵�� + this.Treedata = response.data.list; + this.total1 = response.data.total; + this.pics = this.DataList.reduce((total, item) => total + item.priceOrd, 0); this.$nextTick(() => { this.$refs.tree.setCheckedKeys(this.checkedNodes); }); @@ -1293,140 +829,116 @@ this.loading = false; }, handleFilterInput() { - this.queryParams1.page = 1; // 鎼滅储鏃堕噸缃负绗竴椤� - this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁 - // 鍦ㄨ繃婊ゅ悗锛岄噸鏂拌缃�変腑鐘舵�� + this.queryParams1.page = 1; + this.getDataList(); this.$nextTick(() => { this.$refs.tree.setCheckedKeys(this.checkedNodes); }); }, - - // 鍒嗛〉浜嬩欢 - handlePageChange({ page, pageSize }) { - this.queryParams.page = page; // 鏇存柊褰撳墠椤� - this.queryParams.pageSize = pageSize; // 鏇存柊姣忛〉鏉℃暟 - this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁 - }, - handleCurrentChecked(data, checked, indeterminate) { if (checked) { - // 妫�鏌ユ槸鍚﹀凡瀛樺湪 - if (!this.DataList.some(item => item.proId === data.proId)) { - // 娣诲姞鏂伴」鐩椂浣跨敤涓庡凡鏈夐」鐩浉鍚岀殑鎶樻墸鐜� - const currentDiscount = this.DataList.length > 0 ? this.DataList[0].limits : 10; - const priceNow = new Big(data.proPrice).times(new Big(currentDiscount).div(10)).toNumber(); - + if (!this.DataList.some((item) => item.proId === data.proId)) { this.DataList.push({ proId: data.proId, proName: data.proName, priceOrd: data.proPrice, - limits: currentDiscount, - priceNow: priceNow + limits: 10, + priceNow: data.proPrice, }); - - if (!this.checkedNodes.includes(data.proId)) { - this.checkedNodes.push(data.proId); - } + } + if (!this.checkedNodes.includes(data.proId)) { + this.checkedNodes.push(data.proId); } } else { - // 绉婚櫎椤圭洰 - this.DataList = this.DataList.filter(item => item.proId !== data.proId); + this.DataList = this.DataList.filter((item) => item.proId !== data.proId); const index = this.checkedNodes.indexOf(data.proId); if (index > -1) { this.checkedNodes.splice(index, 1); } } - - // 鏇存柊鎬讳环鍜屾姌鎵� this.updateTotalPrice(); }, updateTotalPrice() { - // 璁$畻鎵�鏈夐」鐩殑鎬讳紭鎯犱环 this.form.xianprice = this.DataList.reduce((sum, item) => { return sum.plus(new Big(item.priceNow || "0")); }, new Big(0)).toNumber(); - - // 璁$畻鍘熶环鎬诲拰 - this.pics = this.DataList.reduce( - (total, item) => total + item.priceOrd, - 0 - ); + this.pics = this.DataList.reduce((total, item) => total + item.priceOrd, 0); + }, + changeXianjia() { + if (this.form.xianprice !== 0) { + this.youhui = (Math.floor((this.form.xianprice / this.pics) * 100) / 100) * 10; + } + }, + numberChangeXianPrice(currentValue, oldValue) { + if (this.form.xianprice === this.lastXianPrice || !this.form.xianprice) return; + clearTimeout(this.debounceTimer); + this.debounceTimer = setTimeout(() => { + this.$confirm("纭畾淇敼鎵�鏈夊瓙椤圭殑鎶樻墸鍚楋紵", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + this.youhui = currentValue; + let totalYsprice = new Big(0); + this.DataList.forEach((item) => { + item.limits = this.youhui; + const ordPrice = new Big(item.priceOrd); + const discount = new Big(item.limits); + const result = ordPrice.times(discount.div(10)); + item.priceNow = result.toNumber(); + totalYsprice = totalYsprice.plus(new Big(item.priceNow)); + }); + if (!totalYsprice.eq(this.form.xianprice)) { + const diff = new Big(this.form.xianprice).minus(totalYsprice); + if (this.DataList.length > 0) { + const lastItem = this.DataList[this.DataList.length - 1]; + const newYsPrice = new Big(lastItem.priceNow).plus(diff).toNumber(); + this.$set(this.DataList[this.DataList.length - 1], "priceNow", newYsPrice); + } + } + this.lastXianPrice = this.form.xianprice; + }) + .catch(() => { + this.youhui = oldValue; + }); + }, 500); }, spliceData() { for (var i = 0; i < this.DataList.length; i++) { for (var j = i + 1; j < this.DataList.length; j++) { - if (this.DataList[i].proId == this.DataList[j].proId) { - //濡傛灉绗竴涓瓑浜庣浜屼釜锛宻plice鏂规硶鍒犻櫎绗簩涓� + if (this.DataList[i].proId === this.DataList[j].proId) { this.DataList.splice(j, 1); j--; } } } + return this.DataList; }, - - // 鐐瑰嚮鑾峰彇姣忎釜鏍戣妭鐐� handleCurrentChecked1(data, checked, checkedNodes) { - if (checked == false) { - this.DataList.forEach((item, index) => { - if (item.proId == data.proId) { - this.DataList.splice(index, 1); - this.TotalPrice1 = 0; - this.pics = 0; - this.DataList.forEach((item1) => { - this.pics += item1.priceOrd; - // this.TotalPrice1 = item1.proPrice + this.TotalPrice1; - }); - } - }); - } else if (checked == true) { + if (!checked) { + this.DataList = this.DataList.filter((item) => item.proId !== data.proId); + this.TotalPrice1 = this.DataList.reduce((sum, item) => sum + item.priceOrd, 0); + this.pics = this.TotalPrice1; + } else { this.DataList.push(data); - this.pics = 0; - this.DataList.forEach((item1) => { - this.pics += item1.priceOrd; - if (item1.proParentId == this.dataObj.proId) { - item1.propinName = this.dataObj.proName; - item1.propinPrice = this.dataObj.proPrice; - } - }); + this.pics = this.DataList.reduce((sum, item) => sum + item.priceOrd, 0); this.spliceData(); - this.TotalPrice1 = 0; - this.pics = 0; - this.DataList.forEach((item1) => { - // this.TotalPrice1 = item1.proPrice + this.TotalPrice1; - this.pics += item1.priceOrd; - }); + this.TotalPrice1 = this.pics; } }, - - /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDeletes(row) { - this.DataList.forEach((item, index) => { - if (item.proParentId == row.proParentId) { - this.DataList.splice(index, 1); - this.TotalPrice1 = 0; - this.DataList.forEach((item1) => { - this.TotalPrice1 = item1.proPrice + this.TotalPrice1; - }); - } - }); - - // this.$refs.trees.setCheckedKeys([]); + this.DataList = this.DataList.filter((item) => item.proParentId !== row.proParentId); + this.TotalPrice1 = this.DataList.reduce((sum, item) => sum + item.priceOrd, 0); }, - - /** 鎻愪氦鎸夐挳 */ submitForm() { this.form.limits = this.youhui; this.form.price = this.pics; - this.form.priceNow = this.queryParams.xianprice; - + this.form.priceNow = this.form.xianprice; if (this.keys) { - this.form.keywords = this.keys; // 濡傛灉鏈� this.keys锛屽垯鐩存帴璧嬪�� - } else { - // this.form.keywords = this.form.keywords; // 濡傛灉娌℃湁锛屽垯灏� this.form.keywords 杞垚瀛楃涓� + this.form.keywords = this.keys; } - - let packageProjects = []; // 瀹氫箟涓�涓┖鏁扮粍 - + let packageProjects = []; this.DataList.forEach((item) => { packageProjects.push({ proName: item.proName, @@ -1445,76 +957,42 @@ price: this.pics, pacId: this.form.pacId || null, isOnSale: this.form.isOnSale, - // keywords: this.form.keywords, sort: this.form.sort, retailPrice: this.form.retailPrice, tjCategory: this.form.tjCategory, pacRemark: this.form.pacRemark, detail: this.form.detail, }; - saveOreditTjPacNew(data).then((res) => { - console.log(res, 555); this.open = false; this.getList(); }); }, - /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDelete(row) { const pacIds = row.pacId || this.ids; this.$modal .confirm('鏄惁纭鍒犻櫎浣撴濂楅缂栧彿涓�"' + pacIds + '"鐨勬暟鎹」锛�') - .then(function () { - return delPackage(pacIds); - }) + .then(() => delPackage(pacIds)) .then(() => { this.getList(); this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); }) .catch(() => {}); }, - - /** 鍒嗛厤濂楅鍐呴」鐩搷浣� */ - handleProject: function (row) { + handleProject(row) { const pacId = row.pacId; this.$router.push("/system/user-auth/role/" + pacId); }, - - /** 瀵煎嚭鎸夐挳鎿嶄綔 */ handleExport() { this.download( "system/package/export", - { - ...this.queryParams, - }, + { ...this.queryParams }, `package_${new Date().getTime()}.xlsx` ); - }, - submitcheckbox() { - let _this = this; - let proIds = []; - this.allList.forEach((item) => { - _this.newproName.forEach((item1) => { - if (item.proName == item1) { - proIds.push(item.proId); - } - }); - }); - let data = { - pacid: Number(this.pacId), - proIds: proIds.toString(), - }; - - updateProject(data).then((response) => { - this.$modal.msgSuccess("鎴愬姛"); - this.Seachopen = false; - }); }, }, }; </script> - - <style> .el-tooltip__popper { max-width: 800px; @@ -1544,11 +1022,13 @@ left: 40%; bottom: 2%; } + .tab3 { max-height: 400px; overflow-y: auto; border: 1px solid #d9d9d9; } + /* .custom-tree-node { flex: 1; display: flex; -- Gitblit v1.8.0