bri-components 1.0.0

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 (215) hide show
  1. package/README.md +30 -0
  2. package/lib/.DS_Store +0 -0
  3. package/lib/0.bri-components.min.js +2 -0
  4. package/lib/0.bri-components.min.js.map +1 -0
  5. package/lib/1.bri-components.min.js +2 -0
  6. package/lib/1.bri-components.min.js.map +1 -0
  7. package/lib/2.bri-components.min.js +2 -0
  8. package/lib/2.bri-components.min.js.map +1 -0
  9. package/lib/3.bri-components.min.js +2 -0
  10. package/lib/3.bri-components.min.js.gz +0 -0
  11. package/lib/3.bri-components.min.js.map +1 -0
  12. package/lib/4.bri-components.min.js +2 -0
  13. package/lib/4.bri-components.min.js.gz +0 -0
  14. package/lib/4.bri-components.min.js.map +1 -0
  15. package/lib/5.bri-components.min.js +2 -0
  16. package/lib/5.bri-components.min.js.map +1 -0
  17. package/lib/6.bri-components.min.js +2 -0
  18. package/lib/6.bri-components.min.js.map +1 -0
  19. package/lib/bri-components.min.js +21 -0
  20. package/lib/bri-components.min.js.gz +0 -0
  21. package/lib/bri-components.min.js.map +1 -0
  22. package/lib/styles/bri-components.css +1 -0
  23. package/lib/styles/bundle.css +14 -0
  24. package/lib/styles/font/fontello.eot +0 -0
  25. package/lib/styles/font/fontello.svg +32 -0
  26. package/lib/styles/font/fontello.ttf +0 -0
  27. package/lib/styles/font/fontello.woff +0 -0
  28. package/lib/styles/font/fontello.woff2 +0 -0
  29. package/package.json +121 -0
  30. package/src/.DS_Store +0 -0
  31. package/src/components/controls/base/DshBack.vue +36 -0
  32. package/src/components/controls/base/DshCascader.vue +366 -0
  33. package/src/components/controls/base/DshCascaderMultiple.vue +158 -0
  34. package/src/components/controls/base/DshCheckbox.vue +199 -0
  35. package/src/components/controls/base/DshCoordinates.vue +497 -0
  36. package/src/components/controls/base/DshDate.vue +148 -0
  37. package/src/components/controls/base/DshDaterange.vue +335 -0
  38. package/src/components/controls/base/DshDivider.vue +59 -0
  39. package/src/components/controls/base/DshEditor.vue +166 -0
  40. package/src/components/controls/base/DshInput.vue +139 -0
  41. package/src/components/controls/base/DshLabels.vue +302 -0
  42. package/src/components/controls/base/DshNumber/BriInputNumber/BriInputNumber.vue +425 -0
  43. package/src/components/controls/base/DshNumber/BriInputNumber/mixins/emitter.js +34 -0
  44. package/src/components/controls/base/DshNumber/BriInputNumber/mixins/form.js +14 -0
  45. package/src/components/controls/base/DshNumber/BriInputNumber/utils/assist.js +322 -0
  46. package/src/components/controls/base/DshNumber/DshNumber.vue +148 -0
  47. package/src/components/controls/base/DshNumberange.vue +137 -0
  48. package/src/components/controls/base/DshPackage.vue +72 -0
  49. package/src/components/controls/base/DshSelect.vue +231 -0
  50. package/src/components/controls/base/DshSwitch.vue +112 -0
  51. package/src/components/controls/base/DshUndeveloped.vue +39 -0
  52. package/src/components/controls/base/YSerialNumber.vue +37 -0
  53. package/src/components/controls/base/ZUpload/YUploadImage.vue +228 -0
  54. package/src/components/controls/base/ZUpload/index.vue +356 -0
  55. package/src/components/controls/base/ZUpload/upload-list.vue +277 -0
  56. package/src/components/controls/base/ZUpload/upload-listItem.vue +0 -0
  57. package/src/components/controls/base/ZUpload/uploadMixin.js +397 -0
  58. package/src/components/controls/base/selectMixin.js +110 -0
  59. package/src/components/controls/base/textMultiple/DshTextMultiple.vue +94 -0
  60. package/src/components/controls/base/textMultiple/MultipleInput.vue +106 -0
  61. package/src/components/controls/controlMap.js +94 -0
  62. package/src/components/controls/controlMixin.js +84 -0
  63. package/src/components/form/DshAdvSearchForm.vue +341 -0
  64. package/src/components/form/DshDefaultSearch.vue +203 -0
  65. package/src/components/form/DshForm.vue +364 -0
  66. package/src/components/form/searchMixin.js +205 -0
  67. package/src/components/list/DshBox/DshBox.vue +168 -0
  68. package/src/components/list/DshBox/DshCard.vue +219 -0
  69. package/src/components/list/DshBox/DshCrossTable.vue +624 -0
  70. package/src/components/list/DshBox/DshList.vue +442 -0
  71. package/src/components/list/DshBox/DshPanel.vue +407 -0
  72. package/src/components/list/DshBox/DshSingleData.vue +82 -0
  73. package/src/components/list/DshBox/DshTable.vue +273 -0
  74. package/src/components/list/DshCascaderTable.vue +817 -0
  75. package/src/components/list/DshFlatTable.vue +622 -0
  76. package/src/components/list/ZTree.vue +527 -0
  77. package/src/components/list/easyTable/index.js +23 -0
  78. package/src/components/list/easyTable/src/directives/clickoutside.js +32 -0
  79. package/src/components/list/easyTable/src/mixins/layerAdjustment.js +62 -0
  80. package/src/components/list/easyTable/src/settings/settings.js +11 -0
  81. package/src/components/list/easyTable/src/utils/deepClone.js +256 -0
  82. package/src/components/list/easyTable/src/utils/dom.js +41 -0
  83. package/src/components/list/easyTable/src/utils/utils.js +190 -0
  84. package/src/components/list/easyTable/v-checkbox/index.js +7 -0
  85. package/src/components/list/easyTable/v-checkbox/src/checkbox.vue +127 -0
  86. package/src/components/list/easyTable/v-checkbox-group/index.js +7 -0
  87. package/src/components/list/easyTable/v-checkbox-group/src/checkbox-group.vue +68 -0
  88. package/src/components/list/easyTable/v-dropdown/index.js +7 -0
  89. package/src/components/list/easyTable/v-dropdown/src/dropdown.vue +337 -0
  90. package/src/components/list/easyTable/v-table/index.js +7 -0
  91. package/src/components/list/easyTable/v-table/src/body-cell-merge-mixin.js +141 -0
  92. package/src/components/list/easyTable/v-table/src/cell-edit-mixin.js +102 -0
  93. package/src/components/list/easyTable/v-table/src/checkbox-selection-mixin.js +189 -0
  94. package/src/components/list/easyTable/v-table/src/classes-mixin.js +56 -0
  95. package/src/components/list/easyTable/v-table/src/drag-width-mixin.js +202 -0
  96. package/src/components/list/easyTable/v-table/src/export-csv.js +74 -0
  97. package/src/components/list/easyTable/v-table/src/frozen-columns-mixin.js +134 -0
  98. package/src/components/list/easyTable/v-table/src/loading.vue +49 -0
  99. package/src/components/list/easyTable/v-table/src/scroll-bar-control-mixin.js +21 -0
  100. package/src/components/list/easyTable/v-table/src/scroll-control-mixin.js +92 -0
  101. package/src/components/list/easyTable/v-table/src/sort-control-mixin.js +108 -0
  102. package/src/components/list/easyTable/v-table/src/table-empty-mixin.js +73 -0
  103. package/src/components/list/easyTable/v-table/src/table-empty.vue +66 -0
  104. package/src/components/list/easyTable/v-table/src/table-filters-mixin.js +126 -0
  105. package/src/components/list/easyTable/v-table/src/table-footer-mixin.js +122 -0
  106. package/src/components/list/easyTable/v-table/src/table-resize-mixin.js +279 -0
  107. package/src/components/list/easyTable/v-table/src/table-row-mouse-events-mixin.js +123 -0
  108. package/src/components/list/easyTable/v-table/src/table.vue +1565 -0
  109. package/src/components/list/easyTable/v-table/src/title-cell-merge-mixin.js +115 -0
  110. package/src/components/list/evTable/EvTable.vue +323 -0
  111. package/src/components/list/evTable/EvTableMixin.js +26 -0
  112. package/src/components/other/DshAvatar.vue +149 -0
  113. package/src/components/other/DshBtnModal.vue +64 -0
  114. package/src/components/other/DshColorPanel.vue +128 -0
  115. package/src/components/other/DshEditPanel.vue +130 -0
  116. package/src/components/other/InfoCascader.vue +258 -0
  117. package/src/components/other/YNoPermission.vue +45 -0
  118. package/src/components/other/ZCode.vue +125 -0
  119. package/src/components/other/ZCollapseTree.vue +84 -0
  120. package/src/components/other/ZGantt.vue +669 -0
  121. package/src/components/other/ZIframe.vue +105 -0
  122. package/src/components/other/ZLoading.vue +59 -0
  123. package/src/components/other/menu/DshMenu.vue +133 -0
  124. package/src/components/other/menu/DshMenuNav.vue +104 -0
  125. package/src/components/pages/Error/Error403.vue +34 -0
  126. package/src/components/pages/Error/Error404.vue +34 -0
  127. package/src/components/pages/Error/Error500.vue +34 -0
  128. package/src/components/pages/Error/error.less +163 -0
  129. package/src/components/pages/Error/errorBack.vue +38 -0
  130. package/src/components/small/Ctooltip.vue +90 -0
  131. package/src/components/small/DshButtons.vue +195 -0
  132. package/src/components/small/DshControlDefine.vue +110 -0
  133. package/src/components/small/DshCrumbs.vue +61 -0
  134. package/src/components/small/DshCrumbsItem.vue +107 -0
  135. package/src/components/small/DshDropdown.vue +159 -0
  136. package/src/components/small/DshFileShow.vue +212 -0
  137. package/src/components/small/DshIcons.vue +63 -0
  138. package/src/components/small/DshModal.vue +255 -0
  139. package/src/components/small/DshPage.vue +98 -0
  140. package/src/components/small/DshSteps.vue +68 -0
  141. package/src/components/small/DshTabs.vue +227 -0
  142. package/src/components/small/DshTags.vue +58 -0
  143. package/src/components/small/DshTdRender.js +21 -0
  144. package/src/components/small/DshTitle.vue +36 -0
  145. package/src/components/small/render.js +20 -0
  146. package/src/components/unit/DshFormItem.vue +157 -0
  147. package/src/components/unit/DshUnit.vue +72 -0
  148. package/src/components/unit/unitMixin.js +43 -0
  149. package/src/datas/.DS_Store +0 -0
  150. package/src/datas/common/region.json +1 -0
  151. package/src/datas/common/resourceData.json +20 -0
  152. package/src/datas/index.js +11 -0
  153. package/src/index.js +243 -0
  154. package/src/styles/animate.less +16 -0
  155. package/src/styles/bundle.css +14 -0
  156. package/src/styles/common/box.less +157 -0
  157. package/src/styles/common/common.less +31 -0
  158. package/src/styles/common/flex.less +282 -0
  159. package/src/styles/common/index.less +4 -0
  160. package/src/styles/common/text.less +43 -0
  161. package/src/styles/components/controls/DshCascader.less +75 -0
  162. package/src/styles/components/controls/DshCheckbox.less +156 -0
  163. package/src/styles/components/controls/DshCoordinates.less +72 -0
  164. package/src/styles/components/controls/DshDaterange.less +49 -0
  165. package/src/styles/components/controls/DshDivider.less +115 -0
  166. package/src/styles/components/controls/DshEditor.less +52 -0
  167. package/src/styles/components/controls/DshInput.less +40 -0
  168. package/src/styles/components/controls/DshLabels.less +187 -0
  169. package/src/styles/components/controls/DshNumberange.less +24 -0
  170. package/src/styles/components/controls/DshPackage.less +25 -0
  171. package/src/styles/components/controls/DshSelect.less +172 -0
  172. package/src/styles/components/controls/MultipleInput.less +55 -0
  173. package/src/styles/components/controls/ZUpload.less +446 -0
  174. package/src/styles/components/form/DshAdvSearchForm.less +159 -0
  175. package/src/styles/components/form/DshDefaultSearch.less +71 -0
  176. package/src/styles/components/index.less +49 -0
  177. package/src/styles/components/list/DshCascaderTable.less +113 -0
  178. package/src/styles/components/list/DshCrossTable.less +175 -0
  179. package/src/styles/components/list/DshFlatTable.less +98 -0
  180. package/src/styles/components/list/DshSingleData.less +30 -0
  181. package/src/styles/components/list/evTable.less +79 -0
  182. package/src/styles/components/list/evtable/animation.less +141 -0
  183. package/src/styles/components/list/evtable/font/fontello.eot +0 -0
  184. package/src/styles/components/list/evtable/font/fontello.svg +32 -0
  185. package/src/styles/components/list/evtable/font/fontello.ttf +0 -0
  186. package/src/styles/components/list/evtable/font/fontello.woff +0 -0
  187. package/src/styles/components/list/evtable/font/fontello.woff2 +0 -0
  188. package/src/styles/components/list/evtable/fontello.less +68 -0
  189. package/src/styles/components/list/evtable/index.less +5 -0
  190. package/src/styles/components/list/evtable/v-checkbox.less +167 -0
  191. package/src/styles/components/list/evtable/v-dropdown.less +235 -0
  192. package/src/styles/components/list/evtable/v-table.less +334 -0
  193. package/src/styles/components/list/ivu_reset.less +49 -0
  194. package/src/styles/components/other/DshEditPanel.less +70 -0
  195. package/src/styles/components/other/DshMenu.less +37 -0
  196. package/src/styles/components/other/DshMenuNav.less +82 -0
  197. package/src/styles/components/other/InfoCascader.less +55 -0
  198. package/src/styles/components/other/ZCode.less +1 -0
  199. package/src/styles/components/other/ZCollapseTree.less +62 -0
  200. package/src/styles/components/other/ZGantt.less +278 -0
  201. package/src/styles/components/other/ZLoading.less +36 -0
  202. package/src/styles/components/small/Ctooltip.less +5 -0
  203. package/src/styles/components/small/DshButtons.less +40 -0
  204. package/src/styles/components/small/DshControlDefine.less +64 -0
  205. package/src/styles/components/small/DshDropdown.less +61 -0
  206. package/src/styles/components/small/DshPage.less +94 -0
  207. package/src/styles/components/small/DshSteps.less +58 -0
  208. package/src/styles/components/small/DshTabs.less +82 -0
  209. package/src/styles/components/small/DshTitle.less +18 -0
  210. package/src/styles/components/unit/DshFormItem.less +124 -0
  211. package/src/styles/define.less +374 -0
  212. package/src/styles/index.less +10 -0
  213. package/src/styles/reset.less +83 -0
  214. package/src/styles/variables.less +98 -0
  215. package/src/styles/view_reset.less +446 -0
