群标签

This commit is contained in:
liuye
2023-05-16 11:21:24 +08:00
parent 21906806d5
commit 82e088571a
8 changed files with 379 additions and 1 deletions

View File

@@ -0,0 +1,128 @@
<template>
<div class="AppGroupGrouping">
<AiTopFixed>
<u-search v-model="keyword" :clearabled="true" placeholder="请输入群名称、群主" :show-action="false" bg-color="#F5F5F5"
search-icon-color="#999" color="#333" height="58" @search="getListInit" @clear="getListInit">
</u-search>
</AiTopFixed>
<div class="list-content">
<div class="item">
<img src="./imgs/del-icon.png" alt="" class="group-img">
<div class="item-right">
<div class="group-info">
<p>兴龙县步行街美食一群兴龙县步行街美食一群兴龙县步行街美食一群兴龙县步行街美食一群兴龙县步行街美食一群兴龙县步行街美食一群</p>
<div>3 | 群主:谢晋</div>
</div>
<img src="./imgs/del-icon.png" alt="" class="del-img" @click="del()">
</div>
</div>
<div class="item">
<img src="./imgs/del-icon.png" alt="" class="group-img">
<div class="item-right">
<div class="group-info">
<p>兴龙县步行街美食一群</p>
<div>3 | 群主:谢晋</div>
</div>
<img src="./imgs/del-icon.png" alt="" class="del-img">
</div>
</div>
</div>
<AiAdd @add="add"/>
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
appName: '群分组',
data() {
return {
keyword: ''
}
},
computed: {
...mapState(['user']),
},
onShow() {
document.title = '群分组'
},
methods: {
getListInit() {
},
getTotal() {
this.$http.post(`/app/appwxuserfamiliarityrate/wxTopStatistics`).then(res=> {
if(res?.data) {
this.form = {...res.data}
}
})
},
del() {
this.$confirm('是否确认从该标签组中移除?').then(() => {
// this.$http.post(`/app/appzyvideobroadcast/getBroadcastRecall?broadcastId=${this.info.id}`).then((res) => {
// if (res.code == 0) {
// this.$u.toast('撤回成功!')
// this.getDetail()
// }
// })
})
},
add() {
uni.navigateTo({url: `./groupList`})
}
},
}
</script>
<style lang="scss" scoped>
.AppGroupGrouping {
.list-content {
margin-top: 24px;
.item {
background-color: #fff;
padding: 32px 0 0 32px;
.group-img {
width: 112px;
height: 112px;
margin-right: 24px;
vertical-align: middle;
}
.item-right {
display: inline-block;
width: calc(100% - 136px);
padding: 0 32px 32px 0;
border-bottom: 1px solid #ddd;
box-sizing: border-box;
.group-info {
display: inline-block;
width: calc(100% - 80px);
vertical-align: middle;
p {
width: 100%;
font-family: PingFangSC-Medium;
font-weight: 500;
font-size: 36px;
color: #333;
word-break: break-all;
line-height: 50px;
margin-bottom: 18px;
}
div {
line-height: 20px;
font-family: PingFangSC-Regular;
font-size: 28px;
color: #999;
}
}
img {
width: 56px;
height: 56px;
margin-left: 24px;
padding-top: 24px;
vertical-align: middle;
}
}
}
}
}
</style>

View File

