Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -35,7 +35,6 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
mounted () {
|
mounted () {
|
||||||
console.log(this.$route)
|
|
||||||
if (this.$route.params.id) {
|
if (this.$route.params.id) {
|
||||||
this.component = 'Detail'
|
this.component = 'Detail'
|
||||||
this.params = {
|
this.params = {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<ai-detail class="AppAnnounceAdd">
|
<ai-detail class="AppAnnounceAdd" v-loading="isLoading">
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<ai-title :title="id ? '编辑居民群发' : '添加居民群发'" isShowBack isShowBottomBorder @onBackClick="cancel(false)">
|
<ai-title :title="id ? '编辑居民群发' : '添加居民群发'" isShowBack isShowBottomBorder @onBackClick="cancel(false)">
|
||||||
</ai-title>
|
</ai-title>
|
||||||
@@ -45,7 +45,8 @@
|
|||||||
<span>{{ groupLen }}</span>
|
<span>{{ groupLen }}</span>
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
placement="top"
|
placement="top"
|
||||||
content="任务开始后,3天内15分钟更新1次,3天后访问页面时触发更新,1时间最多刷新1次">
|
content="将由指定群主发送给TA作为群主的所有的群,由于企业微
|
||||||
|
信限制,当超过1000个时将只发送到最近活跃的1000个群">
|
||||||
<i class="iconfont iconModal_Warning"></i>
|
<i class="iconfont iconModal_Warning"></i>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
@@ -107,7 +108,7 @@
|
|||||||
multiple
|
multiple
|
||||||
:file-list="fileList"
|
:file-list="fileList"
|
||||||
:show-file-list="false"
|
:show-file-list="false"
|
||||||
:before-upload="v => handleChange(v, 10, '.zip,.rar,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.txt')"
|
:before-upload="v => handleChange(v, 20, '.zip,.rar,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.txt')"
|
||||||
:limit="9"
|
:limit="9"
|
||||||
action="/app/wxcp/upload/uploadFile"
|
action="/app/wxcp/upload/uploadFile"
|
||||||
accept=".zip,.rar,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.txt"
|
accept=".zip,.rar,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.txt"
|
||||||
@@ -256,7 +257,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="cancel">取消</el-button>
|
<el-button @click="cancel">取消</el-button>
|
||||||
<el-button type="primary" @click="confirm(0)" style="width: 120px;" v-loading="isLoading">通知成员发送</el-button>
|
<el-button type="primary" @click="confirm(0)" style="width: 120px;">通知成员发送</el-button>
|
||||||
<el-button type="primary" @click="confirm(1)">定时发送</el-button>
|
<el-button type="primary" @click="confirm(1)">定时发送</el-button>
|
||||||
</template>
|
</template>
|
||||||
</ai-detail>
|
</ai-detail>
|
||||||
@@ -578,9 +579,7 @@
|
|||||||
...this.fileList
|
...this.fileList
|
||||||
]
|
]
|
||||||
|
|
||||||
if (sendType === 0) {
|
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
}
|
|
||||||
this.instance.post(`/app/appmasssendingtask/addOrUpdate`, {
|
this.instance.post(`/app/appmasssendingtask/addOrUpdate`, {
|
||||||
...this.form,
|
...this.form,
|
||||||
id: this.params.id,
|
id: this.params.id,
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<div class="right-tips" v-if="info.status === '4'">
|
<div class="right-tips" v-if="info.status === '4'">
|
||||||
<el-tooltip
|
<el-tooltip
|
||||||
placement="top"
|
placement="top"
|
||||||
content="任务开始后,3天内15分钟更新1次,3天后访问页面时触发更新,1时间最多刷新1次">
|
content="任务开始后,3天内15分钟更新1次,3天后访问页面时触发更新,1小时最多刷新1次">
|
||||||
<i class="iconfont iconDetails"></i>
|
<i class="iconfont iconDetails"></i>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<span>数据更新于{{ info.dataUpdateTime }}</span>
|
<span>数据更新于{{ info.dataUpdateTime }}</span>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<div class="user">
|
<div class="user">
|
||||||
<img src="https://cdn.cunwuyun.cn/dvcp/announce/user.png" />
|
<img src="https://cdn.cunwuyun.cn/dvcp/announce/user.png" />
|
||||||
<span><ai-open-data type="userName" :openid="info.createUserId"></ai-open-data></span>
|
<span><ai-open-data type="userName" :openid="info.createUserId"></ai-open-data></span>
|
||||||
(<span v-if="info.createUserSecondDept"><ai-open-data type="departmentName" :openid="info.createUserSecondDept"></ai-open-data>,</span>
|
(<span v-if="info.createUserSecondDept"><ai-open-data type="departmentName" :openid="info.createUserSecondDept"></ai-open-data>/</span>
|
||||||
<span><ai-open-data type="departmentName" :openid="info.createUserDept"></ai-open-data></span>)
|
<span><ai-open-data type="departmentName" :openid="info.createUserDept"></ai-open-data></span>)
|
||||||
</div>
|
</div>
|
||||||
</ai-info-item>
|
</ai-info-item>
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
</ai-user-get>
|
</ai-user-get>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-button type="primary" @click="sendMsg(0)" v-if="info.status === '4'">提醒成员发送</el-button>
|
<el-button :type="isDisabled ? '' : 'primary'" :disabled="isDisabled" @click="sendMsg(0)" v-if="info.status === '4'">{{ isDisabled ? min + '分钟后可再次提醒' : '提醒成员发送' }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
<ai-table
|
<ai-table
|
||||||
:tableData="tableData1"
|
:tableData="tableData1"
|
||||||
@@ -193,7 +193,7 @@
|
|||||||
</ai-user-get>
|
</ai-user-get>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-button type="primary" @click="sendMsg(1)" v-if="info.status === '4'">提醒成员发送</el-button>
|
<el-button :type="isDisabled ? '' : 'primary'" :disabled="isDisabled" @click="sendMsg(1)" v-if="info.status === '4'">{{ isDisabled ? min + '分钟后可再次提醒' : '提醒成员发送' }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
<ai-table
|
<ai-table
|
||||||
:tableData="tableData2"
|
:tableData="tableData2"
|
||||||
@@ -303,7 +303,10 @@
|
|||||||
{ prop: 'memberCount', label: '群人数', align: 'center' },
|
{ prop: 'memberCount', label: '群人数', align: 'center' },
|
||||||
{ slot: 'user', label: '群主', align: 'center' },
|
{ slot: 'user', label: '群主', align: 'center' },
|
||||||
],
|
],
|
||||||
groups: []
|
groups: [],
|
||||||
|
timer: null,
|
||||||
|
min: 60,
|
||||||
|
isDisabled: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -317,6 +320,10 @@
|
|||||||
this.getGroupInfo()
|
this.getGroupInfo()
|
||||||
},
|
},
|
||||||
|
|
||||||
|
destroyed () {
|
||||||
|
clearInterval(this.timer)
|
||||||
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
getMemberInfo () {
|
getMemberInfo () {
|
||||||
this.instance.post(`/app/appmasssendingtask/detailStatistics`, null, {
|
this.instance.post(`/app/appmasssendingtask/detailStatistics`, null, {
|
||||||
@@ -352,6 +359,7 @@
|
|||||||
this.instance.post(`/app/appmasssendingtask/remindSend?id=${this.params.id}`).then(res => {
|
this.instance.post(`/app/appmasssendingtask/remindSend?id=${this.params.id}`).then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$message.success('提醒成功')
|
this.$message.success('提醒成功')
|
||||||
|
this.getInfo(this.params.id)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -376,10 +384,29 @@
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
countdown () {
|
||||||
|
this.timer = setInterval(() => {
|
||||||
|
const nowTime = this.$moment(new Date())
|
||||||
|
const min = nowTime.diff(this.info.remindTime, 'minute')
|
||||||
|
this.min = (60 - min)
|
||||||
|
console.log(nowTime.diff(this.info.remindTime, 'minute'))
|
||||||
|
|
||||||
|
if (this.min <= 0) {
|
||||||
|
this.isDisabled = false
|
||||||
|
} else {
|
||||||
|
this.isDisabled = true
|
||||||
|
clearInterval(this.timer)
|
||||||
|
}
|
||||||
|
}, 1000)
|
||||||
|
},
|
||||||
|
|
||||||
getInfo (id) {
|
getInfo (id) {
|
||||||
this.instance.post(`/app/appmasssendingtask/queryDetailById?id=${id}`).then(res => {
|
this.instance.post(`/app/appmasssendingtask/queryDetailById?id=${id}`).then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.info = res.data
|
this.info = res.data
|
||||||
|
if (res.data.status === '4' && res.data.remindTime) {
|
||||||
|
this.countdown()
|
||||||
|
}
|
||||||
|
|
||||||
const content = res.data.contents.filter(v => v.msgType === '0')
|
const content = res.data.contents.filter(v => v.msgType === '0')
|
||||||
|
|
||||||
@@ -406,10 +433,6 @@
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
getList () {
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
mapType (type) {
|
mapType (type) {
|
||||||
return {
|
return {
|
||||||
1: '图片',
|
1: '图片',
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex-between">
|
<div class="flex-between">
|
||||||
<div class="item-info">群发类型:<span>{{$dict.getLabel('mstSendType', item.sendType) || ''}}</span></div>
|
<div class="item-info">群发类型:<span>{{$dict.getLabel('mstSendType', item.sendType) || ''}}</span></div>
|
||||||
<span class="item-btn" @click="$router.push({name: '357e228ba8e64008ace90d095a7a0dd7', params: { id: item.id }})">详情{{item.sendType}}</span>
|
<span class="item-btn" @click="$router.push({name: '357e228ba8e64008ace90d095a7a0dd7', params: { id: item.id }})">详情</span>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-timeline-item>
|
</el-timeline-item>
|
||||||
@@ -155,7 +155,10 @@
|
|||||||
departData: {},
|
departData: {},
|
||||||
departBarChart: null,
|
departBarChart: null,
|
||||||
dialogDate: false,
|
dialogDate: false,
|
||||||
|
timeListEffect: '',
|
||||||
|
timeListDepart: '',
|
||||||
timeList: '',
|
timeList: '',
|
||||||
|
isEffectTimeSelect: false,
|
||||||
deptList: [],
|
deptList: [],
|
||||||
selectDeptName: '',
|
selectDeptName: '',
|
||||||
isDepartData: true,
|
isDepartData: true,
|
||||||
@@ -222,11 +225,11 @@
|
|||||||
return this.$message.error('请选择自定义时间');
|
return this.$message.error('请选择自定义时间');
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.effectType == 3) { //宣发效果
|
if(this.effectType == 3 && this.isEffectTimeSelect) { //宣发效果
|
||||||
|
this.timeListEffect = this.timeList
|
||||||
this.getEffect()
|
this.getEffect()
|
||||||
}
|
} else { //宣发明细
|
||||||
|
this.timeListDepart = this.timeList
|
||||||
if(this.departType == 3) { //宣发明细
|
|
||||||
this.getDepart()
|
this.getDepart()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -247,16 +250,21 @@
|
|||||||
this.taskList = this.dateList[day].taskList
|
this.taskList = this.dateList[day].taskList
|
||||||
},
|
},
|
||||||
changeEffectType(type) {
|
changeEffectType(type) {
|
||||||
|
if(this.effectType != 3) {
|
||||||
|
this.timeList = []
|
||||||
|
}else {
|
||||||
|
this.timeList = this.timeListEffect
|
||||||
|
}
|
||||||
this.effectType = type
|
this.effectType = type
|
||||||
if(type == 3) {
|
if(type == 3) {
|
||||||
|
this.isEffectTimeSelect = true
|
||||||
this.dialogDate = true
|
this.dialogDate = true
|
||||||
this.timeList = []
|
|
||||||
}else {
|
}else {
|
||||||
this.getEffect()
|
this.getEffect()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getEffect() {
|
getEffect() {
|
||||||
var startTime = this.timeList[0] || '' , endTime = this.timeList[1] || '', departId = this.deptList[0] || ''
|
var startTime = this.timeListEffect[0] || '' , endTime = this.timeListEffect[1] || '', departId = this.deptList[0] || ''
|
||||||
this.instance.post(`/app/appmasssendingtask/statisticsEffect?type=${this.effectType}&startTime=${startTime}&endTime=${endTime}&departId=${departId}`).then(res => {
|
this.instance.post(`/app/appmasssendingtask/statisticsEffect?type=${this.effectType}&startTime=${startTime}&endTime=${endTime}&departId=${departId}`).then(res => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
this.effectData = res.data
|
this.effectData = res.data
|
||||||
@@ -308,16 +316,21 @@
|
|||||||
this[id].setOption(option)
|
this[id].setOption(option)
|
||||||
},
|
},
|
||||||
changeDepartType(type) {
|
changeDepartType(type) {
|
||||||
|
if(this.departType != 3) {
|
||||||
|
this.timeList = []
|
||||||
|
}else {
|
||||||
|
this.timeList = this.timeListDepart
|
||||||
|
}
|
||||||
this.departType = type
|
this.departType = type
|
||||||
if(type == 3) {
|
if(type == 3) {
|
||||||
|
this.isEffectTimeSelect = false
|
||||||
this.dialogDate = true
|
this.dialogDate = true
|
||||||
this.timeList = []
|
|
||||||
}else {
|
}else {
|
||||||
this.getDepart()
|
this.getDepart()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getDepart() {
|
getDepart() {
|
||||||
var startTime = this.timeList[0] || '' , endTime = this.timeList[1] || ''
|
var startTime = this.timeListDepart[0] || '' , endTime = this.timeListDepart[1] || ''
|
||||||
this.instance.post(`/app/appmasssendingtask/statisticsDepart?type=${this.departType}&startTime=${startTime}&endTime=${endTime}`).then(res => {
|
this.instance.post(`/app/appmasssendingtask/statisticsDepart?type=${this.departType}&startTime=${startTime}&endTime=${endTime}`).then(res => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
if(res.data && res.data.length) {
|
if(res.data && res.data.length) {
|
||||||
|
|||||||
Reference in New Issue
Block a user