newtv-ui-3.0 0.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 (79) hide show
  1. package/README.md +55 -0
  2. package/lib/asserts/fonts/iconfont.539b8438.woff +0 -0
  3. package/lib/asserts/fonts/iconfont.5ee3b92b.ttf +0 -0
  4. package/lib/asserts/fonts/iconfont.b5b01d3e.woff2 +0 -0
  5. package/lib/asserts/img/gaoding.59d9deae.png +0 -0
  6. package/lib/asserts/img/zhihui.edef9d17.png +0 -0
  7. package/lib/demo.html +10 -0
  8. package/lib/newtv-ui-3.0.common.js +110261 -0
  9. package/lib/newtv-ui-3.0.css +1 -0
  10. package/lib/newtv-ui-3.0.umd.js +110271 -0
  11. package/lib/newtv-ui-3.0.umd.min.js +47 -0
  12. package/package.json +42 -0
  13. package/packages/assets/iconfont/iconfont.css +435 -0
  14. package/packages/assets/iconfont/iconfont.js +1 -0
  15. package/packages/assets/iconfont/iconfont.json +744 -0
  16. package/packages/assets/iconfont/iconfont.ttf +0 -0
  17. package/packages/assets/iconfont/iconfont.woff +0 -0
  18. package/packages/assets/iconfont/iconfont.woff2 +0 -0
  19. package/packages/assets/iconfont/iconfontSVG.js +1 -0
  20. package/packages/assets/images/bg.png +0 -0
  21. package/packages/assets/images/danger-bg.png +0 -0
  22. package/packages/assets/images/empty-bg.png +0 -0
  23. package/packages/assets/images/error-poster.png +0 -0
  24. package/packages/assets/images/error_img.png +0 -0
  25. package/packages/assets/images/logo.png +0 -0
  26. package/packages/assets/images/logo2.png +0 -0
  27. package/packages/assets/images/no_img.png +0 -0
  28. package/packages/assets/images/primary-bg.png +0 -0
  29. package/packages/assets/images/save.svg +3 -0
  30. package/packages/assets/images/state-Unpass.png +0 -0
  31. package/packages/assets/images/state-ing.png +0 -0
  32. package/packages/assets/images/state-ms.png +0 -0
  33. package/packages/assets/images/state-non.png +0 -0
  34. package/packages/assets/images/state-pass.png +0 -0
  35. package/packages/assets/images/success-bg.png +0 -0
  36. package/packages/assets/images/thumbnail-empty.png +0 -0
  37. package/packages/assets/images/versionIcon.png +0 -0
  38. package/packages/assets/images/warning-bg.png +0 -0
  39. package/packages/avatar-upload/index.js +10 -0
  40. package/packages/avatar-upload/src/error-poster.png +0 -0
  41. package/packages/avatar-upload/src/gaoding.png +0 -0
  42. package/packages/avatar-upload/src/previewDialog.vue +96 -0
  43. package/packages/avatar-upload/src/upload.vue +640 -0
  44. package/packages/avatar-upload/src/zhihui.png +0 -0
  45. package/packages/avatar-upload/src/zhihui_2.png +0 -0
  46. package/packages/cardTable/index.js +10 -0
  47. package/packages/cardTable/src/cardTable.vue +151 -0
  48. package/packages/form/index.js +10 -0
  49. package/packages/form/src/EllipsisTooltip.vue +31 -0
  50. package/packages/form/src/TextOverflow.vue +122 -0
  51. package/packages/form/src/form-item.vue +395 -0
  52. package/packages/form/src/form.js +46 -0
  53. package/packages/form/src/form.vue +233 -0
  54. package/packages/icon-tips/index.js +10 -0
  55. package/packages/icon-tips/src/icon-tips.vue +49 -0
  56. package/packages/index.js +49 -0
  57. package/packages/menu/index.js +10 -0
  58. package/packages/menu/src/menu.js +27 -0
  59. package/packages/menu/src/menu.vue +84 -0
  60. package/packages/menu/src/sub-item.vue +108 -0
  61. package/packages/pagination/index.js +10 -0
  62. package/packages/pagination/src/pagination.vue +134 -0
  63. package/packages/table/index.js +10 -0
  64. package/packages/table/src/table.vue +797 -0
  65. package/packages/tags/index.js +10 -0
  66. package/packages/tags/src/tag.vue +179 -0
  67. package/theme/pool_style.scss +598 -0
  68. package/theme/skyStyle/config.scss +19 -0
  69. package/theme/sky_style.scss +268 -0
  70. package/types/component.d.ts +7 -0
  71. package/types/dashboard.d.ts +10 -0
  72. package/types/form.d.ts +12 -0
  73. package/types/header.d.ts +10 -0
  74. package/types/index.d.ts +4 -0
  75. package/types/leftMenu.d.ts +14 -0
  76. package/types/list.d.ts +8 -0
  77. package/types/newtv-ui.d.ts +23 -0
  78. package/types/secondNav.d.ts +13 -0
  79. package/types/table.d.ts +14 -0
