Browse Source

项目管理

liuxiaona 10 months ago
parent
commit
d549e2a75b
1 changed files with 365 additions and 8 deletions
  1. 365 8
      src/components/businessMoudle/projectManage/dialog/addProject.vue

+ 365 - 8
src/components/businessMoudle/projectManage/dialog/addProject.vue

@@ -5,6 +5,8 @@
5 5
           @confirm="confirmEvent"
6 6
           @close="dialogShow = false"
7 7
           width="800px"
8
+          height="calc(100vh - 220px)"
9
+          top="20px"
8 10
           :dialog-title="pageInfo.title">
9 11
     <template v-slot:content>
10 12
       <div class="dialogBox" v-loading="loading">
@@ -19,18 +21,45 @@
19 21
                 @changeEvent="init()" @clearEvent="init()"
20 22
                 :options="pageInfo.chargeList"/>
21 23
 
22
-        <div class="flex tMar20" style="justify-content: flex-start">
24
+        <div class="flex tMar20" style="align-items: flex-start">
23 25
           <span class="spanTitle f14" style="width: 80px;">项目负责人</span>
24 26
           <div>
25
-            <el-radio-group v-model="pageInfo.visibleVal">
26
-              <el-radio-button label="所有人可见" />
27
-              <el-radio-button label="指定成员可见" />
28
-            </el-radio-group>
29
-
30
-            <div class="treeBox">
31
-              <el-tree :data="pageInfo.treeList" :props="defaultProps" show-checkbox />
27
+            <div>
28
+              <RadioGroup :showTitle="false" :id="coverRadioList.EgName"
29
+                          :radioList="coverRadioList.list"
30
+                          :echoVal="coverRadioList.radioVal"
31
+                          :title="coverRadioList.name"
32
+                          @returnEvent="val=>{coverRadioList.radioVal = val}"></RadioGroup>
32 33
             </div>
34
+            <template v-show="coverRadioList.radioVal == 'appiont'">
35
+              <div class="cascader-container left">
36
+                <div class="cascader-title">
37
+                  <div class="tab-label active"> 部门 </div>
38
+                  <div class="tab-label"> 人员 </div>
39
+                </div>
40
+                <div class="cascader-list">
41
+                  <el-tree :data="pageInfo.treeList" :props="defaultProps" show-checkbox />
42
+                </div>
43
+                <div class="cascader-list member-parent">
44
+
45
+                </div>
33 46
 
47
+              </div>
48
+              <div class="cascader-container right">
49
+                <div class="cascader-title">
50
+                  <span>已选可见人员(4)</span>
51
+                  <span class="clear">清空</span>
52
+                </div>
53
+                <div class="cascader-list">
54
+                  <div class="choose-member">
55
+                    <p class="choose">
56
+                      <span class="ellipsis"></span><el-icon :size="14" color="#999" class="pointer"><i-ep-Close /></el-icon>
57
+                    </p>
58
+                  </div>
59
+                </div>
60
+
61
+              </div>
62
+            </template>
34 63
           </div>
35 64
         </div>
36 65
 
@@ -40,6 +69,7 @@
40 69
 
41 70
 </template>
42 71
 <script setup lang="ts">
72
+import RadioGroup from '@/components/businessMoudle/batchGdt/configArea/directPacket/common/radioGroup.vue'
43 73
 import Select from '@/components/capsulationMoudle/_select.vue'
44 74
 import Dialog from '@/components/capsulationMoudle/_dialog.vue'
45 75
 import Input from '@/components/capsulationMoudle/_input.vue'
@@ -60,6 +90,25 @@ const defaultProps = {
60 90
   children: 'childs',
61 91
   label: 'name',
62 92
 }
93
+interface radioFace{
94
+  value:number | string,
95
+  name:string,
96
+  EgName:string,
97
+  radioVal:any,
98
+  haveNotes:boolean,
99
+  list:any
100
+}
101
+const coverRadioList = reactive<radioFace>({
102
+  value:1,
103
+  name:'项目负责人',
104
+  EgName:'cover',
105
+  radioVal:'all',
106
+  haveNotes:false,
107
+  list:[
108
+    {name:'所有人可见',value:'all'},
109
+    {name:'指定成员可见',value:'appiont'},
110
+  ]
111
+})
63 112
 
64 113
 //页面数据
