Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
aixianling
2022-07-27 15:59:33 +08:00
4 changed files with 60 additions and 26 deletions

View File

@@ -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 = {

View File

@@ -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,

View File

@@ -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: '图片',

View File

@@ -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) {