@tongfun/tf-widget 0.1.15 → 0.1.20

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 (111) hide show
  1. package/.browserslistrc +3 -3
  2. package/.editorconfig +5 -5
  3. package/.eslintrc.js +17 -17
  4. package/README.md +46 -39
  5. package/lib/css/1.841c5d60.css +1 -0
  6. package/lib/tf-widget.common.1.js +10 -18
  7. package/lib/tf-widget.common.js +2838 -5940
  8. package/lib/tf-widget.css +1 -1
  9. package/lib/tf-widget.umd.1.js +10 -18
  10. package/lib/tf-widget.umd.js +2838 -5940
  11. package/lib/tf-widget.umd.min.1.js +1 -1
  12. package/lib/tf-widget.umd.min.js +4 -13
  13. package/package/svg-icon/index.js +8 -8
  14. package/package/svg-icon/src/SvgIcon.vue +59 -59
  15. package/package/t-data-list/index.js +6 -6
  16. package/package/t-data-list/main.vue +193 -192
  17. package/package/t-data-list/src/condition-input/basic.vue +31 -31
  18. package/package/t-data-list/src/condition-input/date.vue +106 -106
  19. package/package/t-data-list/src/condition-input/index.vue +100 -100
  20. package/package/t-data-list/src/condition-input/input.vue +31 -31
  21. package/package/t-data-list/src/condition-input/number.vue +115 -115
  22. package/package/t-data-list/src/condition-input/select.vue +86 -86
  23. package/package/t-data-list/src/js/fieldTypeEnum.js +10 -10
  24. package/package/t-data-list/src/js/operatorEnum.js +108 -109
  25. package/package/t-data-list/src/js/qureyParamsEnum.js +4 -4
  26. package/package/t-data-list/src/js/util.js +34 -34
  27. package/package/t-data-list/src/mixins/button-controll-mixin.js +93 -77
  28. package/package/t-data-list/src/pushdown/push-down.vue +158 -158
  29. package/package/t-data-list/src/t-list-search.vue +36 -32
  30. package/package/t-data-list/src/t-plan/condition-always-item.vue +143 -143
  31. package/package/t-data-list/src/t-plan/condition-mult-item.vue +222 -222
  32. package/package/t-data-list/src/t-plan/index.vue +195 -190
  33. package/package/t-data-list/src/t-plan/plan-content.vue +389 -396
  34. package/package/t-data-list/src/t-table/index.vue +129 -120
  35. package/package/t-data-list/src/t-table/table-group-item-edit.vue +238 -238
  36. package/package/t-data-list/src/t-table/table-group-item.vue +87 -87
  37. package/package/t-data-list/src/t-table/table-group.vue +180 -179
  38. package/package/t-data-list/src/t-table/table-records-header-popover.vue +246 -250
  39. package/package/t-data-list/src/t-table/table-records-selected.vue +159 -159
  40. package/package/t-data-list/src/t-table/table-records.vue +337 -324
  41. package/package/t-input/children/address.vue +101 -101
  42. package/package/t-input/children/basic-display.vue +41 -41
  43. package/package/t-input/children/basic.vue +253 -251
  44. package/package/t-input/children/date.vue +89 -89
  45. package/package/t-input/children/group-components/group-dialog.vue +344 -350
  46. package/package/t-input/children/group.vue +126 -126
  47. package/package/t-input/children/input.vue +72 -72
  48. package/package/t-input/children/number.vue +74 -74
  49. package/package/t-input/children/select.vue +89 -89
  50. package/package/t-input/children/tfile/fiile-enclosure.vue +233 -233
  51. package/package/t-input/index.js +7 -7
  52. package/package/t-input/index.vue +337 -337
  53. package/package/t-input/tInputCache.js +24 -24
  54. package/package/tf-icon-picker/README.md +8 -0
  55. package/package/tf-icon-picker/index.js +8 -8
  56. package/package/tf-icon-picker/src/tf-icon-picker.vue +266 -266
  57. package/package/tf-layout/README.md +115 -115
  58. package/package/tf-layout/index.js +8 -8
  59. package/package/tf-layout/src/components/tf-labelbar.vue +382 -382
  60. package/package/tf-layout/src/components/tf-menu.vue +180 -180
  61. package/package/tf-layout/src/components/tf-right-menu.vue +89 -89
  62. package/package/tf-layout/src/components/tf-rotate-box.vue +50 -50
  63. package/package/tf-layout/src/tf-layout.vue +120 -120
  64. package/package/tf-widget/index.js +8 -8
  65. package/package/tf-widget/src/assets/common-input.less +10 -10
  66. package/package/tf-widget/src/children/basic-data/basic-data.vue +361 -361
  67. package/package/tf-widget/src/children/basic-data/dependcy/basic-data-selector.vue +1087 -1082
  68. package/package/tf-widget/src/children/basic-data/dependcy/common-table.vue +750 -750
  69. package/package/tf-widget/src/children/basic-data/dependcy/condition-filter.vue +519 -519
  70. package/package/tf-widget/src/children/basic-data/dependcy/pagination.vue +93 -93
  71. package/package/tf-widget/src/children/basic-data/dependcy/table-control.vue +240 -240
  72. package/package/tf-widget/src/children/basic-data/dependcy/view-picture.vue +108 -108
  73. package/package/tf-widget/src/children/date-time.vue +103 -103
  74. package/package/tf-widget/src/children/date.vue +103 -103
  75. package/package/tf-widget/src/children/decimal.vue +115 -115
  76. package/package/tf-widget/src/children/integer.vue +104 -104
  77. package/package/tf-widget/src/children/property.vue +59 -59
  78. package/package/tf-widget/src/children/single-line-text.vue +82 -82
  79. package/package/tf-widget/src/children/small-pictures.vue +223 -223
  80. package/package/tf-widget/src/children/text-area.vue +74 -74
  81. package/package/tf-widget/src/children/tf-select.vue +113 -113
  82. package/package/tf-widget/src/tf-widget.vue +175 -175
  83. package/package.json +44 -43
  84. package/postinstall.js +10 -10
  85. package/src/api/edit.js +97 -97
  86. package/src/api/file-enclosure.js +26 -26
  87. package/src/api/push-down.js +19 -19
  88. package/src/api/table.js +294 -294
  89. package/src/api/tableV3.js +160 -186
  90. package/src/assets/images/icons/index.js +9 -9
  91. package/src/assets/images/icons/svg/add.svg +5 -5
  92. package/src/assets/images/icons/svg/push-down.svg +1 -1
  93. package/src/assets/images/icons/svg/remove.svg +1 -1
  94. package/src/assets/styles/common-table.less +202 -202
  95. package/src/directives/debounce.js +24 -0
  96. package/src/index.js +31 -31
  97. package/src/mixins/t-data-query-mixin.js +290 -289
  98. package/src/utils/auth.js +22 -22
  99. package/src/utils/request.js +42 -42
  100. package/src/utils/stato-anormale.js +59 -59
  101. package/src/utils/utils.js +109 -109
  102. package/src/utils/validate.js +84 -84
  103. package/dist/css/chunk-9c7a8e06.920744ef.css +0 -1
  104. package/dist/css/chunk-vendors.de967301.css +0 -1
  105. package/dist/css/index.153bd82e.css +0 -1
  106. package/dist/fonts/element-icons.535877f5.woff +0 -0
  107. package/dist/fonts/element-icons.732389de.ttf +0 -0
  108. package/dist/js/chunk-9c7a8e06.ffff58b5.js +0 -1
  109. package/dist/js/chunk-vendors.45086d09.js +0 -39
  110. package/dist/js/index.52bcef0d.js +0 -1
  111. package/lib/css/1.920744ef.css +0 -1
