From 47f3611b20b8ee9379e93c82b7b2f46edae56eb1 Mon Sep 17 00:00:00 2001 From: lkk <364857242@qq.com> Date: 星期二, 21 一月 2025 14:13:56 +0800 Subject: [PATCH] taocan --- src/views/system/package/index.vue | 1146 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 1,020 insertions(+), 126 deletions(-) diff --git a/src/views/system/package/index.vue b/src/views/system/package/index.vue index 651a6e9..06436ff 100644 --- a/src/views/system/package/index.vue +++ b/src/views/system/package/index.vue @@ -1,41 +1,106 @@ <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="categoryId"> - <el-select v-model="queryParams.categoryId" placeholder="璇烽�夋嫨鐘舵��" style="width: 200px" filterable clearable> - <el-option v-for="dict in categoryList" :key="dict.id" :label="dict.name" :value="dict.id"></el-option> + <el-select + v-model="queryParams.categoryId" + placeholder="璇烽�夋嫨鐘舵��" + style="width: 200px" + filterable + clearable + > + <el-option + v-for="dict in categoryList" + :key="dict.id" + :label="dict.name" + :value="dict.id" + ></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="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> + <right-toolbar + :showSearch.sync="showSearch" + @queryTable="getList" + ></right-toolbar> </el-row> <!-- @@ -43,16 +108,70 @@ 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> - <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 + label="濂楅鍒嗙被" + width="100px" + align="center" + prop="categoryNames" + fixed + ></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> - <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="椤圭洰鏄庣粏" @@ -61,7 +180,12 @@ :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> @@ -78,10 +202,23 @@ </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 @@ -91,22 +228,70 @@ 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"> + <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"> + <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> @@ -115,31 +300,66 @@ <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="1100px" append-to-body> - <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> @@ -149,16 +369,39 @@ placeholder="璇疯緭鍏ュ晢鍝佺被鐩�" style="width: 200px" /> --> - <el-select v-model="form.categoryId" placeholder="璇烽�夋嫨濂楅绫荤洰" style="width: 150px" @change="shangpin" filterable - clearable> - <el-option v-for="item in categoryList" :key="item.id" :label="item.name" :value="item.id"></el-option> + <el-select + v-model="form.categoryId" + placeholder="璇烽�夋嫨濂楅绫荤洰" + style="width: 150px" + @change="shangpin" + filterable + clearable + > + <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="keywords"> - <el-select multiple v-model="form.keywords" placeholder="璇烽�夋嫨鍏抽敭瀛�" style="width: 150px" @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: 150px" + @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> <el-form-item label="鏄惁涓婃灦" prop="isOnSale"> @@ -166,27 +409,91 @@ <el-radio :label="0">鍚敤</el-radio> <el-radio :label="1">鍋滅敤</el-radio> </el-radio-group> --> - <el-select v-model="form.isOnSale" placeholder="璇烽�夋嫨鏄惁涓婃灦" style="width: 150px" 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: 150px" + 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="counterPrice"> - <el-input v-model="form.counterPrice" placeholder="璇疯緭鍏ュ師浠�" style="width: 150px" /> + <el-form-item label="鍘熶环" prop="pics"> + <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-form-item> + <el-form-item label="浼樻儬浠�"> + <el-input + ref="inputName" + v-model="form.xianprice" + placeholder="浼樻儬浠�" + clearable + style="width: 140px" + /> + </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> </el-form-item> - <div v-if="!isCollapsed" style="display:flex"> + <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 @@ -194,7 +501,11 @@ 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> --> @@ -209,7 +520,7 @@ <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-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" /> @@ -237,7 +548,158 @@ v-hasPermi="['hosp:consumables:remove']" title="鍒犻櫎"></el-button> </template> </el-table-column> - </el-table> + </el-table> --> + + <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 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" + :props="defaultProps" + :filter-node-method="filterNode" + show-checkbox + @check-change="handleCurrentChecked1" + :default-checked-keys="checkedListkey" + ref="trees" + :render-content="renderContent" + > + </el-tree> + </div> + </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> + <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> + </template> + </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> + </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> + <!-- <h3 style="font-weight: 600">鍚堣锛歿{ pics }}鍏�</h3> --> + </div> + </el-col> + </el-row> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> @@ -269,6 +731,12 @@ 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 { getPacList, getPacInFo, @@ -281,16 +749,17 @@ updateStatus, getAllList, updateProject, - getPacTjProjectList + getPacTjProjectList, + saveOreditTjPacNew, } from "@/api/system/package"; import { Message } from "element-ui"; +import Big from "big.js"; export default { name: "Package", - dicts: ["sys_normal_disable", "sys_yes_no"], + dicts: ["sys_normal_disable", "sys_yes_no", "dict_tjtype"], components: { Packages }, data() { let checkPhoneNum = (rule, value, callback) => { - console.log(value); let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/); if (value == "" && value == undefined && !value) { return callback(""); @@ -301,6 +770,23 @@ } }; return { + pics: 0, + filterText: "", + DataList: [], + list1: true, + activeName: "1", + num: 1, + checkedObj: {}, + dataObj: {}, + Treedata: [], + TreedataList: [], + treedataList: [], + checkedkey: [], + checkedListkey: [], + defaultProps: { + children: [], + label: "proName", + }, isCollapsed: true, // 榛樿涓烘姌鍙犵姸鎬� categoryList: [], keys: "", @@ -321,8 +807,6 @@ multiple: true, // 鏄剧ず鎼滅储鏉′欢 showSearch: true, - // 鎬绘潯鏁� - total: 0, // 浣撴濂楅琛ㄦ牸鏁版嵁 packageList: [], // 濂楅閫変腑鐨勭埗椤� @@ -331,6 +815,7 @@ newproName: [], // 鎵�鏈変綋妫�椤圭洰路 allList: [], + treeList: [], // 鎵�鏈夊椁愭暟鎹� // allpackage:[], // 寮瑰嚭灞傛爣棰� @@ -339,6 +824,9 @@ open: false, Seachopen: false, pacId: "", + // 鎬绘潯鏁� + total: 0, + total1: 0, // 鏌ヨ鍙傛暟 queryParams: { pageNum: 1, @@ -346,8 +834,19 @@ pacName: null, pacRemark: null, }, + queryParams1: { + page: 1, + pageSize: 30, + nr: "", + }, // 琛ㄥ崟鍙傛暟 - form: {}, + form: { + xianprice: null, // 浼樻儬浠� + counterPrice: null, //鍘熶环 + limits: 10, + }, + forms: {}, + youhui: 10, // 琛ㄥ崟鏍¢獙 rules: { deleted: [ @@ -378,6 +877,12 @@ }, }; }, + // watch: { + // filterText(val) { + // this.$refs.tree.filter(val); + // }, + // }, + created() { this.getList(); this.getKeyword(); @@ -386,6 +891,15 @@ methods: { toggleCollapse() { this.isCollapsed = !this.isCollapsed; // 鐐瑰嚮鎸夐挳鏃跺垏鎹sCollapsed鐨勫�� + }, + 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() { @@ -411,6 +925,7 @@ this.loading = false; }); }, + /** 鏌ヨ鍏抽敭瀛楀垪琛� */ getKeyword() { this.loading = true; @@ -432,9 +947,7 @@ this.categoryList = response.rows; }); }, - shangpin(vals) { - console.log(vals); - }, + shangpin(vals) {}, // 鍙栨秷鎸夐挳 cancel() { this.open = false; @@ -489,7 +1002,7 @@ if (!selection[0]) { return; } - this.form = selection[0]; + this.forms = selection[0]; this.ids = selection.map((item) => item.pacId); this.single = selection.length !== 1; this.multiple = !selection.length; @@ -499,7 +1012,10 @@ 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) { @@ -545,32 +1061,56 @@ handleUp() { this.title = "浣撴濂楅淇℃伅缁存姢"; this.open = true; - getPacTjProjectList().then((response) => { - this.allList = response.data; - this.loading = false; + // getPacTjProjectList().then((response) => { + // this.allList = response.data; + // this.loading = false; + // }); + getPacInFo(this.forms.pacId).then((response) => { + this.form = response.data; + this.form.keywords = this.form.keywords.slice(0, -1); + this.form.keywords = this.form.keywords.split(","); + // this.DataList = []; + + // this.pics = 0; + this.DataList = []; + this.checkedkey = []; + this.checkedListkey = []; + this.DataList = response.data.packageProjects; + this.DataList.forEach((item) => { + this.checkedkey.push(item.proId); + this.checkedListkey.push(item.proId); + }); + + // 鑾峰彇鏂扮殑鏁版嵁鍒楄〃锛堝鏋滈渶瑕侊級 + this.getDataList(); }); }, + /** 淇敼鎸夐挳鎿嶄綔 */ handleUpdate(row) { - // this.form = row; - // this.form.keywords = this.form.keyIds; - // if (this.form.pacStatus === 0) { - // this.form.pacStatus = "鍚敤"; - // } else { - // this.form.pacStatus = "鍋滅敤"; - // } this.title = "浣撴濂楅淇℃伅缁存姢"; this.open = true; getPacInFo(row.pacId).then((response) => { this.form = response.data; - this.form.keywords = this.form.keyIds; + this.form.keywords = this.form.keywords.slice(0, -1); + this.form.keywords = this.form.keywords.split(","); + this.DataList = []; + this.checkedkey = []; + this.checkedListkey = []; + this.DataList = response.data.packageProjects; + this.DataList.forEach((item) => { + this.checkedkey.push(item.proId); + this.checkedListkey.push(item.proId); + }); + + // 鑾峰彇鏂扮殑鏁版嵁鍒楄〃锛堝鏋滈渶瑕侊級 + this.getDataList(); }); }, // 鏂板琛� addmembers() { if (this.form.pacName) { - if (!this.form.tjProjectList) { this.form.tjProjectList = []; this.form.tjProjectList.push({ @@ -610,6 +1150,16 @@ } }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete1(row) { + this.DataList = this.DataList.filter((item) => item.proId !== row.proId); + const tree = this.$refs.tree; + const node = tree.getNode(row.proId); // 鏍规嵁鑺傜偣鐨勫敮涓�鏍囪瘑鑾峰彇鑺傜偣瀵硅薄 + if (node) { + node.setChecked(false); // 鍙栨秷閫変腑鐘舵�� + } + }, + getSelectValue(val) { this.form.tjProjectList.forEach((formitem) => { if (formitem.proName == val) { @@ -619,7 +1169,7 @@ formitem.proId = item.proId; formitem.proPrice = item.proPrice; formitem.priceNow = item.proPrice; - formitem.allSonProName =item.allSonProName; + formitem.allSonProName = item.allSonProName; // item.tjProjectList.forEach((item1) => { // this.$nextTick(() => { // formitem.allSonProName = @@ -646,38 +1196,375 @@ return this.form.tjProjectList; }, - /** 鎻愪氦鎸夐挳 */ - submitForm() { - this.$refs["form"].validate((valid) => { - if (valid) { - if (this.form.pacId != null) { - // if (this.form.pacStatus === "鍚敤") { - // this.form.pacStatus = 0; - // } else { - // this.form.pacStatus = 1; - // } - this.form.keywords = this.keys; - updatePackage(this.form).then((response) => { - this.$modal.msgSuccess("淇敼鎴愬姛"); - this.open = false; - this.getList(); - }); - } else { - this.form.keywords = this.keys; - // if (this.form.pacStatus === "鍚敤") { - // this.form.pacStatus = 0; - // } else { - // this.form.pacStatus = 1; - // } - addPackage(this.form).then((response) => { - this.$modal.msgSuccess("鏂板鎴愬姛"); - this.open = false; - this.getList(); - }); + + numberChange(currentValue, oldValue) { + this.$confirm("纭畾淇敼鎵�鏈夊瓙椤圭殑鎶樻墸鍚楋紵", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + this.youhui = currentValue; + this.DataList.forEach((item) => { + item.limits = this.youhui; + const proPrice = new Big(item.priceOrd); + 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)); + }); + }) + .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) + 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); + }, + calculateDiscount(row) { + if (row.limits > 10) { + row.limits = 10; // 寮哄埗灏嗗�艰缃负鏈�澶у�� + } else if (row.limits < 0) { + row.limits = 0; // 寮哄埗灏嗗�艰缃负鏈�灏忓�� + } + this.updateProPrice(row); // 鏇存柊浠锋牸鎴栧叾浠栭�昏緫 + }, + // 榛樿鎺ュ彈鍥涗釜鍊� { 褰撳墠琛岀殑鍊�, 褰撳墠鍒楃殑鍊�, 琛岀殑涓嬫爣, 鍒楃殑涓嬫爣 } + objectSpanMethod({ row, column, rowIndex, columnIndex }) { + let fields = ["propinName"]; + let cellValue = row[column.property]; + if (cellValue && fields.includes(column.property)) { + let prevRow = this.DataList[rowIndex - 1]; + let nextRow = this.DataList[rowIndex + 1]; + if (prevRow && prevRow[column.property] === cellValue) { + return { rowspan: 0, colspan: 0 }; + } else { + let countRowspan = 1; + while (nextRow && nextRow[column.property] === cellValue) { + nextRow = this.DataList[++countRowspan + rowIndex]; + } + if (countRowspan > 1) { + return { rowspan: countRowspan, colspan: 1 }; } } + } + }, + renderContent(h, { node, data, store }) { + return ( + <span class="custom-tree-node"> + <span>{node.label}</span> + <span>({data.proPrice}鍏�)</span> + </span> + ); + }, + getDataList() { + this.loading = true; + search(this.queryParams1).then((response) => { + this.Treedata = response.data.list; // 鏇存柊鏍戝舰鏁版嵁 + this.total1 = response.data.total; // 鏇存柊鎬绘潯鏁� + + const selectedIds = this.DataList.map((item) => item.proId); + // 鏇存柊 checkedkey 浣垮緱閫変腑鐨勯」鐩繚鎸侀�変腑鐘舵�� + this.checkedkey = selectedIds.filter((id) => + this.Treedata.some((item) => item.proId === id) + ); + + this.pics = this.DataList.reduce( + (total, item) => total + item.priceOrd, + 0 + ); + }); + this.loading = false; + }, + // getDataList() { + // this.loading = true; + + // getProParentIdDxList(this.queryParams).then((response) => { + // this.Treedata = response.data.list; + // /* if (this.form.tjProjectList) { + // this.form.tjProjectList.forEach((item) => { + // this.Treedata.forEach((item1) => { + // if (item.proId == item1.proId) { + // this.checkedkey.push(item1.proId); + + // this.DataList.push(item1); + + // this.DataList.forEach((item1) => { + // item1.limits = 10; + // if (item1.limits > 10) { + // item1.limits = 10; // 寮哄埗灏嗗�艰缃负鏈�澶у�� + // } else if (item1.limits < 0) { + // item1.limits = 0; // 寮哄埗灏嗗�艰缃负鏈�灏忓�� + // } + // this.updateProPrice(item1); // 鏇存柊浠锋牸鎴栧叾浠栭�昏緫 + // }); + + // } + // }); + // }); + // } */ /* else { + // this.checkedkey.push(this.Treedata[0].proId); + // let proId = this.Treedata[0].proId; + // this.TreedataList = this.Treedata.filter( + // (item) => item.proId == proId + // ); */ + + // // 灏嗙涓�涓」鐩坊鍔犲埌 DataList + // // this.TreedataList.forEach((item) => { + // // this.checkedListkey.push(item.proId); + // // this.DataList.push(item); + // // }); + // /* getProSonDxList(proId).then((res) => { + // this.TreedataList = res.data.list; + // this.TreedataList.forEach((item) => { + // item.disabled = true; + // this.checkedListkey.push(item.proId); + // this.DataList.push(item); + // this.DataList.forEach((item) => { + // item.propinName = this.Treedata[0].proName; + // item.propinPrice = this.Treedata[0].proPrice; + // }); + // this.pics = 0; + // this.DataList.forEach((item) => { + // this.pics += item.proPrice; + // }); + // }); + // }); */ + // // } + // this.pics = this.DataList.reduce( + // (total, item) => total + item.priceOrd, + // 0 + // ); + // this.loading = false; + // }); + // }, + handleFilterInput() { + this.queryParams.page = 1; // 鎼滅储鏃堕噸缃负绗竴椤� + this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁 + }, + + // 鍒嗛〉浜嬩欢 + handlePageChange({ page, pageSize }) { + this.queryParams.page = page; // 鏇存柊褰撳墠椤� + this.queryParams.pageSize = pageSize; // 鏇存柊姣忛〉鏉℃暟 + this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁 + }, + + handleCurrentChecked(data, checked, checkedNodes) { + this.dataObj = data; + this.checkedObj = checked; + + if (checked) { + // 妫�鏌ユ槸鍚﹀凡瀛樺湪浜� DataL + this.DataList.push({ + proId: data.proId, + proName: data.proName, + priceOrd: data.proPrice, // 鍘熶环锛岀‘淇濊祴鍊兼纭� + limits: 10, + priceNow: data.proPrice, + }); + } else { + let index = this.DataList.findIndex( + (item) => item.proId === data.proId + ); + if (index !== -1) { + this.DataList.splice(index, 1); + } + } + this.pics = 0; + this.TotalPrice1 = 0; + this.DataList.forEach((item) => { + this.pics += item.priceOrd; + this.form.counterPrice += item.priceOrd; + this.TotalPrice1 += item.priceOrd; // 鍙互鏍规嵁闇�瑕佹敼鎴愪紭鎯犱环 `priceNow` }); }, + + 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鏂规硶鍒犻櫎绗簩涓� + 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) { + 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.spliceData(); + this.TotalPrice1 = 0; + this.pics = 0; + this.DataList.forEach((item1) => { + // this.TotalPrice1 = item1.proPrice + this.TotalPrice1; + this.pics += item1.priceOrd; + }); + } + }, + + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + 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([]); + }, + + /** 鎻愪氦鎸夐挳 */ + submitForm() { + this.form.limits = this.youhui; + this.form.price = this.pics; + this.form.priceNow = this.queryParams.xianprice; + + if (this.keys) { + this.form.keywords = this.keys; // 濡傛灉鏈� this.keys锛屽垯鐩存帴璧嬪�� + } else { + this.form.keywords = this.form.keywords.toString(); // 濡傛灉娌℃湁锛屽垯灏� this.form.keywords 杞垚瀛楃涓� + } + + let packageProjects = []; // 瀹氫箟涓�涓┖鏁扮粍 + + this.DataList.forEach((item) => { + packageProjects.push({ + proName: item.proName, + proId: item.proId, + priceNow: item.priceNow, + limits: item.limits, + priceOrd: item.priceOrd, + }); + }); + let data = { + pacName: this.form.pacName, + limits: this.form.limits, + pacStatus: this.form.pacStatus, + packageProjects: packageProjects, + newPrice: this.form.xianprice, + 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(); + }); + }, + /* submitForm() { + if (this.form.pacName) { + this.form.tjProjectList = []; + if (this.DataList.length != 0) { + this.treeList = JSON.parse(JSON.stringify(this.DataList)); + for (var i = 0; i < this.treeList.length; i++) { + for (var j = i + 1; j < this.treeList.length; j++) { + if ( + this.treeList[i].proParentId == this.treeList[j].proParentId + ) { + this.treeList.splice(j, 1); + j--; + } + } + } + this.treeList.forEach((item) => { + this.form.tjProjectList.push({ + // id: 0, + proName: item.propinName, + // allSonProName: item.proName + ",", + proPrice: item.propinPrice, + priceNow: item.propinPrice, + proId: item.proParentId, + }); + }); + } + this.$refs["form"].validate((valid) => { + if (valid) { + if (this.form.pacId != null) { + // if (this.form.pacStatus === "鍚敤") { + // this.form.pacStatus = 0; + // } else { + // this.form.pacStatus = 1; + // } + if (this.keys) { + this.form.keywords = this.keys; + } else { + this.form.keywords = this.form.keywords.toString(); + } + + updatePackage(this.form).then((response) => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + }); + } else { + this.form.keywords = this.keys; + // if (this.form.pacStatus === "鍚敤") { + // this.form.pacStatus = 0; + // } else { + // this.form.pacStatus = 1; + // } + // return; + addPackage(this.form).then((response) => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }); + } + } + }); + } else { + Message.warning("璇峰厛濉啓濂楅鍚嶇О"); + } + }, */ /** 鍒犻櫎鎸夐挳鎿嶄綔 */ handleDelete(row) { const pacIds = row.pacId || this.ids; @@ -690,7 +1577,7 @@ this.getList(); this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); }) - .catch(() => { }); + .catch(() => {}); }, /** 鍒嗛厤濂楅鍐呴」鐩搷浣� */ @@ -800,10 +1687,17 @@ left: 40%; bottom: 2%; } - -/* .dialo{ - display: flex; - flex-direction: row; +.tab3 { + max-height: 400px; + 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