sasp-admin 0.2.57

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 (141) hide show
  1. package/index.js +227 -0
  2. package/package.json +19 -0
  3. package/router.js +83 -0
  4. package/src/assets/font/iconfont.css +1346 -0
  5. package/src/assets/font/iconfont.eot +0 -0
  6. package/src/assets/font/iconfont.js +1 -0
  7. package/src/assets/font/iconfont.svg +827 -0
  8. package/src/assets/font/iconfont.ttf +0 -0
  9. package/src/assets/font/iconfont.woff +0 -0
  10. package/src/assets/images/loading-bar.gif +0 -0
  11. package/src/assets/js/adminInstall.js +36 -0
  12. package/src/assets/js/api/apiAdmin.js +613 -0
  13. package/src/assets/js/global/dataGlobal.js +260 -0
  14. package/src/assets/js/global/logGlobal.js +22 -0
  15. package/src/assets/js/global/paramGlobal.js +67 -0
  16. package/src/assets/js/global/resGlobal.js +91 -0
  17. package/src/assets/js/global/userGlobal.js +283 -0
  18. package/src/components/complexViewRendering.vue +601 -0
  19. package/src/components/ifmLink.vue +71 -0
  20. package/src/components/public/data/plDataCascader.vue +85 -0
  21. package/src/components/public/data/plDataRadio.vue +73 -0
  22. package/src/components/public/data/plDataRadioGroup.vue +70 -0
  23. package/src/components/public/data/plDataSelect.vue +856 -0
  24. package/src/components/public/data/plDatePicker.vue +159 -0
  25. package/src/components/public/org/bg.png +0 -0
  26. package/src/components/public/org/sysOrgPosUserSelect.vue +1237 -0
  27. package/src/components/public/org/sysOrgPosUserSelectDark.vue +1402 -0
  28. package/src/components/public/org/sysOrgPosUserSelectNew.vue +1527 -0
  29. package/src/components/public/upload/images/compress.png +0 -0
  30. package/src/components/public/upload/images/emipty.png +0 -0
  31. package/src/components/public/upload/images/excel.png +0 -0
  32. package/src/components/public/upload/images/file.png +0 -0
  33. package/src/components/public/upload/images/pdf.png +0 -0
  34. package/src/components/public/upload/images/powerpoint.png +0 -0
  35. package/src/components/public/upload/images/project.png +0 -0
  36. package/src/components/public/upload/images/sound.png +0 -0
  37. package/src/components/public/upload/images/txt.png +0 -0
  38. package/src/components/public/upload/images/video.png +0 -0
  39. package/src/components/public/upload/images/visio.png +0 -0
  40. package/src/components/public/upload/images/word.png +0 -0
  41. package/src/components/public/upload/plImage.vue +287 -0
  42. package/src/components/public/upload/plImgUpload.vue +137 -0
  43. package/src/components/public/upload/plUpload.vue +1124 -0
  44. package/src/components/public/upload/uploadImg.js +8 -0
  45. package/src/main.js +0 -0
  46. package/src/views/VueMenuView.vue +143 -0
  47. package/src/views/cloudMenuView.vue +125 -0
  48. package/src/views/complex/config/complex.vue +501 -0
  49. package/src/views/complex/config/complexSetting.vue +1250 -0
  50. package/src/views/complex/rendering/complexShow.vue +16 -0
  51. package/src/views/data/dataManage.vue +560 -0
  52. package/src/views/data/sysData.vue +292 -0
  53. package/src/views/event/eventManager/vueEventDiy.vue +1184 -0
  54. package/src/views/event/eventManager/vueEventMain.vue +108 -0
  55. package/src/views/event/eventManager/vueEventSys.vue +296 -0
  56. package/src/views/event/js/apiEvent.js +22 -0
  57. package/src/views/fileLog/fileDownloadLog.vue +437 -0
  58. package/src/views/initData/initData.vue +4316 -0
  59. package/src/views/log/dblog/logdbDevelop.vue +306 -0
  60. package/src/views/log/dblog/logdbEnt.vue +331 -0
  61. package/src/views/log/dblog/logdbGov.vue +395 -0
  62. package/src/views/log/error/logError.vue +553 -0
  63. package/src/views/log/loginlog/logManageDevOrSup.vue +357 -0
  64. package/src/views/log/loginlog/logManageEnt.vue +343 -0
  65. package/src/views/log/loginlog/logManageGov.vue +328 -0
  66. package/src/views/log/sms/logSms.vue +308 -0
  67. package/src/views/menu/component/menuManageComponent.vue +2402 -0
  68. package/src/views/menu/component/menuModule.vue +449 -0
  69. package/src/views/menu/menuLocal.vue +223 -0
  70. package/src/views/menu/menuManage.vue +1135 -0
  71. package/src/views/menu/tenantMenuManage.vue +1132 -0
  72. package/src/views/menuRouter/cview/cviewShow.vue +18 -0
  73. package/src/views/menuRouter/cviewMenuRouter.vue +183 -0
  74. package/src/views/menuRouter/menuView.vue +132 -0
  75. package/src/views/menuRouter/urlMenuRouter.vue +160 -0
  76. package/src/views/org/entOrgTree.vue +1050 -0
  77. package/src/views/org/ownerMenu/ownerMenuTree.vue +269 -0
  78. package/src/views/org/safeValidate/safeValidate.vue +469 -0
  79. package/src/views/org/sysEntOrgUserDetail.vue +3390 -0
  80. package/src/views/org/sysOrgDimension.vue +832 -0
  81. package/src/views/org/sysOrgPosUserDetail.vue +1648 -0
  82. package/src/views/org/sysOrgPosUserTree.vue +1101 -0
  83. package/src/views/org/sysOrgTree.vue +864 -0
  84. package/src/views/param/sysParam.vue +987 -0
  85. package/src/views/preview/pdfViewer.vue +82 -0
  86. package/src/views/resources/js/resourcesCommon.js +137 -0
  87. package/src/views/resources/resRouter/resView.vue +161 -0
  88. package/src/views/resources/resourcesTabs.vue +82 -0
  89. package/src/views/resources/tabs/comp/pageResPreview.vue +309 -0
  90. package/src/views/resources/tabs/comp/pageResRegister.vue +1120 -0
  91. package/src/views/resources/tabs/dataResources.vue +843 -0
  92. package/src/views/resources/tabs/pageResources.vue +970 -0
  93. package/src/views/role/allowMenu.vue +148 -0
  94. package/src/views/role/authRole/authRole.vue +427 -0
  95. package/src/views/role/authRole/component/allocateSetting.vue +1056 -0
  96. package/src/views/role/authRole/component/authSetting.vue +1196 -0
  97. package/src/views/role/commonRole/commonRole.vue +677 -0
  98. package/src/views/role/commonRole/compoment/allocateRoleMenuSetting.vue +335 -0
  99. package/src/views/role/commonRole/compoment/authLinkMenuTree.vue +55 -0
  100. package/src/views/role/commonRole/compoment/authSettingNew.vue +190 -0
  101. package/src/views/role/commonRole/compoment/commonSetting.vue +1576 -0
  102. package/src/views/role/commonRole/compoment/commonSettingAdjust.vue +584 -0
  103. package/src/views/role/commonRole/compoment/commonSettingNew.vue +572 -0
  104. package/src/views/role/commonRole/compoment/roleMenuPower.vue +226 -0
  105. package/src/views/role/commonRole/compoment/roleMenuPowerSetting.vue +69 -0
  106. package/src/views/role/commonRole/compoment/roleMenuSetting.vue +365 -0
  107. package/src/views/role/commonRole/compoment/roleSourceSetting.vue +229 -0
  108. package/src/views/role/commonRole/tenantCommonRole.vue +768 -0
  109. package/src/views/role/role.vue +135 -0
  110. package/src/views/role/roleMenuOption.vue +898 -0
  111. package/src/views/role/roleSynchroRemind.vue +399 -0
  112. package/src/views/role/sysRole.vue +1525 -0
  113. package/src/views/role/viewMenuOptDetail.vue +182 -0
  114. package/src/views/sms/sendSms.vue +164 -0
  115. package/src/views/station/orgStation.vue +561 -0
  116. package/src/views/tenant/appContentManager.vue +938 -0
  117. package/src/views/tenant/appManager.vue +642 -0
  118. package/src/views/tenant/tenantRoleManager.vue +670 -0
  119. package/src/views/tenant/tenantUserManager.vue +615 -0
  120. package/src/views/threeinone/compoment/safeCascadeSelect.vue +327 -0
  121. package/src/views/threeinone/init/safeInitRegion.vue +203 -0
  122. package/src/views/threeinone/safeManager.vue +927 -0
  123. package/src/views/threeinone/safeMenuManage.vue +565 -0
  124. package/src/views/threeinone/safeOrgSpv.vue +364 -0
  125. package/src/views/threeinone/safeSpv/safeSpvLeftTree.vue +109 -0
  126. package/src/views/threeinone/safeSpv/safeSpvMain.vue +335 -0
  127. package/src/views/threeinone/safeSpvEconView.vue +569 -0
  128. package/src/views/threeinone/safeValidateRegion.vue +328 -0
  129. package/src/views/urlResource/urlResource.vue +856 -0
  130. package/src/views/user/empowerUser/empowerEntUserManage.vue +415 -0
  131. package/src/views/user/empowerUser/empowerOrgTree.vue +167 -0
  132. package/src/views/user/empowerUser/empowerUserList.vue +633 -0
  133. package/src/views/user/empowerUser/empowerUserListMenuDeatil.vue +656 -0
  134. package/src/views/user/empowerUser/empowerUserListViewMenuTree.vue +257 -0
  135. package/src/views/user/empowerUser/empowerUserManage.vue +99 -0
  136. package/src/views/user/stationUserManage.vue +934 -0
  137. package/src/views/user/userManage.vue +737 -0
  138. package/src/views/user/userMangement.vue +938 -0
  139. package/src/views/user/viewMenu/viewMenu.vue +113 -0
  140. package/src/views/versionupdatetool/versionUpdateTool.vue +225 -0
  141. package/src/views/versionupdatetool/versioninfomation/verisonInfomationManagement.vue +68 -0
