diff --git a/project/sass/apps/Announce/AppAnnounce/components/Add.vue b/project/sass/apps/Announce/AppAnnounce/components/Add.vue index e5b13b0f..4d8901f2 100644 --- a/project/sass/apps/Announce/AppAnnounce/components/Add.vue +++ b/project/sass/apps/Announce/AppAnnounce/components/Add.vue @@ -11,13 +11,13 @@ -
+
+ + +
+ +
+
+ + +
+ + + + + + + + + + + + + + + +
+
+
@@ -110,31 +200,28 @@ }, data () { - const validatorPhone = function (rule, value, callback) { - if (value === '') { - callback(new Error('请输入手机号')) - } else if (!/^1\d{10}$/.test(value)) { - callback(new Error('手机号格式错误')) - } else { - callback() - } - } return { info: {}, department: [], - validatorPhone: validatorPhone, + fileList: [], + isShowAddLink: false, + linkForm: { + linkPicUrl: [], + linkDesc: '', + linkTitle: '', + linkUrl: '' + }, form: { - position: '', + content: '', + choiceTime: '', + contents: [], + enableExamine: '0', + examines: [], + wxGroups: [], + sendScope: '0', + sendType: 0, name: '', - email: '', - telephone: '', - gender: '', - mobile: '', - departmentName: '', - departmentIds: [], - tagIds: [], - id: '', - status: false + taskTitle: '' }, id: '', tagsList: [] @@ -173,6 +260,91 @@ }) }, + onLinkConfirm () { + this.$refs.linkForm.validate((valid) => { + if (valid) { + this.fileList.push({ + ...this.linkForm, + linkPicUrl: this.linkPicUrl[0].url, + msgType: '4' + }) + + this.isShowAddLink = false + } + }) + }, + + onClose () { + this.linkForm.linkPicUrl = [] + this.linkForm.linkDesc = '' + this.linkForm.linkTitle = '' + this.linkForm.linkUrl = '' + }, + + removeFile (index) { + this.fileList.splice(index, 1) + }, + + mapIcon (type) { + return { + 1: 'https://cdn.cunwuyun.cn/dvcp/announce/img.png', + 2: 'https://cdn.cunwuyun.cn/dvcp/announce/video.png', + 3: 'https://cdn.cunwuyun.cn/dvcp/announce/folder.png', + 4: 'https://cdn.cunwuyun.cn/dvcp/announce/site.png', + 5: 'https://cdn.cunwuyun.cn/dvcp/announce/miniapp.png' + }[type] + }, + + onBeforeUpload(event) { + return this.onOverSize(event) + }, + + getExtension(name) { + return name.substring(name.lastIndexOf('.')) + }, + + handleChange (e, size, accept) { + const isLt10M = e.size / 1024 / 1024 < size + const suffixName = this.getExtension(e.name) + const suffixNameList = accept.split(',') + + if (suffixNameList.indexOf(`${suffixName.toLowerCase()}`) === -1) { + this.$message.error(`不支持该格式`) + return false + } + + if (!isLt10M) { + this.$message.error(`大小不超过${10}MB!`) + return false + } + + return true + }, + + submitUpload (file, type) { + const fileType = { + '1': 'image', + '2': 'video', + '3': 'file' + }[type] + let formData = new FormData() + formData.append('file', file.file) + formData.append('type', fileType) + this.instance.post(`/app/wxcp/upload/uploadFile`, formData, { + withCredentials: false + }).then(res => { + if (res.code == 0) { + this.fileList.push({ + ...res.data.file, + media: res.data.media, + msgType: type + }) + + this.$message.success('上传成功') + } + }) + }, + onChange (e) { if (e.length) { this.form.departmentIds = e.map(v => v.id) @@ -191,10 +363,6 @@ }) }, - onClose () { - this.form.explain = '' - }, - confirm () { this.$refs.form.validate((valid) => { if (valid) { @@ -304,6 +472,35 @@ font-size: 14px; } } + + .fileList { + margin-bottom: 12px; + + .add-item { + justify-content: space-between; + margin-bottom: 8px; + + .left { + display: flex; + align-items: center; + } + + i { + font-size: 14px; + cursor: pointer; + font-style: normal; + color: red; + + &:hover { + opacity: 0.6; + } + } + + &:last-child { + margin-bottom: 0; + } + } + } } .AppAnnounceDetail-container { @@ -321,10 +518,26 @@ .right { position: sticky; top: 0; - width: 400px; - height: 688px; - background: url(https://cdn.cunwuyun.cn/dvcp/announce/phone.png); - background-size: 400px 100%; + width: 338px; + height: 675px; + + .phone { + position: absolute; + left: 14px; + top: 14px; + z-index: 1; + width: 310px; + height: 647px; + } + + .phone-wrapper { + position: absolute; + left: 0; + top: 0; + z-index: 2; + width: 338px; + height: 675px; + } } } @@ -340,7 +553,7 @@ } i { - color: #c0c9db; + color: #8899bb; } em { diff --git a/project/sass/apps/Announce/AppAnnounce/components/List.vue b/project/sass/apps/Announce/AppAnnounce/components/List.vue index a7b7d69f..ddf9f499 100644 --- a/project/sass/apps/Announce/AppAnnounce/components/List.vue +++ b/project/sass/apps/Announce/AppAnnounce/components/List.vue @@ -12,32 +12,34 @@ @@ -86,20 +88,21 @@ export default { search: { current: 1, size: 10, - name: '', - startDate: '', - endDate: '' + status: '', + taskTitle: '', + startTime: '', + endTime: '' }, tableData: [], loading: false, total: 0, colConfigs: [ - { prop: 'position', label: '任务名称' }, - { prop: 'mobile', label: '群发类型' }, - { prop: 'position', label: '创建人' }, - { prop: 'mobile', label: '群发时间' }, - { prop: 'position', label: '状态' }, - { prop: 'mobile', label: '任务完成率' } + { prop: 'taskTitle', label: '任务名称' }, + { prop: 'sendType', label: '群发类型', formart: v => v === '0' ? '立即发送' : '定时发送', align: 'center' }, + { prop: 'createUserId', label: '创建人', openType: 'userName', align: 'center' }, + { prop: 'createTime', label: '群发时间', align: 'center' }, + { prop: 'status', label: '状态', formart: v => this.dict.getLabel('mstStatus', v), align: 'center' }, + { prop: 'completionRate', label: '任务完成率', align: 'center' } ] } }, @@ -108,29 +111,18 @@ export default { ...mapState(['user']) }, - created() { - this.getList() + created () { + this.dict.load('mstStatus', 'mstSendType').then(() => { + this.getList() + }) }, methods: { - removeDepart(id, parentid) { - this.$confirm('确定删除该数据?').then(() => { - this.instance.post(`/app/wxcp/wxdepartment/delete?id=${id}`).then(res => { - if (res.code == 0) { - this.defaultChecked = [parentid] - this.$message.success('删除成功!') - this.getTree() - } - }) - }) - }, - getList() { this.loading = true - this.instance.post(`/app/wxcp/wxuser/list`, null, { + this.instance.post(`/app/appmasssendingtask/list`, null, { params: { ...this.search, - departmentId: this.tabIndex === 0 ? this.search.departmentId : '' } }).then(res => { if (res.code == 0) { @@ -151,7 +143,7 @@ export default { remove(id) { this.$confirm('确定删除该数据?').then(() => { - this.instance.post(`/app/wxcp/wxuser/delete?id=${id}`).then(res => { + this.instance.post(`/app/appmasssendingtask/delete?ids=${id}`).then(res => { if (res.code == 0) { this.$message.success('删除成功!') this.getList() diff --git a/project/sass/apps/Announce/AppAnnounceStatistics/AppAnnounceStatistics.vue b/project/sass/apps/Announce/AppAnnounceStatistics/AppAnnounceStatistics.vue index 7a2954fb..e821c587 100644 --- a/project/sass/apps/Announce/AppAnnounceStatistics/AppAnnounceStatistics.vue +++ b/project/sass/apps/Announce/AppAnnounceStatistics/AppAnnounceStatistics.vue @@ -100,6 +100,13 @@
+ + + + + 确认 + @@ -132,7 +139,8 @@ dateTypeList: ['近7天', '近30天', '近1年', '自定义'], departData: {}, departBarChart: null, - + dialogDate: false, + timeList: '', type: '', } @@ -188,6 +196,22 @@ this.dict.load("mstSendType") }, methods: { + selectDete() { + console.log(this.timeList) + if(!this.timeList || !this.timeList.length) { + return this.$message.error('请选择自定义时间'); + } + + if(this.effectType == 3) { //宣发效果 + this.getEffect() + } + + if(this.departType == 3) { //宣发明细 + this.getDepart() + } + + this.dialogDate = false + }, searchMonthChange() { this.calendarDate = this.searchMonth + '-1' }, @@ -204,10 +228,16 @@ }, changeEffectType(type) { this.effectType = type - this.getEffect() + if(type == 3) { + this.dialogDate = true + this.timeList = [] + }else { + this.getEffect() + } }, getEffect() { - this.instance.post(`/app/appmasssendingtask/statisticsEffect?type=${this.effectType}`).then(res => { + var startTime = this.timeList[0] || '' , endTime = this.timeList[1] || '' + this.instance.post(`/app/appmasssendingtask/statisticsEffect?type=${this.effectType}&startTime=${startTime}&endTime=${endTime}`).then(res => { if (res.code == 0) { this.effectData = res.data var xData = [], createData = [], executeData = [], receiveData = [] @@ -259,10 +289,16 @@ }, changeDepartType(type) { this.departType = type - this.getDepart() + if(type == 3) { + this.dialogDate = true + this.timeList = [] + }else { + this.getDepart() + } }, - getDepart() { // ${this.departType} - this.instance.post(`/app/appmasssendingtask/statisticsDepart?type=1`).then(res => { + getDepart() { + var startTime = this.timeList[0] || '' , endTime = this.timeList[1] || '' + this.instance.post(`/app/appmasssendingtask/statisticsDepart?type=${this.departType}&startTime=${startTime}&endTime=${endTime}`).then(res => { if (res.code == 0) { // this.dateList = res.data // this.getTaskList(this.chooseDay) @@ -291,16 +327,16 @@ bottom: 90, containLabel: true }, - toolbox: { - feature: { - dataZoom: { - yAxisIndex: false - }, - saveAsImage: { - pixelRatio: 2 - } - } - }, + // toolbox: { + // feature: { + // dataZoom: { + // yAxisIndex: false + // }, + // saveAsImage: { + // pixelRatio: 2 + // } + // } + // }, tooltip: { trigger: 'axis', axisPointer: { @@ -501,6 +537,7 @@ border: 1px solid #D0D4DC; margin-right: 8px; box-sizing: border-box; + cursor: pointer; } .active{ border: 1px solid #26f;