协同宣发
This commit is contained in:
		| @@ -15,12 +15,12 @@ | |||||||
|                 </el-form-item> |                 </el-form-item> | ||||||
|                 <el-form-item label="发送范围" style="width: 100%;" prop="sendScope" :rules="[{ required: true, message: '请选择发送范围', trigger: 'change' }]"> |                 <el-form-item label="发送范围" style="width: 100%;" prop="sendScope" :rules="[{ required: true, message: '请选择发送范围', trigger: 'change' }]"> | ||||||
|                   <el-radio-group v-model="form.sendScope" @change="onScopeChange"> |                   <el-radio-group v-model="form.sendScope" @change="onScopeChange"> | ||||||
|                     <el-radio label="0">全部居民群</el-radio> |                     <el-radio label="0">全部居民</el-radio> | ||||||
|                     <el-radio label="1">按部门选择</el-radio> |                     <el-radio label="1">按部门选择</el-radio> | ||||||
|                     <el-radio label="2">按网格选择</el-radio> |                     <el-radio label="2">按网格选择</el-radio> | ||||||
|                   </el-radio-group> |                   </el-radio-group> | ||||||
|                 </el-form-item> |                 </el-form-item> | ||||||
|                 <el-form-item label="添加人" v-if="form.sendScope !== '0'" prop="wxGroupsName" style="width: 100%;" :rules="[{ required: true, message: '请选择选择群主', trigger: 'change' }]"> |                 <el-form-item label="添加人" v-if="form.sendScope !== '0'" prop="wxGroupsName" style="width: 100%;" :rules="[{ required: true, message: '请选择添加人', trigger: 'change' }]"> | ||||||
|                   <ai-picker |                   <ai-picker | ||||||
|                     :instance="instance" |                     :instance="instance" | ||||||
|                     multiple |                     multiple | ||||||
| @@ -33,14 +33,59 @@ | |||||||
|                     @change="onSelcetChange"> |                     @change="onSelcetChange"> | ||||||
|                     <div class="AppAnnounceDetail-select"> |                     <div class="AppAnnounceDetail-select"> | ||||||
|                       <el-input size="small" class="AppAnnounceDetail-select__input" placeholder="请选择..." disabled v-model="form.wxGroupsName"></el-input> |                       <el-input size="small" class="AppAnnounceDetail-select__input" placeholder="请选择..." disabled v-model="form.wxGroupsName"></el-input> | ||||||
|                       <div class="select-left" v-if="form.wxGroups.length"> |                       <div class="select-left" v-if="form.groupList.length"> | ||||||
|                         <span v-for="(item, index) in form.wxGroups" :key="index" v-if="index < 9">{{ item.groupOwnerName }}</span> |                         <span v-for="(item, index) in form.groupList" :key="index" v-if="index < 9">{{ item.userName }}</span> | ||||||
|                         <em v-if="form.wxGroups.length > 9">等{{ form.wxGroups.length }}个</em> |                         <em v-if="form.groupList.length > 9">等{{ form.groupList.length }}个</em> | ||||||
|                       </div> |                       </div> | ||||||
|                       <i v-if="!form.wxGroups.length">请选择</i> |                       <i v-if="!form.groupList.length">请选择</i> | ||||||
|                       <div class="select-right">{{ form.filterCriteria.length ? '重新选择' : '选择' }}</div> |                       <div class="select-right">{{ form.groupList.length ? '重新选择' : '选择' }}</div> | ||||||
|                     </div> |                     </div> | ||||||
|                   </ai-picker> |                   </ai-picker> | ||||||
|  |                   <div class="filter-item"> | ||||||
|  |                     <label>添加时间</label> | ||||||
|  |                     <el-date-picker | ||||||
|  |                       type="daterange" | ||||||
|  |                       align="right" | ||||||
|  |                       unlink-panels | ||||||
|  |                       size="small" | ||||||
|  |                       v-model="form.addTime" | ||||||
|  |                       value-format="yyyy-MM-dd" | ||||||
|  |                       range-separator="至" | ||||||
|  |                       start-placeholder="开始日期" | ||||||
|  |                       end-placeholder="结束日期" | ||||||
|  |                       @change="getWxGroups"> | ||||||
|  |                     </el-date-picker> | ||||||
|  |                   </div> | ||||||
|  |                   <div class="filter-item"> | ||||||
|  |                     <label>标签</label> | ||||||
|  |                     <div class="AppAnnounceDetail-select" @click="isShowTags = true"> | ||||||
|  |                       <el-input class="AppAnnounceDetail-select__input" size="small" placeholder="请选择..." v-model="form.filterTagsName"></el-input> | ||||||
|  |                       <div class="select-left" v-if="form.filterTags.length"> | ||||||
|  |                         <span v-for="(item, index) in form.filterTags" :key="index">{{ item.name }}</span> | ||||||
|  |                       </div> | ||||||
|  |                       <i v-if="!form.filterTags.length">请选择</i> | ||||||
|  |                       <div class="select-right">{{ form.filterTags.length ? '重新选择' : '选择' }}</div> | ||||||
|  |                     </div> | ||||||
|  |                   </div> | ||||||
|  |                   <div class="filter-item"> | ||||||
|  |                     <label>剔除标签</label> | ||||||
|  |                     <div class="AppAnnounceDetail-select" @click="isShowRemoveTags = true"> | ||||||
|  |                       <el-input class="AppAnnounceDetail-select__input" size="small" placeholder="请选择..." v-model="form.excludeFilterTagsName"></el-input> | ||||||
|  |                       <div class="select-left" v-if="form.excludeFilterTags.length"> | ||||||
|  |                         <span v-for="(item, index) in form.excludeFilterTags" :key="index">{{ item.name }}</span> | ||||||
|  |                       </div> | ||||||
|  |                       <i v-if="!form.excludeFilterTags.length">请选择</i> | ||||||
|  |                         <div class="select-right">{{ form.excludeFilterTags.length ? '重新选择' : '选择' }}</div> | ||||||
|  |                     </div> | ||||||
|  |                   </div> | ||||||
|  |                   <div class="filter-item"> | ||||||
|  |                     <label>性别</label> | ||||||
|  |                     <el-radio-group v-model="form.gender" @change="getWxGroups"> | ||||||
|  |                       <el-radio label="2">全部</el-radio> | ||||||
|  |                       <el-radio label="1">男</el-radio> | ||||||
|  |                       <el-radio label="0">女</el-radio> | ||||||
|  |                     </el-radio-group> | ||||||
|  |                   </div> | ||||||
|                   <div class="tips"> |                   <div class="tips"> | ||||||
|                     <p>消息预计送达居民数:</p> |                     <p>消息预计送达居民数:</p> | ||||||
|                     <span>{{ groupLen }}</span> |                     <span>{{ groupLen }}</span> | ||||||
| @@ -51,47 +96,6 @@ | |||||||
|                     </el-tooltip> |                     </el-tooltip> | ||||||
|                   </div> |                   </div> | ||||||
|                 </el-form-item> |                 </el-form-item> | ||||||
|                 <el-form-item label="添加时间" v-if="form.sendScope !== '0'" prop="wxGroupsName"> |  | ||||||
|                   <el-date-picker |  | ||||||
|                     type="daterange" |  | ||||||
|                     align="right" |  | ||||||
|                     unlink-panels |  | ||||||
|                     size="small" |  | ||||||
|                     range-separator="至" |  | ||||||
|                     start-placeholder="开始日期" |  | ||||||
|                     end-placeholder="结束日期"> |  | ||||||
|                   </el-date-picker> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="标签" style="width: 100%" v-if="form.sendScope !== '0'" prop="wxGroupsName"> |  | ||||||
|                   <div class="AppAnnounceDetail-select" @click="isShowTags = true"> |  | ||||||
|                     <el-input class="AppAnnounceDetail-select__input" size="small" placeholder="请选择..." v-model="form.examinesName"></el-input> |  | ||||||
|                     <div class="select-left" v-if="form.examines.length"> |  | ||||||
|                       <span v-for="(item, index) in form.examines" :key="index"> |  | ||||||
|                         <ai-open-data type="userName" :openid="item.wxOpenUserId"></ai-open-data> |  | ||||||
|                       </span> |  | ||||||
|                     </div> |  | ||||||
|                     <i v-if="!form.examines.length">请选择</i> |  | ||||||
|                       <div class="select-right">{{ form.examines.length ? '重新选择' : '选择' }}</div> |  | ||||||
|                   </div> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="剔除标签" style="width: 100%" v-if="form.sendScope !== '0'" prop="wxGroupsName"> |  | ||||||
|                   <div class="AppAnnounceDetail-select" @click="isShowTags = true"> |  | ||||||
|                     <el-input class="AppAnnounceDetail-select__input" size="small" placeholder="请选择..." v-model="form.examinesName"></el-input> |  | ||||||
|                     <div class="select-left" v-if="form.examines.length"> |  | ||||||
|                       <span v-for="(item, index) in form.examines" :key="index"> |  | ||||||
|                         <ai-open-data type="userName" :openid="item.wxOpenUserId"></ai-open-data> |  | ||||||
|                       </span> |  | ||||||
|                     </div> |  | ||||||
|                     <i v-if="!form.examines.length">请选择</i> |  | ||||||
|                       <div class="select-right">{{ form.examines.length ? '重新选择' : '选择' }}</div> |  | ||||||
|                   </div> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item v-if="form.sendScope !== '0'" label="性别" style="width: 100%;" prop="sendScope" :rules="[{ required: true, message: '请选择性别', trigger: 'change' }]"> |  | ||||||
|                   <el-radio-group v-model="form.sendScope" @change="onScopeChange"> |  | ||||||
|                     <el-radio label="0">男</el-radio> |  | ||||||
|                     <el-radio label="1">女</el-radio> |  | ||||||
|                   </el-radio-group> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="发送内容" prop="content" style="width: 100%;" :rules="[{ required: true, message: '请输入发送内容', trigger: 'blur' }]"> |                 <el-form-item label="发送内容" prop="content" style="width: 100%;" :rules="[{ required: true, message: '请输入发送内容', trigger: 'blur' }]"> | ||||||
|                   <el-input size="small" type="textarea" :rows="6" maxlength="1300" show-word-limit placeholder="请输入文本内容..." v-model="form.content"></el-input> |                   <el-input size="small" type="textarea" :rows="6" maxlength="1300" show-word-limit placeholder="请输入文本内容..." v-model="form.content"></el-input> | ||||||
|                   <div class="add"> |                   <div class="add"> | ||||||
| @@ -177,6 +181,17 @@ | |||||||
|                     <em>从本地上传,图片最大支持10MB,支持JPG,PNG格式;视频最大支持10MB,支持MP4格式;文件最大支持20MB</em> |                     <em>从本地上传,图片最大支持10MB,支持JPG,PNG格式;视频最大支持10MB,支持MP4格式;文件最大支持20MB</em> | ||||||
|                   </div> |                   </div> | ||||||
|                 </el-form-item> |                 </el-form-item> | ||||||
|  |                 <el-form-item label="任务结束时间" style="width: 100%;" prop="taskEndTime" :rules="[{ required: true, message: '请选择任务结束时间', trigger: 'change' }]"> | ||||||
|  |                   <el-date-picker | ||||||
|  |                     style="width: 100%;" | ||||||
|  |                     v-model="form.taskEndTime" | ||||||
|  |                     type="datetime" | ||||||
|  |                     size="small" | ||||||
|  |                     :picker-options="pickerOptions" | ||||||
|  |                     value-format="yyyy-MM-dd HH:mm:ss" | ||||||
|  |                     placeholder="请选择任务结束时间"> | ||||||
|  |                   </el-date-picker> | ||||||
|  |                 </el-form-item> | ||||||
|                 <el-form-item label="宣发审批" prop="enableExamine" style="width: 100%;" :rules="[{ required: true, message: '请输入任务名称', trigger: 'blur' }]"> |                 <el-form-item label="宣发审批" prop="enableExamine" style="width: 100%;" :rules="[{ required: true, message: '请输入任务名称', trigger: 'blur' }]"> | ||||||
|                   <el-switch |                   <el-switch | ||||||
|                       v-model="form.enableExamine" |                       v-model="form.enableExamine" | ||||||
| @@ -310,7 +325,7 @@ | |||||||
|         <ai-dialog |         <ai-dialog | ||||||
|           :visible.sync="isShowTags" |           :visible.sync="isShowTags" | ||||||
|           width="800px" |           width="800px" | ||||||
|           :title="isRemoveTag ? '批量移除标签' : '批量打标签'" |           title="批量打标签" | ||||||
|           @close="onClose" |           @close="onClose" | ||||||
|           @onConfirm="onTagsConfirm"> |           @onConfirm="onTagsConfirm"> | ||||||
|           <div class="tags"> |           <div class="tags"> | ||||||
| @@ -318,9 +333,30 @@ | |||||||
|               <h2>{{ item.name }}</h2> |               <h2>{{ item.name }}</h2> | ||||||
|               <div class="tag-item__right"> |               <div class="tag-item__right"> | ||||||
|                 <el-button |                 <el-button | ||||||
|                   :type="chooseTags.indexOf(item.id) === -1 ? '' : 'primary'" |                   :type="chooseTags.map(v => v.id).indexOf(item.id) === -1 ? '' : 'primary'" | ||||||
|                   v-for="(item, index) in item.tagList" |                   v-for="(item, index) in item.tagList" | ||||||
|                   @click="choose(item.id)" |                   @click="choose(item)" | ||||||
|  |                   :key="index"> | ||||||
|  |                   {{ item.name }} | ||||||
|  |                 </el-button> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </ai-dialog> | ||||||
|  |         <ai-dialog | ||||||
|  |           :visible.sync="isShowRemoveTags" | ||||||
|  |           width="800px" | ||||||
|  |           title="批量移除标签" | ||||||
|  |           @close="onClose" | ||||||
|  |           @onConfirm="onRemoveTagsConfirm"> | ||||||
|  |           <div class="tags"> | ||||||
|  |             <div class="tag-item" v-for="(item, index) in tags" :key="index"> | ||||||
|  |               <h2>{{ item.name }}</h2> | ||||||
|  |               <div class="tag-item__right"> | ||||||
|  |                 <el-button | ||||||
|  |                   :type="removeTags.map(v => v.id).indexOf(item.id) === -1 ? '' : 'primary'" | ||||||
|  |                   v-for="(item, index) in item.tagList" | ||||||
|  |                   @click="removeChoose(item)" | ||||||
|                   :key="index"> |                   :key="index"> | ||||||
|                   {{ item.name }} |                   {{ item.name }} | ||||||
|                 </el-button> |                 </el-button> | ||||||
| @@ -364,11 +400,13 @@ export default { | |||||||
|       isRemoveTag: false, |       isRemoveTag: false, | ||||||
|       fileList: [], |       fileList: [], | ||||||
|       tags: [], |       tags: [], | ||||||
|  |       isShowRemoveTags: false, | ||||||
|       isShowAddLink: false, |       isShowAddLink: false, | ||||||
|       isShowAddMiniapp: false, |       isShowAddMiniapp: false, | ||||||
|       isShowDate: false, |       isShowDate: false, | ||||||
|       isShowTags: false, |       isShowTags: false, | ||||||
|       chooseTags: [], |       chooseTags: [], | ||||||
|  |       removeTags: [], | ||||||
|       isLoading: false, |       isLoading: false, | ||||||
|       linkForm: { |       linkForm: { | ||||||
|         linkPicUrl: [], |         linkPicUrl: [], | ||||||
| @@ -391,14 +429,23 @@ export default { | |||||||
|         contents: [], |         contents: [], | ||||||
|         enableExamine: '0', |         enableExamine: '0', | ||||||
|         examines: [], |         examines: [], | ||||||
|         wxGroups: [], |  | ||||||
|         wxGroupsName: '', |         wxGroupsName: '', | ||||||
|         sendScope: '0', |         sendScope: '0', | ||||||
|         sendType: 0, |         sendType: 0, | ||||||
|         name: '', |         name: '', | ||||||
|  |         taskEndTime: '', | ||||||
|  |         groupList: [], | ||||||
|  |         addTime: '', | ||||||
|  |         gender: '2', | ||||||
|  |         addEndTime: '', | ||||||
|  |         addFromTime: '', | ||||||
|         filterCriteria: [], |         filterCriteria: [], | ||||||
|         taskTitle: '', |         taskTitle: '', | ||||||
|         examinesName: '' |         examinesName: '', | ||||||
|  |         filterTags: [], | ||||||
|  |         filterTagsName: '', | ||||||
|  |         excludeFilterTagsName: '', | ||||||
|  |         excludeFilterTags: [] | ||||||
|       }, |       }, | ||||||
|       girdNames: '', |       girdNames: '', | ||||||
|       id: '', |       id: '', | ||||||
| @@ -415,12 +462,7 @@ export default { | |||||||
|     ...mapState(['user']), |     ...mapState(['user']), | ||||||
|  |  | ||||||
|     groupLen() { |     groupLen() { | ||||||
|       let i = 0 |       return this.form.groupList.length | ||||||
|       this.form.wxGroups.forEach(v => { |  | ||||||
|         i = i + v.groupIds.split(',').length |  | ||||||
|       }) |  | ||||||
|  |  | ||||||
|       return i |  | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
| @@ -447,6 +489,15 @@ export default { | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|  |     removeChoose (id) { | ||||||
|  |       const index = this.removeTags.indexOf(id) | ||||||
|  |       if (index === -1) { | ||||||
|  |         this.removeTags.push(id) | ||||||
|  |       } else { | ||||||
|  |         this.removeTags.splice(index, 1) | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |  | ||||||
|     getTags () { |     getTags () { | ||||||
|       this.instance.post(`/app/wxcp/wxcorptag/listAll?size=100`).then(res => { |       this.instance.post(`/app/wxcp/wxcorptag/listAll?size=100`).then(res => { | ||||||
|         if (res.code == 0) { |         if (res.code == 0) { | ||||||
| @@ -455,18 +506,34 @@ export default { | |||||||
|       }) |       }) | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     onTagsConfirm () { |     onRemoveTagsConfirm () { | ||||||
|  |       this.form.excludeFilterTagsName = this.removeTags.map(v => v.name).join(',') | ||||||
|  |       this.form.excludeFilterTags = [...this.removeTags] | ||||||
|  |  | ||||||
|  |       this.isShowRemoveTags = false | ||||||
|  |  | ||||||
|  |       this.getWxGroups() | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     onTagsConfirm () { | ||||||
|  |       this.form.filterTagsName = this.chooseTags.map(v => v.name).join(',') | ||||||
|  |       this.form.filterTags = [...this.chooseTags] | ||||||
|  |  | ||||||
|  |       this.isShowTags = false | ||||||
|  |       this.getWxGroups() | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     getInfo(id) { |     getInfo(id) { | ||||||
|       this.instance.post(`/app/appmasssendingtask/queryDetailById?id=${id}`).then(res => { |       this.instance.post(`/app/whchatmomentstask/queryDetailById?id=${id}`).then(res => { | ||||||
|         if (res.code === 0) { |         if (res.code === 0) { | ||||||
|           this.form = { |           this.form = { | ||||||
|             ...this.form, |             ...this.form, | ||||||
|             ...res.data, |             ...res.data, | ||||||
|             wxGroupsName: '1', |             wxGroupsName: '1', | ||||||
|             filterCriteria: res.data.filterCriteria.split(',') |             filterTags: res.data.filterTags ? res.data.filterTags.split(',') : [], | ||||||
|  |             excludeFilterTags: res.data.excludeFilterTags ? res.data.excludeFilterTags.split(',') : [], | ||||||
|  |             filterCriteria: res.data.filterCriteria.split(','), | ||||||
|  |             addTime: res.data.addEndTime ? [res.data.addFromTime, res.data.addEndTime] : '' | ||||||
|           } |           } | ||||||
|  |  | ||||||
|           if (res.data.girdNames) { |           if (res.data.girdNames) { | ||||||
| @@ -514,11 +581,14 @@ export default { | |||||||
|  |  | ||||||
|     onScopeChange(e) { |     onScopeChange(e) { | ||||||
|       this.form.filterCriteria = [] |       this.form.filterCriteria = [] | ||||||
|       this.form.wxGroups = [] |       this.form.groupList = [] | ||||||
|       this.girdNames = '' |       this.girdNames = '' | ||||||
|  |       this.form.wxGroupsName = '' | ||||||
|  |  | ||||||
|       if (e === '0') { |       if (e === '0') { | ||||||
|  |         this.$nextTick(() => { | ||||||
|           this.getWxGroups() |           this.getWxGroups() | ||||||
|  |         }) | ||||||
|       } else { |       } else { | ||||||
|         this.form.filterCriteria = [] |         this.form.filterCriteria = [] | ||||||
|       } |       } | ||||||
| @@ -539,22 +609,23 @@ export default { | |||||||
|         }) |         }) | ||||||
|       } else { |       } else { | ||||||
|         this.form.wxGroupsName = '' |         this.form.wxGroupsName = '' | ||||||
|         this.form.wxGroups = [] |         this.form.groupList = [] | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     getWxGroups() { |     getWxGroups() { | ||||||
|       this.instance.post(`/app/appmasssendingtask/queryWxGroups?sendScope=${this.form.sendScope}`, null, { |       this.instance.post(`/app/whchatmomentstask/getSendScope`, { | ||||||
|         data: { |         sendScope: this.form.sendScope, | ||||||
|           filterCriteria: this.form.filterCriteria.join(',') |         tags: this.form.filterTags.map(v => v.id).join(','), | ||||||
|         }, |         filterCriteria: this.form.filterCriteria.join(','), | ||||||
|         headers: {'Content-Type': 'application/json;charset=utf-8'}, |         taskType: 1, | ||||||
|         transformRequest: [function (data) { |         gender: this.form.gender, | ||||||
|           return data.filterCriteria |         excludeTags: this.form.excludeFilterTags.map(v => v.id).join(','), | ||||||
|         }] |         addEndTime: this.form.addTime ? this.form.addTime[0] : '', | ||||||
|  |         addFromTime: this.form.addTime ? this.form.addTime[1] : '' | ||||||
|       }).then(res => { |       }).then(res => { | ||||||
|         if (res.code === 0) { |         if (res.code === 0) { | ||||||
|           this.form.wxGroups = res.data |           this.form.groupList = res.data | ||||||
|         } |         } | ||||||
|       }) |       }) | ||||||
|     }, |     }, | ||||||
| @@ -689,8 +760,8 @@ export default { | |||||||
|     confirm(sendType) { |     confirm(sendType) { | ||||||
|       this.$refs.form.validate((valid) => { |       this.$refs.form.validate((valid) => { | ||||||
|         if (valid) { |         if (valid) { | ||||||
|           if (!this.form.wxGroups.length) { |           if (!this.form.groupList.length) { | ||||||
|             return this.$message.error('居民群数量不能为0') |             return this.$message.error('居民数量不能为0') | ||||||
|           } |           } | ||||||
|  |  | ||||||
|           if (sendType === 1 && !this.dateForm.choiceTime) { |           if (sendType === 1 && !this.dateForm.choiceTime) { | ||||||
| @@ -711,12 +782,17 @@ export default { | |||||||
|           } else { |           } else { | ||||||
|             this.isLoading2 = true |             this.isLoading2 = true | ||||||
|           } |           } | ||||||
|           this.instance.post(`/app/appmasssendingtask/addOrUpdate`, { |           this.instance.post(`/app/whchatmomentstask/addOrUpdate`, { | ||||||
|             ...this.form, |             ...this.form, | ||||||
|             id: this.params.id, |             id: this.params.id, | ||||||
|             wxGroups: this.form.wxGroups, |             groupList: this.form.groupList, | ||||||
|             contents, |             contents, | ||||||
|             sendType, |             sendType, | ||||||
|  |             taskType: 1, | ||||||
|  |             excludeFilterTags: this.form.excludeFilterTags.map(v => v.id).join(','), | ||||||
|  |             addEndTime: this.form.addTime ? this.form.addTime[0] : '', | ||||||
|  |             addFromTime: this.form.addTime ? this.form.addTime[1] : '', | ||||||
|  |             filterTags: this.form.filterTags.map(v => v.id).join(','), | ||||||
|             choiceTime: this.dateForm.choiceTime, |             choiceTime: this.dateForm.choiceTime, | ||||||
|             filterCriteria: this.form.filterCriteria.join(','), |             filterCriteria: this.form.filterCriteria.join(','), | ||||||
|             examines: this.form.examines.length ? this.form.examines.map(v => { |             examines: this.form.examines.length ? this.form.examines.map(v => { | ||||||
| @@ -836,6 +912,22 @@ export default { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   .filter-item { | ||||||
|  |     display: flex; | ||||||
|  |     align-items: center; | ||||||
|  |     margin-top: 20px; | ||||||
|  |  | ||||||
|  |     .AppAnnounceDetail-select { | ||||||
|  |       flex: 1; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     label { | ||||||
|  |       width: 60px; | ||||||
|  |       margin-right: 20px; | ||||||
|  |       color: #666; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|   .ai-form { |   .ai-form { | ||||||
|     textarea { |     textarea { | ||||||
|       border-radius: 4px 4px 0 0!important; |       border-radius: 4px 4px 0 0!important; | ||||||
|   | |||||||
| @@ -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>{{ info.createUserName }}</span> |                 <span>{{ info.createUserName }}</span> | ||||||
|                 (<span>{{ info.createUserDeptName }}</span>) |                 <span>({{ info.createUserDeptName }})</span> | ||||||
|               </div> |               </div> | ||||||
|             </ai-info-item> |             </ai-info-item> | ||||||
|             <ai-info-item label="审批人" isLine v-if="info.enableExamine === '1'"> |             <ai-info-item label="审批人" isLine v-if="info.enableExamine === '1'"> | ||||||
| @@ -42,8 +42,8 @@ | |||||||
|             <ai-info-item label="群发范围" isLine> |             <ai-info-item label="群发范围" isLine> | ||||||
|               <div class="text"> |               <div class="text"> | ||||||
|                 <span>{{ info.sendScope === '0' ? '全部' : '按条件筛选的' }}</span> |                 <span>{{ info.sendScope === '0' ? '全部' : '按条件筛选的' }}</span> | ||||||
|                 <i>{{ groups.length }}</i> |                 <i>{{ info.groupList.length }}</i> | ||||||
|                 <span>个居民群</span> |                 <span>个居民</span> | ||||||
|                 <em @click="isShowGroups = true">详情</em> |                 <em @click="isShowGroups = true">详情</em> | ||||||
|               </div> |               </div> | ||||||
|             </ai-info-item> |             </ai-info-item> | ||||||
| @@ -73,25 +73,25 @@ | |||||||
|             <div class="top"> |             <div class="top"> | ||||||
|               <div class="top-item"> |               <div class="top-item"> | ||||||
|                 <div class="top-item__title"> |                 <div class="top-item__title"> | ||||||
|                   <h3>计划执行成员</h3> |                   <h3>预计执行员工</h3> | ||||||
|                 </div> |                 </div> | ||||||
|                 <p>{{ memberInfo.planCount || 0 }}</p> |                 <p>{{ memberInfo.planCount || 0 }}</p> | ||||||
|               </div> |               </div> | ||||||
|               <div class="top-item"> |               <div class="top-item"> | ||||||
|                 <div class="top-item__title"> |                 <div class="top-item__title"> | ||||||
|                   <h3>未执行成员</h3> |                   <h3>未执行员工</h3> | ||||||
|                 </div> |                 </div> | ||||||
|                 <p>{{ memberInfo.unExecutedCount || 0 }}</p> |                 <p>{{ memberInfo.unExecutedCount || 0 }}</p> | ||||||
|               </div> |               </div> | ||||||
|               <div class="top-item"> |               <div class="top-item"> | ||||||
|                 <div class="top-item__title"> |                 <div class="top-item__title"> | ||||||
|                   <h3>已执行成员</h3> |                   <h3>已执行员工</h3> | ||||||
|                 </div> |                 </div> | ||||||
|                 <p>{{ memberInfo.executedCount || 0 }}</p> |                 <p>{{ memberInfo.executedCount || 0 }}</p> | ||||||
|               </div> |               </div> | ||||||
|               <div class="top-item"> |               <div class="top-item"> | ||||||
|                 <div class="top-item__title"> |                 <div class="top-item__title"> | ||||||
|                   <h3>无法执行成员</h3> |                   <h3>无法执行员工</h3> | ||||||
|                   <el-tooltip |                   <el-tooltip | ||||||
|                     placement="top" |                     placement="top" | ||||||
|                     content="由于员工不在可见范围、离职、客户群接收已达到上限等原因,无法执行群发任务的成员总数"> |                     content="由于员工不在可见范围、离职、客户群接收已达到上限等原因,无法执行群发任务的成员总数"> | ||||||
| @@ -115,7 +115,7 @@ | |||||||
|                     :instance="instance" |                     :instance="instance" | ||||||
|                     @pick="e => onUserChange(e, 'search1')" :multiple="false" v-model="user1"> |                     @pick="e => onUserChange(e, 'search1')" :multiple="false" v-model="user1"> | ||||||
|                     <div class="userSelcet"> |                     <div class="userSelcet"> | ||||||
|                       <span style="color: #606266;" v-if="search1.deptartId">{{ name1 }}</span> |                       <span style="color: #606266;" v-if="search1.deptartId"><ai-open-data type="departmentName" :openid="search1.deptartId"></ai-open-data></span> | ||||||
|                       <span v-else>部门</span> |                       <span v-else>部门</span> | ||||||
|                       <i class="el-icon-arrow-up"  v-if="!search1.deptartId"></i> |                       <i class="el-icon-arrow-up"  v-if="!search1.deptartId"></i> | ||||||
|                       <i class="el-icon-circle-close" v-if="search1.deptartId" @click.stop="user1 = [], search1.deptartId = '', search1.current = 1, getMemberInfo()"></i> |                       <i class="el-icon-circle-close" v-if="search1.deptartId" @click.stop="user1 = [], search1.deptartId = '', search1.current = 1, getMemberInfo()"></i> | ||||||
| @@ -151,14 +151,20 @@ | |||||||
|         width="890px" |         width="890px" | ||||||
|         title="群发范围" |         title="群发范围" | ||||||
|         @onConfirm="isShowGroups = false"> |         @onConfirm="isShowGroups = false"> | ||||||
|         <ai-table |           <ai-wrapper> | ||||||
|           :tableData="info.wxGroups" |             <ai-info-item label="消息发送" isLine :value="info.taskTitle"> | ||||||
|           :col-configs="colConfigs3" |               <div class="text"> | ||||||
|           border |                 <span>{{ info.sendScope === '0' ? '全部' : '按条件筛选的' }}</span> | ||||||
|           tableSize="small" |                 <i>{{ info.groupList.length }}</i> | ||||||
|           :isShowPagination="false" |                 <span>个居民</span> | ||||||
|           @getList="() => {}"> |               </div> | ||||||
|         </ai-table> |             </ai-info-item> | ||||||
|  |             <ai-info-item label="添加人" isLine :value="userNames"></ai-info-item> | ||||||
|  |             <ai-info-item label="标签" isLine>{{ info.filterTagsName || '-' }}</ai-info-item> | ||||||
|  |             <ai-info-item label="剔除标签" isLine>{{ info.excludeFilterTagsName || '-' }}</ai-info-item> | ||||||
|  |             <ai-info-item label="性别" isLine>{{ mapGender(info.gender) }}</ai-info-item> | ||||||
|  |             <ai-info-item label="添加时间" isLine>{{ info.addEndTime + '-' + info.addFromTime }}</ai-info-item> | ||||||
|  |           </ai-wrapper> | ||||||
|       </ai-dialog> |       </ai-dialog> | ||||||
|       <div class="detail-phone" v-if="isShowPhone"> |       <div class="detail-phone" v-if="isShowPhone"> | ||||||
|         <div class="mask"></div> |         <div class="mask"></div> | ||||||
| @@ -189,11 +195,8 @@ | |||||||
|         total1: 0, |         total1: 0, | ||||||
|         isShowGroups: false, |         isShowGroups: false, | ||||||
|         isShowPhone: false, |         isShowPhone: false, | ||||||
|         total2: 0, |  | ||||||
|         user1: [], |         user1: [], | ||||||
|         user2: [], |         user2: [], | ||||||
|         name1: '', |  | ||||||
|         name2: '', |  | ||||||
|         radio1: '未执行', |         radio1: '未执行', | ||||||
|         search1: { |         search1: { | ||||||
|           current: 1, |           current: 1, | ||||||
| @@ -202,13 +205,6 @@ | |||||||
|           type: 0, |           type: 0, | ||||||
|           sendStatus: '0' |           sendStatus: '0' | ||||||
|         }, |         }, | ||||||
|         search2: { |  | ||||||
|           current: 1, |  | ||||||
|           size: 10, |  | ||||||
|           deptartId: '', |  | ||||||
|           type: 1, |  | ||||||
|           sendStatus: '0' |  | ||||||
|         }, |  | ||||||
|         memberInfo: {}, |         memberInfo: {}, | ||||||
|         groupInfo: {}, |         groupInfo: {}, | ||||||
|         tableData1: [], |         tableData1: [], | ||||||
| @@ -229,7 +225,8 @@ | |||||||
|         timer: null, |         timer: null, | ||||||
|         min: 60, |         min: 60, | ||||||
|         isDisabled: false, |         isDisabled: false, | ||||||
|         rejecterId: '' |         rejecterId: '', | ||||||
|  |         userNames: '' | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
| @@ -240,7 +237,6 @@ | |||||||
|     created () { |     created () { | ||||||
|       this.getInfo(this.params.id) |       this.getInfo(this.params.id) | ||||||
|       this.getMemberInfo() |       this.getMemberInfo() | ||||||
|       this.getGroupInfo() |  | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     destroyed () { |     destroyed () { | ||||||
| @@ -249,39 +245,41 @@ | |||||||
|  |  | ||||||
|     methods: { |     methods: { | ||||||
|       getMemberInfo () { |       getMemberInfo () { | ||||||
|         this.instance.post(`/app/appmasssendingtask/detailStatistics`, null, { |         this.instance.post(`/app/whchatmomentstask/detailStatistics`, null, { | ||||||
|           params: { |           params: { | ||||||
|             ...this.search1, |             ...this.search1, | ||||||
|             taskId: this.params.id |             taskId: this.params.id | ||||||
|           } |           } | ||||||
|         }).then(res => { |         }).then(res => { | ||||||
|           if (res.code === 0) { |           if (res.code === 0) { | ||||||
|             this.tableData1 = res.data.executedList.records |             // this.tableData1 = res.data.executedList.records | ||||||
|             this.total1 = res.data.executedList.total |             // this.total1 = res.data.executedList.total | ||||||
|             this.memberInfo = res.data |             this.memberInfo = res.data | ||||||
|           } |           } | ||||||
|         }) |         }) | ||||||
|       }, |       }, | ||||||
|  |  | ||||||
|  |       mapGender (v) { | ||||||
|  |         return { | ||||||
|  |           '2': '全部', | ||||||
|  |           '1': '男', | ||||||
|  |           '0': '女' | ||||||
|  |         }[v] | ||||||
|  |       }, | ||||||
|  |  | ||||||
|       onUserChange (e, search) { |       onUserChange (e, search) { | ||||||
|         if (e.length) { |         if (e.length) { | ||||||
|           search === 'search1' ? this.name1 = e[0].name : this.name2 = e[0].name |  | ||||||
|           this[search].deptartId = e[0].id |           this[search].deptartId = e[0].id | ||||||
|         } else { |         } else { | ||||||
|           this[search].deptartId = '' |           this[search].deptartId = '' | ||||||
|           search === 'search1' ? this.name1 = '' : this.name2 = '' |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         this[search].current = 1 |         this[search].current = 1 | ||||||
|         if (search === 'search1') { |  | ||||||
|         this.getMemberInfo() |         this.getMemberInfo() | ||||||
|         } else { |  | ||||||
|           this.getGroupInfo() |  | ||||||
|         } |  | ||||||
|       }, |       }, | ||||||
|  |  | ||||||
|       sendMsg () { |       sendMsg () { | ||||||
|         this.instance.post(`/app/appmasssendingtask/remindSend?id=${this.params.id}`).then(res => { |         this.instance.post(`/app/whchatmomentstask/remindExamine?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) |             this.getInfo(this.params.id) | ||||||
| @@ -289,26 +287,6 @@ | |||||||
|         }) |         }) | ||||||
|       }, |       }, | ||||||
|  |  | ||||||
|       getGroupInfo () { |  | ||||||
|         this.instance.post(`/app/appmasssendingtask/detailStatistics`, null, { |  | ||||||
|           params: { |  | ||||||
|             ...this.search2, |  | ||||||
|             taskId: this.params.id |  | ||||||
|           } |  | ||||||
|         }).then(res => { |  | ||||||
|           if (res.code === 0) { |  | ||||||
|             this.tableData2 = res.data.executedList.records.map(v => { |  | ||||||
|               return { |  | ||||||
|                 ...v, |  | ||||||
|                 groupName: v.groupName || '未命名群聊' |  | ||||||
|               } |  | ||||||
|             }) |  | ||||||
|             this.total2 = res.data.executedList.total |  | ||||||
|             this.groupInfo = res.data |  | ||||||
|           } |  | ||||||
|         }) |  | ||||||
|       }, |  | ||||||
|  |  | ||||||
|       countdown () { |       countdown () { | ||||||
|         this.timer = setInterval(() => { |         this.timer = setInterval(() => { | ||||||
|           const nowTime = this.$moment(new Date()) |           const nowTime = this.$moment(new Date()) | ||||||
| @@ -325,7 +303,7 @@ | |||||||
|       }, |       }, | ||||||
|  |  | ||||||
|       getInfo (id) { |       getInfo (id) { | ||||||
|         this.instance.post(`/app/appmasssendingtask/queryDetailById?id=${id}`).then(res => { |         this.instance.post(`/app/whchatmomentstask/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) { |             if (res.data.status === '4' && res.data.remindTime) { | ||||||
| @@ -345,14 +323,8 @@ | |||||||
|               } |               } | ||||||
|             }) |             }) | ||||||
|  |  | ||||||
|             this.info.wxGroups = res.data.wxGroups.map(v => { |  | ||||||
|               this.groups.push(...v.groupIds.split(',')) |  | ||||||
|  |  | ||||||
|               return { |             this.userNames = res.data.groupList.map(e => e.userName).join(',') | ||||||
|                 ...v, |  | ||||||
|                 groupIds: v.groupIds.split(',') |  | ||||||
|               } |  | ||||||
|             }) |  | ||||||
|  |  | ||||||
|             if (res.data.examines && res.data.examines.length) { |             if (res.data.examines && res.data.examines.length) { | ||||||
|               const user = res.data.examines.filter(v => v.examineStatus === '2') |               const user = res.data.examines.filter(v => v.examineStatus === '2') | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
|     <template slot="title"> |     <template slot="title"> | ||||||
|       <ai-title title="群发居民" isShowBottomBorder> |       <ai-title title="群发居民" isShowBottomBorder> | ||||||
|         <template #sub> |         <template #sub> | ||||||
|           <span>管理员统一创建宣发任务,选择要发送的居民群后通知群主发送,群主确认后即可群发到居民群。群主向同一个居民群每天最多可群发10条消息。</span> |           <span>管理员统一创建任务内容,选择要发送的居民后通知成员发送,成员确认后即可群发给居民。居民每天最多能接收来自1名成员的10条群发消息</span> | ||||||
|         </template> |         </template> | ||||||
|       </ai-title> |       </ai-title> | ||||||
|     </template> |     </template> | ||||||
| @@ -106,7 +106,6 @@ | |||||||
|           startTime: '', |           startTime: '', | ||||||
|           endTime: '' |           endTime: '' | ||||||
|         }, |         }, | ||||||
|         name: '', |  | ||||||
|         user: [], |         user: [], | ||||||
|         tableData: [], |         tableData: [], | ||||||
|         loading: false, |         loading: false, | ||||||
| @@ -155,16 +154,17 @@ | |||||||
|  |  | ||||||
|       getList() { |       getList() { | ||||||
|         this.loading = true |         this.loading = true | ||||||
|         this.instance.post(`/app/appmasssendingtask/list`, null, { |         this.instance.post(`/app/whchatmomentstask/list`, null, { | ||||||
|           params: { |           params: { | ||||||
|             ...this.search, |             ...this.search, | ||||||
|  |             taskType: 1 | ||||||
|           } |           } | ||||||
|         }).then(res => { |         }).then(res => { | ||||||
|           if (res.code == 0) { |           if (res.code == 0) { | ||||||
|             this.tableData = res.data.records.map(v => { |             this.tableData = res.data.records.map(v => { | ||||||
|               return { |               return { | ||||||
|                 ...v, |                 ...v, | ||||||
|                 typeName: '群发居民群' |                 typeName: '群发居民' | ||||||
|               } |               } | ||||||
|             }) |             }) | ||||||
|             this.total = res.data.total |             this.total = res.data.total | ||||||
|   | |||||||
| @@ -41,6 +41,17 @@ | |||||||
|                       <div class="select-right">{{ form.filterCriteria.length ? '重新选择' : '选择' }}</div> |                       <div class="select-right">{{ form.filterCriteria.length ? '重新选择' : '选择' }}</div> | ||||||
|                     </div> |                     </div> | ||||||
|                   </ai-picker> |                   </ai-picker> | ||||||
|  |                   <div class="filter-item"> | ||||||
|  |                     <label>标签</label> | ||||||
|  |                     <div class="AppAnnounceDetail-select" @click="isShowTags = true"> | ||||||
|  |                       <el-input class="AppAnnounceDetail-select__input" size="small" placeholder="请选择..." v-model="form.filterTagsName"></el-input> | ||||||
|  |                       <div class="select-left" v-if="form.filterTags.length"> | ||||||
|  |                         <span v-for="(item, index) in form.filterTags" :key="index">{{ item.name }}</span> | ||||||
|  |                       </div> | ||||||
|  |                       <i v-if="!form.filterTags.length">请选择</i> | ||||||
|  |                       <div class="select-right">{{ form.filterTags.length ? '重新选择' : '选择' }}</div> | ||||||
|  |                     </div> | ||||||
|  |                   </div> | ||||||
|                   <div class="tips"> |                   <div class="tips"> | ||||||
|                     <p>消息预计送达居民群数:</p> |                     <p>消息预计送达居民群数:</p> | ||||||
|                     <span>{{ groupLen }}</span> |                     <span>{{ groupLen }}</span> | ||||||
| @@ -51,16 +62,6 @@ | |||||||
|                     </el-tooltip> |                     </el-tooltip> | ||||||
|                   </div> |                   </div> | ||||||
|                 </el-form-item> |                 </el-form-item> | ||||||
|                 <el-form-item label="居民标签" style="width: 100%" v-if="form.sendScope !== '0'" prop="wxGroupsName"> |  | ||||||
|                   <div class="AppAnnounceDetail-select" @click="isShowTags = true"> |  | ||||||
|                     <el-input class="AppAnnounceDetail-select__input" size="small" placeholder="请选择..." v-model="form.filterTagsName"></el-input> |  | ||||||
|                     <div class="select-left" v-if="form.filterTags.length"> |  | ||||||
|                       <span v-for="(item, index) in form.filterTags" :key="index">{{ item.name }}</span> |  | ||||||
|                     </div> |  | ||||||
|                     <i v-if="!form.filterTags.length">请选择</i> |  | ||||||
|                     <div class="select-right">{{ form.filterTags.length ? '重新选择' : '选择' }}</div> |  | ||||||
|                   </div> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="发送内容" prop="content" style="width: 100%;" :rules="[{ required: true, message: '请输入发送内容', trigger: 'blur' }]"> |                 <el-form-item label="发送内容" prop="content" style="width: 100%;" :rules="[{ required: true, message: '请输入发送内容', trigger: 'blur' }]"> | ||||||
|                   <el-input size="small" type="textarea" :rows="6" maxlength="1300" show-word-limit placeholder="请输入文本内容..." v-model="form.content"></el-input> |                   <el-input size="small" type="textarea" :rows="6" maxlength="1300" show-word-limit placeholder="请输入文本内容..." v-model="form.content"></el-input> | ||||||
|                   <div class="add"> |                   <div class="add"> | ||||||
| @@ -126,6 +127,17 @@ | |||||||
|                     <em>从本地上传,图片最大支持10MB,支持JPG,PNG格式;视频最大支持10MB,支持MP4格式;文件最大支持20MB</em> |                     <em>从本地上传,图片最大支持10MB,支持JPG,PNG格式;视频最大支持10MB,支持MP4格式;文件最大支持20MB</em> | ||||||
|                   </div> |                   </div> | ||||||
|                 </el-form-item> |                 </el-form-item> | ||||||
|  |                 <el-form-item label="任务结束时间" style="width: 100%;" prop="taskEndTime" :rules="[{ required: true, message: '请选择任务结束时间', trigger: 'change' }]"> | ||||||
|  |                   <el-date-picker | ||||||
|  |                     style="width: 100%;" | ||||||
|  |                     v-model="form.taskEndTime" | ||||||
|  |                     type="datetime" | ||||||
|  |                     size="small" | ||||||
|  |                     :picker-options="pickerOptions" | ||||||
|  |                     value-format="yyyy-MM-dd HH:mm:ss" | ||||||
|  |                     placeholder="请选择任务结束时间"> | ||||||
|  |                   </el-date-picker> | ||||||
|  |                 </el-form-item> | ||||||
|                 <el-form-item label="宣发审批" prop="enableExamine" style="width: 100%;" :rules="[{ required: true, message: '请输入任务名称', trigger: 'blur' }]"> |                 <el-form-item label="宣发审批" prop="enableExamine" style="width: 100%;" :rules="[{ required: true, message: '请输入任务名称', trigger: 'blur' }]"> | ||||||
|                   <el-switch |                   <el-switch | ||||||
|                     v-model="form.enableExamine" |                     v-model="form.enableExamine" | ||||||
| @@ -298,6 +310,7 @@ export default { | |||||||
|         wxGroupsName: '', |         wxGroupsName: '', | ||||||
|         sendScope: '0', |         sendScope: '0', | ||||||
|         sendType: 0, |         sendType: 0, | ||||||
|  |         taskEndTime: '', | ||||||
|         name: '', |         name: '', | ||||||
|         filterTags: [], |         filterTags: [], | ||||||
|         filterTagsName: '', |         filterTagsName: '', | ||||||
| @@ -360,17 +373,18 @@ export default { | |||||||
|     onTagsConfirm () { |     onTagsConfirm () { | ||||||
|       this.form.filterTagsName = this.chooseTags.map(v => v.name).join(',') |       this.form.filterTagsName = this.chooseTags.map(v => v.name).join(',') | ||||||
|       this.form.filterTags = [...this.chooseTags] |       this.form.filterTags = [...this.chooseTags] | ||||||
|  |       this.getWxGroups() | ||||||
|  |  | ||||||
|       this.isShowTags = false |       this.isShowTags = false | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     getInfo(id) { |     getInfo(id) { | ||||||
|       this.instance.post(`/app/whchatmomentstask/customerTasKDetail?id=${id}`).then(res => { |       this.instance.post(`/app/whchatmomentstask/queryDetailById?id=${id}`).then(res => { | ||||||
|         if (res.code === 0) { |         if (res.code === 0) { | ||||||
|           this.form = { |           this.form = { | ||||||
|             ...this.form, |             ...this.form, | ||||||
|             ...res.data, |             ...res.data, | ||||||
|             wxGroupsName: '1', |             filterTags: res.data.filterTags ? res.data.filterTags.split(',') : [], | ||||||
|             filterCriteria: res.data.filterCriteria.split(',') |             filterCriteria: res.data.filterCriteria.split(',') | ||||||
|           } |           } | ||||||
|  |  | ||||||
| @@ -451,7 +465,7 @@ export default { | |||||||
|     getWxGroups() { |     getWxGroups() { | ||||||
|       this.instance.post(`/app/whchatmomentstask/getSendScope`, { |       this.instance.post(`/app/whchatmomentstask/getSendScope`, { | ||||||
|         sendScope: this.form.sendScope, |         sendScope: this.form.sendScope, | ||||||
|         filterTags: this.form.filterTags.map(v => v.id).join(','), |         tags: this.form.filterTags.map(v => v.id).join(','), | ||||||
|         filterCriteria: this.form.filterCriteria.join(','), |         filterCriteria: this.form.filterCriteria.join(','), | ||||||
|         taskType: 0 |         taskType: 0 | ||||||
|       }).then(res => { |       }).then(res => { | ||||||
| @@ -589,7 +603,7 @@ export default { | |||||||
|       this.$refs.form.validate((valid) => { |       this.$refs.form.validate((valid) => { | ||||||
|         if (valid) { |         if (valid) { | ||||||
|           if (!this.form.executorList.length) { |           if (!this.form.executorList.length) { | ||||||
|             return this.$message.error('居民群数量不能为0') |             return this.$message.error('居民数量不能为0') | ||||||
|           } |           } | ||||||
|  |  | ||||||
|           if (sendType === 1 && !this.dateForm.choiceTime) { |           if (sendType === 1 && !this.dateForm.choiceTime) { | ||||||
| @@ -736,6 +750,21 @@ export default { | |||||||
|       overflow: hidden; |       overflow: hidden; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |   .filter-item { | ||||||
|  |     display: flex; | ||||||
|  |     align-items: center; | ||||||
|  |     margin-top: 20px; | ||||||
|  |  | ||||||
|  |     .AppAnnounceDetail-select { | ||||||
|  |       flex: 1; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     label { | ||||||
|  |       width: 60px; | ||||||
|  |       margin-right: 20px; | ||||||
|  |       color: #666; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|   .ai-form { |   .ai-form { | ||||||
|     textarea { |     textarea { | ||||||
|   | |||||||
| @@ -157,6 +157,7 @@ | |||||||
|         this.instance.post(`/app/whchatmomentstask/list`, null, { |         this.instance.post(`/app/whchatmomentstask/list`, null, { | ||||||
|           params: { |           params: { | ||||||
|             ...this.search, |             ...this.search, | ||||||
|  |             taskType: 0 | ||||||
|           } |           } | ||||||
|         }).then(res => { |         }).then(res => { | ||||||
|           if (res.code == 0) { |           if (res.code == 0) { | ||||||
|   | |||||||
| @@ -47,7 +47,8 @@ export default { | |||||||
|   }, |   }, | ||||||
|   methods: { |   methods: { | ||||||
|     onCancel() { |     onCancel() { | ||||||
|       this.dialog = false |       this.$emit('update:visible', false) | ||||||
|  |       this.$emit('onCancel') | ||||||
|       this.$emit('cancel') |       this.$emit('cancel') | ||||||
|     }, |     }, | ||||||
|     onConfirm() { |     onConfirm() { | ||||||
|   | |||||||
| @@ -57,7 +57,7 @@ module.exports = { | |||||||
|     proxy: { |     proxy: { | ||||||
|       //设置代理,可解决跨5 |       //设置代理,可解决跨5 | ||||||
|       '/lan': { |       '/lan': { | ||||||
|         target: 'http://192.168.1.87:9000', |         target: 'http://192.168.1.87:39000', | ||||||
|         changeOrigin: true, |         changeOrigin: true, | ||||||
|         pathRewrite: { |         pathRewrite: { | ||||||
|           //地址重写 |           //地址重写 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user