@toolspack/ttd-common 0.3.1 → 0.4.3

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 (38) hide show
  1. package/README.md +5 -12
  2. package/lib/ttd-common.common.js +3614 -17480
  3. package/lib/ttd-common.umd.js +3618 -17484
  4. package/lib/ttd-common.umd.min.js +1 -31
  5. package/package.json +2 -7
  6. package/src/App.vue +0 -9
  7. package/src/main.js +0 -20
  8. package/src/packages/cfca/CfcaPdf.vue +30 -14
  9. package/src/packages/index.js +0 -35
  10. package/src/packages/ukey/WzhSign.vue +65 -34
  11. package/lib/fonts/iconfont.1a79c8ea.eot +0 -0
  12. package/lib/fonts/iconfont.3303ffae.ttf +0 -0
  13. package/lib/img/iconfont.18b11516.svg +0 -65
  14. package/lib/ttd-common.common.vendors~pdfjsWorker.js +0 -442
  15. package/lib/ttd-common.umd.min.vendors~pdfjsWorker.js +0 -23
  16. package/lib/ttd-common.umd.vendors~pdfjsWorker.js +0 -442
  17. package/src/packages/img-view/hevue-img-preview.vue +0 -626
  18. package/src/packages/img-view/iconfont/iconfont.css +0 -69
  19. package/src/packages/img-view/iconfont/iconfont.eot +0 -0
  20. package/src/packages/img-view/iconfont/iconfont.svg +0 -65
  21. package/src/packages/img-view/iconfont/iconfont.ttf +0 -0
  22. package/src/packages/img-view/iconfont/iconfont.woff +0 -0
  23. package/src/packages/img-view/index.js +0 -51
  24. package/src/packages/label-list/LabelOperate.vue +0 -179
  25. package/src/packages/make-label/LabelMake.vue +0 -631
  26. package/src/packages/make-label/commontag.vue +0 -55
  27. package/src/packages/make-label/config/label_config.js +0 -90
  28. package/src/packages/make-label/config/label_size.js +0 -32
  29. package/src/packages/make-label/directive.js +0 -23
  30. package/src/packages/make-label/labelProterty.vue +0 -134
  31. package/src/packages/pdf-view/PdfView.vue +0 -273
  32. package/src/packages/pdf-view/SwitchPage.vue +0 -78
  33. package/src/packages/pdf-view/build/pdf.js +0 -26002
  34. package/src/packages/pdf-view/build/pdf.sandbox.js +0 -414
  35. package/src/packages/pdf-view/build/pdf.worker.js +0 -92533
  36. package/src/packages/pdf-view/pdf.worker.js +0 -68364
  37. package/src/packages/pdf-view/pdf.worker.min.js +0 -22
  38. package/src/router/route.js +0 -18
