From 25538c1063d1e9a2d8dac1b813d43e7d8fb18e3f Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 02 三月 2026 09:57:38 +0800
Subject: [PATCH] 经销商管理

---
 admin/src/components/business/OperaBannerZhuanquWindow.vue |  139 +++++++++++++++++-----------------------------
 1 files changed, 51 insertions(+), 88 deletions(-)

diff --git a/admin/src/components/business/OperaBannerZhuanquWindow.vue b/admin/src/components/business/OperaBannerZhuanquWindow.vue
index 732677b..e5f8b98 100644
--- a/admin/src/components/business/OperaBannerZhuanquWindow.vue
+++ b/admin/src/components/business/OperaBannerZhuanquWindow.vue
@@ -1,13 +1,16 @@
 <template>
-  <GlobalAlertWindow
+  <GlobalWindow
     v-loading="isUploading"
     :title="title"
+    width="60%"
     :visible.sync="visible"
     :confirm-working="isWorking"
     @confirm="confirm"
   >
-    <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix="锛�">
-
+    <el-form :model="form" ref="form" :rules="rules"  label-width="120px" label-suffix="锛�" >
+      <el-form-item label="涓撳尯鍚嶇О" prop="title">
+        <el-input v-model="form.title" placeholder="璇疯緭鍏ュ悕绉�" :maxlength="5" v-trim/>
+      </el-form-item>
       <el-form-item label="灞曠ず鍥�" prop="imgFullUrl">
         <UploadAvatarImage
           :file="{ 'imgurlfull': form.imgFullUrl, 'imgurl': form.imgurl }"
@@ -17,66 +20,29 @@
           @uploadBegin="isUploading = true"
         />
       </el-form-item>
-      <el-form-item label="涓撳尯鍚嶇О" prop="labelId">
-        <el-select
-          v-model="form.labelId"
-          placeholder="璇烽�夋嫨涓撳尯鍚嶇О"
-          clearable
-          @change="labelChange"
-        >
-          <el-option
-            v-for="item in types"
-            :key="item.id"
-            :value="item.id"
-            :label="item.name"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="鍏宠仈浜у搧" prop="content">
-        <el-select
-          v-model="form.content"
-          placeholder="璇疯緭鍏ヤ骇鍝佸悕绉帮紝鍐嶉�夋嫨"
-          filterable
-          remote
-          reserve-keyword
-          :remote-method="remoteMethod"
-          :loading="searchLoading"
-          @change="selectShop"
-        >
-          <el-option
-            v-for="item in goods"
-            :key="item.id"
-            :label="item.name"
-            :value="item.id">
-          </el-option>
-        </el-select>
+      <el-form-item label="閫変腑鍟嗗搧" prop="applyIdList" >
+        <span style="font-size: 12px;color: #216EEE"   @click="selectGoods">宸叉寚瀹氥�� {{applyDataList.length}} 銆戜欢鍟嗗搧</span>
+        <el-button style="margin-left:30px;display: inline-block;width: 80px;" type="primary"  @click="selectGoods">鍘婚�夋嫨 </el-button>
       </el-form-item>
       <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
+        <el-input v-model="form.sortnum" type="number"  placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
       </el-form-item>
     </el-form>
-  </GlobalAlertWindow>
+    <OperaCouponGoodsWindow ref="OperaCouponGoodsWindow" @success="doSelect"/>
+  </GlobalWindow>
 </template>
 
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+import GlobalWindow from '@/components/common/GlobalWindow'
 import UploadAvatarImage from '@/components/common/UploadAvatarImage'
-import { findAll } from "@/api/business/labels";
-import { findListByParentCategory } from '@/api/business/goods'
+import OperaCouponGoodsWindow from '@/components/business/OperaCouponGoodsWindow'
+import {allList as goodsList} from "@/api/business/goods";
 export default {
   name: 'OperaBannerWindow',
   extends: BaseOpera,
-  components: { GlobalAlertWindow, UploadAvatarImage },
+  components: { GlobalWindow, UploadAvatarImage ,OperaCouponGoodsWindow},
   data () {
-    let positionRule = (rule, value, callBack) => {
-      debugger
-      if (!value) {
-        callBack(new Error(rule.message))
-      } else {
-        callBack()
-      }
-    }
     return {
       isUploading: false,
       searchLoading: false,
@@ -87,24 +53,24 @@
       form: {
         id: null,
         imgurl: '',
+        title:'',
         imgFullUrl: '',
         content: '',
-        labelId: '',
+        position: 3,
         sortnum: '',
         objName: '',
-
+        applyIdList:[]
       },
-      types:[],
-      goods: [],
       // 楠岃瘉瑙勫垯
       rules: {
-        content: [
-          { required: true, validator: positionRule, message: '璇烽�夋嫨鍏宠仈浜у搧', tigger: 'change' }
+        title: [
+          { required: true, message: '璇疯緭鍏ヤ笓鍖哄悕绉�', tigger: 'blur' }
         ],
         imgFullUrl: [
           { required: true, message: '璇蜂笂浼犱笓鍖哄浘鐗�', tigger: 'change' }
         ],
-      }
+      },
+      applyDataList:[]
     }
   },
   created () {
@@ -112,15 +78,26 @@
       api: '/business/banner',
       'field.id': 'id'
     })
-    findAll({ type: 12 })
-      .then(res => {
-        console.log(res);
-        this.types = res
-      })
   },
   methods: {
+    selectGoods () {
+      this.$refs.OperaCouponGoodsWindow.open('閫夋嫨鍟嗗搧', this.applyDataList)
+    },
+    doSelect (rows) {
+      console.log(rows, this.applyDataList)
+      this.applyDataList = []
+      this.form.applyIdList = []
+      if (rows && rows.length) {
+        rows.forEach(item => {
+          this.applyDataList.push(item)
+          this.form.applyIdList.push(item.id)
+        })
+      }
+      this.$refs.form.clearValidate();
+    },
     open (title, target) {
-
+      this.applyDataList = []
+      this.form.applyIdList = []
       this.title = title
       this.visible = true
       this.activities = []
@@ -139,38 +116,24 @@
         for (const key in this.form) {
           this.form[key] = target[key]
         }
-        this.form.content = +this.form.content
-        this.remoteMethod(target.goodsName)
+        this.loadSelectGoods()
       })
     },
-    labelChange() {
-      this.this.goods = []
-      this.form.labelId = ''
+    loadSelectGoods () {
+      goodsList({
+        zhuanquId: this.form.id // 鍟嗗搧鍒嗙被
+      }).then(res => {
+        this.applyDataList = res || []
+        this.applyDataList.forEach(t => {
+          this.form.applyIdList.push(t.id)
+        })
+      })
     },
     // 涓婁紶鍥剧墖
     uploadAvatarSuccess(file) {
       this.form.imgurl = file.imgurl;
       this.form.imgFullUrl = file.imgurlfull;
-    },
-    remoteMethod(query) {
-      if (query !== '') {
-        this.searchLoading = true
-        findListByParentCategory({
-          name: query,
-          categoryId: this.form.labelId
-        })
-          .then(res => {
-            this.goods = res
-          })
-          .finally(() => {
-            this.searchLoading = false
-          })
-      }
-    },
-    selectShop(val) {
-      const temp = this.goods.find(item => item.id == val)
-      this.form.objName = temp.name
-    },
+    }
   },
 }
 </script>

--
Gitblit v1.9.3