be009217
monkeyhouyi
处理,通知公告,任务中心
|
1
|
<template>
|
5a14192c
monkeyhouyi
1
|
2
3
4
5
6
7
8
9
|
<el-dialog
:title="isDetail ? '通知详情' : '发布通知'"
:close-on-click-modal="false"
:visible.sync="visible"
class="NCC-dialog NCC-dialog_center msg-dialog"
lock-scroll
width="50%"
>
|
87e6927c
monkeyhouyi
弹框样式
|
10
|
<div class="NCC-dialog-content">
|
7180000e
monkeyhouyi
优化
|
11
|
<div style="padding-top: 10px" v-show="!isDetail">
|
87e6927c
monkeyhouyi
弹框样式
|
12
|
<el-form
|
5a14192c
monkeyhouyi
1
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
ref="elForm"
:model="dataForm"
size="small"
label-width="80px"
label-position="right"
:disabled="!!isDetail"
:rules="rules"
>
<el-col :span="24">
<el-form-item label="通知标题" prop="title">
<el-input v-model="dataForm.title"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="内容" prop="bodyContent">
<NCC-Quill
v-model="dataForm.bodyContent"
placeholder="请输入内容..."
:disabled="!!isDetail"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="附件上传" prop="imgUrl">
<NCC-UploadFz
v-model="dataForm.imgUrl"
:fileSize="5"
sizeUnit="MB"
:limit="9"
buttonText="点击上传"
/>
</el-form-item>
</el-col>
<el-col :span="24">
|
fcbf44a0
monkeyhouyi
1
|
47
|
<el-form-item label="传达区域" prop="communicationAreas">
|
61009cfc
monkeyhouyi
2024/8/8
|
48
|
<el-checkbox-group v-model="dataForm.communicationAreas" @change="selectChange">
|
5a14192c
monkeyhouyi
1
|
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
<el-checkbox
v-for="(item, index) in areaOptions"
:key="index"
:label="item.id"
>{{ item.fullName }}</el-checkbox
>
</el-checkbox-group>
<div style="margin-top: 10px">
<el-button size="mini" @click="selectAreaAll('area')"
>全选</el-button
>
<el-button size="mini" @click="closeAreaAll('area')"
>反选</el-button
>
</div>
</el-form-item>
</el-col>
<el-col :span="24">
|
fcbf44a0
monkeyhouyi
1
|
67
|
<el-form-item label="传达外协" prop="communicationOuts">
|
61009cfc
monkeyhouyi
2024/8/8
|
68
|
<el-checkbox-group v-model="dataForm.communicationOuts" @change="selectChange">
|
5a14192c
monkeyhouyi
1
|
69
70
71
72
73
74
75
76
77
78
79
80
81
|
<el-checkbox
v-for="(item, index) in communicationOutOptions"
:key="index"
:label="item.id"
>{{ item.fullName }}</el-checkbox
>
</el-checkbox-group>
<div style="margin-top: 10px">
<el-button size="mini" @click="selectAreaAll">全选</el-button>
<el-button size="mini" @click="closeAreaAll">反选</el-button>
</div>
</el-form-item>
</el-col>
|
87e6927c
monkeyhouyi
弹框样式
|
82
83
84
|
</el-form>
</div>
<div
|
5a14192c
monkeyhouyi
1
|
85
86
87
|
style="padding-top: 10px"
class="msg-box"
v-loading="loading"
|
7180000e
monkeyhouyi
优化
|
88
|
v-show="!!isDetail"
|
be009217
monkeyhouyi
处理,通知公告,任务中心
|
89
|
>
|
5a14192c
monkeyhouyi
1
|
90
91
|
<div class="msg-title">{{ dataForm.title }}</div>
<div class="content" v-html="dataForm.bodyContent"></div>
|
77e1ac72
monkeyhouyi
优化
|
92
|
<div class="files">
|
f0d64cc9
monkeyhouyi
优化
|
93
94
95
96
97
|
<h4>附件</h4>
<div style="margin-bottom: 10px;">
<NCC-UploadFz v-if="dataForm.imgUrl && dataForm.imgUrl.length" v-model="dataForm.imgUrl" :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" disabled/>
<div style="margin-top: 10px;" v-else>无附件</div>
</div>
|
77e1ac72
monkeyhouyi
优化
|
98
99
|
</div>
<div class="files" v-if="isSHILevel">
|
61009cfc
monkeyhouyi
2024/8/8
|
100
|
<h4>查看情况</h4>
|
cbd5265d
monkeyhouyi
优化
|
101
102
103
|
<div style="font-size: 12px; margin: 8px;">
注:<el-tag type="success" size="mini">区县</el-tag>表示 【已查看】 的区县, <el-tag type="danger" size="mini">区县</el-tag>表示 【未查看】 的区县
</div>
|
61009cfc
monkeyhouyi
2024/8/8
|
104
105
106
107
108
|
<div class="tag-group">
<span class="tag-group__title title-tag">传递区域:</span>
<el-tag
v-for="(v, i) in dataForm.communicationAreaList"
:key="i"
|
cbd5265d
monkeyhouyi
优化
|
109
|
:type="`${v.IsRead ? 'success' : 'danger'}`">
|
61009cfc
monkeyhouyi
2024/8/8
|
110
111
112
113
114
115
116
117
|
{{ v.FullName }}
</el-tag>
</div>
<div class="tag-group">
<span class="tag-group__title title-tag">传达外协:</span>
<el-tag
v-for="(v, i) in dataForm.communicationOutList"
:key="i"
|
cbd5265d
monkeyhouyi
优化
|
118
|
:type="`${v.IsRead ? 'success' : 'danger'}`">
|
61009cfc
monkeyhouyi
2024/8/8
|
119
120
121
122
|
{{ v.FullName }}
</el-tag>
</div>
</div>
|
87e6927c
monkeyhouyi
弹框样式
|
123
|
</div>
|
e4af99a2
monkeyhouyi
1
|
124
|
</div>
|
5a14192c
monkeyhouyi
1
|
125
126
|
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取 消</el-button>
|
61009cfc
monkeyhouyi
2024/8/8
|
127
|
<el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail" :loading="btnLoading">确 定</el-button>
|
5a14192c
monkeyhouyi
1
|
128
129
130
131
132
133
134
135
136
|
</span>
</el-dialog>
</template>
<script>
import request from "@/utils/request";
export default {
components: {},
props: [],
data() {
|
61009cfc
monkeyhouyi
2024/8/8
|
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
var validatecommunicationAreas = (rule, value, callback) => {
if (!this.dataForm.communicationOuts.length && !value?.length) {
callback(new Error('请输入传达区域'));
} else {
callback();
}
};
var validatecommunicationOuts = (rule, value, callback) => {
if (!this.dataForm.communicationAreas.length && !value?.length) {
callback(new Error('请选择传达外协'));
} else {
callback();
}
}
|
5a14192c
monkeyhouyi
1
|
151
152
153
154
155
156
157
158
159
160
161
|
return {
loading: false,
visible: false,
isDetail: false,
dataForm: {
id: "",
title: "",
bodyContent: "",
imgUrl: [],
categoryId: "cc225c68421644f79037aaf624ccccc0",
isType: "0",
|
fcbf44a0
monkeyhouyi
1
|
162
163
|
communicationAreas: [],
communicationOuts: [],
|
5a14192c
monkeyhouyi
1
|
164
165
166
167
168
169
|
},
rules: {
title: [{ required: true, message: "请输入标题", trigger: "blur" }],
bodyContent: [
{ required: true, message: "请输入内容", trigger: "blur" },
],
|
61009cfc
monkeyhouyi
2024/8/8
|
170
171
172
173
174
175
|
communicationAreas: [
{ validator: validatecommunicationAreas, trigger: 'change' }
],
communicationOuts: [
{ validator: validatecommunicationOuts, trigger: 'change' }
],
|
5a14192c
monkeyhouyi
1
|
176
177
178
|
},
areaOptions: [],
communicationOutOptions: [],
|
61009cfc
monkeyhouyi
2024/8/8
|
179
|
btnLoading: false,
|
5a14192c
monkeyhouyi
1
|
180
181
|
};
},
|
61009cfc
monkeyhouyi
2024/8/8
|
182
183
184
185
186
187
|
computed: {
isSHILevel() {
// 判断角色是否为‘市级办公室’
return this.$store.state.user.islader;
},
},
|
5a14192c
monkeyhouyi
1
|
188
189
190
191
192
193
194
195
196
197
|
watch: {},
created() {
this.initAreaTypeList();
this.initCommunicationOutOptions();
},
mounted() {},
beforeDestroy() {},
methods: {
goBack() {
this.$emit("refresh");
|
be009217
monkeyhouyi
处理,通知公告,任务中心
|
198
|
},
|
5a14192c
monkeyhouyi
1
|
199
200
201
202
203
|
init(id, isDetail) {
this.dataForm.id = id || 0;
this.visible = true;
this.isDetail = isDetail || false;
this.$nextTick(() => {
|
7180000e
monkeyhouyi
优化
|
204
|
this.$refs["elForm"].resetFields();
|
5a14192c
monkeyhouyi
1
|
205
206
207
208
209
210
211
|
if (this.dataForm.id) {
this.loading = true;
request({
url: `/SubDev/ZyOaArticle/${this.dataForm.id}`,
method: "GET",
}).then((res) => {
this.dataForm = res.data;
|
61009cfc
monkeyhouyi
2024/8/8
|
212
213
214
215
216
217
218
219
220
221
|
let AreaList = [];
res.data.communicationAreaList && res.data.communicationAreaList.forEach(v => {
AreaList.push(v.Id);
});
this.dataForm.communicationAreas = AreaList;
let OutList = [];
res.data.communicationOutList && res.data.communicationOutList.forEach(v => {
OutList.push(v.Id);
});
this.dataForm.communicationOuts = OutList;
|
5a14192c
monkeyhouyi
1
|
222
223
224
225
|
this.loading = false;
});
}
});
|
be009217
monkeyhouyi
处理,通知公告,任务中心
|
226
|
},
|
5a14192c
monkeyhouyi
1
|
227
228
229
230
|
async initAreaTypeList() {
let list = this.$store.state.meta.area;
!list && (list = await this.$store.dispatch("getTypeListByCode", "area"));
this.areaOptions = list;
|
be009217
monkeyhouyi
处理,通知公告,任务中心
|
231
|
},
|
5a14192c
monkeyhouyi
1
|
232
233
234
235
236
237
238
239
|
async initCommunicationOutOptions() {
let list = this.$store.state.meta.externalAssistanceList;
!list &&
(list = await this.$store.dispatch(
"getTypeListByCode",
"externalAssistance"
));
this.communicationOutOptions = list;
|
be009217
monkeyhouyi
处理,通知公告,任务中心
|
240
|
},
|
5a14192c
monkeyhouyi
1
|
241
242
243
|
// 全选
selectAreaAll(type) {
if (type == "area") {
|
fcbf44a0
monkeyhouyi
1
|
244
|
this.dataForm.communicationAreas = this.areaOptions.map(
|
5a14192c
monkeyhouyi
1
|
245
246
247
|
(option) => option.id
);
} else {
|
fcbf44a0
monkeyhouyi
1
|
248
|
this.dataForm.communicationOuts = this.communicationOutOptions.map(
|
5a14192c
monkeyhouyi
1
|
249
250
251
|
(option) => option.id
);
}
|
61009cfc
monkeyhouyi
2024/8/8
|
252
|
this.$forceUpdate();
|
5a14192c
monkeyhouyi
1
|
253
254
255
256
|
},
// 反选
closeAreaAll(type) {
if (type == "area") {
|
fcbf44a0
monkeyhouyi
1
|
257
|
this.dataForm.communicationAreas = this.areaOptions
|
5a14192c
monkeyhouyi
1
|
258
|
.filter(
|
fcbf44a0
monkeyhouyi
1
|
259
|
(option) => !this.dataForm.communicationAreas.includes(option.id)
|
5a14192c
monkeyhouyi
1
|
260
261
262
|
)
.map((option) => option.id);
} else {
|
fcbf44a0
monkeyhouyi
1
|
263
|
this.dataForm.communicationOuts = this.communicationOutOptions
|
5a14192c
monkeyhouyi
1
|
264
|
.filter(
|
fcbf44a0
monkeyhouyi
1
|
265
|
(option) => !this.dataForm.communicationOuts.includes(option.id)
|
5a14192c
monkeyhouyi
1
|
266
267
268
|
)
.map((option) => option.id);
}
|
61009cfc
monkeyhouyi
2024/8/8
|
269
270
271
272
|
this.$forceUpdate();
},
selectChange() {
this.$forceUpdate();
|
5a14192c
monkeyhouyi
1
|
273
274
275
276
|
},
dataFormSubmit() {
this.$refs["elForm"].validate((valid) => {
if (valid) {
|
61009cfc
monkeyhouyi
2024/8/8
|
277
|
!this.dataForm.id ? this.toPostForm('/SubDev/ZyOaArticle', 'post') : this.toPostForm(`/SubDev/ZyOaArticle/${this.dataForm.id}`, 'put');
|
5a14192c
monkeyhouyi
1
|
278
279
280
|
}
});
},
|
61009cfc
monkeyhouyi
2024/8/8
|
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
|
toPostForm(url, method) {
this.btnLoading = true;
request({
url,
method,
data: this.dataForm,
}).then((res) => {
this.$message({
message: res.msg,
type: "success",
duration: 1000,
onClose: () => {
this.btnLoading = false;
this.visible = false;
this.$emit("refresh", true);
},
});
});
}
|
5a14192c
monkeyhouyi
1
|
300
301
302
303
|
},
};
</script>
<style lang="scss" scoped>
|
5a14192c
monkeyhouyi
1
|
304
305
306
307
308
309
310
311
312
|
.msg-box {
.msg-title {
text-align: center;
font-size: 14px;
font-weight: 700;
line-height: 30px;
border-bottom: #e8e8e8 1px solid;
margin-bottom: 8px;
color: #000;
|
be009217
monkeyhouyi
处理,通知公告,任务中心
|
313
|
}
|
61009cfc
monkeyhouyi
2024/8/8
|
314
315
316
317
318
319
320
321
322
323
324
325
326
|
.files {
border-top: #e8e8e8 1px solid;
padding-top: 10px;
margin-top: 10px;
.title-tag {
line-height: 40px;
font-size: 12px;
margin-right: 10px;
}
:deep(.el-tag) {
margin: 0 5px;
}
}
|
5a14192c
monkeyhouyi
1
|
327
328
|
}
</style>
|