cloud-web-corejs 1.1.0-dev.10 → 1.1.0-dev.11

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.
Files changed (22) hide show
  1. package/package.json +1 -1
  2. package/src/components/mobile/wf/content.vue +1 -1
  3. package/src/components/mobile/wf/selectUserDialog.vue +8 -12
  4. package/src/components/xform/form-render/container-item/detail-h5-item.vue +1 -1
  5. package/src/components/xform/styles/h5.scss +483 -459
  6. package/src/components/xform/docs/2026-08 xform H5 P0 /345/256/236/347/216/260/350/247/204/346/240/274.md" +0 -528
  7. package/src/components/xform/docs/2026-08 xform H5 P1 /345/256/236/347/216/260/350/247/204/346/240/274.md" +0 -412
  8. package/src/components/xform/docs/2026-08 xform H5 P2 /345/256/236/347/216/260/350/247/204/346/240/274.md" +0 -287
  9. package/src/components/xform/docs/2026-08 xform /347/247/273/345/212/250/347/253/257/345/270/203/345/261/200/345/257/271/351/275/220 bill_setting /346/226/271/346/241/210.md" +0 -400
  10. package/src/views/demo/bizTab/bill/billConfig.js +0 -41
  11. package/src/views/demo/bizTab/bill/detail.vue +0 -436
  12. package/src/views/demo/bizTab/bill/list.vue +0 -288
  13. package/src/views/demo/bizTab/bill/productDialog.vue +0 -176
  14. package/src/views/demo/bizTab/simple/billApi.js +0 -123
  15. package/src/views/demo/bizTab/simple/detail.vue +0 -407
  16. package/src/views/demo/bizTab/simple/list.vue +0 -217
  17. package/src/views/demo/bizTab/standalone/index.vue +0 -121
  18. package/src/views/demo/bizTab/wf/billConfig.js +0 -44
  19. package/src/views/demo/bizTab/wf/detail.vue +0 -661
  20. package/src/views/demo/bizTab/wf/list.vue +0 -242
  21. package/src/views/user/home/wjl/content.vue +0 -1569
  22. package/src/views/user/outLink/cc_form_view.vue +0 -188
