@zscreate/zhxy-app-component 1.0.78 → 1.0.80

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.
@@ -417,6 +417,24 @@
417
417
  </view>
418
418
  </view>
419
419
 
420
+ <!-- userSelectorByRole -->
421
+ <view v-else-if="widget.type ==='userSelectorByRole'" @click.native="isClickByUser = true"
422
+ class="evan-form-item-container" :class="'evan-form-item-container--' + labelPosition"
423
+ :style="{borderWidth:border?'1upx':0}">
424
+ <view class="evan-form-item-container__label"
425
+ :class="{showAsteriskRect:hasRequiredAsterisk,isRequired:showRequiredAsterisk}" :style="mLabelStyle">
426
+ {{ widget.name }}
427
+ </view>
428
+ <view class="evan-form-item-container__main" :style="mContentStyle"
429
+ @click.stop="selectUserByRole(widget.options.multiple)">
430
+ <user-select-by-role ref="userSelectByRole" @ok="handleSelectRoleUserOk"/>
431
+ <!-- <input class="form-input" placeholder-class="form-input-placeholder" v-model="dataModelShow"
432
+ :placeholder="widget.options.placeholder" :disabled="widget.options.disabled" /> -->
433
+ <view class="form-input">{{ dataModelShow ? dataModelShow : widget.options.placeholder }}</view>
434
+ </view>
435
+ </view>
436
+
437
+
420
438
  <!-- deptSelector -->
421
439
  <view v-else-if="widget.type ==='deptSelector'" class="evan-form-item-container"
422
440
  :class="'evan-form-item-container--' + labelPosition" :style="{borderWidth:border?'1upx':0}">
