From d49ef920c2ea5e1f3a24dcf7f2faca865d0eb75d Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期四, 20 十一月 2025 10:56:57 +0800
Subject: [PATCH] 0元购可以退款0元
---
manager/src/views/member/list/index.vue | 152 ++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 127 insertions(+), 25 deletions(-)
diff --git a/manager/src/views/member/list/index.vue b/manager/src/views/member/list/index.vue
index 3611c63..49fa45c 100644
--- a/manager/src/views/member/list/index.vue
+++ b/manager/src/views/member/list/index.vue
@@ -6,6 +6,9 @@
<Form-item label="浼氬憳鍚嶇О" prop="username">
<Input type="text" v-model="searchForm.username" placeholder="璇疯緭鍏ヤ細鍛樺悕绉�" clearable style="width: 200px" />
</Form-item>
+ <Form-item label="浼氬憳id" prop="memberId">
+ <Input type="text" v-model="searchForm.memberId" placeholder="璇疯緭鍏ヤ細鍛榠d" clearable style="width: 200px" />
+ </Form-item>
<Form-item label="浼氬憳鏄电О" prop="nickName">
<Input type="text" v-model="searchForm.nickName" placeholder="璇疯緭鍏ヤ細鍛樻樀绉�" clearable style="width: 200px" />
@@ -14,11 +17,18 @@
<Form-item label="鑱旂郴鏂瑰紡" prop="mobile">
<Input type="text" v-model="searchForm.mobile" placeholder="璇疯緭鍏ヤ細鍛樿仈绯绘柟寮�" clearable style="width: 200px" />
</Form-item>
+ <Form-item label="鐢ㄦ埛鏍囩" prop="tags">
+ <Select v-model="searchForm.tagIds" multiple filterable :loading="selectLoading" style="width:200px;">
+ <Option v-for="item in options" :key="item.id" :label="item.tagName" :value="item.id"></Option>
+ </Select>
+ </Form-item>
+
<Button @click="handleSearch" class="search-btn" type="primary" icon="ios-search">鎼滅储</Button>
</Form>
</Row>
- <Row class="operation padding-row" v-if="!selectedMember">
- <Button @click="addMember" type="primary">娣诲姞浼氬憳</Button>
+ <Row class="operation padding-row" >
+ <Button @click="addMember" v-if="!selectedMember" type="primary">娣诲姞浼氬憳</Button>
+ <Button @click="exportExcel" type="primary">瀵煎嚭excel</Button>
</Row>
<Table :loading="loading" border :columns="columns" class="mt_10" :data="data" ref="table"></Table>
@@ -52,14 +62,14 @@
<Modal v-model="descFlag" :title="descTitle" @on-ok="handleSubmitModal" width="500">
<Form ref="form" :model="form" :rules="ruleValidate" :label-width="80">
- <Input v-model="form.id" v-show="false"/>
+ <Input v-model="form.id" v-show="false" />
<FormItem label="澶村儚">
<img :src="form.face || defaultPic" class="face" />
<Button type="text" class="upload" @click="() => {
- this.picModelFlag = true;
- this.$refs.ossManage.selectImage = true;
- }">淇敼</Button>
+ this.picModelFlag = true;
+ this.$refs.ossManage.selectImage = true;
+ }">淇敼</Button>
<input type="file" style="display: none" id="file" />
</FormItem>
<FormItem label="鐢ㄦ埛鍚�" prop="name">
@@ -67,6 +77,14 @@
</FormItem>
<FormItem label="鐢ㄦ埛鏄电О" prop="name">
<Input v-model="form.nickName" style="width: 200px" />
+ </FormItem>
+ <FormItem label="鏍囩" prop="tags">
+ <Select v-model="selectTagIds" multiple filterable :loading="selectLoading" style="width:200px;">
+ <Option v-for="item in options" :key="item.id" :label="item.tagName" :value="item.id"></Option>
+ </Select>
+ </FormItem>
+ <FormItem label="鐢ㄦ埛鑷畾涔夋爣绛�" prop="customerTags">
+ <span class="inf0o" v-for="(item,index) in memberTags" :key="index">{{item.tagName}}<span v-if="index < memberTags.length - 1">, </span></span>
</FormItem>
<FormItem label="鎬у埆" prop="sex">
<RadioGroup type="button" button-style="solid" v-model="form.sex">
@@ -78,25 +96,22 @@
</Radio>
</RadioGroup>
</FormItem>
- <FormItem label="淇敼瀵嗙爜" prop="password">
- <Input type="password" style="width: 220px" password v-model="form.newPassword" />
- </FormItem>
+<!-- <FormItem label="淇敼瀵嗙爜" prop="password">-->
+<!-- <Input type="password" style="width: 220px" password v-model="form.newPassword" />-->
+<!-- </FormItem>-->
<FormItem label="鐢熸棩" prop="birthday">
<DatePicker type="date" format="yyyy-MM-dd" v-model="form.birthday" style="width: 220px"></DatePicker>
</FormItem>
<FormItem label="鎵�鍦ㄥ湴" prop="mail">
{{ form.region || '鏆傛棤鍦板潃' }}
-
-
<Button style="margin-left: 10px;" @click="$refs.map.open()">閫夋嫨</Button>
-
</FormItem>
</Form>
</Modal>
<Modal width="1200px" v-model="picModelFlag">
<ossManage @callback="callbackSelected" :isComponent="true" :initialize="picModelFlag" ref="ossManage" />
</Modal>
- <multipleMap ref="map" @callback="selectedRegion"/>
+ <multipleMap ref="map" @callback="selectedRegion" />
</div>
</template>
@@ -105,6 +120,9 @@
import * as API_Member from "@/api/member.js";
import ossManage from "@/views/sys/oss-manage/ossManage";
import * as RegExp from "@/libs/RegExp.js";
+import { getTags } from "@/api/tag.js";
+import { detailById } from "@/api/memberCustomerTag.js"
+import {exportMemberListData} from "@/api/member.js";
export default {
name: "member",
@@ -114,12 +132,16 @@
},
data() {
return {
- defaultPic:require('@/assets/default.png'),
+ memberTags:[],
+ defaultPic: require('@/assets/default.png'),
descTitle: "", // modal鏍囬
descFlag: false, //缂栬緫鏌ョ湅妗�
loading: true, // 琛ㄥ崟鍔犺浇鐘舵��
addFlag: false, // modal鏄鹃殣鎺у埗
-
+ selectLoading: false,
+ options: [],
+ selectTagIds: [],
+ selectTags: [],
addMemberForm: {
// 娣诲姞鐢ㄦ埛琛ㄥ崟
mobile: "",
@@ -134,6 +156,7 @@
username: "",
mobile: "",
disabled: "OPEN",
+ tagIds:[],
},
picModelFlag: false, // 閫夋嫨鍥剧墖
form: {}, // 琛ㄥ崟鏁版嵁
@@ -151,6 +174,11 @@
},
ruleValidate: {}, //淇敼楠岃瘉
columns: [
+ {
+ title: "浼氬憳id",
+ key: "id",
+ tooltip: true,
+ },
{
title: "浼氬憳鍚嶇О",
key: "username",
@@ -190,6 +218,11 @@
params.row.point == void 0 ? "0" : params.row.point
);
},
+ },
+ {
+ title: "缁戝畾搴楅摵",
+ key: "bindStoreName",
+ tooltip: true,
},
{
title: "鎿嶄綔",
@@ -321,9 +354,16 @@
},
},
methods: {
+ getMemberTags(id){
+ detailById(id).then(res =>{
+ if (res.code === 200){
+ this.memberTags = res.data;
+ }
+ });
+ },
// 鍥炶皟缁欑埗绾�
callback(val, index) {
- this.selectMember.forEach(item=>{item.___selected = false})
+ this.selectMember.forEach(item => { item.___selected = false })
this.$set(val, "___selected", !val.___selected);
console.log(val.___selected);
console.log(this.selectMember);
@@ -375,12 +415,35 @@
this.searchForm.pageNumber = 1;
this.searchForm.pageSize = 10;
this.getData();
+ }, // 鎼滅储
+ exportExcel() {
+ API_Member.exportMemberListData(this.searchForm).then(res =>{
+ const blob = new Blob([res], {
+ type: "application/vnd.ms-excel;charset=utf-8",
+ });
+ //瀵逛簬<a>鏍囩锛屽彧鏈� Firefox 鍜� Chrome锛堝唴鏍革級 鏀寔 download 灞炴��
+ //IE10浠ヤ笂鏀寔blob浣嗘槸渚濈劧涓嶆敮鎸乨ownload
+ if ("download" in document.createElement("a")) {
+ //鏀寔a鏍囩download鐨勬祻瑙堝櫒
+ const link = document.createElement("a"); //鍒涘缓a鏍囩
+ link.download = "浼氬憳鍒楄〃.xlsx"; //a鏍囩娣诲姞灞炴��
+ link.style.display = "none";
+ link.href = URL.createObjectURL(blob);
+ document.body.appendChild(link);
+ link.click(); //鎵ц涓嬭浇
+ URL.revokeObjectURL(link.href); //閲婃斁url
+ document.body.removeChild(link); //閲婃斁鏍囩
+ } else {
+ navigator.msSaveBlob(blob, fileName);
+ }
+ })
},
//鏌ョ湅璇︽儏淇敼
editPerm(val) {
+ this.form = {};
this.descTitle = `鏌ョ湅鐢ㄦ埛 ${val.username}`;
this.descFlag = true;
-
+ this.getMemberTags(val.id);
this.getMemberInfo(val.id);
},
addMember() {
@@ -391,8 +454,16 @@
* 鏌ヨ鏌ョ湅浼氬憳璇︽儏
*/
getMemberInfo(id) {
+ var that = this;
API_Member.getMemberInfoData(id).then((res) => {
if (res.result) {
+ debugger
+ that.selectTags = []
+ that.selectTagIds = []
+ res.result.tags.forEach(element => {
+ that.selectTags.push(element.tagName)
+ that.selectTagIds.push(element.tagId)
+ });
this.$set(this, "form", res.result);
}
});
@@ -410,6 +481,7 @@
},
// 閫変腑鐨勫浘鐗�
callbackSelected(val) {
+ console.log(val)
this.picModelFlag = false;
this.form.face = val.url;
},
@@ -432,17 +504,17 @@
// 閫変腑鐨勫湴鍧�
selectedRegion(val) {
- if(val.type === 'select'){
+ if (val.type === 'select') {
const paths = val.data.map(item => item.name).join(',')
const ids = val.data.map(item => item.id).join(',')
- this.$set(this.form,'region',paths)
- this.$set(this.form,'regionId',ids)
+ this.$set(this.form, 'region', paths)
+ this.$set(this.form, 'regionId', ids)
}
- else{
- this.$set(this.form,'region',val.data.addr)
- this.$set(this.form,'regionId',val.data.addrId)
+ else {
+ this.$set(this.form, 'region', val.data.addr)
+ this.$set(this.form, 'regionId', val.data.addrId)
}
},
//鏌ョ湅浼氬憳
@@ -474,9 +546,10 @@
// 鎻愪氦淇敼鏁版嵁
handleSubmitModal() {
- const { nickName, sex, username, face, newPassword,id,regionId,region } = this.form;
+ debugger
+ const { nickName, sex, username, face, newPassword, id, regionId, region } = this.form;
let time = new Date(this.form.birthday);
- let birthday = this.form.birthday=== undefined?'':
+ let birthday = this.form.birthday === undefined ? '' :
time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate();
let submit = {
regionId,
@@ -489,6 +562,7 @@
id
};
+ submit.tags = this.selectTagIds
if (newPassword) {
submit.password = this.md5(newPassword);
}
@@ -499,9 +573,35 @@
}
});
},
+ selectTag(e) {
+ debugger
+ if (this.selectTagIds.indexOf(e.value) != -1) {
+ this.selectTagIds.splice(this.selectTagIds.indexOf(e.value), 1)
+ this.selectTags.splice(this.selectTags.indexOf(e.label), 1)
+ }
+ else {
+ this.selectTagIds.push(e.value)
+ this.selectTags.push(e.label)
+ }
+ console.log(this.selectTags);
+
+ },
+ remoteMethod(query) {
+ this.selectLoading = true;
+ var params = {
+ "tagTypeKey": "USER",
+ "pageNumber": 1,
+ "pageSize": 500
+ }
+ getTags(params).then(res => {
+ this.options = res.data;
+ this.selectLoading = false;
+ });
+ },
},
mounted() {
this.getData();
+ this.remoteMethod("")
},
};
</script>
@@ -509,9 +609,11 @@
/deep/ .ivu-table-wrapper {
width: 100%;
}
+
/deep/ .ivu-card {
width: 100%;
}
+
.face {
width: 60px;
height: 60px;
--
Gitblit v1.8.0