@@ -0,0 +1,151 @@
1
+ <template>
2
+ <div class="fgCard">
3
+ <el-row :gutter="10" v-if="data.length > 0">
4
+ <el-col
5
+ :sm="IsShowDetail ? 24 : 12"
6
+ :md="IsShowDetail ? 12 : 6"
7
+ :lg="IsShowDetail ? 6 : 4"
8
+ :xl="IsShowDetail ? 4 : 3"
9
+ v-for="(item, index) in data"
10
+ style="margin-bottom: 20px"
11
+ :key="`cardTable${index}`"
12
+ >
13
+ <div
14
+ class="cardBox"
15
+ :class="{
16
+ checked: item.checked,
17
+ hoverBg: index == hoverIndex,
18
+ activeBg: item.id == activeId,
19
+ }"
20
+ @mouseover="hoverIndex = index"
21
+ @mouseout="hoverIndex = -1"
22
+ >
23
+ <!-- 卡片的头部位 -->
24
+ <div class="cardContent">
25
+ <slot name="poster" :data="item"></slot>
26
+ <slot name="leftState" :data="item"></slot>
27
+ <el-checkbox
28
+ class="IsCheckbox checkbox"
29
+ v-model="item.checked"
30
+ @click.stop
31
+ @change="change(item, index)"
32
+ ></el-checkbox>
33
+ <slot name="imgBottom" :data="item"></slot>
34
+ </div>
35
+
36
+ <div class="cardFooter">
37
+ <slot name="footer" :data="item"></slot>
38
+ </div>
39
+ </div>
40
+ </el-col>
41
+ </el-row>
42
+ <div class="empty" v-else>暂无数据</div>
43
+ </div>
44
+ </template>
45
+
46
+ <script>
47
+ import { ref, toRefs, defineComponent, reactive, watch } from 'vue'
48
+ export default defineComponent({
49
+ name: 'fgCard',
50
+ props: {
51
+ data: {
52
+ type: Array,
53
+ default: () => [],
54
+ },
55
+ IsShowDetail: {
56
+ type: Boolean,
57
+ default: false,
58
+ },
59
+ selectAllList: {
60
+ type: Array,
61
+ default: () => [],
62
+ },
63
+ checkAll: {
64
+ type: Boolean,
65
+ default: false,
66
+ },
67
+ activeId: {
68
+ type: String,
69
+ default: '',
70
+ },
71
+ },
72
+ emits: ['selectChecked'],
73
+ setup(props, ctx) {
74
+ const state = reactive({
75
+ hoverIndex: -1,
76
+ selectList: [],
77
+ tableData: [],
78
+ })
79
+ const change = (val) => {
80
+ state.selectList = JSON.parse(JSON.stringify(props.data))
81
+ ctx.emit('selectChecked', state.selectList)
82
+ }
83
+ // watch(() => props.checkAll,
84
+ // (newVal, oldValue) => {
85
+ // if(newVal){
86
+ // props.data.forEach(item=>{
87
+ // item.checked = true
88
+ // })
89
+ // }else{
90
+ // props.data.forEach(item=>{
91
+ // item.checked = false
92
+ // })
93
+ // }
94
+ // console.log(props.data,1111)
95
+ // }
96
+ // )
97
+ return {
98
+ ...toRefs(state),
99
+ change,
100
+ }
101
+ },
102
+ })
103
+ </script>
104
+
105
+ <style scoped lang="scss">
106
+ .fgCard {
107
+ .el-row {
108
+ margin-bottom: 20px;
109
+ .cardBox {
110
+ padding: 10px;
111
+ border: 1px solid transparent;
112
+ .cardContent {
113
+ width: 100%;
114
+ position: relative;
115
+ .IsCheckbox {
116
+ display: none;
117
+ }
118
+ .checkbox {
119
+ display: block;
120
+ position: absolute;
121
+ top: 1px;
122
+ right: 1px;
123
+ }
124
+ }
125
+ .cardFooter {
126
+ margin-top: 10px;
127
+ text-align: center;
128
+ }
129
+ }
130
+ .checked {
131
+ background-color: #f2f2f4;
132
+ }
133
+ .hoverBg {
134
+ /*border: 1px solid #3e89fa;*/
135
+ background-color: #f1f5fb;
136
+ }
137
+ .activeBg {
138
+ background-color: #f1f5fb;
139
+ }
140
+ }
141
+ .el-row:last-child {
142
+ margin-bottom: 0;
143
+ }
144
+ .empty {
145
+ line-height: 60px;
146
+ color: var(--el-text-color-secondary);
147
+ text-align: center;
148
+ font-size: 14px;
149
+ }
150
+ }
151
+ </style>
@@ -0,0 +1,10 @@
1
+ // 导入组件,组件必须声明 name
2
+ import fgForm from './src/form.vue'
3
+
4
+ // 为组件提供 install 安装方法,供按需引入
5
+ fgForm.install = function (Vue) {
6
+ Vue.component(fgForm.name, fgForm)
7
+ }
8
+
9
+ // 默认导出组件
10
+ export default fgForm
@@ -0,0 +1,31 @@
1
+ <script setup>
2
+ import { ref } from 'vue'
3
+ defineProps({
4
+ text: { type: [String, Number], default: '' },
5
+ itemStyle: { type: Object, default: () => {} },
6
+ })
7
+
8
+ const ellipsis = ref(null)
9
+ const disableTip = ref(false)
10
+ const onMouseOver = () => {
11
+ let parentWidth = ellipsis.value.parentNode.offsetWidth
12
+ let contentWidth = ellipsis.value.offsetWidth
13
+ disableTip.value = contentWidth <= parentWidth
14
+ }
15
+ </script>
16
+ <template>
17
+ <el-tooltip effect="dark" :content="text" :disabled="disableTip" placement="top">
18
+ <div class="ellipsis" :style="itemStyle" @mouseover="onMouseOver">
19
+ <span ref="ellipsis">{{ text }}</span>
20
+ </div>
21
+ </el-tooltip>
22
+ </template>
23
+ <style scoped>
24
+ .ellipsis {
25
+ /*width: 100%;*/
26
+ overflow: hidden;
27
+ white-space: nowrap;
28
+ text-overflow: ellipsis;
29
+ cursor: pointer;
30
+ }
31
+ </style>
@@ -0,0 +1,122 @@
1
+ <template>
2
+ <div class="name">
3
+ <span
4
+ :style="{ 'max-height': status ? textHeight : '' }"
5
+ :class="{ statusText: status }"
6
+ class="titleText"
7
+ ref="desc"
8
+ >
9
+ {{ content }}
10
+ </span>
11
+ <span
12
+ v-if="idShowText"
13
+ @click="status = !status"
14
+ :class="{ openSpan: status }"
15
+ class="openClose"
16
+ >{{ status ? '展开' : '收起' }}</span
17
+ >
18
+ </div>
19
+ </template>
20
+
21
+ <script>
22
+ import { ref, toRefs, reactive, nextTick, onMounted, watch } from 'vue'
23
+ export default {
24
+ name: 'text-overflow',
25
+ props: {
26
+ content: {
27
+ type: [String, Number],
28
+ default: '',
29
+ },
30
+ isHide: {
31
+ default: false,
32
+ },
33
+ },
34
+ setup(props, ctx) {
35
+ const desc = ref(null)
36
+ const state = reactive({
37
+ textHeight: null,
38
+ status: false,
39
+ idShowText: false,
40
+ })
41
+ onMounted(() => {})
42
+
43
+ const calculateText = (val) => {
44
+ // 这是默认两行数据的高度,一行的高度可以自定义 可以*3 *4达到三行或者四行显示展示和收起的效果
45
+ let defHeight = 22 * 3
46
+ state.textHeight = `${defHeight}px`
47
+ let curHeight = desc.value.offsetHeight
48
+ nextTick(() => {
49
+ if (curHeight > defHeight) {
50
+ state.status = true
51
+ state.idShowText = true
52
+ } else {
53
+ state.status = false
54
+ state.idShowText = false
55
+ }
56
+ })
57
+ }
58
+ watch(
59
+ () => [props.content, props.isHide],
60
+ (newValue, oldValue) => {
61
+ if (newValue[0]) {
62
+ setTimeout(() => {
63
+ calculateText(newValue)
64
+ }, 300)
65
+ }
66
+ if (newValue[1]) {
67
+ setTimeout(() => {
68
+ calculateText(newValue)
69
+ }, 300)
70
+ }
71
+ },
72
+ { immediate: true },
73
+ )
74
+ return {
75
+ ...toRefs(state),
76
+ desc,
77
+ }
78
+ },
79
+ }
80
+ </script>
81
+
82
+ <style scoped lang="scss">
83
+ .name {
84
+ position: relative;
85
+ line-height: 22px;
86
+ padding: 5px 0;
87
+ .titleText {
88
+ color: #253555;
89
+ line-height: 22px;
90
+ word-wrap: break-word;
91
+ white-space: normal;
92
+ word-break: break-all;
93
+ font-size: 14px;
94
+ }
95
+ .openClose {
96
+ font-size: 14px;
97
+ color: #3e89fa;
98
+ padding-left: 5px;
99
+ cursor: pointer;
100
+ }
101
+ .openSpan {
102
+ position: absolute;
103
+ right: 0;
104
+ bottom: 5px;
105
+ }
106
+ .statusText {
107
+ overflow: hidden;
108
+ display: block;
109
+ }
110
+ .statusText:after {
111
+ content: '...';
112
+ position: absolute;
113
+ bottom: 5px;
114
+ right: 2px;
115
+ width: 49px;
116
+ font-size: 18px;
117
+ /*padding-left: 30px;*/
118
+ background-color: white;
119
+ /*background: linear-gradient(to right, rgba(255,255,255,0.2), #fff 45%);*/
120
+ }
121
+ }
122
+ </style>
@@ -0,0 +1,395 @@
1
+ <script>
2
+ import { defineComponent, toRef } from 'vue'
3
+ import fgTag from '../../tags/src/tag.vue'
4
+ import textOverFlow from './TextOverflow.vue'
5
+ import ellipsisTooltip from './EllipsisTooltip.vue'
6
+ import fgIconTips from '../../icon-tips'
7
+ export default defineComponent({
8
+ name: 'formItem',
9
+ components: { fgTag, textOverFlow, fgIconTips, ellipsisTooltip },
10
+ props: {
11
+ item: {
12
+ type: Object,
13
+ default: () => {},
14
+ },
15
+ form: {
16
+ type: Object,
17
+ default: () => {},
18
+ },
19
+ edit: {
20
+ type: Boolean,
21
+ default: false,
22
+ },
23
+ key: {
24
+ type: Number,
25
+ default: 0,
26
+ },
27
+ },
28
+ setup(__props, { emit }) {
29
+ const props = __props
30
+ const item = props.item
31
+ const form = props.form
32
+ const handleKey = 'handler' + props.key
33
+
34
+ /* -------------- tag ./S -------------- */
35
+
36
+ const addTag = (key, tag) => {
37
+ emit('addTag', key, tag)
38
+ }
39
+
40
+ const deleteTag = (key, tag) => {
41
+ emit('deleteTag', key, tag)
42
+ }
43
+ /* -------------- tag ./E -------------- */
44
+
45
+ /* -------------- change 事件 ./S -------------- */
46
+
47
+ const handleChange = (val, prop, event) => {
48
+ emit('change', val, prop, event)
49
+ }
50
+
51
+ const selectRemoveTag = (val, prop) => {
52
+ emit('selectRemoveTag', val, prop)
53
+ }
54
+ /* -------------- change 事件 ./E -------------- */
55
+
56
+ return {
57
+ edit: toRef(props, 'edit'),
58
+ item,
59
+ handleKey,
60
+ form,
61
+ addTag,
62
+ deleteTag,
63
+ handleChange,
64
+ selectRemoveTag,
65
+ }
66
+ },
67
+ })
68
+ </script>
69
+ <template>
70
+ <el-form-item
71
+ class="fg-form-item"
72
+ :label="item.label"
73
+ :prop="item.props"
74
+ :required="item.required"
75
+ :label-width="item.labelWidth"
76
+ :class="item.class"
77
+ >
78
+ <!--autoComplete-->
79
+ <el-autocomplete
80
+ v-if="item.type == 'autoComplete'"
81
+ clearable
82
+ :debounce="500"
83
+ :placeholder="item.placeholder || '请选择'"
84
+ v-model="form[item.props]"
85
+ :fetch-suggestions="item.fetchSuggestions"
86
+ @clear="handleChange(form[item.props], item.props, 'clear')"
87
+ @blur="handleChange(form[item.props], item.props, 'change')"
88
+ @select="handleChange(form[item.props], item.props, 'select')"
89
+ :trigger-on-focus="false"
90
+ >
91
+ </el-autocomplete>
92
+ <!-- select -->
93
+ <el-select
94
+ v-else-if="item.type == 'select'"
95
+ v-model="form[item.props]"
96
+ :placeholder="(edit || item.disabled) && !item.placeholderShow ? ' ' : item.placeholder || '请选择'"
97
+ :clearable="item.clearable == null ? true : item.clearable"
98
+ :multiple="item.multiple"
99
+ :disabled="item.disabled"
100
+ :filterable="!!item.filterable"
101
+ :remote="!!item.remote"
102
+ :remote-method="item.remoteMethod"
103
+ :collapse-tags="item.collapseTags"
104
+ :collapse-tags-tooltip="item.collapseTagsTooltip"
105
+ :max-collapse-tags="item.maxCollapseTags || 1"
106
+ @remove-tag="(tag) => selectRemoveTag(tag, item.props)"
107
+ @change="handleChange(form[item.props], item.props, 'change')"
108
+ @blur="handleChange(form[item.props], item.props, 'blur')"
109
+ popper-class="selectOp"
110
+ :teleported="false"
111
+ :class="{ defaultSelect: !item.remote, detailTag: edit }"
112
+ >
113
+ <el-option
114
+ v-for="(opt, index) in item.options"
115
+ :key="`${item.props}_${index}`"
116
+ :label="opt.label"
117
+ :value="opt.value"
118
+ >
119
+ </el-option>
120
+ </el-select>
121
+
122
+ <!-- selectSpace -->
123
+ <el-select
124
+ v-else-if="item.type == 'selectSpace'"
125
+ v-model="form[item.props]"
126
+ :placeholder="edit ? ' ' : item.placeholder || '请选择'"
127
+ :clearable="item.clearable == null ? true : item.clearable"
128
+ :multiple="item.multiple"
129
+ :disabled="item.disabled"
130
+ :filterable="!!item.filterable"
131
+ :remote="!!item.remote"
132
+ :remote-method="item.remoteMethod"
133
+ @remove-tag="(tag) => selectRemoveTag(tag, item.props)"
134
+ @change="handleChange(form[item.props], item.props, 'change')"
135
+ @blur="handleChange(form[item.props], item.props, 'blur')"
136
+ class="selectSpace"
137
+ popper-class="selectSpace"
138
+ :teleported="false"
139
+ >
140
+ <el-option
141
+ v-for="(opt, index) in item.options"
142
+ :key="`${item.props}_${index}`"
143
+ :label="opt.label"
144
+ :value="opt.value"
145
+ >
146
+ <span style="float: left">{{ opt.label }}</span>
147
+ <span style="float: right; color: #8492a6; font-size: 13px">{{ opt.value }}</span>
148
+ </el-option>
149
+ </el-select>
150
+ <!-- radio -->
151
+ <template v-else-if="item.type == 'radio'">
152
+ <template v-if="edit">
153
+ <span style="color: var(--el-text-color-placeholder); padding-left: 8px">
154
+ {{ form[item.props] }}
155
+ </span>
156
+ </template>
157
+ <el-radio-group
158
+ v-else
159
+ v-model="form[item.props]"
160
+ :disabled="item.disabled"
161
+ @change="handleChange(form[item.props], item.props, 'change')"
162
+ >
163
+ <span v-if="edit">
164
+ {{ form[item.props] }}
165
+ </span>
166
+ <template v-else>
167
+ <el-radio
168
+ v-for="(opt, index) in item.options"
169
+ :key="`${item.props}_${index}`"
170
+ :label="opt.value"
171
+ >
172
+ {{ opt.label }}
173
+ </el-radio>
174
+ </template>
175
+ </el-radio-group>
176
+ </template>
177
+
178
+ <!-- checkbox -->
179
+ <template v-else-if="item.type == 'checkbox'">
180
+ <template v-if="edit">
181
+ <span
182
+ style="color: var(--el-text-color-placeholder); padding-left: 8px"
183
+ v-for="(item, index) in form[item.props]"
184
+ :key="index"
185
+ >
186
+ {{ item }}
187
+ </span>
188
+ </template>
189
+ <el-checkbox-group
190
+ v-else
191
+ @change="handleChange(form[item.props], item.props, 'change')"
192
+ v-model="form[item.props]"
193
+ :disabled="item.disabled || edit"
194
+ :min="item.min"
195
+ :max="item.max"
196
+ >
197
+ <el-checkbox
198
+ v-for="(opt, index) in item.options"
199
+ :key="`${item.props}_${index}`"
200
+ :name="item.props"
201
+ :label="opt.value"
202
+ >{{ opt.label }}</el-checkbox
203
+ >
204
+ </el-checkbox-group>
205
+ </template>
206
+
207
+ <!-- tag -->
208
+ <fg-tag
209
+ v-else-if="item.type == 'tag'"
210
+ :tagList="form[item.props]"
211
+ :tagKey="item.props"
212
+ :label="`添加${item.label}`"
213
+ :edit="item.disabled || edit"
214
+ :maxlength="item.maxlength"
215
+ :limit="item.limit"
216
+ :repeat="item.repeat == null ? true : item.repeat"
217
+ @addTag="addTag"
218
+ @deleteTag="deleteTag"
219
+ :tagType="item.tagType || 'warning'"
220
+ :effect="item.effect || 'plain'"
221
+ />
222
+
223
+ <!-- daterange -->
224
+ <template v-else-if="item.type == 'daterange'">
225
+ <template v-if="edit">
226
+ <span style="color: var(--el-text-color-placeholder)">
227
+ {{ form[item.props][0] ? `${form[item.props][0]} 至 ${form[item.props][1]}` : '' }}
228
+ </span>
229
+ </template>
230
+ <el-date-picker
231
+ v-else
232
+ :type="item.type"
233
+ v-model="form[item.props]"
234
+ :disabled="item.disabled"
235
+ :clearable="item.clearable == null ? true : item.clearable"
236
+ value-format="YYYY-MM-DD"
237
+ range-separator="至"
238
+ start-placeholder="开始日期"
239
+ end-placeholder="结束日期"
240
+ :disabledDate="item.disabledDate"
241
+ :shortcuts="item.shortcuts || null"
242
+ @change="handleChange(form[item.props], item.props, 'change')"
243
+ />
244
+ </template>
245
+
246
+ <!-- timeselect -->
247
+ <template v-else-if="item.type == 'timeSelect'">
248
+ <!-- <template v-if="edit">
249
+ <el-button type="text" text>
250
+ {{ form[item.props] || '' }}
251
+ </el-button>
252
+ </template> -->
253
+ <el-time-select
254
+ v-model="form[item.props]"
255
+ :disabled="item.disabled"
256
+ :start="item.start || '00:01'"
257
+ :end="item.end || '10:00'"
258
+ :step="item.step || '00:01'"
259
+ :placeholder="edit ? ' ' : item.placeholder || '请选择'"
260
+ />
261
+ </template>
262
+
263
+ <!-- timeselect -->
264
+ <template v-else-if="item.type == 'datePicker'">
265
+ <el-date-picker
266
+ v-model="form[item.props]"
267
+ :type="item.dateType || 'datetime'"
268
+ :placeholder="edit ? ' ' : item.placeholder || '请选择'"
269
+ :format="item.format || 'YYYY-MM-DD HH:mm:ss'"
270
+ :value-format="item.valueFormat || 'YYYY-MM-DD HH:mm:ss'"
271
+ :disabled="item.disabled"
272
+ :shortcuts="item.shortcuts || null"
273
+ :popper-class="item.popperClass"
274
+ :disabled-date="item.disabledDate"
275
+ :disabled-hours="item.disabledHours"
276
+ :default-time="item.defaultTime"
277
+ @change="handleChange(form[item.props], item.props, 'change')"
278
+ />
279
+ </template>
280
+
281
+ <template v-else-if="item.type == 'timePicker'">
282
+ <el-time-picker
283
+ v-model="form[item.props]"
284
+ :placeholder="edit ? ' ' : item.placeholder || '请选择'"
285
+ :format="item.format || 'hh:mm:ss'"
286
+ :default-value="item.defaultValue || new Date(0, 0, 0, 0, 0, 0)"
287
+ :disabled="item.disabled"
288
+ @change="handleChange(form[item.props], item.props, 'change')"
289
+ />
290
+ </template>
291
+ <template v-else-if="item.type == 'inputBreak'">
292
+ <textOverFlow :content="form[item.props]" :isHide="item.isHide"></textOverFlow>
293
+ </template>
294
+ <template v-else-if="item.type == 'inputTooltip'">
295
+ <ellipsisTooltip :text="form[item.props]" ></ellipsisTooltip>
296
+ </template>
297
+ <!-- input -->
298
+ <template v-else>
299
+ <el-input
300
+ v-if="item.link == null"
301
+ :type="item.type || 'text'"
302
+ v-model="form[item.props]"
303
+ :placeholder="(edit || item.disabled) && !item.placeholderShow ? ' ' : item.placeholder || '请输入'"
304
+ :clearable="item.clearable == null ? true : item.clearable"
305
+ :disabled="item.disabled"
306
+ :maxlength="item.maxlength"
307
+ :minlength="item.minlength"
308
+ :min="item.min"
309
+ :max="item.max"
310
+ :show-word-limit="item.showWordLimit"
311
+ :resize="item.resize || 'none'"
312
+ :rows="item.autosize ? item.rows : 3"
313
+ :autosize="item.autosize || false"
314
+ :class="item.className"
315
+ :prefix-icon="item.prefixIcon || null"
316
+ :suffix-icon="item.suffixIcon || null"
317
+ @change="handleChange(form[item.props], item.props, 'change')"
318
+ >
319
+ <template
320
+ v-if="item.prependTitle"
321
+ #prepend
322
+ >
323
+ {{ item.prependTitle }}
324
+ </template>
325
+ </el-input>
326
+ <el-link
327
+ v-else
328
+ type="primary"
329
+ @click="item.link"
330
+ :underline="false"
331
+ style="padding: 1px 11px"
332
+ >
333
+ {{ form[item.props] }}
334
+ </el-link>
335
+ </template>
336
+ <fgIconTips
337
+ v-if="item.iconTooltipContent"
338
+ :content="item.iconTooltipContent"
339
+ ></fgIconTips>
340
+ </el-form-item>
341
+ </template>
342
+
343
+ <style lang="scss">
344
+ .fg-form-item {
345
+ .el-select,
346
+ .el-date-editor.el-input,
347
+ .el-input,
348
+ .el-input-group {
349
+ width: 100%;
350
+ flex: 1;
351
+ }
352
+
353
+ .icon-tip.el-icon {
354
+ color: #fa983e;
355
+ margin-left: 5px;
356
+ }
357
+
358
+ .add-tag {
359
+ color: #a3aec1;
360
+ }
361
+ }
362
+ .fg-tag .el-tag {
363
+ border-style: none;
364
+ }
365
+ :deep(fg-tag .el-tag.el-tag--warning) {
366
+ --el-tag-text-color: #fa983e !important;
367
+ }
368
+ :deep(fg-tag .el-tag.el-tag--warning) {
369
+ --el-tag-bg-color: #fff5ec !important;
370
+ }
371
+ :deep(fg-tag .el-tag) {
372
+ background-color: #fff5ec !important;
373
+ color: #fa983e !important;
374
+ }
375
+ .detailTag {
376
+ .el-select__tags .el-tag--info {
377
+ background-color: transparent !important;
378
+ padding: 0 10px !important;
379
+ margin: 2px 0;
380
+ border-radius: 0 !important;
381
+ height: 16px;
382
+ border-right: 1px solid #253555;
383
+ }
384
+ .el-select__tags {
385
+ margin-left: -8px;
386
+ }
387
+ .el-select__tags .el-tag--info:nth-last-child(1) {
388
+ border-right: 0;
389
+ }
390
+ .el-select__tags-text {
391
+ color: #253555;
392
+ font-size: 14px;
393
+ }
394
+ }
395
+ </style>