From c13b8914228e6a404bd60ee36bf2479383da8f23 Mon Sep 17 00:00:00 2001
From: liyaozhi <lzhflash@163.com>
Date: Sun, 09 Nov 2025 10:55:14 +0800
Subject: [PATCH] 111
---
branch_vue/src/views/activity/activity/add.vue | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 100 insertions(+), 9 deletions(-)
diff --git a/branch_vue/src/views/activity/activity/add.vue b/branch_vue/src/views/activity/activity/add.vue
index 77f5cb4..acc2723 100644
--- a/branch_vue/src/views/activity/activity/add.vue
+++ b/branch_vue/src/views/activity/activity/add.vue
@@ -63,6 +63,13 @@
<div class="gray9" v-if="form.space_supplier_id==''">如没有可不选</div>
</el-row>
</el-form-item>
+ <el-form-item label="促销商品" v-if="form.visit_supplier_id > 0">
+ <el-button icon="el-icon-plus" @click="selectProduct">选择商品</el-button>
+ <div class="gray9">当有走访企业时,可以选择该企业的商品进行促销</div>
+ </el-form-item>
+ <el-form-item label="商品列表" v-if="form.product_list.length > 0 && form.is_visit">
+ <ProductPrice :products="form.product_list" @confirm="handlePriceConfirm"></ProductPrice>
+ </el-form-item>
<el-form-item label="活动费用" prop="activity_fee">
<el-input v-model="form.fee" placeholder="请输入活动费用" class="max-w460">
<template slot="append">元</template>
@@ -160,6 +167,10 @@
<GetSupplier :open="open_supplier" @close="closeSupplierFunc"></GetSupplier>
<!--选择用户-->
<GetUser :is_open="open_user" @close="closeGetUserFunc"></GetUser>
+ <!--选择商品-->
+ <ProductSelect :isproduct="isproduct" :shop_supplier_id="form.visit_supplier_id" :excludeIds="excludeIds" :islist="islist" @closeDialog="closeProductDialogFunc($event)">
+ 产品列表弹出层
+ </ProductSelect>
</div>
</template>
@@ -171,6 +182,8 @@
import GetBranch from '@/components/branch/Branch.vue';
import GetSupplier from '@/components/supplier/Supplier.vue';
import GetUser from '@/components/user/GetUser.vue';
+import ProductSelect from '@/components/product/Product';
+import ProductPrice from './dialog/Price.vue';
export default {
components: {
/*编辑器*/
@@ -181,7 +194,9 @@
Getpoint,
GetBranch,
GetSupplier,
- GetUser
+ GetUser,
+ ProductSelect,
+ ProductPrice
},
data() {
return {
@@ -221,8 +236,7 @@
reg_date: '',
act_date: '',
radius: 0, // 活动限定范围,在范围内才能进行相关操作,如签到、下单
- // verify_user_ids: '',
-
+ product_list: [] //选择的产品列表
},
/*活动类别*/
category: [],
@@ -236,6 +250,9 @@
supplier_type: 'visit',
select_list:[], // 选择的核销员列表
open_user: false,
+ excludeIds: [],
+ islist: true, //多选
+ isproduct: false,
/*验证规则*/
rules: {
name: [{ required: true, message: '请输入活动标题', trigger: 'blur' }],
@@ -304,21 +321,21 @@
self.$refs.form.validate(valid => {
if (valid) {
self.loading = true;
- self.form.content = this.$refs.ue.getUEContent();
+ form.content = this.$refs.ue.getUEContent();
// 如果走访企业,则被走访企业就是场地提供者
- if (self.form.is_visit) {
- self.form.space_supplier_id = '';
+ if (form.is_visit) {
+ form.space_supplier_id = '';
} else {
- self.form.visit_supplier_id = '';
+ form.visit_supplier_id = '';
}
- BranchApi.addActivity(form, true)
+ BranchApi.addActivity({formData: JSON.stringify(form)}, true)
.then(data => {
self.loading = false;
self.$message({
message: data.msg,
type: 'success'
});
- self.$router.push('/branch/activity/index');
+ self.$router.push('/activity/activity/index');
})
.catch(error => {
self.loading = false;
@@ -370,6 +387,10 @@
closeSupplierFunc(e) {
if (e.type != 'error') {
if (this.supplier_type == 'visit') {
+ // 如果换了走访企业,清除促销商品
+ if (this.form.visit_supplier_id != e.params.shop_supplier_id) {
+ this.form.product_list = [];
+ }
this.form.visit_supplier_id = e.params.shop_supplier_id;
this.visit_supplier_name = e.params.name;
} else {
@@ -398,6 +419,76 @@
deleteVerifyUser(i) {
this.select_list.splice(i, 1);
},
+
+ selectProduct() {
+ this.isproduct = true;
+ },
+ handlePriceConfirm(changedProducts) {
+ const excludeIds = changedProducts.map((row) => row.product_id);
+ this.excludeIds = excludeIds;
+ changedProducts;
+ this.form.product_list = changedProducts;
+ },
+ /*商品选择关闭弹窗*/
+ closeProductDialogFunc(e) {
+ const self = this;
+ self.isproduct = false;
+ const excludeIds = [];
+ if (e.type == 'success') {
+ let product = [];
+ e.params.forEach((item) => {
+ const arr1 = {
+ image: item.image,
+ product_name: item.product_name,
+ product_price: item.product_price,
+ product_id: item.product_id,
+ product_sku_id: item.sku[0].product_sku_id,
+ spec_sku_id: item.sku[0].spec_sku_id,
+ product_sku_name: '单规格'
+ };
+ if (item.specList.length > 0 && item.spec_type == 20) {
+ item.specList.forEach((cell, colIndex) => {
+ const arr2 = {
+ image: item.image,
+ product_name: item.product_name,
+ product_price: cell.spec_form.product_price,
+ product_id: item.product_id,
+ product_sku_id: cell.product_sku_id,
+ spec_sku_id: cell.spec_sku_id,
+ product_sku_name: cell.spec_name
+ };
+ product.push(arr2);
+ });
+ } else {
+ product.push(arr1);
+ }
+
+ excludeIds.push(item.product_id);
+ });
+
+ self.excludeIds = excludeIds;
+ const product_list = self.form.product_list;
+ const new_arr = self.mergeArraysByProductId(product_list, product, 'product_id');
+ self.form.product_list = new_arr;
+
+ }
+ },
+
+ /**
+ * 将 B 数组中不存在于 A 数组中的项(基于 product_id)合并到 A 数组中
+ * @param {Array} arrayA - 目标数组
+ * @param {Array} arrayB - 源数组
+ * @param {string} idKey - 用于比较的键名(默认为 'product_id')
+ * @returns {Array} - 合并后的新数组
+ */
+ mergeArraysByProductId(arrayA, arrayB, idKey = 'product_id') {
+ // 创建 A 数组中所有 product_id 的集合
+ const idsInA = new Set(arrayA.map((item) => item[idKey]));
+ // 筛选出 B 数组中不存在于 A 数组的项
+ const itemsToAdd = arrayB.filter((item) => !idsInA.has(item[idKey]));
+ // 合并数组(不改变原数组)
+ return [...arrayA, ...itemsToAdd];
+ },
}
};
</script>
--
Gitblit v1.9.2