cloud-web-corejs 1.0.54-dev.802 → 1.0.54-dev.804

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1206 @@
1
+ <template>
2
+ <div class="index-home">
3
+ <el-row class="home-top">
4
+ <el-col :span="8">
5
+ <div class="i-user-info">
6
+ <img class="img" v-if="headPhotoUrl" :src="headPhotoUrl" />
7
+ <p class="name">{{ $t1("您好") }},{{ userInfo.nickName }}</p>
8
+ <p>{{ companyInfo.companyName }}</p>
9
+ </div>
10
+ <div class="notice-box">
11
+ <div class="txt" @click="openMoreNotifyMessage()">
12
+ <i class="iconfont icon-xiaoxitongzhi"></i>
13
+ <span
14
+ v-if="unreadMessageNum > 0"
15
+ v-html="
16
+ $t1('您 有{number}条 未读消息,请及时查看。', {
17
+ number: `<b>${
18
+ unreadMessageNum > 99 ? '99+' : unreadMessageNum
19
+ }</b>`,
20
+ })
21
+ "
22
+ >
23
+ </span>
24
+ <span v-else-if="unreadMessageNum == 0">
25
+ {{ $t1("您 暂无 未读消息。") }}
26
+ </span>
27
+ </div>
28
+ <el-tooltip
29
+ class="item"
30
+ effect="dark"
31
+ :content="$t1('刷新')"
32
+ placement="top"
33
+ >
34
+ <el-button type="text" @click="getUnreadMessageNum(true)"
35
+ ><i class="el-icon-refresh"></i
36
+ ></el-button>
37
+ </el-tooltip>
38
+ <el-tooltip
39
+ class="item"
40
+ effect="dark"
41
+ :content="$t1('查看更多')"
42
+ placement="top"
43
+ >
44
+ <el-button
45
+ type="text"
46
+ @click="openMoreNotifyMessage()"
47
+ class="more"
48
+ >
49
+ <i class="el-icon-news"></i>
50
+ </el-button>
51
+ </el-tooltip>
52
+ </div>
53
+ <el-card class="box-card">
54
+ <div slot="header" class="clearfix">
55
+ <span style="float: left">
56
+ <i class="el-icon-chat-line-round ico"></i>
57
+ {{ $t1("公告") }}
58
+ </span>
59
+ <el-button type="text" @click="openSystemNoticeDialog()"
60
+ ><span class="more">MORE+</span></el-button
61
+ >
62
+ </div>
63
+ <div class="home-notice-list">
64
+ <div
65
+ v-for="(systemNotice, index) in systemNotices"
66
+ :key="index"
67
+ class="item"
68
+ @click="openSystemNoticeDialog(systemNotice)"
69
+ :title="systemNotice.title"
70
+ >
71
+ {{ systemNotice.title }}
72
+ <span class="time">{{
73
+ systemNotice.modifyDate.substring(0, 10)
74
+ }}</span>
75
+ </div>
76
+ </div>
77
+ </el-card>
78
+ </el-col>
79
+ <el-col :span="homeConfig.toDoSpan || 16" style="padding-left: 6px">
80
+ <el-card class="box-card">
81
+ <div slot="header" class="clearfix">
82
+ <span style="float: left">
83
+ <i class="el-icon-chat-line-round ico"></i>
84
+ {{ $t1("待办事项") }}
85
+ </span>
86
+ <el-tooltip
87
+ class="item"
88
+ effect="dark"
89
+ :content="$t1('刷新')"
90
+ placement="top"
91
+ >
92
+ <el-button
93
+ type="text"
94
+ @click="getWfInfoList(true)"
95
+ class="more"
96
+ style="right: 107px"
97
+ >
98
+ <i class="el-icon-refresh"></i>
99
+ </el-button>
100
+ </el-tooltip>
101
+ <el-button type="text" @click="toWorkflowManage()" class="more">
102
+ <i class="el-icon-news"></i>
103
+ <span>{{ $t1("查看更多+") }}</span>
104
+ </el-button>
105
+ </div>
106
+ <div class="need-to">
107
+ <vxe-grid
108
+ :data="unDoWfRows"
109
+ ref="table-wf"
110
+ v-bind="wfOption"
111
+ @resizable-change="$vxeTableUtil.onColumnWitchChange"
112
+ @custom="$vxeTableUtil.customHandle"
113
+ ></vxe-grid>
114
+ </div>
115
+ </el-card>
116
+ </el-col>
117
+ </el-row>
118
+ <el-row class="home-bottom">
119
+ <el-col :span="10">
120
+ <el-card class="box-card">
121
+ <div slot="header" class="clearfix">
122
+ <span style="float: left">
123
+ <i class="el-icon-star-off ico"></i>
124
+ {{ $t1("快捷通道") }}
125
+ </span>
126
+ <!-- <el-button type="text"><span class="more">MORE+</span></el-button> -->
127
+ </div>
128
+ <div class="shortcut-box">
129
+ <div class="item" v-for="item in shortcutItems" :key="item.key">
130
+ <span class="name">{{ item.name }}</span>
131
+ <span class="count">({{ item.count }})</span>
132
+ </div>
133
+ </div>
134
+ </el-card>
135
+ </el-col>
136
+ <el-col :span="14" style="padding-left: 6px">
137
+ <el-card class="box-card">
138
+ <div slot="header" class="clearfix">
139
+ <span style="float: left">
140
+ <i class="el-icon-message ico"></i>
141
+ {{ $t1("待处理消息") }}
142
+ </span>
143
+ <el-button type="text" @click="openMoreNotifyMessage()"
144
+ ><span class="more">MORE+</span></el-button
145
+ >
146
+ </div>
147
+ <div class="pending-msg">
148
+ <vxe-grid
149
+ :data="pendingMessageRows"
150
+ ref="table-pending-msg"
151
+ v-bind="pendingMsgOption"
152
+ @resizable-change="$vxeTableUtil.onColumnWitchChange"
153
+ @custom="$vxeTableUtil.customHandle"
154
+ ></vxe-grid>
155
+ </div>
156
+ </el-card>
157
+ </el-col>
158
+ </el-row>
159
+ <slot></slot>
160
+ <systemNoticeInfoDialog
161
+ v-if="showSystemNoticeInfoDialog"
162
+ :visiable.sync="showSystemNoticeInfoDialog"
163
+ :param="csnRow"
164
+ :appendToTop="true"
165
+ ></systemNoticeInfoDialog>
166
+
167
+ <wfContentDialog
168
+ v-if="showWfDialog"
169
+ :visible.sync="showWfDialog"
170
+ @close="wfClose"
171
+ :option.sync="wfContentOption"
172
+ ></wfContentDialog>
173
+
174
+ <notifyMessageDialog ref="notifyMessageDialog"></notifyMessageDialog>
175
+
176
+ <notifyMessageInfoDialog
177
+ v-if="showNoticeDialog"
178
+ :visiable.sync="showNoticeDialog"
179
+ :dataId.sync="notifyMessageInfoId"
180
+ @readHanlde="notifyMessageReadHanlde"
181
+ ></notifyMessageInfoDialog>
182
+
183
+ <el-dialog
184
+ :title="$t1('选择分组')"
185
+ :append-to-body="true"
186
+ :modal-append-to-body="true"
187
+ :close-on-click-modal="false"
188
+ v-if="showGroupDialog"
189
+ :visible.sync="showGroupDialog"
190
+ :modal="false"
191
+ custom-class="el-dialog dialog-style list-dialog"
192
+ width="355px"
193
+ :destroy-on-close="true"
194
+ >
195
+ <div class="cont group-list">
196
+ <div
197
+ class="item"
198
+ v-for="(notifyTemplate, index) in notifyTemplates"
199
+ :key="index"
200
+ @click="openMoreNotifyMessage(notifyTemplate.notifyType)"
201
+ >
202
+ <i class="iconfont icon-fenzu"></i>
203
+ <span class="name">{{ notifyTemplate.ntName }}</span>
204
+ <!-- <span class="nums">99+</span>-->
205
+ </div>
206
+ </div>
207
+ </el-dialog>
208
+ </div>
209
+ </template>
210
+
211
+ <script>
212
+ import systemNoticeInfoDialog from "@base/views/user/system_notice/infoDialog.vue";
213
+ import notifyMessageDialog from "@base/views/user/notify_message/dialog.vue";
214
+ import notifyMessageInfoDialog from "@base/views/user/notify_message/infoDialog";
215
+
216
+ import { getToken } from "@base/utils/auth";
217
+ import wfContentDialog from "@base/views/user/wf/wf_manage/wfContentDialog";
218
+ import corejsConfig from "@/corejsConfig";
219
+ import { getLogicParamValue } from "@base/api/user";
220
+
221
+ export default {
222
+ name: "home",
223
+ components: {
224
+ systemNoticeInfoDialog,
225
+ notifyMessageDialog,
226
+ notifyMessageInfoDialog,
227
+ wfContentDialog,
228
+ },
229
+ data() {
230
+ return {
231
+ showNoticeDialog: false,
232
+ showGroupDialog: false,
233
+ notifyTemplates: [],
234
+ userInfo: {},
235
+ companyInfo: {},
236
+ systemNotices: [],
237
+ showSystemNoticeInfoDialog: false,
238
+ csnRow: null,
239
+ headPhotoUrl: "",
240
+ dialogVisible: true,
241
+ unDoWfRows: [],
242
+ wfOption: {},
243
+ showWfDialog: false,
244
+ wfContentOption: {},
245
+ showWfContent: true,
246
+ wfContent: null,
247
+ wfDataId: "",
248
+ notifyMessages: [],
249
+ notifyMessageInfoIndex: null,
250
+ notifyMessageInfoId: null,
251
+ unreadMessageNum: 0,
252
+ activating: true,
253
+ wfTimer: null,
254
+ homeConfig: corejsConfig.homeConfig || {},
255
+ pendingMsgOption: {},
256
+ shortcutItems: [
257
+ { key: "pendingAccept", name: "待接单", count: 10 },
258
+ { key: "overdueAppoint", name: "超时预约", count: 10 },
259
+ { key: "pendingAppoint", name: "待预约", count: 10 },
260
+ { key: "pendingAssign", name: "待派师傅", count: 10 },
261
+ { key: "masterReturn", name: "师傅退单", count: 10 },
262
+ { key: "pendingInstall", name: "签收待安装", count: 10 },
263
+ { key: "pendingFinish", name: "待完工单", count: 10 },
264
+ { key: "pendingConfirm", name: "待确认完工", count: 10 },
265
+ { key: "pendingAppeal", name: "待申诉", count: 10 },
266
+ { key: "complaint", name: "投诉/催单", count: 10 },
267
+ ],
268
+ pendingMessageRows: [
269
+ {
270
+ notifyTime: "2026-08-11 12:09:01",
271
+ messageType: "工单",
272
+ billNo: "WX20260811920903923",
273
+ title: "用户催单",
274
+ },
275
+ ],
276
+ };
277
+ },
278
+ activated() {
279
+ this.activating = true;
280
+ if (this.wfTimer) {
281
+ this.timerExcFun(true);
282
+ }
283
+ },
284
+ deactivated() {
285
+ this.activating = false;
286
+ },
287
+ beforeDestroy() {
288
+ this.clearTimer();
289
+ },
290
+ created() {
291
+ this.getUserInfo();
292
+ this.initSystemNotice();
293
+ this.initNotifyMessage();
294
+ this.initWfParam();
295
+ this.initWfTimer();
296
+ //初始化流程待办路由
297
+ this.initWorkflowManageRoute();
298
+ },
299
+ mounted() {
300
+ this.initPendingMsgTable();
301
+ },
302
+ methods: {
303
+ initWorkflowManageRoute() {
304
+ //初始化流程待办路由
305
+ getLogicParamValue({
306
+ data: { paramCode: "workflowManageRoute" },
307
+ success: (res) => {
308
+ let value = res?.objx;
309
+ this.workflowManageRoute = value || "/basic/wf/wf_manage/list";
310
+ },
311
+ });
312
+ },
313
+ toWorkflowManage() {
314
+ this.$router.push(this.workflowManageRoute);
315
+ },
316
+ wfClose() {
317
+ this.timerExcFun(true);
318
+ },
319
+ initWfTimer() {
320
+ this.wfTimer = setInterval(() => {
321
+ this.timerExcFun(false);
322
+ }, 10000);
323
+ this.timerExcFun(true);
324
+ },
325
+ timerExcFun(isLoading) {
326
+ if (!this.activating) {
327
+ return;
328
+ }
329
+ this.getWfInfoList(isLoading);
330
+ this.getUnreadMessageNum(isLoading);
331
+ this.$emit("timerHandle");
332
+ },
333
+ clearTimer() {
334
+ clearInterval(this.wfTimer);
335
+ this.wfTimer = null;
336
+ },
337
+ getUserInfo() {
338
+ this.$http({
339
+ url: USER_PREFIX + "/user/currentUser",
340
+ method: "post",
341
+ success: (res) => {
342
+ let userInfo = res.objx;
343
+ this.headPhotoUrl = userInfo.headPhotoUrl
344
+ ? userInfo.headPhotoUrl
345
+ : require("@/resources/images" + "/default-header.png");
346
+
347
+ this.userInfo = userInfo;
348
+ },
349
+ });
350
+ this.$http({
351
+ url: USER_PREFIX + "/company_info/getCurrent",
352
+ method: `post`,
353
+ success: (res) => {
354
+ this.companyInfo = res.objx || {};
355
+ },
356
+ });
357
+ },
358
+ initSystemNotice() {
359
+ this.$http({
360
+ url: USER_PREFIX + "/system_notice/listPage",
361
+ data: { publish: true, searchCount: false },
362
+ method: "post",
363
+ success: (res) => {
364
+ this.systemNotices =
365
+ res.objx && res.objx.records ? res.objx.records : [];
366
+ },
367
+ });
368
+ },
369
+ openSystemNoticeDialog(row) {
370
+ this.csnRow = row || null;
371
+ this.showSystemNoticeInfoDialog = true;
372
+ },
373
+ initUnDoWfInfo() {
374
+ this.$http({
375
+ url: AGILEBPM_PREFIX + "/wf_manage/listPage",
376
+ data: { type: 0, searchCount: false },
377
+ method: "post",
378
+ success: (res) => {
379
+ this.unDoWfRows = res.objx.records || [];
380
+ },
381
+ });
382
+ },
383
+ initWfTableList() {
384
+ let that = this;
385
+ let paramColumns = this.wfParamDTOs.map((item) => {
386
+ return {
387
+ title: this.$t1(item.paramName),
388
+ field: item.paramKey,
389
+ width: 150,
390
+ };
391
+ });
392
+ var statuses = {
393
+ running: this.$t1("审核中"),
394
+ back: this.$t1("已驳回"),
395
+ end: this.$t1("已完成"),
396
+ };
397
+ let tableOption = {
398
+ vue: this,
399
+ tableRef: "table-wf",
400
+ tableName: "home-table-wf",
401
+ config: {
402
+ height: "auto",
403
+ },
404
+ columns: [
405
+ { type: "checkbox", width: 48, resizable: false, fixed: "left" },
406
+ {
407
+ title: this.$t1("单据类型"),
408
+ field: "objTypeName",
409
+ width: 150,
410
+ fixed: "left",
411
+ },
412
+ {
413
+ title: this.$t1("流程主题"),
414
+ field: "name",
415
+ width: 150,
416
+ },
417
+ {
418
+ title: this.$t1("启动人"),
419
+ field: "starterName",
420
+ width: 150,
421
+ },
422
+ {
423
+ title: this.$t1("当前任务"),
424
+ field: "taskName",
425
+ width: 150,
426
+ },
427
+ {
428
+ title: this.$t1("当前任务用户"),
429
+ field: "candidateNames",
430
+ width: 150,
431
+ },
432
+ {
433
+ title: this.$t1("启动时间"),
434
+ field: "createDate",
435
+ width: 150,
436
+ },
437
+ ...paramColumns,
438
+ {
439
+ width: 47,
440
+ fixed: "right",
441
+ title: "",
442
+ sortable: false,
443
+ slots: {
444
+ default: ({ row }) => {
445
+ return [
446
+ <a
447
+ href="javascript:void(0);"
448
+ class="a-link"
449
+ onclick={() => {
450
+ this.openWfDialog(row);
451
+ }}
452
+ >
453
+ <el-tooltip
454
+ enterable={false}
455
+ effect="dark"
456
+ content={this.$t1("查看")}
457
+ placement="top"
458
+ popper-class="tooltip-skin"
459
+ >
460
+ <i class="el-icon-edit" />
461
+ </el-tooltip>
462
+ </a>,
463
+ ];
464
+ },
465
+ },
466
+ },
467
+ ],
468
+ };
469
+ this.$vxeTableUtil.initVxeTable(tableOption).then((opts) => {
470
+ this.wfOption = opts;
471
+ });
472
+ },
473
+ initPendingMsgTable() {
474
+ let tableOption = {
475
+ vue: this,
476
+ tableRef: "table-pending-msg",
477
+ tableName: "home-table-pending-msg",
478
+ config: {
479
+ height: "auto",
480
+ toolbarConfig: {
481
+ enabled: false,
482
+ },
483
+ pagerConfig: {
484
+ enabled: false,
485
+ },
486
+ },
487
+ columns: [
488
+ {
489
+ title: this.$t1("通知时间"),
490
+ field: "notifyTime",
491
+ width: 160,
492
+ },
493
+ {
494
+ title: this.$t1("消息类型"),
495
+ field: "messageType",
496
+ width: 90,
497
+ },
498
+ {
499
+ title: this.$t1("业务单据号"),
500
+ field: "billNo",
501
+ minWidth: 180,
502
+ slots: {
503
+ default: ({ row }) => {
504
+ return [
505
+ <a
506
+ href="javascript:void(0);"
507
+ class="a-link"
508
+ onclick={() => {
509
+ this.handlePendingMessage(row);
510
+ }}
511
+ >
512
+ {row.billNo}
513
+ </a>,
514
+ ];
515
+ },
516
+ },
517
+ },
518
+ {
519
+ title: this.$t1("标题"),
520
+ field: "title",
521
+ minWidth: 120,
522
+ },
523
+ {
524
+ title: this.$t1("操作"),
525
+ width: 70,
526
+ fixed: "right",
527
+ sortable: false,
528
+ slots: {
529
+ default: ({ row }) => {
530
+ return [
531
+ <a
532
+ href="javascript:void(0);"
533
+ class="a-link"
534
+ onclick={() => {
535
+ this.handlePendingMessage(row);
536
+ }}
537
+ >
538
+ {this.$t1("处理")}
539
+ </a>,
540
+ ];
541
+ },
542
+ },
543
+ },
544
+ ],
545
+ };
546
+ this.$vxeTableUtil.initVxeTable(tableOption).then((opts) => {
547
+ this.pendingMsgOption = opts;
548
+ this.$nextTick(() => {
549
+ let grid = this.$refs["table-pending-msg"];
550
+ if (grid && grid.recalculate) {
551
+ grid.recalculate();
552
+ }
553
+ });
554
+ });
555
+ },
556
+ handlePendingMessage(row) {
557
+ this.openMoreNotifyMessage();
558
+ },
559
+ openWfDialog(row) {
560
+ this.wfContentOption = {
561
+ objId: row.objId,
562
+ url: row.url,
563
+ objTypeCode: row.objTypeCode,
564
+ formCode: row.formCode,
565
+ };
566
+ this.showWfDialog = true;
567
+ },
568
+ initNotifyMessage() {
569
+ return;
570
+ this.$http({
571
+ url: USER_PREFIX + "/notify_message/listPage",
572
+ data: { searchCount: false },
573
+ method: "post",
574
+ success: (res) => {
575
+ this.notifyMessages =
576
+ res.objx && res.objx.records ? res.objx.records : [];
577
+ },
578
+ });
579
+ },
580
+ openNotifyMessageDialog(row) {
581
+ if (row.jumpContent) {
582
+ this.$refs.notifyMessageDialog.open(row, () => {
583
+ row.readed = 1;
584
+ });
585
+ }
586
+ },
587
+ openMoreNotifyMessage(notifyType) {
588
+ let data = { notifyType: notifyType || "" };
589
+ let view = {
590
+ name: "notify_message:list",
591
+ query: data,
592
+ };
593
+ this.$store.dispatch("tagsView/delCachedView", view).then(() => {
594
+ this.$router.replace(view);
595
+ });
596
+
597
+ if (notifyType) {
598
+ this.showGroupDialog = false;
599
+ }
600
+ },
601
+ checkNotifyMessage(row, index) {
602
+ this.showNoticeDialog = true;
603
+ this.notifyMessageInfoIndex = index;
604
+ this.notifyMessageInfoId = row.id;
605
+ },
606
+ notifyMessageReadHanlde() {
607
+ this.notifyMessages[this.notifyMessageInfoIndex].readed = 1;
608
+ },
609
+ openNotifyTemplateGroupDialog() {
610
+ this.$http({
611
+ url: USER_PREFIX + `/notify_template/listPage`,
612
+ method: `post`,
613
+ data: { searchCount: false },
614
+ isLoading: true,
615
+ // loadingTarget: document.body,
616
+ success: (res) => {
617
+ this.notifyTemplates =
618
+ res.objx && res.objx.records ? res.objx.records : [];
619
+ this.showGroupDialog = true;
620
+ },
621
+ });
622
+ },
623
+ rourteTo(route) {
624
+ if (route.type == 4) {
625
+ this.jumpOutLink(route);
626
+ } else if (route.type == 3) {
627
+ let menuCode = route.menuCode;
628
+ let path = "/user/outLink/index/" + menuCode;
629
+ this.$openView({ path: path, query: { url: route.url } }, route);
630
+ } else {
631
+ let path = this.getPath(route);
632
+ if (!path) return;
633
+ this.$openView(path, route);
634
+ }
635
+ },
636
+ getPath(route3) {
637
+ let item = null;
638
+ let path = null;
639
+ if (route3.type == 0) {
640
+ //普通菜单
641
+ if (route3.url) {
642
+ path = route3.route || route3.url;
643
+ let str = "/report/vform/render/";
644
+ if (path.indexOf(str) == 0) {
645
+ } else {
646
+ let pIndex = path.indexOf("?");
647
+ if (pIndex > 0) {
648
+ path = path.substring(0, pIndex);
649
+ }
650
+ }
651
+ }
652
+ } else if (route3.type == 5) {
653
+ //动态表单
654
+ let url = route3.route || route3.url;
655
+ path = url;
656
+ }
657
+ if (path && path.startsWith("@")) {
658
+ path = null;
659
+ }
660
+ return path;
661
+ },
662
+ jumpOutLink(route) {
663
+ let path = route.url;
664
+ if (route.type == 4 && path) {
665
+ if (path.indexOf("token={token}") >= 0) {
666
+ path = path.replace("token={token}", "token=" + getToken());
667
+ }
668
+ window.open(path);
669
+ }
670
+ },
671
+ initWfParam() {
672
+ return this.$http({
673
+ url: USER_PREFIX + "/wf_param/list",
674
+ method: `post`,
675
+ data: {},
676
+ isLoading: true,
677
+ // loadingTarget: document.body,
678
+ modalStrictly: true,
679
+ success: (res) => {
680
+ this.wfParamDTOs = res.objx || [];
681
+ this.initWfTableList();
682
+ },
683
+ });
684
+ },
685
+ getWfInfoList(isLoading) {
686
+ if (!this.activating) {
687
+ return;
688
+ }
689
+ this.$http({
690
+ url: USER_PREFIX + "/wf_info/listPage",
691
+ data: { type: 0, size: 20, searchCount: false },
692
+ method: "post",
693
+ isLoading: isLoading,
694
+ modal: isLoading || false,
695
+ // loadingTarget: document.body,
696
+ success: (res) => {
697
+ this.unDoWfRows =
698
+ res.objx && res.objx.records ? res.objx.records : [];
699
+ },
700
+ failMsg: false,
701
+ errorMsg: false,
702
+ fail: (res, response) => {
703
+ if (response && response.status == 200) {
704
+ this.$errorMsg(res);
705
+ }
706
+ },
707
+ });
708
+ },
709
+ getUnreadMessageNum(isLoading) {
710
+ if (!this.activating) {
711
+ return;
712
+ }
713
+ return this.$http({
714
+ url: USER_PREFIX + "/notify_message/countMessage",
715
+ method: `post`,
716
+ data: {},
717
+ isLoading: isLoading,
718
+ modal: isLoading || false,
719
+ // loadingTarget: document.body,
720
+ success: (res) => {
721
+ this.unreadMessageNum = res.objx || 0;
722
+ },
723
+ failMsg: false,
724
+ errorMsg: false,
725
+ fail: (res, response) => {
726
+ if (response && response.status == 200) {
727
+ this.$errorMsg(res);
728
+ }
729
+ },
730
+ });
731
+ },
732
+ wfhandleCallback(flag) {
733
+ if ([1, 2, 3].includes(flag)) {
734
+ this.showWfDialog = false;
735
+ this.wfClose();
736
+ }
737
+ },
738
+ },
739
+ };
740
+ </script>
741
+ <style lang="scss" scoped>
742
+ @import "~@/styles/variables.scss";
743
+
744
+ body #app .index-home {
745
+ margin: 3px 10px;
746
+ height: calc(100vh - 44px);
747
+ overflow: hidden;
748
+ display: flex;
749
+ flex-direction: column;
750
+
751
+ #containt {
752
+ margin: 0;
753
+ background: none;
754
+ height: auto;
755
+ box-shadow: none;
756
+ }
757
+
758
+ .i-user-info {
759
+ background: url(~@/resources/images/home-img.png) #2a6494 no-repeat 116%
760
+ 45px;
761
+ margin-bottom: 6px;
762
+ background-size: 181px;
763
+ padding: 14px 38px 11px 16px;
764
+ border-radius: 4px 4px;
765
+ color: #fff;
766
+ font-size: 12px;
767
+ margin-top: 3px;
768
+ height: 95px;
769
+ overflow: hidden;
770
+
771
+ .name {
772
+ opacity: 1;
773
+ font-weight: 600;
774
+ margin: 9px 0 14px;
775
+ font-size: 14px;
776
+ }
777
+
778
+ .img {
779
+ width: 60px;
780
+ height: 60px;
781
+ float: left;
782
+ border-radius: 50%;
783
+ border: solid 4px rgba(255, 255, 255, 0.28);
784
+ margin-right: 10px;
785
+ }
786
+ }
787
+
788
+ .home-notice-list {
789
+ height: 182px;
790
+ margin: 0 -12px;
791
+
792
+ .item {
793
+ padding: 6px 12px;
794
+ font-size: 12px;
795
+ cursor: pointer;
796
+ overflow: hidden;
797
+ text-overflow: ellipsis;
798
+ white-space: nowrap;
799
+
800
+ .time {
801
+ color: #b9b9b9;
802
+ font-size: 12px;
803
+ right: 12px;
804
+ }
805
+
806
+ &:hover {
807
+ color: $baseColor;
808
+ background-color: transparentize($baseColor, 0.97);
809
+
810
+ .time {
811
+ color: $baseColor;
812
+ }
813
+ }
814
+
815
+ &.no-read:before {
816
+ content: "";
817
+ width: 6px;
818
+ height: 6px;
819
+ background-color: $red;
820
+ border-radius: 50%;
821
+ vertical-align: middle;
822
+ display: inline-block;
823
+ margin-bottom: 1px;
824
+ }
825
+ }
826
+
827
+ &.to-reed {
828
+ height: 300px;
829
+ overflow: auto;
830
+ margin: -8px -12px;
831
+
832
+ .item {
833
+ white-space: initial;
834
+ padding: 8px 22px 2px;
835
+ position: relative;
836
+
837
+ &:after {
838
+ content: "";
839
+ position: absolute;
840
+ left: 22px;
841
+ right: 22px;
842
+ border-top: dashed 1px #eee;
843
+ height: 1px;
844
+ bottom: 0;
845
+ }
846
+
847
+ &.noread {
848
+ &:before {
849
+ content: "";
850
+ width: 6px;
851
+ height: 6px;
852
+ background-color: $red;
853
+ border-radius: 50%;
854
+ margin-right: 5px;
855
+ display: inline-block;
856
+ position: absolute;
857
+ left: 10px;
858
+ top: 16px;
859
+ }
860
+ }
861
+
862
+ .el-tag {
863
+ zoom: 0.95;
864
+ padding: 0 5px;
865
+ height: 24px;
866
+ line-height: 24px;
867
+ }
868
+
869
+ // .noread{
870
+ // position: absolute;right:0;top:0;
871
+ // span{transform: rotate(47deg);
872
+ // -ms-transform: rotate(47deg);
873
+ // -moz-transform: rotate(47deg);
874
+ // -webkit-transform: rotate(47deg);
875
+ // -o-transform: rotate(47deg);
876
+ // z-index: 3;
877
+ // color: #FFF;
878
+ // position: absolute;
879
+ // right: 1px;
880
+ // top: 2px;}
881
+ // &:after{
882
+ // content: "\e618";
883
+ // font-size: 62px;
884
+ // font-family: "iconfont";
885
+ // color:$red
886
+ // }
887
+ // }
888
+ .time {
889
+ position: relative;
890
+ right: 0;
891
+ margin-left: 12px;
892
+ }
893
+
894
+ .name {
895
+ overflow: hidden;
896
+ text-overflow: ellipsis;
897
+ white-space: nowrap;
898
+ margin-top: 3px;
899
+ display: block;
900
+ margin-bottom: 4px;
901
+ }
902
+
903
+ &:hover .name {
904
+ color: $baseColor;
905
+ }
906
+
907
+ &:first-child:before {
908
+ border-top: none;
909
+ }
910
+
911
+ .btns {
912
+ text-align: right;
913
+
914
+ .el-link {
915
+ font-size: 12px;
916
+ display: inline-block;
917
+ margin-left: 14px;
918
+
919
+ i {
920
+ font-size: 12px;
921
+ margin-right: 3px;
922
+ }
923
+ }
924
+ }
925
+ }
926
+ }
927
+ }
928
+
929
+ .home-top {
930
+ flex: none;
931
+ }
932
+
933
+ .home-bottom {
934
+ flex: 1;
935
+ min-height: 0;
936
+ display: flex;
937
+
938
+ > .el-col {
939
+ height: 100%;
940
+ display: flex;
941
+ flex-direction: column;
942
+ }
943
+
944
+ .box-card {
945
+ flex: 1;
946
+ min-height: 0;
947
+ display: flex;
948
+ flex-direction: column;
949
+
950
+ &.el-card.is-always-shadow {
951
+ margin-top: 0 !important;
952
+ }
953
+ }
954
+
955
+ ::v-deep .el-card__body {
956
+ flex: 1;
957
+ min-height: 0;
958
+ display: flex;
959
+ flex-direction: column;
960
+ }
961
+ }
962
+
963
+ .shortcut-box {
964
+ flex: 1;
965
+ min-height: 0;
966
+ display: grid;
967
+ grid-template-columns: repeat(5, 1fr);
968
+ grid-template-rows: repeat(2, 1fr);
969
+ gap: 8px;
970
+
971
+ .item {
972
+ border: solid 1px #e2e2e2;
973
+ border-radius: 2px;
974
+ text-align: center;
975
+ padding: 12px 4px 10px;
976
+ cursor: pointer;
977
+ background: #fff;
978
+ display: flex;
979
+ flex-direction: column;
980
+ justify-content: center;
981
+
982
+ .name {
983
+ display: block;
984
+ color: #424242;
985
+ font-size: 12px;
986
+ line-height: 20px;
987
+ }
988
+
989
+ .count {
990
+ display: block;
991
+ color: #d62b31;
992
+ font-size: 12px;
993
+ line-height: 20px;
994
+ }
995
+
996
+ &:hover {
997
+ border-color: $baseColor;
998
+ background-color: transparentize($baseColor, 0.95);
999
+
1000
+ .name {
1001
+ color: $baseColor;
1002
+ }
1003
+ }
1004
+ }
1005
+ }
1006
+
1007
+ .need-to {
1008
+ height: 332px;
1009
+ }
1010
+
1011
+ .pending-msg {
1012
+ flex: 1;
1013
+ min-height: 0;
1014
+ height: 100%;
1015
+ }
1016
+
1017
+ .table-box {
1018
+ width: 100%;
1019
+ font-size: 12px;
1020
+
1021
+ th {
1022
+ line-height: 32px;
1023
+ background: #f7f7f7;
1024
+ font-weight: 400;
1025
+ color: #808080;
1026
+ padding: 0 6px;
1027
+ }
1028
+
1029
+ td {
1030
+ text-align: center;
1031
+ line-height: 34px;
1032
+ color: #424242;
1033
+ border-bottom: solid 1px #eee;
1034
+ padding: 0 6px;
1035
+ }
1036
+
1037
+ tr:last-child td {
1038
+ border-bottom: none;
1039
+ }
1040
+ }
1041
+ }
1042
+
1043
+ .box-card .more {
1044
+ background-color: #f7f7f7;
1045
+ }
1046
+
1047
+ .group-list {
1048
+ padding: 18px 18px 6px 32px !important;
1049
+ height: 400px;
1050
+ overflow: auto;
1051
+
1052
+ .item {
1053
+ position: relative;
1054
+ height: 36px;
1055
+ border: solid 1px #eee;
1056
+ line-height: 34px;
1057
+ border-radius: 2px;
1058
+ padding: 0 42px 0 14px;
1059
+ margin-bottom: 10px;
1060
+ cursor: pointer;
1061
+
1062
+ &::before {
1063
+ content: "";
1064
+ width: 8px;
1065
+ height: 8px;
1066
+ border: solid 1px #eee;
1067
+ border-radius: 50%;
1068
+ display: inline-block;
1069
+ position: absolute;
1070
+ left: -16px;
1071
+ top: 13px;
1072
+ }
1073
+
1074
+ &.checked {
1075
+ &:before {
1076
+ content: "";
1077
+ background-color: $baseColor;
1078
+ border-color: $baseColor;
1079
+ }
1080
+
1081
+ background-color: transparentize($baseColor, 0.9);
1082
+ color: $baseColor;
1083
+ border-color: $baseColor;
1084
+ }
1085
+
1086
+ i {
1087
+ font-size: 12px;
1088
+ vertical-align: middle;
1089
+ }
1090
+
1091
+ .name {
1092
+ font-size: 12px;
1093
+ margin-left: 8px;
1094
+ vertical-align: middle;
1095
+ }
1096
+
1097
+ .nums {
1098
+ width: 22px;
1099
+ height: 22px;
1100
+ border-radius: 50%;
1101
+ display: inline-block;
1102
+ position: absolute;
1103
+ right: 5px;
1104
+ top: 6px;
1105
+ color: #fff;
1106
+ font-size: 12px;
1107
+ background-color: $red;
1108
+ line-height: 22px;
1109
+ text-align: center;
1110
+ }
1111
+ }
1112
+ }
1113
+
1114
+ .notice-box {
1115
+ background-color: #2a649429;
1116
+ border-radius: 0 0 4px 4px;
1117
+ padding: 9px 12px;
1118
+ margin-bottom: 5px;
1119
+ margin-top: -6px;
1120
+ position: relative;
1121
+ z-index: 2;
1122
+ font-size: 13px;
1123
+ color: #212121;
1124
+ overflow: hidden;
1125
+
1126
+ .txt {
1127
+ line-height: 28px;
1128
+ font-size: 12px;
1129
+ position: relative;
1130
+ display: inline-block;
1131
+ cursor: pointer;
1132
+
1133
+ &:before {
1134
+ content: "";
1135
+ background-color: $baseColor;
1136
+ width: 4px;
1137
+ height: 20px;
1138
+ border-radius: 2px;
1139
+ display: inline-block;
1140
+ vertical-align: middle;
1141
+ margin-right: 18px;
1142
+ }
1143
+
1144
+ i {
1145
+ font-size: 14px;
1146
+ margin-right: 12px;
1147
+ vertical-align: middle;
1148
+ }
1149
+
1150
+ > span {
1151
+ vertical-align: middle;
1152
+ height: 22px;
1153
+ line-height: 22px;
1154
+ display: inline-block;
1155
+
1156
+ b {
1157
+ color: #fff;
1158
+ margin: 0 4px;
1159
+ font-size: 16px;
1160
+ vertical-align: middle;
1161
+ background: #ff5615;
1162
+ border-radius: 50%;
1163
+ display: inline-block;
1164
+ padding: 4px;
1165
+ font-weight: 200;
1166
+ line-height: 1;
1167
+ }
1168
+ }
1169
+ }
1170
+
1171
+ .el-button {
1172
+ position: absolute;
1173
+ right: 46px;
1174
+ padding: 0;
1175
+ height: 22px;
1176
+ line-height: 22px;
1177
+ min-width: 22px;
1178
+ text-align: center;
1179
+ border-radius: 2px;
1180
+ top: 50%;
1181
+ margin-top: -11px;
1182
+
1183
+ i {
1184
+ font-size: 15px;
1185
+ }
1186
+
1187
+ &:hover {
1188
+ background-color: $baseColor;
1189
+ color: #fff;
1190
+ }
1191
+
1192
+ &.more {
1193
+ right: 12px;
1194
+ background: #f7f7f7;
1195
+
1196
+ &:hover {
1197
+ color: $baseColor;
1198
+ }
1199
+ }
1200
+ }
1201
+
1202
+ ::v-deep .el-card.is-always-shadow {
1203
+ box-shadow: 0 2px 2px 0 rgb(0 0 0 / 6%);
1204
+ }
1205
+ }
1206
+ </style>