@@ -1,1569 +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 || require("@/resources/images/default-header.png"));
487
-
488
- this.userInfo = userInfo;
489
- this.initServiceProviderRole();
490
- },
491
- });
492
- this.$http({
493
- url: USER_PREFIX + "/company_info/getCurrent",
494
- method: `post`,
495
- success: (res) => {
496
- this.companyInfo = res.objx || {};
497
- },
498
- });
499
- },
500
- initSystemNotice() {
501
- this.$http({
502
- url: USER_PREFIX + "/system_notice/listPage",
503
- data: { publish: true, searchCount: false },
504
- method: "post",
505
- success: (res) => {
506
- this.systemNotices =
507
- res.objx && res.objx.records ? res.objx.records : [];
508
- },
509
- });
510
- },
511
- openSystemNoticeDialog(row) {
512
- this.csnRow = row || null;
513
- this.showSystemNoticeInfoDialog = true;
514
- },
515
- initUnDoWfInfo() {
516
- this.$http({
517
- url: AGILEBPM_PREFIX + "/wf_manage/listPage",
518
- data: { type: 0, searchCount: false },
519
- method: "post",
520
- success: (res) => {
521
- this.unDoWfRows = res.objx.records || [];
522
- },
523
- });
524
- },
525
- initWfTableList() {
526
- let that = this;
527
- let paramColumns = this.wfParamDTOs.map((item) => {
528
- return {
529
- title: this.$t1(item.paramName),
530
- field: item.paramKey,
531
- width: 150,
532
- };
533
- });
534
- var statuses = {
535
- running: this.$t1("审核中"),
536
- back: this.$t1("已驳回"),
537
- end: this.$t1("已完成"),
538
- };
539
- let tableOption = {
540
- vue: this,
541
- tableRef: "table-wf",
542
- tableName: "home-table-wf",
543
- config: {
544
- height: "auto",
545
- },
546
- columns: [
547
- { type: "checkbox", width: 48, resizable: false, fixed: "left" },
548
- {
549
- title: this.$t1("单据类型"),
550
- field: "objTypeName",
551
- width: 150,
552
- fixed: "left",
553
- },
554
- {
555
- title: this.$t1("流程主题"),
556
- field: "name",
557
- width: 150,
558
- },
559
- {
560
- title: this.$t1("启动人"),
561
- field: "starterName",
562
- width: 150,
563
- },
564
- {
565
- title: this.$t1("当前任务"),
566
- field: "taskName",
567
- width: 150,
568
- },
569
- {
570
- title: this.$t1("当前任务用户"),
571
- field: "candidateNames",
572
- width: 150,
573
- },
574
- {
575
- title: this.$t1("启动时间"),
576
- field: "createDate",
577
- width: 150,
578
- },
579
- ...paramColumns,
580
- {
581
- width: 47,
582
- fixed: "right",
583
- title: "",
584
- sortable: false,
585
- slots: {
586
- default: ({ row }) => {
587
- return [
588
- <a
589
- href="javascript:void(0);"
590
- class="a-link"
591
- onclick={() => {
592
- this.openWfDialog(row);
593
- }}
594
- >
595
- <el-tooltip
596
- enterable={false}
597
- effect="dark"
598
- content={this.$t1("查看")}
599
- placement="top"
600
- popper-class="tooltip-skin"
601
- >
602
- <i class="el-icon-edit" />
603
- </el-tooltip>
604
- </a>,
605
- ];
606
- },
607
- },
608
- },
609
- ],
610
- };
611
- this.$vxeTableUtil.initVxeTable(tableOption).then((opts) => {
612
- this.wfOption = opts;
613
- });
614
- },
615
- initPendingMsgTable() {
616
- let tableOption = {
617
- vue: this,
618
- tableRef: "table-pending-msg",
619
- tableName: "home-table-pending-msg",
620
- config: {
621
- height: "auto",
622
- toolbarConfig: {
623
- enabled: false,
624
- },
625
- pagerConfig: {
626
- enabled: false,
627
- },
628
- },
629
- columns: [
630
- {
631
- title: this.$t1("通知时间"),
632
- field: "create_date",
633
- width: 150,
634
- },
635
- {
636
- title: this.$t1("消息类型"),
637
- field: "message_type",
638
- width: 120,
639
- slots: {
640
- default: ({ row }) => {
641
- return [
642
- <span>{this.getMessageTypeName(row.message_type)}</span>,
643
- ];
644
- },
645
- },
646
- },
647
- {
648
- title: this.$t1("业务单据号"),
649
- field: "bill_order_no",
650
- minWidth: 150,
651
- slots: {
652
- default: ({ row }) => {
653
- return [
654
- <a
655
- href="javascript:void(0);"
656
- class="a-link"
657
- onclick={() => {
658
- this.openOrderView(row);
659
- }}
660
- >
661
- {row.bill_order_no}
662
- </a>,
663
- ];
664
- },
665
- },
666
- },
667
- {
668
- title: this.$t1("标题"),
669
- field: "title",
670
- minWidth: 150,
671
- },
672
- {
673
- title: this.$t1("操作"),
674
- width: 70,
675
- fixed: "right",
676
- sortable: false,
677
- slots: {
678
- default: ({ row }) => {
679
- return [
680
- <a
681
- href="javascript:void(0);"
682
- class="a-link"
683
- onclick={() => {
684
- this.handlePendingMessage(row);
685
- }}
686
- >
687
- {this.$t1("处理")}
688
- </a>,
689
- ];
690
- },
691
- },
692
- },
693
- ],
694
- };
695
- this.$vxeTableUtil.initVxeTable(tableOption).then((opts) => {
696
- this.pendingMsgOption = opts;
697
- this.$nextTick(() => {
698
- let grid = this.$refs["table-pending-msg"];
699
- if (grid && grid.recalculate) {
700
- grid.recalculate();
701
- }
702
- });
703
- });
704
- },
705
- handlePendingMessage(row) {
706
- this.dealRow = row || {};
707
- this.dealForm = { deal_remark: "" };
708
- this.dealSubmitting = false;
709
- this.showDealDialog = true;
710
- },
711
- openOrderView(row) {
712
- let dataId = row.id;
713
- if (dataId == null) {
714
- this.$message.warning(this.$t1("未找到工单"));
715
- return;
716
- }
717
- this.wfContentOption = {
718
- objId: dataId,
719
- url: "form",
720
- formCode: "fwm_so_order_view",
721
- };
722
- this.showWfDialog = true;
723
- },
724
- submitDealMessage() {
725
- if (!this.dealRow || !this.dealRow.id) {
726
- return;
727
- }
728
- this.dealSubmitting = true;
729
- this.callFormScript({
730
- url: YX_PREFIX + "/bd_api/fwm_so_order_message_list/doDealOrderMessage",
731
- data: {
732
- id: this.dealRow.id,
733
- deal_remark: this.dealForm.deal_remark,
734
- },
735
- isLoading: true,
736
- success: (res) => {
737
- this.dealSubmitting = false;
738
- this.showDealDialog = false;
739
- this.$message.success(res.content || this.$t1("处理成功"));
740
- this.getOrderCount(true);
741
- this.getOrderMessage(true);
742
- },
743
- fail: (res, response) => {
744
- this.dealSubmitting = false;
745
- if (response && response.status == 200) {
746
- this.$errorMsg(res);
747
- }
748
- },
749
- });
750
- },
751
- getMessageTypeName(type) {
752
- let map = {
753
- 1: this.$t1("工单"),
754
- 2: this.$t1("备件申请"),
755
- 3: this.$t1("结算"),
756
- 4: this.$t1("考核"),
757
- };
758
- return map[type] || type || "";
759
- },
760
- initServiceProviderRole() {
761
- if (this.roleChecked) {
762
- return;
763
- }
764
- let userId = this.$store.getters.userId || this.userInfo.id;
765
- if (!userId) {
766
- return;
767
- }
768
- this.roleChecked = true;
769
- this.$http({
770
- url: USER_PREFIX + "/user/getUserRole",
771
- method: "post",
772
- data: { id: userId },
773
- failMsg: false,
774
- errorMsg: false,
775
- success: (res) => {
776
- let rows = res.objx || [];
777
- let codes = rows.map((row) => row.roleCode);
778
- this.isServiceProvider =
779
- codes.includes("yjfws") || codes.includes("ejfws");
780
- if (this.isServiceProvider) {
781
- this.getOrderCount(true);
782
- this.getOrderMessage(true);
783
- this.$nextTick(() => {
784
- let grid = this.$refs["table-pending-msg"];
785
- if (grid && grid.recalculate) {
786
- grid.recalculate();
787
- }
788
- });
789
- }
790
- },
791
- fail: () => {
792
- this.roleChecked = false;
793
- },
794
- });
795
- },
796
- callFormScript(opts) {
797
- let isLoading = opts.isLoading ?? true;
798
- return this.$http({
799
- url: opts.url,
800
- method: "post",
801
- data: opts.data || {},
802
- isLoading,
803
- modal: isLoading || false,
804
- success: opts.success,
805
- failMsg: false,
806
- errorMsg: false,
807
- fail:
808
- opts.fail ||
809
- ((res, response) => {
810
- if (response && response.status == 200) {
811
- this.$errorMsg(res);
812
- }
813
- }),
814
- });
815
- },
816
- getOrderCount(isLoading) {
817
- if (!this.isServiceProvider || !this.activating) {
818
- return;
819
- }
820
- this.callFormScript({
821
- url: YX_PREFIX + "/bd_api/intf/getOrderCount",
822
- isLoading,
823
- success: (res) => {
824
- let objx = res.objx || {};
825
- this.shortcutItems.forEach((item) => {
826
- item.count = objx[item.key] != null ? objx[item.key] : 0;
827
- });
828
- },
829
- });
830
- },
831
- getOrderMessage(isLoading) {
832
- if (!this.isServiceProvider || !this.activating) {
833
- return;
834
- }
835
- this.callFormScript({
836
- url: YX_PREFIX + "/bd_api/intf/getOrderMessage",
837
- isLoading,
838
- success: (res) => {
839
- let objx = res.objx;
840
- this.pendingMessageRows = Array.isArray(objx)
841
- ? objx
842
- : (objx && objx.records) || [];
843
- },
844
- });
845
- },
846
- openShortcut(item) {
847
- if (!item || !item.formCode) {
848
- return;
849
- }
850
- this.openFormList(item.formCode, item.query);
851
- },
852
- openOrderMessageList() {
853
- this.openFormList("fwm_so_order_message_list");
854
- },
855
- findFormPath(formCode) {
856
- if (!formCode) {
857
- return null;
858
- }
859
- let match = (path) => {
860
- if (!path) {
861
- return false;
862
- }
863
- let p = String(path).split("?")[0];
864
- return p === formCode || p.endsWith("/" + formCode);
865
- };
866
- let walk = (routes) => {
867
- for (let r of routes || []) {
868
- if (match(r.path) || match(r.url)) {
869
- let candidates = [r.path, r.url].filter(Boolean);
870
- return (
871
- candidates.find((p) => String(p).startsWith("/")) || candidates[0]
872
- );
873
- }
874
- let found = walk(r.children);
875
- if (found) {
876
- return found;
877
- }
878
- }
879
- return null;
880
- };
881
- return (
882
- walk(this.$store.getters.permission_routes) ||
883
- walk(this.$store.getters.add_routes) ||
884
- walk(this.$store.getters.sidebarRouters)
885
- );
886
- },
887
- openFormList(formCode, query) {
888
- let path = this.findFormPath(formCode);
889
- if (!path) {
890
- this.$message.warning(this.$t1("未找到对应菜单"));
891
- return;
892
- }
893
- path = String(path).split("?")[0];
894
- let q = query || {};
895
- let queryData = { ...q };
896
- if (
897
- formCode !== "fwm_so_order_list" &&
898
- formCode !== "fwm_so_order_appeal_list"
899
- ) {
900
- queryData.param = JSON.stringify(q);
901
- }
902
- let view = {
903
- path,
904
- query: queryData,
905
- };
906
- this.$store.dispatch("tagsView/delCachedView", view).then(() => {
907
- this.$openView(view);
908
- });
909
- },
910
- openWfDialog(row) {
911
- this.wfContentOption = {
912
- objId: row.objId,
913
- url: row.url,
914
- objTypeCode: row.objTypeCode,
915
- formCode: row.formCode,
916
- };
917
- this.showWfDialog = true;
918
- },
919
- initNotifyMessage() {
920
- return;
921
- this.$http({
922
- url: USER_PREFIX + "/notify_message/listPage",
923
- data: { searchCount: false },
924
- method: "post",
925
- success: (res) => {
926
- this.notifyMessages =
927
- res.objx && res.objx.records ? res.objx.records : [];
928
- },
929
- });
930
- },
931
- openNotifyMessageDialog(row) {
932
- if (row.jumpContent) {
933
- this.$refs.notifyMessageDialog.open(row, () => {
934
- row.readed = 1;
935
- });
936
- }
937
- },
938
- openMoreNotifyMessage(notifyType) {
939
- let data = { notifyType: notifyType || "" };
940
- let view = {
941
- name: "notify_message:list",
942
- query: data,
943
- };
944
- this.$store.dispatch("tagsView/delCachedView", view).then(() => {
945
- this.$router.replace(view);
946
- });
947
-
948
- if (notifyType) {
949
- this.showGroupDialog = false;
950
- }
951
- },
952
- checkNotifyMessage(row, index) {
953
- this.showNoticeDialog = true;
954
- this.notifyMessageInfoIndex = index;
955
- this.notifyMessageInfoId = row.id;
956
- },
957
- notifyMessageReadHanlde() {
958
- this.notifyMessages[this.notifyMessageInfoIndex].readed = 1;
959
- },
960
- openNotifyTemplateGroupDialog() {
961
- this.$http({
962
- url: USER_PREFIX + `/notify_template/listPage`,
963
- method: `post`,
964
- data: { searchCount: false },
965
- isLoading: true,
966
- // loadingTarget: document.body,
967
- success: (res) => {
968
- this.notifyTemplates =
969
- res.objx && res.objx.records ? res.objx.records : [];
970
- this.showGroupDialog = true;
971
- },
972
- });
973
- },
974
- rourteTo(route) {
975
- if (route.type == 4) {
976
- this.jumpOutLink(route);
977
- } else if (route.type == 3) {
978
- let menuCode = route.menuCode;
979
- let path = "/user/outLink/index/" + menuCode;
980
- this.$openView({ path: path, query: { url: route.url } }, route);
981
- } else {
982
- let path = this.getPath(route);
983
- if (!path) return;
984
- this.$openView(path, route);
985
- }
986
- },
987
- getPath(route3) {
988
- let item = null;
989
- let path = null;
990
- if (route3.type == 0) {
991
- //普通菜单
992
- if (route3.url) {
993
- path = route3.route || route3.url;
994
- let str = "/report/vform/render/";
995
- if (path.indexOf(str) == 0) {
996
- } else {
997
- let pIndex = path.indexOf("?");
998
- if (pIndex > 0) {
999
- path = path.substring(0, pIndex);
1000
- }
1001
- }
1002
- }
1003
- } else if (route3.type == 5) {
1004
- //动态表单
1005
- let url = route3.route || route3.url;
1006
- path = url;
1007
- }
1008
- if (path && path.startsWith("@")) {
1009
- path = null;
1010
- }
1011
- return path;
1012
- },
1013
- jumpOutLink(route) {
1014
- let path = route.url;
1015
- if (route.type == 4 && path) {
1016
- if (path.indexOf("token={token}") >= 0) {
1017
- path = path.replace("token={token}", "token=" + getToken());
1018
- }
1019
- window.open(path);
1020
- }
1021
- },
1022
- initWfParam() {
1023
- return this.$http({
1024
- url: USER_PREFIX + "/wf_param/list",
1025
- method: `post`,
1026
- data: {},
1027
- isLoading: true,
1028
- // loadingTarget: document.body,
1029
- modalStrictly: true,
1030
- success: (res) => {
1031
- this.wfParamDTOs = res.objx || [];
1032
- this.initWfTableList();
1033
- },
1034
- });
1035
- },
1036
- getWfInfoList(isLoading) {
1037
- if (!this.activating) {
1038
- return;
1039
- }
1040
- this.$http({
1041
- url: USER_PREFIX + "/wf_info/listPage",
1042
- data: { type: 0, size: 20, searchCount: false },
1043
- method: "post",
1044
- isLoading: isLoading,
1045
- modal: isLoading || false,
1046
- // loadingTarget: document.body,
1047
- success: (res) => {
1048
- this.unDoWfRows =
1049
- res.objx && res.objx.records ? res.objx.records : [];
1050
- },
1051
- failMsg: false,
1052
- errorMsg: false,
1053
- fail: (res, response) => {
1054
- if (response && response.status == 200) {
1055
- this.$errorMsg(res);
1056
- }
1057
- },
1058
- });
1059
- },
1060
- getUnreadMessageNum(isLoading) {
1061
- if (!this.activating) {
1062
- return;
1063
- }
1064
- return this.$http({
1065
- url: USER_PREFIX + "/notify_message/countMessage",
1066
- method: `post`,
1067
- data: {},
1068
- isLoading: isLoading,
1069
- modal: isLoading || false,
1070
- // loadingTarget: document.body,
1071
- success: (res) => {
1072
- this.unreadMessageNum = res.objx || 0;
1073
- },
1074
- failMsg: false,
1075
- errorMsg: false,
1076
- fail: (res, response) => {
1077
- if (response && response.status == 200) {
1078
- this.$errorMsg(res);
1079
- }
1080
- },
1081
- });
1082
- },
1083
- wfhandleCallback(flag) {
1084
- if ([1, 2, 3].includes(flag)) {
1085
- this.showWfDialog = false;
1086
- this.wfClose();
1087
- }
1088
- },
1089
- },
1090
- };
1091
- </script>
1092
- <style lang="scss" scoped>
1093
- @import "~@/styles/variables.scss";
1094
-
1095
- body #app .index-home {
1096
- margin: 3px 10px;
1097
- height: calc(100vh - 44px);
1098
- overflow: hidden;
1099
- display: flex;
1100
- flex-direction: column;
1101
-
1102
- #containt {
1103
- margin: 0;
1104
- background: none;
1105
- height: auto;
1106
- box-shadow: none;
1107
- }
1108
-
1109
- .i-user-info {
1110
- background: url(~@/resources/images/home-img.png) #2a6494 no-repeat 116%
1111
- 45px;
1112
- margin-bottom: 6px;
1113
- background-size: 181px;
1114
- padding: 14px 38px 11px 16px;
1115
- border-radius: 4px 4px;
1116
- color: #fff;
1117
- font-size: 12px;
1118
- margin-top: 3px;
1119
- height: 95px;
1120
- overflow: hidden;
1121
-
1122
- .name {
1123
- opacity: 1;
1124
- font-weight: 600;
1125
- margin: 9px 0 14px;
1126
- font-size: 14px;
1127
- }
1128
-
1129
- .img {
1130
- width: 60px;
1131
- height: 60px;
1132
- float: left;
1133
- border-radius: 50%;
1134
- border: solid 4px rgba(255, 255, 255, 0.28);
1135
- margin-right: 10px;
1136
- }
1137
- }
1138
-
1139
- .home-notice-list {
1140
- height: 182px;
1141
- margin: 0 -12px;
1142
-
1143
- .item {
1144
- padding: 6px 12px;
1145
- font-size: 12px;
1146
- cursor: pointer;
1147
- overflow: hidden;
1148
- text-overflow: ellipsis;
1149
- white-space: nowrap;
1150
-
1151
- .time {
1152
- color: #b9b9b9;
1153
- font-size: 12px;
1154
- right: 12px;
1155
- }
1156
-
1157
- &:hover {
1158
- color: $baseColor;
1159
- background-color: transparentize($baseColor, 0.97);
1160
-
1161
- .time {
1162
- color: $baseColor;
1163
- }
1164
- }
1165
-
1166
- &.no-read:before {
1167
- content: "";
1168
- width: 6px;
1169
- height: 6px;
1170
- background-color: $red;
1171
- border-radius: 50%;
1172
- vertical-align: middle;
1173
- display: inline-block;
1174
- margin-bottom: 1px;
1175
- }
1176
- }
1177
-
1178
- &.to-reed {
1179
- height: 300px;
1180
- overflow: auto;
1181
- margin: -8px -12px;
1182
-
1183
- .item {
1184
- white-space: initial;
1185
- padding: 8px 22px 2px;
1186
- position: relative;
1187
-
1188
- &:after {
1189
- content: "";
1190
- position: absolute;
1191
- left: 22px;
1192
- right: 22px;
1193
- border-top: dashed 1px #eee;
1194
- height: 1px;
1195
- bottom: 0;
1196
- }
1197
-
1198
- &.noread {
1199
- &:before {
1200
- content: "";
1201
- width: 6px;
1202
- height: 6px;
1203
- background-color: $red;
1204
- border-radius: 50%;
1205
- margin-right: 5px;
1206
- display: inline-block;
1207
- position: absolute;
1208
- left: 10px;
1209
- top: 16px;
1210
- }
1211
- }
1212
-
1213
- .el-tag {
1214
- zoom: 0.95;
1215
- padding: 0 5px;
1216
- height: 24px;
1217
- line-height: 24px;
1218
- }
1219
-
1220
- // .noread{
1221
- // position: absolute;right:0;top:0;
1222
- // span{transform: rotate(47deg);
1223
- // -ms-transform: rotate(47deg);
1224
- // -moz-transform: rotate(47deg);
1225
- // -webkit-transform: rotate(47deg);
1226
- // -o-transform: rotate(47deg);
1227
- // z-index: 3;
1228
- // color: #FFF;
1229
- // position: absolute;
1230
- // right: 1px;
1231
- // top: 2px;}
1232
- // &:after{
1233
- // content: "\e618";
1234
- // font-size: 62px;
1235
- // font-family: "iconfont";
1236
- // color:$red
1237
- // }
1238
- // }
1239
- .time {
1240
- position: relative;
1241
- right: 0;
1242
- margin-left: 12px;
1243
- }
1244
-
1245
- .name {
1246
- overflow: hidden;
1247
- text-overflow: ellipsis;
1248
- white-space: nowrap;
1249
- margin-top: 3px;
1250
- display: block;
1251
- margin-bottom: 4px;
1252
- }
1253
-
1254
- &:hover .name {
1255
- color: $baseColor;
1256
- }
1257
-
1258
- &:first-child:before {
1259
- border-top: none;
1260
- }
1261
-
1262
- .btns {
1263
- text-align: right;
1264
-
1265
- .el-link {
1266
- font-size: 12px;
1267
- display: inline-block;
1268
- margin-left: 14px;
1269
-
1270
- i {
1271
- font-size: 12px;
1272
- margin-right: 3px;
1273
- }
1274
- }
1275
- }
1276
- }
1277
- }
1278
- }
1279
-
1280
- .home-top {
1281
- flex: none;
1282
- }
1283
-
1284
- .home-bottom {
1285
- flex: 1;
1286
- min-height: 0;
1287
- display: flex;
1288
-
1289
- > .el-col {
1290
- height: 100%;
1291
- display: flex;
1292
- flex-direction: column;
1293
- }
1294
-
1295
- .box-card {
1296
- flex: 1;
1297
- min-height: 0;
1298
- display: flex;
1299
- flex-direction: column;
1300
-
1301
- &.el-card.is-always-shadow {
1302
- margin-top: 0 !important;
1303
- }
1304
- }
1305
-
1306
- ::v-deep .el-card__body {
1307
- flex: 1;
1308
- min-height: 0;
1309
- display: flex;
1310
- flex-direction: column;
1311
- }
1312
- }
1313
-
1314
- .shortcut-box {
1315
- flex: 1;
1316
- min-height: 0;
1317
- display: grid;
1318
- grid-template-columns: repeat(5, 1fr);
1319
- grid-template-rows: repeat(2, 1fr);
1320
- gap: 8px;
1321
-
1322
- .item {
1323
- border: solid 1px #e2e2e2;
1324
- border-radius: 2px;
1325
- text-align: center;
1326
- padding: 12px 4px 10px;
1327
- cursor: pointer;
1328
- background: #fff;
1329
- display: flex;
1330
- flex-direction: column;
1331
- justify-content: center;
1332
-
1333
- .name {
1334
- display: block;
1335
- color: #424242;
1336
- font-size: 12px;
1337
- line-height: 20px;
1338
- }
1339
-
1340
- .count {
1341
- display: block;
1342
- color: #d62b31;
1343
- font-size: 12px;
1344
- line-height: 20px;
1345
- }
1346
-
1347
- &:hover {
1348
- border-color: $baseColor;
1349
- background-color: transparentize($baseColor, 0.95);
1350
-
1351
- .name {
1352
- color: $baseColor;
1353
- }
1354
- }
1355
- }
1356
- }
1357
-
1358
- .need-to {
1359
- height: 332px;
1360
- }
1361
-
1362
- .pending-msg {
1363
- flex: 1;
1364
- min-height: 0;
1365
- height: 100%;
1366
- }
1367
-
1368
- .table-box {
1369
- width: 100%;
1370
- font-size: 12px;
1371
-
1372
- th {
1373
- line-height: 32px;
1374
- background: #f7f7f7;
1375
- font-weight: 400;
1376
- color: #808080;
1377
- padding: 0 6px;
1378
- }
1379
-
1380
- td {
1381
- text-align: center;
1382
- line-height: 34px;
1383
- color: #424242;
1384
- border-bottom: solid 1px #eee;
1385
- padding: 0 6px;
1386
- }
1387
-
1388
- tr:last-child td {
1389
- border-bottom: none;
1390
- }
1391
- }
1392
- }
1393
-
1394
- .deal-msg-form {
1395
- padding: 8px 12px 0;
1396
-
1397
- .deal-msg-content {
1398
- max-height: 160px;
1399
- overflow: auto;
1400
- line-height: 20px;
1401
- white-space: pre-wrap;
1402
- word-break: break-all;
1403
- }
1404
- }
1405
-
1406
- .box-card .more {
1407
- background-color: #f7f7f7;
1408
- }
1409
-
1410
- .group-list {
1411
- padding: 18px 18px 6px 32px !important;
1412
- height: 400px;
1413
- overflow: auto;
1414
-
1415
- .item {
1416
- position: relative;
1417
- height: 36px;
1418
- border: solid 1px #eee;
1419
- line-height: 34px;
1420
- border-radius: 2px;
1421
- padding: 0 42px 0 14px;
1422
- margin-bottom: 10px;
1423
- cursor: pointer;
1424
-
1425
- &::before {
1426
- content: "";
1427
- width: 8px;
1428
- height: 8px;
1429
- border: solid 1px #eee;
1430
- border-radius: 50%;
1431
- display: inline-block;
1432
- position: absolute;
1433
- left: -16px;
1434
- top: 13px;
1435
- }
1436
-
1437
- &.checked {
1438
- &:before {
1439
- content: "";
1440
- background-color: $baseColor;
1441
- border-color: $baseColor;
1442
- }
1443
-
1444
- background-color: transparentize($baseColor, 0.9);
1445
- color: $baseColor;
1446
- border-color: $baseColor;
1447
- }
1448
-
1449
- i {
1450
- font-size: 12px;
1451
- vertical-align: middle;
1452
- }
1453
-
1454
- .name {
1455
- font-size: 12px;
1456
- margin-left: 8px;
1457
- vertical-align: middle;
1458
- }
1459
-
1460
- .nums {
1461
- width: 22px;
1462
- height: 22px;
1463
- border-radius: 50%;
1464
- display: inline-block;
1465
- position: absolute;
1466
- right: 5px;
1467
- top: 6px;
1468
- color: #fff;
1469
- font-size: 12px;
1470
- background-color: $red;
1471
- line-height: 22px;
1472
- text-align: center;
1473
- }
1474
- }
1475
- }
1476
-
1477
- .notice-box {
1478
- background-color: #2a649429;
1479
- border-radius: 0 0 4px 4px;
1480
- padding: 9px 12px;
1481
- margin-bottom: 5px;
1482
- margin-top: -6px;
1483
- position: relative;
1484
- z-index: 2;
1485
- font-size: 13px;
1486
- color: #212121;
1487
- overflow: hidden;
1488
-
1489
- .txt {
1490
- line-height: 28px;
1491
- font-size: 12px;
1492
- position: relative;
1493
- display: inline-block;
1494
- cursor: pointer;
1495
-
1496
- &:before {
1497
- content: "";
1498
- background-color: $baseColor;
1499
- width: 4px;
1500
- height: 20px;
1501
- border-radius: 2px;
1502
- display: inline-block;
1503
- vertical-align: middle;
1504
- margin-right: 18px;
1505
- }
1506
-
1507
- i {
1508
- font-size: 14px;
1509
- margin-right: 12px;
1510
- vertical-align: middle;
1511
- }
1512
-
1513
- > span {
1514
- vertical-align: middle;
1515
- height: 22px;
1516
- line-height: 22px;
1517
- display: inline-block;
1518
-
1519
- b {
1520
- color: #fff;
1521
- margin: 0 4px;
1522
- font-size: 16px;
1523
- vertical-align: middle;
1524
- background: #ff5615;
1525
- border-radius: 50%;
1526
- display: inline-block;
1527
- padding: 4px;
1528
- font-weight: 200;
1529
- line-height: 1;
1530
- }
1531
- }
1532
- }
1533
-
1534
- .el-button {
1535
- position: absolute;
1536
- right: 46px;
1537
- padding: 0;
1538
- height: 22px;
1539
- line-height: 22px;
1540
- min-width: 22px;
1541
- text-align: center;
1542
- border-radius: 2px;
1543
- top: 50%;
1544
- margin-top: -11px;
1545
-
1546
- i {
1547
- font-size: 15px;
1548
- }
1549
-
1550
- &:hover {
1551
- background-color: $baseColor;
1552
- color: #fff;
1553
- }
1554
-
1555
- &.more {
1556
- right: 12px;
1557
- background: #f7f7f7;
1558
-
1559
- &:hover {
1560
- color: $baseColor;
1561
- }
1562
- }
1563
- }
1564
-
1565
- ::v-deep .el-card.is-always-shadow {
1566
- box-shadow: 0 2px 2px 0 rgb(0 0 0 / 6%);
1567
- }
1568
- }
1569
- </style>