From 1e4f8276eb86dde67135126cbb9bae19bb845823 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 02 三月 2026 12:09:57 +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