feature/mall_product #9

Merged
tianyu merged 2 commits from feature/mall_product into master 2023-06-01 14:22:42 +08:00
8 changed files with 371 additions and 112 deletions

View File

@ -9,6 +9,15 @@ export function listDept(query) {
}) })
} }
// 查询商户列表
export function listMerchant(query) {
return request({
url: '/system/dept/list-all',
method: 'get',
params: query
})
}
// 查询部门列表(排除节点) // 查询部门列表(排除节点)
export function listDeptExcludeChild(deptId) { export function listDeptExcludeChild(deptId) {
return request({ return request({

View File

@ -0,0 +1,147 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="组织名称" prop="name">
<el-input v-model="queryParams.name" placeholder="请输入组织名称" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="菜单状态" clearable>
<el-option v-for="dict in statusDictDatas" :key="parseInt(dict.value)" :label="dict.label" :value="parseInt(dict.value)"/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="info" plain icon="el-icon-sort" size="mini" @click="toggleExpandAll">/</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-if="refreshTable" v-loading="loading" :data="deptList" row-key="id" :default-expand-all="isExpandAll"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column prop="name" label="组织名称"></el-table-column>
<el-table-column prop="leader" label="负责人" :formatter="userNicknameFormat" width="120"/>
<el-table-column prop="sort" label="排序" width="200"></el-table-column>
<el-table-column prop="status" label="状态" width="100">
<template v-slot="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="200">
<template v-slot="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import { listMerchant } from "@/api/system/dept";
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import {CommonStatusEnum} from '@/utils/constants'
import { getDictDatas, DICT_TYPE } from '@/utils/dict'
import {listSimpleUsers} from "@/api/system/user";
import {getBaseHeader} from '@/utils/request';
export default {
name: "SystemMerchant",
components: { Treeselect },
data() {
return {
//
loading: true,
//
showSearch: true,
//
deptList: [],
//
deptOptions: [],
//
users: [],
//
title: "",
//
open: false,
//
isExpandAll: true,
//
refreshTable: true,
//
expand: false,
submitLoading: false,
upload: {
//
open: false,
//
title: '批量导入',
//
isUploading: false,
//
headers: getBaseHeader(),
//
url: process.env.VUE_APP_BASE_API + '/admin-api/system/dept/batch/import'
},
//
queryParams: {
name: undefined,
status: undefined
},
//
CommonStatusEnum: CommonStatusEnum,
//
statusDictDatas: getDictDatas(DICT_TYPE.COMMON_STATUS)
};
},
created() {
this.getList()
},
methods: {
/** 查询组织列表 */
getList() {
this.loading = true;
listMerchant(this.queryParams).then(response => {
this.deptList = this.handleTree(response.data, "id");
this.loading = false;
});
},
//
userNicknameFormat(row, column) {
if (!row.leaderUserId) {
return '未设置';
}
for (const user of this.users) {
if (row.leaderUserId === user.id) {
return user.nickname;
}
}
return '未知【' + row.leaderUserId + '】';
},
/** 搜索按钮操作 */
handleQuery() {
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
/** 展开/折叠操作 */
toggleExpandAll() {
this.refreshTable = false;
this.isExpandAll = !this.isExpandAll;
this.$nextTick(() => {
this.refreshTable = true;
});
}
}
};
</script>

View File

@ -61,7 +61,7 @@
</view> </view>
</view> </view>
</view> </view>
<u-navbar leftIcon="" title="会员申请"></u-navbar> <u-navbar leftIcon="" title="会员权益"></u-navbar>
</view> </view>
</template> </template>

View File

@ -33,8 +33,27 @@
<text class="text-content">{{item.gearRemarks}}</text> <text class="text-content">{{item.gearRemarks}}</text>
</view> </view>
</view> </view>
<view class="member-prompt"> <!-- <view class="member-prompt">
* 办理三个项目即可升级会员2会员2享XX权益 * 办理三个项目即可升级会员2会员2享XX权益
</view> -->
</view>
</view>
<view class="box-privilege">
<view class=""></view>
<view class="box-title">
<image src='../../static/images/memberTitle.png'></image>
</view>
<view class="privilege-list">
<view class="privilege-left">
<image src='../../static/images/money_look.png'></image>
<view class="privilege-text">
<text>查看充值注意事项</text>
<text>点击右侧按钮</text>
</view>
</view>
<view class="privilege-right" @click="handleRule">
<text>查看</text>
<view></view>
</view> </view>
</view> </view>
</view> </view>
@ -145,6 +164,11 @@
} }
}, },
methods: { methods: {
handleRule(){
uni.navigateTo({
url:'/pages/member_rule/index'
})
},
async verify(phone){ async verify(phone){
if(this.form.userPhone == this.form.confirmPhone){ if(this.form.userPhone == this.form.confirmPhone){
const res = await memberByHomeGradeInfo(phone) const res = await memberByHomeGradeInfo(phone)
@ -237,7 +261,7 @@
.box { .box {
margin-top: 10%; margin-top: 10%;
position: relative; position: relative;
padding: 8% 40rpx 30rpx 40rpx; padding: 4% 40rpx 10% 40rpx;
min-height: 100vh; min-height: 100vh;
background: url(../../static/images/bg.png); background: url(../../static/images/bg.png);
background-size: cover; background-size: cover;
@ -442,7 +466,7 @@
box-shadow: 0px 0px 15px -5px #000; box-shadow: 0px 0px 15px -5px #000;
border-radius: 36rpx; border-radius: 36rpx;
width: 100%; width: 100%;
margin-top: 12%; margin-top: 9%;
border-radius: 20px; border-radius: 20px;
box-sizing: border-box; box-sizing: border-box;
border: 1px solid transparent; border: 1px solid transparent;
@ -457,20 +481,20 @@
.box-title { .box-title {
position: absolute; position: absolute;
top: -9%; top: -37rpx;
left: -203rpx; left: -203rpx;
margin-left: 50%; margin-left: 50%;
image { image {
width: 406rpx; width: 406rpx;
height: 87rpx; height: 88rpx;
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
&::before { &::before {
content: '特权详情'; content: '注意事项';
position: absolute; position: absolute;
font-size: 34rpx; font-size: 34rpx;
font-family: Adobe Heiti Std; font-family: Adobe Heiti Std;
@ -483,32 +507,66 @@
} }
.privilege-list { .privilege-list {
margin: 84rpx 10rpx 40rpx 10rpx; width: 100%;
margin: 54rpx 30rpx 20rpx 30rpx;
min-height: 110rpx;
background: #FFFFFF;
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
padding: 3% 20rpx 1% 20rpx;
.privilege-left {
display: flex; display: flex;
justify-content: space-between;
.privilege-item {
display: flex;
flex-direction: column;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
background: #fff;
padding: 16rpx 16rpx;
border-radius: 20rpx; border-radius: 20rpx;
margin: 0 10rpx;
image { image {
width: 96rpx; width: 68rpx;
height: 96rpx; height: 64rpx;
border-radius: 50%; margin-right: 12rpx;
margin-bottom: 15rpx;
} }
.privilege-text { .privilege-text {
display: flex;
flex-direction: column;
text:nth-child(1){
font-size: 30rpx;
font-family: PingFang SC;
font-weight: 400;
color: #000000; color: #000000;
line-height: 36rpx; }
text-align: center; text:nth-child(2){
font-size: 26rpx; font-size: 24rpx;
font-family: PingFang SC;
font-weight: 400;
color: #FB394B;
}
}
}
.privilege-right{
background-image: url("../../static/images/others-button.png");
background-size: 144rpx 64rpx;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #FFFFFF;
width: 144rpx;
height: 64rpx;
display: flex;
align-items: center;
justify-content: center;
position: relative;
view {
position: absolute;
right: 0;
top: -24%;
width: 18rpx;
height: 6rpx;
background: #FEAC49;
border-radius: 3rpx;
} }
} }
@ -517,7 +575,7 @@
.box-submit { .box-submit {
background: linear-gradient(#FFC82B, #FD7A32); background: linear-gradient(#FFC82B, #FD7A32);
margin-top: 9%; margin-top: 4%;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;

View File

@ -13,12 +13,12 @@
<view v-show="item.refundStatus != 0">{{list[item.refundStatus]}}</view> <view v-show="item.refundStatus != 0">{{list[item.refundStatus]}}</view>
</view> </view>
<view class="item-text"> <view class="item-text">
<text>充值档次{{item.grade}}</text>
<text>日期{{$util.timestampToTime(item.stringCreateTime)}}</text> <text>日期{{$util.timestampToTime(item.stringCreateTime)}}</text>
<text>充值档次{{item.grade}}</text>
</view> </view>
</view> </view>
<u-empty v-show="!memberData.length" text="暂无数据" mode="list"></u-empty> <u-empty v-show="!memberData.length" text="暂无数据" mode="list"></u-empty>
<u-navbar autoBack title="购买录"></u-navbar> <u-navbar autoBack title="购买录"></u-navbar>
</view> </view>
</template> </template>
@ -101,7 +101,6 @@
.box { .box {
margin-top: 10%; margin-top: 10%;
padding: 20% 40rpx; padding: 20% 40rpx;
height: 100vh;
background: url(../../static/images/memberBg.png); background: url(../../static/images/memberBg.png);
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
@ -157,10 +156,11 @@
} }
.item-text{ .item-text{
padding: 34rpx 12rpx; padding: 20rpx 12rpx;
background: #fff; background: #fff;
margin-top: 20rpx; margin-top: 20rpx;
display: flex; display: flex;
flex-direction: column;
justify-content: space-between; justify-content: space-between;
font-size: 30rpx; font-size: 30rpx;
} }

View File

@ -30,8 +30,27 @@
<text class="text-content">{{item.gearRemarks}}</text> <text class="text-content">{{item.gearRemarks}}</text>
</view> </view>
</view> </view>
<view class="member-prompt"> <!-- <view class="member-prompt">
* 办理三个项目即可升级会员2会员2享XX权益 * 办理三个项目即可升级会员2会员2享XX权益
</view> -->
</view>
</view>
<view class="box-privilege">
<view class=""></view>
<view class="box-title">
<image src='../../static/images/memberTitle.png'></image>
</view>
<view class="privilege-list">
<view class="privilege-left">
<image src='../../static/images/money_look.png'></image>
<view class="privilege-text">
<text>查看充值注意事项</text>
<text>点击右侧按钮</text>
</view>
</view>
<view class="privilege-right" @click="handleRule">
<text>查看</text>
<view></view>
</view> </view>
</view> </view>
</view> </view>
@ -118,6 +137,11 @@ import store from '@/store/index';
} }
}, },
methods: { methods: {
handleRule(){
uni.navigateTo({
url:'/pages/member_rule/index'
})
},
handleMember(value,index){ handleMember(value,index){
if(!!parseInt(value.isExist)) return if(!!parseInt(value.isExist)) return
if(this.activeIndex.includes(index)){ if(this.activeIndex.includes(index)){
@ -202,7 +226,7 @@ import store from '@/store/index';
<style lang="scss" scoped> <style lang="scss" scoped>
.box { .box {
position: relative; position: relative;
padding: 8% 40rpx 30rpx 40rpx; padding: 4% 40rpx 10% 40rpx;
min-height: 100vh; min-height: 100vh;
background: url(../../static/images/bg.png); background: url(../../static/images/bg.png);
background-size: cover; background-size: cover;
@ -403,12 +427,11 @@ import store from '@/store/index';
} }
} }
} }
.box-privilege { .box-privilege {
box-shadow: 0px 0px 15px -5px #000; box-shadow: 0px 0px 15px -5px #000;
border-radius: 36rpx; border-radius: 36rpx;
width: 100%; width: 100%;
margin-top: 12%; margin-top: 9%;
border-radius: 20px; border-radius: 20px;
box-sizing: border-box; box-sizing: border-box;
border: 1px solid transparent; border: 1px solid transparent;
@ -423,20 +446,20 @@ import store from '@/store/index';
.box-title { .box-title {
position: absolute; position: absolute;
top: -9%; top: -37rpx;
left: -203rpx; left: -203rpx;
margin-left: 50%; margin-left: 50%;
image { image {
width: 406rpx; width: 406rpx;
height: 87rpx; height: 88rpx;
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
&::before { &::before {
content: '特权详情'; content: '注意事项';
position: absolute; position: absolute;
font-size: 34rpx; font-size: 34rpx;
font-family: Adobe Heiti Std; font-family: Adobe Heiti Std;
@ -449,32 +472,66 @@ import store from '@/store/index';
} }
.privilege-list { .privilege-list {
margin: 84rpx 10rpx 40rpx 10rpx; width: 100%;
margin: 54rpx 30rpx 20rpx 30rpx;
min-height: 110rpx;
background: #FFFFFF;
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
padding: 3% 20rpx 1% 20rpx;
.privilege-left {
display: flex; display: flex;
justify-content: space-between;
.privilege-item {
display: flex;
flex-direction: column;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
background: #fff;
padding: 16rpx 16rpx;
border-radius: 20rpx; border-radius: 20rpx;
margin: 0 10rpx;
image { image {
width: 96rpx; width: 68rpx;
height: 96rpx; height: 64rpx;
border-radius: 50%; margin-right: 12rpx;
margin-bottom: 15rpx;
} }
.privilege-text { .privilege-text {
display: flex;
flex-direction: column;
text:nth-child(1){
font-size: 30rpx;
font-family: PingFang SC;
font-weight: 400;
color: #000000; color: #000000;
line-height: 36rpx; }
text-align: center; text:nth-child(2){
font-size: 26rpx; font-size: 24rpx;
font-family: PingFang SC;
font-weight: 400;
color: #FB394B;
}
}
}
.privilege-right{
background-image: url("../../static/images/others-button.png");
background-size: 144rpx 64rpx;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 400;
color: #FFFFFF;
width: 144rpx;
height: 64rpx;
display: flex;
align-items: center;
justify-content: center;
position: relative;
view {
position: absolute;
right: 0;
top: -24%;
width: 18rpx;
height: 6rpx;
background: #FEAC49;
border-radius: 3rpx;
} }
} }
@ -483,7 +540,7 @@ import store from '@/store/index';
.box-submit { .box-submit {
background: linear-gradient(#FFC82B, #FD7A32); background: linear-gradient(#FFC82B, #FD7A32);
margin-top: 9%; margin-top: 6%;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;

View File

@ -1,8 +1,7 @@
<template> <template>
<view class="wechat-wrap"> <view class="wechat-wrap">
<u-navbar autoBack title="关注公众号"></u-navbar> <u-navbar autoBack title="关注公众号"></u-navbar>
<view class="bg"></view> <image src="@/static/images/qrcod.jpg" style="width:100%" mode="widthFix"></image>
<image src="@/static/images/qrcod.jpg" mode="widthFix" style="width: 400rpx;"></image>
</view> </view>
</template> </template>
@ -16,21 +15,10 @@
height: 100%; height: 100%;
} }
.bg {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: linear-gradient(0deg, #F94B78 0%, #FFD35C 100%);
opacity: 0.18;
z-index: 0
}
.wechat-wrap { .wechat-wrap {
width: 100%; width: 100%;
min-height: 100%; min-height: 100%;
padding: 260rpx 20rpx 0 20rpx; padding-top: 90rpx;
text-align: center; text-align: center;
} }
</style> </style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 73 KiB