@@ -1,631 +0,0 @@
1
- <template>
2
- <div class="label-view" ref="labelView" @click="getCoordinates">
3
- <!--用于显示当前标签-->
4
- <component
5
- :is="currentView"
6
- class="tag"
7
- ref="currentTag"
8
- :showName="activeTagObj.name"
9
- :tagStyle="activeTagObj"
10
- :labelId="activeTagObj.labelId"
11
- ></component>
12
- <!--用于渲染已打的标签( 在模板中使用es6的结构,sass 端无法加载)-->
13
- <template v-for="(item,index) in singleTagData">
14
- <labelItem
15
- v-if="page===item.pageIndex && filterType == 0 ? true:(filterType==item.labelType)"
16
- v-move="handlerMove"
17
- :style="getStyleCom(item)"
18
- @click.native.prevent.right="deTag(item, index, $event)"
19
- :tagStyle="item"
20
- :index="index"
21
- :showName="item.showName"
22
- :key="index"
23
- >
24
- <i class="labelCon" :style="getStyleCon(item)">
25
- <span class="span-text">{{item.showName}}</span>
26
- </i>
27
- <i v-if="isclose" class="close" @click="deleteTag(item, index)">+</i>
28
- <div v-if="item.labelType===1 && issize" v-size="handlerResize" class="resize-tag"></div>
29
- </labelItem>
30
- </template>
31
- <LabelProterty ref="proterty" @change="onChange"></LabelProterty>
32
- </div>
33
- </template>
34
- <script>
35
- // 引入标签组件
36
- import labelItem from './commontag.vue';
37
- import LabelProterty from './labelProterty.vue'
38
- // 引入标签组件指令
39
- import directive from './directive';
40
- // 引入标签配置(其中包含各类标签的类型(type);标签名称(name);标签形状(shape))
41
- import { labelConfig } from './config/label_config'
42
- import getShapSize from './config/label_size'
43
-
44
- export default {
45
- name: 'TtdLabelMake',
46
- props: {
47
- // 是否可删除标签
48
- isclose: {
49
- type: [Boolean],
50
- default: true,
51
- },
52
- // 是否可移动标签
53
- ismove: {
54
- type: [Boolean],
55
- default: true,
56
- },
57
- // 是否可缩放标签
58
- issize: {
59
- type: [Boolean],
60
- default: true,
61
- },
62
- // 是否可以设置属性
63
- isset: {
64
- type: [Boolean],
65
- default: true,
66
- },
67
- // 当前选中标签数据对象
68
- labelCurrent: {
69
- type: [Object],
70
- },
71
- // 当前合同页码(会根据当前页码显示对应当前页码的标签)
72
- page: {
73
- type: [Number, String],
74
- default: 1,
75
- },
76
- // 当前要预览的标签类型(根据需求已移除预览功能,根据需要可再添加该功能)
77
- filterType: {
78
- type: [Number, String],
79
- default: 0,
80
- },
81
- // 传入已有的标签数据(如需要查看合同时,要求还能看到合同上的标签,则可传入该合同的标签数据,用于显示,并可在该合同上修改或其他编辑)
82
- labelViewData: {
83
- type: [Array],
84
- default: () => [],
85
- },
86
- },
87
- components: {
88
- labelItem,
89
- LabelProterty,
90
- },
91
- data() {
92
- return {
93
- labelConfig,
94
- showLabel: {
95
- showName: '',
96
- labelId: '',
97
- },
98
- currentView: '',
99
- labelData: [], // 将要提交的所有标签数据
100
- activeTagObj: { // 当前的标签数据
101
- name: '',
102
- labelId: '',
103
- },
104
- mousemoveFn: null,
105
- mousedownEl: null,
106
- mousedonwType: '', // size 修改大小 move 移动
107
- };
108
- },
109
- created() {
110
- this.labelData = this.labelViewData; // 组件内部维持一个标签数据(labelData),用于显示
111
- this.$emit('getLabelData', this.labelData); // 将传入的标签数据(即单独请求的该合同的标签数据)传到外部的标签数据(该数据为要提交的数据)
112
- },
113
- mounted() {
114
- // 此动作用于点击其他区域时清除标签内动态生成的删除按钮
115
- const vm = this;
116
- document.onclick = () => {
117
- vm.removeElementsByClass('mouse-right-el');
118
- };
119
- const box = this.$refs.labelView
120
- const me = this
121
- box.onmousemove = function (event) {
122
- if (me.mousemoveFn) {
123
- // 计算鼠标相对于容器的偏移量,需要递归计算
124
- const lacations = me.getFollowOffset(box, event.target, {
125
- left: event.offsetX,
126
- top: event.offsetY,
127
- })
128
- me.mousemoveFn(event, lacations)
129
- } else if (me.activeTagObj && me.activeTagObj.name) {
130
- // 判断是否选择了标签
131
- // 让当前标签跟着鼠标跑
132
- // 计算鼠标相对于容器的便宜量,需要递归计算
133
- const lacations = me.getFollowOffset(box, event.target, {
134
- left: event.offsetX,
135
- top: event.offsetY,
136
- })
137
- const nodeTag = me.$refs.currentTag.$el
138
- if (nodeTag) {
139
- box.style.cursor = 'none' // 隐藏鼠标
140
- nodeTag.style.display = 'block' // 恢复拖动标签
141
- nodeTag.style.left = `${lacations.left}px`
142
- nodeTag.style.top = `${lacations.top}px`
143
- }
144
- }
145
- }
146
- box.onmouseup = function () {
147
- // 根据mousedown的target执行不同的方法
148
- console.log('box --onmouseup')
149
- if (me.mousedownEl) {
150
- if (me.mousedownEl.className === 'resize-tag') {
151
- // 修改labelData 中的数据
152
- const target = me.mousedownEl.parentNode
153
- // 返回字符串的 index
154
- const index = target.getAttribute('index')
155
-
156
- console.log(`resize${index}`, `${target.offsetWidth}--${target.offsetHeight}`)
157
-
158
- if (index) {
159
- // 需要转换成Number
160
- const targetLabel = me.labelData[Number(index)]
161
- // 如果找到对应的labelData的值,则修改
162
- if (targetLabel) {
163
- targetLabel.labelWidth = target.offsetWidth;
164
- targetLabel.labelHigh = target.offsetHeight;
165
- if (targetLabel.styleObj) {
166
- targetLabel.styleObj.width = `${target.offsetWidth}px`;
167
- targetLabel.styleObj.height = `${target.offsetHeight}px`;
168
- }
169
- }
170
- }
171
- } else {
172
- // 返回字符串的 index
173
- const index = me.mousedownEl.getAttribute('index')
174
- // console.log(`move${index}`, me.mousedownEl.offsetTop)
175
- if (index) {
176
- // 需要转换成Number
177
- const targetLabel = me.labelData[Number(index)]
178
- // 如果找到对应的labelData的值,则修改
179
- if (targetLabel) {
180
- targetLabel.xAxis = me.mousedownEl.offsetLeft
181
-
182
- let yAxis = ''
183
- if (targetLabel.labelType === 1) {
184
- yAxis = me.mousedownEl.offsetTop + 7
185
- } else {
186
- yAxis = me.mousedownEl.offsetTop + targetLabel.labelHigh
187
- }
188
-
189
- targetLabel.yAxis = yAxis
190
- if (targetLabel.styleObj) {
191
- targetLabel.styleObj.top = `${me.mousedownEl.offsetTop}px`
192
- targetLabel.styleObj.left = `${me.mousedownEl.offsetLeft}px`
193
- }
194
- }
195
- }
196
- }
197
- }
198
- me.mousemoveFn = null
199
- me.mousedownEl = null
200
- }
201
- },
202
- directives: directive,
203
- watch: {
204
- // 异步请求标签数据时(防止数据未请求完成时,渲染不了标签),并监听数据变化,整合到待提交标签数据中
205
- labelViewData() {
206
- this.labelData = this.labelViewData;
207
- this.$emit('getLabelData', this.labelData);
208
- },
209
- labelCurrent(nItem) {
210
- // 单标签,类型为number
211
- // 查找 标签的形状shape
212
- if (nItem) {
213
- // console.log('ttd-bamboo LabelMake', nItem)
214
- if (nItem.type == null) {
215
- // alert('标签类型位置,请联系管理员')
216
- nItem.type = 1
217
- }
218
- const configFilter = this.labelConfig.filter((item) => item.type === nItem.type)
219
- const itemConfig = configFilter && configFilter.length ? configFilter[0] : null
220
-
221
- if (nItem.type === 1) {
222
- // 通用文本标签
223
- this.activeTagObj = {
224
- ...itemConfig,
225
- name: nItem.optionName,
226
- titleName: nItem.labelName,
227
- labelId: nItem.labelId ? nItem.labelId : '',
228
- ...nItem,
229
- }
230
- } else if (nItem.type === 2 || nItem.type === 3) {
231
- // 选项标签,暂时没有
232
- this.activeTagObj = {
233
- ...itemConfig,
234
- name: nItem.optionName,
235
- titleName: nItem.labelName,
236
- labelCode: nItem.labelCode,
237
- labelId: nItem.labelId ? nItem.labelId : '',
238
- code: nItem.code,
239
- }
240
- } else {
241
- // 其他定义的签章标签 和文本标签
242
- this.activeTagObj = {
243
- ...itemConfig,
244
- ...nItem,
245
- }
246
- }
247
- this.currentView = 'labelItem';
248
- }
249
- },
250
- },
251
- computed: {
252
- singleTagData() {
253
- const options = [];
254
- this.labelData.forEach((item) => {
255
- // labelType === 2 是选项标签
256
- if (item.labelType === 2) {
257
- // item.labelContent.forEach((i) => {
258
- // options.push(i);
259
- // });
260
- // 选项标签 没有用,但为了兼容已打选项标签的数据,push第一个选项
261
- // 保证singleTagData 和labelData 对应
262
- options.push(item.labelContent[0]);
263
- } else {
264
- if (item.labelType === 1) {
265
- // 文本标签的位置,修复一下,兼容历史数据
266
- item.yAxis = parseInt(item.styleObj.top, 10) + 7
267
- }
268
- options.push(item);
269
- }
270
- });
271
- return options;
272
- },
273
- },
274
- methods: {
275
- handlerResize(e, el) {
276
- // 如果配置不能缩放,
277
- if (!this.issize) {
278
- return false
279
- }
280
- // 需要调整大小的元素
281
- const sizeTarget = el.parentNode
282
- this.mousedownEl = el
283
- // 指定最外层容器的mousemove执行的方法
284
- console.log('size mousemoveFn')
285
- this.mousemoveFn = (event, locations) => {
286
- if (locations.left - sizeTarget.offsetLeft > 40) {
287
- sizeTarget.style.width = `${locations.left - sizeTarget.offsetLeft}px`
288
- }
289
- if (locations.top - sizeTarget.offsetTop > 20) {
290
- sizeTarget.style.height = `${locations.top - sizeTarget.offsetTop}px`
291
- }
292
- }
293
- },
294
- handlerMove(e, el) {
295
- // 如果配置不能移动,
296
- if (!this.ismove) {
297
- return false
298
- }
299
- // 拖动标签位置
300
- // 指定最外层容器的mousemove执行的方法
301
- this.mousedownEl = el
302
- this.mousedonwType = 'move'
303
- // console.log('move mousemoveFn', e.target.className)
304
- if (e.target.className === 'close' || e.target.className === 'resize-tag') {
305
- return
306
- }
307
- this.mousemoveFn = (event, locations) => {
308
- el.style.left = `${locations.left - e.offsetX}px`
309
- el.style.top = `${locations.top - e.offsetY}px`
310
- }
311
- },
312
- getStyleCom(item) {
313
- let width = item.labelWidth || item.labelwidth;
314
- let height = item.labelHigh || item.labelheight;
315
-
316
- if (height && String(height).indexOf('px') === -1) {
317
- height += 'px'
318
- }
319
- if (width && String(width).indexOf('px') === -1) {
320
- width += 'px'
321
- }
322
- item.styleObj.height = height;
323
- item.styleObj.width = width;
324
- return item.styleObj;
325
- },
326
- getStyleCon(item) {
327
- const style = {}
328
- if (item.fontSize) {
329
- style.fontSize = `${item.fontSize}px`
330
- }
331
- let alginValue = 'center'
332
- switch (item.alignment) {
333
- case 0:
334
- alginValue = 'left'
335
- break;
336
- case 2:
337
- alginValue = 'right'
338
- break;
339
- default:
340
- alginValue = 'center'
341
- }
342
- style.textAlign = alginValue
343
- if (item.isMultiline) {
344
- style.whiteSpace = 'normal';
345
- }
346
- return style
347
- },
348
- setLabelProperty(item, index, element) {
349
- this.$refs.proterty.openDialog(item, index, element);
350
- },
351
- onChange(proertys, labelNode) {
352
- // 将属性值,保存在 labelData中,以方便提交
353
- Object.assign(labelNode.labelData, proertys)
354
- // 将属性写入labelCon 的style
355
- let labelCon = labelNode.element
356
- if (labelCon.className !== 'labelCon') {
357
- labelCon = labelNode.element.parentNode
358
- if (labelCon.className !== 'labelCon') {
359
- alert('系统错误,请联系管理员')
360
- return false
361
- }
362
- }
363
-
364
- labelCon.style.fontSize = `${proertys.fontSize < 12 ? 12 : proertys.fontSize}px`;
365
- let alginValue = 'center'
366
- switch (proertys.alignment) {
367
- case 0:
368
- alginValue = 'left'
369
- break;
370
- case 2:
371
- alginValue = 'right'
372
- break;
373
- default:
374
- alginValue = 'center'
375
- }
376
- labelCon.style.textAlign = alginValue;
377
- if (proertys.isMultiline) {
378
- labelCon.style.whiteSpace = 'normal';
379
- }
380
- },
381
- getFollowOffset(root, target, offset) {
382
- // console.log(offset, target.className)
383
- if (root === target) {
384
- return offset
385
- }
386
- // console.log(target.offsetLeft, target.offsetTop)
387
- return this.getFollowOffset(root, target.parentNode, {
388
- left: offset.left + target.offsetLeft,
389
- top: offset.top + target.offsetTop,
390
- })
391
- },
392
- removeElementsByClass(className) {
393
- const elements = document.getElementsByClassName(className);
394
- while (elements.length > 0) {
395
- elements[0].parentNode.removeChild(elements[0]);
396
- }
397
- },
398
-
399
- deTag(item, index, e) {
400
- if (!this.isclose && !this.isset) {
401
- return;
402
- }
403
- this.removeElementsByClass('mouse-right-el');
404
- const x = e.offsetX;
405
- const y = e.offsetY;
406
- const oEm = document.createElement('ul');
407
- oEm.setAttribute('class', 'mouse-right-el')
408
- if (this.isclose) {
409
- const elLi = document.createElement('li')
410
- elLi.innerHTML = '<div class="right-dele">删 除</div>'
411
- oEm.appendChild(elLi)
412
- }
413
- if (this.isset && item.labelType === 1) {
414
- const elLi = document.createElement('li')
415
- elLi.innerHTML = '<div class="right-property">属 性</div>'
416
- oEm.appendChild(elLi)
417
- }
418
- oEm.onclick = (event) => {
419
- const { className } = event.target
420
- if (className === 'right-dele') {
421
- this.deleteTag(item, index);
422
- } else if (className === 'right-property') {
423
- this.setLabelProperty(item, index, e.target)
424
- }
425
- // 点击后清除元素
426
- e.target.removeChild(oEm);
427
- };
428
- oEm.style.left = `${x}px`
429
- oEm.style.top = `${y}px;`
430
- e.target.appendChild(oEm);
431
- },
432
- formatLabelValue(el, tagData) {
433
- const shapeSize = getShapSize(tagData.shape)
434
-
435
- /* *
436
- 前端使用的坐标系统为,左上角为零点, 后台合标签使用的是左下角为零点;
437
- 所以X坐标不变,Y坐标的需要计算(页面高度- y 再加上 标签的高度 )
438
- 后端忽略了 标签的高度,所以我给他修复一下 yAxis= Y坐标 + 标签高度
439
- 文本标签不做修改
440
- */
441
- let yAxis = ''
442
- if (tagData.type === 1) {
443
- yAxis = el.offsetTop + 7
444
- } else {
445
- yAxis = el.offsetTop + parseInt(shapeSize.height, 10)
446
- }
447
-
448
- return {
449
- xAxis: el.offsetLeft, // 距离合同区域左边的距离(xAxis)
450
- yAxis, // 距离合同区域顶边的距离(yAxis)
451
- labelWidth: parseInt(shapeSize.width, 10), // 标签宽度 这个后台接口要使用,必须是Number
452
- labelHigh: parseInt(shapeSize.height, 10), // 标签高度 必须是Number
453
- labelType: tagData.type, // 标签类型
454
- labelId: tagData.labelId || '', // 标签id(仅文本标签需要,也只有文本标签会带有该字段,没有则为空)
455
- showName: tagData.name, // 标签名称
456
- shape: tagData.shape, // 标签形状(前端回填编辑时本地需要用于渲染,后台不需要)
457
- titleName: tagData.titleName || '', // 选项标签名(如性别、爱好等多选类型),其他类型标签为空
458
- labelCode: tagData.labelCode || '', // 标签编码,仅选项标签需要(前端本地逻辑需要)
459
- code: tagData.code || '', // 标签编码,仅选项标签需要(后台需要)
460
- sealTag: tagData.sealTag || tagData.sealDiyCode, // 仅 自定义标签(后台需要)
461
- labelAlias: tagData.labelAlias, // 自定义签约用
462
- stampType: tagData.stampType, // 自定义签约用
463
- styleObj: { // 样式对象,用于前端本地渲染
464
- position: 'absolute',
465
- width: shapeSize.width,
466
- height: shapeSize.height,
467
- top: `${el.offsetTop}px`,
468
- left: `${el.offsetLeft}px`,
469
- },
470
- }
471
- },
472
- // 点击label-view后click 的回调句柄中event.e
473
- getCoordinates(event) {
474
- // 清除右键按钮
475
- const boxEl = this.$refs.labelView
476
- const rightNnode = boxEl.querySelector('.mouse-right-el')
477
- if (rightNnode) {
478
- rightNnode.parentNode.removeChild(rightNnode)
479
- }
480
- if (this.activeTagObj && this.activeTagObj.name) {
481
- const nodeTag = this.$refs.currentTag.$el
482
- const labelData = this.formatLabelValue(nodeTag, this.activeTagObj)
483
-
484
- // 恢复 容器的 鼠标指针
485
- boxEl.style.cursor = 'default'
486
- // 恢复currentTag的状态,
487
- nodeTag.style.display = 'none'
488
-
489
- labelData.pageIndex = this.page;
490
-
491
- // labelType === 2 选项标签
492
- if (labelData.labelType === 2) {
493
- const hasCodeVal = this.labelData.find((item) => item.labelCode && (item.labelCode === labelData.labelCode));
494
- if (hasCodeVal) {
495
- delete labelData.labelId;
496
- delete labelData.titleName;
497
- hasCodeVal.labelContent.push(labelData);
498
- } else {
499
- const item = {};
500
- item.labelCode = labelData.labelCode;
501
- item.pageIndex = labelData.pageIndex;
502
- item.showName = labelData.titleName;
503
- item.labelType = labelData.labelType;
504
- delete labelData.labelId;
505
- delete labelData.titleName;
506
- item.labelContent = [labelData];
507
- this.labelData.push(item);
508
- }
509
- } else if (labelData.labelType === 1) {
510
- // labelType === 1 文本标签
511
- // 默认设置标签居左
512
- labelData.alignment = 0
513
- this.labelData.push(labelData);
514
- } else {
515
- this.labelData.push(labelData);
516
- }
517
- this.$emit('getLabelData', this.labelData);
518
- // 打完一个标签后,清空当前标签的数据,为了实现每次选的标签,只能使用一次
519
- this.activeTagObj = {
520
- name: '',
521
- labelId: '',
522
- }
523
- }
524
- },
525
-
526
- // 删除标签
527
- deleteTag(item, index) {
528
- // 删除前,再确认下
529
- if (this.labelData[index]) {
530
- this.labelData.splice(index, 1);
531
- this.$emit('getLabelData', this.labelData);
532
- }
533
- },
534
- },
535
- };
536
- </script>
537
- <style>
538
- .mouse-right-el {
539
- position: absolute;
540
- display: inline-block;
541
- width: 40px;
542
- text-align: center;
543
- line-height: 20px;
544
- font-size: 12px;
545
- background: #6495ed;
546
- border: 1px solid #fff;
547
- border-radius: 2px;
548
- cursor: pointer;
549
- }
550
- .label-shape2 .close {
551
- top: 0px !important;
552
- right: 0px !important;
553
- }
554
- </style>
555
- <style scoped>
556
- .label-view {
557
- position: relative;
558
- float: left;
559
- width: 100%;
560
- height: 100%;
561
- overflow: hidden;
562
- }
563
-
564
- .label-view .tag {
565
- position: absolute;
566
- z-index: 999;
567
- top: 0;
568
- display: none;
569
- }
570
-
571
- .labelCon {
572
- position: absolute;
573
- width: 100%;
574
- height: 100%;
575
- top: 0;
576
- left: 0;
577
- text-align: center;
578
- color: #fff;
579
- font-size: 12px;
580
- display: table;
581
- white-space: nowrap;
582
- }
583
- .labelCon .span-text {
584
- display: table-cell;
585
- vertical-align: middle;
586
- white-space: normal;
587
- }
588
- .label-proterty {
589
- position: absolute;
590
- bottom: 0;
591
- right: 10px;
592
- color: rgb(32, 106, 212);
593
- font-size: 14px;
594
- }
595
- .resize-tag {
596
- width: 10px;
597
- height: 10px;
598
- overflow: hidden;
599
- position: absolute;
600
- cursor: se-resize;
601
- right: 0;
602
- bottom: 0;
603
- }
604
- .resize-tag:after {
605
- content: "";
606
- display: inline-block;
607
- width: 15px;
608
- height: 3px;
609
- border: 1px solid #666;
610
- transform-origin: center;
611
- transform: rotate(135deg) translate(-2px, 5px);
612
- }
613
- .close {
614
- width: 20px;
615
- height: 20px;
616
- border-radius: 50%;
617
- position: absolute;
618
- top: -10px;
619
- right: -10px;
620
- background: coral;
621
- color: #fff;
622
- transform: rotateZ(45deg);
623
- text-align: center;
624
- line-height: 20px;
625
- cursor: pointer;
626
- }
627
-
628
- i {
629
- font-style: normal;
630
- }
631
- </style>
@@ -1,55 +0,0 @@
1
- <template lang="html">
2
- <div :style="style" :class="className" class="label-item-box">
3
- <slot></slot>
4
- <div class="label-style"></div>
5
- </div>
6
- </template>
7
-
8
- <script>
9
- import getShapSize from './config/label_size'
10
-
11
- export default {
12
- props: {
13
- // 传入当前标签的样式数据
14
- tagStyle: {
15
- type: [String, Object],
16
- required: true,
17
- },
18
- },
19
- data() {
20
- return {
21
- }
22
- },
23
- computed: {
24
- // 根据切换的当前标签数据来设置标签样式
25
- style() {
26
- const sizeSttyle = getShapSize(this.tagStyle.shape)
27
- return sizeSttyle
28
- },
29
- className() {
30
- const data = (this.tagStyle)
31
- return `label-shape${data.shape}`
32
- },
33
- },
34
- methods: {
35
- },
36
- }
37
- </script>
38
- <style lang="css" scoped>
39
- .label-style {
40
- width: 100%;
41
- height: 100%;
42
- /*border-radius: 50%;*/
43
- background: darkorange;
44
- text-align: center;
45
- }
46
- .label-style i {
47
- display: inline-block;
48
- margin-top: 60px;
49
- font-size: 14px;
50
- color: #fff;
51
- }
52
- .label-shape2 .label-style {
53
- border-radius: 50%;
54
- }
55
- </style>