Merge branch 'dev' of http://git.sinoecare.com/sinoecare/digital_village_v2/dvcp_v2_webapp into dev
This commit is contained in:
@@ -43,9 +43,9 @@
|
|||||||
<ai-info-item label="群发范围" isLine>
|
<ai-info-item label="群发范围" isLine>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<span>按条件筛选的</span>
|
<span>按条件筛选的</span>
|
||||||
<i>{{ info.wxGroups ? info.wxGroups.length : 0 }}</i>
|
<i>{{ groups.length }}</i>
|
||||||
<span>个客户群</span>
|
<span>个客户群</span>
|
||||||
<em>详情</em>
|
<em @click="isShowGroups = true">详情</em>
|
||||||
</div>
|
</div>
|
||||||
</ai-info-item>
|
</ai-info-item>
|
||||||
<ai-info-item label="消息内容" isLine>
|
<ai-info-item label="消息内容" isLine>
|
||||||
@@ -218,11 +218,40 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</ai-card>
|
</ai-card>
|
||||||
|
<ai-dialog
|
||||||
|
:visible.sync="isShowGroups"
|
||||||
|
width="890px"
|
||||||
|
title="群发范围"
|
||||||
|
@onConfirm="isShowGroups = false">
|
||||||
|
<ai-table
|
||||||
|
:tableData="info.wxGroups"
|
||||||
|
:col-configs="colConfigs3"
|
||||||
|
border
|
||||||
|
tableSize="small"
|
||||||
|
:isShowPagination="false"
|
||||||
|
@getList="() => {}">
|
||||||
|
<el-table-column slot="user" label="群名称" align="center">
|
||||||
|
<template slot-scope="{ row }">
|
||||||
|
<div class="userinfo">
|
||||||
|
<span v-for="(item, index) in row.groupIds" :key="index">
|
||||||
|
<ai-open-data type="departmentName" :openid="item"></ai-open-data>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</ai-table>
|
||||||
|
</ai-dialog>
|
||||||
|
<div class="detail-phone">
|
||||||
|
<div class="mask"></div>
|
||||||
|
<Phone :avatar="user.info.avatar" :content="content" :fileList="fileList"></Phone>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</ai-detail>
|
</ai-detail>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { mapState } from 'vuex'
|
||||||
|
import Phone from './Phone'
|
||||||
export default {
|
export default {
|
||||||
name: 'Detail',
|
name: 'Detail',
|
||||||
|
|
||||||
@@ -232,9 +261,14 @@
|
|||||||
params: Object
|
params: Object
|
||||||
},
|
},
|
||||||
|
|
||||||
|
components: {
|
||||||
|
Phone
|
||||||
|
},
|
||||||
|
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
total1: 0,
|
total1: 0,
|
||||||
|
isShowGroups: false,
|
||||||
total2: 0,
|
total2: 0,
|
||||||
user1: [],
|
user1: [],
|
||||||
user2: [],
|
user2: [],
|
||||||
@@ -261,6 +295,10 @@
|
|||||||
info: {},
|
info: {},
|
||||||
content: '',
|
content: '',
|
||||||
currIndex: 0,
|
currIndex: 0,
|
||||||
|
colConfigs3: [
|
||||||
|
{ prop: 'groupOwnerId', label: '群主', openType: 'userName' },
|
||||||
|
{ slot: 'user' }
|
||||||
|
],
|
||||||
colConfigs1: [
|
colConfigs1: [
|
||||||
{ slot: 'user', label: '成员', openType: 'userName' },
|
{ slot: 'user', label: '成员', openType: 'userName' },
|
||||||
{ prop: 'groupCount', label: '预计送达居民群', align: 'center' }
|
{ prop: 'groupCount', label: '预计送达居民群', align: 'center' }
|
||||||
@@ -269,10 +307,15 @@
|
|||||||
{ prop: 'groupName', label: '居民群' },
|
{ prop: 'groupName', label: '居民群' },
|
||||||
{ prop: 'memberCount', label: '群人数', align: 'center' },
|
{ prop: 'memberCount', label: '群人数', align: 'center' },
|
||||||
{ slot: 'user', label: '群主', align: 'center' },
|
{ slot: 'user', label: '群主', align: 'center' },
|
||||||
]
|
],
|
||||||
|
groups: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
...mapState(['user'])
|
||||||
|
},
|
||||||
|
|
||||||
created () {
|
created () {
|
||||||
this.getInfo(this.params.id)
|
this.getInfo(this.params.id)
|
||||||
this.getMemberInfo()
|
this.getMemberInfo()
|
||||||
@@ -350,6 +393,15 @@
|
|||||||
...v.sysFile
|
...v.sysFile
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
this.info.wxGroups = res.data.wxGroups.map(v => {
|
||||||
|
this.groups.push(...v.groupIds.split(','))
|
||||||
|
|
||||||
|
return {
|
||||||
|
...v,
|
||||||
|
groupIds: v.groupIds.split(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -390,11 +442,38 @@
|
|||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.AppAnnounceDetail {
|
.AppAnnounceDetail {
|
||||||
|
position: relative;
|
||||||
.user-wrapper {
|
.user-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.detail-phone {
|
||||||
|
position: fixed;
|
||||||
|
left: 0%;
|
||||||
|
top: 0%;
|
||||||
|
z-index: 11;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
.mask {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
z-index: 1;
|
||||||
|
background: rgba($color: #000000, $alpha: 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .phone-container {
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
z-index: 11;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
}
|
||||||
.userSelcet {
|
.userSelcet {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -429,7 +508,6 @@
|
|||||||
|
|
||||||
.userinfo {
|
.userinfo {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
:current.sync="search.current"
|
:current.sync="search.current"
|
||||||
:size.sync="search.size"
|
:size.sync="search.size"
|
||||||
@getList="getList">
|
@getList="getList">
|
||||||
<el-table-column slot="user" width="140px" fixed="right" label="创建人" align="center">
|
<el-table-column slot="user" width="140px" label="创建人" align="center">
|
||||||
<template slot-scope="{ row }">
|
<template slot-scope="{ row }">
|
||||||
<div class="userinfo">
|
<div class="userinfo">
|
||||||
<span>
|
<span>
|
||||||
|
|||||||
283
project/sass/apps/Announce/AppAnnounce/components/Phone.vue
Normal file
283
project/sass/apps/Announce/AppAnnounce/components/Phone.vue
Normal file
@@ -0,0 +1,283 @@
|
|||||||
|
<template>
|
||||||
|
<div class="phone-container">
|
||||||
|
<img class="phone" src="https://cdn.cunwuyun.cn/dvcp/announce/phone.png" />
|
||||||
|
<img class="phone-wrapper" src="https://cdn.cunwuyun.cn/dvcp/announce/phone-wrapper.png" />
|
||||||
|
<div class="right-content">
|
||||||
|
<div class="msg-list">
|
||||||
|
<div class="msg-item" v-if="content">
|
||||||
|
<div class="msg-item__left">
|
||||||
|
<img v-if="avatar" :src="avatar" />
|
||||||
|
</div>
|
||||||
|
<div class="msg-item__right">
|
||||||
|
<div class="msg-wrapper msg-text">
|
||||||
|
<p>{{ content }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="msg-item" v-for="item in fileList" :key="item.id">
|
||||||
|
<div class="msg-item__left">
|
||||||
|
<img v-if="avatar" :src="avatar" />
|
||||||
|
</div>
|
||||||
|
<div class="msg-item__right" :class="[['1', '2'].indexOf(item.msgType) !== -1 ? 'left-border' : '']">
|
||||||
|
<div class="msg-wrapper msg-img" v-if="item.msgType === '1'">
|
||||||
|
<img :src="item.imgPicUrl" />
|
||||||
|
</div>
|
||||||
|
<div class="msg-wrapper msg-video" v-if="item.msgType === '2'">
|
||||||
|
<video controls :src="item.url"></video>
|
||||||
|
</div>
|
||||||
|
<div class="msg-wrapper msg-file" v-if="item.msgType === '3'">
|
||||||
|
<div class="msg-left">
|
||||||
|
<h2>{{ item.name }}</h2>
|
||||||
|
<p>{{ item.fileSizeStr }}</p>
|
||||||
|
</div>
|
||||||
|
<img src="https://cdn.cunwuyun.cn/dvcp/announce/folder.png" />
|
||||||
|
</div>
|
||||||
|
<div class="msg-wrapper msg-link" v-if="item.msgType === '4'">
|
||||||
|
<h2>{{ item.linkTitle }}</h2>
|
||||||
|
<div class="msg-right">
|
||||||
|
<p>{{ item.linkDesc }}</p>
|
||||||
|
<img :src="item.linkPicUrl" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="msg-wrapper msg-miniapp" v-if="item.msgType === '5'">
|
||||||
|
<h2>{{ item.mpTitle }}</h2>
|
||||||
|
<img :src="item.url" />
|
||||||
|
<div class="msg-bottom">
|
||||||
|
<i>小程序</i>
|
||||||
|
<img src="https://cdn.cunwuyun.cn/dvcp/announce/miniapp.png">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: ['fileList', 'avatar', 'content']
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.phone-container {
|
||||||
|
width: 338px;
|
||||||
|
height: 675px;
|
||||||
|
padding: 80px 15px 100px 32px;
|
||||||
|
|
||||||
|
.phone {
|
||||||
|
position: absolute;
|
||||||
|
left: 13px;
|
||||||
|
top: 4px;
|
||||||
|
z-index: 1;
|
||||||
|
width: 314px;
|
||||||
|
height: 647px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.phone-wrapper {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
z-index: 2;
|
||||||
|
width: 338px;
|
||||||
|
height: 675px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right-content {
|
||||||
|
position: relative;
|
||||||
|
z-index: 11;
|
||||||
|
height: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
|
|
||||||
|
.msg-item {
|
||||||
|
display: flex;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
|
||||||
|
.msg-item__left {
|
||||||
|
width: 42px;
|
||||||
|
height: 42px;
|
||||||
|
margin-right: 16px;
|
||||||
|
background: #2891FF;
|
||||||
|
border-radius: 4px;
|
||||||
|
flex-shrink: 1;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.msg-item__right {
|
||||||
|
position: relative;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
position: absolute;
|
||||||
|
top: 16px;
|
||||||
|
left: 0;
|
||||||
|
z-index: 1;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border-right: 6px solid #fff;
|
||||||
|
border-left: 6px solid transparent;
|
||||||
|
border-bottom: 6px solid transparent;
|
||||||
|
border-top: 6px solid transparent;
|
||||||
|
content: " ";
|
||||||
|
transform: translate(-100%, 0%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.left-border::after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.msg-img img {
|
||||||
|
max-width: 206px;
|
||||||
|
max-height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.msg-video video {
|
||||||
|
max-width: 206px;
|
||||||
|
max-height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.msg-text {
|
||||||
|
max-width: 206px;
|
||||||
|
width: max-content;
|
||||||
|
line-height: 1.3;
|
||||||
|
padding: 12px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 5px;
|
||||||
|
word-break: break-all;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #222222;
|
||||||
|
}
|
||||||
|
|
||||||
|
.msg-miniapp {
|
||||||
|
width: 206px;
|
||||||
|
padding: 0 12px;
|
||||||
|
text-align: justify;
|
||||||
|
font-size: 0;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 5px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #222222;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
line-height: 1.2;
|
||||||
|
padding: 8px 0;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
color: #222222;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 120px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.msg-bottom {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
line-height: 1;
|
||||||
|
padding: 4px 0;
|
||||||
|
border-top: 1px solid #eee;
|
||||||
|
|
||||||
|
i {
|
||||||
|
margin-right: 4px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-style: normal;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.msg-file {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 206px;
|
||||||
|
padding: 12px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
.msg-left {
|
||||||
|
flex: 1;
|
||||||
|
margin-right: 18px;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
display: -webkit-box;
|
||||||
|
flex: 1;
|
||||||
|
line-height: 16px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: 1;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
color: #222222;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: #888888;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 44px;
|
||||||
|
height: 44px;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.msg-link {
|
||||||
|
width: 206px;
|
||||||
|
height: 102px;
|
||||||
|
padding: 12px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin-bottom: 4px;
|
||||||
|
color: #222222;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.msg-right {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
p {
|
||||||
|
display: -webkit-box;
|
||||||
|
flex: 1;
|
||||||
|
line-height: 16px;
|
||||||
|
margin-right: 10px;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
color: #888;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user