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.
Files changed (190) hide show
  1. package/dist/components.cjs +1 -1
  2. package/dist/components.es.js +4 -4
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.es.js +83 -67
  5. package/dist/style.css +1 -1
  6. package/package.json +15 -4
  7. package/packages/approval-process/.eslintrc +7 -0
  8. package/packages/approval-process/README.md +130 -0
  9. package/packages/approval-process/index.ts +65 -0
  10. package/packages/approval-process/package.json +17 -0
  11. package/packages/approval-process/packages/components/choose-member/BO/departBo.ts +8 -0
  12. package/packages/approval-process/packages/components/choose-member/BO/memberBo.ts +14 -0
  13. package/packages/approval-process/packages/components/choose-member/BO/role.svg +1 -0
  14. package/packages/approval-process/packages/components/choose-member/BO/roleBo.ts +16 -0
  15. package/packages/approval-process/packages/components/choose-member/index.vue +497 -0
  16. package/packages/approval-process/packages/components/choose-member/styles/common.scss +134 -0
  17. package/packages/approval-process/packages/components/comment/assets/avatar.svg +1 -0
  18. package/packages/approval-process/packages/components/comment/assets/download.svg +4 -0
  19. package/packages/approval-process/packages/components/comment/assets/mp3.svg +11 -0
  20. package/packages/approval-process/packages/components/comment/assets/mp4.svg +11 -0
  21. package/packages/approval-process/packages/components/comment/assets/other.svg +11 -0
  22. package/packages/approval-process/packages/components/comment/assets/pdf.svg +11 -0
  23. package/packages/approval-process/packages/components/comment/assets/ppt.svg +11 -0
  24. package/packages/approval-process/packages/components/comment/assets/preview.svg +4 -0
  25. package/packages/approval-process/packages/components/comment/assets/remove.png +0 -0
  26. package/packages/approval-process/packages/components/comment/assets/word.svg +11 -0
  27. package/packages/approval-process/packages/components/comment/assets/xls.svg +11 -0
  28. package/packages/approval-process/packages/components/comment/index.vue +843 -0
  29. package/packages/approval-process/packages/components/comment/modules/previewMp.vue +54 -0
  30. package/packages/approval-process/packages/components/comment/styles/comment-style.scss +304 -0
  31. package/packages/approval-process/packages/components/image-cropper/index.vue +202 -0
  32. package/packages/approval-process/packages/components/sign/index.vue +766 -0
  33. package/packages/approval-process/packages/components/sign/modules/full-screen-sign.vue +20 -0
  34. package/packages/approval-process/packages/components/urge-dialog/index.vue +121 -0
  35. package/packages/approval-process/packages/components/vue-esign/index.vue +289 -0
  36. package/packages/approval-process/packages/flow/approve-component/approve-success.vue +82 -0
  37. package/packages/approval-process/packages/flow/approve-component/route-params-error.vue +49 -0
  38. package/packages/approval-process/packages/flow/approve-component/submit-success.vue +59 -0
  39. package/packages/approval-process/packages/flow/examine-approve-itr.vue +978 -0
  40. package/packages/approval-process/packages/flow/examine-approve.vue +1065 -0
  41. package/packages/approval-process/packages/flow/form-component/associated-approval-form/README.md +38 -0
  42. package/packages/approval-process/packages/flow/form-component/associated-approval-form/assets/avatar.svg +1 -0
  43. package/packages/approval-process/packages/flow/form-component/associated-approval-form/index.vue +159 -0
  44. package/packages/approval-process/packages/flow/form-component/associated-approval-form/modules/associated-approval-form-mobile.vue +297 -0
  45. package/packages/approval-process/packages/flow/form-component/associated-approval-form/modules/associated-approval-form-pc.vue +314 -0
  46. package/packages/approval-process/packages/flow/form-component/associated-approval-form/style/curd-area-mobile.scss +110 -0
  47. package/packages/approval-process/packages/flow/form-component/associated-approval-form/style/curd-area.scss +96 -0
  48. package/packages/approval-process/packages/flow/form-component/associated-approval-form/style/out-put.scss +48 -0
  49. package/packages/approval-process/packages/flow/form-component/show-sign.vue +27 -0
  50. package/packages/approval-process/packages/flow/styles/common.scss +134 -0
  51. package/packages/approval-process/packages/flow/styles/examine-approve-pc.scss +465 -0
  52. package/packages/approval-process/packages/flow/styles/examine-approve-phone.scss +293 -0
  53. package/packages/approval-process/packages/flow/styles/submit-approve-pc.scss +379 -0
  54. package/packages/approval-process/packages/flow/styles/submit-approve-phone.scss +337 -0
  55. package/packages/approval-process/packages/flow/submit-approve-itr.vue +623 -0
  56. package/packages/approval-process/packages/flow/submit-approve.vue +628 -0
  57. package/packages/approval-process/packages/flow/systemCom/BO/departBo.ts +8 -0
  58. package/packages/approval-process/packages/flow/systemCom/BO/memberBo.ts +14 -0
  59. package/packages/approval-process/packages/flow/systemCom/BO/role.svg +1 -0
  60. package/packages/approval-process/packages/flow/systemCom/BO/roleBo.ts +16 -0
  61. package/packages/approval-process/packages/flow/systemCom/choose-depart.vue +399 -0
  62. package/packages/approval-process/packages/flow/systemCom/choose-member-phone.vue +515 -0
  63. package/packages/approval-process/packages/flow/systemCom/choose-member.vue +565 -0
  64. package/packages/approval-process/packages/flow/systemCom/choose-role.vue +301 -0
  65. package/packages/approval-process/packages/styles/common.scss +134 -0
  66. package/packages/approval-process/packages/styles/flex-common.scss +118 -0
  67. package/packages/approval-process/packages/styles/flexCommon.scss +73 -0
  68. package/packages/approval-process/packages/styles/main.css +216 -0
  69. package/packages/approval-process/packages/styles/router-page.scss +371 -0
  70. package/packages/approval-process/packages/styles/style-set.ts +207 -0
  71. package/packages/approval-process/packages/types.d.ts +4 -0
  72. package/packages/approval-process/packages/utils/base.ts +15 -0
  73. package/packages/approval-process/packages/utils/crypto.ts +67 -0
  74. package/packages/approval-process/packages/utils/ddUtils.ts +56 -0
  75. package/packages/approval-process/packages/utils/debounce.ts +36 -0
  76. package/packages/approval-process/packages/utils/des.js +1107 -0
  77. package/packages/approval-process/packages/utils/download.ts +38 -0
  78. package/packages/approval-process/packages/utils/editor.ts +37 -0
  79. package/packages/approval-process/packages/utils/getEnv.ts +36 -0
  80. package/packages/approval-process/packages/utils/os.ts +20 -0
  81. package/packages/approval-process/packages/utils/path-util.ts +31 -0
  82. package/packages/approval-process/packages/utils/routerUtil.ts +304 -0
  83. package/packages/approval-process/packages/utils/string-utils.ts +13 -0
  84. package/packages/approval-process/packages/utils/throttle.ts +44 -0
  85. package/packages/approval-process/packages/utils/validate.ts +92 -0
  86. package/packages/approval-process/packages/utils/ws.ts +218 -0
  87. package/packages/approval-process/tsconfig.json +72 -0
  88. package/packages/approval-process/vite.config.ts +56 -0
  89. package/src/api/bms/flow/FlowCommentController.ts +50 -0
  90. package/src/api/bms/flow/FlowInstanceController.ts +167 -0
  91. package/src/api/bms/flow/FlowProcessController.ts +55 -0
  92. package/src/api/bms/flow/FlowSheetController.ts +27 -0
  93. package/src/api/bms/flow/FlowSignController.ts +76 -0
  94. package/src/api/bms/flow/bo/AssociatedApprovalBO.ts +15 -0
  95. package/src/api/bms/flow/bo/AssociatedApprovalVO.ts +35 -0
  96. package/src/api/bms/flow/bo/AuditBaseInfo.ts +39 -0
  97. package/src/api/bms/flow/bo/ButtonVo.ts +7 -0
  98. package/src/api/bms/flow/bo/DingCallbackBo.ts +13 -0
  99. package/src/api/bms/flow/bo/FlowCommentBO.ts +12 -0
  100. package/src/api/bms/flow/bo/FlowCommentVO.ts +23 -0
  101. package/src/api/bms/flow/bo/FlowInstanceBO.ts +14 -0
  102. package/src/api/bms/flow/bo/FlowNodeVO.ts +24 -0
  103. package/src/api/bms/flow/bo/FlowNoticeBO.ts +17 -0
  104. package/src/api/bms/flow/bo/FlowProcessBO.ts +13 -0
  105. package/src/api/bms/flow/bo/FlowProcessVO.ts +9 -0
  106. package/src/api/bms/flow/bo/FlowReplyVO.ts +23 -0
  107. package/src/api/bms/flow/bo/FlowSheetVO.ts +16 -0
  108. package/src/api/bms/flow/bo/InstanceBackBO.ts +9 -0
  109. package/src/api/bms/flow/bo/InstanceNodeBO.ts +13 -0
  110. package/src/api/bms/flow/bo/InstanceNodeVO.ts +21 -0
  111. package/src/api/bms/flow/bo/NodeShowVo.ts +19 -0
  112. package/src/api/bms/flow/bo/ReviewBO.ts +11 -0
  113. package/src/api/bms/flow/bo/SheetSearchBO.ts +11 -0
  114. package/src/api/bms/flow/bo/SystemVO.ts +7 -0
  115. package/src/api/bms/flow/bo/TransmitBO.ts +9 -0
  116. package/src/api/bms/flow/bo/UrgeFlowBO.ts +7 -0
  117. package/src/api/bms/flow/bo/UserBaseInfoVo.ts +13 -0
  118. package/src/api/bms/flow/bo/UserInfoVo.ts +44 -0
  119. package/src/api/bms/flow/bo/UserResultVo.ts +17 -0
  120. package/src/api/bms/flow/bo/ValueMapBo.ts +7 -0
  121. package/src/api/bms/home/HomeController.ts +106 -0
  122. package/src/api/bms/home/bo/CollectedMenuBo.ts +9 -0
  123. package/src/api/bms/home/bo/DeptBaseVo.ts +9 -0
  124. package/src/api/bms/home/bo/DomainVO.ts +13 -0
  125. package/src/api/bms/home/bo/FunPermission.ts +17 -0
  126. package/src/api/bms/home/bo/GroupVO.ts +10 -0
  127. package/src/api/bms/home/bo/HomeMenu.ts +22 -0
  128. package/src/api/bms/home/bo/HomeMenuVo.ts +11 -0
  129. package/src/api/bms/home/bo/PersonalizationBo.ts +17 -0
  130. package/src/api/bms/home/bo/PersonalizationVo.ts +19 -0
  131. package/src/api/bms/home/bo/PhoneMenu.ts +14 -0
  132. package/src/api/bms/home/bo/SearchMenuVo.ts +10 -0
  133. package/src/api/bms/home/bo/UserBaseInfoVo.ts +11 -0
  134. package/src/api/hrms/dept/bo/DeptBaseVo.ts +6 -0
  135. package/src/api/hrms/dept/bo/DeptTreeVo.ts +23 -0
  136. package/src/api/hrms/dept/bo/DeptUserVo.ts +9 -0
  137. package/src/api/hrms/dept/bo/DeptUsersVo.ts +10 -0
  138. package/src/api/hrms/dept/bo/DeptVo.ts +19 -0
  139. package/src/api/hrms/dept/bo/UserBaseInfoVo.ts +8 -0
  140. package/src/api/hrms/dept/deptController.ts +100 -0
  141. package/src/api/hrms/role/bo/RoleBaseVo.ts +6 -0
  142. package/src/api/hrms/role/bo/RoleGroupVo.ts +11 -0
  143. package/src/api/hrms/role/bo/RoleVo.ts +22 -0
  144. package/src/api/hrms/role/roleController.ts +19 -0
  145. package/src/api/hrms/user/bo/UserBaseInfoVo.ts +11 -0
  146. package/src/api/hrms/user/bo/UserCardVO.ts +14 -0
  147. package/src/api/hrms/user/bo/UserDeptBO.ts +13 -0
  148. package/src/api/hrms/user/bo/UserRoleBO.ts +11 -0
  149. package/src/api/hrms/user/bo/UserVO.ts +23 -0
  150. package/src/api/hrms/user/userController.ts +86 -0
  151. package/src/api/work-order-pc/flow/Bo/ValueMapBo.ts +7 -0
  152. package/src/api/work-order-pc/flow/ItrFlowProcessController.ts +42 -0
  153. package/src/api/work-order-pc/flow/Vo/FlowNodeVO.ts +24 -0
  154. package/src/api/work-order-pc/flow/Vo/UserInfoVo.ts +44 -0
  155. package/src/assets/process/agree.png +0 -0
  156. package/src/assets/process/defaultAvatar.png +0 -0
  157. package/src/assets/process/drawer/departManagerJump.png +0 -0
  158. package/src/assets/process/drawer/manyLevel1close.svg +10 -0
  159. package/src/assets/process/drawer/manyLevel1open.svg +7 -0
  160. package/src/assets/process/drawer/manyLevel2close.svg +7 -0
  161. package/src/assets/process/drawer/manyLevel2open.svg +7 -0
  162. package/src/assets/process/inProcess.png +0 -0
  163. package/src/assets/process/manyPeople.png +0 -0
  164. package/src/assets/process/manyPeople2.png +0 -0
  165. package/src/assets/process/reject.png +0 -0
  166. package/src/assets/process/revoke.png +0 -0
  167. package/src/components/annex-img-upload/index.vue +4 -4
  168. package/src/components/annex-img-upload/modules/previewMp.vue +1 -1
  169. package/src/components/annex-upload/index.vue +4 -4
  170. package/src/components/annex-upload/modules/previewMp.vue +1 -1
  171. package/src/components/annex-upload-weijian/index.vue +4 -4
  172. package/src/components/annex-upload-weijian/modules/previewMp.vue +1 -1
  173. package/src/components/list-search-content/components/search-date-range.vue +1 -1
  174. package/src/components/list-search-content/components/search-date-time-range.vue +1 -1
  175. package/src/components/list-search-content/components/search-date.vue +1 -1
  176. package/src/components/list-search-content/components/search-input-number.vue +1 -1
  177. package/src/components/list-search-content/components/search-input.vue +1 -1
  178. package/src/components/list-search-content/components/search-multiple_select.vue +1 -1
  179. package/src/components/list-search-content/components/search-select.vue +1 -1
  180. package/src/components/list-search-content/index.vue +6 -6
  181. package/src/components/list-search-content/modules/add-views-package-dialog.vue +3 -3
  182. package/src/components/list-search-content/modules/search-condition-area.vue +2 -2
  183. package/src/components/list-search-content/modules/views-package-manage-dialog.vue +5 -5
  184. package/src/index.ts +1 -0
  185. package/src/utils/dd-utils.ts +1 -1
  186. package/src/utils/get-dict.ts +2 -2
  187. package/src/utils/permit-utils.ts +2 -2
  188. package/src/api/bms/dict/bo/TotalDictSearchBO.ts +0 -8
  189. package/src/api/bms/file/FileExportController.ts +0 -18
  190. package/src/api/bms/file/bo/FileExportVO.ts +0 -17