65 114
 const pageInfo = reactive<reactiveTableAndAny>({
@@ -145,4 +194,312 @@ onMounted(()=>{
145 194
   border: 1px solid #EDEDED;
146 195
 
147 196
 }
197
+
198
+ .search-box {
199
+  display: block!important;
200
+  width: 400px;
201
+  margin-bottom: 10px
202
+}
203
+
204
+ .search-box .el-input__inner, .search-box .el-input__inner:focus {
205
+  border-color: #dcdfe6
206
+}
207
+
208
+.cascader-container {
209
+  display: inline-block;
210
+  vertical-align: top;
211
+  background-color: #fff;
212
+  border: 1px solid #dee4f5
213
+}
214
+
215
+.cascader-container.left {
216
+  width: 400px;
217
+  margin-right: 16px
218
+}
219
+
220
+.cascader-container.right {
221
+  width: 200px
222
+}
223
+
224
+.cascader-title {
225
+  height: 40px;
226
+  padding: 0 12px;
227
+  font-size: 14px;
228
+  line-height: 40px;
229
+  color: #333;
230
+  background-color: #fafafa;
231
+  border-bottom: 1px solid #dee4f5
232
+}
233
+
234
+.cascader-title .tab-label {
235
+  cursor: pointer
236
+}
237
+
238
+.cascader-title .tab-label:first-child {
239
+  margin-right: 16px
240
+}
241
+
242
+.cascader-title .tab-label.active {
243
+  font-weight: 700;
244
+  color: #197afb;
245
+  border-bottom: 2px solid #197afb
246
+}
247
+
248
+.cascader-title .tab-label.is-hidden {
249
+  display: none
250
+}
251
+
252
+.clear {
253
+  float: right;
254
+  color: #598fe6;
255
+  text-decoration: none;
256
+  cursor: pointer
257
+}
258
+
259
+.cascader-list {
260
+  width: 100%;
261
+  height: 236px;
262
+  overflow: auto;
263
+  font-size: 14px
264
+}
265
+
266
+.depart-tree .el-tree-node {
267
+  padding: 0 10px;
268
+  margin-top: 10px
269
+}
270
+
271
+.depart-tree .el-tree-node__content,.depart-tree .el-upload-list__item {
272
+  background-color: transparent
273
+}
274
+
275
+.depart-tree .el-tree-node:focus>.el-tree-node__content {
276
+  width: 100%;
277
+  background-color: transparent
278
+}
279
+
280
+.choose-member {
281
+  padding: 3px 10px;
282
+  cursor: pointer
283
+}
284
+
285
+.choose-member .choose {
286
+  display: flex;
287
+  flex-direction: row;
288
+  align-items: center;
289
+  justify-content: space-between;
290
+  padding: 5px 10px;
291
+  color: #666;
292
+  background-color: #f2f3f6
293
+}
294
+
295
+.choose-member .choose .icon-right {
296
+  display: inline-block;
297
+  width: 15px;
298
+  height: 15px
299
+}
300
+
301
+.member-parent {
302
+  display: flex;
303
+  flex-direction: row
304
+}
305
+
306
+.member-parent .member-left {
307
+  box-sizing: border-box;
308
+  width: 200px;
309
+  height: 100%;
310
+  padding-top: 8px;
311
+  padding-right: 10px;
312
+  padding-left: 10px;
313
+  overflow: auto
314
+}
315
+
316
+.member-parent .member-right {
317
+  flex: 1;
318
+  height: 100%;
319
+  padding-top: 8px;
320
+  padding-right: 10px;
321
+  padding-left: 10px;
322
+  overflow: auto;
323
+  border-left: 1px solid #dee4f5
324
+}
325
+
326
+.member-parent .member-right .tipbox {
327
+  display: flex;
328
+  flex-direction: row;
329
+  align-items: center;
330
+  justify-content: center;
331
+  width: 100%;
332
+  height: 100%;
333
+  font-size: 12px;
334
+  color: #909399
335
+}
336
+
337
+.member-tree .custom-tree-node {
338
+  width: 100%;
339
+  font-size: 12px;
340
+  -webkit-user-select: none;
341
+  -moz-user-select: none;
342
+  -ms-user-select: none;
343
+  user-select: none
344
+}
345
+
346
+.member-tree .custom-tree-node.active {
347
+  color: #197afb;
348
+  background-color: #f3f9ff;
349
+  border-radius: 3px
350
+}
351
+
352
+.member-tree .custom-tree-node .mg-icon-department,.member-tree .custom-tree-node .mg-icon-line {
353
+  margin-right: 6px;
354
+  font-size: 12px
355
+}
356
+
357
+.member-tree .custom-tree-node,.member-tree .el-tree-node__label {
358
+  overflow: hidden;
359
+  font-size: 14px;
360
+  text-indent: 8px;
361
+  text-overflow: ellipsis;
362
+  white-space: nowrap
363
+}
364
+
365
+.member-tree .el-tree-node__content {
366
+  height: 32px;
367
+  font-size: 14px;
368
+  line-height: 32px
369
+}
370
+
371
+.member-tree .el-tree-node__content:hover,.member-tree .el-upload-list__item:hover {
372
+  background-color: transparent
373
+}
374
+
375
+.member-tree .el-tree-node:focus>.el-tree-node__content {
376
+  width: 100%;
377
+  background-color: transparent
378
+}
379
+
380
+.member-tree .el-tree-node__content>.el-tree-node__expand-icon {
381
+  padding: 4px
382
+}
383
+
384
+.self-check .el-checkbox__label {
385
+  width: 100%;
386
+  font-size: 14px;
387
+  line-height: 32px
388
+}
389
+
390
+.display[data-v-7272e714] {
391
+  display: flex;
392
+  align-items: center
393
+}
394
+
395
+.hold[data-v-7272e714] {
396
+  width: 100%;
397
+  padding: 16px 0;
398
+  font-size: 12px;
399
+  color: #999;
400
+  text-align: center
401
+}
402
+
403
+.pricelimit[data-v-7272e714] {
404
+  padding: 6px 12px;
405
+  border: 1px solid #dcdfe6;
406
+  border-radius: 3px
407
+}
408
+
409
+.pricelimit .pricelimit-list[data-v-7272e714] {
410
+  display: flex;
411
+  align-items: center;
412
+  margin: 16px 0;
413
+  font-size: 14px
414
+}
415
+
416
+.pricelimit .pricelimit-list .tab-select[data-v-7272e714] {
417
+  width: 170px;
418
+  margin: 0 8px
419
+}
420
+
421
+.pricelimit .pricelimit-list .delete-icon[data-v-7272e714] {
422
+  font-size: 20px;
423
+  color: #999;
424
+  cursor: pointer
425
+}
426
+
427
+.pricelimit .addnew[data-v-7272e714] {
428
+  width: 100px;
429
+  font-size: 12px;
430
+  color: #197afb;
431
+  cursor: pointer
432
+}
433
+
434
+.pricelimit[data-v-7272e714] .el-form .el-form-item {
435
+  margin-bottom: 0!important
436
+}
437
+
438
+[data-v-1eec231b] .el-select .el-input__inner {
439
+  width: auto;
440
+  margin-left: 0
441
+}
442
+
443
+[data-v-1eec231b] .el-select .el-select__tags {
444
+  flex-wrap: nowrap
445
+}
446
+
447
+[data-v-1eec231b] .el-select .el-select__tags>span {
448
+  display: contents;
449
+  width: 100%
450
+}
451
+
452
+[data-v-1eec231b] .el-select .el-select__tags .el-tag {
453
+  height: 32px;
454
+  overflow: hidden;
455
+  line-height: 32px;
456
+  background-color: transparent;
457
+  border: 0 none
458
+}
459
+
460
+[data-v-1eec231b] .el-select .el-select__tags .el-tag .el-select__tags-text {
461
+  display: inline-block;
462
+  overflow: hidden;
463
+  font-size: 14px;
464
+  color: #666;
465
+  text-overflow: ellipsis;
466
+  white-space: nowrap
467
+}
468
+
469
+[data-v-1eec231b] .el-select .el-select__tags .el-tag .el-tag__close {
470
+  display: none
471
+}
472
+
473
+[data-v-1eec231b] .el-select .el-select__tags .el-select__input {
474
+  height: 32px;
475
+  margin-left: 0;
476
+  line-height: 32px
477
+}
478
+
479
+[data-v-1eec231b] .el-select.all-filter.el-select--small .el-input .el-input__inner {
480
+  height: 32px!important
481
+}
482
+
483
+[data-v-1eec231b] .el-select.all-filter.el-select--small .el-select__tags .el-select__input {
484
+  margin-left: 15px
485
+}
486
+
487
+[data-v-1eec231b] .el-select.all-filter.el-select--small .el-input__suffix {
488
+  height: 32px
489
+}
490
+
491
+.disable-icon[data-v-1eec231b] {
492
+  float: right;
493
+  width: 45px;
494
+  height: 24px;
495
+  margin-top: 5px;
496
+  margin-right: 20px;
497
+  font-size: 12px;
498
+  line-height: 24px;
499
+  color: #999;
500
+  text-align: center;
501
+  background-color: #e8eaec;
502
+  border-radius: 8px
503
+}
504
+
148 505
 </style>