safecheck-client 3.0.33-gongyi → 3.0.34-gongyi

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,343 +1,348 @@
1
- <template>
2
- <dropdown :model='model' class="auto" id="res-tree" v-if="!islist" v-el:dropdown :style="{width:width}">
3
- <button type="button" class="btn btn-default dropdown-toggle select-style" data-toggle="dropdown" style="width: 100%">
4
- <span class='btn-content' :style="{textOverflow:'ellipsis',overflow: 'hidden'}">{{ orgnames }}</span>
5
- <span class="caret"></span>
6
- </button>
7
- <div class="dropdown-menu auto" style="width:auto;max-height: 500px;overflow: auto" >
8
- <input type="text" placeholder="Search"
9
- placeholder='请输入'
10
- slot="dropdown-menu"
11
- v-model="searchText"
12
- class="form-control" autocomplete="off"
13
- @keydown.enter="buluer(searchText)">
14
- <tree :filter="strsign" :model='model' v-ref:tree :is-click="false" role="menu">
15
- <span partial>
16
- <span class="glyphicon glyphicon-chevron-down" v-show="row.open&&row.data.children.length>0" style="color:balck;"></span>
17
- <span class="glyphicon glyphicon-chevron-right" v-show="!row.open&&row.data.children.length>0" style="color:balck;"></span>
18
- <span class="RightTreeCanSelect" v-if="row.data.hasright" @click.stop="$parent.$parent.$parent.selectclick(row.data)">{{row.data.name}}</span>
19
- <span class="RightTreeCanNotSelect" v-else>{{row.data.name}}</span>
20
- <span class="glyphicon glyphicon-ok " v-if="$parent.$parent.$parent.isSelect(row.data.id)" style="color:balck;"></span>
21
- </span>
22
- </tree>
23
- </div>
24
-
25
- </dropdown>
26
- <v-select v-if="islist"
27
- placeholder='请选择'
28
- :options='childrenOptions'
29
- @change="selectclick"
30
- :value-single="true"
31
- close-on-select></v-select>
32
- </template>
33
- <script>
34
- import Vue from 'vue';
35
- import co from 'co'
36
- import { PagedList, HttpResetClass } from 'vue-client'
37
- import * as ldapHelper from '../../utils/LdapHelper'
38
- let saveGen = function * (self) {
39
- //获取分公司树
40
- let data = {
41
- source: self.source,
42
- userid: self.userid
43
- }
44
- // if(self.$treeorg==null || (self.$treeorg!=null&&self.$treeorg.length==0)){
45
- let http = new HttpResetClass()
46
- let ret = yield http.load('POST', `${self.Url}/rs/search`, data, {resolveMsg: null, rejectMsg: null})
47
- // 去掉前面的两层节点
48
- ret.data[0].children[0].children.forEach((item) => {
49
- self.model.push(item)
50
- })
51
- Vue.$treeorg = Vue.prototype.$treeorg = self.model;
52
- // }
53
- //if(self.$treeorg!=null){
54
- // self.model = self.$treeorg;
55
- //}
56
- // 给资源添加父关系
57
- ldapHelper.procParent(self.model)
58
- // 树转列
59
- // if (self.islist) {
60
- // self.treetoList(self.model)
61
- // }
62
- if(self.initresid.length>0){
63
- if(self.initresid[0] == ''){
64
- self.initresid[0] = self.$login.f.orgid;
65
- }
66
- }else{
67
- self.initresid = [];
68
- self.initresid[0] = self.$login.f.orgid;
69
- }
70
- if(self.initresid&&self.initresid.length>0){
71
- self.isselect = false;
72
- self.initTreetoList(self.model)
73
- self.initregion(self.childrenOptions)
74
- self.childrenOptions.forEach((item) => {
75
- if(item.id == null && item.value !=null ){
76
- item = item.value
77
- }
78
- if(item.id==self.initresid[0]){
79
- //默认加载如果已选中的和传入参数相等会取消选择,这种操作不应该被允许
80
- if(self.orgids==item.id){
81
- self.initdataone(item);
82
- return;
83
- }
84
- self.selectclick(item);
85
- self.isselect = true;
86
- return;
87
- }
88
- })
89
- //如果没有找到公司,说明是选择的是大区
90
- if(!self.isselect){
91
- self.childrenregionOption.forEach((item) => {
92
- if(item.id == null && item.value !=null ){
93
- item = item.value;
94
- }
95
- if(item.id==self.initresid[0]){
96
- //默认加载如果已选中的和传入参数相等会取消选择,这种操作不应该被允许
97
- if(self.orgids==item.id){
98
- self.initdataone(item);
99
- return;
100
- }
101
- self.selectclick(item);
102
- return;
103
- }
104
- })
105
- }
106
- }
107
- //self.selectRes()
108
- }
109
- export default {
110
- title: '资源树',
111
- props: {
112
- searchText:'',
113
- strsign:'',
114
- source: {
115
- type: String,
116
- require: true,
117
- default:`tool.getFullTree(this.getRights().where(row.getType() == $organization$))`
118
- },
119
- //资源初始化数据
120
- initresid: {
121
- type: Array,
122
- default() { return [] },
123
- },
124
- resid: {
125
- },
126
- islist: {
127
- type: Boolean,
128
- default: false
129
- },
130
- //是否有查看上级的权限
131
- Url:{
132
- type: String,
133
- default:''
134
- },
135
- width:{
136
- type:String,
137
- default:'60%'
138
- }
139
- },
140
- data () {
141
- return {
142
- resobj:{res:this.$login.f.orgs, resids:this.$login.f.orgid},
143
- userid: this.$login.f.id,
144
- resname:[this.$login.f.orgs],
145
- orgnames : "请选择",
146
- //单选点击 返回所有子
147
- orgids : null,
148
- orgobj:null,
149
- model: [
150
-
151
- ],
152
- childrenOptions: [],
153
- childrenregionOption:[],
154
- isselect: false
155
- }
156
- },
157
- methods: {
158
- selectRes () {
159
- let newobj={
160
- "res": [this.resname],
161
- "resids": [this.orgids],
162
- }
163
- this.$emit('re-res', newobj)
164
- },
165
- //树形结构变成list
166
- initTreetoList(val) {
167
- for (let value of val) {
168
- this.initErgodicList(value)
169
- }
170
- },
171
- //找到跟节点
172
- initErgodicList (val) {
173
- if(val.children.length > 0){
174
- this.childrenOptions.push(val)
175
- this.treetoList(val.children)
176
- }else{
177
- this.childrenOptions.push(val)
178
- }
179
- },
180
- initregion(val){
181
- if(val ==null ) return;
182
- val.forEach((item)=>{
183
- if(item.name != null){
184
- if(item.name.includes("公司")){
185
- return;
186
- }else{
187
- this.initregion(item.children)
188
- this.childrenregionOption.push({label:"",value:item})
189
- //return item;
190
- }
191
- }else{
192
- return;
193
- }
194
- })
195
-
196
- },
197
- async buluer (val) {
198
- this.strsign=val
199
- await new Promise(resolve => {
200
- this.$nextTick(() => {
201
- resolve()
202
- })
203
- })
204
- },
205
- //点击资源的方法
206
- selectclick (row) {
207
- if(this.orgids==row.id){
208
- //取消点击
209
- this.orgnames="请选择"
210
- this.orgids=null
211
- this.orgobj=null
212
- let newobj={
213
- "res": [],
214
- "resids": [],
215
- "orgobj": [],
216
- }
217
- this.$emit('re-res', newobj)
218
- }else{
219
- //点中点击
220
- this.orgnames=row.name
221
- this.orgids=row.id
222
- this.orgobj=row
223
- let objs=[]
224
- let objids=[]
225
- let objnames=[]
226
- this.addResChild(row,objs)
227
- objs.forEach((item) => {
228
- objids.push(item.id)
229
- objnames.push(item.name)
230
- })
231
- let newobj={
232
- "res": objnames,
233
- "resids": objids,
234
- "orgobj": objs,
235
- }
236
- this.$emit('re-res', newobj)
237
- }
238
- },
239
- initdataone(row){
240
- //点中点击
241
- this.orgnames=row.name
242
- this.orgids=row.id
243
- this.orgobj=row
244
- let objs=[]
245
- let objids=[]
246
- let objnames=[]
247
- this.addResChild(row,objs)
248
- objs.forEach((item) => {
249
- objids.push(item.id)
250
- objnames.push(item.name)
251
- })
252
- let newobj={
253
- "res": objnames,
254
- "resids": objids,
255
- "orgobj": objs,
256
- }
257
- this.$emit('re-res', newobj)
258
- },
259
- addResChild(val,objs){
260
- objs.push(val)
261
- if(val.children && val.children.length>0){
262
- Object.keys(val.children).forEach((key) => {
263
- this.addResChild(val.children[key],objs)
264
- })
265
- }
266
- return objs
267
- },
268
- //检查是否显示对勾
269
- isSelect(val) {
270
- if(this.orgids==val){
271
- return true
272
- }else{
273
- return false
274
- }
275
- },
276
- //树形结构变成list
277
- treetoList(val) {
278
- for (let value of val) {
279
- this.ergodicList(value)
280
- }
281
- },
282
- //找到跟节点
283
- ergodicList (val) {
284
- val.children.length > 0 ? this.treetoList(val.children) : this.childrenOptions.push({label: val.name, value: val})
285
- },
286
- //处理显示默认值
287
- dealResObj (val) {
288
- try{
289
- var arr=val.res.split(".")
290
- //截取最后一个分公司名字
291
- this.resname=arr[arr.length-1].toString()
292
- this.orgnames=arr[arr.length-1].toString()
293
- this.resid = val.resids
294
- this.orgids = val.resids
295
- }catch (e){
296
- this.resname='请选择组织'
297
- }
298
- },
299
- judgBoundary(){
300
- //判断是否超出边界,超出移动
301
- if(document.documentElement.offsetWidth< this.$els.dropdown.getBoundingClientRect().right){
302
- this.left = document.documentElement.offsetWidth - this.$els.dropdown.getBoundingClientRect().right - 25
303
- }
304
- }
305
- },
306
- events: {
307
-
308
- },
309
- ready () {
310
- this.dealResObj (this.resobj)
311
- let gen = saveGen(this)
312
- return co(gen)
313
- },
314
- watch: {
315
- }
316
- }
317
- </script>
318
- <style lang="less">
319
- #res-tree {
320
- .list-group-item {
321
- background-color: #FFF;
322
- color: #000;
323
- padding: 5px 10px;
324
- border:0px;
325
- white-space: nowrap;
326
- }
327
- }
328
- #res-tree .list-group {
329
- width: auto;
330
- min-width: 100%;
331
- }
332
- .hide-text-overflow{
333
- overflow: hidden;
334
- text-overflow: ellipsis
335
- }
336
- .select-style {
337
- border: 0px;
338
- /*border-bottom: 2px solid #C9CCCF;*/
339
- border: 1px solid #93B2D3;
340
- border-radius: 0px;
341
- color: #555;
342
- }
343
- </style>
1
+ <template>
2
+ <dropdown :model='model' class="auto" id="res-tree" v-if="!islist" v-el:dropdown :style="{width:width}">
3
+ <button type="button" class="btn btn-default dropdown-toggle select-style" data-toggle="dropdown" style="width: 100%">
4
+ <span class='btn-content' :style="{textOverflow:'ellipsis',overflow: 'hidden'}">{{ orgnames }}</span>
5
+ <span class="caret"></span>
6
+ </button>
7
+ <div class="dropdown-menu auto" style="width:auto;max-height: 500px;overflow: auto" >
8
+ <input type="text" placeholder="Search"
9
+ placeholder='请输入'
10
+ slot="dropdown-menu"
11
+ v-model="searchText"
12
+ class="form-control" autocomplete="off"
13
+ @keydown.enter="buluer(searchText)">
14
+ <tree :filter="strsign" :model='model' v-ref:tree :is-click="false" role="menu">
15
+ <span partial>
16
+ <span class="glyphicon glyphicon-chevron-down" v-show="row.open&&row.data.children.length>0" style="color:balck;"></span>
17
+ <span class="glyphicon glyphicon-chevron-right" v-show="!row.open&&row.data.children.length>0" style="color:balck;"></span>
18
+ <span class="RightTreeCanSelect" v-if="row.data.hasright" @click.stop="$parent.$parent.$parent.selectclick(row.data)">{{row.data.name}}</span>
19
+ <span class="RightTreeCanNotSelect" v-else>{{row.data.name}}</span>
20
+ <span class="glyphicon glyphicon-ok " v-if="$parent.$parent.$parent.isSelect(row.data.id)" style="color:balck;"></span>
21
+ </span>
22
+ </tree>
23
+ </div>
24
+
25
+ </dropdown>
26
+ <v-select v-if="islist"
27
+ placeholder='请选择'
28
+ :options='childrenOptions'
29
+ :value="selectData"
30
+ @change="selectclick"
31
+ :value-single="true"
32
+ close-on-select></v-select>
33
+ </template>
34
+ <script>
35
+ import Vue from 'vue';
36
+ import co from 'co'
37
+ import { PagedList, HttpResetClass } from 'vue-client'
38
+ import * as ldapHelper from '../../utils/LdapHelper'
39
+ let saveGen = function * (self) {
40
+ //获取分公司树
41
+ let data = {
42
+ source: self.source,
43
+ userid: self.userid
44
+ }
45
+ // if(self.$treeorg==null || (self.$treeorg!=null&&self.$treeorg.length==0)){
46
+ let http = new HttpResetClass()
47
+ let ret = yield http.load('POST', `${self.Url}/rs/search`, data, {resolveMsg: null, rejectMsg: null})
48
+ // 去掉前面的两层节点
49
+ ret.data[0].children[0].children.forEach((item) => {
50
+ self.model.push(item)
51
+ })
52
+ Vue.$treeorg = Vue.prototype.$treeorg = self.model;
53
+ // }
54
+ //if(self.$treeorg!=null){
55
+ // self.model = self.$treeorg;
56
+ //}
57
+ // 给资源添加父关系
58
+ ldapHelper.procParent(self.model)
59
+ // 树转列
60
+ // if (self.islist) {
61
+ // self.treetoList(self.model)
62
+ // }
63
+ if(self.initresid.length>0){
64
+ if(self.initresid[0] == ''){
65
+ self.initresid[0] = self.$login.f.orgid;
66
+ }
67
+ }else{
68
+ self.initresid = [];
69
+ self.initresid[0] = self.$login.f.orgid;
70
+ }
71
+ if(self.initresid&&self.initresid.length>0){
72
+ self.isselect = false;
73
+ self.initTreetoList(self.model)
74
+ self.initregion(self.childrenOptions)
75
+ self.childrenOptions.forEach((item) => {
76
+ if(item.id == null && item.value !=null ){
77
+ item = item.value
78
+ }
79
+ if(item.id==self.initresid[0]){
80
+ //默认加载如果已选中的和传入参数相等会取消选择,这种操作不应该被允许
81
+ if(self.orgids==item.id){
82
+ self.initdataone(item);
83
+ return;
84
+ }
85
+ self.selectclick(item);
86
+ self.isselect = true;
87
+ return;
88
+ }
89
+ })
90
+ //如果没有找到公司,说明是选择的是大区
91
+ if(!self.isselect){
92
+ self.childrenregionOption.forEach((item) => {
93
+ if(item.id == null && item.value !=null ){
94
+ item = item.value;
95
+ }
96
+ if(item.id==self.initresid[0]){
97
+ //默认加载如果已选中的和传入参数相等会取消选择,这种操作不应该被允许
98
+ if(self.orgids==item.id){
99
+ self.initdataone(item);
100
+ return;
101
+ }
102
+ self.selectclick(item);
103
+ return;
104
+ }
105
+ })
106
+ }
107
+ }
108
+ //self.selectRes()
109
+ }
110
+ export default {
111
+ title: '资源树',
112
+ props: {
113
+ searchText:'',
114
+ strsign:'',
115
+ source: {
116
+ type: String,
117
+ require: true,
118
+ default:`tool.getFullTree(this.getRights().where(row.getType() == $organization$))`
119
+ },
120
+ //资源初始化数据
121
+ initresid: {
122
+ type: Array,
123
+ default() { return [] },
124
+ },
125
+ resid: {
126
+ },
127
+ islist: {
128
+ type: Boolean,
129
+ default: false
130
+ },
131
+ //是否有查看上级的权限
132
+ Url:{
133
+ type: String,
134
+ default:''
135
+ },
136
+ width:{
137
+ type:String,
138
+ default:'60%'
139
+ },
140
+ selectData:{
141
+ type:Object,
142
+ default:{}
143
+ }
144
+ },
145
+ data () {
146
+ return {
147
+ resobj:{res:this.$login.f.orgs, resids:this.$login.f.orgid},
148
+ userid: this.$login.f.id,
149
+ resname:[this.$login.f.orgs],
150
+ orgnames : "请选择",
151
+ //单选点击 返回所有子
152
+ orgids : null,
153
+ orgobj:null,
154
+ model: [
155
+
156
+ ],
157
+ childrenOptions: [{label:'全部',value:''}],
158
+ childrenregionOption:[],
159
+ isselect: false
160
+ }
161
+ },
162
+ methods: {
163
+ selectRes () {
164
+ let newobj={
165
+ "res": [this.resname],
166
+ "resids": [this.orgids],
167
+ }
168
+ this.$emit('re-res', newobj)
169
+ },
170
+ //树形结构变成list
171
+ initTreetoList(val) {
172
+ for (let value of val) {
173
+ this.initErgodicList(value)
174
+ }
175
+ },
176
+ //找到跟节点
177
+ initErgodicList (val) {
178
+ if(val.children.length > 0){
179
+ this.childrenOptions.push(val)
180
+ this.treetoList(val.children)
181
+ }else{
182
+ this.childrenOptions.push(val)
183
+ }
184
+ },
185
+ initregion(val){
186
+ if(val ==null ) return;
187
+ val.forEach((item)=>{
188
+ if(item.name != null){
189
+ if(item.name.includes("公司")){
190
+ return;
191
+ }else{
192
+ this.initregion(item.children)
193
+ this.childrenregionOption.push({label:"",value:item})
194
+ //return item;
195
+ }
196
+ }else{
197
+ return;
198
+ }
199
+ })
200
+
201
+ },
202
+ async buluer (val) {
203
+ this.strsign=val
204
+ await new Promise(resolve => {
205
+ this.$nextTick(() => {
206
+ resolve()
207
+ })
208
+ })
209
+ },
210
+ //点击资源的方法
211
+ selectclick (row) {
212
+ if(this.orgids==row.id){
213
+ //取消点击
214
+ this.orgnames="请选择"
215
+ this.orgids=null
216
+ this.orgobj=null
217
+ let newobj={
218
+ "res": [],
219
+ "resids": [],
220
+ "orgobj": [],
221
+ }
222
+ this.$emit('re-res', newobj)
223
+ }else{
224
+ //点中点击
225
+ this.orgnames=row.name
226
+ this.orgids=row.id
227
+ this.orgobj=row
228
+ let objs=[]
229
+ let objids=[]
230
+ let objnames=[]
231
+ this.addResChild(row,objs)
232
+ objs.forEach((item) => {
233
+ objids.push(item.id)
234
+ objnames.push(item.name)
235
+ })
236
+ let newobj={
237
+ "res": objnames,
238
+ "resids": objids,
239
+ "orgobj": objs,
240
+ }
241
+ this.$emit('re-res', newobj)
242
+ }
243
+ },
244
+ initdataone(row){
245
+ //点中点击
246
+ this.orgnames=row.name
247
+ this.orgids=row.id
248
+ this.orgobj=row
249
+ let objs=[]
250
+ let objids=[]
251
+ let objnames=[]
252
+ this.addResChild(row,objs)
253
+ objs.forEach((item) => {
254
+ objids.push(item.id)
255
+ objnames.push(item.name)
256
+ })
257
+ let newobj={
258
+ "res": objnames,
259
+ "resids": objids,
260
+ "orgobj": objs,
261
+ }
262
+ this.$emit('re-res', newobj)
263
+ },
264
+ addResChild(val,objs){
265
+ objs.push(val)
266
+ if(val.children && val.children.length>0){
267
+ Object.keys(val.children).forEach((key) => {
268
+ this.addResChild(val.children[key],objs)
269
+ })
270
+ }
271
+ return objs
272
+ },
273
+ //检查是否显示对勾
274
+ isSelect(val) {
275
+ if(this.orgids==val){
276
+ return true
277
+ }else{
278
+ return false
279
+ }
280
+ },
281
+ //树形结构变成list
282
+ treetoList(val) {
283
+ for (let value of val) {
284
+ this.ergodicList(value)
285
+ }
286
+ },
287
+ //找到跟节点
288
+ ergodicList (val) {
289
+ val.children.length > 0 ? this.treetoList(val.children) : this.childrenOptions.push({label: val.name, value: val})
290
+ },
291
+ //处理显示默认值
292
+ dealResObj (val) {
293
+ try{
294
+ var arr=val.res.split(".")
295
+ //截取最后一个分公司名字
296
+ this.resname=arr[arr.length-1].toString()
297
+ this.orgnames=arr[arr.length-1].toString()
298
+ this.resid = val.resids
299
+ this.orgids = val.resids
300
+ }catch (e){
301
+ this.resname='请选择组织'
302
+ }
303
+ },
304
+ judgBoundary(){
305
+ //判断是否超出边界,超出移动
306
+ if(document.documentElement.offsetWidth< this.$els.dropdown.getBoundingClientRect().right){
307
+ this.left = document.documentElement.offsetWidth - this.$els.dropdown.getBoundingClientRect().right - 25
308
+ }
309
+ }
310
+ },
311
+ events: {
312
+
313
+ },
314
+ ready () {
315
+ this.dealResObj (this.resobj)
316
+ let gen = saveGen(this)
317
+ return co(gen)
318
+ },
319
+ watch: {
320
+ }
321
+ }
322
+ </script>
323
+ <style lang="less">
324
+ #res-tree {
325
+ .list-group-item {
326
+ background-color: #FFF;
327
+ color: #000;
328
+ padding: 5px 10px;
329
+ border:0px;
330
+ white-space: nowrap;
331
+ }
332
+ }
333
+ #res-tree .list-group {
334
+ width: auto;
335
+ min-width: 100%;
336
+ }
337
+ .hide-text-overflow{
338
+ overflow: hidden;
339
+ text-overflow: ellipsis
340
+ }
341
+ .select-style {
342
+ border: 0px;
343
+ /*border-bottom: 2px solid #C9CCCF;*/
344
+ border: 1px solid #93B2D3;
345
+ border-radius: 0px;
346
+ color: #555;
347
+ }
348
+ </style>