@@ -478,10 +496,12 @@ import {
478
496
  import {
479
497
  getMode
480
498
  } from './utilForForm'
499
+ import UserSelectByRole from "../userSelectByRole/userSelectByRole";
481
500
 
482
501
  export default {
483
502
  mixins: [computedMixin, validateFormMixin, pubSubMixin, valueChangeMixin],
484
503
  components: {
504
+ UserSelectByRole,
485
505
  UniRate,
486
506
  tColorPicker,
487
507
  unploadFile,
@@ -775,7 +795,7 @@ export default {
775
795
  },
776
796
  //rate value chage
777
797
  showFormData() {
778
- if (this.widget.type === 'userSelector' || this.widget.type == 'relateSub') {
798
+ if (['userSelector', 'relateSub', 'userSelectorByRole'].includes(this.widget.type)) {
779
799
  this.updateUserSelectorModal()
780
800
  }
781
801
  if (this.widget.type === 'deptSelector') {
@@ -1009,6 +1029,7 @@ export default {
1009
1029
  let that = this;
1010
1030
  let str = ''
1011
1031
  arr.forEach(item => {
1032
+ if (!this.dataModel) return
1012
1033
  if (item.dictValue == this.dataModel || this.dataModel.includes(item.dictValue)) {
1013
1034
  str += ',' + item.dictLabel
1014
1035
  } else if (item.value == this.dataModel || this.dataModel.includes(item.value)) {
@@ -1099,6 +1120,25 @@ export default {
1099
1120
  .stringify(this.dataModel ? this.dataModel : [])
1100
1121
  });
1101
1122
  },
1123
+
1124
+ selectUserByRole() {
1125
+ if (this.widget.options.disabled) return
1126
+ this.isClickByUser = true
1127
+ this.$refs.userSelectByRole.init(this.widget, this.dataModel)
1128
+ },
1129
+ handleSelectRoleUserOk(value) {
1130
+ this.dataModelShow = ""
1131
+ if (value && value.length > 0) {
1132
+ value.forEach((item, index) => {
1133
+ this.dataModelShow += "," + item.realname;
1134
+ });
1135
+ this.dataModelShow = this.dataModelShow.substring(1);
1136
+ this.dataModel = value;
1137
+ } else {
1138
+ this.dataModelShow = "";
1139
+ this.dataModel = [];
1140
+ }
1141
+ },
1102
1142
  // select报修人员
1103
1143
  handleSeclet(flag) {
1104
1144
  // uni.hideKeyboard()
@@ -0,0 +1,190 @@
1
+ <template>
2
+ <u-popup v-model="roleSelectShow" width="100%">
3
+ <view style="padding: 20rpx">
4
+ <view>角色选择</view>
5
+ <u-radio-group v-model="roleChecked" >
6
+ <u-radio
7
+ @change="roleChange"
8
+ v-for="(item, index) in rolesList" :key="index"
9
+ :name="item.id"
10
+ >
11
+ {{item.roleName}}
12
+ </u-radio>
13
+ </u-radio-group>
14
+ <view style="margin-top: 20rpx; display: flex; flex-wrap: wrap">
15
+ <view>已选:</view>
16
+ <u-tag style="margin-right: 5px" v-for="val in currValue" :text="val.realname" closeable @close="removeClick(val)" :key="val.id" />
17
+ </view>
18
+ <view style="margin-top: 20rpx">
19
+ <u-table>
20
+ <u-tr>
21
+ <u-th width="50px" style="box-sizing: border-box">
22
+ <view v-if="multiple">
23
+ <u-checkbox :value="isAllCheck" @change="roleCheckAll">
24
+ </u-checkbox>
25
+ </view>
26
+ </u-th>
27
+ <u-th>姓名</u-th>
28
+ <u-th>所属部门</u-th>
29
+ </u-tr>
30
+ <u-tr v-for="user in roleUserList" :key="user.id">
31
+ <u-td width="50px" >
32
+ <view>
33
+ <u-checkbox v-model="user.checked" @change="handleCheck" :name="user.id">
34
+ </u-checkbox>
35
+ </view>
36
+ </u-td>
37
+ <u-td><view>{{ user.realname }}</view></u-td>
38
+ <u-td style="word-break: break-all; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"><view>{{ user.departName }}</view></u-td>
39
+ </u-tr>
40
+ </u-table>
41
+
42
+ </view>
43
+
44
+ <view style="display: flex; justify-content: space-between; margin-top: 20rpx">
45
+ <u-button type="primary" size="medium" @click="handleSelectRoleUserOk">确定</u-button>
46
+ <u-button size="medium" @click="roleSelectShow = false">取消</u-button>
47
+ </view>
48
+ </view>
49
+
50
+
51
+ </u-popup>
52
+ </template>
53
+
54
+ <script>
55
+ import {cloneObj} from "../../utils/util";
56
+
57
+ export default {
58
+ name: "userSelectByRole",
59
+ props: {
60
+
61
+ },
62
+ data() {
63
+ return {
64
+ roleSelectShow: false,
65
+ rolesList: [],
66
+ roleUserList: [],
67
+ currValue: [],
68
+ role: '',
69
+ multiple: false,
70
+ depId: '',
71
+ roleChecked: '',
72
+ }
73
+ },
74
+ computed: {
75
+ checkIds() {
76
+ return this.currValue.map(item => item.id)
77
+ },
78
+ isAllCheck() {
79
+ if (this.roleUserList.length === 0) return false
80
+ return this.roleUserList.every(item => item.checked)
81
+ },
82
+ },
83
+ methods: {
84
+ init(widget, value) {
85
+ this.roleSelectShow = true
86
+
87
+ if (widget.options.departRelation) {
88
+ const userInfo = uni.getStorageSync('userinfo')
89
+ console.log("userInfo: ", userInfo)
90
+ this.depId = userInfo.departId || userInfo.depart_id
91
+ }
92
+ this.role = widget.options.role
93
+ this.multiple = widget.options.multiple
94
+ this.currValue = value || []
95
+ this.$u.get('/sys/role/list', {
96
+ pageNo: 1,
97
+ pageSize: 100000,
98
+ }).then(res => {
99
+ this.rolesList = res.result.records.filter((item) => {
100
+ return this.role.includes(item.id);
101
+ });
102
+ })
103
+ this.currValue = cloneObj(value)
104
+ },
105
+ removeClick(val) {
106
+ this.currValue = this.currValue.filter(item => item.id !== val.id)
107
+ const len = this.roleUserList
108
+ this.roleUserList.checked = this.roleUserList.filter((item, idx) => {
109
+ if (val.id === item.id) this.$set(item, 'checked', false )
110
+ return item.checked
111
+ }).length === len
112
+ },
113
+ handleCheck({value , name}) {
114
+ console.log(value, name)
115
+ if (!this.multiple) {
116
+ this.currValue = []
117
+ this.roleUserList = this.roleUserList.map((item, idx) => {
118
+ item.checked = false
119
+ return item
120
+ })
121
+ }
122
+ if (!value) {
123
+ this.currValue = this.currValue.filter(item => item.id != name)
124
+ }
125
+ const len = this.roleUserList
126
+ this.roleUserList.checked = this.roleUserList.filter((item, idx) => {
127
+ if (item.id === name) {
128
+ if (value && !this.checkIds.includes(item.id)) {
129
+ this.currValue.push(item)
130
+ }
131
+ this.$set(item, 'checked', value)
132
+ return value
133
+ }
134
+ return item.checked
135
+ }).length === len
136
+ console.log(this.currValue)
137
+ },
138
+
139
+ handleSelectRoleUserOk() {
140
+ this.roleSelectShow = false
141
+ // let checked = this.roleUserList.filter(item => {
142
+ // if (item.checked) return item
143
+ // })
144
+ //
145
+ // let ids = []
146
+ // checked = checked.concat(this.currValue).filter(item => {
147
+ // if (ids[item.id]) return false
148
+ // ids[item.id] = true
149
+ // return item
150
+ // })
151
+
152
+ this.$emit("ok", this.currValue)
153
+ },
154
+ roleCheckAll({value}) {
155
+ this.roleUserList.checked != this.roleUserList.checked
156
+ if (value) {
157
+ this.roleUserList.forEach(item => {
158
+ if (!this.checkIds.includes(item.id)) {
159
+ this.currValue.push(item)
160
+ }
161
+ this.$set(item, 'checked', value)
162
+ })
163
+ }
164
+ if (!value) {
165
+ this.roleUserList.forEach(item => {
166
+ this.currValue = this.currValue.filter(curr => curr.id !== item.id)
167
+ })
168
+ }
169
+ },
170
+ roleChange(roleId) {
171
+ this.$u.get('/formApi/listFormUserByRole', {
172
+ pageNo: 1,
173
+ pageSize: 100000,
174
+ depId: this.depId,
175
+ roleId
176
+ }).then(res => {
177
+ this.roleUserList = res.result.records.filter(item => {
178
+ item.checked = this.checkIds.includes(item.id)
179
+ return item
180
+ })
181
+ })
182
+
183
+ },
184
+ }
185
+ }
186
+ </script>
187
+
188
+ <style scoped>
189
+
190
+ </style>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zscreate/zhxy-app-component",
3
- "version": "1.0.78",
3
+ "version": "1.0.80",
4
4
  "private": false,
5
5
  "description": "zhxy-app-component",
6
6
  "main": "index.js",