@@ -0,0 +1,934 @@
1
+ <template>
2
+ <el-container class="userMange-content" style="height: 100%" v-show="show">
3
+ <el-header style="height: auto;">
4
+ <div class="search-form-parent el-card">
5
+ <el-form :inline="true" :model="crud.searchForm" size="small" class="demo-form-inline"
6
+ @keyup.enter.native="crud.doSearch()" onSubmit="return false;">
7
+ <el-form-item label="用户名称">
8
+ <el-input v-model="crud.searchForm.userNameUnified" placeholder="中文、拼音全拼、简拼"></el-input>
9
+ </el-form-item>
10
+ <el-form-item label="用户状态">
11
+ <el-select v-model="crud.searchForm.userStatus" clearable>
12
+ <el-option v-for="item in searchFormUserStatus" :key="item.value" :value="item.value"
13
+ :label="item.label">
14
+ </el-option>
15
+ </el-select>
16
+ </el-form-item>
17
+
18
+ <el-form-item>
19
+ <el-button type="primary" icon="el-icon-search" @click="crud.doSearch()">查询</el-button>
20
+ <el-button icon="el-icon-close" @click="crud.resetSearch()">清空</el-button>
21
+ </el-form-item>
22
+ </el-form>
23
+ </div>
24
+ </el-header>
25
+
26
+ <el-main id="tableMain" style="height: 100%">
27
+ <el-container style="height:100%" class="table-list-container">
28
+ <el-header style="height: auto;" size="medium">
29
+ <el-button v-if="adminAuth" type="primary" size="small" round icon="el-icon-circle-plus" @click="addUser()">新增
30
+ </el-button>
31
+ <el-button v-if="queryUserType != 'dev' && adminAuth" type="warning" size="small" round
32
+ @click="toggleLockedUser('20')"><i class="saspiconfont pl-icon-pwd"></i><span></span>锁定用户
33
+ </el-button>
34
+ <el-button v-if="queryUserType != 'dev' && adminAuth" type="success" size="small" round
35
+ @click="toggleLockedUser('10')"><i class="saspiconfont pl-icon-08"></i><span></span>解锁用户
36
+ </el-button>
37
+ <el-button v-if="(queryUserType != 'ent' || mayOperate == true) && adminAuth" type="danger" size="small" round
38
+ icon="el-icon-delete" @click="remove()">删除
39
+ </el-button>
40
+ </el-header>
41
+ <el-main style="height: 100%;" ref="tableMain">
42
+ <el-table :data="crud.dataStore.records" :ref="crud.tableRef" stripe border height="100%"
43
+ style="width: 100%;">
44
+ <el-table-column type="selection" width="40" align="center"></el-table-column>
45
+ <el-table-column type="index" label="序号" align="center" width="60"></el-table-column>
46
+ <el-table-column label="用户名称" prop="userName" align="center" width="300"></el-table-column>
47
+ <el-table-column label="用户账号" prop="userAccount" align="center" width="300"></el-table-column>
48
+ <el-table-column label="所在组织" :formatter="formatterOrgName" prop="parentOrgName" align="center" show-overflow-tooltip></el-table-column>
49
+ <el-table-column label="当前状态" prop="userStatus" align="center" width="100">
50
+ <template slot-scope="scope">
51
+ <el-tag :type="userStatusColor[scope.row.userStatus]">
52
+ {{userStatusObj[scope.row.userStatus]}}
53
+ </el-tag>
54
+ </template>
55
+ </el-table-column>
56
+ <el-table-column label="操作" align="center" width="350">
57
+ <template slot-scope="scope">
58
+ <!--v-if="queryUserType != 'ent' && (scope.row.created == loginUser.id || mayOperate)"-->
59
+ <el-button size="small" icon="el-icon-edit" type="primary"
60
+ @click="updateData(scope.row)" v-if="adminAuth">
61
+ 修改
62
+ </el-button>
63
+ <!--<el-button size="small" icon="el-icon-edit-outline" type="primary" v-if="queryUserType != 'ent'"-->
64
+ <!--@click="changePwd(scope.row)">-->
65
+ <!--修改密码-->
66
+ <!--</el-button>-->
67
+ <el-button size="small" icon="el-icon-setting" type="danger"
68
+ v-if="scope.row.created == loginUser.id || mayOperate"
69
+ @click="resetPwd(scope.row)">
70
+ 重置密码
71
+ </el-button>
72
+ <el-button size="small" icon="el-icon-zoom-in" type="warning"
73
+ v-if="queryUserType != 'dev'"
74
+ @click="viewMenu(scope.row)">
75
+ 查看菜单
76
+ </el-button>
77
+ </template>
78
+ </el-table-column>
79
+ </el-table>
80
+ </el-main>
81
+ </el-container>
82
+ </el-main>
83
+
84
+ <el-footer>
85
+ <el-pagination
86
+ :ref="crud.pageRef"
87
+ :page-sizes="crud.pageSizes"
88
+ :page-size="crud.pageSize"
89
+ :current-page="crud.page"
90
+ :total="crud.dataStore.total"
91
+ @size-change="crud.sizeChange()"
92
+ @current-change="crud.currentPage()"
93
+ layout="total, sizes, prev, pager, next, jumper">
94
+ </el-pagination>
95
+ </el-footer>
96
+
97
+ <el-dialog :close-on-click-modal=false :title="title" :visible.sync="formDataDialog" top="15vh" height="72%" width="60%">
98
+ <el-form :model="formData" ref="formDataRef" :rules="rules" label-width="120px">
99
+ <el-row>
100
+
101
+ <!--<el-col :span="12">-->
102
+ <!--<el-form-item label="用户账号" label-width="150px" prop="userAccount">-->
103
+ <!--<el-input v-model="formData.userAccount"></el-input>-->
104
+ <!--</el-form-item>-->
105
+ <!--</el-col>-->
106
+ <!--<el-col :span="12">-->
107
+ <!--<el-form-item label="用户姓名" label-width="150px" prop="userName">-->
108
+ <!--<el-input v-model="formData.userName"></el-input>-->
109
+ <!--</el-form-item>-->
110
+ <!--</el-col>-->
111
+ <!--<el-col :span="12">-->
112
+ <!--<el-form-item label="用户类型" label-width="150px" prop="userType">-->
113
+ <!--<el-select v-model="formData.userType" style="width: 100%">-->
114
+ <!--<el-option v-for="item in typeOptions" :key="item.value" :label="item.label"-->
115
+ <!--:value="item.value">-->
116
+ <!--</el-option>-->
117
+ <!--</el-select>-->
118
+ <!--</el-form-item>-->
119
+ <!--</el-col>-->
120
+
121
+ <!--<el-col :span="12">-->
122
+ <!--<el-form-item label="手机号码" label-width="150px" prop="userPhone">-->
123
+ <!--<el-input v-model="formData.userPhone"></el-input>-->
124
+ <!--</el-form-item>-->
125
+ <!--</el-col>-->
126
+ <!--<el-col :span="12">-->
127
+ <!--<el-form-item label="电子邮箱" label-width="150px" prop="userEmail">-->
128
+ <!--<el-input v-model="formData.userEmail"></el-input>-->
129
+ <!--</el-form-item>-->
130
+ <!--</el-col>-->
131
+
132
+ <!--<el-col :span="12">-->
133
+ <!--<el-form-item label="身份证号" label-width="150px" prop="userIdcard" :rules="plValidate('idcard')">-->
134
+ <!--<el-input v-model="formData.userIdcard"></el-input>-->
135
+ <!--</el-form-item>-->
136
+ <!--</el-col>-->
137
+ <!--<el-col :span="12">-->
138
+ <!--<el-form-item label="用户状态" label-width="150px" prop="userStatus">-->
139
+ <!--<el-radio-group v-model="formData.userStatus" size="medium">-->
140
+ <!--<el-radio-button label="10">正常</el-radio-button>-->
141
+ <!--<el-radio-button label="20">锁定</el-radio-button>-->
142
+ <!--</el-radio-group>-->
143
+ <!--</el-form-item>-->
144
+ <!--</el-col>-->
145
+
146
+ <el-col :span="24" style="text-align: center;">
147
+ <div class="header-title">
148
+ 基本信息
149
+ </div>
150
+ <el-divider class="header-divider">
151
+ <div class="header-slider">
152
+ </div>
153
+ </el-divider>
154
+ </el-col>
155
+ <el-col :span="12">
156
+ <el-form-item label="用户账号" prop="userAccount">
157
+ <el-input v-model="formData.userAccount"></el-input>
158
+ </el-form-item>
159
+ </el-col>
160
+ <el-col :span="12">
161
+ <el-form-item label="用户姓名" prop="userName">
162
+ <el-input v-model="formData.userName"></el-input>
163
+ </el-form-item>
164
+ </el-col>
165
+ <el-col :span="12">
166
+ <el-form-item label="用户状态" prop="userStatus">
167
+ <el-select v-model="formData.userStatus"
168
+ style="width: 100%">
169
+ <el-option v-for="(item,key) in statusOptions" :key="key" :value="item.value"
170
+ :label="item.label">
171
+ </el-option>
172
+ </el-select>
173
+ </el-form-item>
174
+ </el-col>
175
+ <el-col :span="24" style="text-align: center;">
176
+ <div class="header-title">
177
+ 扩展信息
178
+ </div>
179
+ <el-divider class="header-divider">
180
+ <div class="header-slider">
181
+ </div>
182
+ </el-divider>
183
+ </el-col>
184
+ <!--<el-col :span="12">-->
185
+ <!--<el-form-item label="岗位名称" prop="stationIdArr">-->
186
+ <!--<el-select v-model="formData.stationIdArr" clearable filterable allow-create multiple-->
187
+ <!--style="width: 100%">-->
188
+ <!--<el-option v-for="(value,key) in allStationObj" :key="key" :value="key"-->
189
+ <!--:label="value">-->
190
+ <!--</el-option>-->
191
+ <!--</el-select>-->
192
+ <!--</el-form-item>-->
193
+ <!--</el-col>-->
194
+
195
+ <el-col :span="12">
196
+ <el-form-item label="工号" prop="jobNum" >
197
+ <el-input v-model="formData.jobNum"></el-input>
198
+ </el-form-item>
199
+ </el-col>
200
+
201
+
202
+ <el-col :span="12">
203
+ <el-form-item label="手机号码" prop="userPhone">
204
+ <el-input v-model="formData.userPhone"></el-input>
205
+ </el-form-item>
206
+ </el-col>
207
+ <el-col :span="12">
208
+ <el-form-item label="电子邮箱" prop="userEmail">
209
+ <el-input v-model="formData.userEmail"></el-input>
210
+ </el-form-item>
211
+ </el-col>
212
+
213
+ <el-col :span="12">
214
+ <el-form-item label="身份证号" prop="userIdcard" :rules="plValidate('idcard')">
215
+ <el-input v-model="formData.userIdcard"></el-input>
216
+ </el-form-item>
217
+ </el-col>
218
+ <!--用户类型-->
219
+
220
+
221
+ <!-- <el-col :span="12">-->
222
+ <!-- <el-form-item label="用户角色" label-width="150px" prop="userRoleId">-->
223
+ <!-- <el-select v-model="formData.userRoleId" style="width: 100%" clearable>-->
224
+ <!-- <el-option v-for="item in createPushRoleArr" :key="item.id" :label="item.roleName" :value="item.id">-->
225
+
226
+ <!-- </el-option>-->
227
+ <!-- </el-select>-->
228
+ <!-- </el-form-item>-->
229
+ <!-- </el-col>-->
230
+ </el-row>
231
+ <!--<div >-->
232
+ <!--<el-row>-->
233
+
234
+ <!--</el-row>-->
235
+ <!--</div>-->
236
+ </el-form>
237
+ <div slot="footer" class="dialog-footer">
238
+ <el-button type="primary" @click="submitForm()" size="small" icon="el-icon-success">确 定</el-button>
239
+ <el-button @click="formDataDialog = false" size="small" icon="el-icon-error">取 消</el-button>
240
+ </div>
241
+ </el-dialog>
242
+
243
+ <el-dialog :close-on-click-modal=false :title="menuUserName+'的菜单'" top="5vh" height="90%" width="400px"
244
+ :visible.sync="viewMenuDialog" class="userViewMenuClass">
245
+ <owner-menu-tree :user-id="menuUserId" :user-type="menuUserType" v-if="viewMenuDialog"></owner-menu-tree>
246
+ <div slot="footer" class="dialog-footer">
247
+ <el-button type="primary" @click="viewMenuDialog = false" size="small" icon="el-icon-error">关闭
248
+ </el-button>
249
+ </div>
250
+ </el-dialog>
251
+ </el-container>
252
+ </template>
253
+
254
+ <script>
255
+ import viewMenu from './viewMenu/viewMenu.vue';
256
+ import EmpowerUserViewMenuTree from "./empowerUser/empowerUserListViewMenuTree";
257
+ import ElRadioGroup from "element-ui/packages/radio/src/radio-group";
258
+ import OwnerMenuTree from "../org/ownerMenu/ownerMenuTree";
259
+
260
+ export default { // 新增是否允许修改用户详情,为系统参数,需要新增flyway脚本
261
+ components: {OwnerMenuTree, ElRadioGroup, EmpowerUserViewMenuTree, viewMenu},
262
+ name: "station-user-manage",
263
+ data() {
264
+ // let vm = this;
265
+ // let validUserRepeat = (rule, value, callback) => { // 重名验证
266
+ // // let obj = {"isExit": "true"};
267
+ // // if (rule.field == "userAccount") {
268
+ // // obj["isExitUserAccount"] = vm.formData.userAccount;
269
+ // // }
270
+ // // vm.axios.post(vm.api.sysUser.find, obj).then(res => {
271
+ // // let result = res.data || [];
272
+ // // if (result.length > 0 && result[0].id != vm.formData.id) {
273
+ // // callback(new Error("账号重复"));
274
+ // // } else {
275
+ // callback();
276
+ // // }
277
+ // // })
278
+ // };
279
+ let validUserAccount = (rule, value, callback) => { // 重名验证
280
+ if(!value){
281
+ callback();
282
+ }
283
+ this.axios.post(this.api.sysUser.find, {"userAccount": value}).then(res=> { // 验证账号是否存在
284
+ if(res.data.length == 0 || (this.operateType == 'update' && this.oldUserAccount == value)){
285
+ callback();
286
+ }else{
287
+ return callback(new Error('该用户账号已经存在!'));
288
+ }
289
+ });
290
+
291
+ };
292
+
293
+ return {
294
+ queryUserType: '', // 链接中传入的用户类型
295
+ show: true, // 当前页面是否有操作权限显示
296
+ crud: new this.CrudUtil({
297
+ vue: this,
298
+ entityName: "sysUser",
299
+ url:this.api.sysUser.url,
300
+ searchUrl: this.api.sysUser.findPageParam,
301
+ searchForm: {"orderSql": "TB.CREATE_TIME DESC,TB.USER_STATUS DESC", "getOrgName": "true","parentOrg": "true"}, // 加上排序
302
+ noClearSearchColumns: ["orderSql","userType", "unsup", "ids", "order", "sort", "showCreated", "getOrgName","parentOrg","empowerUser","empowerOrgId","mainEntOrgId"],
303
+ addDefaultData: {"userStatus": "10"},
304
+ initNoSearch: true,
305
+ uploadArr:['zd1']
306
+ }),
307
+ userStatusObj: {
308
+ '10': "正常",
309
+ '20': "锁定",
310
+ '30': "暂时锁定"
311
+ },
312
+ userStatusColor: {
313
+ '10': "success",
314
+ '20': "warning",
315
+ '30': "danger"
316
+ },
317
+ menuUserId: '', // 查看菜单时的userId
318
+ menuUserType:'',
319
+ menuUserName: '', // 查看菜单时的用户名
320
+ viewMenuDialog: false, // 查看菜单的对话框
321
+ formDataDialog: false, // 用户信息对话框
322
+ loading: true, // 加载条
323
+ formData: {
324
+ id: "", 'userAccount': "", userName: "", 'userType': "", 'userStatus': "",
325
+ 'userGender': "", 'userAge': "", 'userQQ': "", 'userPhone': "", 'userEmail': "",userIdcard:"",
326
+ "stationIdArr":[],"userRoleIdArr":[]
327
+ }, // 修改表单用户信息
328
+ typeOptions: [], // 用户类型下拉框
329
+ devTypeOptions: [{value: 'dev', label: '开发者'}], // dev用户类型仅可选一个
330
+ searchFormUserStatus: [
331
+ {value: '10', label: "正常"},
332
+ {value: '20', label: "锁定"},
333
+ {value: '30', label: "暂时锁定"}
334
+ ],
335
+ statusOptions: [
336
+ {value: '10', label: "正常"},
337
+ {value: '20', label: "锁定"}
338
+ ], // 用户状态下拉框
339
+ sexOptions: [
340
+ {value: '男', label: "男"},
341
+ {value: '女', label: "女"}
342
+ ],
343
+ editUserDetail: false, // 是否可以编辑用户详情
344
+ title: "", // 表单标题
345
+ rules: {
346
+ userAccount: [
347
+ {
348
+ required: true,
349
+ message: '该输入项为必输项',
350
+ trigger: 'blur'
351
+ },
352
+ {
353
+ validator: validUserAccount,
354
+ trigger: 'blur'
355
+ }
356
+ ],
357
+ userName: [
358
+ {
359
+ required: true,
360
+ message: '该输入项为必输项',
361
+ trigger: 'blur'
362
+ },
363
+ // {
364
+ // validator: validUserRepeat,
365
+ // trigger: 'blur'
366
+ // }
367
+ ],
368
+ userType: this.plValidate('required'),
369
+ userStatus: this.plValidate('required'),
370
+ userQQ: this.plValidate('qq'),
371
+ userPhone: this.plValidate('phone'),
372
+ userEmail: this.plValidate('email'),
373
+ },
374
+ menuModelObj: {},
375
+ dataDictionaryObj: {},
376
+ menuOptAll: {},
377
+ loginUser: {},
378
+ currentRoleOptAll: {},
379
+ mayOperate: false, // 是否可以操作当前数据,如果是开发者可以
380
+ createPushRoleArr:[],
381
+
382
+ allStationObj:{}, //岗位对象
383
+ operateType:'',//操作类型
384
+ oldUserAccount:'',//原账号
385
+ adminAuth:false,
386
+ }
387
+ },
388
+ created() { // 初始化时先获取数据操作权限,然后根据是否开启操作权限获取权限数据
389
+ let vm = this;
390
+ // vm.initStation().then(() =>{
391
+ vm.initLoginUser();
392
+ //vm.initMenuModelObj();
393
+ vm.initDataDictionaryObj();
394
+ vm.initCreatePushRole(); // 初始化推送的用户角色数据
395
+ // }); //加载当前岗位
396
+ },
397
+ watch:{
398
+ // 'formData.userName'(){
399
+ // // this.formData.userAccount = this.formData.userName;
400
+ // }
401
+ },
402
+ methods: {
403
+
404
+ // /**
405
+ // * 加载已保存岗位
406
+ // */
407
+ // initStation(){
408
+ // return new Promise(resolve => {
409
+ // this.allStationObj = {};
410
+ // //判断当前岗位
411
+ // let loginUser = this.USER_GLOBAL.getLoginUser() || {};
412
+ // let searchObj = {"order":"PRIORITY"};
413
+ // if (loginUser.userType == 'sup' || loginUser.userType == 'dev') {
414
+ // searchObj["created"] = loginUser.id;
415
+ // }else {
416
+ // searchObj["stationAttach"] = loginUser.mainOrgId || '';
417
+ // }
418
+ // this.axios.post(this.api.sysStation.find,searchObj).then(res =>{
419
+ // (res.data || []).forEach(item =>{
420
+ // this.allStationObj[item.id] = item.stationName;
421
+ // });
422
+ // resolve();
423
+ // });
424
+ // });
425
+ // },
426
+
427
+
428
+ initCreatePushRole(){
429
+ this.axios.post(this.api.role.find,{"created":this.loginUser.id,"pushRole":"1"}).then(res => {
430
+ this.createPushRoleArr = res.data || [];
431
+ })
432
+ },
433
+ async initOriginData() {
434
+ let vm = this;
435
+ let urlParam = vm.COMMON_FUNC.getUrlParamBysplit(window.location.href);
436
+ let userType = vm.$route.params["userType"] || (urlParam["userType"] || "").toLowerCase();
437
+ vm.queryUserType = userType;
438
+ let dataOperation = (urlParam["sjqx"] || "").toLowerCase();
439
+ vm.$set(vm.crud.searchForm, "userType", userType); // 设置查询条件的用户类型
440
+ if (!userType) { // 当前url链接中没有传递用户类型
441
+ vm.$message("请设置菜单的用户类型!");
442
+ vm.show = false;
443
+ return;
444
+ }
445
+ vm.typeOptions = [];
446
+ let skipUserManageOpt = false; // OA跳过用户管理权限
447
+ await vm.axios.post(vm.api.param.getSysParams,{"key":"SysUserType"}).then(function (res) { // 是否可以修改用户详情,获取用户的类型
448
+ // let sysParamObj = res.data;
449
+ // let paramValString = sysParamObj["SysUserType"];
450
+ let result = res.data;
451
+ if(typeof(result) != Object && typeof(result) != "object"){
452
+ result = JSON.parse(result.replace(/'/g, '"'));
453
+ }
454
+ for (let [key, value] of Object.entries(result)) {
455
+ vm.typeOptions.push({"label": value, "value": key})
456
+ }
457
+ vm.typeOptions = vm.typeOptions.filter(item => {
458
+ return item["value"] == userType;
459
+ });
460
+ if (userType != 'dev' && !result[userType]) { // 乱传的用户类型
461
+ vm.$message("请设置正确的用户类型!");
462
+ vm.show = false;
463
+ return;
464
+ }
465
+ // if (sysParamObj["editUserDetail"]["paramVal"] == "是") {
466
+ // vm.editUserDetail = true;
467
+ // }
468
+ // skipUserManageOpt = (sysParamObj["skipUserManageOpt"] || {})["paramVal"] == "是";
469
+ });
470
+ if (userType != 'dev') { // 非开发者类型加入unsup参数,dev传入别的参数
471
+ vm.$set(vm.crud.searchForm, "unsup", "sup");
472
+ // vm.queryUserType == 'gov'?(vm.$set(vm.crud.searchForm,"getOrgName","yes")):"";
473
+ } else { // 查看开发者类型直接初始化,仅传递用户类型即可,上面已经传了
474
+ vm.$set(vm.crud.searchForm, "unsup", "");
475
+ vm.init();
476
+ return;
477
+ }
478
+ if (dataOperation == "all" || skipUserManageOpt) {
479
+ vm.init();
480
+ } else {
481
+ if (vm.loginUser.userType == 'sup' || vm.loginUser.userType == 'dev') {
482
+ vm.init();
483
+ } else {
484
+ vm.crud.searchForm["showCreated"] = vm.loginUser.id;
485
+ vm.axios.post(vm.api.param.getSysParams, {"key": "SysDataOperation"}).then(function (res) {
486
+ let result = vm.platStringUtil.replaceAll(res.data.SysDataOperation, "'", "\"");
487
+ let operation = "";
488
+ result ? operation = JSON.parse(result).opt : operation;
489
+ if (operation == "是") { // 过滤当前组织用户
490
+ vm.axios.post(vm.api.sysOrgPosUser.findLowerUserIdsByOrg).then(posUserRes => {
491
+ if (posUserRes.data && posUserRes.data.length > 0) {
492
+ let idsArr = [];
493
+ posUserRes.data.forEach(sysOrgPosUser => {
494
+ idsArr.push(sysOrgPosUser.userId);
495
+ });
496
+ vm.crud.searchForm["ids"] = idsArr.join(",");
497
+ } else {
498
+ vm.crud.searchForm["ids"] = "$$$$";
499
+ }
500
+ vm.init();
501
+ })
502
+ } else { // 未开启数据权限视为拥有所有权限
503
+ vm.init();
504
+ }
505
+ });
506
+ }
507
+ }
508
+ },
509
+ init() {
510
+ //判断当前用户是否为管理员
511
+ let loginUser = this.USER_GLOBAL.getLoginUser() || {};
512
+ if (loginUser.userType != 'sup' && loginUser.userType != 'dev') {
513
+ this.crud.searchForm['mainEntOrgId'] = loginUser.mainOrgId;
514
+ this.crud.searchForm['mainCreated'] = loginUser.id;
515
+ if(loginUser.commonEmpowerId){
516
+ this.adminAuth = true;
517
+ }
518
+ }else{
519
+ this.adminAuth = true;
520
+ }
521
+ this.crud.search();
522
+ },
523
+
524
+
525
+ /**
526
+ * 当前登录用户
527
+ */
528
+ initLoginUser() {
529
+ let vm = this;
530
+ vm.loginUser = vm.USER_GLOBAL.getLoginUser() || {};
531
+ if (vm.loginUser.userType == "dev" || vm.loginUser.userType == "sup" || vm.loginUser.commonEmpowerId) {
532
+ vm.mayOperate = true;
533
+ }
534
+ if (vm.loginUser.userType == "empower") {
535
+ vm.crud.searchForm["empowerUser"] = "Y";
536
+ let loginDept = this.USER_GLOBAL.getLoginDept();
537
+ vm.crud.searchForm["empowerOrgId"] = loginDept.id;
538
+
539
+ }
540
+ vm.initOriginData(); // 初始化数据,这里的数据仅加载一次
541
+ vm.initOptAll(vm.loginUser.id);
542
+ },
543
+
544
+ /**
545
+ * 用户拥有的操作权限
546
+ */
547
+ initOptAll(userId) {
548
+ let vm = this;
549
+ vm.axios.post(vm.api.sysOrgPosUser.find, {"userId": userId}).then(function (resPosUser) { // 获取当前用户的组织架构
550
+ let [orgIdArr, posIdArr] = [[], []];
551
+ resPosUser.data.forEach(function (posUser) {
552
+ posUser.orgId && (orgIdArr.push(posUser.orgId));
553
+ posUser.posId && (posIdArr.push(posUser.posId));
554
+ });
555
+ vm.axios.post(vm.api.roleMenuOpt.findAllOpt,
556
+ {
557
+ "userId": userId,
558
+ "orgId": orgIdArr.join(","),
559
+ "posId": posIdArr.join(",")
560
+ }).then(function (resOpt) {
561
+ let data = resOpt.data || [];
562
+ data.forEach(function (each) {
563
+ vm.menuOptAll[each["menuId"]] = each["operation"];
564
+ });
565
+ });
566
+ });
567
+ },
568
+
569
+ // /**
570
+ // * 菜单模块数据
571
+ // */
572
+ // initMenuModelObj() {
573
+ // let vm = this;
574
+ // vm.axios.post(vm.api.menuModule.find).then((res) => {
575
+ // let data = res.data;
576
+ // for (let item of data) {
577
+ // vm.menuModelObj[item.id] = item.moduleName || "无";
578
+ // }
579
+ // });
580
+ // },
581
+
582
+ /**
583
+ * 数据字典
584
+ */
585
+ initDataDictionaryObj() {
586
+ let vm = this;
587
+ vm.axios.post(vm.api.dataType.find).then(res => {
588
+ let data = res.data;
589
+ data.forEach(item => {
590
+ vm.dataDictionaryObj[item.id] = item.typeName;
591
+ });
592
+ });
593
+ },
594
+
595
+
596
+ viewMenu(row) { // 查看用户拥有的菜单
597
+ let vm = this;
598
+ if (!row.id) { // 行数据id不存在
599
+ vm.$message("数据异常,请重新加载页面!");
600
+ return;
601
+ }
602
+ vm.menuUserId = row.id;
603
+ vm.menuUserType = row.userType; //用户类型
604
+ vm.menuUserName = row.userName;
605
+ vm.viewMenuDialog = true;
606
+ },
607
+ updateData(row) { // 修改用户的基本信息(新增系统参数,是否允许修改用户详情)
608
+ let vm = this;
609
+ if (!row.id) {
610
+ vm.$message("数据异常,请重新加载页面!");
611
+ return;
612
+ }
613
+ vm.operateType = "update";
614
+ vm.oldUserAccount = row.userAccount || '';
615
+ vm.title = "修改用户信息";
616
+ vm.formData = {}; // 先清除表单中的数据
617
+ vm.addUserInfo = false; // 默认不添加用户详情
618
+ let obj = Object.assign({}, row);
619
+ let arr = ['id', 'userAccount', 'userName', 'userType', 'userStatus','userPhone','userEmail','userIdcard','userRoleId',"stationId","jobNum"];
620
+ for (let elem of arr) {
621
+ if(elem == 'stationId'){
622
+ vm.$set(vm.formData, 'stationIdArr', (obj[elem] || '').split(","));
623
+ }else {
624
+ vm.$set(vm.formData, elem, obj[elem]);
625
+ }
626
+ }
627
+ if (vm.editUserDetail) {
628
+ vm.axios.post(vm.api.sysUserInfo.find, {"userId": row.id}).then(function (res) {
629
+ if (res.data.length > 0) { // 按理说只有一条信息,如果没有那是旧数据,我们帮忙插入一条
630
+ let result = res.data[0];
631
+ let tempArr = ['userGender', 'userAge', 'userQq', 'userPhone', 'userEmail'];
632
+ for (let elem of tempArr) {
633
+ vm.$set(vm.formData, elem, result[elem]);
634
+ }
635
+ }
636
+ })
637
+ }
638
+ vm.formDataDialog = true;
639
+ },
640
+ addUser() { // 添加
641
+ let vm = this;
642
+ vm.operateType = "add";
643
+ vm.formData = {
644
+ 'id': "", 'userAccount': "", 'userName': "", 'userType': "", 'userStatus': "",
645
+ 'userGender': "", 'userAge': "", 'userQq': "", 'userPhone': "", 'userEmail': "",
646
+ };
647
+ if (vm.queryUserType == 'dev') { // 开发者添加用户类型仅可添加开发者
648
+ vm.$set(vm.formData, 'userType', 'dev');
649
+ } else {
650
+ vm.$set(vm.formData, 'userType', vm.queryUserType);
651
+ }
652
+ vm.formData = Object.assign({}, vm.formData, vm.crud.addDefaultData);
653
+ vm.title = "添加用户信息";
654
+ vm.formDataDialog = true;
655
+ vm.$nextTick(function () {
656
+ vm.$refs.formDataRef.clearValidate(); // 再次添加清除原先的验证
657
+ })
658
+ },
659
+ submitForm() {
660
+ let vm = this;
661
+ vm.$refs.formDataRef.validate(valid=> { // 表单验证
662
+ if (valid) {
663
+ //解析 stationIdArr
664
+ let stationIdArr = this.formData.stationIdArr || [];
665
+ this.$set(this.formData,'stationId',stationIdArr.join(","));
666
+ delete this.formData.stationIdArr;
667
+ //记录当前 企业部门id entOrgId
668
+ let loginUser = this.USER_GLOBAL.getLoginUser() || {};
669
+ if ((vm.loginUser.userType != "sup" && vm.loginUser.userType != "dev")&&(!vm.formData.id || loginUser.id != vm.formData.id)) {
670
+ vm.formData['entOrgId'] = loginUser.mainOrgId || ''; //主企业id
671
+ }
672
+ if (vm.formData.id) { // update
673
+ vm.axios.post(vm.api.sysUser.updateUserAndInfo, vm.formData).then(function (res) {
674
+ vm.$message({
675
+ duration: 1000,
676
+ type: 'success',
677
+ message: res.data.operateMessage
678
+ });
679
+ vm.formDataDialog = false;
680
+ vm.crud.search();
681
+ })
682
+ } else { // add
683
+ vm.axios.post(vm.api.sysUser.addUserAndInfo, vm.formData).then(function (res) {
684
+ vm.$message({
685
+ duration: 1000,
686
+ type: 'success',
687
+ message: res.data.operateMessage
688
+ });
689
+ vm.formDataDialog = false;
690
+ vm.crud.search();
691
+ })
692
+ }
693
+ }
694
+ });
695
+ },
696
+ changePwd(row) { // 修改密码
697
+ let vm = this;
698
+ vm.$prompt('请输入新密码', '修改密码', {
699
+ confirmButtonText: '确定',
700
+ cancelButtonText: '取消',
701
+ // inputPattern: /^[a-zA-Z0-9]{6,20}$/,
702
+ // inputErrorMessage: '密码格式不正确',
703
+ beforeClose: function (action, instance, done) {
704
+ if (action == 'confirm') {
705
+ vm.axios.post(vm.api.sysUserInterface.testPwd, {
706
+ userId: row.id,
707
+ pwd: instance.inputValue,
708
+ userName: row.userName
709
+ }).then(valRes => {
710
+ let isSuccess = valRes.data.operateSuccess;
711
+ if (!isSuccess) {
712
+ vm.$message({
713
+ type: 'warning',
714
+ duration: 2000,
715
+ message: valRes.data.operateMessage
716
+ });
717
+ return;
718
+ }
719
+ vm.axios.post(vm.api.sysUser.updatePwdByDevoloper, {
720
+ "userId": row.id,
721
+ "newPWd": instance.inputValue
722
+ }).then(function (res) {
723
+ done(); // 修改完成后提示并关闭窗口
724
+ vm.$message({
725
+ type: 'success',
726
+ duration: 1500,
727
+ message: res.data.operateMessage
728
+ });
729
+ });
730
+ });
731
+ } else {
732
+ done();
733
+ }
734
+ }
735
+ }).catch(() => {
736
+ this.$message({
737
+ type: 'info',
738
+ message: '已取消修改'
739
+ });
740
+ });
741
+ },
742
+ resetPwd(row) { // 重置密码
743
+ let [vm, userNameText] = [this, row.userName ? row.userName : '用户'];
744
+ this.$confirm('确定要重置' + userNameText + '的密码?', '提示', {
745
+ confirmButtonText: '确定',
746
+ cancelButtonText: '取消',
747
+ type: 'warning',
748
+ beforeClose: function (action, instance, done) {
749
+ if (action == 'confirm') {
750
+ vm.axios.post(vm.api.sysUser.resetPwd, {"id": row.id}).then(function (res) {
751
+ done(); // 完成后提示并关闭窗口
752
+ vm.$message({
753
+ type: 'success',
754
+ duration: 1500,
755
+ message: res.data.operateMessage
756
+ });
757
+ });
758
+ } else {
759
+ done();
760
+ }
761
+ }
762
+ }).catch(() => {
763
+ this.$message({
764
+ type: 'info',
765
+ message: '已取消'
766
+ });
767
+ });
768
+ },
769
+ toggleLockedUser(status) {
770
+ let vm = this;
771
+ let selection = vm.$refs[vm.crud.setting.tableRef].selection;
772
+ if ((selection || []).length === 0) {
773
+ vm.$message({
774
+ message: "请选择要操作的用户!",
775
+ duration: 1500
776
+ });
777
+ return;
778
+ }
779
+ let message = '锁定';
780
+ if (status == '10') {
781
+ message = '正常';
782
+ }
783
+ let lockCount = 0;
784
+ let arrIds = [];
785
+ selection.forEach((data,index)=> {
786
+ arrIds.push(data.id);
787
+ if(data.userStatus == '20'){ //已经锁定
788
+ lockCount ++;
789
+ }
790
+ });
791
+ if(status == '20' && lockCount == selection.length){ //锁定用户
792
+ vm.$message({
793
+ type:'warning',
794
+ message: "当前选中的用户已经锁定,无需再次锁定!",
795
+ duration: 1500
796
+ });
797
+ return;
798
+ }
799
+ let messageTitle = '是否要设置选中的<span style="color: red;">' + selection.length + '</span>个用户状态为' + message + '?';
800
+ vm.$confirm(messageTitle, '提示', {
801
+ confirmButtonText: '确定',
802
+ cancelButtonText: '取消',
803
+ dangerouslyUseHTMLString: true
804
+ }).then(function () {
805
+ vm.crud.axios.post(vm.api.sysUser.settingLockedUser, {
806
+ "ids": arrIds.join(","),
807
+ "userStatus": status
808
+ }).then(function (response) {
809
+ vm.$message({
810
+ type: 'success',
811
+ message: response.data.operateMessage
812
+ });
813
+ vm.crud.search();
814
+ });
815
+ });
816
+ },
817
+ async remove() {
818
+ let vm = this;
819
+ let selection = vm.$refs[vm.crud.setting.tableRef].selection;
820
+ if ((selection || []).length === 0) {
821
+ vm.$message({
822
+ duration: 1500,
823
+ type: 'info',
824
+ message: '请至少选择一条需要删除的数据!'
825
+ });
826
+ return;
827
+ }
828
+ let orgId = '';
829
+ let principalUser = {};
830
+ (selection || []).forEach(item =>{
831
+ if(item.principal && item.principal.indexOf("1") > -1){
832
+ if(item.orgId){
833
+ orgId = item.orgId;
834
+ principalUser = item;
835
+ }
836
+ }
837
+ });
838
+ if(orgId){
839
+ let searchForm = {
840
+ empowerUser:'Y',
841
+ isNewStation:'1',
842
+ roleUserCreated:vm.loginUser.id,
843
+ roleUserCreateOrg:vm.loginUser.linkId || vm.loginUser.mainOrgId || '',
844
+ orgIds:orgId
845
+ };
846
+ let res = await this.axios.post(this.api.sysOrgPosUser.findNoPageParamByStation,
847
+ searchForm);
848
+ if(res && res.data){
849
+ let flag = false;
850
+ res.data.forEach(item =>{
851
+ if(item.userId != principalUser.id){
852
+ flag = true;
853
+ }
854
+ });
855
+ if(flag){
856
+ vm.$message({
857
+ duration: 3000,
858
+ type: 'warning',
859
+ message: "用户"+principalUser.userName + '为负责人且组织下还有其他人员,不可删除!'
860
+ });
861
+ return;
862
+ }
863
+ }
864
+ }
865
+ if (vm.loginUser.userType == "sup" || vm.loginUser.userType == "dev") {
866
+ vm.crud.remove();
867
+ } else {
868
+ // 判断是否有不是自己创建的数据
869
+ let ifNoCreate = false;
870
+ let loginUserId = vm.loginUser.id;
871
+ selection.forEach(item => {
872
+ if (item.created != loginUserId) {
873
+ ifNoCreate = true;
874
+ }
875
+ });
876
+ if (ifNoCreate) { // 有不是本人创建的数据,不可以删除
877
+ vm.$message({
878
+ duration: 1500,
879
+ type: 'info',
880
+ message: '无法删除非当前用户创建的数据!'
881
+ });
882
+ return;
883
+ }
884
+ vm.crud.remove();
885
+ }
886
+ },
887
+ formatterOrgName(row, column, cellValue){
888
+ let parentOrgArr = [];
889
+ (row["parentOrgName"] || "").split(",").forEach(name =>{
890
+ if(parentOrgArr.indexOf(name) == -1){
891
+ parentOrgArr.push(name);
892
+ }
893
+ });
894
+ return parentOrgArr.join(",");
895
+ },
896
+ }
897
+ }
898
+ </script>
899
+
900
+ <style scoped>
901
+ .viewMenuDialog /deep/ .el-dialog__body {
902
+ height: calc(100% - 60px);
903
+ }
904
+
905
+ fieldset{
906
+ border:1px solid #dbdbdb;padding: 0 10px 10px;margin-bottom: 10px;
907
+ }
908
+ legend{
909
+ margin-left: 18px;
910
+ }
911
+
912
+
913
+ .header-title{
914
+ text-align: center;
915
+ font-size: 16px;
916
+ font-weight: bold;
917
+ font-family: 微软雅黑, serif
918
+ }
919
+ .header-slider{
920
+ width: 30px;
921
+ height: 5px;
922
+ background-color: #0b84d8;
923
+ }
924
+
925
+ .header-divider{
926
+ margin: 14px 0 20px 40px;
927
+ width: calc(100% - 40px);
928
+ }
929
+ .header-divider /deep/ .el-divider__text{
930
+ padding: 0px 0px;
931
+ top: -2.3px;
932
+ left: calc(50% - 20px);
933
+ }
934
+ </style>