From 140e83402814ffd2e92dfe313f5681feedd39f86 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: Tue, 06 Feb 2024 16:49:12 +0800
Subject: [PATCH] 修复弹窗bug
---
src/views/Admin/components/msgEditMod.vue | 319 +++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 249 insertions(+), 70 deletions(-)
diff --git a/src/views/Admin/components/msgEditMod.vue b/src/views/Admin/components/msgEditMod.vue
index fd3139a..e1f89ac 100644
--- a/src/views/Admin/components/msgEditMod.vue
+++ b/src/views/Admin/components/msgEditMod.vue
@@ -3,7 +3,7 @@
:title="title"
:visible="visible"
centered
- width="50%"
+ width="75%"
@cancel="handleCancel"
:afterClose="clearMod"
:footer="null"
@@ -57,6 +57,14 @@
<a-form-model-item prop="content">
<a-textarea v-model="form.content" placeholder="请输入短信通知内容部分" :auto-size="{ minRows: 3, maxRows: 5 }" :readOnly="disable"/>
</a-form-model-item>
+ <a-row v-if="userInfo.unittype == 1 || title == '信息转发' || title == '信息审核'||title == '信息详情'">
+ <a-col :span="24" style="display: flex;align-items: center">
+ <b style="margin-bottom: 24px">直览附件URL:</b>
+ <a-form-model-item style="width: 50%">
+ <a-textarea :readonly="title == '信息转发'||title == '信息审核'||title == '信息详情'?true:false" v-model="form.directViewUrl" placeholder="请输入url信息" :auto-size="{ minRows: 1, maxRows: 3 }"/>
+ </a-form-model-item>
+ </a-col>
+ </a-row>
<a-row>
<a-col :span="12">
<a-upload
@@ -65,7 +73,7 @@
:file-list="fileList"
@change="fileChange"
:headers="header"
- accept=".doc, .docx, .word, .pdf, .zip, .xlsx, .rar"
+ accept=".doc, .docx, .word, .pdf, .zip, .xlsx, .rar, .jpg, .jpeg, .png"
:data="{module: 'naturalDisasterPath'}"
@download="downloadFile"
:remove="(file)=>{removeFile(file)}"
@@ -95,8 +103,9 @@
全选
</a-checkbox>
</div>
- <a-form-model-item prop="receiver">
+ <a-form-model-item prop="receiver" style="margin-bottom: 6px">
<a-tree-select
+ :maxTagCount="3"
show-search
tree-checkable
treeCheckStrictly
@@ -115,15 +124,33 @@
>
</a-tree-select>
</a-form-model-item>
+<!-- <a-checkbox :checked="withLeaders" @change="isAddLeaders" style="margin-bottom: 24px" :disabled="disable">-->
+<!-- 同时发信息给本级领导-->
+<!-- </a-checkbox>-->
</a-col>
<a-col :span="12">
- <b style="margin-bottom: 6px">平级接收人选择:</b>
+ <div style="display:flex;justify-content: space-between;align-items: center;">
+ <b>平级接收人选择:</b>
+ <a-checkbox :checked="checkSlAll" @change="checkSlChange" :disabled="disable">
+ 全选
+ </a-checkbox>
+ </div>
<a-form-model-item>
- <a-select mode="multiple" placeholder="选择平级接收单位" v-model="form.recipient" @change="handle" :disabled="disable">
- <a-select-option v-for="item in filteredOptions" :key="item.id" :value="item.id">
- {{ item.recipientName }}
- </a-select-option>
- </a-select>
+<!-- <a-select mode="multiple" placeholder="选择平级接收单位" v-model="form.recipient" @change="handle" :disabled="disable" :maxTagCount="3">-->
+<!-- <a-select-option v-for="item in filteredOptions" :key="item.id" :value="item.id">-->
+<!-- {{ item.recipientName }}({{item.company}} {{item.phone}})-->
+<!-- </a-select-option>-->
+<!-- </a-select>-->
+ <a-tree-select
+ v-model="form.recipient"
+ style="width: 100%"
+ :tree-data="treeData"
+ tree-checkable
+ placeholder="选择平级接收单位"
+ :show-checked-strategy="SHOW_PARENT"
+ search-placeholder="Please select"
+ @change="handle"
+ />
</a-form-model-item>
</a-col>
</a-row>
@@ -137,8 +164,8 @@
</a-button>
</a-col>
</a-row>
- <a-row :gutter="24" style="display: flex;justify-content: right;align-items: center" v-if="title=='信息转发'">
- <a-col :span="12">
+ <a-row :gutter="24" style="display: flex;justify-content: right;align-items: center" v-if="title=='信息转发' || title=='信息修改'">
+ <a-col :span="12" v-if="title=='信息转发'">
<b style="margin-bottom: 6px">选择审批领导:</b>
<a-form-model-item prop="reviewId">
<a-select show-search v-model="form.reviewId" placeholder="请选择审批领导">
@@ -146,19 +173,23 @@
</a-select>
</a-form-model-item>
</a-col>
- <a-col :span="12" style="display: flex;justify-content: right">
+ <a-col :span="12" style="text-align: right" v-if="title=='信息转发'">
<a-button type="primary" style="min-width: 140px;margin-right: 12px" @click="confirmSend(4)">
确认转发
</a-button>
</a-col>
+ <a-col :span="12" style="text-align: right" v-if="title=='信息修改'">
+ <a-button type="primary" style="min-width: 140px;margin-right: 12px" @click="confirmSend(4)" :disabled="userInfo.role.id==1?true:false" v-preventReClick="1500">
+ 确认并提交审核
+ </a-button>
+ </a-col>
</a-row>
</div>
-
<div class="right">
<h2>短信预览</h2>
<div class="mobile">
<div class="mesg">
- <P>【自然灾害风险预警提示】{{form.content}}<br>发布单位:{{form.publishingUnit}}</P>
+ <P>【防灾减灾工作通知】{{form.content}}<br>发布单位:{{form.publishingUnit}}</P>
</div>
</div>
</div>
@@ -170,10 +201,13 @@
import {getAreaWithUserIfo, getPeerRecipient, getLeaders, delRecipient} from '@/api/user'
import {getUserInfo} from "@/util/storage";
import Cookies from "js-cookie";
-import {massSend, msgSend} from "@/api/send";
+import {massSend, msgSend, msgUpdate} from "@/api/send";
import {postReview} from "@/api/review";
import axios from "axios";
import {deleteFile} from "@/api/list";
+import {TreeSelect} from "ant-design-vue";
+const SHOW_PARENT = TreeSelect.SHOW_PARENT;
+const treeData = [];
export default {
name: "msgEditMod",
data() {
@@ -181,6 +215,8 @@
title: '信息审核',
disable: true,
visible: false,
+ SHOW_PARENT,
+ treeData,
confirmLoading: false,
leaders: [],
userInfo: {},
@@ -193,6 +229,7 @@
disasterType: undefined,
warningLevel: undefined,
content: '',
+ directViewUrl: '',
publishingUnit: '',
districtId: null,
attachments: [],
@@ -203,7 +240,10 @@
acceptingUnitIds: [],
peerRecipientIds: []
},
+ sendLeaders: [],
checkAll: false,
+ checkSlAll: false,
+ withLeaders: false,
areaUsers: [],
replaceFields: {
children:'children',
@@ -213,9 +253,8 @@
},
riskOptions: [
{name: '地震',value: 1},
- {name: '洪涝',value: 2},
{name: '气象',value: 3},
- {name: '泥石流',value: 4},
+ {name: '地质灾害',value: 4},
{name: '水旱',value: 5},
{name: '森林草原火灾',value: 6}
],
@@ -261,11 +300,21 @@
},
computed: {},
methods: {
- openMod(type,data){
+ openMod(type,data,id){
const t = this
+ console.log(data,'data')
+ t.getLeaders()
t.form.acceptingUnitIds = []
t.form.peerRecipientIds = []
- if(type == 'review' || type == 'view') {
+ t.sendLeaders = []
+ if(type == 'review' || type == 'view' || type == 'edit') {
+ t.sendLeaders = data.acceptingUnitIds.filter(i=>i.roleId == 2)
+ data.acceptingUnitIds = data.acceptingUnitIds.filter(i=>i.roleId == 3)
+ if(t.sendLeaders.length>0){
+ t.withLeaders = true
+ }else{
+ t.withLeaders = false
+ }
for(let i in data){
if(t.isValidKey(i,t.form)){
t.form[i] = data[i]
@@ -293,6 +342,9 @@
if(type == 'review'){
t.title = '信息审核'
t.disable = false
+ }else if(type == 'edit'){
+ t.title = '信息修改'
+ t.disable = false
}else{
t.title = '信息详情'
t.disable = true
@@ -304,6 +356,10 @@
t.form.warningLevel = data.warningLevel
t.form.content = data.content
t.form.timeout = data.timeout
+ t.form.forwardWarnInfoLogId = id
+ t.form.forwardStatus = 1
+ t.form.forwardPath = data.forwardPath
+ t.form.directViewUrl = data.directViewUrl
if(data.attachments && data.attachments.length>0){
t.fileList = data.attachments.map((i)=>{
return {
@@ -317,7 +373,6 @@
t.fileList = []
}
t.title = '信息转发'
- t.getLeaders()
t.disable = false
}
t.visible = true
@@ -332,7 +387,22 @@
let res = await getPeerRecipient()
if(res.data.code == 100){
if(res.data.data){
- t.filteredOptions = res.data.data
+ // t.filteredOptions = res.data.data
+ for (const resKey in res.data.data) {
+ t.filteredOptions = t.filteredOptions.concat(...res.data.data[resKey]);
+ const obj = {
+ title: resKey,
+ value: resKey,
+ key: resKey,
+ children: res.data.data[resKey].map(item => {
+ item['title'] = item.recipientName + '(' +item.company +item.phone+ ')'
+ item['value'] = item.id
+ item['key'] = item.id
+ return item
+ })
+ }
+ t.treeData.push(obj)
+ }
}else{
console.log('暂无数据')
}
@@ -351,7 +421,7 @@
t.userTitTree(res.data.data)
// treeD.push(t.findNodeById(res.data.data,t.userInfo.districtId))
t.areaUsers = t.findNodeById(res.data.data,t.userInfo.districtId).children
- t.unittype = this.findNodeById(this.areaUsers,t.userInfo.districtId)?.type
+ t.unittype = t.findNodeById(res.data.data,t.userInfo.districtId)?.type
}else{
console.log('暂无数据')
}
@@ -386,9 +456,47 @@
const t = this
this.checkAll = !this.checkAll
if(t.checkAll == true){
- t.form.receiver = t.traverseTree(t.areaUsers[0])
+ t.form.receiver = t.traverseTree(t.areaUsers)
}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 = []
+ }
+ },
+
+ isAddLeaders(e) {
+ const t = this
+ t.withLeaders = !t.withLeaders
+ if(e.target.checked){
+ // if(t.userInfo.role.id == 3){
+ t.sendLeaders = []
+ for(let i of t.leaders){
+ const {realName,...data} = i
+ const { id: recipienterId, name: recipienterName, phone: recipienterPhone,...rest} = data
+ const obj = { recipienterId, recipienterName, recipienterPhone, province: null,city: null,area: null,town: null,receiveUnit: t.userInfo.company,unittype: t.userInfo.unittype,roleId: 2,...rest}
+ t.sendLeaders.push(obj)
+ }
+ // }
+ }else{
+ t.sendLeaders = []
}
},
@@ -396,25 +504,33 @@
let fileList = [...info.fileList];
// 2. read from response and show file link
fileList = fileList.map(file => {
- if(file.status == 'done'){
- if (file.response) {
- const res = file.response
- if(res.code == 100){
- this.$message.success('文件上传成功')
- }else{
- this.$message.error('文件上传失败')
+ if (file.uid === info.file.uid) {
+ if (file.status == 'done') {
+ if (file.response) {
+ const res = file.response
+ if (res.code == 100) {
+ this.$message.success('文件上传成功')
+ } else {
+ this.$message.error('文件上传失败')
+ }
+ // Component will show file.url as link
+ file.url = res.data.fileUrl
}
- // Component will show file.url as link
- file.url = res.data.fileUrl
}
}
return file;
});
this.fileList = fileList;
+ console.log(this.fileList,'list')
},
removeFile(file){
- this.delList.push(file.uid)
+ if(this.title == '信息转发'){
+ this.delList.push(file.uid)
+ }else{
+ this.delList.push(file.response.data.id)
+ }
+ console.log(this.fileList,this.form,'form')
},
async deleteFile(){
@@ -442,19 +558,45 @@
}
const newAList = [].concat(...aList)
for(let i of newAList){
- const {realName,...data} = i
- const {id:recipienterId,name: recipienterName,phone: recipienterPhone,company: receiveUnit,...rest} = data
- const obj = { recipienterId, recipienterName, recipienterPhone, receiveUnit,...rest}
+ // const {realName,...data} = i
+ const {id:recipienterId,name: recipienterName,phone: recipienterPhone,company: receiveUnit,realName: recipienterRealName, registrationId: registrationId,...rest} = i
+ const obj = { recipienterId, recipienterName, recipienterRealName, recipienterPhone, receiveUnit, registrationId,...rest}
this.form.acceptingUnitIds.push(obj)
}
+ this.form.acceptingUnitIds = [...this.form.acceptingUnitIds,...this.sendLeaders]
+
+
if(this.form.recipient.length>0){
- const bList = this.form.recipient.map(item => this.filteredOptions.find(i=>i.id == item))
- for(let i of bList){
- const {id:recipienterId,recipientName: recipienterName,phone: recipienterPhone, company: receiveUnit,...rest} = i
- const obj = {recipienterId, recipienterName,recipienterPhone,receiveUnit,unittype:this.unittype,...rest}
+ // const bList = this.form.recipient.map(item => this.filteredOptions.find(i=>i.id == item))
+ // for(let i of bList){
+ // const {id:recipienterId,recipientName: recipienterName,phone: recipienterPhone, company: receiveUnit,...rest} = i
+ // const obj = {recipienterId, recipienterName,recipienterPhone,receiveUnit,unittype:this.unittype,recipienterRealName:recipienterName,...rest}
+ // this.form.peerRecipientIds.push(obj)
+ // }
+ let bList = []
+ for(let i of this.form.recipient){
+ for(let j of this.treeData){
+ if(j.value == i){
+ bList = bList.concat(j.children)
+ }else{
+ if(j.children && j.children.length>0){
+ for(let k of j.children){
+ if(k.id == i){
+ bList.push(k)
+ }
+ }
+ }
+ }
+ }
+ }
+ for (let i of bList) {
+ const {id: recipienterId, recipientName: recipienterName, phone: recipienterPhone, company: receiveUnit, id,province,city,area,town,...rest} = i
+ const obj = {recipienterId, recipienterName, recipienterPhone, receiveUnit, unittype: this.unittype, recipienterRealName: recipienterName, id,province,city,area,town}
this.form.peerRecipientIds.push(obj)
}
}
+
+
if(this.fileList.length == 0){
this.form.attachments = []
}else{
@@ -476,29 +618,47 @@
}else{
this.$message.error(res.data.msg)
}
- this.visible = false
- this.$emit('refresh')
this.$refs.ruleForm.clearValidate()
this.$refs.ruleForm.resetFields()
this.delList = []
this.fileList = []
+ this.visible = false
+ this.$emit('refresh')
})
}else{
- const {receiver,recipient,id,...data} = this.form
- msgSend(data).then( res =>{
- if(res.data.code == 100){
- this.$message.success('信息已提交审核')
- this.deleteFile()
- }else{
- this.$message.error(res.data.msg)
- }
- this.visible = false
- this.$emit('refresh')
- this.$refs.ruleForm.clearValidate()
- this.$refs.ruleForm.resetFields()
- this.delList = []
- this.fileList = []
- })
+ if(this.title == '信息转发'){
+ const {receiver,recipient,id,...data} = this.form
+ msgSend(data).then( res =>{
+ if(res.data.code == 100){
+ this.$message.success('信息已提交审核')
+ this.deleteFile()
+ }else{
+ this.$message.error(res.data.msg)
+ }
+ this.$refs.ruleForm.clearValidate()
+ this.$refs.ruleForm.resetFields()
+ this.delList = []
+ this.fileList = []
+ this.visible = false
+ this.$emit('refresh')
+ })
+ }else{
+ const {receiver,recipient,reviewId,...data} = this.form
+ msgUpdate(data).then( res =>{
+ if(res.data.code == 100){
+ this.$message.success('信息已提交审核')
+ this.deleteFile()
+ }else{
+ this.$message.error(res.data.msg)
+ }
+ this.$refs.ruleForm.clearValidate()
+ this.$refs.ruleForm.resetFields()
+ this.delList = []
+ this.fileList = []
+ this.visible = false
+ this.$emit('refresh')
+ })
+ }
}
}else{
console.log('error submit!!');
@@ -516,10 +676,11 @@
let blob = new Blob([res.data],{type: res.data.type})
link.style.display = "none";
link.href = URL.createObjectURL(blob); // 创建URL
- link.setAttribute("download", file.name);
- document.body.appendChild(link);
- link.click();
- document.body.removeChild(link);
+ window.open(link.href)
+ // link.setAttribute("download", file.name);
+ // document.body.appendChild(link);
+ // link.click();
+ // document.body.removeChild(link);
} else {
this.$message.error('获取文件失败')
}
@@ -554,11 +715,13 @@
// 将树状数据所有id和name放入对象数组
traverseTree(treeData) {
let result = [];
- function traverse(node) {
- result.push({ label: node.name, value: node.id });
- if (node.children && node.children.length > 0) {
- for (let child of node.children) {
- traverse(child);
+ function traverse(data) {
+ for(const node of data){
+ if(node.users && node.users.length>0) {
+ result.push({label: node.name, value: node.id});
+ if (node.children && node.children.length > 0) {
+ traverse(node.children);
+ }
}
}
}
@@ -592,10 +755,6 @@
},
onSelect() {
console.log(...arguments);
- },
- //选择平级部门部分
- handle(selectedItems) {
- this.selectedItems = selectedItems;
},
handleRisk(selectedItems) {
// this.selectedItems = selectedItems;
@@ -667,4 +826,24 @@
}
}
}
+
+.ant-radio-button-wrapper-checked {
+ /* 自定义禁用样式 */
+ /* 例如,修改文本颜色和背景颜色 */
+ color: #fff;
+ background-color: #1890ff;
+}
+
+/deep/.ant-select-disabled{
+ color: @blackText;
+
+ .ant-select-selection{
+ background: #fff;
+
+ .ant-select-selection__choice{
+ color: @blackText;
+ background: #fafafa;
+ }
+ }
+}
</style>
--
Gitblit v1.9.2