hrp-ui-base 1.0.1 → 1.0.2
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.
- package/dist/components.cjs +1 -1
- package/dist/components.es.js +4 -4
- package/dist/index.cjs +1 -1
- package/dist/index.es.js +83 -67
- package/dist/style.css +1 -1
- package/package.json +15 -4
- package/packages/approval-process/.eslintrc +7 -0
- package/packages/approval-process/README.md +130 -0
- package/packages/approval-process/index.ts +65 -0
- package/packages/approval-process/package.json +17 -0
- package/packages/approval-process/packages/components/choose-member/BO/departBo.ts +8 -0
- package/packages/approval-process/packages/components/choose-member/BO/memberBo.ts +14 -0
- package/packages/approval-process/packages/components/choose-member/BO/role.svg +1 -0
- package/packages/approval-process/packages/components/choose-member/BO/roleBo.ts +16 -0
- package/packages/approval-process/packages/components/choose-member/index.vue +497 -0
- package/packages/approval-process/packages/components/choose-member/styles/common.scss +134 -0
- package/packages/approval-process/packages/components/comment/assets/avatar.svg +1 -0
- package/packages/approval-process/packages/components/comment/assets/download.svg +4 -0
- package/packages/approval-process/packages/components/comment/assets/mp3.svg +11 -0
- package/packages/approval-process/packages/components/comment/assets/mp4.svg +11 -0
- package/packages/approval-process/packages/components/comment/assets/other.svg +11 -0
- package/packages/approval-process/packages/components/comment/assets/pdf.svg +11 -0
- package/packages/approval-process/packages/components/comment/assets/ppt.svg +11 -0
- package/packages/approval-process/packages/components/comment/assets/preview.svg +4 -0
- package/packages/approval-process/packages/components/comment/assets/remove.png +0 -0
- package/packages/approval-process/packages/components/comment/assets/word.svg +11 -0
- package/packages/approval-process/packages/components/comment/assets/xls.svg +11 -0
- package/packages/approval-process/packages/components/comment/index.vue +843 -0
- package/packages/approval-process/packages/components/comment/modules/previewMp.vue +54 -0
- package/packages/approval-process/packages/components/comment/styles/comment-style.scss +304 -0
- package/packages/approval-process/packages/components/image-cropper/index.vue +202 -0
- package/packages/approval-process/packages/components/sign/index.vue +766 -0
- package/packages/approval-process/packages/components/sign/modules/full-screen-sign.vue +20 -0
- package/packages/approval-process/packages/components/urge-dialog/index.vue +121 -0
- package/packages/approval-process/packages/components/vue-esign/index.vue +289 -0
- package/packages/approval-process/packages/flow/approve-component/approve-success.vue +82 -0
- package/packages/approval-process/packages/flow/approve-component/route-params-error.vue +49 -0
- package/packages/approval-process/packages/flow/approve-component/submit-success.vue +59 -0
- package/packages/approval-process/packages/flow/examine-approve-itr.vue +978 -0
- package/packages/approval-process/packages/flow/examine-approve.vue +1065 -0
- package/packages/approval-process/packages/flow/form-component/associated-approval-form/README.md +38 -0
- package/packages/approval-process/packages/flow/form-component/associated-approval-form/assets/avatar.svg +1 -0
- package/packages/approval-process/packages/flow/form-component/associated-approval-form/index.vue +159 -0
- package/packages/approval-process/packages/flow/form-component/associated-approval-form/modules/associated-approval-form-mobile.vue +297 -0
- package/packages/approval-process/packages/flow/form-component/associated-approval-form/modules/associated-approval-form-pc.vue +314 -0
- package/packages/approval-process/packages/flow/form-component/associated-approval-form/style/curd-area-mobile.scss +110 -0
- package/packages/approval-process/packages/flow/form-component/associated-approval-form/style/curd-area.scss +96 -0
- package/packages/approval-process/packages/flow/form-component/associated-approval-form/style/out-put.scss +48 -0
- package/packages/approval-process/packages/flow/form-component/show-sign.vue +27 -0
- package/packages/approval-process/packages/flow/styles/common.scss +134 -0
- package/packages/approval-process/packages/flow/styles/examine-approve-pc.scss +465 -0
- package/packages/approval-process/packages/flow/styles/examine-approve-phone.scss +293 -0
- package/packages/approval-process/packages/flow/styles/submit-approve-pc.scss +379 -0
- package/packages/approval-process/packages/flow/styles/submit-approve-phone.scss +337 -0
- package/packages/approval-process/packages/flow/submit-approve-itr.vue +623 -0
- package/packages/approval-process/packages/flow/submit-approve.vue +628 -0
- package/packages/approval-process/packages/flow/systemCom/BO/departBo.ts +8 -0
- package/packages/approval-process/packages/flow/systemCom/BO/memberBo.ts +14 -0
- package/packages/approval-process/packages/flow/systemCom/BO/role.svg +1 -0
- package/packages/approval-process/packages/flow/systemCom/BO/roleBo.ts +16 -0
- package/packages/approval-process/packages/flow/systemCom/choose-depart.vue +399 -0
- package/packages/approval-process/packages/flow/systemCom/choose-member-phone.vue +515 -0
- package/packages/approval-process/packages/flow/systemCom/choose-member.vue +565 -0
- package/packages/approval-process/packages/flow/systemCom/choose-role.vue +301 -0
- package/packages/approval-process/packages/styles/common.scss +134 -0
- package/packages/approval-process/packages/styles/flex-common.scss +118 -0
- package/packages/approval-process/packages/styles/flexCommon.scss +73 -0
- package/packages/approval-process/packages/styles/main.css +216 -0
- package/packages/approval-process/packages/styles/router-page.scss +371 -0
- package/packages/approval-process/packages/styles/style-set.ts +207 -0
- package/packages/approval-process/packages/types.d.ts +4 -0
- package/packages/approval-process/packages/utils/base.ts +15 -0
- package/packages/approval-process/packages/utils/crypto.ts +67 -0
- package/packages/approval-process/packages/utils/ddUtils.ts +56 -0
- package/packages/approval-process/packages/utils/debounce.ts +36 -0
- package/packages/approval-process/packages/utils/des.js +1107 -0
- package/packages/approval-process/packages/utils/download.ts +38 -0
- package/packages/approval-process/packages/utils/editor.ts +37 -0
- package/packages/approval-process/packages/utils/getEnv.ts +36 -0
- package/packages/approval-process/packages/utils/os.ts +20 -0
- package/packages/approval-process/packages/utils/path-util.ts +31 -0
- package/packages/approval-process/packages/utils/routerUtil.ts +304 -0
- package/packages/approval-process/packages/utils/string-utils.ts +13 -0
- package/packages/approval-process/packages/utils/throttle.ts +44 -0
- package/packages/approval-process/packages/utils/validate.ts +92 -0
- package/packages/approval-process/packages/utils/ws.ts +218 -0
- package/packages/approval-process/tsconfig.json +72 -0
- package/packages/approval-process/vite.config.ts +56 -0
- package/src/api/bms/flow/FlowCommentController.ts +50 -0
- package/src/api/bms/flow/FlowInstanceController.ts +167 -0
- package/src/api/bms/flow/FlowProcessController.ts +55 -0
- package/src/api/bms/flow/FlowSheetController.ts +27 -0
- package/src/api/bms/flow/FlowSignController.ts +76 -0
- package/src/api/bms/flow/bo/AssociatedApprovalBO.ts +15 -0
- package/src/api/bms/flow/bo/AssociatedApprovalVO.ts +35 -0
- package/src/api/bms/flow/bo/AuditBaseInfo.ts +39 -0
- package/src/api/bms/flow/bo/ButtonVo.ts +7 -0
- package/src/api/bms/flow/bo/DingCallbackBo.ts +13 -0
- package/src/api/bms/flow/bo/FlowCommentBO.ts +12 -0
- package/src/api/bms/flow/bo/FlowCommentVO.ts +23 -0
- package/src/api/bms/flow/bo/FlowInstanceBO.ts +14 -0
- package/src/api/bms/flow/bo/FlowNodeVO.ts +24 -0
- package/src/api/bms/flow/bo/FlowNoticeBO.ts +17 -0
- package/src/api/bms/flow/bo/FlowProcessBO.ts +13 -0
- package/src/api/bms/flow/bo/FlowProcessVO.ts +9 -0
- package/src/api/bms/flow/bo/FlowReplyVO.ts +23 -0
- package/src/api/bms/flow/bo/FlowSheetVO.ts +16 -0
- package/src/api/bms/flow/bo/InstanceBackBO.ts +9 -0
- package/src/api/bms/flow/bo/InstanceNodeBO.ts +13 -0
- package/src/api/bms/flow/bo/InstanceNodeVO.ts +21 -0
- package/src/api/bms/flow/bo/NodeShowVo.ts +19 -0
- package/src/api/bms/flow/bo/ReviewBO.ts +11 -0
- package/src/api/bms/flow/bo/SheetSearchBO.ts +11 -0
- package/src/api/bms/flow/bo/SystemVO.ts +7 -0
- package/src/api/bms/flow/bo/TransmitBO.ts +9 -0
- package/src/api/bms/flow/bo/UrgeFlowBO.ts +7 -0
- package/src/api/bms/flow/bo/UserBaseInfoVo.ts +13 -0
- package/src/api/bms/flow/bo/UserInfoVo.ts +44 -0
- package/src/api/bms/flow/bo/UserResultVo.ts +17 -0
- package/src/api/bms/flow/bo/ValueMapBo.ts +7 -0
- package/src/api/bms/home/HomeController.ts +106 -0
- package/src/api/bms/home/bo/CollectedMenuBo.ts +9 -0
- package/src/api/bms/home/bo/DeptBaseVo.ts +9 -0
- package/src/api/bms/home/bo/DomainVO.ts +13 -0
- package/src/api/bms/home/bo/FunPermission.ts +17 -0
- package/src/api/bms/home/bo/GroupVO.ts +10 -0
- package/src/api/bms/home/bo/HomeMenu.ts +22 -0
- package/src/api/bms/home/bo/HomeMenuVo.ts +11 -0
- package/src/api/bms/home/bo/PersonalizationBo.ts +17 -0
- package/src/api/bms/home/bo/PersonalizationVo.ts +19 -0
- package/src/api/bms/home/bo/PhoneMenu.ts +14 -0
- package/src/api/bms/home/bo/SearchMenuVo.ts +10 -0
- package/src/api/bms/home/bo/UserBaseInfoVo.ts +11 -0
- package/src/api/hrms/dept/bo/DeptBaseVo.ts +6 -0
- package/src/api/hrms/dept/bo/DeptTreeVo.ts +23 -0
- package/src/api/hrms/dept/bo/DeptUserVo.ts +9 -0
- package/src/api/hrms/dept/bo/DeptUsersVo.ts +10 -0
- package/src/api/hrms/dept/bo/DeptVo.ts +19 -0
- package/src/api/hrms/dept/bo/UserBaseInfoVo.ts +8 -0
- package/src/api/hrms/dept/deptController.ts +100 -0
- package/src/api/hrms/role/bo/RoleBaseVo.ts +6 -0
- package/src/api/hrms/role/bo/RoleGroupVo.ts +11 -0
- package/src/api/hrms/role/bo/RoleVo.ts +22 -0
- package/src/api/hrms/role/roleController.ts +19 -0
- package/src/api/hrms/user/bo/UserBaseInfoVo.ts +11 -0
- package/src/api/hrms/user/bo/UserCardVO.ts +14 -0
- package/src/api/hrms/user/bo/UserDeptBO.ts +13 -0
- package/src/api/hrms/user/bo/UserRoleBO.ts +11 -0
- package/src/api/hrms/user/bo/UserVO.ts +23 -0
- package/src/api/hrms/user/userController.ts +86 -0
- package/src/api/work-order-pc/flow/Bo/ValueMapBo.ts +7 -0
- package/src/api/work-order-pc/flow/ItrFlowProcessController.ts +42 -0
- package/src/api/work-order-pc/flow/Vo/FlowNodeVO.ts +24 -0
- package/src/api/work-order-pc/flow/Vo/UserInfoVo.ts +44 -0
- package/src/assets/process/agree.png +0 -0
- package/src/assets/process/defaultAvatar.png +0 -0
- package/src/assets/process/drawer/departManagerJump.png +0 -0
- package/src/assets/process/drawer/manyLevel1close.svg +10 -0
- package/src/assets/process/drawer/manyLevel1open.svg +7 -0
- package/src/assets/process/drawer/manyLevel2close.svg +7 -0
- package/src/assets/process/drawer/manyLevel2open.svg +7 -0
- package/src/assets/process/inProcess.png +0 -0
- package/src/assets/process/manyPeople.png +0 -0
- package/src/assets/process/manyPeople2.png +0 -0
- package/src/assets/process/reject.png +0 -0
- package/src/assets/process/revoke.png +0 -0
- package/src/components/annex-img-upload/index.vue +4 -4
- package/src/components/annex-img-upload/modules/previewMp.vue +1 -1
- package/src/components/annex-upload/index.vue +4 -4
- package/src/components/annex-upload/modules/previewMp.vue +1 -1
- package/src/components/annex-upload-weijian/index.vue +4 -4
- package/src/components/annex-upload-weijian/modules/previewMp.vue +1 -1
- package/src/components/list-search-content/components/search-date-range.vue +1 -1
- package/src/components/list-search-content/components/search-date-time-range.vue +1 -1
- package/src/components/list-search-content/components/search-date.vue +1 -1
- package/src/components/list-search-content/components/search-input-number.vue +1 -1
- package/src/components/list-search-content/components/search-input.vue +1 -1
- package/src/components/list-search-content/components/search-multiple_select.vue +1 -1
- package/src/components/list-search-content/components/search-select.vue +1 -1
- package/src/components/list-search-content/index.vue +6 -6
- package/src/components/list-search-content/modules/add-views-package-dialog.vue +3 -3
- package/src/components/list-search-content/modules/search-condition-area.vue +2 -2
- package/src/components/list-search-content/modules/views-package-manage-dialog.vue +5 -5
- package/src/index.ts +1 -0
- package/src/utils/dd-utils.ts +1 -1
- package/src/utils/get-dict.ts +2 -2
- package/src/utils/permit-utils.ts +2 -2
- package/src/api/bms/dict/bo/TotalDictSearchBO.ts +0 -8
- package/src/api/bms/file/FileExportController.ts +0 -18
- package/src/api/bms/file/bo/FileExportVO.ts +0 -17
|
@@ -0,0 +1,628 @@
|
|
|
1
|
+
<!-- 审批页面 适配移动端并且要有插槽,同时对插槽的数据可以进行读取 -->
|
|
2
|
+
<template>
|
|
3
|
+
<div class="submit-big-box">
|
|
4
|
+
<div class="submit-page-box flex-column-start-center" v-if="isPc && !haveSubmit">
|
|
5
|
+
<div class="submit-inner-page-box">
|
|
6
|
+
<!-- 返回,标题以及选择部门盒子 -->
|
|
7
|
+
<div class="inner-page-item inner-page-top-box">
|
|
8
|
+
<div class="inner-page-top-dept-top flex-row-start-center">
|
|
9
|
+
<el-icon style="font-size: 16px;cursor: pointer;" @click="backList">
|
|
10
|
+
<ArrowLeft />
|
|
11
|
+
</el-icon>
|
|
12
|
+
<div class="submit-back" @click="backList">返回</div>
|
|
13
|
+
<div class="inner-page-divide"></div>
|
|
14
|
+
<div class="inner-page-top-dept-title">{{ props.jobName ? props.jobName : '新增固定资产采购申请' }}
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="inner-page-top-dept-bottom flex-column-start"
|
|
18
|
+
v-show="deptList.length !== 1 && pageType == 'step1' && !props.promoterDeptId">
|
|
19
|
+
<div class="inner-page-top-dept-bottom-title">发起人所在部门</div>
|
|
20
|
+
<div class="inner-page-top-form-box flex-row-start">
|
|
21
|
+
<div class="inner-page-top-form-title">选择部门</div>
|
|
22
|
+
<el-select size="default" v-model="chooseDept" clearable placeholder="请选择"
|
|
23
|
+
class="inner-page-top-form-content">
|
|
24
|
+
<el-option :value="item.deptId" :label="item.deptName" v-for="(item) in deptList"
|
|
25
|
+
:key="item.deptId"></el-option>
|
|
26
|
+
</el-select>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
<!-- 选择部门盒子 -->
|
|
31
|
+
<!-- <div class="inner-page-item" v-show="deptList.length !== 1 && pageType == 'step1'">
|
|
32
|
+
<div class="inner-page-item-header">发起人所在部门: </div>
|
|
33
|
+
<div class="formBox">
|
|
34
|
+
<el-select size="default" v-model="chooseDept" clearable placeholder="请选择">
|
|
35
|
+
<el-option :value="item.deptId" :label="item.deptName" v-for="(item) in deptList"
|
|
36
|
+
:key="item.deptId"></el-option>
|
|
37
|
+
</el-select>
|
|
38
|
+
</div>
|
|
39
|
+
</div> -->
|
|
40
|
+
<!-- 中部表单盒子 -->
|
|
41
|
+
<div class="inner-page-item" v-show="pageType == 'step1'">
|
|
42
|
+
<div class="formBox">
|
|
43
|
+
<slot></slot>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
<div v-show="pageType == 'step2'">
|
|
47
|
+
<slot name="showInfo"></slot>
|
|
48
|
+
</div>
|
|
49
|
+
<!-- 审批流盒子 -->
|
|
50
|
+
<div class="inner-page-item" v-show="pageType == 'step2'">
|
|
51
|
+
<div class="inner-page-item-header">审批节点</div>
|
|
52
|
+
<div class="processBox">
|
|
53
|
+
<el-timeline>
|
|
54
|
+
<el-timeline-item v-for="(item, index) in activities " :key="index" :type="item.type" size="large">
|
|
55
|
+
<div class="timeLineTtem flexRowStart">
|
|
56
|
+
<img :src="item.userList[0].avatar" alt="头像"
|
|
57
|
+
v-if="item.userList && item.userList.length <= 1 && !item.chooseUser && item.userList[0] && item.userList[0].avatar">
|
|
58
|
+
<img src="hrp-ui-base/assets/process/defaultAvatar.png" alt="头像"
|
|
59
|
+
v-else-if="item.userList && item.userList.length <= 1 && !item.chooseUser && item.userList[0] && !item.userList[0].avatar">
|
|
60
|
+
<div class="flexRowAroundWrap imgbox"
|
|
61
|
+
v-else-if="(item.userList && item.userList.length > 1) && !item.chooseUser">
|
|
62
|
+
<img src="hrp-ui-base/assets/process/manyPeople2.png" alt="头像"
|
|
63
|
+
style="margin-right: 0;width: 35px;height: 25px;">
|
|
64
|
+
</div>
|
|
65
|
+
<div v-else-if="item.chooseUser" class="iconBox">
|
|
66
|
+
<ChooseMember :submitAdd="true" v-model="item.userList"
|
|
67
|
+
:dataSources="item.chooseType == 'user' ? 'user' : item.chooseType == 'role' ? 'role' : 'all'"
|
|
68
|
+
:dataSourcesCondition="item.chooseList ? item.chooseList : []"></ChooseMember>
|
|
69
|
+
</div>
|
|
70
|
+
<div class="flexColumnStart porcessTime">
|
|
71
|
+
<div class="porcessTimeNodeNameBig">{{ item.nodeName }}</div>
|
|
72
|
+
<div class="porcessTimeNameBox flexRowStartCenter">
|
|
73
|
+
<div class="porcessTimeName flexRowStart">{{ item.userList &&
|
|
74
|
+
item.userList.length > 1 && !item.chooseUser ? item.userList.length + '位' +
|
|
75
|
+
(item.nodeType ==
|
|
76
|
+
'Approver' ? '审批人' : item.nodeType == 'Ccto' ? '抄送人' : item.nodeType ==
|
|
77
|
+
'Executor' ? '执行人' : '') : (item.userList &&
|
|
78
|
+
item.userList.length > 0) && item.chooseUser ?
|
|
79
|
+
item.userList.length + '位' + (item.nodeType ==
|
|
80
|
+
'Approver' ? '审批人' : item.nodeType == 'Ccto' ? '抄送人' : item.nodeType ==
|
|
81
|
+
'Executor' ? '执行人' : '') : item.userList && item.userList[0] &&
|
|
82
|
+
item.userList[0].userName }}</div>
|
|
83
|
+
<!-- <div class="porcessTimeTime"
|
|
84
|
+
v-if="!(item.userList && item.userList.length > 0)">
|
|
85
|
+
{{ item.timestamp }}</div> -->
|
|
86
|
+
</div>
|
|
87
|
+
<div class="porcessTimeNodeName">{{ item.nodeType == 'Approver' ? '审批节点' : item.nodeType
|
|
88
|
+
== 'Ccto' ? '抄送节点' : item.nodeType == 'Executor' ? '执行节点' : '' }}</div>
|
|
89
|
+
|
|
90
|
+
<div class="porcessTimeNodeStatus" :style="{ color: '#66bc5c' }"
|
|
91
|
+
v-if="item.userList && item.userList.length > 1 && (item.nodeType == 'Approver' || item.nodeType == 'Executor')">
|
|
92
|
+
|
|
93
|
+
<span v-if="item.nodeType == 'Approver'">
|
|
94
|
+
{{
|
|
95
|
+
item.multipleAuditType == '1' ? '会签(需所有审批人同意)' : item.multipleAuditType ==
|
|
96
|
+
'2' ? '或签(一名审批人同意即可)' : item.multipleAuditType == '3' ? '依次审批(按顺序依次执行)' : '' }}
|
|
97
|
+
</span>
|
|
98
|
+
<span v-if="item.nodeType == 'Executor'"> {{
|
|
99
|
+
item.multipleAuditType == '1' ? '会签(需所有执行人人提交)' : item.multipleAuditType ==
|
|
100
|
+
'2' ? '或签(一名执行人提交即可)' : item.multipleAuditType == '3' ? '依次审批(按顺序依次提交)' : ''
|
|
101
|
+
}}</span>
|
|
102
|
+
|
|
103
|
+
</div>
|
|
104
|
+
<!-- 子节点 -->
|
|
105
|
+
<div class="sonItemBox flexColumnStart"
|
|
106
|
+
v-if="(item.chooseUser || (item.userList && item.userList.length > 1))">
|
|
107
|
+
<div class="sonItem flexRowStart" v-for="( sonItem, sonIndex ) in item.userList
|
|
108
|
+
" :key="sonIndex">
|
|
109
|
+
<img :src="sonItem.avatar" alt="头像" v-if="sonItem.avatar">
|
|
110
|
+
<img src="hrp-ui-base/assets/process/defaultAvatar.png" alt="" v-else>
|
|
111
|
+
<div class="flexColumnStart porcessTime">
|
|
112
|
+
<div class="porcessTimeNameBox flexRowStartCenter">
|
|
113
|
+
<div class="porcessTimeName flexRowStart">{{ sonItem.userName }}</div>
|
|
114
|
+
</div>
|
|
115
|
+
<div class="porcessTimeNodeName">{{ item.nodeType == 'Approver' ?
|
|
116
|
+
'审批人' : item.nodeType == 'Ccto' ? '抄送人' : item.nodeType ==
|
|
117
|
+
'Executor' ? '执行人' : '' }}</div>
|
|
118
|
+
<!-- <div class="porcessTimeNodeStatus"
|
|
119
|
+
:style="sonItem.nodeStatusName == '处理中' ? { color: '#f37327' } : { color: '#66bc5c' }">
|
|
120
|
+
{{
|
|
121
|
+
sonItem.nodeStatusName }}</div> -->
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
</el-timeline-item>
|
|
128
|
+
</el-timeline>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
<!-- 审批按钮 -->
|
|
133
|
+
<div class="submit-button-box">
|
|
134
|
+
<slot name="temp" v-if="pageType == 'step1'">
|
|
135
|
+
|
|
136
|
+
</slot>
|
|
137
|
+
|
|
138
|
+
<el-button size="default" v-if="pageType == 'step1'" @click="goStep2" type="primary"
|
|
139
|
+
:disabled="submitLoading">下一步</el-button>
|
|
140
|
+
<el-button size="default" v-if="pageType == 'step2'" @click="changePageType('step1')"
|
|
141
|
+
:disabled="submitLoading">返回上一步</el-button>
|
|
142
|
+
<el-button size="default" type="primary" v-if="pageType == 'step2'" @click="submitProcess"
|
|
143
|
+
:disabled="submitLoading">提交</el-button>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
<div class="phonePageBox" v-if="!isPc && !haveSubmit">
|
|
147
|
+
<!-- 选择机构盒子 -->
|
|
148
|
+
<div class="submit-inner-page-box" v-show="deptList.length !== 1 && pageType == 'step1'">
|
|
149
|
+
<div class="inner-page-item">
|
|
150
|
+
<div class="inner-page-item-header">发起人所在部门:</div>
|
|
151
|
+
<div class="formBox">
|
|
152
|
+
<el-select size="default" v-model="chooseDept">
|
|
153
|
+
<el-option :value="item.deptId" :label="item.deptName" v-for="(item) in deptList"
|
|
154
|
+
:key="item.deptId"></el-option>
|
|
155
|
+
</el-select>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
</div>
|
|
159
|
+
<!-- 中部表单盒子 -->
|
|
160
|
+
<div class="submit-inner-page-box" v-show="pageType == 'step1'">
|
|
161
|
+
<div class="innerPageItem ">
|
|
162
|
+
<div class="formBox">
|
|
163
|
+
<slot></slot>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
<!-- 审批流盒子 -->
|
|
168
|
+
<div class="submit-inner-page-box" v-show="pageType == 'step2'">
|
|
169
|
+
<div class="innerPageItem innerAuditBody hide-scroll-bar" style="overflow: scroll">
|
|
170
|
+
<div v-show="pageType === 'step2'">
|
|
171
|
+
<slot name="showInfo"></slot>
|
|
172
|
+
</div>
|
|
173
|
+
<div class="inner-page-item-header">审批节点</div>
|
|
174
|
+
<div class="processBox">
|
|
175
|
+
<el-timeline>
|
|
176
|
+
<el-timeline-item v-for="(item, index) in activities " :key="index" :type="item.type" size="large">
|
|
177
|
+
<div class="timeLineTtem flexRowStart">
|
|
178
|
+
<img :src="item.userList[0].avatar" alt="头像"
|
|
179
|
+
v-if="item.userList && item.userList.length <= 1 && !item.chooseUser && item.userList[0] && item.userList[0].avatar">
|
|
180
|
+
<img src="hrp-ui-base/assets/process/defaultAvatar.png" alt=""
|
|
181
|
+
v-else-if="item.userList && item.userList.length <= 1 && !item.chooseUser && item.userList[0] && !item.userList[0].avatar">
|
|
182
|
+
<div class="flexRowAroundWrap imgbox"
|
|
183
|
+
v-else-if="(item.userList && item.userList.length > 1) && !item.chooseUser">
|
|
184
|
+
<img src="hrp-ui-base/assets/process/manyPeople2.png" alt="头像"
|
|
185
|
+
style="margin-right: 0;width: 35px;height: 25px;" />
|
|
186
|
+
</div>
|
|
187
|
+
<div v-else-if="item.chooseUser" class="iconBox">
|
|
188
|
+
<ChooseMemberPhone ref="chooseMemberPhoneRef"
|
|
189
|
+
:dataSources="item.chooseType == 'user' ? 'user' : item.chooseType == 'role' ? 'role' : 'all'"
|
|
190
|
+
:dataSourcesCondition="item.chooseList ? item.chooseList : []" v-model="item.userList"
|
|
191
|
+
:submit-add="true">
|
|
192
|
+
</ChooseMemberPhone>
|
|
193
|
+
</div>
|
|
194
|
+
<div class="flexColumnStart porcessTime">
|
|
195
|
+
<div class="porcessTimeNodeNameBig">{{ item.nodeName }}</div>
|
|
196
|
+
<div class="porcessTimeNameBox flexRowStartCenter">
|
|
197
|
+
|
|
198
|
+
<div class="porcessTimeName flexRowStart">{{ item.userList && item.userList.length > 1 &&
|
|
199
|
+
!item.chooseUser ? item.userList.length + '位' + (item.nodeType == 'Approver' ? '审批人' :
|
|
200
|
+
item.nodeType == 'Ccto' ? '抄送人' : item.nodeType == 'Executor' ? '执行人' : '') : (item.userList &&
|
|
201
|
+
item.userList.length > 0) && item.chooseUser ? item.userList.length + '位' + (item.nodeType ==
|
|
202
|
+
'Approver' ? '审批人' : item.nodeType == 'Ccto' ? '抄送人' : item.nodeType == 'Executor' ? '执行人' : '')
|
|
203
|
+
:
|
|
204
|
+
item.userList && item.userList[0] && item.userList[0].userName }}</div>
|
|
205
|
+
</div>
|
|
206
|
+
<div class="porcessTimeNodeName">{{ item.nodeType == 'Approver' ? '审批节点' : item.nodeType == 'Ccto' ?
|
|
207
|
+
'抄送节点' : item.nodeType == 'Executor' ? '执行节点' : '' }}</div>
|
|
208
|
+
<!-- <div class="porcessTimeNodeName">{{ item.nodeName }}</div> -->
|
|
209
|
+
<div class="porcessTimeNodeStatus" :style="{ color: '#66bc5c' }"
|
|
210
|
+
v-if="item.userList && item.userList.length > 1 && (item.nodeType == 'Approver' || item.nodeType == 'Executor')">
|
|
211
|
+
<span v-if="item.nodeType == 'Approver'">
|
|
212
|
+
{{ item.multipleAuditType == '1' ? '会签(需所有审批人同意)' : item.multipleAuditType == '2' ?
|
|
213
|
+
'或签(一名审批人同意即可)'
|
|
214
|
+
: item.multipleAuditType == '3' ? '依次审批(按顺序依次执行)' : '' }}
|
|
215
|
+
</span>
|
|
216
|
+
<span v-if="item.nodeType == 'Executor'"> {{
|
|
217
|
+
item.multipleAuditType == '1' ? '会签(需所有执行人人提交)' : item.multipleAuditType == '2' ?
|
|
218
|
+
'或签(一名执行人提交即可)'
|
|
219
|
+
: item.multipleAuditType == '3' ? '依次审批(按顺序依次提交)' : '' }}</span>
|
|
220
|
+
</div>
|
|
221
|
+
<!-- 子节点 -->
|
|
222
|
+
<div class="sonItemBox flexColumnStart"
|
|
223
|
+
v-if="(item.chooseUser || (item.userList && item.userList.length > 1))">
|
|
224
|
+
<div class="sonItem flexRowStart" v-for="( sonItem, sonIndex ) in item.userList
|
|
225
|
+
" :key="sonIndex">
|
|
226
|
+
<img :src="sonItem.avatar" alt="头像" v-if="sonItem.avatar">
|
|
227
|
+
<img src="hrp-ui-base/assets/process/defaultAvatar.png" alt="" v-else>
|
|
228
|
+
<div class="flexColumnStart porcessTime">
|
|
229
|
+
<div class="porcessTimeNameBox flexRowStartCenter">
|
|
230
|
+
<div class="porcessTimeName flexRowStart">{{ sonItem.userName }}</div>
|
|
231
|
+
<!-- <div class="porcessTimeTime">{{
|
|
232
|
+
sonItem.timestamp }}
|
|
233
|
+
</div> -->
|
|
234
|
+
</div>
|
|
235
|
+
<div class="porcessTimeNodeName">{{ item.nodeType == 'Approver' ?
|
|
236
|
+
'审批人' : item.nodeType == 'Ccto' ? '抄送人' : item.nodeType ==
|
|
237
|
+
'Executor' ? '执行人' : '' }}</div>
|
|
238
|
+
<!-- <div class="porcessTimeNodeStatus"
|
|
239
|
+
:style="sonItem.nodeStatusName == '处理中' ? { color: '#f37327' } : { color: '#66bc5c' }">
|
|
240
|
+
{{
|
|
241
|
+
sonItem.nodeStatusName }}</div> -->
|
|
242
|
+
</div>
|
|
243
|
+
</div>
|
|
244
|
+
</div>
|
|
245
|
+
</div>
|
|
246
|
+
</div>
|
|
247
|
+
</el-timeline-item>
|
|
248
|
+
</el-timeline>
|
|
249
|
+
|
|
250
|
+
</div>
|
|
251
|
+
</div>
|
|
252
|
+
</div>
|
|
253
|
+
<div style="height:50px;width:100%"></div>
|
|
254
|
+
<!-- 审批按钮 -->
|
|
255
|
+
<div class="submit-button-box" v-show="buttonShow">
|
|
256
|
+
<!-- <el-button type="primary" size="default" @click="openDialog('1')">同意</el-button>
|
|
257
|
+
<el-button size="default" @click="openDialog('2')">拒绝</el-button>
|
|
258
|
+
<el-button size="default">撤销</el-button> -->
|
|
259
|
+
<el-button size="default" v-if="pageType == 'step1'" @click="goStep2">下一步</el-button>
|
|
260
|
+
<el-button size="default" v-if="pageType == 'step2'" @click="changePageType('step1')">返回上一步</el-button>
|
|
261
|
+
<el-button size="default" type="primary" v-if="pageType == 'step2'" @click="submitProcess"
|
|
262
|
+
:loading="submitLoading">提交</el-button>
|
|
263
|
+
</div>
|
|
264
|
+
|
|
265
|
+
</div>
|
|
266
|
+
<el-dialog v-model="centerDialogVisible" :width="isPc ? '40%' : '80%'" center>
|
|
267
|
+
<div class="flexColumnStart">
|
|
268
|
+
<div>审批意见</div>
|
|
269
|
+
<el-input v-model="textarea" :rows="2" type="textarea" placeholder="请输入..." />
|
|
270
|
+
</div>
|
|
271
|
+
<template #footer>
|
|
272
|
+
<span class="dialog-footer">
|
|
273
|
+
<el-button @click="centerDialogVisible = false">取消</el-button>
|
|
274
|
+
<el-button type="primary" @click="submitForm">
|
|
275
|
+
确认
|
|
276
|
+
</el-button>
|
|
277
|
+
</span>
|
|
278
|
+
</template>
|
|
279
|
+
</el-dialog>
|
|
280
|
+
</div>
|
|
281
|
+
|
|
282
|
+
</template>
|
|
283
|
+
<script lang="ts" setup>
|
|
284
|
+
import { ref, watch, onActivated, PropType, onMounted } from "vue";
|
|
285
|
+
import { MoreFilled } from '@element-plus/icons-vue'
|
|
286
|
+
import { ElMessage } from "element-plus";
|
|
287
|
+
import { IsPhone } from '../utils/getEnv'
|
|
288
|
+
import ChooseMember from './systemCom/choose-member.vue'
|
|
289
|
+
import ChooseMemberPhone from './systemCom/choose-member-phone.vue'
|
|
290
|
+
import throttle from "../utils/throttle";
|
|
291
|
+
/** controller 以及 bo */
|
|
292
|
+
// import FlowSheetController from "hrp-ui-base/api/bms/flow/FlowSheetController";
|
|
293
|
+
import FlowProcessController from "hrp-ui-base/api/bms/flow/FlowProcessController";
|
|
294
|
+
// import FlowInstanceController from "hrp-ui-base/api/bms/flow/FlowInstanceController";
|
|
295
|
+
import DeptController from 'hrp-ui-base/api/hrms/dept/deptController'
|
|
296
|
+
// bo
|
|
297
|
+
import DeptVo from "hrp-ui-base/api/hrms/dept/bo/DeptVo";
|
|
298
|
+
import FlowInstanceBO from "hrp-ui-base/api/bms/flow/bo/FlowInstanceBO";
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
const emits = defineEmits(['validateForm', 'submitProcess','backList'])
|
|
302
|
+
const props = defineProps({
|
|
303
|
+
/** 是否可以提交 */
|
|
304
|
+
'canSubmit': {
|
|
305
|
+
type: Boolean,
|
|
306
|
+
required: true,
|
|
307
|
+
default: false
|
|
308
|
+
},
|
|
309
|
+
/** 业务表单数据 */
|
|
310
|
+
'sendForm': {
|
|
311
|
+
type: Object as PropType<any>,
|
|
312
|
+
required: false,
|
|
313
|
+
default: () => { return {} }
|
|
314
|
+
},
|
|
315
|
+
/** 当前的流应用id */
|
|
316
|
+
'appId': {
|
|
317
|
+
type: String,
|
|
318
|
+
required: true,
|
|
319
|
+
default: ''
|
|
320
|
+
},
|
|
321
|
+
/** 控制loading的传参 */
|
|
322
|
+
'submitLoading': {
|
|
323
|
+
type: Boolean,
|
|
324
|
+
required: true,
|
|
325
|
+
default: false
|
|
326
|
+
},
|
|
327
|
+
/** 发起人的id */
|
|
328
|
+
'promoterId': {
|
|
329
|
+
type: String,
|
|
330
|
+
required: true,
|
|
331
|
+
default: ''
|
|
332
|
+
},
|
|
333
|
+
/** 发起人的部门id - 暂未启用 - 等待反馈后开发使用*/
|
|
334
|
+
'promoterDeptId': {
|
|
335
|
+
type: String,
|
|
336
|
+
required: false,
|
|
337
|
+
default: ''
|
|
338
|
+
},
|
|
339
|
+
/** 服务名称 */
|
|
340
|
+
'jobName': {
|
|
341
|
+
type: String,
|
|
342
|
+
required: true,
|
|
343
|
+
default: ''
|
|
344
|
+
},
|
|
345
|
+
/** 列表的地址,用来返回列表 */
|
|
346
|
+
listPath: {
|
|
347
|
+
type: String,
|
|
348
|
+
required: true,
|
|
349
|
+
default: ''
|
|
350
|
+
}
|
|
351
|
+
})
|
|
352
|
+
let isPc = !IsPhone()
|
|
353
|
+
// 分步逻辑 step1 表单提交页面 step2 得到流页面
|
|
354
|
+
const pageType = ref<string>('step1')
|
|
355
|
+
// 切换当前第几步骤
|
|
356
|
+
const changePageType = (value: string) => {
|
|
357
|
+
pageType.value = value
|
|
358
|
+
}
|
|
359
|
+
// 当前提交页面选择的机构
|
|
360
|
+
const chooseDept = ref<string>('')
|
|
361
|
+
// 下一步 功能点 需要校验表单必填
|
|
362
|
+
const goStep2 = new throttle().use(async () => {
|
|
363
|
+
await emits('validateForm')
|
|
364
|
+
if (props.promoterDeptId || chooseDept.value) {
|
|
365
|
+
setTimeout(() => {
|
|
366
|
+
if (props.canSubmit) {
|
|
367
|
+
let postObj = <any>{}
|
|
368
|
+
for (let i in props.sendForm) {
|
|
369
|
+
if (props.sendForm[i].value) {
|
|
370
|
+
if (props.sendForm[i].value.constructor == Object) {
|
|
371
|
+
// 暂时未出现对象的情况
|
|
372
|
+
} else if (Array.isArray(props.sendForm[i].value)) {
|
|
373
|
+
let oobj = JSON.parse(JSON.stringify(props.sendForm[i]))
|
|
374
|
+
let arrr = []
|
|
375
|
+
for (let j = 0; j < props.sendForm[i].value.length; j++) {
|
|
376
|
+
arrr.push(props.sendForm[i].value[j].id)
|
|
377
|
+
}
|
|
378
|
+
oobj.value = arrr.join(',')
|
|
379
|
+
postObj[i] = oobj
|
|
380
|
+
} else {
|
|
381
|
+
postObj[i] = props.sendForm[i]
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
} else {
|
|
385
|
+
|
|
386
|
+
postObj[i] = props.sendForm[i]
|
|
387
|
+
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
}
|
|
391
|
+
console.error(postObj)
|
|
392
|
+
FlowProcessController.selectInstanceNodeList(postObj, props.promoterId, props.promoterDeptId ? props.promoterDeptId : chooseDept.value, props.appId).then((data: any) => {
|
|
393
|
+
console.log(data)
|
|
394
|
+
if (data.code == 200) {
|
|
395
|
+
changePageType('step2')
|
|
396
|
+
if (data.res && data.res.length > 0) {
|
|
397
|
+
activities.value = data.res
|
|
398
|
+
let arr = []
|
|
399
|
+
data.res.forEach((i: any) => {
|
|
400
|
+
if (i && i.userList) {
|
|
401
|
+
arr.push(i)
|
|
402
|
+
} else {
|
|
403
|
+
let obj = i
|
|
404
|
+
i.userList = []
|
|
405
|
+
arr.push({ ...obj })
|
|
406
|
+
}
|
|
407
|
+
})
|
|
408
|
+
} else {
|
|
409
|
+
|
|
410
|
+
activities.value = []
|
|
411
|
+
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
})
|
|
417
|
+
} else {
|
|
418
|
+
}
|
|
419
|
+
}, 500)
|
|
420
|
+
} else {
|
|
421
|
+
ElMessage({
|
|
422
|
+
message: '请选择发起人机构',
|
|
423
|
+
type: 'error'
|
|
424
|
+
})
|
|
425
|
+
}
|
|
426
|
+
}, 1000, true)
|
|
427
|
+
const haveSubmit = ref<boolean>(false)
|
|
428
|
+
// 提交loading
|
|
429
|
+
const submitLoading = ref<boolean>(false)
|
|
430
|
+
watch(() => { return props.submitLoading }, () => {
|
|
431
|
+
submitLoading.value = props.submitLoading
|
|
432
|
+
}, { deep: true })
|
|
433
|
+
// 提交表单
|
|
434
|
+
const submitProcess = new throttle().use(() => {
|
|
435
|
+
console.log('提交流信息以及表单信息', activities.value)
|
|
436
|
+
let submitObj: FlowInstanceBO = { instanceNodeBOList: [], sheetNumber: props.appId, instanceName: props.jobName ? props.jobName : '未命名表单', businessFormId: '', agentUserId: props.promoterId }
|
|
437
|
+
let canSubmitPickSelf = true
|
|
438
|
+
activities.value.forEach((item: any) => {
|
|
439
|
+
let ids = <string[]>[]
|
|
440
|
+
if (item.userList && Array.isArray(item.userList)) {
|
|
441
|
+
item.userList.forEach((j: any) => {
|
|
442
|
+
ids.push(j.userId)
|
|
443
|
+
})
|
|
444
|
+
}
|
|
445
|
+
if ((!item.userList || !Array.isArray(item.userList) || item.userList.length == 0) && item.chooseUser && !item.nullType) {
|
|
446
|
+
canSubmitPickSelf = false
|
|
447
|
+
}
|
|
448
|
+
submitObj.instanceNodeBOList.push({
|
|
449
|
+
processNodeId: item.processNodeId,
|
|
450
|
+
nodeType: item.nodeType,
|
|
451
|
+
userIdList: ids,
|
|
452
|
+
multipleAuditType: item.multipleAuditType,
|
|
453
|
+
nodeName: item.nodeName,
|
|
454
|
+
})
|
|
455
|
+
|
|
456
|
+
})
|
|
457
|
+
let ruleForm2: any = {}
|
|
458
|
+
if ((props.sendForm.constructor === Object)) {
|
|
459
|
+
for (let i in props.sendForm) {
|
|
460
|
+
ruleForm2[i] = props.sendForm[i].value
|
|
461
|
+
if (i == 'endTime' || i == 'startTime') {
|
|
462
|
+
ruleForm2[i] = props.sendForm[i].value + ':00'
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
if (canSubmitPickSelf) {
|
|
467
|
+
emits('submitProcess', submitObj)
|
|
468
|
+
} else {
|
|
469
|
+
ElMessage({
|
|
470
|
+
message: '请完成自选后提交',
|
|
471
|
+
type: 'error'
|
|
472
|
+
})
|
|
473
|
+
}
|
|
474
|
+
}, 1000, true)
|
|
475
|
+
const chooseMemberPhoneRef = ref()
|
|
476
|
+
const buttonShow = ref(true)
|
|
477
|
+
const changeButtonShow = (value: boolean) => {
|
|
478
|
+
buttonShow.value = value
|
|
479
|
+
}
|
|
480
|
+
const inputValue = ref()
|
|
481
|
+
const activeName = ref('评论')
|
|
482
|
+
// 1 同意弹窗 2 拒绝弹窗
|
|
483
|
+
const dialogType = ref('1')
|
|
484
|
+
const centerDialogVisible = ref(false)
|
|
485
|
+
const textarea = ref('')
|
|
486
|
+
const openDialog = async (type: string) => {
|
|
487
|
+
// 1 同意弹窗
|
|
488
|
+
// 2 拒绝弹窗
|
|
489
|
+
emits('validateForm')
|
|
490
|
+
setTimeout(() => {
|
|
491
|
+
console.debug(props.canSubmit)
|
|
492
|
+
if (props.canSubmit) {
|
|
493
|
+
dialogType.value = type
|
|
494
|
+
centerDialogVisible.value = true
|
|
495
|
+
} else {
|
|
496
|
+
}
|
|
497
|
+
}, 500)
|
|
498
|
+
}
|
|
499
|
+
const handleTabClick = () => {
|
|
500
|
+
console.log(1)
|
|
501
|
+
}
|
|
502
|
+
const commentValue = ref()
|
|
503
|
+
const sendComment = () => {
|
|
504
|
+
if (!commentValue.value) {
|
|
505
|
+
ElMessage({
|
|
506
|
+
message: '请输入内容后发送',
|
|
507
|
+
type: 'warning',
|
|
508
|
+
})
|
|
509
|
+
} else {
|
|
510
|
+
commentList.value.push({
|
|
511
|
+
name: '华佗',
|
|
512
|
+
avatar: 'https://static.dingtalk.com/media/lADPM4OsmZ9lZNbNAgjNAgg_520_520.jpg_120x120.jpg',
|
|
513
|
+
timestamp: '2018-04-12 20:46',
|
|
514
|
+
content: commentValue.value,
|
|
515
|
+
})
|
|
516
|
+
commentValue.value = ''
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
const activities = ref<any>([])
|
|
520
|
+
// 填写审批意见后提交表单
|
|
521
|
+
const submitForm = () => {
|
|
522
|
+
emits('validateForm')
|
|
523
|
+
}
|
|
524
|
+
const commentList = ref([
|
|
525
|
+
{
|
|
526
|
+
name: '华佗',
|
|
527
|
+
avatar: 'https://static.dingtalk.com/media/lADPM4OsmZ9lZNbNAgjNAgg_520_520.jpg_120x120.jpg',
|
|
528
|
+
timestamp: '2018-04-12 20:46',
|
|
529
|
+
content: '第一个评论',
|
|
530
|
+
}, {
|
|
531
|
+
name: '华佗',
|
|
532
|
+
avatar: 'https://static.dingtalk.com/media/lADPM4OsmZ9lZNbNAgjNAgg_520_520.jpg_120x120.jpg',
|
|
533
|
+
timestamp: '2018-04-12 20:46',
|
|
534
|
+
content: '第二个评论',
|
|
535
|
+
|
|
536
|
+
},
|
|
537
|
+
])
|
|
538
|
+
const changeList = ref([
|
|
539
|
+
{
|
|
540
|
+
content: 'Custom icon',
|
|
541
|
+
timestamp: '2018-04-12 20:46',
|
|
542
|
+
size: 'large',
|
|
543
|
+
type: 'primary',
|
|
544
|
+
icon: MoreFilled,
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
content: 'Custom color',
|
|
548
|
+
timestamp: '2018-04-03 20:46',
|
|
549
|
+
color: '#0bbd87',
|
|
550
|
+
},
|
|
551
|
+
{
|
|
552
|
+
content: 'Custom size',
|
|
553
|
+
timestamp: '2018-04-03 20:46',
|
|
554
|
+
size: 'large',
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
content: 'Custom hollow',
|
|
558
|
+
timestamp: '2018-04-03 20:46',
|
|
559
|
+
type: 'primary',
|
|
560
|
+
hollow: true,
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
content: 'Default node',
|
|
564
|
+
timestamp: '2018-04-03 20:46',
|
|
565
|
+
},
|
|
566
|
+
])
|
|
567
|
+
const deptList = ref<DeptVo[]>([])
|
|
568
|
+
const getDeptList = () => {
|
|
569
|
+
DeptController.getDeptListByLocal().then(data => {
|
|
570
|
+
if (data.code == 200 && data.res) {
|
|
571
|
+
deptList.value = data.res
|
|
572
|
+
if (data.res && Array.isArray(data.res) && data.res.length > 0) {
|
|
573
|
+
chooseDept.value = data.res[0].deptId
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
})
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
// 返回列表
|
|
580
|
+
const backList = () => {
|
|
581
|
+
emits('backList')
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
//进入页面后关闭弹框
|
|
585
|
+
onActivated(() => {
|
|
586
|
+
haveSubmit.value = false
|
|
587
|
+
})
|
|
588
|
+
/** 当前用户id */
|
|
589
|
+
onMounted(() => {
|
|
590
|
+
|
|
591
|
+
getDeptList()
|
|
592
|
+
})
|
|
593
|
+
/** 根据逻辑判断 当 外部传入 promoterId 时代表当前状态为代提交的状态,需重新调取接口查询 */
|
|
594
|
+
watch(() => { return props.promoterId }, async () => {
|
|
595
|
+
console.log(props.promoterId)
|
|
596
|
+
if (props.promoterId) {
|
|
597
|
+
await DeptController.getDeptListByUserId(props.promoterId).then(data => {
|
|
598
|
+
if (data.code == 200 && data.res) {
|
|
599
|
+
deptList.value = data.res
|
|
600
|
+
if (data.res && Array.isArray(data.res) && data.res.length > 0) {
|
|
601
|
+
chooseDept.value = data.res[0].deptId
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
})
|
|
605
|
+
} else {
|
|
606
|
+
await getDeptList()
|
|
607
|
+
}
|
|
608
|
+
}, { deep: true, immediate: true })
|
|
609
|
+
|
|
610
|
+
defineExpose({
|
|
611
|
+
chooseDept,
|
|
612
|
+
deptList,
|
|
613
|
+
})
|
|
614
|
+
</script>
|
|
615
|
+
<style lang="scss" scoped>
|
|
616
|
+
@use './styles/common.scss';
|
|
617
|
+
@use './styles/submit-approve-pc.scss';
|
|
618
|
+
@use './styles/submit-approve-phone.scss';
|
|
619
|
+
</style>
|
|
620
|
+
<style lang="scss">
|
|
621
|
+
.inner-page-top-form-box,
|
|
622
|
+
.page-form-box {
|
|
623
|
+
.el-select__wrapper {
|
|
624
|
+
border: none;
|
|
625
|
+
box-shadow: none;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
</style>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface userBo {
|
|
2
|
+
userId: string;
|
|
3
|
+
userName: string;
|
|
4
|
+
avatar: string;
|
|
5
|
+
roleName: string;
|
|
6
|
+
}
|
|
7
|
+
export interface departBo {
|
|
8
|
+
deptId: string;
|
|
9
|
+
deptName: string;
|
|
10
|
+
}
|
|
11
|
+
export interface nameForSearchBo {
|
|
12
|
+
name: string;
|
|
13
|
+
id: string;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1724230585754" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4282" width="200" height="200" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M486.881882 602.834824v80.353882a240.941176 240.941176 0 0 0-240.941176 240.941176H165.647059a321.234824 321.234824 0 0 1 321.234823-321.295058z m0-40.116706c-133.12 0-240.941176-107.821176-240.941176-240.941177s107.821176-240.941176 240.941176-240.941176 240.941176 107.821176 240.941177 240.941176-107.821176 240.941176-240.941177 240.941177z m0-80.353883a160.587294 160.587294 0 1 0 0-321.234823 160.587294 160.587294 0 1 0 0 321.234823z m104.207059 313.705412a140.950588 140.950588 0 0 1 0-65.174588l-39.815529-23.009883 40.176941-69.511529 39.755294 23.009882c16.022588-15.179294 35.358118-26.322824 56.500706-32.647529v-45.959529h80.293647v45.959529c21.383529 6.384941 40.658824 17.709176 56.440471 32.647529l39.755294-23.009882 40.237176 69.511529-39.875765 23.009883c5.12 21.443765 5.12 43.730824 0 65.174588l39.875765 23.009882-40.176941 69.51153-39.815529-23.009883a140.348235 140.348235 0 0 1-56.440471 32.64753v45.959529h-80.293647v-45.959529a140.348235 140.348235 0 0 1-56.440471-32.64753l-39.815529 23.009883-40.176941-69.51153 39.815529-23.009882z m136.734118 27.648a60.235294 60.235294 0 1 0 0-120.470588 60.235294 60.235294 0 0 0 0 120.470588z" fill="#8C8C8C" p-id="4283"></path></svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface roleBo {
|
|
2
|
+
groupId: string;
|
|
3
|
+
groupName: string;
|
|
4
|
+
roleId: string;
|
|
5
|
+
roleName: string;
|
|
6
|
+
roleVoList: roleItemBo[];
|
|
7
|
+
}
|
|
8
|
+
export interface roleOldBo {
|
|
9
|
+
groupId: string;
|
|
10
|
+
groupName: string;
|
|
11
|
+
roleVoList: roleItemBo[];
|
|
12
|
+
}
|
|
13
|
+
export interface roleItemBo {
|
|
14
|
+
roleId: string;
|
|
15
|
+
roleName: string;
|
|
16
|
+
}
|