sasp-flow-render 1.0.1

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 (68) hide show
  1. package/index.js +108 -0
  2. package/package.json +21 -0
  3. package/router.js +13 -0
  4. package/src/assets/font/iconfont.css +1158 -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/card_zwsj.png +0 -0
  11. package/src/assets/images/dataStore.png +0 -0
  12. package/src/assets/images/dataStore_icon.png +0 -0
  13. package/src/assets/images/draft.png +0 -0
  14. package/src/assets/images/edit_icon.png +0 -0
  15. package/src/assets/images/end.png +0 -0
  16. package/src/assets/images/end_icon.png +0 -0
  17. package/src/assets/images/gateway.png +0 -0
  18. package/src/assets/images/gateway_icon.png +0 -0
  19. package/src/assets/images/globalConnect_icon.png +0 -0
  20. package/src/assets/images/group_icon.png +0 -0
  21. package/src/assets/images/hander_icon.png +0 -0
  22. package/src/assets/images/icon_ quality.png +0 -0
  23. package/src/assets/images/lasso_icon.png +0 -0
  24. package/src/assets/images/mobile_preview.png +0 -0
  25. package/src/assets/images/participant_icon.png +0 -0
  26. package/src/assets/images/publicProcess_icon.png +0 -0
  27. package/src/assets/images/remind_example.png +0 -0
  28. package/src/assets/images/space_icon.png +0 -0
  29. package/src/assets/images/start.png +0 -0
  30. package/src/assets/images/start_icon.png +0 -0
  31. package/src/assets/images/subprocess_icon.png +0 -0
  32. package/src/assets/images/tab_set_example.png +0 -0
  33. package/src/assets/images/timer.png +0 -0
  34. package/src/assets/images/timer_icon.png +0 -0
  35. package/src/assets/images/userTask_icon.png +0 -0
  36. package/src/assets/images/user_task.png +0 -0
  37. package/src/assets/js/api/apiFlow.js +219 -0
  38. package/src/assets/js/flowInstall.js +25 -0
  39. package/src/assets/js/global/cacheGlobal.js +110 -0
  40. package/src/assets/js/global/flowGlobal.js +61 -0
  41. package/src/assets/js/global/flowUserGlobal.js +35 -0
  42. package/src/assets/js/global/interfaceCache.js +31 -0
  43. package/src/assets/js/storageIO.js +106 -0
  44. package/src/components/flowChart.vue +463 -0
  45. package/src/components/flowInst/css/flowInstList.scss +193 -0
  46. package/src/components/flowInst/flowInstList.vue +818 -0
  47. package/src/components/flowInst/flowInstTab.vue +2858 -0
  48. package/src/components/flowInst/popup/flowInstForm.vue +54 -0
  49. package/src/components/flowRoamRecords.vue +768 -0
  50. package/src/components/messageMould/messageMould.vue +547 -0
  51. package/src/components/roamRecord.vue +567 -0
  52. package/src/components/userSelect.vue +537 -0
  53. package/src/views/flowInstView.vue +178 -0
  54. package/src/views/menuRouter/flowMenuRouter.vue +260 -0
  55. package/src/views/menuRouter/flowResRouter.vue +223 -0
  56. package/src/views/popup/css/flowMain.scss +156 -0
  57. package/src/views/popup/event/compoment/diy/info.txt +1 -0
  58. package/src/views/popup/event/compoment/eventParentConfig.vue +45 -0
  59. package/src/views/popup/event/js/loadFlowEventPlugin.js +279 -0
  60. package/src/views/popup/js/controls/CustomContextPad.js +310 -0
  61. package/src/views/popup/js/controls/CustomPalette.js +303 -0
  62. package/src/views/popup/js/controls/CustomRenderer.js +219 -0
  63. package/src/views/popup/js/controls/index.js +11 -0
  64. package/src/views/popup/js/customModeler/CustomModeler.js +22 -0
  65. package/src/views/popup/js/translations/customTranslate.js +14 -0
  66. package/src/views/popup/js/translations/translations.js +234 -0
  67. package/src/views/popup/js/utils/utils.js +53 -0
  68. package/src/views/test.vue +79 -0