@@ -0,0 +1,112 @@
<template>
<div class="groupList">
<AiTopFixed>
<u-search v-model="keyword" :clearabled="true" placeholder="请输入群名称、群主" :show-action="false" bg-color="#F5F5F5"
search-icon-color="#999" color="#333" height="58" @search="getListInit" @clear="getListInit">
</u-search>
</AiTopFixed>
<div class="list-content">
<div class="item" v-for="(item, index) in 20" :key="index">
<img src="./imgs/xz.png" alt="" class="choose-img" @click="checkClick(index)">
<div class="item-right">
<img src="./imgs/user-img.png" alt="">
<p>222222{{index}}</p>
</div>
</div>
</div>
<div class="footer">
<div>确定</div>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
appName: '群列表',
data() {
return {
}
},
computed: {
...mapState(['user']),
},
onShow() {
document.title = '群列表'
},
methods: {
getTotal() {
this.$http.post(`/app/appwxuserfamiliarityrate/wxTopStatistics`).then(res=> {
if(res?.data) {
this.form = {...res.data}
}
})
},
checkClick(index) {
}
},
}
</script>
<style lang="scss" scoped>
.groupList {
.list-content {
margin-top: 24px;
padding-bottom: 160px;
.item {
padding-left: 32px;
background-color: #fff;
.choose-img {
width: 48px;
height: 48px;
margin-right: 36px;
padding-top: 44px;
vertical-align: middle;
}
.item-right {
display: inline-block;
width: calc(100% - 84px);
img {
width: 88px;
height: 88px;
margin-right: 24px;
padding-top: 24px;
vertical-align: middle;
}
p {
display: inline-block;
padding: 44px 32px 42px 0;
width: calc(100% - 112px);
word-break: break-all;
border-bottom: 1px solid #ddd;
box-sizing: border-box;
vertical-align: middle;
}
}
}
}
.footer {
position: fixed;
bottom: 0;
left: 0;
padding: 32px 16px;
background-color: #f3f6f9;
z-index: 99;
width: 100%;
box-sizing: border-box;
div {
width: 100%;
text-align: center;
line-height: 88px;
background: #3975C6;
border-radius: 44px;
font-family: PingFangSC-Medium;
font-weight: 500;
font-size: 34px;
color: #FFF;
}
}
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,138 @@
<template>
<div class="AppGroupTags">
<AiTopFixed>
<div class="header-flex">
<div class="item">
<h3>100</h3>
<p>已打标签</p>
</div>
<div class="item">
<h3>100</h3>
<p>未打标签</p>
</div>
</div>
<div class="select-dept">
<AiPagePicker type="dept" :selected.sync="deptList" single nodeKey="id" @select="getListInit" isRequire="1">
<span class="label">{{deptList[0].name}}</span>
<u-icon name="arrow-down" color="#999" size="28" style="margin-left:4px;"/>
</AiPagePicker>
</div>
</AiTopFixed>
<div class="list-content">
<div class="item">
<div class="label">餐饮美食</div>
<div class="value">100</div>
</div>
<div class="item">
<div class="label">餐饮美餐饮美食餐饮美食餐饮美食餐饮美食餐饮美食餐饮美食餐饮美食餐饮美食餐饮美食餐饮美食餐饮美食餐饮美食餐饮美食餐饮美食食</div>
<div class="value">100</div>
</div>
<div class="item">
<div class="label">餐饮美食</div>
<div class="value">100</div>
</div>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
appName: '群标签',
data() {
return {
deptList: []
}
},
computed: {
...mapState(['user']),
},
onLoad() {
this.deptList = [{name: this.user.departName, id: this.user.departId}]
},
onShow() {
document.title = '群标签'
},
methods: {
getListInit() {
},
getTotal() {
this.$http.post(`/app/appwxuserfamiliarityrate/wxTopStatistics`).then(res=> {
if(res?.data) {
this.form = {...res.data}
}
})
},
},
}
</script>
<style lang="scss" scoped>
.AppGroupTags {
::v-deep .AiTopFixed .content {
padding: 0!important;
}
.header-flex {
display: flex;
background: #3975C6;
.item {
flex: 1;
padding: 48px 0;
text-align: center;
color: #fff;
h3 {
font-family: DINAlternate-Bold;
font-size: 64px;
line-height: 64px;
margin-bottom: 8px;
}
p {
font-family: PingFangSC-Regular;
font-size: 28px;
line-height: 40px;
}
}
}
.select-dept {
width: 100%;
background: #FFF;
box-shadow: 0 0 0 0 #E4E5E6;
::v-deep .AiPagePicker {
padding: 22px 32px;
div {
display: flex;
justify-content: space-between;
.label {
font-family: PingFangSC-Regular;
font-size: 28px;
color: #666;
line-height: 48px;
}
}
}
}
.list-content {
padding: 24px 32px 0;
.item {
padding: 42px 32px;
background-color: #fff;
box-shadow: 0 0 8px 0 #00000005;
border-radius: 16px;
display: flex;
font-family: PingFangSC-Regular;
font-size: 32px;
margin-bottom: 24px;
.label {
width: calc(100% - 120px);
color: #333;
}
.value {
width: 120px;
text-align: right;
color: #222;
}
}
}
}
</style>

View File

@@ -32,7 +32,7 @@
<!-- <div v-if="deptId" class="gateway-name">{{deptName || '部门'}}</div>
<u-icon name="arrow-down" color="#666" size="28" style="margin-left: 4px" v-if="deptId" />
<span v-else>部门<u-icon name="arrow-down" color="#666" size="28" style="margin-left: 4px" /></span> -->
<AiPagePicker type="dept" :selected.sync="deptList" single nodeKey="id" @select="getListInit" isRequire="0">
<AiPagePicker type="dept" :selected.sync="deptList" single nodeKey="id" @select="getListInit" isRequire="1">
<span class="label" v-if="deptList.length">{{deptList[0].name}}</span>
<span v-else>部门</span>
<u-icon name="arrow-down" color="#666" size="28" style="margin-left:4px;"/>