From 47c9193f257d66925a5d40a1d0b12eba331b8f4a Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 10 十二月 2025 17:52:49 +0800
Subject: [PATCH] 经销商管理
---
admin/src/components/business/OperaShopWindow.vue | 398 +++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 333 insertions(+), 65 deletions(-)
diff --git a/admin/src/components/business/OperaShopWindow.vue b/admin/src/components/business/OperaShopWindow.vue
index 4dd0994..c0d797a 100644
--- a/admin/src/components/business/OperaShopWindow.vue
+++ b/admin/src/components/business/OperaShopWindow.vue
@@ -1,68 +1,191 @@
<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="110px" label-suffix="锛�" inline>
- <el-form-item label="搴楅摵鍚嶇О" prop="name">
+ <p class="tip-header" >璐﹀彿淇℃伅</p>
+ <el-form-item label="鐧诲綍璐﹀彿" prop="username">
+ <el-input v-model="form.username" placeholder="璇疯緭鍏ョ櫥褰曡处鍙�" :maxlength="20" v-trim/>
+ </el-form-item>
+ <p class="tip-warn" style="width: 100%;text-align: center"><i class="el-icon-warning"></i>鏂板缓鎴栬�呬慨鏀硅处鍙凤紝瀵嗙爜榛樿涓�:銆愰棬搴桰D+"@123456"銆戯紝濡傞棬搴桰D涓篠001,榛樿瀵嗙爜锛歋001@123456</p>
+ <p class="tip-header" >鍩烘湰淇℃伅</p>
+ <el-form-item label="缁忛攢鍟嗗悕绉�" prop="name">
<el-input v-model="form.name" placeholder="璇疯緭鍏ュ簵閾哄悕绉帮紝20瀛椾互鍐�" :maxlength="20" v-trim/>
</el-form-item>
- <el-form-item label="搴楅摵LOGO" prop="imgurl">
- <UploadAvatarImage
- :file="{ 'imgurlfull': form.imgurlfull, 'imgurl': form.imgurl }"
- :uploadData="uploadData"
- @uploadSuccess="uploadAvatarSuccess"
- @uploadEnd="isUploading = false"
- @uploadBegin="isUploading = true"
- />
+ <el-form-item label="闂ㄥ簵ID" prop="code">
+ <el-input v-model="form.code" placeholder="璇疯緭鍏ラ棬搴桰D锛�10瀛椾互鍐�" :maxlength="10" v-trim/>
</el-form-item>
- <el-form-item label="搴楅摵鍦板潃" prop="addr">
- <el-input v-model="form.addr" placeholder="璇疯緭鍏ュ湴鍧�" v-trim/>
+ <el-form-item label="閿�鍞ā寮�" prop="saleType">
+ <el-radio-group v-model="form.saleType">
+ <el-radio :label="0">骞冲彴閾鸿揣</el-radio>
+ <el-radio :label="1">鑷富閲囪喘</el-radio>
+ </el-radio-group>
</el-form-item>
- <el-form-item label="搴楅摵璐熻矗浜�" prop="memberId">
- <el-select
- v-model="form.memberId"
- placeholder="璇疯緭鍏ヤ細鍛樻樀绉�/鎵嬫満鍙凤紝鍐嶉�夋嫨"
- filterable
- remote
- reserve-keyword
- :remote-method="remoteMethod"
- :loading="searchLoading"
- >
+ <el-form-item label="鑱旂郴浜�" prop="realname">
+ <el-input v-model="form.realname" placeholder="璇疯緭鍏ヨ仈绯讳汉" v-trim/>
+ </el-form-item>
+ <el-form-item label="鑱旂郴鐢佃瘽" prop="phone">
+ <el-input v-model="form.phone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" v-trim/>
+ </el-form-item>
+ <el-form-item label="钀ヤ笟鏃堕棿" prop="startTime">
+ <el-input v-model="form.startTime" placeholder="璇疯緭鍏ヨ惀涓氭椂闂�" v-trim/>
+ </el-form-item>
+ <el-form-item label="鎵�灞炲尯鍩�" prop="bigAreaId">
+ <el-select v-model="form.bigAreaId" placeholder="璇烽�夋嫨鎵�灞炲尯鍩�" filterable clearable>
<el-option
- v-for="item in users"
- :key="item.id"
- :label="item.nickname"
- :value="item.id">
- </el-option>
+ v-for="item in bigAreas"
+ :key="item.id"
+ :value="item.id"
+ :label="item.name"
+ ></el-option>
</el-select>
</el-form-item>
+ <div style="display: flex; ">
+ <el-form-item label="閫夋嫨鐪佸競鍖�" prop="provinceId">
+ <el-select v-model="form.provinceId" placeholder="閫夋嫨鐪佷唤" clearable @change="selectProvince">
+ <el-option
+ v-for="item in provinces"
+ :key="item.id"
+ :value="item.id"
+ :label="item.name"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="" prop="cityId">
+ <el-select v-model="form.cityId" placeholder="閫夋嫨鍩庡競" clearable @change="selectCity">
+ <el-option
+ v-for="item in cities"
+ :key="item.id"
+ :value="item.id"
+ :label="item.name"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="" prop="areaId" >
+ <el-select v-model="form.areaId" placeholder="閫夋嫨鍘垮尯" clearable>
+ <el-option
+ v-for="item in areas"
+ :key="item.id"
+ :value="item.id"
+ :label="item.name"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </div>
+ <el-form-item label="璇︾粏鍦板潃" prop="addr">
+ <el-input v-model="form.addr" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" v-trim/>
+ </el-form-item>
+ <el-form-item label="瀹氫綅淇℃伅" prop="locationInfo">
+ <div style="display: flex; ">
+ <el-input v-model="form.locationInfo" placeholder="璇风偣鍑婚�夋嫨鎸夐挳锛屾悳绱绾害,缁忓害]淇℃伅" v-trim style=" width: calc(100% - 100px);"/>
+ <el-button type="primary" style=" margin-left: 20px; width: 80px" @click="selectLocation">閫夋嫨</el-button>
+ </div>
+ <p class="tip-warn" style="width: 100%;"><i class="el-icon-warning"></i>
+ 鐐瑰嚮[閫夋嫨]锛岃烦杞悗鏍规嵁闂ㄥ簵鍦板潃鎼滅储鍦板浘瀹氫綅鍦板潃锛岃幏鍙朳绾害,缁忓害]淇℃伅銆�</p>
+ </el-form-item>
+ <el-form-item label="闂ㄥ簵鍥剧墖" prop="imgurl">
+ <div style="display: flex; display: flex; align-items: center;justify-content: center; height: 100%; width: 100%">
+ <UploadAvatarImage
+ :file="{ 'imgurlfull': form.imgurlfull, 'imgurl': form.imgurl }"
+ :uploadData="uploadData"
+ @uploadSuccess="uploadAvatarSuccess"
+ @uploadEnd="isUploading = false"
+ @uploadBegin="isUploading = true"
+ style=" width: 120px;"
+ />
+ <div class="tip-warn" style=" margin-left: 20px; margin-top: 30px;">
+ 寤鸿灏哄锛�100px X 100px
+ 鏀寔png銆乯pg銆乯peg鏍煎紡锛屽ぇ灏忎笉瓒呰繃2M锛屼笂浼犲浘鐗囦笉鍏佽娑夊強鏀挎不鏁忔劅涓庤壊鎯�
+ </div>
+ </div>
+ </el-form-item>
+ <el-form-item label="瀹d紶娴锋姤" prop="posterImg">
+ <div style="display: flex; align-items: center;justify-content: center; height: 100%; width: 100%">
+ <UploadAvatarImage
+ :file="{ 'imgurlfull': form.posterImgfull, 'imgurl': form.posterImg }"
+ :uploadData="uploadData"
+ @uploadSuccess="uploadAvatarSuccess1"
+ @uploadEnd="isUploading1 = false"
+ @uploadBegin="isUploading1 = true"
+ style=" width: 120px;"
+ />
+ <div class="tip-warn" style=" margin-left: 20px; margin-top: 30px;">
+ 寤鸿灏哄锛�100px X 100px
+ 鏀寔png銆乯pg銆乯peg鏍煎紡锛屽ぇ灏忎笉瓒呰繃2M锛屼笂浼犲浘鐗囦笉鍏佽娑夊強鏀挎不鏁忔劅涓庤壊鎯�
+ </div>
+ </div>
+ </el-form-item>
+ <p class="tip-header" >璧勮川淇℃伅</p>
+ <el-form-item label="钀ヤ笟鎵х収" prop="businessImg">
+ <div style="display: flex; align-items: center;justify-content: center; height: 100%; width: 100%">
+ <UploadAvatarImage
+ :file="{ 'imgurlfull': form.businessImgfull, 'imgurl': form.businessImg}"
+ :uploadData="uploadData"
+ @uploadSuccess="uploadAvatarSuccess2"
+ @uploadEnd="isUploading2 = false"
+ @uploadBegin="isUploading2= true"
+ style=" width: 120px;"
+ />
+ <div class="tip-warn" style=" margin-left: 20px; margin-top: 30px;">
+ 寤鸿灏哄锛�100px X 100px
+ 鏀寔png銆乯pg銆乯peg鏍煎紡锛屽ぇ灏忎笉瓒呰繃2M锛屼笂浼犲浘鐗囦笉鍏佽娑夊強鏀挎不鏁忔劅涓庤壊鎯�
+ </div>
+ </div>
+ </el-form-item>
+ <el-form-item label="娉曚汉濮撳悕" prop="legalPersonName">
+ <el-input v-model="form.legalPersonName" placeholder="璇疯緭鍏ユ硶浜哄鍚�" v-trim/>
+ </el-form-item>
+ <el-form-item label="娉曚汉鐢佃瘽" prop="legalPersonPhone">
+ <el-input v-model="form.legalPersonPhone" placeholder="璇疯緭鍏ユ硶浜鸿仈绯荤數璇�" v-trim/>
+ </el-form-item>
+ <div style="display: flex; height: 100%; width: 100%">
+ <el-form-item label="韬唤璇佺収" prop="idcardImg" style=" width: 250px;">
+ <UploadAvatarImage
+ :file="{ 'imgurlfull': form.idcardImgfull, 'imgurl': form.idcardImg}"
+ :uploadData="uploadData"
+ @uploadSuccess="uploadAvatarSuccess3"
+ @uploadEnd="isUploading3 = false"
+ @uploadBegin="isUploading3= true"
+ />
+ <div class="tip-warn" style=" margin-left: 20px; "> 浜哄儚闈� </div>
+ </el-form-item>
+ <el-form-item label="" prop="idcardImgBack" style=" width: 200px;margin-left: 30px">
+ <UploadAvatarImage
+ :file="{ 'imgurlfull': form.idcardImgBackfull, 'imgurl': form.idcardImgBack}"
+ :uploadData="uploadData"
+ @uploadSuccess="uploadAvatarSuccess4"
+ @uploadEnd="isUploading4 = false"
+ @uploadBegin="isUploading4= true"
+ />
+ <div class="tip-warn" style=" margin-left: 20px; ">鍥藉窘闈�</div>
+ </el-form-item>
+ </div>
</el-form>
- </GlobalAlertWindow>
+ </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
-import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
import UploadAvatarImage from '@/components/common/UploadAvatarImage'
-import { findAll } from '@/api/business/member'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { listByParentId } from '@/api/business/areas'
+import { findAll as listBigAreas } from '@/api/business/labels'
export default {
name: 'OperaShopWindow',
extends: BaseOpera,
- components: { GlobalAlertWindow, UploadAvatarImage },
+ components: { GlobalWindow, UploadAvatarImage },
data () {
- let memberRule = (rule, value, callBack) => {
- if (!value) {
- callBack(new Error())
- } else {
- callBack()
- }
- }
return {
isUploading: false,
+ isUploading1: false,
+ isUploading2: false,
+ isUploading3: false,
+ isUploading4: false,
searchLoading: false,
uploadData: {
folder: 'shop'
@@ -71,23 +194,89 @@
form: {
id: null,
name: '',
+ username: '',
+ realname: '',
+ phone: '',
+ code: '',
+ startTime: null,
+ bigAreaId: null,
+ areaId: null,
+ saleType: 0,
+ provinceId: null,
+ legalPersonName: null,
+ legalPersonPhone: null,
+ cityId: null,
imgurl: '',
imgurlfull: '',
+ businessImg: '',
+ businessImgfull: '',
+ idcardImgBack: '',
+ idcardImgBackfull: '',
+ idcardImg: '',
+ idcardImgfull: '',
+ posterImg: '',
+ posterImgfull: '',
+ locationInfo: '',
addr: '',
memberId: ''
},
- users: [],
+ bigAreas: [],
+ provinces: [],
+ cities: [],
+ areas: [],
// 楠岃瘉瑙勫垯
rules: {
name: [
- { required: true, message: '璇疯緭鍏ュ簵閾哄悕绉�', tigger: 'blur' }
+ { required: true, message: '璇疯緭鍏ュ悕绉�', tigger: 'blur' }
],
- imgurl: [
- { required: true, message: '璇蜂笂浼犲簵閾篖OGO', tigger: 'change' }
+ saleType: [
+ { required: true, message: '璇烽�夋嫨閿�鍞ā寮�' }
],
- memberId: [
- { required: true, validator: memberRule, message: '璇烽�夋嫨鍏宠仈鐢ㄦ埛', tigger: 'change' }
+ addr: [
+ { required: true, message: '璇疯緭鍏ヨ缁嗗湴鍧�', tigger: 'blur' }
],
+ code: [
+ { required: true, message: '璇疯緭鍏ヤ笂浼犻棬搴桰D', tigger: 'blur' }
+ ],
+ username: [
+ { required: true, message: '璇疯緭鍏ョ櫥褰曡处鍙�', tigger: 'blur' }
+ ],
+ realname: [
+ { required: true, message: '璇疯緭鍏ヨ仈绯讳汉濮撳悕', tigger: 'blur' }
+ ],
+ legalPersonName: [
+ { required: true, message: '璇疯緭鍏ユ硶浜哄鍚�', tigger: 'blur' }
+ ],
+ phone: [
+ { required: true, message: '璇疯緭鍏ヨ仈绯讳汉鐢佃瘽', tigger: 'blur' }
+ ],
+ startTime: [
+ { required: true, message: '璇疯緭鍏ヨ惀涓氭椂闂�', tigger: 'blur' }
+ ],
+ locationInfo: [
+ { required: true, message: '璇峰畬鍠勫畾浣嶄俊鎭�', tigger: 'blur' }
+ ],
+ businessImg: [
+ { required: true, message: '璇蜂笂浼犺惀涓氭墽鐓�', tigger: 'change' }
+ ],
+ idcardImgBack: [
+ { required: true, message: '璇蜂笂浼犳硶浜鸿韩浠借瘉鍥藉窘闈�', tigger: 'change' }
+ ],
+ idcardImg: [
+ { required: true, message: '璇蜂笂浼犳硶浜鸿韩浠借瘉浜哄儚闈�', tigger: 'change' }
+ ],
+ provinceId: [
+ { required: true, message: '璇烽�夋嫨鐪佸競' }
+ ],
+ cityId: [
+ { required: true, message: '璇烽�夋嫨鍩庡競' }
+ ],
+ areaId: [
+ { required: true, message: '璇烽�夋嫨鍘垮尯' }
+ ],
+ bigAreaId: [
+ { required: true, message: '璇烽�夋嫨鎵�灞炲尯鍩�' }
+ ]
}
}
},
@@ -96,14 +285,75 @@
api: '/business/shop',
'field.id': 'id'
})
+ listBigAreas({ type: 13 })
+ .then(data => {
+ this.bigAreas = data
+ })
+ listByParentId({ type: 0, parentId: '' })
+ .then(data => {
+ this.provinces = data
+ })
},
methods: {
+ selectProvince (val) {
+ this.form.cityId = null
+ this.form.areaId = null
+ this.cities = []
+ this.areas = []
+ listByParentId({ type: 1, parentId: val })
+ .then(data => {
+ this.cities = data
+ })
+ .catch(e => {
+ this.$tip.error(e)
+ })
+ },
+ selectCity (val) {
+ this.form.areaId = null
+ this.areas = []
+ listByParentId({ type: 2, parentId: val })
+ .then(data => {
+ this.areas = data
+ })
+ .catch(e => {
+ this.$tip.error(e)
+ })
+ },
+ initCityArea (proid, cityid) {
+ listByParentId({ type: 1, parentId: proid })
+ .then(data => {
+ this.cities = data
+ })
+ .catch(e => {
+ this.$tip.error(e)
+ })
+ listByParentId({ type: 2, parentId: cityid })
+ .then(data => {
+ this.areas = data
+ })
+ .catch(e => {
+ this.$tip.error(e)
+ })
+ },
+
+ selectLocation () {
+ window.open('https://lbs.qq.com/tool/getpoint/get-point.html')
+ },
open (title, target) {
this.title = title
this.visible = true
- // this.isEdit = false
this.form.imgurlfull = ''
this.form.imgurl = ''
+ this.form.idcardImgfull = ''
+ this.form.idcardImg = ''
+ this.form.idcardImgBackfull = ''
+ this.form.idcardImgBack = ''
+ this.form.businessImgfull = ''
+ this.form.businessImg = ''
+ this.form.posterImgfull = ''
+ this.form.posterImg = ''
+ this.cities = []
+ this.areas = []
// 鏂板缓
if (target == null) {
this.$nextTick(() => {
@@ -118,32 +368,50 @@
for (const key in this.form) {
this.form[key] = target[key]
}
- this.form.imgurlfull = target.imgFullUrl + target.imgurl
- this.remoteMethod(target.nikeName)
+ if (target.idcardImg) {
+ this.form.idcardImgfull = target.imgFullUrl + target.idcardImg
+ }
+ if (target.idcardImgBack) {
+ this.form.idcardImgBackfull = target.imgFullUrl + target.idcardImgBack
+ }
+ if (target.imgurl) {
+ this.form.imgurlfull = target.imgFullUrl + target.imgurl
+ }
+ if (target.businessImg) {
+ this.form.businessImgfull = target.imgFullUrl + target.businessImg
+ }
+ if (target.posterImg) {
+ this.form.posterImgfull = target.imgFullUrl + target.posterImg
+ }
+ console.log('==========================', target.areas)
+ if (target.areas != null) {
+ this.form.provinceId = target.areas.provinceId
+ this.form.cityId = target.areas.cityId
+ this.initCityArea(this.form.provinceId, this.form.cityId)
+ }
})
},
- uploadAvatarSuccess(file) {
+ uploadAvatarSuccess (file) {
this.form.imgurl = file.imgurl
this.form.imgurlfull = file.imgurlfull
},
- remoteMethod(query) {
- if (query !== '') {
- this.searchLoading = true
- findAll({
- model: {
- nickname: query,
- status: 0
- }
- })
- .then(res => {
- this.users = res
- })
- .finally(() => {
- this.searchLoading = false
- })
- }
+ uploadAvatarSuccess1 (file) {
+ this.form.posterImg = file.imgurl
+ this.form.posterImgfull = file.imgurlfull
+ },
+ uploadAvatarSuccess2 (file) {
+ this.form.businessImg = file.imgurl
+ this.form.businessImgfull = file.imgurlfull
+ },
+ uploadAvatarSuccess4 (file) {
+ this.form.idcardImgBack = file.imgurl
+ this.form.idcardImgBackfull = file.imgurlfull
+ },
+ uploadAvatarSuccess3 (file) {
+ this.form.idcardImg = file.imgurl
+ this.form.idcardImgfull = file.imgurlfull
}
- },
+ }
}
</script>
--
Gitblit v1.9.3