wl-design-mobile 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 (121) hide show
  1. package/assets/home/banner.png +0 -0
  2. package/assets/home/card-slot1.png +0 -0
  3. package/assets/home/card-slot2.png +0 -0
  4. package/assets/home/card-slot3.png +0 -0
  5. package/assets/home/card-slot4.png +0 -0
  6. package/assets/home/card-slot6.png +0 -0
  7. package/assets/home/grid-1.png +0 -0
  8. package/assets/home/icon-1-1.png +0 -0
  9. package/assets/home/icon-1.png +0 -0
  10. package/assets/home/icon-2-1.png +0 -0
  11. package/assets/home/icon-2.png +0 -0
  12. package/assets/home/placeholder.png +0 -0
  13. package/assets/home/top-bg.png +0 -0
  14. package/assets/home/top-car-bg.png +0 -0
  15. package/assets/icon/arrange.png +0 -0
  16. package/assets/icon/arrow-left.png +0 -0
  17. package/assets/icon/arrow-right-big.png +0 -0
  18. package/assets/icon/back.png +0 -0
  19. package/assets/icon/boxs.png +0 -0
  20. package/assets/icon/date.png +0 -0
  21. package/assets/icon/delete.png +0 -0
  22. package/assets/icon/down.png +0 -0
  23. package/assets/icon/fileImg.png +0 -0
  24. package/assets/icon/filter.png +0 -0
  25. package/assets/icon/filtrate.png +0 -0
  26. package/assets/icon/info.png +0 -0
  27. package/assets/icon/interval/location.png +0 -0
  28. package/assets/icon/interval/reset.png +0 -0
  29. package/assets/icon/interval/time.png +0 -0
  30. package/assets/icon/label/close.png +0 -0
  31. package/assets/icon/label/down.png +0 -0
  32. package/assets/icon/label/up.png +0 -0
  33. package/assets/icon/more.png +0 -0
  34. package/assets/icon/order.png +0 -0
  35. package/assets/icon/person.png +0 -0
  36. package/assets/icon/picture.png +0 -0
  37. package/assets/icon/pull-down.png +0 -0
  38. package/assets/icon/report-forms/gary-icon.png +0 -0
  39. package/assets/icon/report-forms/green-up-icon.png +0 -0
  40. package/assets/icon/report-forms/icon.png +0 -0
  41. package/assets/icon/report-forms/up-icon.png +0 -0
  42. package/assets/icon/required.png +0 -0
  43. package/assets/icon/search-right.png +0 -0
  44. package/assets/icon/search.png +0 -0
  45. package/assets/icon/sort.png +0 -0
  46. package/assets/icon/timeicon.png +0 -0
  47. package/assets/icon/title-icon.png +0 -0
  48. package/assets/icon/unfold.png +0 -0
  49. package/assets/icon/up.png +0 -0
  50. package/assets/icon/upload-img.png +0 -0
  51. package/assets/icon/upload.png +0 -0
  52. package/assets/icon/uploadImg.png +0 -0
  53. package/assets/img/card/card-big.png +0 -0
  54. package/assets/img/doc/excel.png +0 -0
  55. package/assets/img/doc/mp3.png +0 -0
  56. package/assets/img/doc/other.png +0 -0
  57. package/assets/img/doc/pdf.png +0 -0
  58. package/assets/img/doc/photo.png +0 -0
  59. package/assets/img/doc/ppt.png +0 -0
  60. package/assets/img/doc/txt.png +0 -0
  61. package/assets/img/doc/video.png +0 -0
  62. package/assets/img/doc/word.png +0 -0
  63. package/assets/img/doc/zip.png +0 -0
  64. package/assets/img/login-background-bottom.jpg +0 -0
  65. package/assets/img/login-background-top.jpg +0 -0
  66. package/assets/img/login-hello.png +0 -0
  67. package/assets/img/title1-display-page.png +0 -0
  68. package/assets/img/title1-edit-page.png +0 -0
  69. package/assets/logo.png +0 -0
  70. package/btn/lambo-big-button.vue +121 -0
  71. package/btn/lambo-button-group.vue +47 -0
  72. package/btn/lambo-icon-button.vue +50 -0
  73. package/btn/lambo-medium-button.vue +121 -0
  74. package/btn/lambo-small-button-group.vue +31 -0
  75. package/btn/lambo-small-button-select.vue +53 -0
  76. package/btn/lambo-small-button.vue +121 -0
  77. package/card-item/card-row-icon.vue +72 -0
  78. package/card-item/filtrate-row.vue +72 -0
  79. package/card-item/lambo-card-footer.vue +40 -0
  80. package/card-item/lambo-card-head.vue +64 -0
  81. package/card-item/lambo-card-row.vue +60 -0
  82. package/collapse/lambo-collapse.vue +80 -0
  83. package/detail/lambo-detail-grid.vue +57 -0
  84. package/detail/lambo-detail-row.vue +59 -0
  85. package/doc/file/lambo-file-upload.vue +179 -0
  86. package/doc/file/styles/css/index.css +118 -0
  87. package/doc/img/lambo-img-upload.vue +109 -0
  88. package/doc/img/styles/css/index.css +98 -0
  89. package/edit/list/Lambo-edit-list.vue +90 -0
  90. package/edit/list/lambo-edit-card-group.vue +103 -0
  91. package/edit/list/styles/css/index.css +39 -0
  92. package/edit/select/lambo-edit-date-range.vue +135 -0
  93. package/edit/select/lambo-edit-date.vue +108 -0
  94. package/edit/select/lambo-edit-input-textarea.vue +92 -0
  95. package/edit/select/lambo-edit-input.vue +92 -0
  96. package/edit/select/lambo-edit-multi-select.vue +160 -0
  97. package/edit/select/lambo-edit-single-select.vue +153 -0
  98. package/edit/select/styles/css/index.css +124 -0
  99. package/flow/lambo-flow-detail.vue +30 -0
  100. package/flow/lambo-flow-edit.vue +30 -0
  101. package/icon/lambo-required-red-star.vue +47 -0
  102. package/icon/lambo-vector-icon.vue +71 -0
  103. package/list/lambo-list.vue +236 -0
  104. package/nav/lambo-top-nav.vue +89 -0
  105. package/package.json +26 -0
  106. package/search/lambo-date-range-page.vue +191 -0
  107. package/search/lambo-date-range.vue +107 -0
  108. package/search/lambo-input.vue +74 -0
  109. package/search/lambo-multi-select.vue +125 -0
  110. package/search/lambo-org-select-page.vue +109 -0
  111. package/search/lambo-search-box.vue +55 -0
  112. package/search/lambo-single-select.vue +119 -0
  113. package/search/styles/css/index.css +126 -0
  114. package/styles/base.less +75 -0
  115. package/styles/components/btn.less +7 -0
  116. package/styles/components/search.less +33 -0
  117. package/styles/components/tag.less +181 -0
  118. package/styles/index.less +4 -0
  119. package/title/lambo-title1.vue +129 -0
  120. package/title/lambo-title2.vue +37 -0
  121. package/title/lambo-title3.vue +77 -0
