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

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 (193) hide show
  1. package/package.json +6 -2
  2. package/src/components/VabUpload/image-viewer.vue +442 -442
  3. package/src/components/VabUpload/index.vue +45 -3
  4. package/src/components/VabUpload/mixins.js +174 -34
  5. package/src/components/VabUpload/previewGroup.js +128 -0
  6. package/src/components/VabUpload/view.vue +248 -209
  7. package/src/components/baseTabs/mixins.js +181 -181
  8. package/src/components/bizTab/BizBillActions.vue +129 -0
  9. package/src/components/bizTab/BizTabListPage.vue +391 -0
  10. package/src/components/bizTab/README.md +378 -0
  11. package/src/components/bizTab/billTableUtil.js +48 -0
  12. package/src/components/bizTab/billValidators.js +136 -0
  13. package/src/components/bizTab/bizBillDetailMixin.js +705 -0
  14. package/src/components/bizTab/index.js +24 -0
  15. package/src/components/excelExport/exportFieldDialog.vue +23 -12
  16. package/src/components/excelExport/exportItemConfigUtil.js +30 -0
  17. package/src/components/excelExport/mixins.js +3 -3
  18. package/src/components/excelImport/index.vue +156 -156
  19. package/src/components/jsonImport/index.vue +1 -1
  20. package/src/components/langImport/index.vue +1 -1
  21. package/src/components/mobile/statusTag/mixins.js +1 -61
  22. package/src/components/mobile/wf/addTaskUserdialog.vue +23 -3
  23. package/src/components/mobile/wf/content.vue +1705 -1556
  24. package/src/components/mobile/wf/deleteTaskUserDialog.vue +22 -3
  25. package/src/components/mobile/wf/mixins/wfModifyDialogMixin.js +8 -6
  26. package/src/components/mobile/wf/selectUserDialog.vue +122 -0
  27. package/src/components/mobile/wf/setCandidateDialog.vue +25 -4
  28. package/src/components/mobile/wf/urgingDialog.vue +26 -3
  29. package/src/components/mobile/wf/wfModifyDialog.vue +4 -0
  30. package/src/components/obsUpload/index.vue +1 -1
  31. package/src/components/table/config.js +78 -78
  32. package/src/components/table/index.js +1276 -1276
  33. package/src/components/table/plugins/cell-area/index.js +1055 -0
  34. package/src/components/table/plugins/cell-area/index.scss +77 -0
  35. package/src/components/table/plugins/cell-area/util.js +224 -0
  36. package/src/components/table/tableForm.vue +330 -330
  37. package/src/components/table/tableFormMixin.js +318 -318
  38. package/src/components/table/vxeFilter/index.js +163 -163
  39. package/src/components/table/vxeFilter/mixin.js +316 -316
  40. package/src/components/wf/content.vue +1188 -1188
  41. package/src/components/wf/wf.js +40 -20
  42. package/src/components/wf/wfActionDropdown.vue +1 -1
  43. package/src/components/wf/wfActionItems.js +1 -1
  44. package/src/components/xform/docs/2026-08 xform H5 P0 /345/256/236/347/216/260/350/247/204/346/240/274.md" +528 -0
  45. package/src/components/xform/docs/2026-08 xform H5 P1 /345/256/236/347/216/260/350/247/204/346/240/274.md" +412 -0
  46. package/src/components/xform/docs/2026-08 xform H5 P2 /345/256/236/347/216/260/350/247/204/346/240/274.md" +287 -0
  47. 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" +400 -0
  48. package/src/components/xform/form-designer/designer.js +51 -52
  49. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +269 -269
  50. package/src/components/xform/form-designer/form-widget/container-widget/detail-h5-widget.vue +18 -2
  51. package/src/components/xform/form-designer/form-widget/container-widget/detail-temp-widget.vue +132 -0
  52. package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +250 -250
  53. package/src/components/xform/form-designer/form-widget/container-widget/h5-card-pane-widget.vue +23 -2
  54. package/src/components/xform/form-designer/form-widget/container-widget/h5-card-widget.vue +30 -1
  55. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +319 -320
  56. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +365 -365
  57. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +185 -185
  58. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +554 -555
  59. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +409 -409
  60. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +150 -132
  61. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +114 -114
  62. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +154 -154
  63. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +47 -1
  64. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +178 -178
  65. package/src/components/xform/form-designer/form-widget/field-widget/mixins/time-limit-mixin.js +77 -77
  66. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +6 -0
  67. package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +139 -139
  68. package/src/components/xform/form-designer/form-widget/field-widget/singleUpload-widget.vue +1 -1
  69. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +106 -106
  70. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +134 -134
  71. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +3 -2
  72. package/src/components/xform/form-designer/indexMixin.js +35 -1
  73. package/src/components/xform/form-designer/setting-panel/form-setting.vue +39 -39
  74. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +10 -10
  75. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/exportItemColumns-dialog.vue +438 -432
  76. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +2103 -2103
  77. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-temp-edito.vue +90 -0
  78. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue +82 -82
  79. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +833 -846
  80. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +8 -8
  81. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +137 -137
  82. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +237 -237
  83. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-defaultValue-editor.vue +43 -43
  84. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue +43 -43
  85. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +96 -96
  86. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +51 -0
  87. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-defaultValue-editor.vue +42 -42
  88. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue +43 -43
  89. package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +158 -158
  90. package/src/components/xform/form-designer/setting-panel/property-editor/h5Span-editor.vue +51 -0
  91. package/src/components/xform/form-designer/setting-panel/property-editor/itemStyle-editor.vue +39 -0
  92. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +188 -188
  93. package/src/components/xform/form-designer/setting-panel/property-editor/styleTempClass-editor.vue +51 -0
  94. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +347 -347
  95. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +12 -0
  96. package/src/components/xform/form-designer/toolbar-panel/index.vue +884 -874
  97. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +14 -0
  98. package/src/components/xform/form-designer/widget-panel/index.vue +11 -7
  99. package/src/components/xform/form-designer/widget-panel/indexMixin.js +30 -6
  100. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +112 -4
  101. package/src/components/xform/form-render/container-item/data-table-mixin.js +151 -93
  102. package/src/components/xform/form-render/container-item/detail-h5-item.vue +204 -34
  103. package/src/components/xform/form-render/container-item/detail-temp-item.vue +110 -0
  104. package/src/components/xform/form-render/container-item/h5-card-pane-item.vue +160 -140
  105. package/src/components/xform/form-render/container-item/list-h5-item.vue +1913 -1699
  106. package/src/components/xform/form-render/index.vue +153 -147
  107. package/src/components/xform/form-render/indexMixin.js +35 -3
  108. package/src/components/xform/lang/en-US.js +14 -0
  109. package/src/components/xform/lang/zh-CN.js +17 -0
  110. package/src/components/xform/mixins/defaultHandle.js +707 -707
  111. package/src/components/xform/styles/h5.scss +2238 -0
  112. package/src/components/xform/utils/textMaskUtil.js +182 -179
  113. package/src/components/xform/utils/treeTableUtil.js +1292 -1265
  114. package/src/components/xform/utils/util.js +56 -11
  115. package/src/directive/append-to-body/index.js +48 -0
  116. package/src/index.js +13 -4
  117. package/src/layout/components/Sidebar/default.vue +1655 -1655
  118. package/src/layout/components/extractedCode/viewDialog.vue +7 -7
  119. package/src/router/index.js +48 -27
  120. package/src/router/modules/customer.js +71 -14
  121. package/src/store/modules/permission.js +17 -18
  122. package/src/utils/assetUrl.js +19 -0
  123. package/src/utils/pdfUtil.js +429 -429
  124. package/src/utils/resolveViewComponent.js +142 -16
  125. package/src/utils/vab.js +1283 -1279
  126. package/src/views/bd/project/branch/bd_branch/edit.vue +145 -0
  127. package/src/views/bd/project/branch/bd_branch/list.vue +72 -0
  128. package/src/views/bd/project/branch/bd_branch/menuKindDialog.vue +106 -0
  129. package/src/views/bd/project/branch/bd_branch/mixins/edit.js +189 -0
  130. package/src/views/bd/project/branch/bd_branch/mixins/list.js +124 -0
  131. package/src/views/bd/project/branch/bd_branch/mixins/menuKindDialog.js +85 -0
  132. package/src/views/bd/project/branch/form_script/list.vue +31 -0
  133. package/src/views/bd/project/branch/form_template/list.vue +30 -0
  134. package/src/views/bd/project/branch/menu_kind/list.vue +31 -0
  135. package/src/views/bd/project/common/form_script/list.vue +16 -0
  136. package/src/views/bd/project/common/form_template/list.vue +15 -0
  137. package/src/views/bd/project/common/menu_kind/list.vue +15 -0
  138. package/src/views/bd/project/core/branchContext.js +100 -0
  139. package/src/views/bd/project/core/branchPage.js +78 -0
  140. package/src/views/bd/project/core/branchPageWrap.vue +225 -0
  141. package/src/views/bd/project/core/branchScope.js +44 -0
  142. package/src/views/bd/project/core/branchSearchPage.js +285 -0
  143. package/src/views/bd/project/core/branchSelect.vue +85 -0
  144. package/src/views/bd/project/core/branchTreeBar.vue +81 -0
  145. package/src/views/bd/project/core/httpBranchPatch.js +58 -0
  146. package/src/views/bd/project/datatable/menu_kind/list.vue +15 -0
  147. package/src/views/bd/project/datatable/table_model/list.vue +15 -0
  148. package/src/views/bd/setting/bd_company_env/dialog.vue +174 -174
  149. package/src/views/bd/setting/form_template/edit.vue +378 -356
  150. package/src/views/bd/setting/form_template/formDesignerDialog.vue +6 -0
  151. package/src/views/bd/setting/form_template/formTemplateType.js +43 -0
  152. package/src/views/bd/setting/form_template/list.vue +304 -303
  153. package/src/views/bd/setting/form_template/mixins/edit.js +344 -280
  154. package/src/views/bd/setting/form_template/mixins/list.js +748 -721
  155. package/src/views/bd/setting/table_model/edit.vue +1066 -1066
  156. package/src/views/bd/setting/table_model/mixins/edit.js +1455 -1455
  157. package/src/views/bd/setting/table_model/mixins/zdDialog.js +148 -148
  158. package/src/views/demo/bizTab/bill/billConfig.js +41 -0
  159. package/src/views/demo/bizTab/bill/detail.vue +436 -0
  160. package/src/views/demo/bizTab/bill/list.vue +288 -0
  161. package/src/views/demo/bizTab/bill/productDialog.vue +176 -0
  162. package/src/views/demo/bizTab/simple/billApi.js +123 -0
  163. package/src/views/demo/bizTab/simple/detail.vue +407 -0
  164. package/src/views/demo/bizTab/simple/list.vue +217 -0
  165. package/src/views/demo/bizTab/standalone/index.vue +121 -0
  166. package/src/views/demo/bizTab/wf/billConfig.js +44 -0
  167. package/src/views/demo/bizTab/wf/detail.vue +661 -0
  168. package/src/views/demo/bizTab/wf/list.vue +242 -0
  169. package/src/views/support/form-dialog-demo/demoPickerDialog.vue +72 -0
  170. package/src/views/support/form-dialog-demo/index.vue +537 -0
  171. package/src/views/user/file_view_ins/list.vue +970 -970
  172. package/src/views/user/form/vform/designer.vue +823 -821
  173. package/src/views/user/home/default.vue +1117 -1117
  174. package/src/views/user/home/default2.vue +1 -1
  175. package/src/views/user/home/index.vue +103 -101
  176. package/src/views/user/home/wjl/content.vue +1569 -0
  177. package/src/views/user/notify_message/dialog.vue +139 -137
  178. package/src/views/user/outLink/cc_form_view.vue +188 -0
  179. package/src/views/user/outLink/form_view.vue +202 -202
  180. package/src/views/user/outLink/index.vue +110 -110
  181. package/src/views/user/outLink/view.vue +3 -3
  182. package/src/views/user/role/edit.vue +632 -632
  183. package/src/views/user/role/list.vue +260 -260
  184. package/src/views/user/wf/iframe/index.vue +51 -51
  185. package/src/views/user/wf/iframe/index2.vue +64 -64
  186. package/src/views/user/wf/wf_manage/list.vue +1112 -1116
  187. package/src/views/user/wf/wf_manage/list2.vue +871 -875
  188. package/src/views/user/wf/wf_manage/wfContentDialog.vue +134 -131
  189. package/src/views/user/wf/wf_obj_config/importItemDialog.vue +1 -1
  190. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-menu-widget.vue +0 -106
  191. package/src/components/xform/form-designer/form-widget/field-widget/tableexportbuttonwidget.vue +0 -99
  192. package/src/components/xform/form-render/container-item/list-h5-item2.vue +0 -1340
  193. package/src/utils/wf.js +0 -766
@@ -0,0 +1,1569 @@
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>