协同宣发
This commit is contained in:
		| @@ -20,7 +20,7 @@ | |||||||
|                     <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 | ||||||
| @@ -47,15 +47,50 @@ | |||||||
|                     </div> |                     </div> | ||||||
|                   </ai-picker> |                   </ai-picker> | ||||||
|                   <div class="tips"> |                   <div class="tips"> | ||||||
|                     <p>消息预计送达居民群数:</p> |                     <p>消息预计送达居民数:</p> | ||||||
|                     <span>{{ groupLen }}</span> |                     <span>{{ groupLen }}</span> | ||||||
|                     <el-tooltip |                     <el-tooltip | ||||||
|                         placement="top" |                         placement="top" | ||||||
|                         content="将由指定群主发送给TA作为群主的所有的群,由于企业微信限制,当超过1000个时将只发送到最近活跃的1000个群"> |                         content="同一个居民若有多个添加人,则会由最后跟客户进行聊天互动的人员进行群发"> | ||||||
|                       <i class="iconfont iconModal_Warning"></i> |                       <i class="iconfont iconModal_Warning"></i> | ||||||
|                     </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 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"> | ||||||
| @@ -111,16 +146,16 @@ | |||||||
|                           </div> |                           </div> | ||||||
|                         </el-upload> |                         </el-upload> | ||||||
|                         <el-upload |                         <el-upload | ||||||
|                             ref="upload" |                           ref="upload" | ||||||
|                             multiple |                           multiple | ||||||
|                             :file-list="fileList" |                           :file-list="fileList" | ||||||
|                             :show-file-list="false" |                           :show-file-list="false" | ||||||
|                             :before-upload="v => handleChange(v, 20, '.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" | ||||||
|                             :on-exceed="onExceed" |                           :on-exceed="onExceed" | ||||||
|                             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" | ||||||
|                             :http-request="v => submitUpload(v, '3')"> |                           :http-request="v => submitUpload(v, '3')"> | ||||||
|                           <div class="content-item" trigger> |                           <div class="content-item" trigger> | ||||||
|                             <img src="https://cdn.cunwuyun.cn/dvcp/announce/folder.png"/> |                             <img src="https://cdn.cunwuyun.cn/dvcp/announce/folder.png"/> | ||||||
|                             <p>文件</p> |                             <p>文件</p> | ||||||
| @@ -143,10 +178,10 @@ | |||||||
|                 </el-form-item> |                 </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" | ||||||
|                       active-value="1" |                     active-value="1" | ||||||
|                       inactive-value="0" |                     inactive-value="0" | ||||||
|                       active-text="开启后,创建的群发任务需要审批人进行审批"> |                     active-text="开启后,创建的群发任务需要审批人进行审批"> | ||||||
|                   </el-switch> |                   </el-switch> | ||||||
|                 </el-form-item> |                 </el-form-item> | ||||||
|                 <el-form-item v-if="form.enableExamine === '1'" label="审批人员" prop="examines" style="width: 100%;" :rules="[{ required: true, message: '请选择审批人员', trigger: 'change' }]"> |                 <el-form-item v-if="form.enableExamine === '1'" label="审批人员" prop="examines" style="width: 100%;" :rules="[{ required: true, message: '请选择审批人员', trigger: 'change' }]"> | ||||||
| @@ -180,29 +215,29 @@ | |||||||
|             <div class="ai-form"> |             <div class="ai-form"> | ||||||
|               <el-form-item label="标题" style="width: 100%;" prop="linkTitle" :rules="[{ required: true, message: '请输入标题', trigger: 'blur' }]"> |               <el-form-item label="标题" style="width: 100%;" prop="linkTitle" :rules="[{ required: true, message: '请输入标题', trigger: 'blur' }]"> | ||||||
|                 <el-input |                 <el-input | ||||||
|                     size="small" |                   size="small" | ||||||
|                     placeholder="请输入标题" |                   placeholder="请输入标题" | ||||||
|                     maxlength="42" |                   maxlength="42" | ||||||
|                     show-word-limit |                   show-word-limit | ||||||
|                     v-model="linkForm.linkTitle"> |                   v-model="linkForm.linkTitle"> | ||||||
|                 </el-input> |                 </el-input> | ||||||
|               </el-form-item> |               </el-form-item> | ||||||
|               <el-form-item label="链接" style="width: 100%;" prop="linkUrl" :rules="[{ required: true, message: '请输入链接', trigger: 'blur' }]"> |               <el-form-item label="链接" style="width: 100%;" prop="linkUrl" :rules="[{ required: true, message: '请输入链接', trigger: 'blur' }]"> | ||||||
|                 <el-input |                 <el-input | ||||||
|                     size="small" |                   size="small" | ||||||
|                     placeholder="请输入链接" |                   placeholder="请输入链接" | ||||||
|                     maxlength="682" |                   maxlength="682" | ||||||
|                     show-word-limit |                   show-word-limit | ||||||
|                     v-model="linkForm.linkUrl"> |                   v-model="linkForm.linkUrl"> | ||||||
|                 </el-input> |                 </el-input> | ||||||
|               </el-form-item> |               </el-form-item> | ||||||
|               <el-form-item label="描述" style="width: 100%;" prop="linkDesc"> |               <el-form-item label="描述" style="width: 100%;" prop="linkDesc"> | ||||||
|                 <el-input |                 <el-input | ||||||
|                     size="small" |                   size="small" | ||||||
|                     placeholder="请输入描述" |                   placeholder="请输入描述" | ||||||
|                     maxlength="170" |                   maxlength="170" | ||||||
|                     show-word-limit |                   show-word-limit | ||||||
|                     v-model="linkForm.linkDesc"> |                   v-model="linkForm.linkDesc"> | ||||||
|                 </el-input> |                 </el-input> | ||||||
|               </el-form-item> |               </el-form-item> | ||||||
|               <el-form-item label="封面图" prop="linkPicUrl" style="width: 100%;"> |               <el-form-item label="封面图" prop="linkPicUrl" style="width: 100%;"> | ||||||
| @@ -212,34 +247,34 @@ | |||||||
|           </el-form> |           </el-form> | ||||||
|         </ai-dialog> |         </ai-dialog> | ||||||
|         <ai-dialog |         <ai-dialog | ||||||
|             :visible.sync="isShowAddMiniapp" |           :visible.sync="isShowAddMiniapp" | ||||||
|             width="920px" |           width="920px" | ||||||
|             title="小程序消息" |           title="小程序消息" | ||||||
|             @close="onClose" |           @close="onClose" | ||||||
|             @onConfirm="onMiniAppForm"> |           @onConfirm="onMiniAppForm"> | ||||||
|           <el-form ref="miniAppForm" :model="miniAppForm" label-width="130px" label-position="right"> |           <el-form ref="miniAppForm" :model="miniAppForm" label-width="130px" label-position="right"> | ||||||
|             <div class="ai-form"> |             <div class="ai-form"> | ||||||
|               <el-form-item label="小程序appid" style="width: 100%;" prop="mpAppid" :rules="[{ required: true, message: '小程序appid', trigger: 'blur' }]"> |               <el-form-item label="小程序appid" style="width: 100%;" prop="mpAppid" :rules="[{ required: true, message: '小程序appid', trigger: 'blur' }]"> | ||||||
|                 <el-input |                 <el-input | ||||||
|                     size="small" |                   size="small" | ||||||
|                     placeholder="小程序appid" |                   placeholder="小程序appid" | ||||||
|                     v-model="miniAppForm.mpAppid"> |                   v-model="miniAppForm.mpAppid"> | ||||||
|                 </el-input> |                 </el-input> | ||||||
|               </el-form-item> |               </el-form-item> | ||||||
|               <el-form-item label="小程序page路径" style="width: 100%;" prop="mpPage" :rules="[{ required: true, message: '请输入小程序page路径', trigger: 'blur' }]"> |               <el-form-item label="小程序page路径" style="width: 100%;" prop="mpPage" :rules="[{ required: true, message: '请输入小程序page路径', trigger: 'blur' }]"> | ||||||
|                 <el-input |                 <el-input | ||||||
|                     size="small" |                   size="small" | ||||||
|                     placeholder="请输入小程序page路径" |                   placeholder="请输入小程序page路径" | ||||||
|                     v-model="miniAppForm.mpPage"> |                   v-model="miniAppForm.mpPage"> | ||||||
|                 </el-input> |                 </el-input> | ||||||
|               </el-form-item> |               </el-form-item> | ||||||
|               <el-form-item label="标题" style="width: 100%;" prop="mpTitle" :rules="[{ required: true, message: '请输入标题', trigger: 'blur' }]"> |               <el-form-item label="标题" style="width: 100%;" prop="mpTitle" :rules="[{ required: true, message: '请输入标题', trigger: 'blur' }]"> | ||||||
|                 <el-input |                 <el-input | ||||||
|                     size="small" |                   size="small" | ||||||
|                     placeholder="请输入标题" |                   placeholder="请输入标题" | ||||||
|                     maxlength="20" |                   maxlength="20" | ||||||
|                     show-word-limit |                   show-word-limit | ||||||
|                     v-model="miniAppForm.mpTitle"> |                   v-model="miniAppForm.mpTitle"> | ||||||
|                 </el-input> |                 </el-input> | ||||||
|               </el-form-item> |               </el-form-item> | ||||||
|               <el-form-item label="封面图" prop="media" style="width: 100%;" :rules="[{ required: true, message: '请上传封面图', trigger: 'change' }]"> |               <el-form-item label="封面图" prop="media" style="width: 100%;" :rules="[{ required: true, message: '请上传封面图', trigger: 'change' }]"> | ||||||
| @@ -249,21 +284,21 @@ | |||||||
|           </el-form> |           </el-form> | ||||||
|         </ai-dialog> |         </ai-dialog> | ||||||
|         <ai-dialog |         <ai-dialog | ||||||
|             :visible.sync="isShowDate" |           :visible.sync="isShowDate" | ||||||
|             width="590px" |           width="590px" | ||||||
|             title="定时发送" |           title="定时发送" | ||||||
|             customFooter> |           customFooter> | ||||||
|           <el-form ref="dateForm" :model="dateForm" label-width="130px" label-position="right"> |           <el-form ref="dateForm" :model="dateForm" label-width="130px" label-position="right"> | ||||||
|             <div class="ai-form"> |             <div class="ai-form"> | ||||||
|               <el-form-item label="定时发送时间" style="width: 100%;" prop="choiceTime" :rules="[{ required: true, message: '请选择定时发送时间', trigger: 'change' }]"> |               <el-form-item label="定时发送时间" style="width: 100%;" prop="choiceTime" :rules="[{ required: true, message: '请选择定时发送时间', trigger: 'change' }]"> | ||||||
|                 <el-date-picker |                 <el-date-picker | ||||||
|                     style="width: 100%;" |                   style="width: 100%;" | ||||||
|                     v-model="dateForm.choiceTime" |                   v-model="dateForm.choiceTime" | ||||||
|                     type="datetime" |                   type="datetime" | ||||||
|                     size="small" |                   size="small" | ||||||
|                     :picker-options="pickerOptions" |                   :picker-options="pickerOptions" | ||||||
|                     value-format="yyyy-MM-dd HH:mm:ss" |                   value-format="yyyy-MM-dd HH:mm:ss" | ||||||
|                     placeholder="请选择定时发送时间"> |                   placeholder="请选择定时发送时间"> | ||||||
|                 </el-date-picker> |                 </el-date-picker> | ||||||
|               </el-form-item> |               </el-form-item> | ||||||
|             </div> |             </div> | ||||||
| @@ -273,6 +308,27 @@ | |||||||
|             <el-button @click="onDateForm" type="primary" :loading="isLoading2" style="width: 92px;">确认</el-button> |             <el-button @click="onDateForm" type="primary" :loading="isLoading2" style="width: 92px;">确认</el-button> | ||||||
|           </div> |           </div> | ||||||
|         </ai-dialog> |         </ai-dialog> | ||||||
|  |         <ai-dialog | ||||||
|  |           :visible.sync="isShowTags" | ||||||
|  |           width="800px" | ||||||
|  |           :title="isRemoveTag ? '批量移除标签' : '批量打标签'" | ||||||
|  |           @close="onClose" | ||||||
|  |           @onConfirm="onTagsConfirm"> | ||||||
|  |           <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="chooseTags.indexOf(item.id) === -1 ? '' : 'primary'" | ||||||
|  |                   v-for="(item, index) in item.tagList" | ||||||
|  |                   @click="choose(item.id)" | ||||||
|  |                   :key="index"> | ||||||
|  |                   {{ item.name }} | ||||||
|  |                 </el-button> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </ai-dialog> | ||||||
|       </div> |       </div> | ||||||
|     </template> |     </template> | ||||||
|     <template #footer> |     <template #footer> | ||||||
| @@ -305,7 +361,10 @@ export default { | |||||||
|       info: {}, |       info: {}, | ||||||
|       department: [], |       department: [], | ||||||
|       isLoading1: false, |       isLoading1: false, | ||||||
|  |       tags: [], | ||||||
|  |       isShowTags: false, | ||||||
|       isLoading2: false, |       isLoading2: false, | ||||||
|  |       isRemoveTag: false, | ||||||
|       fileList: [], |       fileList: [], | ||||||
|       isShowAddLink: false, |       isShowAddLink: false, | ||||||
|       isShowAddMiniapp: false, |       isShowAddMiniapp: false, | ||||||
| @@ -372,11 +431,27 @@ export default { | |||||||
|     } else { |     } else { | ||||||
|       this.getWxGroups() |       this.getWxGroups() | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     this.getTags() | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   methods: { |   methods: { | ||||||
|     ...mapActions(['initOpenData', 'transCanvas']), |     ...mapActions(['initOpenData', 'transCanvas']), | ||||||
|  |  | ||||||
|  |     getTags () { | ||||||
|  |       this.instance.post(`/app/wxcp/wxcorptag/listAll?size=100`).then(res => { | ||||||
|  |         if (res.code == 0) { | ||||||
|  |           this.tags = res.data.records | ||||||
|  |  | ||||||
|  |           console.log(res.data.records) | ||||||
|  |         } | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     onTagsConfirm () { | ||||||
|  |  | ||||||
|  |     }, | ||||||
|  |  | ||||||
|     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) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user