mirror of
https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git
synced 2026-11-13 04:18:55 +08:00
refactor: 四端完成 Options API → script setup + vuex → pinia 迁移
- buyer(95) / seller(169) / im(53) / manager(280) 共 597 个组件全部从 Options API 转换为 <script setup> - 四端 vuex 全部移除,状态管理统一迁移至 pinia 4(stores/ 目录) - util.js 等基础设施去除 vm 首参依赖;全局属性($Message/$filters 等)在 script 内改为具名导入 - 被外部 ref 访问的公共组件均已补齐 defineExpose(清单见各端 MIGRATION-VUE3.md) - 各端 eslint 启用 vue/component-api-style 防止新代码回退 Options API - 四端 yarn build 全部通过;迁移约定与注意事项已更新至各端 MIGRATION-VUE3.md
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
<div class="search">
|
||||
<el-card>
|
||||
<el-form
|
||||
ref="searchForm"
|
||||
ref="searchFormRef"
|
||||
:model="searchForm"
|
||||
inline
|
||||
label-width="70px"
|
||||
@@ -168,7 +168,7 @@
|
||||
|
||||
<el-dialog v-model="addFlag" title="添加会员" width="500px" destroy-on-close class="add-member-dialog">
|
||||
<el-form
|
||||
ref="addMemberForm"
|
||||
ref="addMemberFormRef"
|
||||
:model="addMemberForm"
|
||||
:rules="addRule"
|
||||
label-width="100px"
|
||||
@@ -210,7 +210,7 @@
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="descFlag" :title="descTitle" width="500px" destroy-on-close>
|
||||
<el-form ref="form" :model="form" :rules="ruleValidate" label-width="80px">
|
||||
<el-form ref="formRef" :model="form" :rules="ruleValidate" label-width="80px">
|
||||
<el-input v-model="form.id" style="display: none" />
|
||||
<el-form-item label="头像">
|
||||
<img :src="form.face || defaultPic" class="face" />
|
||||
@@ -251,7 +251,7 @@
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="walletIncreaseFlag" title="增加余额" width="420px" destroy-on-close>
|
||||
<el-form ref="walletIncreaseForm" :model="walletIncreaseForm" :rules="walletIncreaseRule" label-width="90px">
|
||||
<el-form ref="walletIncreaseFormRef" :model="walletIncreaseForm" :rules="walletIncreaseRule" label-width="90px">
|
||||
<el-form-item label="充值金额" prop="rechargeMoney">
|
||||
<el-input-number v-model="walletIncreaseForm.rechargeMoney" :min="0.01" :precision="2" style="width: 240px" />
|
||||
</el-form-item>
|
||||
@@ -263,7 +263,7 @@
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="memberPointFlag" title="修改积分" width="420px" destroy-on-close>
|
||||
<el-form ref="memberPointForm" :model="memberPointForm" :rules="memberPointRule" label-width="90px">
|
||||
<el-form ref="memberPointFormRef" :model="memberPointForm" :rules="memberPointRule" label-width="90px">
|
||||
<el-form-item label="类型" prop="type">
|
||||
<el-radio-group v-model="memberPointForm.type">
|
||||
<el-radio-button value="INCREASE">增加</el-radio-button>
|
||||
@@ -281,7 +281,7 @@
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="memberGroupFlag" title="设定会员分组" width="420px" destroy-on-close>
|
||||
<el-form ref="memberGroupForm" :model="memberGroupForm" :rules="memberGroupRule" label-width="90px">
|
||||
<el-form ref="memberGroupFormRef" :model="memberGroupForm" :rules="memberGroupRule" label-width="90px">
|
||||
<el-form-item label="会员分组" prop="groupId">
|
||||
<el-select v-model="memberGroupForm.groupId" clearable filterable style="width: 240px">
|
||||
<el-option
|
||||
@@ -300,13 +300,14 @@
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="picModelFlag" width="1200px">
|
||||
<ossManage ref="ossManage" @callback="callbackSelected" :isComponent="true" :initialize="picModelFlag" />
|
||||
<ossManage ref="ossManageRef" @callback="callbackSelected" :isComponent="true" :initialize="picModelFlag" />
|
||||
</el-dialog>
|
||||
<multipleMap ref="map" @callback="selectedRegion" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
<script setup>
|
||||
import { ref, watch, nextTick, onMounted } from "vue";
|
||||
import { ArrowDown } from "@element-plus/icons-vue";
|
||||
import multipleMap from "@/components/map/multiple-map";
|
||||
import * as API_Member from "@/api/member.js";
|
||||
@@ -314,451 +315,456 @@ import ossManage from "@/views/sys/oss-manage/ossManage";
|
||||
import * as RegExp from "@/libs/RegExp.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { customRouterPush } from "@/utils/filters";
|
||||
import { md5 } from "@/utils/md5.js";
|
||||
import defaultPic from "@/assets/default.png";
|
||||
|
||||
export default {
|
||||
name: "member",
|
||||
components: {
|
||||
multipleMap,
|
||||
ossManage,
|
||||
ArrowDown,
|
||||
defineOptions({ name: "member" });
|
||||
|
||||
const props = defineProps({
|
||||
selectedMember: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
props: {
|
||||
selectedMember: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
selectedList: {
|
||||
type: null,
|
||||
default: () => [],
|
||||
},
|
||||
checkboxSelect: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
selectedList: {
|
||||
type: null,
|
||||
default: () => [],
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
defaultPic,
|
||||
descTitle: "",
|
||||
descFlag: false,
|
||||
loading: true,
|
||||
addFlag: false,
|
||||
addMemberForm: {
|
||||
mobile: "",
|
||||
username: "",
|
||||
password: "",
|
||||
},
|
||||
searchForm: {
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
order: "desc",
|
||||
id: "",
|
||||
username: "",
|
||||
mobile: "",
|
||||
disabled: "OPEN",
|
||||
groupId: "",
|
||||
},
|
||||
picModelFlag: false,
|
||||
form: {},
|
||||
walletIncreaseFlag: false,
|
||||
walletIncreaseLoading: false,
|
||||
walletIncreaseForm: {
|
||||
memberId: "",
|
||||
rechargeMoney: null,
|
||||
},
|
||||
walletIncreaseRule: {
|
||||
rechargeMoney: [
|
||||
{ required: true, type: "number", message: "请输入充值金额", trigger: "change" },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (typeof value !== "number" || value <= 0) {
|
||||
callback(new Error("充值金额必须大于0"));
|
||||
return;
|
||||
}
|
||||
callback();
|
||||
},
|
||||
trigger: "change",
|
||||
},
|
||||
],
|
||||
},
|
||||
memberPointFlag: false,
|
||||
memberPointLoading: false,
|
||||
memberPointForm: {
|
||||
memberId: "",
|
||||
point: null,
|
||||
type: "INCREASE",
|
||||
},
|
||||
selectedRows: [],
|
||||
memberGroupFlag: false,
|
||||
memberGroupLoading: false,
|
||||
memberGroupForm: {
|
||||
groupId: "",
|
||||
},
|
||||
memberGroupRule: {
|
||||
groupId: [{ required: true, message: "请选择会员分组", trigger: "change" }],
|
||||
},
|
||||
memberGroupList: [],
|
||||
memberGradeList: [],
|
||||
memberPointRule: {
|
||||
type: [{ required: true, message: "请选择类型", trigger: "change" }],
|
||||
point: [
|
||||
{ required: true, type: "number", message: "请输入积分", trigger: "change" },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (typeof value !== "number" || value <= 0) {
|
||||
callback(new Error("积分必须大于0"));
|
||||
return;
|
||||
}
|
||||
callback();
|
||||
},
|
||||
trigger: "change",
|
||||
},
|
||||
],
|
||||
},
|
||||
addRule: {
|
||||
mobile: [
|
||||
{ required: true, message: "请输入手机号码" },
|
||||
{ pattern: RegExp.mobile, message: "请输入正确的手机号" },
|
||||
],
|
||||
username: [{ required: true, message: "请输入客户名称" }],
|
||||
password: [{ required: true, message: "请输入密码" }],
|
||||
},
|
||||
ruleValidate: {},
|
||||
data: [],
|
||||
total: 0,
|
||||
selectMember: [],
|
||||
};
|
||||
checkboxSelect: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
watch: {
|
||||
selectedList: {
|
||||
handler(val) {
|
||||
this.selectMember = JSON.parse(JSON.stringify(val));
|
||||
this.init(this.data);
|
||||
});
|
||||
const emit = defineEmits(["callback"]);
|
||||
|
||||
// 模板 el-form/el-table 的模板 ref(原 ref="searchForm"/"addMemberForm"/"form" 等与 data 同名会互相覆盖,
|
||||
// 改名为 xxxRef;ossManage 与 import 同名,改名 ossManageRef)
|
||||
const searchFormRef = ref(null);
|
||||
const table = ref(null);
|
||||
const addMemberFormRef = ref(null);
|
||||
const formRef = ref(null);
|
||||
const walletIncreaseFormRef = ref(null);
|
||||
const memberPointFormRef = ref(null);
|
||||
const memberGroupFormRef = ref(null);
|
||||
const ossManageRef = ref(null);
|
||||
|
||||
const descTitle = ref("");
|
||||
const descFlag = ref(false);
|
||||
const loading = ref(true);
|
||||
const addFlag = ref(false);
|
||||
const addMemberForm = ref({
|
||||
mobile: "",
|
||||
username: "",
|
||||
password: "",
|
||||
});
|
||||
const searchForm = ref({
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
order: "desc",
|
||||
id: "",
|
||||
username: "",
|
||||
mobile: "",
|
||||
disabled: "OPEN",
|
||||
groupId: "",
|
||||
});
|
||||
const picModelFlag = ref(false);
|
||||
const form = ref({});
|
||||
const walletIncreaseFlag = ref(false);
|
||||
const walletIncreaseLoading = ref(false);
|
||||
const walletIncreaseForm = ref({
|
||||
memberId: "",
|
||||
rechargeMoney: null,
|
||||
});
|
||||
const walletIncreaseRule = ref({
|
||||
rechargeMoney: [
|
||||
{ required: true, type: "number", message: "请输入充值金额", trigger: "change" },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (typeof value !== "number" || value <= 0) {
|
||||
callback(new Error("充值金额必须大于0"));
|
||||
return;
|
||||
}
|
||||
callback();
|
||||
},
|
||||
deep: true,
|
||||
immediate: true,
|
||||
trigger: "change",
|
||||
},
|
||||
],
|
||||
});
|
||||
const memberPointFlag = ref(false);
|
||||
const memberPointLoading = ref(false);
|
||||
const memberPointForm = ref({
|
||||
memberId: "",
|
||||
point: null,
|
||||
type: "INCREASE",
|
||||
});
|
||||
const selectedRows = ref([]);
|
||||
const memberGroupFlag = ref(false);
|
||||
const memberGroupLoading = ref(false);
|
||||
const memberGroupForm = ref({
|
||||
groupId: "",
|
||||
});
|
||||
const memberGroupRule = ref({
|
||||
groupId: [{ required: true, message: "请选择会员分组", trigger: "change" }],
|
||||
});
|
||||
const memberGroupList = ref([]);
|
||||
const memberGradeList = ref([]);
|
||||
const memberPointRule = ref({
|
||||
type: [{ required: true, message: "请选择类型", trigger: "change" }],
|
||||
point: [
|
||||
{ required: true, type: "number", message: "请输入积分", trigger: "change" },
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (typeof value !== "number" || value <= 0) {
|
||||
callback(new Error("积分必须大于0"));
|
||||
return;
|
||||
}
|
||||
callback();
|
||||
},
|
||||
trigger: "change",
|
||||
},
|
||||
],
|
||||
});
|
||||
const addRule = ref({
|
||||
mobile: [
|
||||
{ required: true, message: "请输入手机号码" },
|
||||
{ pattern: RegExp.mobile, message: "请输入正确的手机号" },
|
||||
],
|
||||
username: [{ required: true, message: "请输入客户名称" }],
|
||||
password: [{ required: true, message: "请输入密码" }],
|
||||
});
|
||||
const ruleValidate = ref({});
|
||||
const data = ref([]);
|
||||
const total = ref(0);
|
||||
const selectMember = ref([]);
|
||||
|
||||
watch(
|
||||
() => props.selectedList,
|
||||
(val) => {
|
||||
selectMember.value = JSON.parse(JSON.stringify(val));
|
||||
init(data.value);
|
||||
},
|
||||
methods: {
|
||||
handleMoreCommand(name, row) {
|
||||
if (name === "edit") this.editPerm(row);
|
||||
if (name === "disabled") this.disabled(row);
|
||||
if (name === "increaseWallet") this.openWalletIncrease(row);
|
||||
if (name === "updatePoint") this.openMemberPoint(row);
|
||||
},
|
||||
onSelectionChange(selection) {
|
||||
if (this.selectedMember && this.checkboxSelect) {
|
||||
this.selectMember = selection || [];
|
||||
return;
|
||||
{ deep: true, immediate: true }
|
||||
);
|
||||
|
||||
function handleMoreCommand(name, row) {
|
||||
if (name === "edit") editPerm(row);
|
||||
if (name === "disabled") disabled(row);
|
||||
if (name === "increaseWallet") openWalletIncrease(row);
|
||||
if (name === "updatePoint") openMemberPoint(row);
|
||||
}
|
||||
function onSelectionChange(selection) {
|
||||
if (props.selectedMember && props.checkboxSelect) {
|
||||
selectMember.value = selection || [];
|
||||
return;
|
||||
}
|
||||
selectedRows.value = selection || [];
|
||||
}
|
||||
function getSelection() {
|
||||
return selectMember.value || [];
|
||||
}
|
||||
function syncTableSelection() {
|
||||
if (!props.selectedMember || !props.checkboxSelect) {
|
||||
return;
|
||||
}
|
||||
nextTick(() => {
|
||||
clearSelection();
|
||||
data.value.forEach((row) => {
|
||||
if (selectMember.value.some((member) => member.id === row.id)) {
|
||||
table.value?.toggleRowSelection(row, true);
|
||||
}
|
||||
this.selectedRows = selection || [];
|
||||
},
|
||||
getSelection() {
|
||||
return this.selectMember || [];
|
||||
},
|
||||
syncTableSelection() {
|
||||
if (!this.selectedMember || !this.checkboxSelect) {
|
||||
return;
|
||||
});
|
||||
});
|
||||
}
|
||||
function openSetMemberGroup() {
|
||||
memberGroupFlag.value = true;
|
||||
memberGroupLoading.value = false;
|
||||
memberGroupForm.value = { groupId: "" };
|
||||
nextTick(() => {
|
||||
if (memberGroupFormRef.value) memberGroupFormRef.value.resetFields();
|
||||
});
|
||||
loadMemberGroupList();
|
||||
}
|
||||
function loadMemberGroupList() {
|
||||
API_Member.getMemberGroupByPage({ pageNumber: 1, pageSize: 1000 }).then((res) => {
|
||||
if (res && res.success && res.result) {
|
||||
memberGroupList.value = res.result.records || [];
|
||||
}
|
||||
});
|
||||
}
|
||||
function loadMemberGradeList() {
|
||||
API_Member.getMemberGradeByPage({ pageNumber: 1, pageSize: 1000 }).then((res) => {
|
||||
if (res && res.success && res.result) {
|
||||
memberGradeList.value = res.result || [];
|
||||
}
|
||||
});
|
||||
}
|
||||
function clearSelection() {
|
||||
table.value?.clearSelection();
|
||||
}
|
||||
function submitSetMemberGroup() {
|
||||
if (selectedRows.value.length === 0) {
|
||||
ElMessage.warning("请先选择会员");
|
||||
return;
|
||||
}
|
||||
memberGroupFormRef.value.validate((valid) => {
|
||||
if (!valid) return;
|
||||
const memberIds = selectedRows.value.map((item) => item.id);
|
||||
const groupId = memberGroupForm.value.groupId;
|
||||
memberGroupLoading.value = true;
|
||||
Promise.all(
|
||||
memberIds.map((memberId) => API_Member.setMemberUserGroups(memberId, [groupId]))
|
||||
)
|
||||
.then((results) => {
|
||||
memberGroupLoading.value = false;
|
||||
const failed = results.find((res) => !res || !res.success);
|
||||
if (failed) {
|
||||
ElMessage.error(failed.message || "设置失败");
|
||||
return;
|
||||
}
|
||||
ElMessage.success("设置成功");
|
||||
memberGroupFlag.value = false;
|
||||
selectedRows.value = [];
|
||||
clearSelection();
|
||||
getData();
|
||||
})
|
||||
.catch(() => {
|
||||
memberGroupLoading.value = false;
|
||||
ElMessage.error("设置失败,请稍后重试");
|
||||
});
|
||||
});
|
||||
}
|
||||
function callback(val) {
|
||||
selectMember.value.forEach((item) => {
|
||||
item.___selected = false;
|
||||
});
|
||||
val.___selected = !val.___selected;
|
||||
let findUser = selectMember.value.find((item) => item.id == val.id);
|
||||
if (!findUser) {
|
||||
selectMember.value.push(val);
|
||||
} else {
|
||||
selectMember.value.map((item, index) => {
|
||||
if (item.id == findUser.id) {
|
||||
selectMember.value.splice(index, 1);
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
this.clearSelection();
|
||||
this.data.forEach((row) => {
|
||||
if (this.selectMember.some((member) => member.id === row.id)) {
|
||||
this.$refs.table?.toggleRowSelection(row, true);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
openSetMemberGroup() {
|
||||
this.memberGroupFlag = true;
|
||||
this.memberGroupLoading = false;
|
||||
this.memberGroupForm = { groupId: "" };
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.memberGroupForm) this.$refs.memberGroupForm.resetFields();
|
||||
});
|
||||
this.loadMemberGroupList();
|
||||
},
|
||||
loadMemberGroupList() {
|
||||
API_Member.getMemberGroupByPage({ pageNumber: 1, pageSize: 1000 }).then((res) => {
|
||||
if (res && res.success && res.result) {
|
||||
this.memberGroupList = res.result.records || [];
|
||||
});
|
||||
}
|
||||
emit("callback", val);
|
||||
}
|
||||
function init(list) {
|
||||
list.forEach((item) => {
|
||||
if (selectMember.value.length != 0) {
|
||||
selectMember.value.forEach((member) => {
|
||||
if (member.id == item.id) {
|
||||
item.___selected = true;
|
||||
}
|
||||
});
|
||||
},
|
||||
loadMemberGradeList() {
|
||||
API_Member.getMemberGradeByPage({ pageNumber: 1, pageSize: 1000 }).then((res) => {
|
||||
if (res && res.success && res.result) {
|
||||
this.memberGradeList = res.result || [];
|
||||
} else {
|
||||
item.___selected = false;
|
||||
}
|
||||
});
|
||||
data.value = list;
|
||||
}
|
||||
function changePage() {
|
||||
getData();
|
||||
}
|
||||
function changePageSize() {
|
||||
searchForm.value.pageNumber = 1;
|
||||
getData();
|
||||
}
|
||||
function handleSearch() {
|
||||
searchForm.value.pageNumber = 1;
|
||||
searchForm.value.pageSize = 20;
|
||||
getData();
|
||||
}
|
||||
function editPerm(val) {
|
||||
descTitle.value = `查看用户 ${val.username}`;
|
||||
descFlag.value = true;
|
||||
getMemberInfo(val.id);
|
||||
}
|
||||
function addMember() {
|
||||
addMemberForm.value = {
|
||||
mobile: "",
|
||||
username: "",
|
||||
password: "",
|
||||
};
|
||||
addFlag.value = true;
|
||||
nextTick(() => {
|
||||
addMemberFormRef.value?.clearValidate();
|
||||
});
|
||||
}
|
||||
function getMemberInfo(id) {
|
||||
API_Member.getMemberInfoData(id).then((res) => {
|
||||
if (res.result) {
|
||||
form.value = res.result;
|
||||
}
|
||||
});
|
||||
}
|
||||
function getData() {
|
||||
loading.value = true;
|
||||
if (!props.selectedMember) {
|
||||
selectedRows.value = [];
|
||||
clearSelection();
|
||||
}
|
||||
API_Member.getMemberListData(searchForm.value).then((res) => {
|
||||
if (res.result.records) {
|
||||
loading.value = false;
|
||||
init(res.result.records);
|
||||
total.value = res.result.total;
|
||||
syncTableSelection();
|
||||
}
|
||||
});
|
||||
}
|
||||
function openPicSelector() {
|
||||
picModelFlag.value = true;
|
||||
nextTick(() => {
|
||||
if (ossManageRef.value) {
|
||||
ossManageRef.value.selectImage = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
function callbackSelected(val) {
|
||||
picModelFlag.value = false;
|
||||
form.value.face = val.url;
|
||||
}
|
||||
function addMemberSubmit() {
|
||||
addMemberForm.value.password = md5(addMemberForm.value.password);
|
||||
addMemberFormRef.value.validate((valid) => {
|
||||
if (valid) {
|
||||
API_Member.addMember(addMemberForm.value).then((res) => {
|
||||
if (res.result) {
|
||||
addMemberFormRef.value.resetFields();
|
||||
getData();
|
||||
ElMessage.success("添加成功!");
|
||||
addFlag.value = false;
|
||||
}
|
||||
});
|
||||
},
|
||||
clearSelection() {
|
||||
this.$refs.table?.clearSelection();
|
||||
},
|
||||
submitSetMemberGroup() {
|
||||
if (this.selectedRows.length === 0) {
|
||||
ElMessage.warning("请先选择会员");
|
||||
return;
|
||||
}
|
||||
});
|
||||
}
|
||||
function selectedRegion(val) {
|
||||
if (val.type === "select") {
|
||||
const paths = val.data.map((item) => item.name).join(",");
|
||||
const ids = val.data.map((item) => item.id).join(",");
|
||||
form.value.region = paths;
|
||||
form.value.regionId = ids;
|
||||
} else {
|
||||
form.value.region = val.data.addr;
|
||||
form.value.regionId = val.data.addrId;
|
||||
}
|
||||
}
|
||||
function detail(row) {
|
||||
customRouterPush({ name: "member-detail", query: { id: row.id } });
|
||||
}
|
||||
function disabled(v) {
|
||||
let params = {
|
||||
memberIds: [v.id],
|
||||
disabled: false,
|
||||
};
|
||||
ElMessageBox.confirm("确认禁用此会员?", "提示", { type: "warning" }).then(() => {
|
||||
API_Member.updateMemberStatus(params).then((res) => {
|
||||
if (res.success) {
|
||||
ElMessage.success("禁用成功");
|
||||
getData();
|
||||
}
|
||||
this.$refs.memberGroupForm.validate((valid) => {
|
||||
if (!valid) return;
|
||||
const memberIds = this.selectedRows.map((item) => item.id);
|
||||
const groupId = this.memberGroupForm.groupId;
|
||||
this.memberGroupLoading = true;
|
||||
Promise.all(
|
||||
memberIds.map((memberId) => API_Member.setMemberUserGroups(memberId, [groupId]))
|
||||
)
|
||||
.then((results) => {
|
||||
this.memberGroupLoading = false;
|
||||
const failed = results.find((res) => !res || !res.success);
|
||||
if (failed) {
|
||||
ElMessage.error(failed.message || "设置失败");
|
||||
return;
|
||||
}
|
||||
ElMessage.success("设置成功");
|
||||
this.memberGroupFlag = false;
|
||||
this.selectedRows = [];
|
||||
this.clearSelection();
|
||||
this.getData();
|
||||
})
|
||||
.catch(() => {
|
||||
this.memberGroupLoading = false;
|
||||
ElMessage.error("设置失败,请稍后重试");
|
||||
});
|
||||
});
|
||||
},
|
||||
callback(val) {
|
||||
this.selectMember.forEach((item) => {
|
||||
item.___selected = false;
|
||||
});
|
||||
val.___selected = !val.___selected;
|
||||
let findUser = this.selectMember.find((item) => item.id == val.id);
|
||||
if (!findUser) {
|
||||
this.selectMember.push(val);
|
||||
} else {
|
||||
this.selectMember.map((item, index) => {
|
||||
if (item.id == findUser.id) {
|
||||
this.selectMember.splice(index, 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
this.$emit("callback", val);
|
||||
},
|
||||
init(data) {
|
||||
data.forEach((item) => {
|
||||
if (this.selectMember.length != 0) {
|
||||
this.selectMember.forEach((member) => {
|
||||
if (member.id == item.id) {
|
||||
item.___selected = true;
|
||||
}
|
||||
});
|
||||
});
|
||||
}).catch(() => {});
|
||||
}
|
||||
function openWalletIncrease(row) {
|
||||
walletIncreaseLoading.value = false;
|
||||
walletIncreaseForm.value = { memberId: row.id, rechargeMoney: null };
|
||||
walletIncreaseFlag.value = true;
|
||||
nextTick(() => {
|
||||
walletIncreaseFormRef.value && walletIncreaseFormRef.value.resetFields();
|
||||
});
|
||||
}
|
||||
function submitWalletIncrease() {
|
||||
walletIncreaseFormRef.value.validate((valid) => {
|
||||
if (!valid) return;
|
||||
walletIncreaseLoading.value = true;
|
||||
API_Member.increaseMemberWallet({
|
||||
memberId: walletIncreaseForm.value.memberId,
|
||||
rechargeMoney: walletIncreaseForm.value.rechargeMoney,
|
||||
})
|
||||
.then((res) => {
|
||||
if (res && res.success) {
|
||||
ElMessage.success("充值成功");
|
||||
walletIncreaseFlag.value = false;
|
||||
getData();
|
||||
} else {
|
||||
item.___selected = false;
|
||||
ElMessage.error((res && res.message) || "充值失败");
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
walletIncreaseLoading.value = false;
|
||||
});
|
||||
this.data = data;
|
||||
},
|
||||
changePage() {
|
||||
this.getData();
|
||||
},
|
||||
changePageSize() {
|
||||
this.searchForm.pageNumber = 1;
|
||||
this.getData();
|
||||
},
|
||||
handleSearch() {
|
||||
this.searchForm.pageNumber = 1;
|
||||
this.searchForm.pageSize = 20;
|
||||
this.getData();
|
||||
},
|
||||
editPerm(val) {
|
||||
this.descTitle = `查看用户 ${val.username}`;
|
||||
this.descFlag = true;
|
||||
this.getMemberInfo(val.id);
|
||||
},
|
||||
addMember() {
|
||||
this.addMemberForm = {
|
||||
mobile: "",
|
||||
username: "",
|
||||
password: "",
|
||||
};
|
||||
this.addFlag = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addMemberForm?.clearValidate();
|
||||
});
|
||||
},
|
||||
getMemberInfo(id) {
|
||||
API_Member.getMemberInfoData(id).then((res) => {
|
||||
if (res.result) {
|
||||
this.form = res.result;
|
||||
});
|
||||
}
|
||||
function openMemberPoint(row) {
|
||||
memberPointLoading.value = false;
|
||||
memberPointForm.value = { memberId: row.id, point: null, type: "INCREASE" };
|
||||
memberPointFlag.value = true;
|
||||
nextTick(() => {
|
||||
memberPointFormRef.value && memberPointFormRef.value.resetFields();
|
||||
});
|
||||
}
|
||||
function submitMemberPoint() {
|
||||
memberPointFormRef.value.validate((valid) => {
|
||||
if (!valid) return;
|
||||
memberPointLoading.value = true;
|
||||
API_Member.updateMemberPoint({
|
||||
memberId: memberPointForm.value.memberId,
|
||||
point: memberPointForm.value.point,
|
||||
type: memberPointForm.value.type,
|
||||
})
|
||||
.then((res) => {
|
||||
if (res && res.success) {
|
||||
ElMessage.success("修改成功");
|
||||
memberPointFlag.value = false;
|
||||
getData();
|
||||
} else {
|
||||
ElMessage.error((res && res.message) || "修改失败");
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
memberPointLoading.value = false;
|
||||
});
|
||||
},
|
||||
getData() {
|
||||
this.loading = true;
|
||||
if (!this.selectedMember) {
|
||||
this.selectedRows = [];
|
||||
this.clearSelection();
|
||||
}
|
||||
API_Member.getMemberListData(this.searchForm).then((res) => {
|
||||
if (res.result.records) {
|
||||
this.loading = false;
|
||||
this.init(res.result.records);
|
||||
this.total = res.result.total;
|
||||
this.syncTableSelection();
|
||||
}
|
||||
});
|
||||
},
|
||||
openPicSelector() {
|
||||
this.picModelFlag = true;
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.ossManage) {
|
||||
this.$refs.ossManage.selectImage = true;
|
||||
}
|
||||
});
|
||||
},
|
||||
callbackSelected(val) {
|
||||
this.picModelFlag = false;
|
||||
this.form.face = val.url;
|
||||
},
|
||||
addMemberSubmit() {
|
||||
this.addMemberForm.password = this.md5(this.addMemberForm.password);
|
||||
this.$refs.addMemberForm.validate((valid) => {
|
||||
if (valid) {
|
||||
API_Member.addMember(this.addMemberForm).then((res) => {
|
||||
if (res.result) {
|
||||
this.$refs.addMemberForm.resetFields();
|
||||
this.getData();
|
||||
ElMessage.success("添加成功!");
|
||||
this.addFlag = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
selectedRegion(val) {
|
||||
if (val.type === "select") {
|
||||
const paths = val.data.map((item) => item.name).join(",");
|
||||
const ids = val.data.map((item) => item.id).join(",");
|
||||
this.form.region = paths;
|
||||
this.form.regionId = ids;
|
||||
} else {
|
||||
this.form.region = val.data.addr;
|
||||
this.form.regionId = val.data.addrId;
|
||||
}
|
||||
},
|
||||
detail(row) {
|
||||
customRouterPush({ name: "member-detail", query: { id: row.id } });
|
||||
},
|
||||
disabled(v) {
|
||||
let params = {
|
||||
memberIds: [v.id],
|
||||
disabled: false,
|
||||
};
|
||||
ElMessageBox.confirm("确认禁用此会员?", "提示", { type: "warning" }).then(() => {
|
||||
API_Member.updateMemberStatus(params).then((res) => {
|
||||
if (res.success) {
|
||||
ElMessage.success("禁用成功");
|
||||
this.getData();
|
||||
}
|
||||
});
|
||||
}).catch(() => {});
|
||||
},
|
||||
openWalletIncrease(row) {
|
||||
this.walletIncreaseLoading = false;
|
||||
this.walletIncreaseForm = { memberId: row.id, rechargeMoney: null };
|
||||
this.walletIncreaseFlag = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.walletIncreaseForm && this.$refs.walletIncreaseForm.resetFields();
|
||||
});
|
||||
},
|
||||
submitWalletIncrease() {
|
||||
this.$refs.walletIncreaseForm.validate((valid) => {
|
||||
if (!valid) return;
|
||||
this.walletIncreaseLoading = true;
|
||||
API_Member.increaseMemberWallet({
|
||||
memberId: this.walletIncreaseForm.memberId,
|
||||
rechargeMoney: this.walletIncreaseForm.rechargeMoney,
|
||||
})
|
||||
.then((res) => {
|
||||
if (res && res.success) {
|
||||
ElMessage.success("充值成功");
|
||||
this.walletIncreaseFlag = false;
|
||||
this.getData();
|
||||
} else {
|
||||
ElMessage.error((res && res.message) || "充值失败");
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
this.walletIncreaseLoading = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
openMemberPoint(row) {
|
||||
this.memberPointLoading = false;
|
||||
this.memberPointForm = { memberId: row.id, point: null, type: "INCREASE" };
|
||||
this.memberPointFlag = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.memberPointForm && this.$refs.memberPointForm.resetFields();
|
||||
});
|
||||
},
|
||||
submitMemberPoint() {
|
||||
this.$refs.memberPointForm.validate((valid) => {
|
||||
if (!valid) return;
|
||||
this.memberPointLoading = true;
|
||||
API_Member.updateMemberPoint({
|
||||
memberId: this.memberPointForm.memberId,
|
||||
point: this.memberPointForm.point,
|
||||
type: this.memberPointForm.type,
|
||||
})
|
||||
.then((res) => {
|
||||
if (res && res.success) {
|
||||
ElMessage.success("修改成功");
|
||||
this.memberPointFlag = false;
|
||||
this.getData();
|
||||
} else {
|
||||
ElMessage.error((res && res.message) || "修改失败");
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
this.memberPointLoading = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
handleSubmitModal() {
|
||||
const { nickName, sex, username, face, newPassword, id, regionId, region } = this.form;
|
||||
let time = new Date(this.form.birthday);
|
||||
let birthday =
|
||||
this.form.birthday === undefined
|
||||
? ""
|
||||
: time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate();
|
||||
let submit = {
|
||||
regionId,
|
||||
region,
|
||||
nickName,
|
||||
sex,
|
||||
birthday,
|
||||
face,
|
||||
id,
|
||||
};
|
||||
if (newPassword) {
|
||||
submit.password = this.md5(newPassword);
|
||||
}
|
||||
API_Member.updateMember(submit).then((res) => {
|
||||
if (res.result) {
|
||||
ElMessage.success("修改成功!");
|
||||
this.descFlag = false;
|
||||
this.getData();
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.getData();
|
||||
this.loadMemberGroupList();
|
||||
this.loadMemberGradeList();
|
||||
},
|
||||
};
|
||||
});
|
||||
}
|
||||
function handleSubmitModal() {
|
||||
const { nickName, sex, username, face, newPassword, id, regionId, region } = form.value;
|
||||
let time = new Date(form.value.birthday);
|
||||
let birthday =
|
||||
form.value.birthday === undefined
|
||||
? ""
|
||||
: time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate();
|
||||
let submit = {
|
||||
regionId,
|
||||
region,
|
||||
nickName,
|
||||
sex,
|
||||
birthday,
|
||||
face,
|
||||
id,
|
||||
};
|
||||
if (newPassword) {
|
||||
submit.password = md5(newPassword);
|
||||
}
|
||||
API_Member.updateMember(submit).then((res) => {
|
||||
if (res.result) {
|
||||
ElMessage.success("修改成功!");
|
||||
descFlag.value = false;
|
||||
getData();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getData();
|
||||
loadMemberGroupList();
|
||||
loadMemberGradeList();
|
||||
});
|
||||
|
||||
// 外部通过 ref 调用(promotions/coupon-activity/coupon-publish.vue 的 memberLayoutRef.getSelection())
|
||||
defineExpose({ getSelection });
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.face {
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
width="500px"
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<el-form ref="addressForm" :model="addressForm" label-width="100px" :rules="addressFormValidate">
|
||||
<el-form ref="addressFormRef" :model="addressForm" label-width="100px" :rules="addressFormValidate">
|
||||
<el-form-item label="收货人姓名" prop="name">
|
||||
<el-input v-model="addressForm.name" maxlength="8" clearable style="width: 80%" />
|
||||
</el-form-item>
|
||||
@@ -388,7 +388,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="收货人地址" prop="consigneeAddressPath">
|
||||
<span>{{ addressForm.consigneeAddressPath || "暂无地址" }}</span>
|
||||
<el-button style="margin-left: 10px" @click="$refs.map.open()">选择</el-button>
|
||||
<el-button style="margin-left: 10px" @click="map.open()">选择</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="详细地址" prop="detail">
|
||||
<el-input v-model="addressForm.detail" maxlength="35" clearable style="width: 80%" />
|
||||
@@ -412,7 +412,9 @@
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
<script setup>
|
||||
import { ref, reactive, nextTick, onMounted } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import * as API_Member from "@/api/member.js";
|
||||
import ossManage from "@/views/sys/oss-manage/ossManage";
|
||||
import multipleMap from "@/components/map/multiple-map";
|
||||
@@ -420,374 +422,373 @@ import * as RegExp from "@/libs/RegExp.js";
|
||||
import * as API_Order from "@/api/order.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
|
||||
export default {
|
||||
name: "memberDetail",
|
||||
components: {
|
||||
ossManage,
|
||||
multipleMap,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
id: "",
|
||||
activeTab: "point",
|
||||
loading: true,
|
||||
addressLoading: false,
|
||||
memberInfo: {},
|
||||
memberWalletInfo: {},
|
||||
addressModalTitle: "",
|
||||
addressModalVisible: false,
|
||||
addressForm: {
|
||||
id: "",
|
||||
isDefault: 0,
|
||||
consigneeAddressPath: "",
|
||||
consigneeAddressIdPath: "",
|
||||
},
|
||||
selectDate: null,
|
||||
submitLoading: false,
|
||||
addressFormValidate: {
|
||||
name: [{ required: true, message: "收货人姓名不能为空" }],
|
||||
mobile: [
|
||||
{ required: true, message: "请输入收货人手机号码" },
|
||||
{
|
||||
pattern: RegExp.mobile,
|
||||
message: "请输入正确的手机号",
|
||||
},
|
||||
],
|
||||
consigneeAddressPath: [{ required: true, message: "收货人地址不能为空" }],
|
||||
detail: [{ required: true, message: "收货人详细地址不能为空" }],
|
||||
},
|
||||
pointData: [],
|
||||
pointTotal: 0,
|
||||
pointSearchForm: {
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
},
|
||||
orderData: [],
|
||||
orderTotal: 0,
|
||||
orderSearchForm: {
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
payStatus: "",
|
||||
orderSn: "",
|
||||
orderType: "",
|
||||
},
|
||||
addressData: [],
|
||||
addressTotal: 0,
|
||||
addressSearchForm: {
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
},
|
||||
walletSearchForm: {
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
sort: "createTime",
|
||||
order: "desc",
|
||||
},
|
||||
walletData: [],
|
||||
walletTotal: 0,
|
||||
receiptRecordSearchForm: {
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
sort: "createTime",
|
||||
order: "desc",
|
||||
},
|
||||
receiptRecordData: [],
|
||||
receiptRecordTotal: 0,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
orderTypeText(v) {
|
||||
const map = {
|
||||
NORMAL: "普通订单",
|
||||
VIRTUAL: "虚拟订单",
|
||||
GIFT: "赠品订单",
|
||||
PINTUAN: "拼团订单",
|
||||
};
|
||||
return map[v] || v || "";
|
||||
},
|
||||
clientTypeText(v) {
|
||||
const map = {
|
||||
H5: "移动端",
|
||||
PC: "PC端",
|
||||
WECHAT_MP: "小程序端",
|
||||
APP: "移动应用端",
|
||||
};
|
||||
return map[v] || v || "";
|
||||
},
|
||||
orderStatusText(v) {
|
||||
const map = {
|
||||
UNPAID: "未付款",
|
||||
PAID: "已付款",
|
||||
UNDELIVERED: "待发货",
|
||||
DELIVERED: "已发货",
|
||||
COMPLETED: "已完成",
|
||||
TAKE: "待核验",
|
||||
CANCELLED: "已关闭",
|
||||
};
|
||||
return map[v] || v || "";
|
||||
},
|
||||
payStatusText(v) {
|
||||
const map = {
|
||||
UNPAID: "未付款",
|
||||
PAID: "已付款",
|
||||
};
|
||||
return map[v] || v || "";
|
||||
},
|
||||
groupAfterSaleStatusText(v) {
|
||||
const map = {
|
||||
NEW: "未申请",
|
||||
NOT_APPLIED: "未申请",
|
||||
ALREADY_APPLIED: "已申请",
|
||||
EXPIRED: "已失效",
|
||||
};
|
||||
return map[v] || v || "";
|
||||
},
|
||||
groupComplainStatusText(v) {
|
||||
const map = {
|
||||
NEW: "未申请",
|
||||
NO_APPLY: "未申请",
|
||||
APPLYING: "申请中",
|
||||
COMPLETE: "已完成",
|
||||
EXPIRED: "已失效",
|
||||
CANCEL: "取消投诉",
|
||||
};
|
||||
return map[v] || v || "";
|
||||
},
|
||||
walletServiceTypeText(type) {
|
||||
if (type === "WALLET_WITHDRAWAL") return "余额提现";
|
||||
if (type === "WALLET_PAY") return "余额支付";
|
||||
if (type === "WALLET_REFUND") return "余额退款";
|
||||
if (type === "WALLET_RECHARGE") return "余额充值";
|
||||
return "佣金提成";
|
||||
},
|
||||
init() {
|
||||
this.getMemberInfo();
|
||||
this.getPointData();
|
||||
},
|
||||
memberInfoChange(v) {
|
||||
if (v == "point") {
|
||||
this.getPointData();
|
||||
}
|
||||
if (v == "address") {
|
||||
this.$nextTick(() => {
|
||||
this.getAddressData();
|
||||
});
|
||||
}
|
||||
if (v == "order") {
|
||||
this.getOrderData();
|
||||
}
|
||||
if (v == "wallet") {
|
||||
this.getMemberWalletData();
|
||||
this.getDepositLogData();
|
||||
}
|
||||
if (v == "receipt") {
|
||||
this.getReceiptRecordData();
|
||||
}
|
||||
},
|
||||
getMemberInfo() {
|
||||
API_Member.getMemberInfoData(this.id).then((res) => {
|
||||
this.memberInfo = res.result;
|
||||
});
|
||||
},
|
||||
memberStatusChange(v) {
|
||||
let params = {
|
||||
memberIds: [this.id],
|
||||
disabled: v,
|
||||
};
|
||||
API_Member.updateMemberStatus(params).then((res) => {});
|
||||
},
|
||||
getMemberWalletData() {
|
||||
this.loading = true;
|
||||
let params = {
|
||||
memberId: this.id,
|
||||
};
|
||||
API_Member.getMemberWallet(params).then((res) => {
|
||||
this.loading = false;
|
||||
if (res.success) {
|
||||
this.memberWalletInfo = res.result;
|
||||
}
|
||||
});
|
||||
this.loading = false;
|
||||
},
|
||||
getDepositLogData() {
|
||||
this.loading = true;
|
||||
this.walletSearchForm.memberId = this.id;
|
||||
API_Member.getUserWallet(this.walletSearchForm).then((res) => {
|
||||
this.loading = false;
|
||||
if (res.success) {
|
||||
this.walletData = res.result.records;
|
||||
this.walletTotal = res.result.total;
|
||||
}
|
||||
});
|
||||
this.loading = false;
|
||||
},
|
||||
getReceiptRecordData() {
|
||||
this.loading = true;
|
||||
this.receiptRecordSearchForm.pageNumber = 1;
|
||||
this.receiptRecordSearchForm.pageSize = 20;
|
||||
this.receiptRecordSearchForm.memberId = this.id;
|
||||
API_Order.getReceiptPage(this.receiptRecordSearchForm).then((res) => {
|
||||
this.loading = false;
|
||||
if (res.success) {
|
||||
this.receiptRecordData = res.result.records;
|
||||
this.receiptRecordTotal = res.result.total;
|
||||
}
|
||||
});
|
||||
this.loading = false;
|
||||
},
|
||||
getOrderData() {
|
||||
this.loading = true;
|
||||
this.orderSearchForm.pageNumber = 1;
|
||||
this.orderSearchForm.pageSize = 20;
|
||||
this.orderSearchForm.memberId = this.id;
|
||||
API_Order.getOrderList(this.orderSearchForm).then((res) => {
|
||||
this.loading = false;
|
||||
if (res.success) {
|
||||
this.orderData = res.result.records;
|
||||
this.orderTotal = res.result.total;
|
||||
}
|
||||
});
|
||||
this.loading = false;
|
||||
},
|
||||
orderDetail(v) {
|
||||
this.$router.push({
|
||||
name: "order-detail",
|
||||
query: { sn: v },
|
||||
});
|
||||
},
|
||||
getPointData() {
|
||||
this.loading = true;
|
||||
this.pointSearchForm.memberId = this.id;
|
||||
API_Member.getHistoryPointData(this.pointSearchForm).then((res) => {
|
||||
this.loading = false;
|
||||
if (res.success) {
|
||||
this.pointData = res.result.records;
|
||||
this.pointTotal = res.result.total;
|
||||
}
|
||||
});
|
||||
this.loading = false;
|
||||
},
|
||||
addressSubmit() {
|
||||
this.addressForm.memberId = this.id;
|
||||
this.$refs.addressForm.validate((valid) => {
|
||||
if (valid) {
|
||||
this.submitLoading = true;
|
||||
let submit = JSON.parse(JSON.stringify(this.addressForm));
|
||||
submit.isDefault ? (submit.isDefault = true) : (submit.isDefault = false);
|
||||
if (submit.id != "") {
|
||||
API_Member.editMemberAddress(submit).then((res) => {
|
||||
this.submitLoading = false;
|
||||
if (res && res.success) {
|
||||
ElMessage.success("修改成功");
|
||||
this.addressModalVisible = false;
|
||||
this.getAddressData();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
API_Member.addMemberAddress(submit).then((res) => {
|
||||
this.submitLoading = false;
|
||||
if (res && res.success) {
|
||||
ElMessage.success("添加成功");
|
||||
this.addressModalVisible = false;
|
||||
this.getAddressData();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
getAddress(val) {
|
||||
if (val.type === "select") {
|
||||
const paths = val.data.map((item) => item.name).join(",");
|
||||
const ids = val.data.map((item) => item.id).join(",");
|
||||
defineOptions({ name: "memberDetail" });
|
||||
|
||||
this.addressForm.consigneeAddressPath = paths;
|
||||
this.addressForm.consigneeAddressIdPath = ids;
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
const coord = val.data[val.data.length - 1].center.split(",");
|
||||
this.addressForm.lat = coord[1];
|
||||
this.addressForm.lon = coord[0];
|
||||
} else {
|
||||
this.addressForm.consigneeAddressPath = val.data.addr;
|
||||
this.addressForm.consigneeAddressIdPath = val.data.addrId;
|
||||
this.addressForm.lat = val.data.position.lat;
|
||||
this.addressForm.lon = val.data.position.lng;
|
||||
}
|
||||
// 模板 el-form 的 ref(原 ref="addressForm",与 data 同名会互相覆盖,改名为 addressFormRef)
|
||||
const addressFormRef = ref(null);
|
||||
// 模板 multipleMap 的 ref(ref="map")
|
||||
const map = ref(null);
|
||||
|
||||
const id = ref("");
|
||||
const activeTab = ref("point");
|
||||
const loading = ref(true);
|
||||
const addressLoading = ref(false);
|
||||
const memberInfo = ref({});
|
||||
const memberWalletInfo = ref({});
|
||||
const addressModalTitle = ref("");
|
||||
const addressModalVisible = ref(false);
|
||||
const addressForm = reactive({
|
||||
id: "",
|
||||
isDefault: 0,
|
||||
consigneeAddressPath: "",
|
||||
consigneeAddressIdPath: "",
|
||||
});
|
||||
const selectDate = ref(null);
|
||||
const submitLoading = ref(false);
|
||||
const addressFormValidate = reactive({
|
||||
name: [{ required: true, message: "收货人姓名不能为空" }],
|
||||
mobile: [
|
||||
{ required: true, message: "请输入收货人手机号码" },
|
||||
{
|
||||
pattern: RegExp.mobile,
|
||||
message: "请输入正确的手机号",
|
||||
},
|
||||
memberAddressRemove(v) {
|
||||
ElMessageBox.confirm("确定要删除此收货地址?", "删除", { type: "warning" }).then(() => {
|
||||
API_Member.removeMemberAddress(v.id).then((res) => {
|
||||
if (res.success) {
|
||||
ElMessage.success("删除成功");
|
||||
this.getAddressData();
|
||||
],
|
||||
consigneeAddressPath: [{ required: true, message: "收货人地址不能为空" }],
|
||||
detail: [{ required: true, message: "收货人详细地址不能为空" }],
|
||||
});
|
||||
const pointData = ref([]);
|
||||
const pointTotal = ref(0);
|
||||
const pointSearchForm = ref({
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
});
|
||||
const orderData = ref([]);
|
||||
const orderTotal = ref(0);
|
||||
const orderSearchForm = ref({
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
payStatus: "",
|
||||
orderSn: "",
|
||||
orderType: "",
|
||||
});
|
||||
const addressData = ref([]);
|
||||
const addressTotal = ref(0);
|
||||
const addressSearchForm = ref({
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
});
|
||||
const walletSearchForm = ref({
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
sort: "createTime",
|
||||
order: "desc",
|
||||
});
|
||||
const walletData = ref([]);
|
||||
const walletTotal = ref(0);
|
||||
const receiptRecordSearchForm = ref({
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
sort: "createTime",
|
||||
order: "desc",
|
||||
});
|
||||
const receiptRecordData = ref([]);
|
||||
const receiptRecordTotal = ref(0);
|
||||
|
||||
function orderTypeText(v) {
|
||||
const map = {
|
||||
NORMAL: "普通订单",
|
||||
VIRTUAL: "虚拟订单",
|
||||
GIFT: "赠品订单",
|
||||
PINTUAN: "拼团订单",
|
||||
};
|
||||
return map[v] || v || "";
|
||||
}
|
||||
function clientTypeText(v) {
|
||||
const map = {
|
||||
H5: "移动端",
|
||||
PC: "PC端",
|
||||
WECHAT_MP: "小程序端",
|
||||
APP: "移动应用端",
|
||||
};
|
||||
return map[v] || v || "";
|
||||
}
|
||||
function orderStatusText(v) {
|
||||
const map = {
|
||||
UNPAID: "未付款",
|
||||
PAID: "已付款",
|
||||
UNDELIVERED: "待发货",
|
||||
DELIVERED: "已发货",
|
||||
COMPLETED: "已完成",
|
||||
TAKE: "待核验",
|
||||
CANCELLED: "已关闭",
|
||||
};
|
||||
return map[v] || v || "";
|
||||
}
|
||||
function payStatusText(v) {
|
||||
const map = {
|
||||
UNPAID: "未付款",
|
||||
PAID: "已付款",
|
||||
};
|
||||
return map[v] || v || "";
|
||||
}
|
||||
function groupAfterSaleStatusText(v) {
|
||||
const map = {
|
||||
NEW: "未申请",
|
||||
NOT_APPLIED: "未申请",
|
||||
ALREADY_APPLIED: "已申请",
|
||||
EXPIRED: "已失效",
|
||||
};
|
||||
return map[v] || v || "";
|
||||
}
|
||||
function groupComplainStatusText(v) {
|
||||
const map = {
|
||||
NEW: "未申请",
|
||||
NO_APPLY: "未申请",
|
||||
APPLYING: "申请中",
|
||||
COMPLETE: "已完成",
|
||||
EXPIRED: "已失效",
|
||||
CANCEL: "取消投诉",
|
||||
};
|
||||
return map[v] || v || "";
|
||||
}
|
||||
function walletServiceTypeText(type) {
|
||||
if (type === "WALLET_WITHDRAWAL") return "余额提现";
|
||||
if (type === "WALLET_PAY") return "余额支付";
|
||||
if (type === "WALLET_REFUND") return "余额退款";
|
||||
if (type === "WALLET_RECHARGE") return "余额充值";
|
||||
return "佣金提成";
|
||||
}
|
||||
function init() {
|
||||
getMemberInfo();
|
||||
getPointData();
|
||||
}
|
||||
function memberInfoChange(v) {
|
||||
if (v == "point") {
|
||||
getPointData();
|
||||
}
|
||||
if (v == "address") {
|
||||
nextTick(() => {
|
||||
getAddressData();
|
||||
});
|
||||
}
|
||||
if (v == "order") {
|
||||
getOrderData();
|
||||
}
|
||||
if (v == "wallet") {
|
||||
getMemberWalletData();
|
||||
getDepositLogData();
|
||||
}
|
||||
if (v == "receipt") {
|
||||
getReceiptRecordData();
|
||||
}
|
||||
}
|
||||
function getMemberInfo() {
|
||||
API_Member.getMemberInfoData(id.value).then((res) => {
|
||||
memberInfo.value = res.result;
|
||||
});
|
||||
}
|
||||
function memberStatusChange(v) {
|
||||
let params = {
|
||||
memberIds: [id.value],
|
||||
disabled: v,
|
||||
};
|
||||
API_Member.updateMemberStatus(params).then((res) => {});
|
||||
}
|
||||
function getMemberWalletData() {
|
||||
loading.value = true;
|
||||
let params = {
|
||||
memberId: id.value,
|
||||
};
|
||||
API_Member.getMemberWallet(params).then((res) => {
|
||||
loading.value = false;
|
||||
if (res.success) {
|
||||
memberWalletInfo.value = res.result;
|
||||
}
|
||||
});
|
||||
loading.value = false;
|
||||
}
|
||||
function getDepositLogData() {
|
||||
loading.value = true;
|
||||
walletSearchForm.value.memberId = id.value;
|
||||
API_Member.getUserWallet(walletSearchForm.value).then((res) => {
|
||||
loading.value = false;
|
||||
if (res.success) {
|
||||
walletData.value = res.result.records;
|
||||
walletTotal.value = res.result.total;
|
||||
}
|
||||
});
|
||||
loading.value = false;
|
||||
}
|
||||
function getReceiptRecordData() {
|
||||
loading.value = true;
|
||||
receiptRecordSearchForm.value.pageNumber = 1;
|
||||
receiptRecordSearchForm.value.pageSize = 20;
|
||||
receiptRecordSearchForm.value.memberId = id.value;
|
||||
API_Order.getReceiptPage(receiptRecordSearchForm.value).then((res) => {
|
||||
loading.value = false;
|
||||
if (res.success) {
|
||||
receiptRecordData.value = res.result.records;
|
||||
receiptRecordTotal.value = res.result.total;
|
||||
}
|
||||
});
|
||||
loading.value = false;
|
||||
}
|
||||
function getOrderData() {
|
||||
loading.value = true;
|
||||
orderSearchForm.value.pageNumber = 1;
|
||||
orderSearchForm.value.pageSize = 20;
|
||||
orderSearchForm.value.memberId = id.value;
|
||||
API_Order.getOrderList(orderSearchForm.value).then((res) => {
|
||||
loading.value = false;
|
||||
if (res.success) {
|
||||
orderData.value = res.result.records;
|
||||
orderTotal.value = res.result.total;
|
||||
}
|
||||
});
|
||||
loading.value = false;
|
||||
}
|
||||
function orderDetail(v) {
|
||||
router.push({
|
||||
name: "order-detail",
|
||||
query: { sn: v },
|
||||
});
|
||||
}
|
||||
function getPointData() {
|
||||
loading.value = true;
|
||||
pointSearchForm.value.memberId = id.value;
|
||||
API_Member.getHistoryPointData(pointSearchForm.value).then((res) => {
|
||||
loading.value = false;
|
||||
if (res.success) {
|
||||
pointData.value = res.result.records;
|
||||
pointTotal.value = res.result.total;
|
||||
}
|
||||
});
|
||||
loading.value = false;
|
||||
}
|
||||
function addressSubmit() {
|
||||
addressForm.memberId = id.value;
|
||||
addressFormRef.value.validate((valid) => {
|
||||
if (valid) {
|
||||
submitLoading.value = true;
|
||||
let submit = JSON.parse(JSON.stringify(addressForm));
|
||||
submit.isDefault ? (submit.isDefault = true) : (submit.isDefault = false);
|
||||
if (submit.id != "") {
|
||||
API_Member.editMemberAddress(submit).then((res) => {
|
||||
submitLoading.value = false;
|
||||
if (res && res.success) {
|
||||
ElMessage.success("修改成功");
|
||||
addressModalVisible.value = false;
|
||||
getAddressData();
|
||||
}
|
||||
});
|
||||
}).catch(() => {});
|
||||
},
|
||||
getAddressData() {
|
||||
this.addressLoading = true;
|
||||
API_Member.getMemberAddressData(this.id, this.addressSearchForm)
|
||||
.then((res) => {
|
||||
if (res.success) {
|
||||
this.addressData = res.result.records;
|
||||
this.addressTotal = res.result.total;
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
this.addressLoading = false;
|
||||
});
|
||||
},
|
||||
pointChangePage(v) {
|
||||
this.pointSearchForm.pageNumber = v;
|
||||
this.getPointData();
|
||||
},
|
||||
pointChangePageSize(v) {
|
||||
this.pointSearchForm.pageNumber = 1;
|
||||
this.pointSearchForm.pageSize = v;
|
||||
this.getPointData();
|
||||
},
|
||||
addressChangePage(v) {
|
||||
this.addressSearchForm.pageNumber = v;
|
||||
this.getAddressData();
|
||||
},
|
||||
addressChangePageSize(v) {
|
||||
this.addressSearchForm.pageNumber = 1;
|
||||
this.addressSearchForm.pageSize = v;
|
||||
this.getAddressData();
|
||||
},
|
||||
walletChangePage(v) {
|
||||
this.walletSearchForm.pageNumber = v;
|
||||
this.getDepositLogData();
|
||||
},
|
||||
walletChangePageSize(v) {
|
||||
this.walletSearchForm.pageNumber = 1;
|
||||
this.walletSearchForm.pageSize = v;
|
||||
this.getDepositLogData();
|
||||
},
|
||||
orderChangePage(v) {
|
||||
this.orderSearchForm.pageNumber = v;
|
||||
this.getOrderData();
|
||||
},
|
||||
orderChangePageSize(v) {
|
||||
this.orderSearchForm.pageNumber = 1;
|
||||
this.orderSearchForm.pageSize = v;
|
||||
this.getOrderData();
|
||||
},
|
||||
selectDateRange(v) {
|
||||
if (v && v.length === 2) {
|
||||
this.orderSearchForm.startDate = v[0];
|
||||
this.orderSearchForm.endDate = v[1];
|
||||
} else {
|
||||
delete this.orderSearchForm.startDate;
|
||||
delete this.orderSearchForm.endDate;
|
||||
API_Member.addMemberAddress(submit).then((res) => {
|
||||
submitLoading.value = false;
|
||||
if (res && res.success) {
|
||||
ElMessage.success("添加成功");
|
||||
addressModalVisible.value = false;
|
||||
getAddressData();
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.id = this.$route.query.id;
|
||||
this.init();
|
||||
},
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
function getAddress(val) {
|
||||
if (val.type === "select") {
|
||||
const paths = val.data.map((item) => item.name).join(",");
|
||||
const ids = val.data.map((item) => item.id).join(",");
|
||||
|
||||
addressForm.consigneeAddressPath = paths;
|
||||
addressForm.consigneeAddressIdPath = ids;
|
||||
|
||||
const coord = val.data[val.data.length - 1].center.split(",");
|
||||
addressForm.lat = coord[1];
|
||||
addressForm.lon = coord[0];
|
||||
} else {
|
||||
addressForm.consigneeAddressPath = val.data.addr;
|
||||
addressForm.consigneeAddressIdPath = val.data.addrId;
|
||||
addressForm.lat = val.data.position.lat;
|
||||
addressForm.lon = val.data.position.lng;
|
||||
}
|
||||
}
|
||||
function memberAddressRemove(v) {
|
||||
ElMessageBox.confirm("确定要删除此收货地址?", "删除", { type: "warning" }).then(() => {
|
||||
API_Member.removeMemberAddress(v.id).then((res) => {
|
||||
if (res.success) {
|
||||
ElMessage.success("删除成功");
|
||||
getAddressData();
|
||||
}
|
||||
});
|
||||
}).catch(() => {});
|
||||
}
|
||||
function getAddressData() {
|
||||
addressLoading.value = true;
|
||||
API_Member.getMemberAddressData(id.value, addressSearchForm.value)
|
||||
.then((res) => {
|
||||
if (res.success) {
|
||||
addressData.value = res.result.records;
|
||||
addressTotal.value = res.result.total;
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
addressLoading.value = false;
|
||||
});
|
||||
}
|
||||
function pointChangePage(v) {
|
||||
pointSearchForm.value.pageNumber = v;
|
||||
getPointData();
|
||||
}
|
||||
function pointChangePageSize(v) {
|
||||
pointSearchForm.value.pageNumber = 1;
|
||||
pointSearchForm.value.pageSize = v;
|
||||
getPointData();
|
||||
}
|
||||
function addressChangePage(v) {
|
||||
addressSearchForm.value.pageNumber = v;
|
||||
getAddressData();
|
||||
}
|
||||
function addressChangePageSize(v) {
|
||||
addressSearchForm.value.pageNumber = 1;
|
||||
addressSearchForm.value.pageSize = v;
|
||||
getAddressData();
|
||||
}
|
||||
function walletChangePage(v) {
|
||||
walletSearchForm.value.pageNumber = v;
|
||||
getDepositLogData();
|
||||
}
|
||||
function walletChangePageSize(v) {
|
||||
walletSearchForm.value.pageNumber = 1;
|
||||
walletSearchForm.value.pageSize = v;
|
||||
getDepositLogData();
|
||||
}
|
||||
function orderChangePage(v) {
|
||||
orderSearchForm.value.pageNumber = v;
|
||||
getOrderData();
|
||||
}
|
||||
function orderChangePageSize(v) {
|
||||
orderSearchForm.value.pageNumber = 1;
|
||||
orderSearchForm.value.pageSize = v;
|
||||
getOrderData();
|
||||
}
|
||||
function selectDateRange(v) {
|
||||
if (v && v.length === 2) {
|
||||
orderSearchForm.value.startDate = v[0];
|
||||
orderSearchForm.value.endDate = v[1];
|
||||
} else {
|
||||
delete orderSearchForm.value.startDate;
|
||||
delete orderSearchForm.value.endDate;
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
id.value = route.query.id;
|
||||
init();
|
||||
});
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import "memberDetail.scss";
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div class="search">
|
||||
<el-card>
|
||||
<el-form
|
||||
ref="searchForm"
|
||||
ref="searchFormRef"
|
||||
:model="searchForm"
|
||||
inline
|
||||
label-width="70px"
|
||||
@@ -96,7 +96,7 @@
|
||||
</el-card>
|
||||
|
||||
<el-dialog v-model="descFlag" :title="descTitle" width="500px" destroy-on-close>
|
||||
<el-form ref="formValidate" :model="formValidate" :rules="ruleValidate" label-width="80px">
|
||||
<el-form ref="formValidateRef" :model="formValidate" :rules="ruleValidate" label-width="80px">
|
||||
<el-form-item label="头像">
|
||||
<img :src="formValidate.face" class="face" />
|
||||
<el-button
|
||||
@@ -143,7 +143,7 @@
|
||||
|
||||
<el-dialog v-model="picModelFlag" width="1200px">
|
||||
<ossManage
|
||||
ref="ossManage"
|
||||
ref="ossManageRef"
|
||||
@callback="callbackSelected"
|
||||
:isComponent="true"
|
||||
:initialize="picModelFlag"
|
||||
@@ -153,152 +153,156 @@
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
<script setup>
|
||||
import { ref, nextTick, onMounted } from "vue";
|
||||
import * as API_Member from "@/api/member.js";
|
||||
import ossManage from "@/views/sys/oss-manage/ossManage";
|
||||
import multipleMap from "@/components/map/multiple-map";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { customRouterPush } from "@/utils/filters";
|
||||
import { md5 } from "@/utils/md5.js";
|
||||
|
||||
export default {
|
||||
name: "memberRecycle",
|
||||
components: {
|
||||
ossManage,
|
||||
multipleMap,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
selectedMember: false,
|
||||
descTitle: "",
|
||||
descFlag: false,
|
||||
openSearch: true,
|
||||
loading: true,
|
||||
searchForm: {
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
order: "desc",
|
||||
id: "",
|
||||
username: "",
|
||||
mobile: "",
|
||||
disabled: "CLOSE",
|
||||
},
|
||||
picModelFlag: false,
|
||||
formValidate: {},
|
||||
ruleValidate: {},
|
||||
data: [],
|
||||
total: 0,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
callback(val) {
|
||||
this.$emit("callback", val);
|
||||
},
|
||||
init() {
|
||||
this.getData();
|
||||
},
|
||||
changePage() {
|
||||
this.getData();
|
||||
},
|
||||
changePageSize() {
|
||||
this.searchForm.pageNumber = 1;
|
||||
this.getData();
|
||||
},
|
||||
handleSearch() {
|
||||
this.searchForm.pageNumber = 1;
|
||||
this.searchForm.pageSize = 20;
|
||||
this.getData();
|
||||
},
|
||||
editPerm(val) {
|
||||
this.descTitle = `查看用户 ${val.username}`;
|
||||
this.descFlag = true;
|
||||
this.getMemberInfo(val.id);
|
||||
},
|
||||
getMemberInfo(id) {
|
||||
API_Member.getMemberInfoData(id).then((res) => {
|
||||
if (res.result) {
|
||||
this.formValidate = res.result;
|
||||
}
|
||||
});
|
||||
},
|
||||
getData() {
|
||||
this.loading = true;
|
||||
API_Member.getMemberListData(this.searchForm).then((res) => {
|
||||
this.loading = false;
|
||||
if (res.success) {
|
||||
this.data = res.result.records;
|
||||
this.total = res.result.total;
|
||||
}
|
||||
});
|
||||
},
|
||||
openPicSelector() {
|
||||
this.picModelFlag = true;
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.ossManage) {
|
||||
this.$refs.ossManage.selectImage = true;
|
||||
}
|
||||
});
|
||||
},
|
||||
callbackSelected(val) {
|
||||
this.picModelFlag = false;
|
||||
this.formValidate.face = val.url;
|
||||
},
|
||||
selectedRegion(val) {
|
||||
if (val.type === "select") {
|
||||
const paths = val.data.map((item) => item.name).join(",");
|
||||
const ids = val.data.map((item) => item.id).join(",");
|
||||
this.formValidate.region = paths;
|
||||
this.formValidate.regionId = ids;
|
||||
} else {
|
||||
this.formValidate.region = val.data.addr;
|
||||
this.formValidate.regionId = val.data.addrId;
|
||||
defineOptions({ name: "memberRecycle" });
|
||||
|
||||
const emit = defineEmits(["callback"]);
|
||||
|
||||
// 模板 el-form 的 ref(原 ref="searchForm",与 data 同名会互相覆盖,改名为 searchFormRef)
|
||||
const searchFormRef = ref(null);
|
||||
const table = ref(null);
|
||||
// 模板编辑弹窗 el-form 的 ref(原 ref="formValidate",与 data 同名会互相覆盖,改名为 formValidateRef)
|
||||
const formValidateRef = ref(null);
|
||||
// 模板 ossManage 组件的 ref(原 ref="ossManage",与组件 import 同名会冲突,改名为 ossManageRef)
|
||||
const ossManageRef = ref(null);
|
||||
|
||||
const selectedMember = ref(false);
|
||||
const descTitle = ref("");
|
||||
const descFlag = ref(false);
|
||||
const openSearch = ref(true);
|
||||
const loading = ref(true);
|
||||
const searchForm = ref({
|
||||
pageNumber: 1,
|
||||
pageSize: 20,
|
||||
order: "desc",
|
||||
id: "",
|
||||
username: "",
|
||||
mobile: "",
|
||||
disabled: "CLOSE",
|
||||
});
|
||||
const picModelFlag = ref(false);
|
||||
const formValidate = ref({});
|
||||
const ruleValidate = ref({});
|
||||
const data = ref([]);
|
||||
const total = ref(0);
|
||||
|
||||
function callback(val) {
|
||||
emit("callback", val);
|
||||
}
|
||||
function init() {
|
||||
getData();
|
||||
}
|
||||
function changePage() {
|
||||
getData();
|
||||
}
|
||||
function changePageSize() {
|
||||
searchForm.value.pageNumber = 1;
|
||||
getData();
|
||||
}
|
||||
function handleSearch() {
|
||||
searchForm.value.pageNumber = 1;
|
||||
searchForm.value.pageSize = 20;
|
||||
getData();
|
||||
}
|
||||
function editPerm(val) {
|
||||
descTitle.value = `查看用户 ${val.username}`;
|
||||
descFlag.value = true;
|
||||
getMemberInfo(val.id);
|
||||
}
|
||||
function getMemberInfo(id) {
|
||||
API_Member.getMemberInfoData(id).then((res) => {
|
||||
if (res.result) {
|
||||
formValidate.value = res.result;
|
||||
}
|
||||
});
|
||||
}
|
||||
function getData() {
|
||||
loading.value = true;
|
||||
API_Member.getMemberListData(searchForm.value).then((res) => {
|
||||
loading.value = false;
|
||||
if (res.success) {
|
||||
data.value = res.result.records;
|
||||
total.value = res.result.total;
|
||||
}
|
||||
});
|
||||
}
|
||||
function openPicSelector() {
|
||||
picModelFlag.value = true;
|
||||
nextTick(() => {
|
||||
if (ossManageRef.value) {
|
||||
ossManageRef.value.selectImage = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
function callbackSelected(val) {
|
||||
picModelFlag.value = false;
|
||||
formValidate.value.face = val.url;
|
||||
}
|
||||
function selectedRegion(val) {
|
||||
if (val.type === "select") {
|
||||
const paths = val.data.map((item) => item.name).join(",");
|
||||
const ids = val.data.map((item) => item.id).join(",");
|
||||
formValidate.value.region = paths;
|
||||
formValidate.value.regionId = ids;
|
||||
} else {
|
||||
formValidate.value.region = val.data.addr;
|
||||
formValidate.value.regionId = val.data.addrId;
|
||||
}
|
||||
}
|
||||
function detail(row) {
|
||||
customRouterPush({ name: "member-detail", query: { id: row.id } });
|
||||
}
|
||||
function enable(v) {
|
||||
let params = {
|
||||
memberIds: [v.id],
|
||||
disabled: true,
|
||||
};
|
||||
ElMessageBox.confirm("确定启用此会员?", "提示", { type: "warning" }).then(() => {
|
||||
API_Member.updateMemberStatus(params).then((res) => {
|
||||
if (res.success) {
|
||||
ElMessage.success("启用成功");
|
||||
getData();
|
||||
}
|
||||
},
|
||||
detail(row) {
|
||||
customRouterPush({ name: "member-detail", query: { id: row.id } });
|
||||
},
|
||||
enable(v) {
|
||||
let params = {
|
||||
memberIds: [v.id],
|
||||
disabled: true,
|
||||
};
|
||||
ElMessageBox.confirm("确定启用此会员?", "提示", { type: "warning" }).then(() => {
|
||||
API_Member.updateMemberStatus(params).then((res) => {
|
||||
if (res.success) {
|
||||
ElMessage.success("启用成功");
|
||||
this.getData();
|
||||
}
|
||||
});
|
||||
}).catch(() => {});
|
||||
},
|
||||
handleSubmitModal() {
|
||||
const { nickName, sex, username, face, newPassword, id, regionId, region } = this.formValidate;
|
||||
let time = new Date(this.formValidate.birthday);
|
||||
let birthday = time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate();
|
||||
let submit = {
|
||||
regionId: regionId,
|
||||
region: region,
|
||||
nickName,
|
||||
sex,
|
||||
birthday,
|
||||
face: face || "",
|
||||
id,
|
||||
};
|
||||
if (newPassword) {
|
||||
submit.password = this.md5(newPassword);
|
||||
}
|
||||
API_Member.updateMember(submit).then((res) => {
|
||||
if (res.result) {
|
||||
ElMessage.success("修改成功!");
|
||||
this.descFlag = false;
|
||||
this.init();
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.init();
|
||||
},
|
||||
};
|
||||
});
|
||||
}).catch(() => {});
|
||||
}
|
||||
function handleSubmitModal() {
|
||||
const { nickName, sex, username, face, newPassword, id, regionId, region } = formValidate.value;
|
||||
let time = new Date(formValidate.value.birthday);
|
||||
let birthday = time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate();
|
||||
let submit = {
|
||||
regionId: regionId,
|
||||
region: region,
|
||||
nickName,
|
||||
sex,
|
||||
birthday,
|
||||
face: face || "",
|
||||
id,
|
||||
};
|
||||
if (newPassword) {
|
||||
// 原 this.md5 为 main.js 注册的全局属性,改为具名导入(同 login.vue / userManage.vue)
|
||||
submit.password = md5(newPassword);
|
||||
}
|
||||
API_Member.updateMember(submit).then((res) => {
|
||||
if (res.result) {
|
||||
ElMessage.success("修改成功!");
|
||||
descFlag.value = false;
|
||||
init();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
init();
|
||||
});
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.face {
|
||||
|
||||
Reference in New Issue
Block a user