Files
jsowell-charger-web/jsowell-ui/src/views/member/memberGroup/detail.vue

227 lines
11 KiB
Vue
Raw Normal View History

2024-01-15 09:28:57 +08:00
<template>
2024-01-15 11:02:08 +08:00
<div class="app-container">
<el-row type="flex" justify="space-between">
<!-- 右侧内容 -->
2024-01-15 13:36:20 +08:00
<el-col :span="24">
2024-01-15 11:02:08 +08:00
<el-tabs type="border-card">
2024-01-15 14:06:42 +08:00
<!-- 客户 -->
2024-01-15 11:02:08 +08:00
<el-tab-pane label="客户">
2024-01-15 13:36:20 +08:00
<el-col>
2024-01-15 11:02:08 +08:00
<el-button type="primary" size="mini" icon="el-icon-plus"
@click="handleAddMember">添加会员</el-button>
</el-col>
2024-01-15 14:19:59 +08:00
<el-table :data="memberGroupList" stripe style="width: 100%" v-loading="loading">
2024-01-15 13:36:20 +08:00
<el-table-column label="会员id" align="center" prop="memberId" />
<el-table-column label="昵称" align="center" prop="nickName" />
2024-01-15 14:06:42 +08:00
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.member_status" :value="scope.row.status" />
</template>
</el-table-column>
2024-01-15 13:36:20 +08:00
<el-table-column label="头像" align="center" prop="avatarUrl">
<template slot-scope="scope">
<el-image style="height: 50px;width: 50px"
:src="scope.row.avatarUrl === null ? defaultImg[0].img : scope.row.avatarUrl"
:preview-src-list='[scope.row.avatarUrl === null ? defaultImg[0].img : scope.row.avatarUrl]' />
</template>
</el-table-column>
<el-table-column label="手机号" align="center" prop="mobileNumber" />
</el-table>
<!--分页-->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
2024-01-15 14:19:59 +08:00
:limit.sync="queryParams.pageSize" @pagination="getMemberList" style="margin-bottom: 20px" />
2024-01-15 13:36:20 +08:00
</el-tab-pane>
<!-- 交易明细 -->
<el-tab-pane label="交易明细">
2024-01-15 14:19:59 +08:00
<el-table :data="details" stripe style="width: 100%" v-loading="loading">
2024-01-15 13:36:20 +08:00
<el-table-column label="订单编号" align="center" prop="orderCode" width="280px">
<template slot-scope="scope">
<router-link :to="'/order/index/orderDetail/' + scope.row.orderCode" class="link-type">
<span>{{ scope.row.orderCode }}</span>
</router-link>
</template>
</el-table-column>
<el-table-column label="订单状态描述" align="center" prop="orderStatusDescribe" />
<el-table-column label="会员昵称" align="center" prop="nickName" width="120px" />
<el-table-column label="电话号码" align="center" prop="mobileNumber" width="120px" />
<el-table-column label="站点" align="center" prop="stationName" />
<el-table-column label="充电桩枪口号" align="center" prop="pileConnectorCode" width="200px" />
<el-table-column label="微信商户订单号" align="center" prop="outTradeNo" width="165px" />
<el-table-column label="启动方式" align="center" prop="startMode" width="100px">
<template slot-scope="scope">
<dict-tag :options="dict.type.start_mode" :value="scope.row.startMode" />
</template>
</el-table-column>
<el-table-column label="支付方式" align="center" prop="payMode">
<template slot-scope="scope">
<dict-tag :options="dict.type.pay_mode" :value="scope.row.payMode" />
</template>
</el-table-column>
<el-table-column label="支付状态" align="center" prop="payStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.pay_status" :value="scope.row.payStatus" />
</template>
</el-table-column>
<el-table-column label="支付金额" align="center" prop="payAmount" />
<el-table-column label="充电度数" align="center" prop="chargingDegree" width="100px" />
<el-table-column label="起始soc" align="center" prop="startSoc" />
<el-table-column label="终止soc" align="center" prop="endSoc" />
<el-table-column label="开始充电时间" align="center" prop="chargeStartTime" width="180" />
<el-table-column label="结束充电时间" align="center" prop="chargeEndTime" width="180" />
<el-table-column label="订单总金额" align="center" prop="orderAmount" width="100px" />
</el-table>
<!--分页-->
<pagination v-show="getTotal > 0" :total="getTotal" :page.sync="from.pageNum"
2024-01-15 14:19:59 +08:00
:limit.sync="from.pageSize" @pagination="getOrderList" style="margin-bottom: 20px" />
2024-01-15 11:02:08 +08:00
</el-tab-pane>
2024-01-24 17:07:21 +08:00
<el-tab-pane label="站点">
<el-col>
<el-button type="primary" size="mini" icon="el-icon-plus" @click="addasite">添加站点</el-button>
</el-col>
</el-tab-pane>
2024-01-15 11:02:08 +08:00
</el-tabs>
</el-col>
</el-row>
<!--添加会员-->
2024-01-15 13:36:20 +08:00
<el-dialog title="添加会员" :visible.sync="openAddMember" :before-close="cancel" width="500px" append-to-body>
2024-01-15 11:02:08 +08:00
<el-input v-model="queryParams.phoneNumber" placeholder="请输入手机号"></el-input>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
<el-button type="primary" @click="submitForm"> </el-button>
</div>
</el-dialog>
2024-01-24 17:07:21 +08:00
<!-- 添加站点 -->
<el-dialog title="添加站点" :visible.sync="getSite" :before-close="getCancel" width="500px" append-to-body>
<el-select v-model="selectSite" placeholder="请选择站点" clearable filterable style="width:300px">
<el-option v-for="(station, index) in stationList" :key="index" :label="station.stationName"
:value="station.id" />
</el-select>
<div slot="footer" class="dialog-footer">
<el-button @click="getCancel"> </el-button>
<el-button type="primary" @click="siteConfirmation"> </el-button>
</div>
</el-dialog>
2024-01-15 09:28:57 +08:00
</div>
</template>
<script>
2024-01-15 13:36:20 +08:00
import { queryOrderList, addMember, queryMemberList } from "@/api/member/memberGroup";
2024-01-18 14:25:27 +08:00
import { listOrder } from "@/api/order/order";
2024-01-24 17:07:21 +08:00
import { getStationListByMerchantId } from "@/api/pile/station";
2024-01-15 09:28:57 +08:00
export default {
name: 'JsowellUiDetail',
2024-01-15 14:06:42 +08:00
dicts: ['member_status', 'start_mode', 'pay_mode', 'pay_status'],
2024-01-15 09:28:57 +08:00
data() {
return {
2024-01-15 14:19:59 +08:00
// 遮罩
loading: false,
2024-01-15 11:02:08 +08:00
openAddMember: false,
2024-01-15 13:36:20 +08:00
from: {
pageNum: 1,
pageSize: 10,
2024-01-24 17:07:21 +08:00
groupCode: this.$route.params.groupCode.split('&')[0],
2024-01-15 13:36:20 +08:00
merchantId: null,
stationId: null,
groupLevel: null,
groupType: null,
discount: null,
phoneNumber: null
},
2024-01-15 11:02:08 +08:00
queryParams: {
2024-01-15 13:36:20 +08:00
pageNum: 1,
pageSize: 10,
2024-01-24 17:07:21 +08:00
groupCode: this.$route.params.groupCode.split('&')[0],
2024-01-15 13:36:20 +08:00
merchantId: null,
stationId: null,
groupLevel: null,
groupType: null,
discount: null,
2024-01-15 11:02:08 +08:00
phoneNumber: null
2024-01-15 13:36:20 +08:00
},
total: 0,
memberGroupList: [],
getTotal: 0,
2024-01-18 14:25:27 +08:00
details: [],
defaultImg: [{ img: require('../../../assets/images/headPort.png') }],//默认头像
2024-01-24 17:07:21 +08:00
getSite: false, //添加站点框状态
stationList: [], //站点列表
selectSite: '' //选中的站点
2024-01-15 09:28:57 +08:00
};
},
mounted() {
2024-01-24 17:07:21 +08:00
console.log(this.$route.params.groupCode, this.$route.params.groupCode.split('&')[0], this.$route.params.groupCode.split('&')[1]);
2024-01-15 14:19:59 +08:00
this.getMemberList();
this.getOrderList();
2024-01-15 09:28:57 +08:00
},
methods: {
2024-01-15 11:02:08 +08:00
handleAddMember() {
this.openAddMember = true
},
/** 添加会员按钮 */
submitForm() {
console.log(this.queryParams);
var reg_tel = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
if (!reg_tel.test(this.queryParams.phoneNumber)) {
this.$modal.msgError("请正确填写您的手机号码!");
this.queryParams.phoneNumber = ''
return false;
}
2024-01-15 13:36:20 +08:00
addMember(this.queryParams).then(response => {
2024-01-15 11:02:08 +08:00
console.log(response);
this.$modal.msgSuccess("添加成功");
2024-01-15 13:36:20 +08:00
this.openAddMember = false;
2024-01-15 14:06:42 +08:00
this.queryParams.phoneNumber = '';
2024-01-15 14:19:59 +08:00
this.getMemberList();
2024-01-15 11:02:08 +08:00
});
},
cancel() {
this.openAddMember = false;
2024-01-15 13:36:20 +08:00
this.queryParams.phoneNumber = '';
},
2024-01-15 14:19:59 +08:00
getMemberList() {
this.loading = true;
2024-01-15 13:36:20 +08:00
console.log(this.queryParams);
queryMemberList(this.queryParams).then(response => {
console.log(response);
this.memberGroupList = response.rows;
this.total = response.total;
2024-01-15 14:19:59 +08:00
this.loading = false;
2024-01-15 13:36:20 +08:00
});
},
2024-01-15 14:19:59 +08:00
getOrderList() {
this.loading = true;
listOrder(this.from).then((response) => {
2024-01-15 13:36:20 +08:00
this.details = response.rows;
2024-01-15 14:19:59 +08:00
console.log("this.from", this.from);
console.log("response", response);
2024-01-15 13:36:20 +08:00
this.getTotal = response.total;
2024-01-15 14:19:59 +08:00
this.loading = false;
2024-01-15 13:36:20 +08:00
});
2024-01-24 17:07:21 +08:00
},
//添加站点
addasite() {
console.log(this.$route.params.groupCode.split('&')[1]);
let value = this.$route.params.groupCode.split('&')[1]
this.getSite = true
getStationListByMerchantId(value).then((response) => {
console.log('站点', response);
this.stationList = response.data;
});
},
// 站点弹框取消
getCancel() {
this.getSite = false;
this.selectSite = '';
},
// 站点弹框确认
siteConfirmation(){
2024-01-15 11:02:08 +08:00
}
2024-01-15 09:28:57 +08:00
},
};
</script>
2024-01-15 11:10:42 +08:00
<style lang="scss" scoped></style>