ct 2 днів тому
батько
коміт
e2712aeb95

+ 8 - 0
src/api/hisStore/storeProductPackage.js

@@ -69,3 +69,11 @@ export function packageBySearch(query) {
     params: query
   })
 }
+
+export function getProductsCompanyIds(data) {
+  return request({
+    url: '/store/store/storeProductPackage/getProductsCompanyIds',
+    method: 'post',
+    data: data
+  })
+}

+ 2 - 2
src/views/components/his/storeOrderDetails.vue

@@ -1080,8 +1080,8 @@ import {getCitys} from "@/api/store/city";
 
       },
       submitRefundForm(){
-        if(this.refundForm.refundAmount<=0){
-          return this.$message("退款金额不能0");
+        if(this.refundForm.refundAmount<0){
+          return this.$message("退款金额不能小于0");
         }
         if(this.refundForm.refundAmount>this.item.payMoney){
           return this.$message("退款金额不能大于实付金额" + this.item.payMoney + "元");

+ 74 - 8
src/views/hisStore/storeProductPackage/index.vue

@@ -108,7 +108,24 @@
               <el-tag prop="cateId" v-for="(item, index) in cateOptions"    v-if="scope.row.cateId==item.dictValue">{{item.dictLabel}}</el-tag>
           </template>
       </el-table-column>
-      <el-table-column label="所属公司" align="center" prop="companyName" />
+      <el-table-column label="所属公司" align="center" width="220px">
+        <template slot-scope="scope">
+          <div v-if="scope.row.companyIds">
+            <el-tag
+              v-for="company in companyOptions.filter(company => {
+          if (!scope.row.companyIds) return false;
+          const ids = scope.row.companyIds.split(',').map(id => id.trim());
+          return ids.includes(String(company.companyId));
+        })"
+              :key="company.companyId"
+              size="small"
+              style="margin: 2px;"
+            >
+              {{ company.companyName }}
+            </el-tag>
+          </div>
+        </template>
+      </el-table-column>
       <el-table-column label="标题" align="center" prop="title" show-overflow-tooltip />
       <el-table-column label="描述" align="center" prop="descs" show-overflow-tooltip />
       <el-table-column label="原价" align="center"  >
@@ -215,8 +232,8 @@
                     />
             </el-select>
         </el-form-item>
-        <el-form-item label="所属公司" prop="companyId">
-          <el-select style="width: 240px" v-model="form.companyId"  placeholder="请选择企业" clearable size="small" @change="handleCompanyChange">
+        <el-form-item label="所属公司" prop="companyIds">
+          <el-select style="width: 240px" v-model="form.companyIds" filterable multiple @change="handleCompanyChange" placeholder="请选择企业" clearable size="small">
             <el-option
               v-for="item in companyOptions"
               :key="item.companyId"
@@ -328,13 +345,13 @@
     </el-dialog>
 
     <el-dialog :title="product.title" v-if="product.open"  :visible.sync="product.open" width="1000px" append-to-body>
-        <product-attr-value-select  ref="product"  @selectProduct="selectProduct" :company-id="form.companyId"/>
+        <product-attr-value-select  ref="product"  @selectProduct="selectProduct" :company-ids="form.companyIds"/>
     </el-dialog>
   </div>
 </template>
 
 <script>
-import { listStoreProductPackage, getStoreProductPackage, delStoreProductPackage, addStoreProductPackage, updateStoreProductPackage, exportStoreProductPackage,modifyStoreProductPackages } from "@/api/hisStore/storeProductPackage";
+import { listStoreProductPackage, getStoreProductPackage, delStoreProductPackage, addStoreProductPackage, updateStoreProductPackage, exportStoreProductPackage,modifyStoreProductPackages,getProductsCompanyIds } from "@/api/hisStore/storeProductPackage";
 import Editor from '@/components/Editor/wang';
 import productAttrValueSelect from "../components/productAttrValueSelect";
 import Material from '@/components/Material'
@@ -461,8 +478,43 @@ export default {
   },
   methods: {
     handleCompanyChange(){
-      // 清除套餐商品
-      this.products = [];
+      if (!this.products || this.products.length === 0) {
+        this.$message.warning('请先选择商品');
+        return;
+      }
+      const productIds = this.products
+        .map(item => {
+          const id = item.productId
+          return id ? Number(id) : null;
+        })
+        .filter(id => id != null && !isNaN(id));
+
+      if (productIds.length === 0) {
+        this.$message.warning('没有有效的商品ID');
+        return;
+      }
+      // 查询所选公司是否有该商品
+      getProductsCompanyIds(productIds).then(response => {
+          const availableCompanyIds = (response.companyIds || [])
+            .map(id => {
+              const numId = Number(id);
+              return !isNaN(numId) ? Math.floor(numId) : null;
+            })
+            .filter(id => id != null);
+          const selectedCompanyIds = this.form.companyIds || [];
+          // 找出不在可用范围内的公司ID
+          const invalidCompanyIds = selectedCompanyIds.filter(
+            selectedId => !availableCompanyIds.includes(selectedId)
+          );
+
+          if (invalidCompanyIds.length > 0) {
+            this.$message.warning(`以下公司无法使用当前商品:${invalidCompanyIds.join(', ')},已自动移除`);
+
+            this.form.companyIds = selectedCompanyIds.filter(
+              selectedId => availableCompanyIds.includes(selectedId)
+            );
+          }
+        })
     },
     /** 获取公司下拉列表*/
     getCompanyList() {
@@ -601,6 +653,16 @@ export default {
       const packageId = row.packageId || this.ids
       getStoreProductPackage(packageId).then(response => {
         this.form = response.data;
+        let companyIds = [];
+        if (response.data.companyIds && response.data.companyIds !== '') {
+          // 拆分成数组,并转换为数字类型
+          companyIds = response.data.companyIds
+            .split(',')
+            .map(item => item.trim())
+            .filter(item => item !== '')
+            .map(id => Number(id));  // 转换为数字
+        }
+        this.form.companyIds = companyIds;
         this.open = true;
         this.title = "修改商品组合套餐";
         this.products=this.form.productList;
@@ -640,7 +702,11 @@ export default {
       if (this.form.integral==null || this.form.integral<0){
         this.form.integral = 0;
       }
-      // console.log(this.form)
+      const companyIds = this.form.companyIds
+      if (companyIds!=null && companyIds.length>0){
+        this.form.companyIds = companyIds.join(',');
+      }
+      console.log(this.form)
       // return;
       this.$refs["form"].validate(valid => {
         if (valid) {