@@ -0,0 +1,537 @@
1
+ <template>
2
+ <div class="select-all">
3
+ <div class="select-all-border">
4
+ <div class="left-block">
5
+ <div style="width: 100%;height: 100%;position: relative;padding-top: 40px;box-sizing: border-box">
6
+ <div class="button-class">
7
+ <el-input v-model="filterText" style="width: 100%" clearable
8
+ placeholder="请输入" size="small" class="search-input">
9
+ <i slot="append" class="el-icon-search"></i>
10
+ </el-input>
11
+ </div>
12
+ <div class="tree-block" :style="{'padding-top':showDim ? '40px' : '0'}">
13
+ <el-radio-group v-model="chooseDim" size="small" v-if="showDim"
14
+ @change="changeEvt"
15
+ style="position: absolute;top: 0;left: 0">
16
+ <el-radio-button v-for="item in orgDimArr" :key="item.value" :label="item.value">{{item.label}}</el-radio-button>
17
+ </el-radio-group>
18
+ <div style="width: 100%;height: 100%;overflow-y: auto">
19
+ <el-tree
20
+ ref="treeRef"
21
+ :data="treeData"
22
+ show-checkbox
23
+ check-strictly
24
+ node-key="dataKey"
25
+ @check="checkChange"
26
+ v-loading="loading"
27
+ element-loading-text="加载中"
28
+ :filter-node-method="filterNodeFnc"
29
+ :render-content="renderContentFunc"
30
+ v-if="showTree"
31
+ :props="defaultProps">
32
+ </el-tree>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ <div class="right-block">
38
+ <div :style="{height: userPercent}" class="choose-div">
39
+ <el-divider content-position="left" style="position: absolute;top: 0;">{{'已选择用户(' + chooseUsers.length + ')'}}</el-divider>
40
+ <div style="height: 100%;overflow-y: auto">
41
+ <el-tag plain closable v-for="(item,index) in chooseUsers" @close="removeTag(item)"
42
+ class="choose-tag" :key="index">{{item.dataLabel}}</el-tag>
43
+ </div>
44
+ </div>
45
+ <div style="height: 25%;" class="choose-div" v-if="orgEnable">
46
+ <el-divider content-position="left" style="position: absolute;top: 0;">{{'已选择组织(' + chooseOrgs.length + ')'}}</el-divider>
47
+ <div style="height: 100%;overflow-y: auto">
48
+ <el-tag plain closable v-for="(item,index) in chooseOrgs" @close="removeTag(item)"
49
+ class="choose-tag" :key="index">{{item.dataLabel}}</el-tag>
50
+ </div>
51
+ </div>
52
+ <div style="height: 25%;" class="choose-div" v-if="posEnable">
53
+ <el-divider content-position="left" style="position: absolute;top: 0;">{{'已选择岗位(' + choosePoses.length + ')'}}</el-divider>
54
+ <div style="height: 100%;overflow-y: auto">
55
+ <el-tag plain closable v-for="(item,index) in choosePoses" @close="removeTag(item)"
56
+ class="choose-tag" :key="index">{{item.dataLabel}}</el-tag>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </template>
63
+
64
+ <script>
65
+ export default {
66
+ name: "user-select",
67
+ props:{
68
+ orgAvailable:{type:Boolean,default:false}, // 组织是否可用,管理平台选择人员组织可选择组织岗位
69
+ checkedInfos:{type:Object,default:() => {
70
+ return {};
71
+ }},
72
+ checkbox:{type:Boolean,default:true}, // 是否多选
73
+ chooseUserIds:{type:String,default:""}, // 选择用户ID
74
+ },
75
+ data(){
76
+ return {
77
+ filterText:"",
78
+ defaultProps: {
79
+ children: 'children',
80
+ label: 'dataLabel',
81
+ disabled:'dataDisabled'
82
+ },
83
+ treeData:[],
84
+ treeDataBak:[],
85
+ sysInterfaceObj:{},
86
+ doMainDatasObj:{},
87
+ dataTreeArr:[],
88
+ showDim:false,
89
+ orgDimArr:[],
90
+ count:0,
91
+ initSuccess:false,
92
+ chooseDim:"",
93
+ chooseUsers:[],
94
+ chooseOrgs:[],
95
+ choosePoses:[],
96
+ userPercent:'50%',
97
+ userEnable:true,
98
+ orgEnable:false,
99
+ posEnable:false,
100
+ loading:true,
101
+ showTree:true,
102
+ }
103
+ },
104
+ watch:{
105
+ filterText(val){
106
+ this.$refs.treeRef.filter(val);
107
+ }
108
+ },
109
+ created() {
110
+ this.init();
111
+ },
112
+ methods:{
113
+ init(){
114
+ this.loading = true;
115
+ // 先载入系统接口数据
116
+ this.axios.post(this.api.plFlowInterface.find,{interStatus:'1',interType:'sys'}).then(res => {
117
+ (res.data || []).forEach(item => {
118
+ this.sysInterfaceObj[item.sysInterName] = item;
119
+ })
120
+ if(!this.sysInterfaceObj['userData']){
121
+ this.$message.error("用户数据接口未配置,无法加载用户数据!");
122
+ this.loading = false;
123
+ return;
124
+ }
125
+ this.loadUserData();
126
+ })
127
+ },
128
+ /**
129
+ * 加载用户数据,若用户数据加载失败不进行渲染
130
+ */
131
+ loadUserData(){
132
+ let dataInter = this.sysInterfaceObj['userData'];
133
+ this.axios.post(this.api.plFlowDomain.find,{status:'1'}).then(res => {
134
+ (res.data || []).forEach(item => {
135
+ this.doMainDatasObj[item.id] = item.domainUrl;
136
+ })
137
+ // 解析用户数据
138
+ this.analyseRequest(dataInter).then(data => {
139
+ let checkedUserKeys = Object.keys(this.checkedInfos["user"] || {});
140
+ let chooseUsers = this.chooseUserIds.split(",");
141
+ data.forEach(item => {
142
+ item.dataUserId = item[dataInter["idCode"] || "userId"];
143
+ item.dataKey = item.dataUserId;
144
+ item.flowDataType = "user";
145
+ item.dataLabel = item[dataInter["showCode"] || "userName"];
146
+ item.dataOrgId = item[dataInter["orgCode"] || "orgId"];
147
+ item.dataPosId = item[dataInter["posCode"] || "posId"];
148
+ if(item.dataOrgId){
149
+ item.dataParentId = item.orgId;
150
+ }
151
+ if(item.dataPosId){
152
+ item.dataParentId = item.posId;
153
+ }
154
+ if(checkedUserKeys.indexOf(item.dataKey) > -1 || chooseUsers.indexOf(item.dataKey) > -1){
155
+ this.chooseUsers.push(item);
156
+ }
157
+ })
158
+ this.dataTreeArr.push(...data);
159
+ this.resolveMethod();
160
+ this.initOrgData().then(() => {
161
+ this.resolveMethod();
162
+ });
163
+ this.initPosData().then(() => {
164
+ this.resolveMethod();
165
+ });
166
+ })
167
+ })
168
+ },
169
+ initOrgData(){
170
+ return new Promise(resolve => {
171
+ let dataInter = this.sysInterfaceObj['orgData'];
172
+ if(!dataInter){
173
+ this.orgEnable = false;
174
+ resolve();
175
+ return;
176
+ }
177
+ this.showDim = false;
178
+ // 解析组织数据
179
+ this.analyseRequest(dataInter).then(data => {
180
+ if(data.length === 0 || !this.orgAvailable){ // 组织岗位不可选择时,禁用右侧选择框显示
181
+ this.orgEnable = false;
182
+ }else{
183
+ this.orgEnable = true;
184
+ }
185
+ let orgDimArr = [];
186
+ let dimIdArr = [];
187
+ let checkedOrgKeys = Object.keys(this.checkedInfos["org"] || {});
188
+ data.forEach(item => {
189
+ item.dataOrgId = item[dataInter["orgCode"] || "orgId"];
190
+ item.dataKey = item.dataOrgId;
191
+ item.flowDataType = "org";
192
+ item.dataLabel = item[dataInter["orgNameCode"] || "orgName"];
193
+ item.dataOrgDim = item[dataInter["orgTypeCode"] || "orgDim"];
194
+ item.dataDimName = item[dataInter["orgTypeNameCode"] || "dimName"];
195
+ item.dataParentId = item[dataInter["parentCode"] || "orgParentId"];
196
+ if(item.dataOrgDim && dimIdArr.indexOf(item.dataOrgDim) === -1){
197
+ orgDimArr.push({
198
+ label:item.dataDimName,
199
+ value:item.dataOrgDim
200
+ });
201
+ dimIdArr.push(item.dataOrgDim);
202
+ }
203
+ if(!this.orgAvailable){
204
+ item.dataDisabled = true;
205
+ }
206
+ if(checkedOrgKeys.indexOf(item.dataKey) > -1){
207
+ this.chooseOrgs.push(item);
208
+ }
209
+ })
210
+ if(orgDimArr.length > 0){
211
+ this.showDim = true;
212
+ this.orgDimArr = orgDimArr;
213
+ this.chooseDim = this.orgDimArr[0].value;
214
+ }
215
+ this.dataTreeArr.push(...data);
216
+ resolve();
217
+ })
218
+ })
219
+ },
220
+ initPosData(){
221
+ return new Promise(resolve => {
222
+ let dataInter = this.sysInterfaceObj['posData'];
223
+ if(!dataInter){
224
+ this.posEnable = false;
225
+ resolve();
226
+ return;
227
+ }
228
+ // 解析岗位数据
229
+ this.analyseRequest(dataInter).then(data => {
230
+ if(data.length === 0 || !this.orgAvailable){ // 组织岗位不可选择时,禁用右侧选择框显示
231
+ this.posEnable = false;
232
+ }else{
233
+ this.posEnable = true;
234
+ }
235
+ let checkedPosKeys = Object.keys(this.checkedInfos["pos"] || {});
236
+ data.forEach(item => {
237
+ item.dataPosId = item[dataInter["posCode"] || "posId"];
238
+ item.dataKey = item.dataPosId;
239
+ item.flowDataType = "pos";
240
+ item.dataLabel = item[dataInter["posNameCode"] || "posName"];
241
+ item.dataOrgId = item[dataInter["orgCode"] || "orgId"];
242
+ item.dataParentId = item[dataInter["parentCode"] || "parentPosId"];
243
+ if((!item.dataParentId || item.dataParentId === '-1') && item.dataOrgId){
244
+ item.dataParentId = item.dataOrgId;
245
+ }
246
+ if(!this.orgAvailable){
247
+ item.dataDisabled = true;
248
+ }
249
+ if(checkedPosKeys.indexOf(item.dataKey) > -1){
250
+ this.choosePoses.push(item);
251
+ }
252
+ })
253
+ this.dataTreeArr.push(...data);
254
+ resolve();
255
+ })
256
+ })
257
+ },
258
+ resolveMethod(){
259
+ this.count++;
260
+ if(this.count === 3){
261
+ this.initSuccess = true;
262
+ if(this.orgEnable || this.posEnable){
263
+ this.userPercent = "75%";
264
+ }
265
+ if(this.orgEnable && this.posEnable){
266
+ this.userPercent = "50%";
267
+ }
268
+ if(!this.orgEnable && !this.posEnable){
269
+ this.userPercent = "100%";
270
+ }
271
+ this.buildTree();
272
+ }
273
+ },
274
+ buildTree(){
275
+ let paramSetting = {
276
+ "id": "dataKey",
277
+ "pId": "dataParentId",
278
+ }
279
+ this.treeData = this.COMMON_FUNC.buildElTree(this.dataTreeArr,paramSetting);
280
+ let checkedKeys = [];
281
+ Object.keys(this.checkedInfos || {}).forEach(type => {
282
+ checkedKeys.push(...(Object.keys(this.checkedInfos[type])));
283
+ })
284
+
285
+ if(this.showDim && this.orgDimArr.length > 1){
286
+ this.treeDataBak = JSON.parse(JSON.stringify(this.treeData));
287
+ this.showDimData();
288
+ }
289
+
290
+ this.$nextTick(() => {
291
+ this.loading = false;
292
+ this.$refs.treeRef.setCheckedKeys(checkedKeys);
293
+ this.expandFirst();
294
+ })
295
+ },
296
+ showDimData(){
297
+ this.treeData = this.treeDataBak.filter(item => {
298
+ return item.dataOrgDim === this.chooseDim;
299
+ })
300
+ },
301
+ expandFirst(){
302
+ let nodesMap = this.$refs.treeRef.store.nodesMap || {};
303
+ Object.keys(nodesMap).forEach(key => {
304
+ if(nodesMap[key].level == 1){
305
+ nodesMap[key].expanded = true;
306
+ }
307
+ });
308
+ },
309
+ changeEvt(){
310
+ this.showTree = false;
311
+ this.showDimData();
312
+ this.$nextTick(() => {
313
+ this.showTree = true;
314
+ let checkedKeys = []
315
+ let arr = ['chooseUsers','chooseOrgs','choosePoses'];
316
+ arr.forEach(key => {
317
+ (this[key] || []).forEach(item => {
318
+ checkedKeys.push(item.dataKey);
319
+ })
320
+ })
321
+ this.$nextTick(() => {
322
+ this.$refs.treeRef.setCheckedKeys(checkedKeys);
323
+ this.expandFirst();
324
+ })
325
+ })
326
+ },
327
+ // treeNodeExpandFunc(data,node,comp){
328
+ // this.$nextTick(function () {
329
+ // let domCollection = document.getElementsByClassName("row-hide");
330
+ // for(let i = 0;i < domCollection.length;i++){
331
+ // domCollection[i].parentNode.parentNode.style.display = 'none';
332
+ // }
333
+ // })
334
+ // },
335
+ renderContentFunc(h, { node, data}){
336
+ let rowClass= "";
337
+ if(data.hidden){
338
+ rowClass = "row-hide";
339
+ }
340
+ if(data.flowDataType == "org"){
341
+ return (
342
+ <span class={rowClass}>
343
+ <i class={'saspiconfont pl-icon-organ'}></i>
344
+ <span>{node.label}</span>
345
+ </span>
346
+ );
347
+ }
348
+ if(data.flowDataType == "pos"){
349
+ return (
350
+ <span>
351
+ <i class={'saspiconfont pl-icon-untitled85'}></i>
352
+ <span>{node.label}</span>
353
+ </span>
354
+ );
355
+ }
356
+ let MyComempte = (
357
+ <span>
358
+ <i class={'saspiconfont pl-icon-account1'}></i>
359
+ <span>{node.label}</span>
360
+ </span>
361
+ );
362
+ return MyComempte;
363
+ },
364
+ analyseRequest(dataInter){
365
+ return new Promise(resolve => {
366
+ let result = this.INTER_CACHE.getCacheInfo(dataInter.sysInterName);
367
+ if(result){
368
+ resolve(result);
369
+ return;
370
+ }
371
+
372
+ let domainUrl = this.doMainDatasObj[dataInter.domainId] || "";
373
+ let url = domainUrl + dataInter.requestUrl;
374
+ let requestParam = JSON.parse(dataInter.requestParam || "[]");
375
+ let obj = {};
376
+ requestParam.forEach(item => {
377
+ if(!item.key){
378
+ return;
379
+ }
380
+ obj[item.key] = item.value || ""; // 注意这里要replace ${userCode}
381
+ })
382
+ if(dataInter.requestType === 'post'){
383
+ this.axios.post(url,obj).then(res => {
384
+ this.INTER_CACHE.setCacheInfo(dataInter.sysInterName,res.data);
385
+ resolve(res.data || []);
386
+ })
387
+ }else{
388
+ let params = "";
389
+ let arr = []
390
+ Object.keys(obj).forEach(key => {
391
+ arr.push(key + "=" + obj[key]);
392
+ })
393
+ params = arr.join("&");
394
+ if(params){
395
+ if(url.indexOf("?") > -1){
396
+ url += "&" + params;
397
+ }else{
398
+ url += "?" + params;
399
+ }
400
+ }
401
+ this.axios(url).then(res => {
402
+ this.INTER_CACHE.setCacheInfo(dataInter.sysInterName,res.data);
403
+ resolve(res.data || []);
404
+ })
405
+ }
406
+ })
407
+ },
408
+ filterNodeFnc(value, data){
409
+ if (!value) {
410
+ return true;
411
+ }
412
+ if(this.chooseDim && this.showDim && data.flowDataType === "org" && data.dataOrgDim !== this.chooseDim){
413
+ return false;
414
+ }
415
+ if(data["dataLabel"]){ // 如果当前数据的label为undefined,直接返回false
416
+ return data["dataLabel"].toLowerCase().indexOf(value.toLowerCase()) !== -1;
417
+ }else{
418
+ return false;
419
+ }
420
+ },
421
+ checkChange(data,checkInfos){
422
+ let checkedKeys = checkInfos["checkedKeys"] || [];
423
+ let obj = {user:"chooseUsers",org:"chooseOrgs",pos:"choosePoses"};
424
+ let arr = this[obj[data.flowDataType]] || [];
425
+ if(checkedKeys.indexOf(data.dataKey) > -1){
426
+ if(this.checkbox){
427
+ arr.push(data);
428
+ }else{
429
+ this[obj[data.flowDataType]] = [data];
430
+ this.$refs.treeRef.setCheckedKeys([data.dataKey]);
431
+ }
432
+ }else{
433
+ (this[obj[data.flowDataType]]) = arr.filter(item => {
434
+ return item.dataKey !== data.dataKey;
435
+ });
436
+ }
437
+ },
438
+ getCheckedInfo(type){
439
+ let obj = {user:"chooseUsers",org:"chooseOrgs",pos:"choosePoses"};
440
+ if(!obj[type]){
441
+ return [];
442
+ }
443
+ return JSON.parse(JSON.stringify(this[obj[type]]));
444
+ },
445
+ removeTag(data){
446
+ let obj = {user:"chooseUsers",org:"chooseOrgs",pos:"choosePoses"};
447
+ let arr = this[obj[data.flowDataType]] || [];
448
+ (this[obj[data.flowDataType]]) = arr.filter(item => {
449
+ return item.dataKey !== data.dataKey;
450
+ });
451
+ let checkNodes = this.$refs.treeRef.getCheckedNodes();
452
+ // 删除节点
453
+ for(let i = 0; i < checkNodes.length; i++){
454
+ if(checkNodes[i].dataLabel === data.dataLabel) {
455
+ checkNodes.splice(i, 1);
456
+ break;
457
+ }
458
+ }
459
+ // 设置 tree 选中的节点
460
+ this.$refs.treeRef.setCheckedNodes(checkNodes);
461
+ }
462
+ }
463
+ }
464
+ </script>
465
+
466
+ <style scoped lang="scss">
467
+ .select-all{
468
+ width: 100%;height: 100%;padding: 20px;box-sizing: border-box;
469
+ .select-all-border{
470
+ width: 100%;height: 100%;border: 1px solid #DEDEDE;
471
+ .left-block{
472
+ width: 50%;height:100%;float: left;box-sizing: border-box;padding: 10px;position: relative;
473
+ .tree-block{
474
+ width: 100%;height: 100%;overflow-y: auto;position: relative;box-sizing: border-box;
475
+ /deep/ .el-tree-node__content .is-disabled{
476
+ display: none;
477
+ }
478
+ }
479
+ .button-class{
480
+ position: absolute;height: 40px;width: 100%;top: 0;left: 0;box-sizing: border-box;
481
+ .search-input{
482
+ /deep/ .el-input__inner{
483
+ border-right: 0;
484
+ }
485
+ /deep/ .el-input__inner:focus{
486
+ border-color: #DCDFE6;
487
+ }
488
+ /deep/ .el-input-group__append{
489
+ background-color: white;
490
+ padding: 0 10px 0 0;
491
+ border-radius: 0;
492
+ }
493
+ }
494
+ }
495
+ /deep/ .el-radio-button__inner{
496
+ border-radius: 0;
497
+ }
498
+ }
499
+ ::-webkit-scrollbar {
500
+ width: 5px;
501
+ }
502
+ .right-block{
503
+ width: 50%;height:100%;float: right;box-sizing: border-box;border-left: 1px solid #DEDEDE;
504
+ padding: 10px 20px;
505
+ .choose-div{
506
+ box-sizing: border-box;position: relative;padding-top: 45px;
507
+ }
508
+ .choose-tag{
509
+ border-radius: 0;
510
+ margin: 10px;
511
+ }
512
+ /deep/ .el-divider--horizontal{
513
+ position: absolute;
514
+ top: 0;
515
+ .el-divider__text{
516
+ font-weight: bold;
517
+ }
518
+ }
519
+ ::-webkit-scrollbar {
520
+ width: 0;
521
+ }
522
+ }
523
+ /deep/ .el-input__inner{
524
+ border-radius: 0;
525
+ }
526
+ /deep/ .el-input__inner:hover{
527
+ border-color: #DCDFE6!important;
528
+ }
529
+ /deep/ .el-textarea__inner{
530
+ border-radius: 0;
531
+ }
532
+ /deep/ .el-button{
533
+ border-radius: 0;
534
+ }
535
+ }
536
+ }
537
+ </style>