cloud-web-corejs 1.1.0-dev.24 → 1.1.0-dev.26

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.
@@ -1,1570 +0,0 @@
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" v-show="isServiceProvider">
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-tooltip
127
- class="item"
128
- effect="dark"
129
- :content="$t1('刷新')"
130
- placement="top"
131
- >
132
- <el-button type="text" @click="getOrderCount(true)" class="more">
133
- <i class="el-icon-refresh"></i>
134
- </el-button>
135
- </el-tooltip>
136
- </div>
137
- <div class="shortcut-box">
138
- <div
139
- class="item"
140
- v-for="item in shortcutItems"
141
- :key="item.key"
142
- @click="openShortcut(item)"
143
- >
144
- <span class="name">{{ item.name }}</span>
145
- <span class="count">({{ item.count }})</span>
146
- </div>
147
- </div>
148
- </el-card>
149
- </el-col>
150
- <el-col :span="14" style="padding-left: 6px">
151
- <el-card class="box-card">
152
- <div slot="header" class="clearfix">
153
- <span style="float: left">
154
- <i class="el-icon-message ico"></i>
155
- {{ $t1("待处理消息") }}
156
- </span>
157
- <el-tooltip
158
- class="item"
159
- effect="dark"
160
- :content="$t1('刷新')"
161
- placement="top"
162
- >
163
- <el-button
164
- type="text"
165
- @click="getOrderMessage(true)"
166
- class="more"
167
- style="right: 72px"
168
- >
169
- <i class="el-icon-refresh"></i>
170
- </el-button>
171
- </el-tooltip>
172
- <el-button type="text" @click="openOrderMessageList()"
173
- ><span class="more">MORE+</span></el-button
174
- >
175
- </div>
176
- <div class="pending-msg">
177
- <vxe-grid
178
- :data="pendingMessageRows"
179
- ref="table-pending-msg"
180
- v-bind="pendingMsgOption"
181
- @resizable-change="$vxeTableUtil.onColumnWitchChange"
182
- @custom="$vxeTableUtil.customHandle"
183
- ></vxe-grid>
184
- </div>
185
- </el-card>
186
- </el-col>
187
- </el-row>
188
- <slot></slot>
189
- <systemNoticeInfoDialog
190
- v-if="showSystemNoticeInfoDialog"
191
- :visiable.sync="showSystemNoticeInfoDialog"
192
- :param="csnRow"
193
- :appendToTop="true"
194
- ></systemNoticeInfoDialog>
195
-
196
- <wfContentDialog
197
- v-if="showWfDialog"
198
- :visible.sync="showWfDialog"
199
- @close="wfClose"
200
- :option.sync="wfContentOption"
201
- ></wfContentDialog>
202
-
203
- <notifyMessageDialog ref="notifyMessageDialog"></notifyMessageDialog>
204
-
205
- <notifyMessageInfoDialog
206
- v-if="showNoticeDialog"
207
- :visiable.sync="showNoticeDialog"
208
- :dataId.sync="notifyMessageInfoId"
209
- @readHanlde="notifyMessageReadHanlde"
210
- ></notifyMessageInfoDialog>
211
-
212
- <el-dialog
213
- :title="$t1('处理消息')"
214
- :append-to-body="true"
215
- :modal-append-to-body="true"
216
- :close-on-click-modal="false"
217
- v-if="showDealDialog"
218
- :visible.sync="showDealDialog"
219
- custom-class="el-dialog dialog-style"
220
- width="560px"
221
- :destroy-on-close="true"
222
- v-el-drag-dialog
223
- >
224
- <el-form :model="dealForm" label-width="100px" class="deal-msg-form">
225
- <el-form-item :label="$t1('标题')">
226
- <span>{{ dealRow.title }}</span>
227
- </el-form-item>
228
- <el-form-item :label="$t1('业务单据号')">
229
- <span>{{ dealRow.bill_order_no }}</span>
230
- </el-form-item>
231
- <el-form-item :label="$t1('消息内容')">
232
- <div class="deal-msg-content">{{ dealRow.content }}</div>
233
- </el-form-item>
234
- <el-form-item :label="$t1('处理备注')">
235
- <el-input
236
- type="textarea"
237
- v-model="dealForm.deal_remark"
238
- :rows="4"
239
- :placeholder="$t1('请输入处理备注')"
240
- maxlength="500"
241
- show-word-limit
242
- />
243
- </el-form-item>
244
- </el-form>
245
- <span slot="footer" class="dialog-footer">
246
- <el-button @click="showDealDialog = false">{{ $t1("取消") }}</el-button>
247
- <el-button
248
- type="primary"
249
- :loading="dealSubmitting"
250
- @click="submitDealMessage"
251
- >{{ $t1("确定") }}</el-button
252
- >
253
- </span>
254
- </el-dialog>
255
-
256
- <el-dialog
257
- :title="$t1('选择分组')"
258
- :append-to-body="true"
259
- :modal-append-to-body="true"
260
- :close-on-click-modal="false"
261
- v-if="showGroupDialog"
262
- :visible.sync="showGroupDialog"
263
- :modal="false"
264
- custom-class="el-dialog dialog-style list-dialog"
265
- width="355px"
266
- :destroy-on-close="true"
267
- >
268
- <div class="cont group-list">
269
- <div
270
- class="item"
271
- v-for="(notifyTemplate, index) in notifyTemplates"
272
- :key="index"
273
- @click="openMoreNotifyMessage(notifyTemplate.notifyType)"
274
- >
275
- <i class="iconfont icon-fenzu"></i>
276
- <span class="name">{{ notifyTemplate.ntName }}</span>
277
- <!-- <span class="nums">99+</span>-->
278
- </div>
279
- </div>
280
- </el-dialog>
281
- </div>
282
- </template>
283
-
284
- <script>
285
- import systemNoticeInfoDialog from "@base/views/user/system_notice/infoDialog.vue";
286
- import notifyMessageDialog from "@base/views/user/notify_message/dialog.vue";
287
- import notifyMessageInfoDialog from "@base/views/user/notify_message/infoDialog";
288
-
289
- import { getToken } from "@base/utils/auth";
290
- import wfContentDialog from "@base/views/user/wf/wf_manage/wfContentDialog";
291
- import corejsConfig from "@/corejsConfig";
292
- import { getLogicParamValue } from "@base/api/user";
293
-
294
- export default {
295
- name: "home",
296
- components: {
297
- systemNoticeInfoDialog,
298
- notifyMessageDialog,
299
- notifyMessageInfoDialog,
300
- wfContentDialog,
301
- },
302
- data() {
303
- return {
304
- showNoticeDialog: false,
305
- showGroupDialog: false,
306
- notifyTemplates: [],
307
- userInfo: {},
308
- companyInfo: {},
309
- systemNotices: [],
310
- showSystemNoticeInfoDialog: false,
311
- csnRow: null,
312
- headPhotoUrl: "",
313
- dialogVisible: true,
314
- unDoWfRows: [],
315
- wfOption: {},
316
- showWfDialog: false,
317
- wfContentOption: {},
318
- showWfContent: true,
319
- wfContent: null,
320
- wfDataId: "",
321
- notifyMessages: [],
322
- notifyMessageInfoIndex: null,
323
- notifyMessageInfoId: null,
324
- unreadMessageNum: 0,
325
- activating: true,
326
- wfTimer: null,
327
- homeConfig: corejsConfig.homeConfig || {},
328
- pendingMsgOption: {},
329
- isServiceProvider: false,
330
- roleChecked: false,
331
- showDealDialog: false,
332
- dealSubmitting: false,
333
- dealRow: {},
334
- dealForm: {
335
- deal_remark: "",
336
- },
337
- shortcutItems: [
338
- {
339
- key: "unTakeQty",
340
- name: "待接单",
341
- count: 0,
342
- formCode: "fwm_so_order_list",
343
- query: { quick_type: 1 },
344
- },
345
- {
346
- key: "outTimeBookQty",
347
- name: "超时预约",
348
- count: 0,
349
- formCode: "fwm_so_order_list",
350
- query: { quick_type: 2 },
351
- },
352
- {
353
- key: "unBookQty",
354
- name: "待预约",
355
- count: 0,
356
- formCode: "fwm_so_order_list",
357
- query: { quick_type: 3 },
358
- },
359
- {
360
- key: "unTakeEngineerQty",
361
- name: "待派师傅",
362
- count: 0,
363
- formCode: "fwm_so_order_list",
364
- query: { quick_type: 4 },
365
- },
366
- {
367
- key: "engineerReturnQty",
368
- name: "师傅退单",
369
- count: 0,
370
- formCode: "fwm_so_order_list",
371
- query: { quick_type: 5 },
372
- },
373
- {
374
- key: "unIntallQty",
375
- name: "签收待安装",
376
- count: 0,
377
- formCode: "fwm_so_order_list",
378
- query: { quick_type: 6 },
379
- },
380
- {
381
- key: "unFinishQty",
382
- name: "待完工单",
383
- count: 0,
384
- formCode: "fwm_so_order_list",
385
- query: { quick_type: 7 },
386
- },
387
- {
388
- key: "unCommitFinishQty",
389
- name: "待确认完工",
390
- count: 0,
391
- formCode: "fwm_so_order_list",
392
- query: { quick_type: 8 },
393
- },
394
- {
395
- key: "unComplainQty",
396
- name: "待申诉",
397
- count: 0,
398
- formCode: "fwm_so_order_appeal_list",
399
- query: { query_type: 3 },
400
- },
401
- {
402
- key: "urgeOrComplainQty",
403
- name: "投诉/催单",
404
- count: 0,
405
- formCode: "fwm_so_order_list",
406
- query: { quick_type: 10 },
407
- },
408
- ],
409
- pendingMessageRows: [],
410
- };
411
- },
412
- activated() {
413
- this.activating = true;
414
- if (!this.wfTimer) {
415
- this.initWfTimer();
416
- } else {
417
- this.timerExcFun(true);
418
- }
419
- },
420
- deactivated() {
421
- this.activating = false;
422
- },
423
- beforeDestroy() {
424
- this.clearTimer();
425
- },
426
- created() {
427
- this.getUserInfo();
428
- this.initSystemNotice();
429
- this.initNotifyMessage();
430
- this.initWfParam();
431
- this.initWfTimer();
432
- //初始化流程待办路由
433
- this.initWorkflowManageRoute();
434
- this.initServiceProviderRole();
435
- },
436
- mounted() {
437
- this.initPendingMsgTable();
438
- },
439
- methods: {
440
- initWorkflowManageRoute() {
441
- //初始化流程待办路由
442
- getLogicParamValue({
443
- data: { paramCode: "workflowManageRoute" },
444
- success: (res) => {
445
- let value = res?.objx;
446
- this.workflowManageRoute = value || "/basic/wf/wf_manage/list";
447
- },
448
- });
449
- },
450
- toWorkflowManage() {
451
- this.$router.push(this.workflowManageRoute);
452
- },
453
- wfClose() {
454
- this.timerExcFun(true);
455
- },
456
- initWfTimer() {
457
- this.wfTimer = setInterval(() => {
458
- this.timerExcFun(false);
459
- }, 10000);
460
- this.timerExcFun(true);
461
- },
462
- timerExcFun(isLoading) {
463
- if (!this.activating) {
464
- return;
465
- }
466
- this.getWfInfoList(isLoading);
467
- this.getUnreadMessageNum(isLoading);
468
- if (this.isServiceProvider) {
469
- this.getOrderCount(isLoading);
470
- this.getOrderMessage(isLoading);
471
- }
472
- this.$emit("timerHandle");
473
- },
474
- clearTimer() {
475
- clearInterval(this.wfTimer);
476
- this.wfTimer = null;
477
- },
478
- getUserInfo() {
479
- this.$http({
480
- url: USER_PREFIX + "/user/currentUser",
481
- method: "post",
482
- success: (res) => {
483
- let userInfo = res.objx;
484
- this.headPhotoUrl = userInfo.headPhotoUrl
485
- ? userInfo.headPhotoUrl
486
- : require("@/resources/images/default-header.png").default ||
487
- require("@/resources/images/default-header.png");
488
-
489
- this.userInfo = userInfo;
490
- this.initServiceProviderRole();
491
- },
492
- });
493
- this.$http({
494
- url: USER_PREFIX + "/company_info/getCurrent",
495
- method: `post`,
496
- success: (res) => {
497
- this.companyInfo = res.objx || {};
498
- },
499
- });
500
- },
501
- initSystemNotice() {
502
- this.$http({
503
- url: USER_PREFIX + "/system_notice/listPage",
504
- data: { publish: true, searchCount: false },
505
- method: "post",
506
- success: (res) => {
507
- this.systemNotices =
508
- res.objx && res.objx.records ? res.objx.records : [];
509
- },
510
- });
511
- },
512
- openSystemNoticeDialog(row) {
513
- this.csnRow = row || null;
514
- this.showSystemNoticeInfoDialog = true;
515
- },
516
- initUnDoWfInfo() {
517
- this.$http({
518
- url: AGILEBPM_PREFIX + "/wf_manage/listPage",
519
- data: { type: 0, searchCount: false },
520
- method: "post",
521
- success: (res) => {
522
- this.unDoWfRows = res.objx.records || [];
523
- },
524
- });
525
- },
526
- initWfTableList() {
527
- let that = this;
528
- let paramColumns = this.wfParamDTOs.map((item) => {
529
- return {
530
- title: this.$t1(item.paramName),
531
- field: item.paramKey,
532
- width: 150,
533
- };
534
- });
535
- var statuses = {
536
- running: this.$t1("审核中"),
537
- back: this.$t1("已驳回"),
538
- end: this.$t1("已完成"),
539
- };
540
- let tableOption = {
541
- vue: this,
542
- tableRef: "table-wf",
543
- tableName: "home-table-wf",
544
- config: {
545
- height: "auto",
546
- },
547
- columns: [
548
- { type: "checkbox", width: 48, resizable: false, fixed: "left" },
549
- {
550
- title: this.$t1("单据类型"),
551
- field: "objTypeName",
552
- width: 150,
553
- fixed: "left",
554
- },
555
- {
556
- title: this.$t1("流程主题"),
557
- field: "name",
558
- width: 150,
559
- },
560
- {
561
- title: this.$t1("启动人"),
562
- field: "starterName",
563
- width: 150,
564
- },
565
- {
566
- title: this.$t1("当前任务"),
567
- field: "taskName",
568
- width: 150,
569
- },
570
- {
571
- title: this.$t1("当前任务用户"),
572
- field: "candidateNames",
573
- width: 150,
574
- },
575
- {
576
- title: this.$t1("启动时间"),
577
- field: "createDate",
578
- width: 150,
579
- },
580
- ...paramColumns,
581
- {
582
- width: 47,
583
- fixed: "right",
584
- title: "",
585
- sortable: false,
586
- slots: {
587
- default: ({ row }) => {
588
- return [
589
- <a
590
- href="javascript:void(0);"
591
- class="a-link"
592
- onclick={() => {
593
- this.openWfDialog(row);
594
- }}
595
- >
596
- <el-tooltip
597
- enterable={false}
598
- effect="dark"
599
- content={this.$t1("查看")}
600
- placement="top"
601
- popper-class="tooltip-skin"
602
- >
603
- <i class="el-icon-edit" />
604
- </el-tooltip>
605
- </a>,
606
- ];
607
- },
608
- },
609
- },
610
- ],
611
- };
612
- this.$vxeTableUtil.initVxeTable(tableOption).then((opts) => {
613
- this.wfOption = opts;
614
- });
615
- },
616
- initPendingMsgTable() {
617
- let tableOption = {
618
- vue: this,
619
- tableRef: "table-pending-msg",
620
- tableName: "home-table-pending-msg",
621
- config: {
622
- height: "auto",
623
- toolbarConfig: {
624
- enabled: false,
625
- },
626
- pagerConfig: {
627
- enabled: false,
628
- },
629
- },
630
- columns: [
631
- {
632
- title: this.$t1("通知时间"),
633
- field: "create_date",
634
- width: 150,
635
- },
636
- {
637
- title: this.$t1("消息类型"),
638
- field: "message_type",
639
- width: 120,
640
- slots: {
641
- default: ({ row }) => {
642
- return [
643
- <span>{this.getMessageTypeName(row.message_type)}</span>,
644
- ];
645
- },
646
- },
647
- },
648
- {
649
- title: this.$t1("业务单据号"),
650
- field: "bill_order_no",
651
- minWidth: 150,
652
- slots: {
653
- default: ({ row }) => {
654
- return [
655
- <a
656
- href="javascript:void(0);"
657
- class="a-link"
658
- onclick={() => {
659
- this.openOrderView(row);
660
- }}
661
- >
662
- {row.bill_order_no}
663
- </a>,
664
- ];
665
- },
666
- },
667
- },
668
- {
669
- title: this.$t1("标题"),
670
- field: "title",
671
- minWidth: 150,
672
- },
673
- {
674
- title: this.$t1("操作"),
675
- width: 70,
676
- fixed: "right",
677
- sortable: false,
678
- slots: {
679
- default: ({ row }) => {
680
- return [
681
- <a
682
- href="javascript:void(0);"
683
- class="a-link"
684
- onclick={() => {
685
- this.handlePendingMessage(row);
686
- }}
687
- >
688
- {this.$t1("处理")}
689
- </a>,
690
- ];
691
- },
692
- },
693
- },
694
- ],
695
- };
696
- this.$vxeTableUtil.initVxeTable(tableOption).then((opts) => {
697
- this.pendingMsgOption = opts;
698
- this.$nextTick(() => {
699
- let grid = this.$refs["table-pending-msg"];
700
- if (grid && grid.recalculate) {
701
- grid.recalculate();
702
- }
703
- });
704
- });
705
- },
706
- handlePendingMessage(row) {
707
- this.dealRow = row || {};
708
- this.dealForm = { deal_remark: "" };
709
- this.dealSubmitting = false;
710
- this.showDealDialog = true;
711
- },
712
- openOrderView(row) {
713
- let dataId = row.order_id;
714
- if (dataId == null) {
715
- this.$message.warning(this.$t1("未找到工单"));
716
- return;
717
- }
718
- this.wfContentOption = {
719
- objId: dataId,
720
- url: "form",
721
- formCode: "fwm_so_order_view",
722
- };
723
- this.showWfDialog = true;
724
- },
725
- submitDealMessage() {
726
- if (!this.dealRow || !this.dealRow.id) {
727
- return;
728
- }
729
- this.dealSubmitting = true;
730
- this.callFormScript({
731
- url: YX_PREFIX + "/bd_api/fwm_so_order_message_list/doDealOrderMessage",
732
- data: {
733
- id: this.dealRow.id,
734
- deal_remark: this.dealForm.deal_remark,
735
- },
736
- isLoading: true,
737
- success: (res) => {
738
- this.dealSubmitting = false;
739
- this.showDealDialog = false;
740
- this.$message.success(res.content || this.$t1("处理成功"));
741
- this.getOrderCount(true);
742
- this.getOrderMessage(true);
743
- },
744
- fail: (res, response) => {
745
- this.dealSubmitting = false;
746
- if (response && response.status == 200) {
747
- this.$errorMsg(res);
748
- }
749
- },
750
- });
751
- },
752
- getMessageTypeName(type) {
753
- let map = {
754
- 1: this.$t1("工单"),
755
- 2: this.$t1("备件申请"),
756
- 3: this.$t1("结算"),
757
- 4: this.$t1("考核"),
758
- };
759
- return map[type] || type || "";
760
- },
761
- initServiceProviderRole() {
762
- if (this.roleChecked) {
763
- return;
764
- }
765
- let userId = this.$store.getters.userId || this.userInfo.id;
766
- if (!userId) {
767
- return;
768
- }
769
- this.roleChecked = true;
770
- this.$http({
771
- url: USER_PREFIX + "/user/getUserRole",
772
- method: "post",
773
- data: { id: userId },
774
- failMsg: false,
775
- errorMsg: false,
776
- success: (res) => {
777
- let rows = res.objx || [];
778
- let codes = rows.map((row) => row.roleCode);
779
- this.isServiceProvider =
780
- codes.includes("yjfws") || codes.includes("ejfws");
781
- if (this.isServiceProvider) {
782
- this.getOrderCount(true);
783
- this.getOrderMessage(true);
784
- this.$nextTick(() => {
785
- let grid = this.$refs["table-pending-msg"];
786
- if (grid && grid.recalculate) {
787
- grid.recalculate();
788
- }
789
- });
790
- }
791
- },
792
- fail: () => {
793
- this.roleChecked = false;
794
- },
795
- });
796
- },
797
- callFormScript(opts) {
798
- let isLoading = opts.isLoading ?? true;
799
- return this.$http({
800
- url: opts.url,
801
- method: "post",
802
- data: opts.data || {},
803
- isLoading,
804
- modal: isLoading || false,
805
- success: opts.success,
806
- failMsg: false,
807
- errorMsg: false,
808
- fail:
809
- opts.fail ||
810
- ((res, response) => {
811
- if (response && response.status == 200) {
812
- this.$errorMsg(res);
813
- }
814
- }),
815
- });
816
- },
817
- getOrderCount(isLoading) {
818
- if (!this.isServiceProvider || !this.activating) {
819
- return;
820
- }
821
- this.callFormScript({
822
- url: YX_PREFIX + "/bd_api/intf/getOrderCount",
823
- isLoading,
824
- success: (res) => {
825
- let objx = res.objx || {};
826
- this.shortcutItems.forEach((item) => {
827
- item.count = objx[item.key] != null ? objx[item.key] : 0;
828
- });
829
- },
830
- });
831
- },
832
- getOrderMessage(isLoading) {
833
- if (!this.isServiceProvider || !this.activating) {
834
- return;
835
- }
836
- this.callFormScript({
837
- url: YX_PREFIX + "/bd_api/intf/getOrderMessage",
838
- isLoading,
839
- success: (res) => {
840
- let objx = res.objx;
841
- this.pendingMessageRows = Array.isArray(objx)
842
- ? objx
843
- : (objx && objx.records) || [];
844
- },
845
- });
846
- },
847
- openShortcut(item) {
848
- if (!item || !item.formCode) {
849
- return;
850
- }
851
- this.openFormList(item.formCode, item.query);
852
- },
853
- openOrderMessageList() {
854
- this.openFormList("fwm_so_order_message_list");
855
- },
856
- findFormPath(formCode) {
857
- if (!formCode) {
858
- return null;
859
- }
860
- let match = (path) => {
861
- if (!path) {
862
- return false;
863
- }
864
- let p = String(path).split("?")[0];
865
- return p === formCode || p.endsWith("/" + formCode);
866
- };
867
- let walk = (routes) => {
868
- for (let r of routes || []) {
869
- if (match(r.path) || match(r.url)) {
870
- let candidates = [r.path, r.url].filter(Boolean);
871
- return (
872
- candidates.find((p) => String(p).startsWith("/")) || candidates[0]
873
- );
874
- }
875
- let found = walk(r.children);
876
- if (found) {
877
- return found;
878
- }
879
- }
880
- return null;
881
- };
882
- return (
883
- walk(this.$store.getters.permission_routes) ||
884
- walk(this.$store.getters.add_routes) ||
885
- walk(this.$store.getters.sidebarRouters)
886
- );
887
- },
888
- openFormList(formCode, query) {
889
- let path = this.findFormPath(formCode);
890
- if (!path) {
891
- this.$message.warning(this.$t1("未找到对应菜单"));
892
- return;
893
- }
894
- path = String(path).split("?")[0];
895
- let q = query || {};
896
- let queryData = { ...q };
897
- if (
898
- formCode !== "fwm_so_order_list" &&
899
- formCode !== "fwm_so_order_appeal_list"
900
- ) {
901
- queryData.param = JSON.stringify(q);
902
- }
903
- let view = {
904
- path,
905
- query: queryData,
906
- };
907
- this.$store.dispatch("tagsView/delCachedView", view).then(() => {
908
- this.$openView(view);
909
- });
910
- },
911
- openWfDialog(row) {
912
- this.wfContentOption = {
913
- objId: row.objId,
914
- url: row.url,
915
- objTypeCode: row.objTypeCode,
916
- formCode: row.formCode,
917
- };
918
- this.showWfDialog = true;
919
- },
920
- initNotifyMessage() {
921
- return;
922
- this.$http({
923
- url: USER_PREFIX + "/notify_message/listPage",
924
- data: { searchCount: false },
925
- method: "post",
926
- success: (res) => {
927
- this.notifyMessages =
928
- res.objx && res.objx.records ? res.objx.records : [];
929
- },
930
- });
931
- },
932
- openNotifyMessageDialog(row) {
933
- if (row.jumpContent) {
934
- this.$refs.notifyMessageDialog.open(row, () => {
935
- row.readed = 1;
936
- });
937
- }
938
- },
939
- openMoreNotifyMessage(notifyType) {
940
- let data = { notifyType: notifyType || "" };
941
- let view = {
942
- name: "notify_message:list",
943
- query: data,
944
- };
945
- this.$store.dispatch("tagsView/delCachedView", view).then(() => {
946
- this.$router.replace(view);
947
- });
948
-
949
- if (notifyType) {
950
- this.showGroupDialog = false;
951
- }
952
- },
953
- checkNotifyMessage(row, index) {
954
- this.showNoticeDialog = true;
955
- this.notifyMessageInfoIndex = index;
956
- this.notifyMessageInfoId = row.id;
957
- },
958
- notifyMessageReadHanlde() {
959
- this.notifyMessages[this.notifyMessageInfoIndex].readed = 1;
960
- },
961
- openNotifyTemplateGroupDialog() {
962
- this.$http({
963
- url: USER_PREFIX + `/notify_template/listPage`,
964
- method: `post`,
965
- data: { searchCount: false },
966
- isLoading: true,
967
- // loadingTarget: document.body,
968
- success: (res) => {
969
- this.notifyTemplates =
970
- res.objx && res.objx.records ? res.objx.records : [];
971
- this.showGroupDialog = true;
972
- },
973
- });
974
- },
975
- rourteTo(route) {
976
- if (route.type == 4) {
977
- this.jumpOutLink(route);
978
- } else if (route.type == 3) {
979
- let menuCode = route.menuCode;
980
- let path = "/user/outLink/index/" + menuCode;
981
- this.$openView({ path: path, query: { url: route.url } }, route);
982
- } else {
983
- let path = this.getPath(route);
984
- if (!path) return;
985
- this.$openView(path, route);
986
- }
987
- },
988
- getPath(route3) {
989
- let item = null;
990
- let path = null;
991
- if (route3.type == 0) {
992
- //普通菜单
993
- if (route3.url) {
994
- path = route3.route || route3.url;
995
- let str = "/report/vform/render/";
996
- if (path.indexOf(str) == 0) {
997
- } else {
998
- let pIndex = path.indexOf("?");
999
- if (pIndex > 0) {
1000
- path = path.substring(0, pIndex);
1001
- }
1002
- }
1003
- }
1004
- } else if (route3.type == 5) {
1005
- //动态表单
1006
- let url = route3.route || route3.url;
1007
- path = url;
1008
- }
1009
- if (path && path.startsWith("@")) {
1010
- path = null;
1011
- }
1012
- return path;
1013
- },
1014
- jumpOutLink(route) {
1015
- let path = route.url;
1016
- if (route.type == 4 && path) {
1017
- if (path.indexOf("token={token}") >= 0) {
1018
- path = path.replace("token={token}", "token=" + getToken());
1019
- }
1020
- window.open(path);
1021
- }
1022
- },
1023
- initWfParam() {
1024
- return this.$http({
1025
- url: USER_PREFIX + "/wf_param/list",
1026
- method: `post`,
1027
- data: {},
1028
- isLoading: true,
1029
- // loadingTarget: document.body,
1030
- modalStrictly: true,
1031
- success: (res) => {
1032
- this.wfParamDTOs = res.objx || [];
1033
- this.initWfTableList();
1034
- },
1035
- });
1036
- },
1037
- getWfInfoList(isLoading) {
1038
- if (!this.activating) {
1039
- return;
1040
- }
1041
- this.$http({
1042
- url: USER_PREFIX + "/wf_info/listPage",
1043
- data: { type: 0, size: 20, searchCount: false },
1044
- method: "post",
1045
- isLoading: isLoading,
1046
- modal: isLoading || false,
1047
- // loadingTarget: document.body,
1048
- success: (res) => {
1049
- this.unDoWfRows =
1050
- res.objx && res.objx.records ? res.objx.records : [];
1051
- },
1052
- failMsg: false,
1053
- errorMsg: false,
1054
- fail: (res, response) => {
1055
- if (response && response.status == 200) {
1056
- this.$errorMsg(res);
1057
- }
1058
- },
1059
- });
1060
- },
1061
- getUnreadMessageNum(isLoading) {
1062
- if (!this.activating) {
1063
- return;
1064
- }
1065
- return this.$http({
1066
- url: USER_PREFIX + "/notify_message/countMessage",
1067
- method: `post`,
1068
- data: {},
1069
- isLoading: isLoading,
1070
- modal: isLoading || false,
1071
- // loadingTarget: document.body,
1072
- success: (res) => {
1073
- this.unreadMessageNum = res.objx || 0;
1074
- },
1075
- failMsg: false,
1076
- errorMsg: false,
1077
- fail: (res, response) => {
1078
- if (response && response.status == 200) {
1079
- this.$errorMsg(res);
1080
- }
1081
- },
1082
- });
1083
- },
1084
- wfhandleCallback(flag) {
1085
- if ([1, 2, 3].includes(flag)) {
1086
- this.showWfDialog = false;
1087
- this.wfClose();
1088
- }
1089
- },
1090
- },
1091
- };
1092
- </script>
1093
- <style lang="scss" scoped>
1094
- @import "~@/styles/variables.scss";
1095
-
1096
- body #app .index-home {
1097
- margin: 3px 10px;
1098
- height: calc(100vh - 44px);
1099
- overflow: hidden;
1100
- display: flex;
1101
- flex-direction: column;
1102
-
1103
- #containt {
1104
- margin: 0;
1105
- background: none;
1106
- height: auto;
1107
- box-shadow: none;
1108
- }
1109
-
1110
- .i-user-info {
1111
- background: url(~@/resources/images/home-img.png) #2a6494 no-repeat 116%
1112
- 45px;
1113
- margin-bottom: 6px;
1114
- background-size: 181px;
1115
- padding: 14px 38px 11px 16px;
1116
- border-radius: 4px 4px;
1117
- color: #fff;
1118
- font-size: 12px;
1119
- margin-top: 3px;
1120
- height: 95px;
1121
- overflow: hidden;
1122
-
1123
- .name {
1124
- opacity: 1;
1125
- font-weight: 600;
1126
- margin: 9px 0 14px;
1127
- font-size: 14px;
1128
- }
1129
-
1130
- .img {
1131
- width: 60px;
1132
- height: 60px;
1133
- float: left;
1134
- border-radius: 50%;
1135
- border: solid 4px rgba(255, 255, 255, 0.28);
1136
- margin-right: 10px;
1137
- }
1138
- }
1139
-
1140
- .home-notice-list {
1141
- height: 182px;
1142
- margin: 0 -12px;
1143
-
1144
- .item {
1145
- padding: 6px 12px;
1146
- font-size: 12px;
1147
- cursor: pointer;
1148
- overflow: hidden;
1149
- text-overflow: ellipsis;
1150
- white-space: nowrap;
1151
-
1152
- .time {
1153
- color: #b9b9b9;
1154
- font-size: 12px;
1155
- right: 12px;
1156
- }
1157
-
1158
- &:hover {
1159
- color: $baseColor;
1160
- background-color: transparentize($baseColor, 0.97);
1161
-
1162
- .time {
1163
- color: $baseColor;
1164
- }
1165
- }
1166
-
1167
- &.no-read:before {
1168
- content: "";
1169
- width: 6px;
1170
- height: 6px;
1171
- background-color: $red;
1172
- border-radius: 50%;
1173
- vertical-align: middle;
1174
- display: inline-block;
1175
- margin-bottom: 1px;
1176
- }
1177
- }
1178
-
1179
- &.to-reed {
1180
- height: 300px;
1181
- overflow: auto;
1182
- margin: -8px -12px;
1183
-
1184
- .item {
1185
- white-space: initial;
1186
- padding: 8px 22px 2px;
1187
- position: relative;
1188
-
1189
- &:after {
1190
- content: "";
1191
- position: absolute;
1192
- left: 22px;
1193
- right: 22px;
1194
- border-top: dashed 1px #eee;
1195
- height: 1px;
1196
- bottom: 0;
1197
- }
1198
-
1199
- &.noread {
1200
- &:before {
1201
- content: "";
1202
- width: 6px;
1203
- height: 6px;
1204
- background-color: $red;
1205
- border-radius: 50%;
1206
- margin-right: 5px;
1207
- display: inline-block;
1208
- position: absolute;
1209
- left: 10px;
1210
- top: 16px;
1211
- }
1212
- }
1213
-
1214
- .el-tag {
1215
- zoom: 0.95;
1216
- padding: 0 5px;
1217
- height: 24px;
1218
- line-height: 24px;
1219
- }
1220
-
1221
- // .noread{
1222
- // position: absolute;right:0;top:0;
1223
- // span{transform: rotate(47deg);
1224
- // -ms-transform: rotate(47deg);
1225
- // -moz-transform: rotate(47deg);
1226
- // -webkit-transform: rotate(47deg);
1227
- // -o-transform: rotate(47deg);
1228
- // z-index: 3;
1229
- // color: #FFF;
1230
- // position: absolute;
1231
- // right: 1px;
1232
- // top: 2px;}
1233
- // &:after{
1234
- // content: "\e618";
1235
- // font-size: 62px;
1236
- // font-family: "iconfont";
1237
- // color:$red
1238
- // }
1239
- // }
1240
- .time {
1241
- position: relative;
1242
- right: 0;
1243
- margin-left: 12px;
1244
- }
1245
-
1246
- .name {
1247
- overflow: hidden;
1248
- text-overflow: ellipsis;
1249
- white-space: nowrap;
1250
- margin-top: 3px;
1251
- display: block;
1252
- margin-bottom: 4px;
1253
- }
1254
-
1255
- &:hover .name {
1256
- color: $baseColor;
1257
- }
1258
-
1259
- &:first-child:before {
1260
- border-top: none;
1261
- }
1262
-
1263
- .btns {
1264
- text-align: right;
1265
-
1266
- .el-link {
1267
- font-size: 12px;
1268
- display: inline-block;
1269
- margin-left: 14px;
1270
-
1271
- i {
1272
- font-size: 12px;
1273
- margin-right: 3px;
1274
- }
1275
- }
1276
- }
1277
- }
1278
- }
1279
- }
1280
-
1281
- .home-top {
1282
- flex: none;
1283
- }
1284
-
1285
- .home-bottom {
1286
- flex: 1;
1287
- min-height: 0;
1288
- display: flex;
1289
-
1290
- > .el-col {
1291
- height: 100%;
1292
- display: flex;
1293
- flex-direction: column;
1294
- }
1295
-
1296
- .box-card {
1297
- flex: 1;
1298
- min-height: 0;
1299
- display: flex;
1300
- flex-direction: column;
1301
-
1302
- &.el-card.is-always-shadow {
1303
- margin-top: 0 !important;
1304
- }
1305
- }
1306
-
1307
- ::v-deep .el-card__body {
1308
- flex: 1;
1309
- min-height: 0;
1310
- display: flex;
1311
- flex-direction: column;
1312
- }
1313
- }
1314
-
1315
- .shortcut-box {
1316
- flex: 1;
1317
- min-height: 0;
1318
- display: grid;
1319
- grid-template-columns: repeat(5, 1fr);
1320
- grid-template-rows: repeat(2, 1fr);
1321
- gap: 8px;
1322
-
1323
- .item {
1324
- border: solid 1px #e2e2e2;
1325
- border-radius: 2px;
1326
- text-align: center;
1327
- padding: 12px 4px 10px;
1328
- cursor: pointer;
1329
- background: #fff;
1330
- display: flex;
1331
- flex-direction: column;
1332
- justify-content: center;
1333
-
1334
- .name {
1335
- display: block;
1336
- color: #424242;
1337
- font-size: 12px;
1338
- line-height: 20px;
1339
- }
1340
-
1341
- .count {
1342
- display: block;
1343
- color: #d62b31;
1344
- font-size: 12px;
1345
- line-height: 20px;
1346
- }
1347
-
1348
- &:hover {
1349
- border-color: $baseColor;
1350
- background-color: transparentize($baseColor, 0.95);
1351
-
1352
- .name {
1353
- color: $baseColor;
1354
- }
1355
- }
1356
- }
1357
- }
1358
-
1359
- .need-to {
1360
- height: 332px;
1361
- }
1362
-
1363
- .pending-msg {
1364
- flex: 1;
1365
- min-height: 0;
1366
- height: 100%;
1367
- }
1368
-
1369
- .table-box {
1370
- width: 100%;
1371
- font-size: 12px;
1372
-
1373
- th {
1374
- line-height: 32px;
1375
- background: #f7f7f7;
1376
- font-weight: 400;
1377
- color: #808080;
1378
- padding: 0 6px;
1379
- }
1380
-
1381
- td {
1382
- text-align: center;
1383
- line-height: 34px;
1384
- color: #424242;
1385
- border-bottom: solid 1px #eee;
1386
- padding: 0 6px;
1387
- }
1388
-
1389
- tr:last-child td {
1390
- border-bottom: none;
1391
- }
1392
- }
1393
- }
1394
-
1395
- .deal-msg-form {
1396
- padding: 8px 12px 0;
1397
-
1398
- .deal-msg-content {
1399
- max-height: 160px;
1400
- overflow: auto;
1401
- line-height: 20px;
1402
- white-space: pre-wrap;
1403
- word-break: break-all;
1404
- }
1405
- }
1406
-
1407
- .box-card .more {
1408
- background-color: #f7f7f7;
1409
- }
1410
-
1411
- .group-list {
1412
- padding: 18px 18px 6px 32px !important;
1413
- height: 400px;
1414
- overflow: auto;
1415
-
1416
- .item {
1417
- position: relative;
1418
- height: 36px;
1419
- border: solid 1px #eee;
1420
- line-height: 34px;
1421
- border-radius: 2px;
1422
- padding: 0 42px 0 14px;
1423
- margin-bottom: 10px;
1424
- cursor: pointer;
1425
-
1426
- &::before {
1427
- content: "";
1428
- width: 8px;
1429
- height: 8px;
1430
- border: solid 1px #eee;
1431
- border-radius: 50%;
1432
- display: inline-block;
1433
- position: absolute;
1434
- left: -16px;
1435
- top: 13px;
1436
- }
1437
-
1438
- &.checked {
1439
- &:before {
1440
- content: "";
1441
- background-color: $baseColor;
1442
- border-color: $baseColor;
1443
- }
1444
-
1445
- background-color: transparentize($baseColor, 0.9);
1446
- color: $baseColor;
1447
- border-color: $baseColor;
1448
- }
1449
-
1450
- i {
1451
- font-size: 12px;
1452
- vertical-align: middle;
1453
- }
1454
-
1455
- .name {
1456
- font-size: 12px;
1457
- margin-left: 8px;
1458
- vertical-align: middle;
1459
- }
1460
-
1461
- .nums {
1462
- width: 22px;
1463
- height: 22px;
1464
- border-radius: 50%;
1465
- display: inline-block;
1466
- position: absolute;
1467
- right: 5px;
1468
- top: 6px;
1469
- color: #fff;
1470
- font-size: 12px;
1471
- background-color: $red;
1472
- line-height: 22px;
1473
- text-align: center;
1474
- }
1475
- }
1476
- }
1477
-
1478
- .notice-box {
1479
- background-color: #2a649429;
1480
- border-radius: 0 0 4px 4px;
1481
- padding: 9px 12px;
1482
- margin-bottom: 5px;
1483
- margin-top: -6px;
1484
- position: relative;
1485
- z-index: 2;
1486
- font-size: 13px;
1487
- color: #212121;
1488
- overflow: hidden;
1489
-
1490
- .txt {
1491
- line-height: 28px;
1492
- font-size: 12px;
1493
- position: relative;
1494
- display: inline-block;
1495
- cursor: pointer;
1496
-
1497
- &:before {
1498
- content: "";
1499
- background-color: $baseColor;
1500
- width: 4px;
1501
- height: 20px;
1502
- border-radius: 2px;
1503
- display: inline-block;
1504
- vertical-align: middle;
1505
- margin-right: 18px;
1506
- }
1507
-
1508
- i {
1509
- font-size: 14px;
1510
- margin-right: 12px;
1511
- vertical-align: middle;
1512
- }
1513
-
1514
- > span {
1515
- vertical-align: middle;
1516
- height: 22px;
1517
- line-height: 22px;
1518
- display: inline-block;
1519
-
1520
- b {
1521
- color: #fff;
1522
- margin: 0 4px;
1523
- font-size: 16px;
1524
- vertical-align: middle;
1525
- background: #ff5615;
1526
- border-radius: 50%;
1527
- display: inline-block;
1528
- padding: 4px;
1529
- font-weight: 200;
1530
- line-height: 1;
1531
- }
1532
- }
1533
- }
1534
-
1535
- .el-button {
1536
- position: absolute;
1537
- right: 46px;
1538
- padding: 0;
1539
- height: 22px;
1540
- line-height: 22px;
1541
- min-width: 22px;
1542
- text-align: center;
1543
- border-radius: 2px;
1544
- top: 50%;
1545
- margin-top: -11px;
1546
-
1547
- i {
1548
- font-size: 15px;
1549
- }
1550
-
1551
- &:hover {
1552
- background-color: $baseColor;
1553
- color: #fff;
1554
- }
1555
-
1556
- &.more {
1557
- right: 12px;
1558
- background: #f7f7f7;
1559
-
1560
- &:hover {
1561
- color: $baseColor;
1562
- }
1563
- }
1564
- }
1565
-
1566
- ::v-deep .el-card.is-always-shadow {
1567
- box-shadow: 0 2px 2px 0 rgb(0 0 0 / 6%);
1568
- }
1569
- }
1570
- </style>