@@ -0,0 +1,179 @@
1
+ <template>
2
+ <div>
3
+ <div class="fileUplodaContainer">
4
+ <div class="setUploader">
5
+ <div class="fileUplodaTitle"><p>{{ title }}</p></div>
6
+ <van-uploader v-model="fileList" :after-read="afterRead" :before-read="beforeRead" accept="*">
7
+ <van-button :icon="fileImg" type="primary"></van-button>
8
+ </van-uploader>
9
+ </div>
10
+ </div>
11
+ </div>
12
+ </template>
13
+ <script>
14
+
15
+ import fileImg from '../assets/icon/fileImg.png';
16
+ import {axios} from "@indfnd/utils";
17
+ import {fileUploadUrl} from "@/api/doc";
18
+ import {Toast} from "vant";
19
+ import excelIcon from "../assets/img/doc/excel.png";
20
+ import mp3Icon from "../assets/img/doc/mp3.png";
21
+ import otherIcon from "../assets/img/doc/other.png";
22
+ import pdfIcon from "../assets/img/doc/pdf.png";
23
+ import photoIcon from "../assets/img/doc/photo.png";
24
+ import pptIcon from "../assets/img/doc/ppt.png";
25
+ import txtIcon from "../assets/img/doc/txt.png";
26
+ import videoIcon from "../assets/img/doc/video.png";
27
+ import wordIcon from "../assets/img/doc/word.png";
28
+ import zipIcon from "../assets/img/doc/zip.png";
29
+
30
+ export default {
31
+ name: 'LamboFileUpload',
32
+ components: {},
33
+ props: {
34
+ title: {
35
+ type: String,
36
+ default: ' '
37
+ },
38
+ },
39
+ data() {
40
+ return {
41
+ fileImg: fileImg,
42
+ fileList: [],
43
+ resultFileList: []
44
+ }
45
+ },
46
+ methods: {
47
+ afterRead(files, detail) {
48
+ console.log(files, detail);
49
+ let file = files.file;
50
+ let formData = new FormData();
51
+ formData.append('file', file);
52
+ axios.post(fileUploadUrl, formData, {}).then(response => {
53
+ if (response && response.code == "1") {
54
+ let fileData = response.data;
55
+ if (fileData && fileData.length > 0) {
56
+ let file1 = fileData[0]
57
+ if (file1 && file1.fileId) {
58
+ let resFile = fileData[0]
59
+ let fileName = resFile.fileName || ''
60
+ let suffix = ''
61
+ if (fileName.indexOf(".") > -1) {
62
+ suffix = fileName.split('.')[1]
63
+ }
64
+ this.updateFileIcon(suffix);
65
+ let item = {
66
+ fileId: resFile.fileId,
67
+ lastModified: file.lastModified,
68
+ fileName: fileName,
69
+ fileSuffix: suffix
70
+ }
71
+ this.resultFileList.push(item)
72
+ Toast.success('上传文件成功');
73
+ this.$emit("onSuccess", this.resultFileList);
74
+ } else {
75
+ Toast.fail("上传文件为空,上传失败")
76
+ this.$emit("on-failed", null);
77
+ }
78
+ } else {
79
+ Toast.fail("上传文件为空,上传失败")
80
+ this.$emit("on-failed", null);
81
+ }
82
+ } else {
83
+ Toast.fail("上传失败,请联系管理员")
84
+ this.$emit("on-failed", null);
85
+ }
86
+ }).catch((e) => {
87
+ Toast.fail("文件上传异常!");
88
+ console.error("文件上传异常:", e)
89
+ });
90
+ },
91
+ beforeRead(file) {
92
+ let fileName = file.name;
93
+ let type = fileName.substring(fileName.lastIndexOf('.') + 1);
94
+ const fileList = ['mp4', 'm3u8', 'rmvb', 'avi', 'swf', '3gp', 'mkv', 'flv',
95
+ 'mp3', 'wav', 'wma', 'ogg', 'aac', 'flac',
96
+ 'doc', 'pages', 'epub', 'docx', 'pdf', 'txt', 'numbers', 'csv', 'xls', 'xlsx',
97
+ 'keynote', 'ppt', 'pptx', 'zip',
98
+ 'jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff', 'tif', 'psd', 'webp', 'svg', 'raw'
99
+ ];
100
+ let result = fileList.includes(type.toLowerCase());
101
+ if (!result) {
102
+ Toast.fail("文件类型不支持!(请选择'mp4', 'm3u8', 'rmvb', 'avi', 'swf', '3gp', 'mkv', 'flv','mp3', 'wav', 'wma', 'ogg', 'aac', 'flac','doc', 'pages', 'epub', 'docx', 'pdf', 'txt', 'numbers', 'csv', 'xls', 'xlsx','keynote', 'ppt', 'pptx', 'zip','jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff', 'tif', 'psd', 'webp', 'svg', 'raw')")
103
+ }
104
+ return result;
105
+ },
106
+ updateFileIcon(suffix) {
107
+ const fileIcons = document.querySelectorAll('.van-uploader__file-icon');
108
+ switch (suffix) {
109
+ case 'mp4':
110
+ case 'm3u8':
111
+ case 'rmvb':
112
+ case 'avi':
113
+ case 'swf':
114
+ case '3gp':
115
+ case 'mkv':
116
+ case 'flv':
117
+ fileIcons[fileIcons.length - 1].style.content = 'url("' + videoIcon + '")';
118
+ break;
119
+ case 'mp3':
120
+ case 'wav':
121
+ case 'wma':
122
+ case 'ogg':
123
+ case 'aac':
124
+ case 'flac':
125
+ fileIcons[fileIcons.length - 1].style.content = 'url("' + mp3Icon + '")';
126
+ break;
127
+ case 'doc':
128
+ case 'pages':
129
+ case 'epub':
130
+ case 'docx':
131
+ fileIcons[fileIcons.length - 1].style.content = 'url("' + wordIcon + '")';
132
+ break;
133
+ case 'pdf':
134
+ fileIcons[fileIcons.length - 1].style.content = 'url("' + pdfIcon + '")';
135
+ break;
136
+ case 'txt':
137
+ fileIcons[fileIcons.length - 1].style.content = 'url("' + txtIcon + '")';
138
+ break;
139
+ case 'numbers':
140
+ case 'csv':
141
+ case 'xls':
142
+ case 'xlsx':
143
+ fileIcons[fileIcons.length - 1].style.content = 'url("' + excelIcon + '")';
144
+ break;
145
+ case 'keynote':
146
+ case 'ppt':
147
+ case 'pptx':
148
+ fileIcons[fileIcons.length - 1].style.content = 'url("' + pptIcon + '")';
149
+ break;
150
+ case 'zip':
151
+ fileIcons[fileIcons.length - 1].style.content = 'url("' + zipIcon + '")';
152
+ break;
153
+ case 'jpg':
154
+ case 'jpeg':
155
+ case 'png':
156
+ case 'gif':
157
+ case 'bmp':
158
+ case 'tiff':
159
+ case 'tif':
160
+ case 'psd':
161
+ case 'webp':
162
+ case 'svg':
163
+ case 'raw':
164
+ // fileIcons[fileIcons.length - 1].style.content = 'url("' + photoIcon + '")';
165
+ break;
166
+ default:
167
+ fileIcons[fileIcons.length - 1].style.content = 'url("' + otherIcon + '")';
168
+ break;
169
+ }
170
+ },
171
+ },
172
+ };
173
+ </script>
174
+ <style scoped>
175
+ @import "../../styles/index.less";
176
+ @import './styles/css/index.css';
177
+
178
+
179
+ </style>
@@ -0,0 +1,118 @@
1
+ .fileUplodaContainer {
2
+ padding: 12px 14px;
3
+ background: var(--scl-white-1);
4
+ }
5
+
6
+ .fileUplodaTitle {
7
+ margin-bottom: 10px;
8
+ display: flex;
9
+ justify-content: space-between;
10
+ }
11
+
12
+ .fileUplodaTitle p {
13
+ width: 100%;
14
+ color: var(--scl-gray-3);
15
+ font-size: 14px;
16
+ position: absolute;
17
+ top: -2px;
18
+ }
19
+
20
+ .fileUplodaTitle img {
21
+ width: 20px;
22
+ height: 20px;
23
+ display: block;
24
+ }
25
+
26
+ /*右上角上传按钮样式*/
27
+ /deep/ .van-button--primary {
28
+ background: none;
29
+ border: none;
30
+ height: auto;
31
+ }
32
+
33
+ /*右上角上传按钮位置*/
34
+ /deep/ .van-uploader__input-wrapper, .van-uploader {
35
+ width: 100%;
36
+ position: static;
37
+ }
38
+
39
+ /*上传按钮首次进页面控制图标大小*/
40
+ /deep/ .van-icon__image {
41
+ width: 1em;
42
+ }
43
+
44
+ /*图片上传区域占位及右上角上传按钮占位*/
45
+ /deep/ .setUploader {
46
+ position: relative;
47
+ margin-bottom: 10px;
48
+ }
49
+
50
+ /*右上角上传按钮位置*/
51
+ /deep/ .van-button--normal {
52
+ width: 20px;
53
+ position: absolute;
54
+ top: -1px;
55
+ right: -8px;
56
+ }
57
+
58
+ /*文件列表整体位置*/
59
+ /deep/ .van-uploader__wrapper {
60
+ margin-top: 20px;
61
+ }
62
+
63
+ /*文件预览框样式*/
64
+ /deep/ .van-uploader__file {
65
+ width: 101%;
66
+ height: 38px;
67
+ background-color: #F2F2F2;
68
+ display: flex;
69
+ flex-wrap: wrap;
70
+ border-radius: 5px;
71
+ align-items: stretch;
72
+ align-content: space-around;
73
+ flex-direction: row;
74
+ }
75
+
76
+ /*文件名样式*/
77
+ /deep/ .van-uploader__file-name {
78
+ width: 92%;
79
+ margin-top: 1px;
80
+ text-align: left;
81
+ font-size: 14px;
82
+ }
83
+
84
+ /*文件类型icon样式*/
85
+ /deep/ .van-uploader__file-icon {
86
+ width: 17px;
87
+ height: 20px;
88
+ }
89
+
90
+ /*控制多文件换行样式*/
91
+ /deep/ .van-uploader__preview {
92
+ width: 100%;
93
+ margin: 0 0 10px 0;
94
+ }
95
+
96
+ /*覆盖旧删除按钮样式*/
97
+ /deep/ .van-uploader__preview-delete {
98
+ width: 38px;
99
+ height: 38px;
100
+ border-radius: 50%;
101
+ background-color: rgba(0, 0, 0, 0)
102
+ }
103
+
104
+ /*新删除按钮图标样式*/
105
+ /deep/ .van-uploader__preview-delete-icon {
106
+ top: 6px;
107
+ right: 4px;
108
+ color: var(--scl-gray-2);
109
+ font-size: 28px;
110
+ }
111
+
112
+ /*控制上传功能覆盖区域*/
113
+ /deep/ .van-uploader__input {
114
+ height: 25px;
115
+ width: 25px;
116
+ position: absolute;
117
+ left: 95%;
118
+ }
@@ -0,0 +1,109 @@
1
+ <template>
2
+ <div>
3
+ <div class="imgUplodaContainer">
4
+ <div class="setUploader">
5
+ <div class="imgUplodaTitle"><p>{{ title }}</p></div>
6
+ <van-uploader v-model="fileList" :after-read="afterRead" :before-read="beforeRead" accept="image/*">
7
+ <van-button :icon="uploadImg" type="primary"></van-button>
8
+ </van-uploader>
9
+ </div>
10
+ </div>
11
+ </div>
12
+ </template>
13
+ <script>
14
+ import uploadImg from '../assets/icon/uploadImg.png';
15
+ import {axios} from "@indfnd/utils";
16
+ import {fileUploadUrl} from "@/api/doc";
17
+ import {Toast} from "vant";
18
+
19
+ export default {
20
+ name: 'LamboImgUpload',
21
+ components: {},
22
+ props: {
23
+ title: {
24
+ type: String,
25
+ default: ' '
26
+ },
27
+ },
28
+ data() {
29
+ return {
30
+ uploadImg: uploadImg,
31
+ fileList: [],
32
+ resultFileList: []
33
+ }
34
+ },
35
+ methods: {
36
+ afterRead(files, detail) {
37
+ console.log(files, detail);
38
+ let file = files.file;
39
+ let formData = new FormData();
40
+ formData.append('file', file);
41
+ axios.post(fileUploadUrl, formData, {}).then(response => {
42
+ console.log("doUpload -- response:", response)
43
+ if (response && response.code == "1") {
44
+ let fileData = response.data;
45
+ if (fileData && fileData.length > 0) {
46
+ let file1 = fileData[0]
47
+ if (file1 && file1.fileId) {
48
+ let resFile = fileData[0]
49
+ let fileName = resFile.fileName || ''
50
+ let suffix = ''
51
+ if (fileName.indexOf(".") > -1) {
52
+ suffix = fileName.split('.')[1]
53
+ }
54
+ let item = {
55
+ fileId: resFile.fileId,
56
+ lastModified: file.lastModified,
57
+ fileName: fileName,
58
+ fileSuffix: suffix
59
+ }
60
+ this.resultFileList.push(item)
61
+ Toast.success('上传图片成功');
62
+ this.$emit("onSuccess", this.resultFileList);
63
+ } else {
64
+ Toast.fail("上传图片为空,上传失败")
65
+ this.$emit("on-failed", null);
66
+ }
67
+ } else {
68
+ Toast.fail("上传图片为空,上传失败")
69
+ this.$emit("on-failed", null);
70
+ }
71
+ } else {
72
+ Toast.fail("上传失败,请联系管理员")
73
+ this.$emit("on-failed", null);
74
+ }
75
+ }).catch((e) => {
76
+ Toast.fail("图片上传异常!");
77
+ console.error("图片上传异常:", e)
78
+ });
79
+ },
80
+ beforeRead(file) {
81
+ let fileName = file.name;
82
+ let type = fileName.substring(fileName.lastIndexOf('.') + 1);
83
+ let result = false;
84
+ const imgList = ['bmp', 'jpg', 'png', 'tif', 'gif', 'pcx', 'tga', 'exif', 'fpx', 'svg', 'psd', 'cdr', 'pcd', 'dxf', 'ufo', 'eps', 'ai', 'raw', 'wmf', 'webp', 'avif', 'apng', 'jpeg',
85
+ 'BMP', 'JPG', 'PNG', 'TIF', 'GIF', 'PCX', 'TGA', 'EXIF', 'FPX', 'SVG', 'PSD', 'CDR', 'PCD', 'DXF', 'UFO', 'EPS', 'AI', 'RAW', 'WMF', 'WEBP', 'AVIF', 'APNG', 'JPEG'];
86
+ // 进行图片匹配
87
+ result = imgList.some(function (item) {
88
+ return item === type
89
+ })
90
+ if (!result) {
91
+ Toast.fail("请上传图片!")
92
+ }
93
+ return result
94
+ }
95
+ }
96
+ ,
97
+ created() {
98
+
99
+ }
100
+ ,
101
+ mounted() {
102
+
103
+ }
104
+ }
105
+ </script>
106
+ <style scoped>
107
+ @import "../../styles/index.less";
108
+ @import './styles/css/index.css';
109
+ </style>
@@ -0,0 +1,98 @@
1
+ .imgUplodaContainer {
2
+ padding: 12px 14px;
3
+ background: var(--scl-white-1);
4
+ }
5
+
6
+ .imgUplodaTitle {
7
+ /*margin-bottom: 18px;*/
8
+ display: flex;
9
+ justify-content: space-between;
10
+ }
11
+
12
+ .imgUplodaTitle p {
13
+ width: 100%;
14
+ color: var(--scl-gray-3);
15
+ font-size: 14px;
16
+ position: absolute;
17
+ top: -2px;
18
+ }
19
+
20
+ .imgUplodaTitle img {
21
+ width: 20px;
22
+ height: 20px;
23
+ display: block;
24
+ }
25
+
26
+ /*右上角上传按钮样式*/
27
+ /deep/ .van-button--primary {
28
+ background: none;
29
+ border: none;
30
+ height: auto;
31
+ }
32
+
33
+ /*右上角上传按钮位置*/
34
+ /deep/ .van-uploader__input-wrapper, .van-uploader {
35
+ width: 100%;
36
+ position: static;
37
+ }
38
+
39
+ /*上传按钮首次进页面控制图标大小*/
40
+ /deep/ .van-icon__image {
41
+ width: 1em;
42
+ }
43
+
44
+ /*图片上传区域及右上角上传按钮*/
45
+ /deep/ .setUploader {
46
+ position: relative;
47
+ margin-bottom: 10px;
48
+ }
49
+
50
+ /*图片整体位置*/
51
+ /deep/ .van-uploader__wrapper {
52
+ margin-top: 30px;
53
+ display: grid;
54
+ justify-content: space-between;
55
+ grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
56
+ gap: 10px;
57
+ }
58
+
59
+ /*右上角上传按钮位置*/
60
+ /deep/ .van-button--normal {
61
+ width: 20px;
62
+ position: absolute;
63
+ top: -1px;
64
+ right: -8px;
65
+ }
66
+
67
+ /*/deep/ .van-uploader__preview {*/
68
+ /* width: 23%;*/
69
+ /* height: auto;*/
70
+ /* padding-left: 8px;*/
71
+ /* margin: 8px 0 0 0;*/
72
+ /*}*/
73
+
74
+ /*预览图片样式*/
75
+ /*/deep/ .van-uploader__preview-image {*/
76
+ /* display: block;*/
77
+ /* width: auto;*/
78
+ /* height: 100px;*/
79
+ /* overflow: hidden;*/
80
+ /* border: 1px solid #515a6e38;*/
81
+ /*}*/
82
+
83
+ /*控制上传功能覆盖区域*/
84
+ /deep/ .van-uploader__input {
85
+ height: 20px;
86
+ width: 20px;
87
+ position: absolute;
88
+ left: 95%;
89
+ }
90
+
91
+ /deep/ .van-uploader__preview {
92
+ margin: 0;
93
+ }
94
+
95
+ /deep/ .van-uploader__preview-image {
96
+ width: auto;
97
+ height: 95px;
98
+ }
@@ -0,0 +1,90 @@
1
+ <template>
2
+ <div>
3
+ <van-collapse v-model="activeNames">
4
+ <van-collapse-item v-for="(item, index) in lineList" :name="index.toString()">
5
+ <div slot="title">
6
+ <div class="indicator-title">
7
+ <div class="color-line"/>
8
+ {{ '第' + (index + 1) + '个维修项目' }}
9
+ </div>
10
+ </div>
11
+ <div slot="right-icon" class="coll-title-icon">
12
+ <van-icon :color="'#0070D2'" class="van-icon van-cell__right-icon" name="play"
13
+ style="position:absolute;left: 1px;"/>
14
+ <lambo-medium-button :disabled="false" :type="type" style="margin-top: -5px" text="删除"
15
+ @click="deleteSpart"></lambo-medium-button>
16
+ </div>
17
+ <lambo-edit-single-select :data="singleKv" :default-item="defaultItem" :required="true"
18
+ :title="'单选框'"></lambo-edit-single-select>
19
+ <lambo-edit-multi-select :data="multiKv" :default-item="multiDefaultItem" :icon="multiIcon"
20
+ :required="true" :title="'多选框'"></lambo-edit-multi-select>
21
+ <lambo-edit-input :title="'输入框'"></lambo-edit-input>
22
+ <slot></slot>
23
+ </van-collapse-item>
24
+ </van-collapse>
25
+ <lambo-big-button :disabled="false" :type="type" text="新增一条" @click="addSpart"></lambo-big-button>
26
+ </div>
27
+ </template>
28
+ <script>
29
+ import LamboBigButton from '@/components/lambo/btn/lambo-big-button.vue'
30
+ import LamboMediumButton from '@/components/lambo/btn/lambo-medium-button.vue'
31
+ import LamboEditSingleSelect from "@/components/lambo/edit/select/lambo-edit-single-select.vue";
32
+ import LamboEditMultiSelect from "@/components/lambo/edit/select/lambo-edit-multi-select.vue";
33
+ import LamboEditInput from "@/components/lambo/edit/select/lambo-edit-input.vue";
34
+
35
+ export default {
36
+ name: 'LamboEditList',
37
+ components: {
38
+ LamboEditInput, LamboEditMultiSelect, LamboEditSingleSelect,
39
+ LamboBigButton,
40
+ LamboMediumButton
41
+ },
42
+ props: {},
43
+ data() {
44
+ return {
45
+ type: 'default',
46
+ lineList: [{
47
+ "maintenanceItems": "",
48
+ "materialCost": 1,
49
+ "hourCost": 0,
50
+ "maintenanceDesc": "",
51
+ }, {
52
+ "maintenanceItems": "cscsc ",
53
+ "materialCost": 1,
54
+ "hourCost": 0,
55
+ "maintenanceDesc": "",
56
+ }],
57
+ activeNames: ['0'],
58
+ singleKv: [],
59
+ defaultItem: {},
60
+
61
+ multiKv: [],
62
+ multiDefaultItem: {},
63
+ multiIcon: 'boxs.png',
64
+ }
65
+ },
66
+ methods: {
67
+ deleteSpart(index) {
68
+ this.lineList.splice(index, 1);
69
+ },
70
+ addSpart() {
71
+ this.lineList.push({
72
+ "maintenanceItems": "cscsc ",
73
+ "materialCost": 1,
74
+ "hourCost": 0,
75
+ "maintenanceDesc": "",
76
+ })
77
+ }
78
+ },
79
+ created() {
80
+
81
+ },
82
+ mounted() {
83
+
84
+ }
85
+ }
86
+ </script>
87
+ <style scoped>
88
+ @import "../../styles/index.less";
89
+ @import './styles/css/index.css';
90
+ </style>
@@ -0,0 +1,103 @@
1
+ <template>
2
+ <div>
3
+ <van-collapse v-model="activeNames">
4
+ <van-collapse-item :name="activeNames.toString()">
5
+ <div slot="title">
6
+ <div class="indicator-title">
7
+ <div class="color-line"/>
8
+ {{ title + (index + 1) }}
9
+ </div>
10
+ </div>
11
+ <div slot="right-icon" class="coll-title-icon">
12
+ <van-icon :color="'#0070D2'" class="van-icon van-cell__right-icon" name="play"
13
+ style="position:absolute;left: 1px;"/>
14
+ <lambo-medium-button :disabled="false" :type="type" style="margin-top: -5px" text="删除"
15
+ @click="deleteSpart(index)"></lambo-medium-button>
16
+ </div>
17
+ <slot></slot>
18
+ </van-collapse-item>
19
+ </van-collapse>
20
+ </div>
21
+ </template>
22
+ <script>
23
+ import LamboBigButton from '@/components/lambo/btn/lambo-big-button.vue'
24
+ import LamboMediumButton from '@/components/lambo/btn/lambo-medium-button.vue'
25
+ import LamboEditSingleSelect from "@/components/lambo/edit/select/lambo-edit-single-select.vue";
26
+ import LamboEditMultiSelect from "@/components/lambo/edit/select/lambo-edit-multi-select.vue";
27
+ import LamboEditInput from "@/components/lambo/edit/select/lambo-edit-input.vue";
28
+
29
+ export default {
30
+ name: 'LamboEditCardGroup',
31
+ components: {
32
+ LamboEditInput, LamboEditMultiSelect, LamboEditSingleSelect,
33
+ LamboBigButton,
34
+ LamboMediumButton
35
+ },
36
+ props: {
37
+ lineList: {
38
+ type: Array,
39
+ default: () => []
40
+ },
41
+ title: {
42
+ type: String,
43
+ default: '',
44
+ },
45
+ index: {
46
+ type: Number,
47
+ default:
48
+ 1,
49
+ }
50
+ },
51
+ // watch: {
52
+ // lineList: function (val, oldVal) {
53
+ // },
54
+ // },
55
+ data() {
56
+ return {
57
+ type: 'default',
58
+ // lineList: [],
59
+ activeNames: ['0'],
60
+ singleKv: [],
61
+ defaultItem: {},
62
+
63
+ multiKv: [],
64
+ multiDefaultItem: {},
65
+ multiIcon: 'boxs.png',
66
+ }
67
+ }
68
+ ,
69
+ methods: {
70
+ deleteSpart(index) {
71
+ console.log("删除--", index)
72
+ this.lineList.splice(index, 1);
73
+ // for (var i = 0; i < this.materialChangeList.length; i++) {
74
+ // let obj = this.materialChangeList[i];
75
+ // if (obj.line_no === item.line_no) {
76
+ // this.materialChangeList.splice(i, 1);
77
+ // }
78
+ // }
79
+ // for (var i = 0; i < this.materialChangeList.length; i++) {
80
+ // let obj = this.materialChangeList[i];
81
+ // obj.line_no = i + 1;
82
+ // obj.title = '第' + obj.line_no + '个物资';
83
+ // }
84
+ }
85
+ ,
86
+ addSpart() {
87
+ this.lineList.push({})
88
+ }
89
+ }
90
+ ,
91
+ created() {
92
+
93
+ }
94
+ ,
95
+ mounted() {
96
+
97
+ }
98
+ }
99
+ </script>
100
+ <style scoped>
101
+ @import "../../styles/index.less";
102
+ @import './styles/css/index.css';
103
+ </style>