From 1ee4a5341215f94128b66cee4893c7c937df509a Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期一, 08 七月 2024 09:05:20 +0800 Subject: [PATCH] bug修改 --- src/views/Admin/massSend.vue | 307 +++++++++++++++++++++++++++++++------------------- 1 files changed, 188 insertions(+), 119 deletions(-) diff --git a/src/views/Admin/massSend.vue b/src/views/Admin/massSend.vue index fcab6df..606c305 100644 --- a/src/views/Admin/massSend.vue +++ b/src/views/Admin/massSend.vue @@ -69,14 +69,53 @@ <!-- </a-form-model-item>--> <!-- </a-col>--> <!-- </a-row>--> - <span><b>发布单位:</b>{{form.publishingUnit}}</span> - <br/><br/> - <!-- 子单位--> - <a-row :gutter="24"> +<!-- <span><b>发布单位:</b>{{form.publishingUnit}}</span>--> + + <a-row :gutter="24" v-if="unittype == 1"> <a-col :span="12"> + <a-radio-group v-model="isNewTxl" button-style="solid" style="margin-bottom: 20px" @change="changeTxl"> + <a-radio-button :value="1"> + 新通讯录 + </a-radio-button> + <a-radio-button :value="2"> + 原通讯录 + </a-radio-button> + </a-radio-group> + </a-col> + </a-row> + + <a-row :gutter="24"> + <a-col :span="12" v-if="isNewTxl == 1"> + <div style="display:flex;justify-content: space-between;align-items: center;"> + <b>新通讯录接收人:</b> + <a-checkbox :checked="checkTxlAll1" @change="checkTxlChange1"> + 全选 + </a-checkbox> + </div> + <a-form-model-item prop="txlUsers"> + <a-tree-select + show-search + tree-checkable + style="width: 100%" + v-model="form.txlUsers" + :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }" + placeholder="选择新通讯录接收人" + allow-clear + multiple + :maxTagCount="3" + @change="onTxlChanges1" + @search="onTxlSearch" + @select="onTxlSelect" + :tree-data="addressBook" + :replaceFields="replaceTxlFields" + > + </a-tree-select> + </a-form-model-item> + </a-col> + <a-col :span="12" v-else> <div style="display:flex;justify-content: space-between;align-items: center;"> <b>原通讯录接收人:</b> - <a-checkbox :checked="checkTxlAll" @change="checkTxlChange"> + <a-checkbox :checked="checkTxlAll2" @change="checkTxlChange2"> 全选 </a-checkbox> </div> @@ -91,61 +130,61 @@ allow-clear multiple :maxTagCount="3" - @change="onTxlChanges" + @change="onTxlChanges2" @search="onTxlSearch" @select="onTxlSelect" - :tree-data="addressBook" - :replaceFields="replaceTxlFields" + :tree-data="oldAddressBook" + :replaceFields="replaceOldTxlFields" > </a-tree-select> </a-form-model-item> </a-col> </a-row> - <a-row :gutter="24"> - <a-col :span="12"> - <div style="display:flex;justify-content: space-between;align-items: center;"> - <b>选择接收单位:</b> - <a-checkbox :checked="checkAll" @change="checkChange"> - 全选 - </a-checkbox> - </div> - <a-form-model-item prop="receiver"> - <a-tree-select - show-search - tree-checkable - treeCheckStrictly - style="width: 100%" - v-model="form.receiver" - :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }" - placeholder="选择工作通知接收单位" - allow-clear - multiple - :maxTagCount="3" - @change="onChanges" - @search="onSearch" - @select="onSelect" - :tree-data="areaUsers" - :replaceFields="replaceFields" - > - </a-tree-select> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <div style="display:flex;justify-content: space-between;align-items: center;"> - <b>平级接收人选择:</b> - <a-checkbox :checked="checkSlAll" @change="checkSlChange"> - 全选 - </a-checkbox> - </div> - <a-form-model-item> - <a-select mode="multiple" placeholder="选择平级接收单位" v-model="form.recipient" @change="handle"> - <a-select-option v-for="item in filteredOptions" :key="item.id" :value="item.id" :maxTagCount="3"> - {{ item.recipientName }}({{item.company}} {{item.phone}}) - </a-select-option> - </a-select> - </a-form-model-item> - </a-col> - </a-row> +<!-- <a-row :gutter="24">--> +<!-- <a-col :span="12">--> +<!-- <div style="display:flex;justify-content: space-between;align-items: center;">--> +<!-- <b>选择接收单位:</b>--> +<!-- <a-checkbox :checked="checkAll" @change="checkChange">--> +<!-- 全选--> +<!-- </a-checkbox>--> +<!-- </div>--> +<!-- <a-form-model-item prop="receiver">--> +<!-- <a-tree-select--> +<!-- show-search--> +<!-- tree-checkable--> +<!-- treeCheckStrictly--> +<!-- style="width: 100%"--> +<!-- v-model="form.receiver"--> +<!-- :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"--> +<!-- placeholder="选择工作通知接收单位"--> +<!-- allow-clear--> +<!-- multiple--> +<!-- :maxTagCount="3"--> +<!-- @change="onChanges"--> +<!-- @search="onSearch"--> +<!-- @select="onSelect"--> +<!-- :tree-data="areaUsers"--> +<!-- :replaceFields="replaceFields"--> +<!-- >--> +<!-- </a-tree-select>--> +<!-- </a-form-model-item>--> +<!-- </a-col>--> +<!-- <a-col :span="12">--> +<!-- <div style="display:flex;justify-content: space-between;align-items: center;">--> +<!-- <b>平级接收人选择:</b>--> +<!-- <a-checkbox :checked="checkSlAll" @change="checkSlChange">--> +<!-- 全选--> +<!-- </a-checkbox>--> +<!-- </div>--> +<!-- <a-form-model-item>--> +<!-- <a-select mode="multiple" placeholder="选择平级接收单位" v-model="form.recipient" @change="handle">--> +<!-- <a-select-option v-for="item in filteredOptions" :key="item.id" :value="item.id" :maxTagCount="3">--> +<!-- {{ item.recipientName }}({{item.company}} {{item.phone}})--> +<!-- </a-select-option>--> +<!-- </a-select>--> +<!-- </a-form-model-item>--> +<!-- </a-col>--> +<!-- </a-row>--> <!-- <div>--> <!-- <b>选择审批领导:</b> --> <!-- <a-select show-search placeholder="请选择审批领导"--> @@ -163,7 +202,7 @@ <!-- </a-select>--> <!-- </div>--> <div style="display: flex;justify-content: right"> - <a-button type="primary" style="width: 250px;" @click="confirmSend()" :disabled="userInfo.role.id==1?true:false"> + <a-button type="primary" style="width: 250px;" @click="confirmSend()" :disabled="userInfo.role.id==1?true:false" v-preventReClick="1500"> 确认发送 </a-button> </div> @@ -173,7 +212,7 @@ <h2>短信预览</h2> <div class="mobile"> <div class="mesg"> - <P>【自然灾害风险预警提示】{{form.content}}发布单位:{{form.publishingUnit}}</P> + <P>【防灾减灾工作提示】{{form.content}}</P> </div> </div> @@ -187,6 +226,7 @@ import { TreeSelect } from 'ant-design-vue'; import { massSend } from "@/api/send"; import {getUserInfo} from "@/util/storage"; +import {getNewAddressBook} from "@/api/contactBook"; export default { name: "massSend", data() { @@ -195,6 +235,8 @@ department: '自治区自然灾害综合监测预警中心', filteredOptions:[], wrapperCol: { span: 24 }, + isNewTxl: 1, + unittype: null, form: { id: null, emergType: null, @@ -209,23 +251,25 @@ verticalRecipient: [], horizontalRecipient: [] }, - checkTxlAll: false, + checkTxlAll1: false, + checkTxlAll2: false, checkAll: false, checkSlAll: false, + oldAddressBook: [], addressBook: [], replaceTxlFields: { + children:'orgUsers', + title:'name', + key:'id', + value: 'id' + }, + replaceOldTxlFields: { children:'userInfos', title:'name', key:'id', value: 'id' }, areaUsers: [], - replaceFields: { - children:'children', - title:'name', - key:'id', - value: 'id' - }, riskOptions: [ {name: '地震',value: 1}, {name: '气象',value: 3}, @@ -244,7 +288,8 @@ disasterType: [{ required: true, message: '请选择灾种', trigger: 'change'}], warningLevel: [{ required: true, message: '请选择预警级别', trigger: 'change'}], content: [{ required: true, message: '请输入信息内容', trigger: 'blur'}], - receiver: [{ required: true, message: '请选择接收单位', trigger: 'change'}], + txlUsers: [{ required: true, message: '请选择通讯录接收人', trigger: 'blur'}], + // receiver: [{ required: true, message: '请选择接收单位', trigger: 'change'}], // recipient: [{ required: true, message: '请选择平级接收人', trigger: 'change'}] // verticalRecipient: [{ required: true, message: '请选择接收单位', trigger: 'change'}], // horizontalRecipient: [{ required: true, message: '请选择平级接收人', trigger: 'change'}] @@ -254,8 +299,10 @@ components: {}, created() { const t = this + t.unittype = getUserInfo().unittype t.form.publishingUnit = t.userInfo.company t.getUserByGroup() + t.getNewAddressBook() t.getSameLevel() t.getAreaUsers() }, @@ -269,17 +316,37 @@ if(res.data.code == 100){ if(res.data.data){ let bookData = [] - bookData = res.data.data - for(let i in bookData){ - if(!bookData[i].userInfos || bookData[i].userInfos.length == 0){ - bookData.splice(i, 1) - } - } + bookData = res.data.data.filter(i=>i.userInfos?.length>0) for(let j of bookData){ j.id = j.id.toString() + '-' + '1' j.userInfos.map((item)=>{ - item.name = item.name + '('+ item.company + ' ' + item.phone + ')' + item.name = item.name + '('+ item.company + ' ' + item.phone.replace(/(\d{3})\d{4}(\d+)/, "$1****$2") + ')' return item + }) + } + t.oldAddressBook = bookData + }else{ + console.log('暂无数据') + } + }else{ + this.$message.warning(res.data.msg); + } + }, + + // 获取新通讯录 + async getNewAddressBook(){ + let t = this + let res = await getNewAddressBook() + if(res.data.code == 100){ + if(res.data.data){ + let bookData = [] + bookData = res.data.data.filter(i=>i.orgUsers?.length>0) + for(let j of bookData){ + j['name'] = j.orgName + j.id = j.id.toString() + '-' + '1' + j.orgUsers.map((item)=>{ + item.name = item.name + '('+ item.company + ' ' + item.phone.replace(/(\d{3})\d{4}(\d+)/, "$1****$2") + ')' + return item }) } t.addressBook = bookData @@ -289,6 +356,12 @@ }else{ this.$message.warning(res.data.msg); } + }, + + changeTxl(e){ + this.checkTxlAll1 = false + this.checkTxlAll2 = false + this.form.txlUsers = [] }, // 获取同级接收人 @@ -325,62 +398,44 @@ }, //选择子部门部分 - onTxlChanges(value,label,extra) { + onTxlChanges1(value,label,extra) { const t = this if(t.form.txlUsers.length == 0){ - t.checkTxlAll = false + t.checkTxlAll1 = false } }, - checkTxlChange(e) { + onTxlChanges2(value,label,extra) { const t = this - this.checkTxlAll = !this.checkTxlAll - if(t.checkTxlAll == true){ + if(t.form.txlUsers.length == 0){ + t.checkTxlAll2 = false + } + }, + checkTxlChange1(e) { + const t = this + this.checkTxlAll1 = !this.checkTxlAll1 + if(t.checkTxlAll1 == true){ let res = [] for(let i of t.addressBook){ - if(i.userInfos && i.userInfos.length>0) - res = res.concat(...i.userInfos) + if(i.orgUsers && i.orgUsers.length>0) + res = res.concat(...i.orgUsers) } t.form.txlUsers = res.map(i=>i.id) }else{ t.form.txlUsers = [] } }, - - //选择子部门部分 - onChanges(value,label,extra) { + checkTxlChange2(e) { const t = this - if(t.form.receiver.length == 0){ - t.checkAll = false - } - }, - - checkChange(e) { - const t = this - this.checkAll = !this.checkAll - if(t.checkAll == true){ - t.form.receiver = t.traverseTree(t.areaUsers[0]) + this.checkTxlAll2 = !this.checkTxlAll2 + if(t.checkTxlAll2 == true){ + let res = [] + for(let i of t.oldAddressBook){ + if(i.userInfos && i.userInfos.length>0) + res = res.concat(...i.userInfos) + } + t.form.txlUsers = res.map(i=>i.id) }else{ - t.form.receiver = [] - } - }, - - //选择平级部门部分 - handle(selectedItems) { - const t = this - if(t.form.recipient.length == t.filteredOptions.length){ - t.checkSlAll = true - }else{ - t.checkSlAll = false - } - }, - - checkSlChange(e) { - const t = this - t.checkSlAll = !t.checkSlAll - if(t.checkSlAll == true){ - t.form.recipient = t.filteredOptions.map(i=>i.id) - }else{ - t.form.recipient = [] + t.form.txlUsers = [] } }, @@ -394,7 +449,8 @@ const address = this.form.txlUsers.map((item)=> { this.findUserById(item).recipientType = 3 - const {addressBookGroupId,...data} = this.findUserById(item) + const {id,name,phone,company,...rest} = this.findUserById(item) + const data = { id,name,phone,company } data.name = data.name.split('(')[0] return data } @@ -500,16 +556,29 @@ }, findUserById(id){ - for(let i of this.addressBook){ - if(i.userInfos && i.userInfos.length>0){ - for(let j of i.userInfos){ - if(j.id == id){ - return j + if(this.isNewTxl == 1){ + for(let i of this.addressBook){ + if(i.orgUsers && i.orgUsers.length>0){ + for(let j of i.orgUsers){ + if(j.id == id){ + return j + } } } } + return null + }else{ + for(let i of this.oldAddressBook){ + if(i.userInfos && i.userInfos.length>0){ + for(let j of i.userInfos){ + if(j.id == id){ + return j + } + } + } + } + return null } - return null }, // 将树状数据所有id和name放入对象数组 @@ -584,4 +653,4 @@ } } -</style> \ No newline at end of file +</style> -- Gitblit v1.9.2