@@ -0,0 +1,231 @@
1
+ <template>
2
+ <div :class="`DshSelect ycFormItem control-${mode}`">
3
+ <!-- optionKind值 'flat'、'dropdown' -->
4
+ <template v-if="canEdit">
5
+ <!-- 平铺 -->
6
+ <RadioGroup
7
+ v-if="['flat', 'button'].includes(showType)"
8
+ :class="{
9
+ 'DshSelect-radioGroup': true,
10
+ 'DshSelect-radioGroup-useColor': selfPropsObj._useColor,
11
+ 'DshSelect-radioGroup-readonly': $isReadonly(canEdit, selfPropsObj),
12
+ 'DshSelect-radioGroup-disabled': $isDisabled(canEdit, selfPropsObj),
13
+ 'DshSelect-radioGroup-scroll': selfPropsObj._span < 24 && !selfPropsObj._br
14
+ }"
15
+ v-model="value[controlKey]"
16
+ :type="radioGroupType"
17
+ @on-change="change"
18
+ >
19
+ <template v-if="listData.length">
20
+ <Radio
21
+ v-for="(item, index) in listData"
22
+ :key="index"
23
+ :class="getColorClass(item.color)"
24
+ :style="{
25
+ backgroundColor: selfPropsObj._useColor ? getBgColor(item.color) : undefined,
26
+ color:selfPropsObj._useColor ? getColor(item.color) : undefined,
27
+ }"
28
+ :label="item._key"
29
+ :disabled="item._disabled || !finalCanEdit"
30
+ :border="selfPropsObj._useColor"
31
+ @click.native="cancelSelect(item)"
32
+ >
33
+ <span @click.stop="clickOpenTip(item)">
34
+ {{ item.name || item._name }}
35
+ </span>
36
+ </Radio>
37
+
38
+ </template>
39
+
40
+ <div
41
+ v-else
42
+ class="dsh-subtip"
43
+ style="backgroundColor: #f3f3f3;"
44
+ >-- 无选择项 --</div>
45
+ </RadioGroup>
46
+
47
+ <!-- 下拉 -->
48
+ <Select
49
+ v-else
50
+ v-model="value[controlKey]"
51
+ :class="{
52
+ 'DshSelect-select-readonly': $isReadonly(canEdit, selfPropsObj),
53
+ 'DshSelect-select-disabled': $isDisabled(canEdit, selfPropsObj)
54
+ }"
55
+ :placeholder="selfPropsObj._placeholder"
56
+ :multiple="selfPropsObj._multiple"
57
+ :disabled="!finalCanEdit"
58
+ :clearable="selfPropsObj._clearable"
59
+ :filterable="selfPropsObj._filterable"
60
+ :size="selfPropsObj._size"
61
+ :transfer="selfPropsObj._transfer"
62
+ :transfer-class-name="selfPropsObj._transferClassName"
63
+ @on-change="change"
64
+ >
65
+ <!-- </Option>必须和输出内容在一行,否则出现空格导致_filterable出bug -->
66
+ <Option
67
+ v-for="(item, index) in listData"
68
+ :key="index"
69
+ :value="item._key"
70
+ :disabled="item._disabled || !finalCanEdit"
71
+ >
72
+ <Icon
73
+ v-if="item.icon || item.customIcon"
74
+ :type="item.icon"
75
+ :custom="item.customIcon ? `bico-font ${item.customIcon}` : undefined"
76
+ :color="item.color"
77
+ :size="item.size || 20"
78
+ />{{ item.name || item._name }}
79
+ </Option>
80
+ </Select>
81
+ </template>
82
+
83
+ <Ctooltip
84
+ v-else
85
+ :class="commonClass"
86
+ :content="valStr"
87
+ maxWidth="200"
88
+ placement="top"
89
+ :transfer="true"
90
+ >
91
+ <div
92
+ v-if="curSelectItem"
93
+ class="DshCheckbox-value-wrapper"
94
+ >
95
+ <span
96
+ class="DshCheckbox-value hb-show-color-text dsh-ellipsis"
97
+ :style="{
98
+ background: selfPropsObj._useColor ? getBgColor(curSelectItem.color, 0.1) : '',
99
+ color: selfPropsObj._useColor ? getColor(curSelectItem.color) : ''
100
+ }"
101
+ >{{ showVal }}</span>
102
+ </div>
103
+ <div
104
+ v-else
105
+ class="hb-nodata-text dsh-ellipsis"
106
+ >
107
+ <span>暂无内容</span>
108
+ </div>
109
+ </Ctooltip>
110
+
111
+ <!-- tip项弹框提示 -->
112
+ <dsh-render :render="tipModalRender"></dsh-render>
113
+ </div>
114
+ </template>
115
+
116
+ <script>
117
+ import controlMixin from "../controlMixin.js";
118
+ import selectMixin from "./selectMixin.js";
119
+ import { resourceData } from "../../../datas/index.js";
120
+
121
+ export default {
122
+ name: "DshSelect",
123
+ mixins: [controlMixin, selectMixin],
124
+ props: {},
125
+ data () {
126
+ return {
127
+ flag: false,
128
+ initListData: [],
129
+ getBgColor: color => {
130
+ let curColor = this.colorMap[color] || this.colorMap["color-1"];
131
+ return this.$getColor(curColor, 0.1);
132
+ },
133
+ getColor: color => {
134
+ return this.colorMap[color] || this.colorMap["color-1"];
135
+ },
136
+ getColorClass: color => {
137
+ return this.colorMap[color] ? color : "color-1";
138
+ }
139
+ };
140
+ },
141
+ computed: {
142
+ selfPropsObj () {
143
+ return {
144
+ _filterable: true,
145
+ _transfer: true,
146
+ _data: [],
147
+
148
+ ...this.propsObj,
149
+ ...this.commonDealPropsObj
150
+ };
151
+ },
152
+ showType () {
153
+ return this.selfPropsObj._optionKind;
154
+ },
155
+ radioGroupType () {
156
+ return this.showType === "button" ? "button" : undefined;
157
+ },
158
+ colorMap () {
159
+ return this.selfPropsObj.colorMap || resourceData.colorMap;
160
+ },
161
+
162
+ listData () {
163
+ const listData = (this.selfPropsObj._data || []).concat(this.initListData);
164
+ if (this.$dataType(this.selfPropsObj._filterFunc, "function")) {
165
+ return this.selfPropsObj._filterFunc(listData, this.selfPropsObj, this.value);
166
+ } else {
167
+ return listData;
168
+ }
169
+ },
170
+ curSelectItem () {
171
+ return this.listData.find(item => item._key === this.value[this.controlKey]);
172
+ },
173
+ valStr () {
174
+ return this.curSelectItem
175
+ ? this.curSelectItem.name || this.curSelectItem._name
176
+ : "";
177
+ },
178
+ showVal () {
179
+ return this.valStr;
180
+ }
181
+ },
182
+ created () {
183
+ this.initData();
184
+ },
185
+ methods: {
186
+ initData () {
187
+ if (this.selfPropsObj._customData && this.selfPropsObj._customData.length) {
188
+ this.selfPropsObj._customData.forEach(item => {
189
+ this.getListData(item);
190
+ });
191
+ }
192
+ },
193
+ getListData (_customData) {
194
+ this.$https({
195
+ url: _customData.url,
196
+ params: {
197
+ ..._customData.params
198
+ },
199
+ callback: data => {
200
+ this.initListData.push(...data.list.map(item => (
201
+ {
202
+ _key: item[_customData._key || "_key"],
203
+ name: item[_customData._name || "name"]
204
+ }
205
+ )));
206
+ }
207
+ });
208
+ },
209
+ // 取消flat模式的选择项
210
+ cancelSelect (item) {
211
+ if (item._disabled !== true && this.selfPropsObj._clearable !== false) {
212
+ if (item._key === this.value[this.controlKey]) {
213
+ this.value[this.controlKey] = "";
214
+
215
+ this.change();
216
+ }
217
+ }
218
+
219
+ this.clickOpenTip(item);
220
+ },
221
+ change (...params) {
222
+ // 修复clear后值为undefined,数据库不更新数据bug
223
+ if (this.value[this.controlKey] == undefined) {
224
+ this.value[this.controlKey] = "";
225
+ }
226
+
227
+ this.$emit("change", this.value[this.controlKey]);
228
+ }
229
+ }
230
+ };
231
+ </script>
@@ -0,0 +1,112 @@
1
+ <template>
2
+ <div
3
+ class="DshSwitch ycFormItem"
4
+ :class="`control-${mode}`"
5
+ :style="{ textAlign: propsObj._textAlign, width: '100%' }"
6
+ >
7
+ <!-- 组件无clearable -->
8
+ <i-switch
9
+ v-if="finalCanEdit"
10
+ v-model="value[propsObj._key]"
11
+ :size="propsObj._size"
12
+ :disabled="!finalCanEdit"
13
+ @on-change="change"
14
+ >
15
+ <span
16
+ slot="open"
17
+ style="font-size: 12px;"
18
+ >{{ propsObj._openText }}</span>
19
+ <span slot="close">{{ propsObj._closeText }}</span>
20
+ </i-switch>
21
+ <!-- 查看 和 编辑下无编辑权限 -->
22
+ <Ctooltip
23
+ v-else
24
+ placement="top"
25
+ :transfer="true"
26
+ maxWidth="200"
27
+ :content="showVal"
28
+ >
29
+ <!-- <span class="dsh-ellipsis" :class="`control-${mode}-text`">
30
+ {{ showVal }}
31
+ </span> -->
32
+ <div
33
+ class="DshCheckbox-value-wrapper"
34
+ :style="{
35
+ textAlign: propsObj._textAlign,
36
+ flexGrow: 1,
37
+ display: 'flex',
38
+ justifyContent: getFlexLayout(propsObj._textAlign)
39
+ }"
40
+ >
41
+ <span
42
+ class="DshCheckbox-value hb-show-color-text dsh-ellipsis"
43
+ :style="{
44
+ background: value[controlKey] ? '#ECF3FD' : '#FEF6EB',
45
+ color: value[controlKey] ? '#3D84EE' : '#F4A135'
46
+ }"
47
+ >{{ showVal }}</span>
48
+ </div>
49
+ </Ctooltip>
50
+ </div>
51
+ </template>
52
+
53
+ <script>
54
+ import controlMixin from "../controlMixin.js";
55
+
56
+ export default {
57
+ name: "DshSwitch",
58
+ mixins: [controlMixin],
59
+ data () {
60
+ return {};
61
+ },
62
+ computed: {
63
+ showVal () {
64
+ return this.value[this.controlKey]
65
+ ? this.propsObj._openText
66
+ : this.propsObj._closeText;
67
+ }
68
+ },
69
+ created () {
70
+ },
71
+ methods: {
72
+ getFlexLayout (align) {
73
+ let map = {
74
+ left: "flex-start",
75
+ center: "center",
76
+ right: "flex-end"
77
+ };
78
+ if (align) {
79
+ return map[align];
80
+ } else {
81
+ return "flex-start";
82
+ }
83
+ }
84
+ }
85
+ };
86
+ </script>
87
+
88
+ <style lang="less" scoped>
89
+ .DshSwitch {
90
+
91
+ }
92
+ </style>
93
+ <style lang="less">
94
+ .DshSwitch {
95
+ .ivu-switch {
96
+ width: 50px;
97
+ }
98
+ .ivu-switch-checked:after {
99
+ left: 29px;
100
+ }
101
+ .ivu-switch-inner {
102
+ color: #fff;
103
+ font-size: 12px;
104
+ position: absolute;
105
+ left: auto;
106
+ right: 4px;
107
+ }
108
+ .ivu-switch-checked .ivu-switch-inner {
109
+ left: 3px;
110
+ }
111
+ }
112
+ </style>
@@ -0,0 +1,39 @@
1
+ <template>
2
+ <div class="DshUndeveloped">
3
+ {{ tipText }}
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ import controlMixin from "../controlMixin.js";
9
+
10
+ export default {
11
+ name: "DshUndeveloped",
12
+ mixins: [controlMixin],
13
+ props: {},
14
+ data () {
15
+ return {};
16
+ },
17
+ computed: {
18
+ controlKey () {
19
+ return this.propsObj.__realKey__ || this.propsObj._key;
20
+ },
21
+ tipText () {
22
+ return this.propsObj.__realKey__
23
+ ? `"${this.controlKey}"字段已被删除`
24
+ : this.propsObj._type
25
+ ? `"${this.controlKey}"字段的${this.propsObj._type}类型暂未开发`
26
+ : `"${this.controlKey}"字段已被删除(或字段的_type丢失,此概率很小)`;
27
+
28
+ }
29
+ },
30
+ created () {},
31
+ methods: {}
32
+ };
33
+ </script>
34
+
35
+ <style lang="less">
36
+ .DshUndeveloped {
37
+ width: 100%;
38
+ }
39
+ </style>
@@ -0,0 +1,37 @@
1
+ <template>
2
+ <div class="YSerialNumber">
3
+ <dsh-input
4
+ :mode="canEdit ? 'default' : mode"
5
+ :value="value"
6
+ :propsObj="propsObj"
7
+ :canEdit="false"
8
+ ></dsh-input>
9
+ </div>
10
+ </template>
11
+
12
+ <script>
13
+ import controlMixin from "../controlMixin.js";
14
+
15
+ export default {
16
+ name: "YSerialNumber",
17
+ mixins: [controlMixin],
18
+ props: {},
19
+ data () {
20
+ return {};
21
+ },
22
+ computed: {},
23
+ created () {},
24
+ methods: {}
25
+ };
26
+ </script>
27
+
28
+ <style lang="less" scoped>
29
+ .YSerialNumber {
30
+ width: 100%;
31
+ }
32
+ </style>
33
+ <style lang="less">
34
+ .YSerialNumber {
35
+
36
+ }
37
+ </style>
@@ -0,0 +1,228 @@
1
+ <template>
2
+ <div class="YUploadImage">
3
+ <div class="YUploadImage-set" ref="viewerImage">
4
+ <div
5
+ v-if="value[propsObj._key] || propsObj._default || percent"
6
+ :class="['YUploadImage-set-img', isAvatar ? 'YUploadImage-set-avatar' : '']"
7
+ :style="{
8
+ backgroundImage: `url(${$imageResize(value[propsObj._key] || propsObj._default, imageResizeConfig)})`,
9
+ borderRadius: propsObj.radius ? '50%' : ''
10
+ }"
11
+ >
12
+ <img :data-original="value[propsObj._key]" style="display:none">
13
+ <div v-if="value[propsObj._key] && propsObj._canAction" class="YUploadImage-set-action">
14
+ <Icon class="YUploadImage-set-img-action" type="ios-eye-outline" size="16" @click.native="handlePreview"></Icon>
15
+ <Icon class="YUploadImage-set-img-action" type="ios-trash-outline" size="16" @click.native="handleRemove"></Icon>
16
+ </div>
17
+ <!-- 上传进度 -->
18
+ <div v-if="percent" class="YUploadImage-set-img-circle">
19
+ <i-circle
20
+ class="circle"
21
+ :percent="percent"
22
+ :stroke-color="percentColor"
23
+ >
24
+ <Icon v-if="percent == 100" type="ios-checkmark"></Icon>
25
+ <span v-else>{{ percent }}%</span>
26
+ </i-circle>
27
+ </div>
28
+
29
+ </div>
30
+ <div class="wrap">
31
+ <Button type="default" class="btn-cancel-outline z-default">点击上传</Button>
32
+ <input id="fileupload" class="file" :type="inputType" @change="setImage" />
33
+ </div>
34
+ </div>
35
+
36
+ <!-- 修改头像模态框 -->
37
+ <Modal
38
+ :title="propsObj._title || '修改头像'"
39
+ v-model="avatarModal"
40
+ class="bri-modal"
41
+ width="500"
42
+ :mask-closable="false"
43
+ :footer-hide="true"
44
+ @on-visible-change="visibleChange"
45
+ >
46
+ <div class="avatar-modal" style="width:400px;margin: 0 auto;">
47
+ <dsh-cropper
48
+ style="width: 400px;height: 400px;"
49
+ ref="cropper"
50
+ :src="imgSrc"
51
+ alt="Source Image"
52
+ :cropmove="cropImage"
53
+ >
54
+ </dsh-cropper>
55
+ <div class="avatar-modal-footer bri-footer">
56
+ <Button @click="cancelAvatarModal()">取消</Button>
57
+ <Button type="primary" @click="photoSubmit()">保存</Button>
58
+ </div>
59
+ </div>
60
+ </Modal>
61
+ </div>
62
+ </template>
63
+
64
+ <script>
65
+ import uploadMixin from "./uploadMixin.js";
66
+ import Viewer from "viewerjs";
67
+
68
+ export default {
69
+ name: "YUploadImage",
70
+ mixins: [uploadMixin],
71
+ components: {},
72
+ props: {
73
+ value: Object,
74
+ propsObj: Object,
75
+ requestOssType: { // 上传的是阿里云还是本地
76
+ type: String,
77
+ default: "default"
78
+ },
79
+ isAvatar: {
80
+ type: Boolean,
81
+ default: false
82
+ }
83
+ },
84
+ data () {
85
+ return {
86
+ // 头像
87
+ avatarModal: false,
88
+ inputType: "file",
89
+ imgSrc: "",
90
+ cropImg: ""
91
+ };
92
+ },
93
+ computed: {
94
+ imageResizeConfig () {
95
+ return this.propsObj._imageResizeConfig || {
96
+ m: "fixed",
97
+ w: 100,
98
+ h: 100
99
+ };
100
+ },
101
+ finalRequestOssType () {
102
+ return this.propsObj._requestOssType || this.requestOssType || "default";
103
+ }
104
+ },
105
+ created () {
106
+ },
107
+ methods: {
108
+ // 打开修改头像
109
+ openAvatar () {
110
+ this.avatarModal = true;
111
+ },
112
+ // 关闭修改头像
113
+ cancelAvatarModal () {
114
+ this.avatarModal = false;
115
+ // this.inputType = "file";
116
+ },
117
+ // 头像模态框状态变化,关闭后改变input框类型,保证上传能够连续上传同一张图片
118
+ visibleChange (bool) {
119
+ if (!bool) {
120
+ this.inputType = "file";
121
+ }
122
+ },
123
+ setImage (e) {
124
+ if (e.target.files.length != 0) {
125
+ const file = e.target.files[0];
126
+ if (!file.type.includes("image/")) {
127
+ this.$Message.error("请选择一张图片");
128
+ return;
129
+ }
130
+ if (typeof FileReader === "function") {
131
+ const reader = new FileReader();
132
+ if (this.propsObj._kind == "uploadImage") {
133
+ reader.onload = (event) => {
134
+ let data = event.target.result;
135
+ this.inputType = "text";
136
+ if (this.finalRequestOssType === "local") {
137
+ // base64转文件
138
+ const imgFile = this.dataURLtoFile(data, "");
139
+ this.handlePost(imgFile);
140
+ } else {
141
+ data = data.split(",")[1];
142
+ let dataBuffer = Buffer.from(data, "base64");
143
+ this.handlePost(dataBuffer);
144
+ }
145
+ };
146
+ reader.readAsDataURL(file);
147
+ } else {
148
+ reader.onload = (event) => {
149
+ this.imgSrc = event.target.result;
150
+ // rebuild cropperjs with the updated source
151
+ this.$refs.cropper.replace(event.target.result);
152
+ this.inputType = "text";
153
+ };
154
+ reader.readAsDataURL(file);
155
+ this.avatarModal = true;
156
+ }
157
+ } else {
158
+ alert("Sorry, FileReader API not supported");
159
+ }
160
+ }
161
+ },
162
+ cropImage () {
163
+ // get image data for post processing, e.g. upload or setting image src
164
+ this.cropImg = this.$refs.cropper.getCroppedCanvas().toDataURL();
165
+ },
166
+ // 获取裁剪后的图片,转成file
167
+ photoSubmit () {
168
+ this.cropImg = this.$refs.cropper.getCroppedCanvas().toDataURL();
169
+ if (this.finalRequestOssType === "local") {
170
+ // base64转文件
171
+ const imgFile = this.dataURLtoFile(this.cropImg, "");
172
+ this.handlePost(imgFile);
173
+ } else {
174
+ let data = this.cropImg;
175
+ data = data.split(",")[1];
176
+
177
+ let dataBuffer = Buffer.from(data, "base64");
178
+ this.handlePost(dataBuffer);
179
+ }
180
+
181
+ this.cancelAvatarModal();
182
+ },
183
+ // 将图片Base64 转成文件
184
+ dataURLtoFile (dataurl, filename) {
185
+ // 获取文件扩展名称
186
+ let arr = dataurl.split(",");
187
+ let mime = arr[0].match(/:(.*?);/)[1];
188
+ let extension = mime.split("/")[1];
189
+ let bstr = atob(arr[1]);
190
+ let n = bstr.length;
191
+ let u8arr = new Uint8Array(n);
192
+ while (n--) {
193
+ u8arr[n] = bstr.charCodeAt(n);
194
+ }
195
+ return new File([u8arr], `${filename}.${extension}`, {type: mime});
196
+ },
197
+ handleSuccess (response, res) {
198
+ this.value[this.propsObj._key] = res.data.downloadUrl;
199
+ this.$emit("change", res);
200
+ },
201
+ handleError (err) {
202
+ alert(err);
203
+ },
204
+ // 点击文件预览
205
+ handlePreview (file) {
206
+ let viewerImage = this.$refs.viewerImage;
207
+ let viewer = new Viewer(viewerImage, {
208
+ url: "data-original",
209
+ hidden: function () {
210
+ viewer.destroy();
211
+ },
212
+ loop: false,
213
+ zIndex: 2147483647
214
+ });
215
+ viewer.show();
216
+ },
217
+ // 点击文件删除 - fileList服务器的数据列表
218
+ handleRemove (file) {
219
+ this.inputType = "file"; // 删除后可以重新上传
220
+ this.value[this.propsObj._key] = "";
221
+ this.change(this.value);
222
+ },
223
+ change (...params) {
224
+ this.$emit("change", ...params);
225
+ }
226
+ }
227
+ };
228
+ </script>