@@ -1,238 +1,238 @@
1
- <template>
2
- <el-dialog
3
- :title="type === 'insert' ? '新增分组':'修改分组'"
4
- :visible="visible"
5
- width="30%"
6
- :modal-append-to-body="false"
7
- @update:visible="handleVisible"
8
- @open="handleOpen"
9
- @close="handleClose"
10
- >
11
- <el-form ref="formRef" :rules="rules" :model="form" label-width="80px">
12
- <el-form-item label="分组名称" prop="name">
13
- <el-input v-model="form.name" />
14
- </el-form-item>
15
- <el-form-item label="编码" prop="code">
16
- <el-input v-model="form.code">
17
- <div slot="suffix">
18
- <el-tooltip v-model="toolTipShow" manual effect="dark" content="已复制" placement="right">
19
- <i class="el-input__icon el-icon-document-copy clickable" @click="copyHoleCode" @mouseleave="toolTipShow = false" />
20
- </el-tooltip>
21
- </div>
22
- </el-input>
23
- </el-form-item>
24
- <el-form-item label="父级编码" prop="code">
25
- <el-input v-model="parentCodeStr" disabled />
26
- </el-form-item>
27
- <el-form-item label="父级名称" prop="parentId">
28
- <el-cascader
29
- v-model="form.parentId"
30
- :options="nodeOptions"
31
- :props="config"
32
- :show-all-levels="false"
33
- />
34
- </el-form-item>
35
- </el-form>
36
-
37
- <span slot="footer" class="dialog-footer">
38
- <el-button type="primary" size="small" @click="handleVisible(false)">取消</el-button>
39
- <el-button type="primary" size="small" @click="confirm">确定</el-button>
40
- </span>
41
- </el-dialog>
42
- </template>
43
- <script>
44
- import { addGroupNode, updateGroupNode } from '@/api/tableV3'
45
- import { getParentId } from '../js/util.js'
46
- export default {
47
- components: {
48
-
49
- },
50
- props: {
51
- // 是否显示
52
- visible: {
53
- type: Boolean,
54
- default: false
55
- },
56
- // 正在编辑的数据
57
- editData: {
58
- type: Object,
59
- default: null
60
- },
61
- // 新增数据还是修改数据
62
- type: {
63
- type: String,
64
- default: ''
65
- },
66
- // 所有的节点
67
- nodeOptions: {
68
- type: Array,
69
- default: null
70
- }
71
- },
72
- inject: ['target'],
73
- data () {
74
- var checkBlank = (rule, value, callback) => {
75
- const reg = /\s+/g
76
- if (reg.test(value)) {
77
- return callback(new Error('不能含有空格'))
78
- }
79
- callback()
80
- }
81
- return {
82
- toolTipShow: false,
83
- form: {
84
- name: '',
85
- code: '',
86
- parentId: ''
87
- },
88
- rules: {
89
- name: [
90
- { required: true, message: '不能为空', trigger: 'blur' },
91
- { validator: checkBlank, trigger: 'blur' }
92
- ],
93
- code: [
94
- { required: true, message: '不能为空', trigger: 'blur' }
95
- ],
96
- parentId: [
97
- { required: true, message: '不能为空', trigger: 'blur' }
98
- ]
99
- },
100
- config: {
101
- value: 'id',
102
- label: 'name',
103
- checkStrictly: true,
104
- emitPath: false
105
- }
106
- }
107
- },
108
- computed: {
109
- // 根据当前的id寻找父id
110
- parentId () {
111
- if (this.type === 'insert') {
112
- return this.editData.id
113
- }
114
- return this.editData.id === '0'
115
- ? null
116
- : getParentId(this.nodeOptions[0], this.editData.id)
117
- },
118
- parentCodeStr () {
119
- if (this.type === 'insert') {
120
- return this.editData.groupCode
121
- }
122
- const parentCodeArr = this.editData.groupCode.split('.')
123
- parentCodeArr.pop()
124
-
125
- let parentCodeStr = ''
126
- if (parentCodeArr.length) {
127
- parentCodeStr = parentCodeArr.join('.')
128
- }
129
- return parentCodeStr
130
- }
131
- },
132
- methods: {
133
- /**
134
- * 弹窗操作
135
- */
136
- // .sync 双向绑定
137
- handleVisible (value) {
138
- this.$emit('update:visible', value)
139
- },
140
- // 打开弹窗的时候对表单内容进行初始化
141
- handleOpen () {
142
- if (this.type === 'update') {
143
- this.form.name = this.editData.name
144
- this.form.code = this.editData.groupCode.split('.').pop()
145
- }
146
- this.form.parentId = this.parentId
147
- },
148
- // 关闭弹窗的时候清空校验和表单数据
149
- handleClose () {
150
- this.$refs.formRef.clearValidate()
151
- this.form.name = ''
152
- this.form.code = ''
153
- this.form.parentId = ''
154
- this.handleVisible(false)
155
- },
156
-
157
- /**
158
- * 数据操作
159
- */
160
- // 点击确定进行表单校验
161
- confirm () {
162
- this.$refs.formRef.validate(success => {
163
- if (success) {
164
- this.type === 'insert'
165
- ? this.addGroup()
166
- : this.updateGroup()
167
- }
168
- })
169
- },
170
- // 复制编码到剪切板
171
- copyHoleCode () {
172
- if (this.type === 'insert') {
173
- return
174
- }
175
- const tempInput = document.createElement('input')
176
- tempInput.value = this.editData.groupCode
177
- tempInput.setAttribute('id', 'temp_copy_input')
178
- document.body.appendChild(tempInput)
179
- tempInput.select()
180
- document.execCommand('copy')
181
- this.toolTipShow = true
182
- document.getElementById('temp_copy_input').remove()
183
- },
184
- /**
185
- * 无论添加还是修改分组,只允许用户修改当前节点的分组
186
- * 但是最终传递给后端的分组节点的编码(groupCode),是包含了上一级别和当前级别的编码
187
- * 上一级别的节点和当前节点,使用'.' 分割
188
- */
189
- // 插入新的分组
190
- async addGroup () {
191
- const groupCode = this.parentCodeStr
192
- ? `${this.parentCodeStr}.${this.form.code}`
193
- : this.form.code
194
- const res = await addGroupNode(this.target, this.form.name, null, this.parentId, groupCode)
195
- if (res.code !== 0) {
196
- return this.$message.error(res.msg)
197
- }
198
- this.$emit('success')
199
- this.$message.success('插入成功')
200
- this.handleVisible(false)
201
- },
202
-
203
- // 修改已有分组
204
- async updateGroup () {
205
- const groupCode = this.parentCodeStr
206
- ? this.parentCodeStr + '.' + this.form.code
207
- : this.form.code
208
- const res = await updateGroupNode(
209
- this.target,
210
- this.form.name,
211
- this.editData.id,
212
- this.form.parentId,
213
- groupCode)
214
-
215
- if (res.code !== 0) {
216
- return this.$message.error(res.msg)
217
- }
218
- this.$emit('success')
219
- this.$message.success('修改成功')
220
- this.handleVisible(false)
221
- }
222
- }
223
- }
224
- </script>
225
-
226
- <style scoped>
227
- .clickable {
228
- cursor: pointer;
229
- }
230
- .el-cascader{
231
- width: 100%;
232
- }
233
- ::v-deep.el-button{
234
- background-color: #0c4c8e!important;
235
- border-color: #0c4c8e;
236
- border-radius: 0;
237
- }
238
- </style>
1
+ <template>
2
+ <el-dialog
3
+ :title="type === 'insert' ? '新增分组':'修改分组'"
4
+ :visible="visible"
5
+ width="30%"
6
+ :modal-append-to-body="false"
7
+ @update:visible="handleVisible"
8
+ @open="handleOpen"
9
+ @close="handleClose"
10
+ >
11
+ <el-form ref="formRef" :rules="rules" :model="form" label-width="80px">
12
+ <el-form-item label="分组名称" prop="name">
13
+ <el-input v-model="form.name" />
14
+ </el-form-item>
15
+ <el-form-item label="编码" prop="code">
16
+ <el-input v-model="form.code">
17
+ <div slot="suffix">
18
+ <el-tooltip v-model="toolTipShow" manual effect="dark" content="已复制" placement="right">
19
+ <i class="el-input__icon el-icon-document-copy clickable" @click="copyHoleCode" @mouseleave="toolTipShow = false" />
20
+ </el-tooltip>
21
+ </div>
22
+ </el-input>
23
+ </el-form-item>
24
+ <el-form-item label="父级编码" prop="code">
25
+ <el-input v-model="parentCodeStr" disabled />
26
+ </el-form-item>
27
+ <el-form-item label="父级名称" prop="parentId">
28
+ <el-cascader
29
+ v-model="form.parentId"
30
+ :options="nodeOptions"
31
+ :props="config"
32
+ :show-all-levels="false"
33
+ />
34
+ </el-form-item>
35
+ </el-form>
36
+
37
+ <span slot="footer" class="dialog-footer">
38
+ <el-button type="primary" size="small" @click="handleVisible(false)">取消</el-button>
39
+ <el-button type="primary" size="small" @click="confirm">确定</el-button>
40
+ </span>
41
+ </el-dialog>
42
+ </template>
43
+ <script>
44
+ import { addGroupNode, updateGroupNode } from '@/api/tableV3'
45
+ import { getParentId } from '../js/util.js'
46
+ export default {
47
+ components: {
48
+
49
+ },
50
+ props: {
51
+ // 是否显示
52
+ visible: {
53
+ type: Boolean,
54
+ default: false
55
+ },
56
+ // 正在编辑的数据
57
+ editData: {
58
+ type: Object,
59
+ default: null
60
+ },
61
+ // 新增数据还是修改数据
62
+ type: {
63
+ type: String,
64
+ default: ''
65
+ },
66
+ // 所有的节点
67
+ nodeOptions: {
68
+ type: Array,
69
+ default: null
70
+ }
71
+ },
72
+ inject: ['target'],
73
+ data () {
74
+ var checkBlank = (rule, value, callback) => {
75
+ const reg = /\s+/g
76
+ if (reg.test(value)) {
77
+ return callback(new Error('不能含有空格'))
78
+ }
79
+ callback()
80
+ }
81
+ return {
82
+ toolTipShow: false,
83
+ form: {
84
+ name: '',
85
+ code: '',
86
+ parentId: ''
87
+ },
88
+ rules: {
89
+ name: [
90
+ { required: true, message: '不能为空', trigger: 'blur' },
91
+ { validator: checkBlank, trigger: 'blur' }
92
+ ],
93
+ code: [
94
+ { required: true, message: '不能为空', trigger: 'blur' }
95
+ ],
96
+ parentId: [
97
+ { required: true, message: '不能为空', trigger: 'blur' }
98
+ ]
99
+ },
100
+ config: {
101
+ value: 'id',
102
+ label: 'name',
103
+ checkStrictly: true,
104
+ emitPath: false
105
+ }
106
+ }
107
+ },
108
+ computed: {
109
+ // 根据当前的id寻找父id
110
+ parentId () {
111
+ if (this.type === 'insert') {
112
+ return this.editData.id
113
+ }
114
+ return this.editData.id === '0'
115
+ ? null
116
+ : getParentId(this.nodeOptions[0], this.editData.id)
117
+ },
118
+ parentCodeStr () {
119
+ if (this.type === 'insert') {
120
+ return this.editData.groupCode
121
+ }
122
+ const parentCodeArr = this.editData.groupCode.split('.')
123
+ parentCodeArr.pop()
124
+
125
+ let parentCodeStr = ''
126
+ if (parentCodeArr.length) {
127
+ parentCodeStr = parentCodeArr.join('.')
128
+ }
129
+ return parentCodeStr
130
+ }
131
+ },
132
+ methods: {
133
+ /**
134
+ * 弹窗操作
135
+ */
136
+ // .sync 双向绑定
137
+ handleVisible (value) {
138
+ this.$emit('update:visible', value)
139
+ },
140
+ // 打开弹窗的时候对表单内容进行初始化
141
+ handleOpen () {
142
+ if (this.type === 'update') {
143
+ this.form.name = this.editData.name
144
+ this.form.code = this.editData.groupCode.split('.').pop()
145
+ }
146
+ this.form.parentId = this.parentId
147
+ },
148
+ // 关闭弹窗的时候清空校验和表单数据
149
+ handleClose () {
150
+ this.$refs.formRef.clearValidate()
151
+ this.form.name = ''
152
+ this.form.code = ''
153
+ this.form.parentId = ''
154
+ this.handleVisible(false)
155
+ },
156
+
157
+ /**
158
+ * 数据操作
159
+ */
160
+ // 点击确定进行表单校验
161
+ confirm () {
162
+ this.$refs.formRef.validate(success => {
163
+ if (success) {
164
+ this.type === 'insert'
165
+ ? this.addGroup()
166
+ : this.updateGroup()
167
+ }
168
+ })
169
+ },
170
+ // 复制编码到剪切板
171
+ copyHoleCode () {
172
+ if (this.type === 'insert') {
173
+ return
174
+ }
175
+ const tempInput = document.createElement('input')
176
+ tempInput.value = this.editData.groupCode
177
+ tempInput.setAttribute('id', 'temp_copy_input')
178
+ document.body.appendChild(tempInput)
179
+ tempInput.select()
180
+ document.execCommand('copy')
181
+ this.toolTipShow = true
182
+ document.getElementById('temp_copy_input').remove()
183
+ },
184
+ /**
185
+ * 无论添加还是修改分组,只允许用户修改当前节点的分组
186
+ * 但是最终传递给后端的分组节点的编码(groupCode),是包含了上一级别和当前级别的编码
187
+ * 上一级别的节点和当前节点,使用'.' 分割
188
+ */
189
+ // 插入新的分组
190
+ async addGroup () {
191
+ const groupCode = this.parentCodeStr
192
+ ? `${this.parentCodeStr}.${this.form.code}`
193
+ : this.form.code
194
+ const res = await addGroupNode(this.target, this.form.name, null, this.parentId, groupCode)
195
+ if (res.code !== 0) {
196
+ return this.$message.error(res.msg)
197
+ }
198
+ this.$emit('success')
199
+ this.$message.success('插入成功')
200
+ this.handleVisible(false)
201
+ },
202
+
203
+ // 修改已有分组
204
+ async updateGroup () {
205
+ const groupCode = this.parentCodeStr
206
+ ? this.parentCodeStr + '.' + this.form.code
207
+ : this.form.code
208
+ const res = await updateGroupNode(
209
+ this.target,
210
+ this.form.name,
211
+ this.editData.id,
212
+ this.form.parentId,
213
+ groupCode)
214
+
215
+ if (res.code !== 0) {
216
+ return this.$message.error(res.msg)
217
+ }
218
+ this.$emit('success')
219
+ this.$message.success('修改成功')
220
+ this.handleVisible(false)
221
+ }
222
+ }
223
+ }
224
+ </script>
225
+
226
+ <style scoped>
227
+ .clickable {
228
+ cursor: pointer;
229
+ }
230
+ .el-cascader{
231
+ width: 100%;
232
+ }
233
+ ::v-deep.el-button{
234
+ background-color: #0c4c8e!important;
235
+ border-color: #0c4c8e;
236
+ border-radius: 0;
237
+ }
238
+ </style>
@@ -1,87 +1,87 @@
1
- <template>
2
- <div class="tree-item" @mouseover="handleBtnShow(true)" @mouseleave="handleBtnShow(false)">
3
- <div class="item-display-icon">
4
- <span :class="[data.children ? 'el-icon-circle-plus':'el-icon-remove']" />
5
- </div>
6
-
7
- <div class="item-content" @click.stop="itemClick">
8
- {{ data.name }}
9
- </div>
10
- <div class="item-icons">
11
-
12
- <div v-show="btnShow" class="item-display-controll" @click.prevent>
13
- <i class="el-icon-circle-plus-outline" @click.stop="addChild" />
14
- <i v-if="data.id != 0" class="el-icon-edit" @click.stop="edit" />
15
- <i v-if="data.id != 0" class="el-icon-delete" @click.stop="remove" />
16
- </div>
17
- </div>
18
- </div>
19
- </template>
20
- <script>
21
- export default {
22
- components: {
23
-
24
- },
25
- props: {
26
- data: {
27
- type: Object,
28
- default: null
29
- },
30
- node: {
31
- type: Object,
32
- default: null
33
- }
34
- },
35
- data () {
36
- return {
37
- btnShow: false
38
- }
39
- },
40
- inject: ['enableGroupEdit'],
41
- methods: {
42
- // 分组编辑按时是否展示的逻辑
43
- handleBtnShow (show) {
44
- if (!this.enableGroupEdit) {
45
- return
46
- }
47
- this.btnShow = show
48
- },
49
- addChild () {
50
- this.$emit('addChild', this.data)
51
- },
52
- edit () {
53
- this.$emit('edit', this.data)
54
- },
55
- remove () {
56
- this.$emit('remove', this.data)
57
- },
58
- itemClick () {
59
- this.$emit('itemClick', this.data)
60
- }
61
- }
62
- }
63
- </script>
64
-
65
- <style lang="less" scoped>
66
- .tree-item {
67
- width:100%;
68
- display:flex;
69
- justify-content: flex-start;
70
- text-align: start;
71
- .item-content {
72
- margin-left:5px;
73
- // flex:1;
74
- // background-color:pink;
75
- }
76
- .item-display-controll {
77
- margin-left:7px;
78
- margin-right:5px;
79
- i {
80
- margin-right:10px;
81
- }
82
- }
83
- .item-icons{
84
- width: 72px;
85
- }
86
- }
87
- </style>
1
+ <template>
2
+ <div class="tree-item" @mouseover="handleBtnShow(true)" @mouseleave="handleBtnShow(false)">
3
+ <div class="item-display-icon">
4
+ <span :class="[data.children ? 'el-icon-circle-plus':'el-icon-remove']" />
5
+ </div>
6
+
7
+ <div class="item-content" @click.stop="itemClick">
8
+ {{ data.name }}
9
+ </div>
10
+ <div class="item-icons">
11
+
12
+ <div v-show="btnShow" class="item-display-controll" @click.prevent>
13
+ <i class="el-icon-circle-plus-outline" @click.stop="addChild" />
14
+ <i v-if="data.id != 0" class="el-icon-edit" @click.stop="edit" />
15
+ <i v-if="data.id != 0" class="el-icon-delete" @click.stop="remove" />
16
+ </div>
17
+ </div>
18
+ </div>
19
+ </template>
20
+ <script>
21
+ export default {
22
+ components: {
23
+
24
+ },
25
+ props: {
26
+ data: {
27
+ type: Object,
28
+ default: null
29
+ },
30
+ node: {
31
+ type: Object,
32
+ default: null
33
+ }
34
+ },
35
+ data () {
36
+ return {
37
+ btnShow: false
38
+ }
39
+ },
40
+ inject: ['enableGroupEdit'],
41
+ methods: {
42
+ // 分组编辑按时是否展示的逻辑
43
+ handleBtnShow (show) {
44
+ if (!this.enableGroupEdit) {
45
+ return
46
+ }
47
+ this.btnShow = show
48
+ },
49
+ addChild () {
50
+ this.$emit('addChild', this.data)
51
+ },
52
+ edit () {
53
+ this.$emit('edit', this.data)
54
+ },
55
+ remove () {
56
+ this.$emit('remove', this.data)
57
+ },
58
+ itemClick () {
59
+ this.$emit('itemClick', this.data)
60
+ }
61
+ }
62
+ }
63
+ </script>
64
+
65
+ <style lang="less" scoped>
66
+ .tree-item {
67
+ width:100%;
68
+ display:flex;
69
+ justify-content: flex-start;
70
+ text-align: start;
71
+ .item-content {
72
+ margin-left:5px;
73
+ // flex:1;
74
+ // background-color:pink;
75
+ }
76
+ .item-display-controll {
77
+ margin-left:7px;
78
+ margin-right:5px;
79
+ i {
80
+ margin-right:10px;
81
+ }
82
+ }
83
+ .item-icons{
84
+ width: 72px;
85
+ }
86
+ }
87
+ </style>