|
|
@@ -2,7 +2,12 @@
|
|
|
<div class="app-list-content">
|
|
|
<x-crud class="liu-crud-wrap" @load="onLoad">
|
|
|
<template #slot-tabs="{ scope }">
|
|
|
- <el-tabs class="liu-tabs" type="border-card" v-model="tabIndex" @tab-click="handleClick">
|
|
|
+ <el-tabs
|
|
|
+ class="liu-tabs"
|
|
|
+ type="border-card"
|
|
|
+ v-model="tabIndex"
|
|
|
+ @tab-click="handleClick"
|
|
|
+ >
|
|
|
<el-tab-pane
|
|
|
v-for="(item, index) in tabsData"
|
|
|
:key="index"
|
|
|
@@ -12,56 +17,66 @@
|
|
|
</el-tabs>
|
|
|
</template>
|
|
|
|
|
|
- <template #table-column-avatarUrl="{scope}">
|
|
|
- <cl-avatar :size="22" :src="scope.row.smallAvatarUrl" :style="{ margin: 'auto' }"></cl-avatar>
|
|
|
+ <template #table-column-avatarUrl="{ scope }">
|
|
|
+ <cl-avatar
|
|
|
+ :size="22"
|
|
|
+ :src="scope.row.smallAvatarUrl"
|
|
|
+ :style="{ margin: 'auto' }"
|
|
|
+ ></cl-avatar>
|
|
|
</template>
|
|
|
|
|
|
- <template #table-column-id="{scope}">
|
|
|
+ <template #table-column-id="{ scope }">
|
|
|
<el-link
|
|
|
:underline="true"
|
|
|
@click="detailShowFn(scope.row)"
|
|
|
- style="font-size:12px;"
|
|
|
- >{{ scope.row.id }}</el-link>
|
|
|
+ style="font-size: 12px"
|
|
|
+ >{{ scope.row.id }}</el-link
|
|
|
+ >
|
|
|
</template>
|
|
|
|
|
|
- <template #table-column-mobile="{scope}">
|
|
|
+ <template #table-column-mobile="{ scope }">
|
|
|
<span v-if="scope.row.mobile != ''">{{ scope.row.mobile }}</span>
|
|
|
<span v-else>-</span>
|
|
|
</template>
|
|
|
|
|
|
- <template #table-column-userName="{scope}">
|
|
|
+ <template #table-column-userName="{ scope }">
|
|
|
<el-link
|
|
|
:underline="true"
|
|
|
@click="detailShowFn(scope.row)"
|
|
|
- style="font-size:12px;"
|
|
|
- >{{ scope.row.userName }}</el-link>
|
|
|
+ style="font-size: 12px"
|
|
|
+ >{{ scope.row.userName }}</el-link
|
|
|
+ >
|
|
|
</template>
|
|
|
|
|
|
- <template #table-column-balance="{scope}">
|
|
|
+ <template #table-column-balance="{ scope }">
|
|
|
<span>{{ scope.row.userAsset.balance }}</span>
|
|
|
</template>
|
|
|
|
|
|
- <template #table-column-growth="{scope}">
|
|
|
+ <template #table-column-growth="{ scope }">
|
|
|
<span>{{ scope.row.userAsset.growth }}</span>
|
|
|
</template>
|
|
|
|
|
|
- <template #table-column-subscribe="{scope}">
|
|
|
+ <template #table-column-subscribe="{ scope }">
|
|
|
<i
|
|
|
class="el-icon-success"
|
|
|
v-if="scope.row.subscribe == 1"
|
|
|
- style="color:#67C23A;font-size:19px;"
|
|
|
+ style="color: #67c23a; font-size: 19px"
|
|
|
></i>
|
|
|
- <i class="el-icon-success" v-else style="color:#C0C4CC;font-size:19px;"></i>
|
|
|
+ <i class="el-icon-success" v-else style="color: #c0c4cc; font-size: 19px"></i>
|
|
|
</template>
|
|
|
|
|
|
- <template #table-column-store="{scope}">
|
|
|
+ <template #table-column-store="{ scope }">
|
|
|
<div class="store-icon">
|
|
|
- <i class="el-icon-s-shop" v-if="scope.row.store == 1" style="color:#67C23A"></i>
|
|
|
- <i class="el-icon-s-shop" v-else style="color:#C0C4CC"></i>
|
|
|
+ <i
|
|
|
+ class="el-icon-s-shop"
|
|
|
+ v-if="scope.row.store == 1"
|
|
|
+ style="color: #67c23a"
|
|
|
+ ></i>
|
|
|
+ <i class="el-icon-s-shop" v-else style="color: #c0c4cc"></i>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
- <template #table-column-sourceType="{scope}">
|
|
|
+ <template #table-column-sourceType="{ scope }">
|
|
|
<span v-if="scope.row.sourceType == 0">微信</span>
|
|
|
<span v-else-if="scope.row.sourceType == 1">支付宝</span>
|
|
|
<span v-else-if="scope.row.sourceType == 2">小程序</span>
|
|
|
@@ -71,34 +86,49 @@
|
|
|
<span v-else></span>
|
|
|
</template>
|
|
|
|
|
|
- <template #table-column-memberLevel="{scope}">
|
|
|
+ <template #table-column-memberLevel="{ scope }">
|
|
|
<template v-if="scope.row.userAsset.member == 0">
|
|
|
<template v-if="scope.row.mobile == ''">
|
|
|
- <el-tag size="mini" v-if="scope.row.userAsset.member == 0" type="info">普</el-tag>
|
|
|
+ <el-tag size="mini" v-if="scope.row.userAsset.member == 0" type="info"
|
|
|
+ >普</el-tag
|
|
|
+ >
|
|
|
</template>
|
|
|
<template v-else>
|
|
|
- <el-tag size="mini" v-if="scope.row.userAsset.member == 0" type="success">会员</el-tag>
|
|
|
+ <el-tag size="mini" v-if="scope.row.userAsset.member == 0" type="success"
|
|
|
+ >会员</el-tag
|
|
|
+ >
|
|
|
</template>
|
|
|
</template>
|
|
|
<el-tag size="small" v-else>{{ scope.row.userAsset.member }}</el-tag>
|
|
|
</template>
|
|
|
|
|
|
- <template #table-column-discount="{scope}">
|
|
|
- <template v-if="scope.row.userAsset.discount < 1">{{scope.row.userAsset.discount}}</template>
|
|
|
+ <template #table-column-discount="{ scope }">
|
|
|
+ <template v-if="scope.row.userAsset.discount < 1">{{
|
|
|
+ scope.row.userAsset.discount
|
|
|
+ }}</template>
|
|
|
<template v-else>-</template>
|
|
|
</template>
|
|
|
|
|
|
<!-- 充值 -->
|
|
|
- <template #slot-recharge="{scope}">
|
|
|
- <el-button type="text" size="mini" @click="rechargeShowFn(scope.row)">充值</el-button>
|
|
|
+ <template #slot-recharge="{ scope }">
|
|
|
+ <el-button type="text" size="mini" @click="rechargeShowFn(scope.row)"
|
|
|
+ >充值</el-button
|
|
|
+ >
|
|
|
</template>
|
|
|
<!-- 升级 -->
|
|
|
- <template #slot-upgrade="{scope}">
|
|
|
- <el-button type="text" size="mini" @click="upgradeShowFn(scope.row)">升级</el-button>
|
|
|
+ <template #slot-upgrade="{ scope }">
|
|
|
+ <el-button type="text" size="mini" @click="upgradeShowFn(scope.row)"
|
|
|
+ >升级</el-button
|
|
|
+ >
|
|
|
</template>
|
|
|
</x-crud>
|
|
|
<!-- 充值 -->
|
|
|
- <el-dialog title="充值" :visible.sync="rechargeDialog" :close-on-click-modal="false" width="600px">
|
|
|
+ <el-dialog
|
|
|
+ title="充值"
|
|
|
+ :visible.sync="rechargeDialog"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ width="600px"
|
|
|
+ >
|
|
|
<div class="recharge-modal-content">
|
|
|
<div class="card-name">
|
|
|
<cardName :data="modalData" />
|
|
|
@@ -136,7 +166,12 @@
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
<!-- 升级 -->
|
|
|
- <el-dialog title="升级" :visible.sync="upgradeDialog" :close-on-click-modal="false" width="600px">
|
|
|
+ <el-dialog
|
|
|
+ title="升级"
|
|
|
+ :visible.sync="upgradeDialog"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ width="600px"
|
|
|
+ >
|
|
|
<div class="recharge-modal-content">
|
|
|
<div class="card-name">
|
|
|
<cardName :data="modalData" />
|
|
|
@@ -150,7 +185,11 @@
|
|
|
class="demo-form"
|
|
|
>
|
|
|
<el-form-item label="请选择等级">
|
|
|
- <el-select v-model="upgradeForm.member" size="small" placeholder="请选择">
|
|
|
+ <el-select
|
|
|
+ v-model="upgradeForm.member"
|
|
|
+ size="small"
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
<el-option
|
|
|
v-for="(item, index) in levelData.list"
|
|
|
:key="index"
|
|
|
@@ -187,7 +226,7 @@ import detailDraw from './components/detail-draw';
|
|
|
export default {
|
|
|
components: {
|
|
|
cardName,
|
|
|
- detailDraw
|
|
|
+ detailDraw,
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
@@ -198,18 +237,18 @@ export default {
|
|
|
{
|
|
|
text: '全部',
|
|
|
key: '-1',
|
|
|
- val: 0
|
|
|
+ val: 0,
|
|
|
},
|
|
|
{
|
|
|
text: '粉丝',
|
|
|
key: '1',
|
|
|
- val: 0
|
|
|
+ val: 0,
|
|
|
},
|
|
|
{
|
|
|
text: '会员',
|
|
|
key: '2',
|
|
|
- val: 0
|
|
|
- }
|
|
|
+ val: 0,
|
|
|
+ },
|
|
|
],
|
|
|
// modal
|
|
|
modalData: {},
|
|
|
@@ -217,22 +256,22 @@ export default {
|
|
|
rechargeDialog: false,
|
|
|
rechargeForm: {
|
|
|
rechargeAmount: '',
|
|
|
- confirmPassword: ''
|
|
|
+ confirmPassword: '',
|
|
|
},
|
|
|
rechargeRules: {},
|
|
|
// upgrade
|
|
|
upgradeDialog: false,
|
|
|
upgradeForm: {
|
|
|
member: '',
|
|
|
- confirmPassword: ''
|
|
|
+ confirmPassword: '',
|
|
|
},
|
|
|
upgradeRules: {},
|
|
|
// draw
|
|
|
- drapShow: false
|
|
|
+ drapShow: false,
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
- ...mapGetters({ levelData: 'level' })
|
|
|
+ ...mapGetters({ levelData: 'level' }),
|
|
|
},
|
|
|
created() {
|
|
|
this.getLevel();
|
|
|
@@ -249,9 +288,9 @@ export default {
|
|
|
this.$service.member
|
|
|
.recharge({
|
|
|
userId: this.modalData.id,
|
|
|
- ...this.rechargeForm
|
|
|
+ ...this.rechargeForm,
|
|
|
})
|
|
|
- .then(res => {
|
|
|
+ .then((res) => {
|
|
|
console.log(res);
|
|
|
this.$message.success('充值成功!');
|
|
|
this.resetForm();
|
|
|
@@ -262,9 +301,9 @@ export default {
|
|
|
this.$service.member
|
|
|
.upgrade({
|
|
|
userId: this.modalData.id,
|
|
|
- ...this.upgradeForm
|
|
|
+ ...this.upgradeForm,
|
|
|
})
|
|
|
- .then(res => {
|
|
|
+ .then((res) => {
|
|
|
this.$message.success('升级成功!');
|
|
|
console.log(res);
|
|
|
this.resetForm();
|
|
|
@@ -311,71 +350,71 @@ export default {
|
|
|
prop: 'id',
|
|
|
label: 'ID',
|
|
|
align: 'center',
|
|
|
- width: 100
|
|
|
+ width: 100,
|
|
|
},
|
|
|
{
|
|
|
prop: 'avatarUrl',
|
|
|
label: '头像',
|
|
|
align: 'center',
|
|
|
- width: 80
|
|
|
+ width: 80,
|
|
|
},
|
|
|
{
|
|
|
prop: 'userName',
|
|
|
label: '昵称',
|
|
|
- align: 'center'
|
|
|
+ align: 'center',
|
|
|
},
|
|
|
{
|
|
|
prop: 'mobile',
|
|
|
label: '手机号',
|
|
|
align: 'center',
|
|
|
- width: 120
|
|
|
+ width: 120,
|
|
|
},
|
|
|
{
|
|
|
prop: 'memberLevel',
|
|
|
label: '会员级别',
|
|
|
align: 'center',
|
|
|
- emptyText: '无'
|
|
|
+ emptyText: '无',
|
|
|
},
|
|
|
{
|
|
|
prop: 'growth',
|
|
|
label: '成长值',
|
|
|
- align: 'center'
|
|
|
+ align: 'center',
|
|
|
},
|
|
|
{
|
|
|
prop: 'discount',
|
|
|
label: '折扣',
|
|
|
- align: 'center'
|
|
|
+ align: 'center',
|
|
|
},
|
|
|
{
|
|
|
prop: 'balance',
|
|
|
label: '余额',
|
|
|
- align: 'center'
|
|
|
+ align: 'center',
|
|
|
},
|
|
|
{
|
|
|
prop: 'subscribe',
|
|
|
label: '粉丝',
|
|
|
align: 'center',
|
|
|
sortable: false,
|
|
|
- width: 150
|
|
|
+ width: 150,
|
|
|
},
|
|
|
{
|
|
|
prop: 'store',
|
|
|
label: '已到店',
|
|
|
align: 'center',
|
|
|
- width: 100
|
|
|
+ width: 100,
|
|
|
},
|
|
|
{
|
|
|
prop: 'sourceType',
|
|
|
label: '来源',
|
|
|
align: 'center',
|
|
|
- width: 100
|
|
|
+ width: 100,
|
|
|
},
|
|
|
{
|
|
|
prop: 'visitTimeFormat',
|
|
|
label: '最近访问',
|
|
|
align: 'center',
|
|
|
- width: 140
|
|
|
- }
|
|
|
+ width: 140,
|
|
|
+ },
|
|
|
],
|
|
|
// 操作列
|
|
|
op: {
|
|
|
@@ -385,16 +424,16 @@ export default {
|
|
|
width: 180,
|
|
|
align: 'center',
|
|
|
fixed: 'right',
|
|
|
- label: '操作'
|
|
|
+ label: '操作',
|
|
|
},
|
|
|
// 布局,请移步 `layout`
|
|
|
- layout: ['slot-detail', 'slot-recharge', 'slot-upgrade', 'slot-ship']
|
|
|
- }
|
|
|
+ layout: ['slot-detail', 'slot-recharge', 'slot-upgrade', 'slot-ship'],
|
|
|
+ },
|
|
|
})
|
|
|
.set('upsert', {
|
|
|
props: {
|
|
|
width: '400px',
|
|
|
- 'label-width': '100px'
|
|
|
+ 'label-width': '100px',
|
|
|
},
|
|
|
|
|
|
items: [
|
|
|
@@ -405,13 +444,13 @@ export default {
|
|
|
component: {
|
|
|
name: 'el-input',
|
|
|
attrs: {
|
|
|
- placeholder: '请填写手机号'
|
|
|
- }
|
|
|
+ placeholder: '请填写手机号',
|
|
|
+ },
|
|
|
},
|
|
|
rules: [
|
|
|
{
|
|
|
required: true,
|
|
|
- message: '请填写手机号'
|
|
|
+ message: '请填写手机号',
|
|
|
},
|
|
|
{
|
|
|
validator: (rule, value, callback) => {
|
|
|
@@ -420,9 +459,9 @@ export default {
|
|
|
}
|
|
|
|
|
|
callback();
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
{
|
|
|
prop: 'confirmMobile',
|
|
|
@@ -431,13 +470,13 @@ export default {
|
|
|
component: {
|
|
|
name: 'el-input',
|
|
|
attrs: {
|
|
|
- placeholder: '请填写'
|
|
|
- }
|
|
|
+ placeholder: '请填写',
|
|
|
+ },
|
|
|
},
|
|
|
rules: [
|
|
|
{
|
|
|
required: true,
|
|
|
- message: '请填写'
|
|
|
+ message: '请填写',
|
|
|
},
|
|
|
{
|
|
|
validator: (rule, value, callback) => {
|
|
|
@@ -446,9 +485,9 @@ export default {
|
|
|
}
|
|
|
|
|
|
callback();
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
{
|
|
|
prop: 'balance',
|
|
|
@@ -458,16 +497,16 @@ export default {
|
|
|
name: 'el-input-number',
|
|
|
props: {
|
|
|
min: 0,
|
|
|
- max: 10000000
|
|
|
+ max: 10000000,
|
|
|
},
|
|
|
attrs: {
|
|
|
- placeholder: '请填写余额'
|
|
|
- }
|
|
|
+ placeholder: '请填写余额',
|
|
|
+ },
|
|
|
},
|
|
|
rules: {
|
|
|
required: true,
|
|
|
- message: '请填写余额'
|
|
|
- }
|
|
|
+ message: '请填写余额',
|
|
|
+ },
|
|
|
},
|
|
|
{
|
|
|
prop: 'memberLevel',
|
|
|
@@ -476,20 +515,20 @@ export default {
|
|
|
component: {
|
|
|
name: 'el-select',
|
|
|
attrs: {
|
|
|
- placeholder: '请选择'
|
|
|
+ placeholder: '请选择',
|
|
|
},
|
|
|
options: this.$util.isEmpty(this.levelData)
|
|
|
? []
|
|
|
- : this.levelData.list.map(e => {
|
|
|
+ : this.levelData.list.map((e) => {
|
|
|
e.label = e.level;
|
|
|
e.value = e.level;
|
|
|
return e;
|
|
|
- })
|
|
|
+ }),
|
|
|
},
|
|
|
rules: {
|
|
|
required: true,
|
|
|
- message: '等级不能为空'
|
|
|
- }
|
|
|
+ message: '等级不能为空',
|
|
|
+ },
|
|
|
},
|
|
|
{
|
|
|
prop: 'realName',
|
|
|
@@ -498,9 +537,9 @@ export default {
|
|
|
component: {
|
|
|
name: 'el-input',
|
|
|
attrs: {
|
|
|
- placeholder: '选填'
|
|
|
- }
|
|
|
- }
|
|
|
+ placeholder: '选填',
|
|
|
+ },
|
|
|
+ },
|
|
|
},
|
|
|
{
|
|
|
prop: 'confirmPassword',
|
|
|
@@ -509,24 +548,24 @@ export default {
|
|
|
component: {
|
|
|
name: 'el-input',
|
|
|
attrs: {
|
|
|
- placeholder: '请填写您的确认密码'
|
|
|
+ placeholder: '请填写您的确认密码',
|
|
|
},
|
|
|
props: {
|
|
|
placeholder: '请填写您的确认密码',
|
|
|
- type: 'password'
|
|
|
- }
|
|
|
+ type: 'password',
|
|
|
+ },
|
|
|
},
|
|
|
rules: [
|
|
|
{
|
|
|
required: true,
|
|
|
- message: '密码不能为空'
|
|
|
+ message: '密码不能为空',
|
|
|
},
|
|
|
{
|
|
|
min: 6,
|
|
|
max: 16,
|
|
|
- message: '密码长度在6到16个字符'
|
|
|
- }
|
|
|
- ]
|
|
|
+ message: '密码长度在6到16个字符',
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
{
|
|
|
prop: 'tips',
|
|
|
@@ -537,15 +576,15 @@ export default {
|
|
|
注册会员时会根据手机号识别客户,等级和余额自动同步到帐户里。
|
|
|
</span>
|
|
|
</div>
|
|
|
- )
|
|
|
- }
|
|
|
- ]
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ ],
|
|
|
})
|
|
|
.set('layout', [
|
|
|
['slot-tabs'],
|
|
|
['search-key', 'flex1', 'add-btn', 'refresh-btn'],
|
|
|
['data-table'],
|
|
|
- ['flex1', 'pagination']
|
|
|
+ ['flex1', 'pagination'],
|
|
|
])
|
|
|
.on('refresh', async (params, { next }) => {
|
|
|
// 继续执行刷新
|
|
|
@@ -557,8 +596,8 @@ export default {
|
|
|
})
|
|
|
.done();
|
|
|
app.refresh({ type: this.tabIndex });
|
|
|
- }
|
|
|
- }
|
|
|
+ },
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|
|
|
|