@@ -0,0 +1,497 @@
1
+ <!-- 选择人员 - 多选 - 单选 -->
2
+ <template>
3
+ <el-dialog v-model="dialogVisible" title="选择人员" :width="800" style="min-height:588px;border-radius: 8px;"
4
+ :footer="true" :show-close="false" class="searchDialog">
5
+ <div class="flexRowStart searchBox" v-loading="formLoading">
6
+ <div class="flexColumnStart searchItem">
7
+ <el-input v-model="searchContent" placeholder="请输入用户名称查询" :suffix-icon="Search"
8
+ @input="goSearch" clearable v-if=" dataSources != 'role'" style="width: 100%"/>
9
+ <div class="companyNameBox flexRowStart" v-if="dataSources != 'user' && dataSources != 'role'">
10
+ <span v-for="(nameItem, nameIndex) in namebox" :key="nameIndex" class="companyNameBoxName"
11
+ @click="goPointLevel(nameItem, nameIndex)">
12
+ {{ nameItem.name }}
13
+ <span v-if="nameIndex != namebox.length - 1" class="companyNameBoxSymbol">
14
+ /
15
+ </span>
16
+ </span>
17
+ </div>
18
+ <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAllChange" size="default"
19
+ v-if="formMultiple">全选</el-checkbox>
20
+
21
+ <el-checkbox-group v-model="checkedMember" @change="handleCheckedMemberChange" size="default"
22
+ class="flexColumnStart optionbox" v-if="formMultiple">
23
+ <div class="flexRowBetween" style="width:100%" v-for="(item, index) in departs" :key="item.deptId">
24
+ <el-checkbox :label="item" size="default" style="margin-bottom: 8px;font-size:18px;width: 340px;min-height:24px;max-height: 24px;
25
+ " disabled>
26
+ {{
27
+ item.deptName
28
+ }}
29
+ </el-checkbox>
30
+ <div style="width:100px;height:24px;font-size: 16px;line-height: 16px;cursor: pointer;" class="flexRowStart"
31
+ @click.stop="goNextLevel(item)">
32
+ <el-icon style="margin-right:4px;">
33
+ <Expand />
34
+ </el-icon>{{ '下级' }}
35
+ </div>
36
+ </div>
37
+ <div class="flexRowBetween" style="width:100%" v-for="(item, index) in members" :key="item.userId">
38
+ <el-checkbox :label="item" size="default" style="margin-bottom: 8px;font-size:18px;width: 340px;min-height:24px;max-height: 24px;
39
+ ">
40
+ {{
41
+ item.userName
42
+ }}
43
+ </el-checkbox>
44
+ </div>
45
+ </el-checkbox-group>
46
+ <el-radio-group v-if="!formMultiple" v-model="checkedMemberForRadio" size="default"
47
+ class="flexColumnStart optionbox" @change="radioChanged">
48
+ <div class="flexRowBetween" style="width:100%" v-for="(item, index) in departs" :key="item.deptId">
49
+ <el-radio :label="item" size="default" style="margin-bottom: 8px;font-size:18px;width: 250px;min-height:24px;max-height: 24px;
50
+ " disabled>
51
+ <div class="flexRowBetween" style="width:300px">
52
+ {{
53
+ item.deptName
54
+ }}
55
+ </div>
56
+
57
+ </el-radio>
58
+ <div style="width:100px;height:24px;font-size: 16px;line-height: 16px;cursor: pointer;" class="flexRowStart"
59
+ @click.stop="goNextLevel(item)">
60
+ <el-icon style="margin-right:4px;">
61
+ <Expand />
62
+ </el-icon>{{ '下级' }}
63
+ </div>
64
+ </div>
65
+ <div class="flexRowBetween" style="width:100%" v-for="(item, index) in members" :key="item.userId">
66
+ <el-radio :label="item" size="default" style="margin-bottom: 8px;font-size:18px;width: 340px;min-height:24px;max-height: 24px;
67
+ ">
68
+ {{
69
+ item.userName
70
+ }}
71
+ </el-radio>
72
+ </div>
73
+ </el-radio-group>
74
+ </div>
75
+ <div class="flexColumnStart searchItem"
76
+ style="padding-left: 8px;border-left: 2px solid #e3e3e3;height: 464px;width:48%;margin-left: 2px;">
77
+ <div class="flexRowBetween" style="width:100%;margin-bottom: 18px;">
78
+ <div>已选择</div>
79
+ <div style="color:skyblue;cursor: pointer;" @click="resetChoose">清空</div>
80
+ </div>
81
+ <div class="flexRowStartCenter" style="flex-wrap: wrap;">
82
+ <div class="chooseItem flexRowStartCenter" v-for="(item, index) in checkedMember" :key="item.userId">
83
+ <img :src="item.avatar" alt="" v-if="item.avatar">
84
+ <img src="hrp-ui-base/assets/process/defaultAvatar.png" alt="" v-if="!item.avatar">
85
+ <div class="chooseItemName">{{ item.userName }}</div>
86
+ <el-icon class="chooseItemIcon" @click="deleteCheckedItem(index)">
87
+ <Close />
88
+ </el-icon>
89
+ </div>
90
+ </div>
91
+ </div>
92
+ </div>
93
+ <template #footer>
94
+ <span class="dialog-footer">
95
+ <el-button @click="cancelDia">取消</el-button>
96
+ <el-button type="primary" @click="saveDia">
97
+ 确定
98
+ </el-button>
99
+ </span>
100
+ </template>
101
+ </el-dialog>
102
+ </template>
103
+ <script lang="ts" setup>
104
+ import { reactive, ref, onMounted, shallowRef, toRefs, watch } from 'vue'
105
+ import { Search, Watch } from '@element-plus/icons-vue'
106
+ // import SystemUserController from 'hrp-ui-base/api/system/controller/user/SystemUserController'
107
+ import DeptController from "hrp-ui-base/api/hrms/dept/deptController";
108
+ import RoleController from "hrp-ui-base/api/hrms/role/roleController";
109
+ import UserController from "hrp-ui-base/api/hrms/user/userController";
110
+ import type { userBo, departBo, nameForSearchBo } from './BO/memberBo'
111
+ import { debounce } from 'lodash';
112
+ const formMultiple= ref<boolean>(true)
113
+ const emits = defineEmits(['success', 'changeCheckMemberId'])
114
+ // 数据来源类型以及数据
115
+ const dataSources = ref<string>("")
116
+ const dataSourcesCondition= ref<any[]>([])
117
+
118
+ const open = (checkList:userBo[],multiple:boolean,sendDataSources:'user'| 'role'| 'all',sendDataSourcesCondition:any[])=>{
119
+ checkedMember.value = checkList ? checkList : []
120
+ formMultiple.value = multiple
121
+ if(!multiple){
122
+ checkedMemberForRadio.value = checkedMember.value[0]
123
+ }
124
+ dataSources.value = sendDataSources
125
+ if(Array.isArray(sendDataSourcesCondition)){
126
+ dataSourcesCondition.value = sendDataSourcesCondition
127
+ }else{
128
+ dataSourcesCondition.value = []
129
+ }
130
+ changeDigVis(true)
131
+ }
132
+ /** 复制出的数据 */
133
+ const copyMembers = ref<userBo[]>([])
134
+ const getList =async (id: string) => {
135
+ formLoading.value = true
136
+ if (dataSources.value == 'user') {
137
+ let userIds = <any>[]
138
+ if (dataSourcesCondition.value && dataSourcesCondition.value.length > 0) {
139
+ userIds = dataSourcesCondition.value
140
+ }
141
+ await UserController.getLivingUserListByIds(userIds).then((data) => {
142
+ if (data.res) {
143
+ let arr = <any>[]
144
+ if (data.res.length > 0) {
145
+ data.res.forEach((item) => {
146
+ arr.push({ ...item, id: item.userId })
147
+ })
148
+ }
149
+ members.value = arr
150
+ copyMembers.value = JSON.parse(JSON.stringify(arr))
151
+ }
152
+ // if (data.res && data.res.deptVoList) {
153
+ // departs.value = data.res?.deptVoList
154
+ // }
155
+ // checkAll.value = false
156
+ })
157
+ } else if (dataSources.value == 'role') {
158
+ let roleIds = <any>[]
159
+ if (dataSourcesCondition.value && dataSourcesCondition.value.length > 0) {
160
+ roleIds = dataSourcesCondition.value
161
+ }
162
+ await UserController.getUserListByRoleIds(roleIds).then((data) => {
163
+ console.log(data)
164
+ if (data.res) {
165
+ let arr = <any>[]
166
+ if (data.res.length > 0) {
167
+ data.res.forEach((item) => {
168
+ arr.push({ ...item, id: item.userId })
169
+ })
170
+ }
171
+ members.value = arr
172
+ }
173
+ // if (data.res && data.res.userList) {
174
+ // let arr = <any>[]
175
+ // if (data.res.userList.length > 0) {
176
+ // data.res.userList.forEach((item) => {
177
+ // arr.push({ ...item, id: item.userId })
178
+ // })
179
+ // }
180
+ // members.value = arr
181
+ // }
182
+ // if (data.res && data.res.deptVoList) {
183
+ // departs.value = data.res?.deptVoList
184
+ // }
185
+ // checkAll.value = false
186
+ })
187
+ } else {
188
+ await DeptController.getDeptUserListByParentId(id).then((data) => {
189
+ if (data.res && data.res.userList) {
190
+ let arr = <any>[]
191
+ if (data.res.userList.length > 0) {
192
+ data.res.userList.forEach((item) => {
193
+ arr.push({ ...item, id: item.userId })
194
+ })
195
+ }
196
+ members.value = arr
197
+ }
198
+ if (data.res && data.res.deptVoList) {
199
+ departs.value = data.res?.deptVoList
200
+ }
201
+ checkAll.value = false
202
+ })
203
+ }
204
+ formLoading.value = false
205
+
206
+ }
207
+ const dialogVisible = ref(false)
208
+ const searchContent = ref('')
209
+ const checkAll = ref(false)
210
+ const isIndeterminate = ref(false)
211
+ const checkedMember = ref<userBo[]>([])
212
+ let members = ref<userBo[]>([])
213
+ let departs = ref<departBo[]>([])
214
+ // 点击多选
215
+ const handleCheckAllChange = (val: boolean) => {
216
+ let copyMembers = JSON.parse(JSON.stringify(checkedMember.value))
217
+ for (let j = checkedMember.value.length - 1; j >= 0; j--) {
218
+ members.value.forEach((item, index) => {
219
+ if (item.userId == checkedMember.value[j].userId) {
220
+ console.log(item, checkedMember.value[j])
221
+ copyMembers.splice(j, 1)
222
+ }
223
+ })
224
+ }
225
+ if (val) {
226
+ members.value.forEach((item, index) => {
227
+ copyMembers.push(item)
228
+ })
229
+ }
230
+ checkedMember.value = copyMembers
231
+ // checkedMember.value = val ? members.value : []
232
+ isIndeterminate.value = false
233
+ }
234
+ const handleCheckedMemberChange = (value: any) => {
235
+
236
+ let chooseAllAll = true
237
+ let havaOneChoose = false
238
+ members.value.forEach((j, jndex) => {
239
+ let havaValue = false
240
+ value.forEach((i: any, index: number) => {
241
+
242
+ if (i.userId == j.userId) {
243
+ havaValue = true
244
+ havaOneChoose = true
245
+ }
246
+ })
247
+ if (!havaValue) {
248
+ chooseAllAll = false
249
+ }
250
+ })
251
+ console.log(value, chooseAllAll, havaOneChoose)
252
+ isIndeterminate.value = chooseAllAll ? false : havaOneChoose
253
+ checkAll.value = chooseAllAll
254
+
255
+ // let copyMembers = [...checkedMember]
256
+ // members.value.forEach((item,index)=>{
257
+ // value.forEach((id:string,idIndex:number)=>{
258
+ // if(item.userId == id){
259
+
260
+ // }
261
+ // })
262
+ // })
263
+
264
+ }
265
+ /** loading */
266
+ const formLoading = ref<boolean>(false)
267
+ /** 当前的数据的来源类型 dept-组织架构 search-直接搜索 */
268
+ const currentType = ref<'dept' | 'search'>('dept')
269
+ /** 输入用户名搜索用户列表 */
270
+ const goSearch = debounce(async (value: string) => {
271
+ formLoading.value = true
272
+ if (dataSources.value == 'user') {
273
+ if (copyMembers.value && Array.isArray(copyMembers.value) && copyMembers.value.length > 0) {
274
+
275
+ members.value = copyMembers.value.filter((item) => {
276
+ return item.userName.includes(value)
277
+ })
278
+ console.log(members.value)
279
+ }
280
+ } else {
281
+ if (value) {
282
+ currentType.value = 'search'
283
+ /** 调用查询函数 */
284
+ await UserController.selectUserByName(value).then((data) => {
285
+ if (data.code === 200 && data.res) {
286
+ members.value = data.res.map((item) => { return { ...item, id: item.userId } })
287
+ departs.value = []
288
+ } else {
289
+ members.value = []
290
+ departs.value = []
291
+ }
292
+ })
293
+ } else {
294
+ // 切换为dept类型
295
+ currentType.value = 'dept'
296
+ await getList('1')
297
+ }
298
+ }
299
+ formLoading.value = false
300
+ }, 1000)
301
+ const namebox = ref([{ name: '全部', id: '1' }])
302
+ const resetChoose = () => {
303
+ checkedMember.value.length = 0
304
+ checkedMemberForRadio.value = undefined
305
+ checkAll.value = false
306
+ isIndeterminate.value = false
307
+ }
308
+ // 去下级
309
+ const goNextLevel = async (item: departBo) => {
310
+ await getList(item.deptId)
311
+ namebox.value.push({ id: item.deptId, name: item.deptName })
312
+ }
313
+ // 改变当前层级,点击部门名字
314
+ const goPointLevel = async (item: nameForSearchBo, index: number) => {
315
+ await getList(item.id)
316
+ namebox.value.splice(index + 1, namebox.value.length - index - 1)
317
+ }
318
+ const changeDigVis = async (value: boolean) => {
319
+ if (value) {
320
+ await getList('1')
321
+ namebox.value = [{ name: '全部', id: '1' }]
322
+ searchContent.value = ""
323
+ }
324
+ dialogVisible.value = value
325
+ }
326
+ const cancelDia = () => {
327
+ changeDigVis(false)
328
+ }
329
+ const saveDia = () => {
330
+
331
+ let arr: Array<string> = []
332
+
333
+ checkedMember.value.forEach((item, index) => {
334
+ arr.push(item.userId)
335
+ })
336
+ emits('changeCheckMemberId', arr)
337
+
338
+ emits('success',checkedMember.value)
339
+ changeDigVis(false)
340
+
341
+ }
342
+ // 删除某个以选项
343
+ const deleteCheckedItem = (index: number) => {
344
+ checkedMember.value.splice(index, 1)
345
+ }
346
+ // 单选绑定的值
347
+ const checkedMemberForRadio = ref<userBo>()
348
+ // 改变单选时将值赋给checkedMember
349
+ const radioChanged = (value: userBo) => {
350
+ console.debug(value)
351
+ checkedMember.value.length = 0
352
+ checkedMember.value.push(value)
353
+ }
354
+
355
+
356
+ defineExpose({
357
+ open
358
+ })
359
+ </script>
360
+ <style lang="scss" scoped>
361
+ @use './styles/common.scss';
362
+
363
+
364
+ .el-button--text {
365
+ margin-right: 15px;
366
+ }
367
+
368
+ .dialog-footer button:first-child {
369
+ margin-right: 10px;
370
+ }
371
+
372
+ .searchBox {
373
+ width: 100%;
374
+ flex-grow: 0;
375
+ flex-shrink: 0;
376
+ font-size: var(--font-size-body);
377
+ }
378
+
379
+ .searchItem {
380
+ width: 50%;
381
+ }
382
+
383
+ .chooseItem {
384
+ padding: 2px 6px;
385
+ margin: 0 10px 8px 0;
386
+ background-color: var(--custom-theme-info-6);
387
+ height: 30px;
388
+ max-height: 30px;
389
+
390
+ img {
391
+ border-radius: 50%;
392
+ margin-right: 4px;
393
+ width: 16px;
394
+ height: 16px;
395
+ }
396
+
397
+ &Name {
398
+ margin-right: 8px;
399
+ }
400
+
401
+ &Icon {
402
+ cursor: pointer;
403
+ }
404
+ }
405
+
406
+ .triggerArea {
407
+ width: 100%;
408
+ min-height: 32px;
409
+ height: min-content;
410
+ border: 1px solid rgb(229, 230, 232);
411
+ padding: 8px;
412
+
413
+ .triggerItem {
414
+ margin-right: 8px;
415
+ margin-bottom: 3px;
416
+ display: inline-block;
417
+ overflow: hidden;
418
+ text-overflow: ellipsis;
419
+ white-space: nowrap;
420
+ color: var(--custom-theme-text-2);
421
+ border-color: #cfd2d5;
422
+ background-color: var(--custom-theme-info-5);
423
+
424
+ padding: 2px 12px;
425
+ cursor: pointer;
426
+ font-size: var(--font-size-body);
427
+ }
428
+ }
429
+
430
+ .companyNameBox {
431
+ font-size: var(--font-size-h2);
432
+ line-height: 30px;
433
+ overflow: hidden;
434
+ // text-overflow: ellipsis;
435
+ white-space: nowrap;
436
+ overflow-x: auto;
437
+ width: 100%;
438
+
439
+ &Name {
440
+ color: #1890ff;
441
+ cursor: pointer;
442
+ }
443
+
444
+ &Symbol {
445
+ margin: 0 9px;
446
+ color: #a3a3a3
447
+ }
448
+ }
449
+
450
+ .optionbox {
451
+ overflow-y: auto;
452
+ height: 365px;
453
+ width: 100%;
454
+ flex-grow: 0;
455
+ flex-shrink: 0;
456
+ flex-wrap: nowrap;
457
+ }
458
+
459
+ .abbreviateItem {
460
+ font-size: var(--el-font-size-base);
461
+ margin: 0 18px;
462
+ height: 20px;
463
+ line-height: 20px;
464
+ }
465
+
466
+ .iconBoxForSubmitAdd {
467
+ border-radius: 6px;
468
+ background-color: #d8d8d8;
469
+ background-size: cover;
470
+ border-radius: 6px;
471
+ float: left;
472
+ height: 40px;
473
+ margin-right: 12px;
474
+ width: 40px;
475
+ overflow: hidden;
476
+ text-align: center;
477
+ line-height: 40px;
478
+ font-size: 28px;
479
+ color: #878f95;
480
+ }
481
+ </style>
482
+ <style lang="scss">
483
+ .searchBox {
484
+ .el-checkbox {
485
+ margin-right: 0;
486
+ --el-checkbox-font-size:var(--font-size-description)
487
+ }
488
+
489
+ }
490
+
491
+ .searchDialog {
492
+ .el-dialog__body {
493
+ padding-top: 10px;
494
+ padding-bottom: 10px;
495
+ }
496
+ }
497
+ </style>
@@ -0,0 +1,134 @@
1
+ $background-color:#f9f9f9;
2
+ $button-color: white;
3
+ $button-background: black;
4
+ $button-icon-color: white;
5
+ $line-background: #e3e3e3;
6
+ $arrow-background: #006cff;
7
+ $arrow-color: white;
8
+ $operate-background: #1e5db4;
9
+ $operate-color: white;
10
+ $aduit-background: white;
11
+ $aduit-icon-color: blue;
12
+ $aduit-title-color: #e3e3e3;
13
+ $common-background: #006cff;
14
+ $common-color: white;
15
+
16
+ .flexColumnCenter {
17
+ display: flex;
18
+ flex-direction: column;
19
+ justify-content: flex-start;
20
+ align-items: center;
21
+ }
22
+ .flexColumnCenterCenter {
23
+ display: flex;
24
+ flex-direction: column;
25
+ justify-content: center;
26
+ align-items: center;
27
+ }
28
+ .flexColumnCenterStart {
29
+ display: flex;
30
+ flex-direction: column;
31
+ justify-content: flex-start;
32
+ align-items: flex-start;
33
+ }
34
+
35
+ .flexColumnStart {
36
+ display: flex;
37
+ flex-direction: column;
38
+ justify-content: flex-start;
39
+ align-items: flex-start;
40
+ }
41
+
42
+ .flexRowCenter {
43
+ display: flex;
44
+ flex-direction: row;
45
+ justify-content: center;
46
+ align-items: center;
47
+ }
48
+
49
+ .flexRowStart {
50
+ display: flex;
51
+ flex-direction: row;
52
+ justify-content: flex-start;
53
+ align-items: flex-start;
54
+ flex-wrap: wrap;
55
+ }
56
+
57
+ .flexRowStartCenter {
58
+ display: flex;
59
+ flex-direction: row;
60
+ justify-content: flex-start;
61
+ align-items: center;
62
+ }
63
+ .flexRowBetween{
64
+ display: flex;
65
+ flex-direction: row;
66
+ justify-content: space-between;
67
+ align-items: center;
68
+ }
69
+
70
+ .flexColumnBetween{
71
+ display: flex;
72
+ flex-direction: column;
73
+ justify-content: space-between;
74
+ align-items: center;
75
+ }
76
+ .flexRowAround{
77
+ display: flex;
78
+ flex-direction: row;
79
+ justify-content: space-around;
80
+ align-items: center;
81
+ }
82
+ .flexRowAroundWrap{
83
+ display: flex;
84
+ flex-direction: row;
85
+ justify-content: space-around;
86
+ align-items: center;
87
+ flex-wrap: wrap;
88
+ }
89
+ .iconCommon {
90
+ border-radius: 50%;
91
+ color: $common-color;
92
+ background: $common-background;
93
+ font-size: 12px;
94
+ width: 30px;
95
+ height: 30px;
96
+ text-align: center;
97
+ line-height: 30px;
98
+ margin-right: 8px;
99
+ }
100
+
101
+ .contentTitle {
102
+ font-size: 14px;
103
+ font-weight: 600;
104
+ margin: 12px 0 4px;
105
+ }
106
+
107
+ .divideWord {
108
+ margin: 0 12px;
109
+ font-size: 14px;
110
+ }
111
+ .select-text {
112
+ height: 30px;
113
+ flex-shrink: 0;
114
+ display: flex;
115
+ justify-content: center;
116
+ font-size: 16px;
117
+ padding: 0 10px !important;
118
+ margin: 0 18px;
119
+ color: #606266;
120
+ align-items: center;
121
+ border: 1px solid #dcdfe6;
122
+ border-radius: 5px;
123
+ background-color: #ffffff;
124
+ }
125
+
126
+ .manyLevel{
127
+ img{
128
+ width: 240px;
129
+ }
130
+ strong{
131
+ font-weight: 600;
132
+ margin-top: 8px;
133
+ }
134
+ }
@@ -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="1713777384214" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3763" width="256" height="256" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M512.049993 0.016664C229.336805 0.016664 0.116651 229.116001 0.116651 511.950007c0 174.135659 86.980341 327.898971 219.842209 420.345267 26.046609-90.704856 92.104674-158.833485 181.926311-189.616977 2.416352-0.829059 4.857701-1.620622 7.303216-2.395521 1.699779-0.533264 3.387059-1.087358 5.103502-1.595626a316.654602 316.654602 0 0 1 14.056503-3.841166 338.080979 338.080979 0 0 1 11.515167-2.657988c1.491472-0.312459 3.007942-0.599922 4.507747-0.895716a340.214035 340.214035 0 0 1 13.998177-2.470512 337.372738 337.372738 0 0 1 9.57792-1.337326c1.441479-0.187476 2.874626-0.38745 4.328603-0.549928a355.545372 355.545372 0 0 1 14.031506-1.353991H538.029944c4.728551 0.354121 9.398776 0.820726 14.044005 1.353991 1.424814 0.162479 2.837131 0.358287 4.253613 0.53743a361.594584 361.594584 0 0 1 14.38146 2.116391c3.212082 0.545762 6.390835 1.137352 9.557089 1.766437 1.349824 0.266632 2.703815 0.520766 4.049473 0.799895a327.582346 327.582346 0 0 1 26.067439 6.628304c1.299831 0.38745 2.574665 0.804062 3.861997 1.208176 2.970447 0.929046 5.915896 1.883088 8.832183 2.89129 89.467517 30.866814 155.250618 98.845463 181.268065 189.275355 132.745215-92.458794 219.642234-246.163781 219.642234-420.207785-0.004166-282.834006-229.220154-511.933342-511.937509-511.933343z m0 725.443042c-133.116001 0-241.02695-107.910949-241.026949-241.02695 0-1.266502 0.07499-2.516339 0.095821-3.774508-1.312329-152.371827 141.514907-244.059888 241.168598-237.252441h0.116651c102.153365-6.96576 249.88413 89.280042 241.264419 248.230178-0.254134 0.158313-0.529098 0.27913-0.783232 0.437443-4.045307 129.570629-110.281474 233.386278-240.835308 233.386278z" fill="#D6E079" p-id="3764"></path><path d="M512.287463 357.482619c-24.325999 103.44903-170.644447 178.443432-240.910299 134.153366a243.572452 243.572452 0 0 1-0.258299-10.977737c-0.020831 1.262336-0.095821 2.512173-0.095821 3.774508 0 133.111834 107.910949 241.02695 241.026949 241.02695 130.553834 0 236.790001-103.815649 240.835308-233.386278-70.674131 43.277698-216.238511-31.512563-240.597838-134.590809z" fill="#FCE9EA" p-id="3765"></path><path d="M566.051295 728.834266zM552.078115 726.934514c1.424814 0.162479 2.837131 0.358287 4.253613 0.53743-1.420648-0.179143-2.832964-0.374951-4.253613-0.53743zM439.867726 732.192162c1.491472-0.312459 3.007942-0.599922 4.507746-0.895716-1.499805 0.295795-3.016274 0.583257-4.507746 0.895716zM610.383023 738.782971c1.299831 0.38745 2.574665 0.804062 3.861997 1.208176-1.287332-0.404114-2.566333-0.820726-3.861997-1.208176zM453.515948 729.613332zM425.382112 735.604218zM467.951569 727.484442c1.441479-0.187476 2.874626-0.38745 4.328603-0.549928-1.453977 0.162479-2.887124 0.362453-4.328603 0.549928zM580.266111 731.354772c1.349824 0.266632 2.703815 0.520766 4.049473 0.799895-1.341492-0.27913-2.699648-0.533264-4.049473-0.799895zM512.049993 823.834397c-0.995704 0-1.978909-0.05416-2.96628-0.074991l2.96628 2.078896 2.957949-2.078896c-0.983205 0.024997-1.966411 0.07499-2.957949 0.074991z" fill="#A0D9F6" p-id="3766"></path><path d="M623.077203 742.882437c0.81656 0.27913 1.633121 0.574925 2.445515 0.862388a119.234475 119.234475 0 0 1-10.456971 22.092957c17.285249 26.21742 12.985809 141.631558-12.910819 123.417263l-45.110793-31.650046-44.994142-31.766697-45.110792 31.766697-44.994142 31.650046c-25.896628 18.214295-30.196068-97.199844-12.910819-123.413097a119.651087 119.651087 0 0 1-10.423642-22.005468c1.091525-0.38745 2.178883-0.783231 3.274573-1.154017-89.825804 30.783492-155.879703 98.907955-181.926311 189.616977 82.84338 57.646661 183.513605 91.467257 292.091133 91.467257 108.665018 0 209.410233-33.874756 292.291108-91.604739-26.017446-90.434058-91.800547-158.412707-181.263898-189.279521zM409.192553 740.282776c1.699779-0.53743 3.387059-1.087358 5.103502-1.595626-1.716443 0.508267-3.40789 1.062362-5.103502 1.595626z" fill="#A0D9F6" p-id="3767"></path><path d="M409.038406 765.841948c3.449551-5.228486 7.744825-6.932431 12.910819-3.299571l44.994142 31.650046 42.144512 29.571149c0.987371 0.020831 1.970577 0.07499 2.966281 0.074991 0.991538 0 1.974743-0.049993 2.957948-0.074991l42.036193-29.571149 45.110793-31.650046c5.161828-3.63286 9.461268-1.928916 12.910819 3.295405a119.109491 119.109491 0 0 0 10.456972-22.092957c-0.812394-0.287463-1.628955-0.583257-2.445515-0.862388-2.916287-1.008202-5.861737-1.966411-8.832184-2.89129-1.287332-0.404114-2.562166-0.820726-3.861997-1.208176a329.382112 329.382112 0 0 0-26.067439-6.628304c-1.341492-0.27913-2.695482-0.533264-4.049473-0.799895-3.166254-0.624919-6.345007-1.220674-9.557089-1.766437a349.579482 349.579482 0 0 0-14.38146-2.116391c-1.416482-0.179143-2.828798-0.374951-4.253613-0.53743a356.182789 356.182789 0 0 0-14.044005-1.353991H486.311678a356.311939 356.311939 0 0 0-14.031506 1.353991c-1.449811 0.162479-2.882958 0.362453-4.328603 0.549928a353.141518 353.141518 0 0 0-14.435621 2.124723 354.20388 354.20388 0 0 0-9.140476 1.683115c-1.499805 0.295795-3.016274 0.583257-4.507746 0.895716-3.874496 0.820726-7.711496 1.708111-11.515168 2.657988-0.991538 0.249967-1.983075 0.499935-2.970446 0.758234a323.374561 323.374561 0 0 0-11.086057 3.082932c-1.716443 0.508267-3.403723 1.058196-5.103502 1.595626a340.164041 340.164041 0 0 0-7.303216 2.395521c-1.095691 0.374951-2.183049 0.770733-3.274573 1.154017a119.017836 119.017836 0 0 0 10.423642 22.009634z" fill="#FEFEFE" p-id="3768"></path><path d="M602.154928 762.542377l-45.110793 31.650046-42.036193 29.571149-2.957949 2.078896 44.994142 31.766697 45.110793 31.650046c25.896628 18.214295 30.196068-97.199844 12.910819-123.417263-3.445385-5.228486-7.748991-6.932431-12.910819-3.299571zM466.939201 794.192423l-44.994142-31.650046c-5.161828-3.63286-9.461268-1.928916-12.910819 3.299571-17.285249 26.213253-12.985809 141.627392 12.910819 123.413097l44.994142-31.650046 45.110792-31.766697-2.96628-2.078896-42.144512-29.566983z" fill="#FA9689" p-id="3769"></path><path d="M512.287463 357.482619V243.405807c-99.653691-6.803281-242.480927 84.884781-241.168598 237.252441 0.029163 3.637026 0.062492 7.274053 0.258299 10.977737 70.265851 44.2859 216.580133-30.704335 240.910299-134.153366z" fill="#FECF77" p-id="3770"></path><path d="M512.287463 357.482619c24.359328 103.078245 169.923708 177.868507 240.597838 134.590809 0.2583-0.158313 0.533264-0.27913 0.783232-0.437443 8.619711-158.954303-139.115219-255.200104-241.264419-248.230178h-0.116651v114.076812z" fill="#F7B970" p-id="3771"></path></svg>
@@ -0,0 +1,4 @@
1
+ <svg id="组_1264" data-name="组 1264" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
+ <rect id="BG" width="16" height="16" fill="none"/>
3
+ <path id="路径_391" data-name="路径 391" d="M128.667,142.667h14.667a.667.667,0,0,1,0,1.333H128.667a.667.667,0,1,1,0-1.333m8-5.285,4.923-4.924.943.943-6.6,6.6-6.6-6.6.943-.943,5.057,5.057V128h1.333Z" transform="translate(-128 -128)" fill="#909399"/>
4
+ </svg>