diff --git a/project/sass/apps/Announce/AppAnnounce/components/Add.vue b/project/sass/apps/Announce/AppAnnounce/components/Add.vue
index e5b13b0f..5a5d0a9f 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 +154,20 @@
     },
 
     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: [],
         form: {
-          position: '',
+          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 +206,64 @@
         })
       },
 
+      removeFile (index) {
+        this.fileList.splice(index, 1)
+      },
+
+      mapIcon (type) {
+        return {
+          image: 'https://cdn.cunwuyun.cn/dvcp/announce/img.png',
+          video: 'https://cdn.cunwuyun.cn/dvcp/announce/video.png',
+          folder: 'https://cdn.cunwuyun.cn/dvcp/announce/folder.png',
+          site: 'https://cdn.cunwuyun.cn/dvcp/announce/site.png',
+          miniapp: '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) {
+        let formData = new FormData()
+        formData.append('file', file.file)
+        formData.append('type', type)
+        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
+            })
+
+            this.$message.success('上传成功')
+          }
+        })
+      },
+
       onChange (e) {
         if (e.length) {
           this.form.departmentIds = e.map(v => v.id)
@@ -304,6 +395,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 +441,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 +476,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 962bec08..038f1507 100644
--- a/project/sass/apps/Announce/AppAnnounce/components/List.vue
+++ b/project/sass/apps/Announce/AppAnnounce/components/List.vue
@@ -12,32 +12,34 @@
         
           创建宣发
           
+            :selectList="dict.getDict('mstStatus')">
           
           
           
           
           
         
         
           
           
         
@@ -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()