lshcom 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 (309) hide show
  1. package/README.md +31 -0
  2. package/package.json +14 -0
  3. package/src/assets/Porsche/iconfont.css +19 -0
  4. package/src/assets/Porsche/iconfont.eot +0 -0
  5. package/src/assets/Porsche/iconfont.js +1 -0
  6. package/src/assets/Porsche/iconfont.svg +36 -0
  7. package/src/assets/Porsche/iconfont.ttf +0 -0
  8. package/src/assets/Porsche/iconfont.woff +0 -0
  9. package/src/assets/cluemanagement/demo.css +539 -0
  10. package/src/assets/cluemanagement/demo_index.html +207 -0
  11. package/src/assets/cluemanagement/iconfont.css +17 -0
  12. package/src/assets/cluemanagement/iconfont.js +1 -0
  13. package/src/assets/cluemanagement/iconfont.json +16 -0
  14. package/src/assets/cluemanagement/iconfont.ttf +0 -0
  15. package/src/assets/css/_bootstrap-variables.scss +108 -0
  16. package/src/assets/css/_core-variables.scss +1 -0
  17. package/src/assets/css/_custom.scss +4 -0
  18. package/src/assets/css/bootstrap/_alert.scss +48 -0
  19. package/src/assets/css/bootstrap/_badge.scss +48 -0
  20. package/src/assets/css/bootstrap/_breadcrumb.scss +38 -0
  21. package/src/assets/css/bootstrap/_button-group.scss +198 -0
  22. package/src/assets/css/bootstrap/_buttons.scss +141 -0
  23. package/src/assets/css/bootstrap/_card.scss +223 -0
  24. package/src/assets/css/bootstrap/_carousel.scss +185 -0
  25. package/src/assets/css/bootstrap/_close.scss +29 -0
  26. package/src/assets/css/bootstrap/_code.scss +64 -0
  27. package/src/assets/css/bootstrap/_custom-forms.scss +254 -0
  28. package/src/assets/css/bootstrap/_dropdown.scss +128 -0
  29. package/src/assets/css/bootstrap/_forms.scss +390 -0
  30. package/src/assets/css/bootstrap/_functions.scss +90 -0
  31. package/src/assets/css/bootstrap/_grid.scss +53 -0
  32. package/src/assets/css/bootstrap/_images.scss +43 -0
  33. package/src/assets/css/bootstrap/_input-group.scss +176 -0
  34. package/src/assets/css/bootstrap/_jumbotron.scss +16 -0
  35. package/src/assets/css/bootstrap/_list-group.scss +114 -0
  36. package/src/assets/css/bootstrap/_media.scss +8 -0
  37. package/src/assets/css/bootstrap/_mixins.scss +41 -0
  38. package/src/assets/css/bootstrap/_modal.scss +142 -0
  39. package/src/assets/css/bootstrap/_nav.scss +120 -0
  40. package/src/assets/css/bootstrap/_navbar.scss +284 -0
  41. package/src/assets/css/bootstrap/_pagination.scss +66 -0
  42. package/src/assets/css/bootstrap/_popover.scss +195 -0
  43. package/src/assets/css/bootstrap/_print.scss +111 -0
  44. package/src/assets/css/bootstrap/_progress.scss +32 -0
  45. package/src/assets/css/bootstrap/_reboot.scss +481 -0
  46. package/src/assets/css/bootstrap/_tables.scss +142 -0
  47. package/src/assets/css/bootstrap/_tooltip.scss +107 -0
  48. package/src/assets/css/bootstrap/_transitions.scss +34 -0
  49. package/src/assets/css/bootstrap/_type.scss +123 -0
  50. package/src/assets/css/bootstrap/_utilities.scss +14 -0
  51. package/src/assets/css/bootstrap/_variables.scss +636 -0
  52. package/src/assets/css/bootstrap/bootstrap-grid.scss +37 -0
  53. package/src/assets/css/bootstrap/bootstrap-reboot.scss +9 -0
  54. package/src/assets/css/bootstrap/bootstrap.scss +48 -0
  55. package/src/assets/css/bootstrap/mixins/_alert.scss +13 -0
  56. package/src/assets/css/bootstrap/mixins/_background-variant.scss +12 -0
  57. package/src/assets/css/bootstrap/mixins/_badge.scss +12 -0
  58. package/src/assets/css/bootstrap/mixins/_border-radius.scss +35 -0
  59. package/src/assets/css/bootstrap/mixins/_box-shadow.scss +5 -0
  60. package/src/assets/css/bootstrap/mixins/_breakpoints.scss +105 -0
  61. package/src/assets/css/bootstrap/mixins/_buttons.scss +83 -0
  62. package/src/assets/css/bootstrap/mixins/_clearfix.scss +7 -0
  63. package/src/assets/css/bootstrap/mixins/_float.scss +9 -0
  64. package/src/assets/css/bootstrap/mixins/_forms.scss +81 -0
  65. package/src/assets/css/bootstrap/mixins/_gradients.scss +37 -0
  66. package/src/assets/css/bootstrap/mixins/_grid-framework.scss +56 -0
  67. package/src/assets/css/bootstrap/mixins/_grid.scss +47 -0
  68. package/src/assets/css/bootstrap/mixins/_hover.scss +60 -0
  69. package/src/assets/css/bootstrap/mixins/_image.scss +36 -0
  70. package/src/assets/css/bootstrap/mixins/_list-group.scss +26 -0
  71. package/src/assets/css/bootstrap/mixins/_lists.scss +7 -0
  72. package/src/assets/css/bootstrap/mixins/_nav-divider.scss +10 -0
  73. package/src/assets/css/bootstrap/mixins/_navbar-align.scss +9 -0
  74. package/src/assets/css/bootstrap/mixins/_pagination.scss +22 -0
  75. package/src/assets/css/bootstrap/mixins/_reset-text.scss +18 -0
  76. package/src/assets/css/bootstrap/mixins/_resize.scss +6 -0
  77. package/src/assets/css/bootstrap/mixins/_screen-reader.scss +35 -0
  78. package/src/assets/css/bootstrap/mixins/_size.scss +6 -0
  79. package/src/assets/css/bootstrap/mixins/_table-row.scss +30 -0
  80. package/src/assets/css/bootstrap/mixins/_text-emphasis.scss +12 -0
  81. package/src/assets/css/bootstrap/mixins/_text-hide.scss +8 -0
  82. package/src/assets/css/bootstrap/mixins/_text-truncate.scss +8 -0
  83. package/src/assets/css/bootstrap/mixins/_transition.scss +9 -0
  84. package/src/assets/css/bootstrap/mixins/_visibility.scss +5 -0
  85. package/src/assets/css/bootstrap/utilities/_align.scss +6 -0
  86. package/src/assets/css/bootstrap/utilities/_background.scss +6 -0
  87. package/src/assets/css/bootstrap/utilities/_borders.scss +52 -0
  88. package/src/assets/css/bootstrap/utilities/_clearfix.scss +3 -0
  89. package/src/assets/css/bootstrap/utilities/_display.scss +53 -0
  90. package/src/assets/css/bootstrap/utilities/_embed.scss +52 -0
  91. package/src/assets/css/bootstrap/utilities/_flex.scss +44 -0
  92. package/src/assets/css/bootstrap/utilities/_float.scss +9 -0
  93. package/src/assets/css/bootstrap/utilities/_position.scss +25 -0
  94. package/src/assets/css/bootstrap/utilities/_screenreaders.scss +11 -0
  95. package/src/assets/css/bootstrap/utilities/_sizing.scss +10 -0
  96. package/src/assets/css/bootstrap/utilities/_spacing.scss +41 -0
  97. package/src/assets/css/bootstrap/utilities/_text.scss +49 -0
  98. package/src/assets/css/bootstrap/utilities/_visibility.scss +11 -0
  99. package/src/assets/css/core/_animate.scss +44 -0
  100. package/src/assets/css/core/_aside.scss +64 -0
  101. package/src/assets/css/core/_avatars.scss +51 -0
  102. package/src/assets/css/core/_badge.scss +3 -0
  103. package/src/assets/css/core/_breadcrumb-menu.scss +35 -0
  104. package/src/assets/css/core/_breadcrumb.scss +6 -0
  105. package/src/assets/css/core/_buttons.scss +575 -0
  106. package/src/assets/css/core/_callout.scss +55 -0
  107. package/src/assets/css/core/_card.scss +191 -0
  108. package/src/assets/css/core/_charts.scss +9 -0
  109. package/src/assets/css/core/_dropdown.scss +69 -0
  110. package/src/assets/css/core/_footer.scss +8 -0
  111. package/src/assets/css/core/_grid.scss +15 -0
  112. package/src/assets/css/core/_input-group.scss +6 -0
  113. package/src/assets/css/core/_input.scss +26 -0
  114. package/src/assets/css/core/_layout.scss +397 -0
  115. package/src/assets/css/core/_loading.scss +128 -0
  116. package/src/assets/css/core/_mixins.scss +116 -0
  117. package/src/assets/css/core/_mobile.scss +0 -0
  118. package/src/assets/css/core/_modal.scss +16 -0
  119. package/src/assets/css/core/_nav.scss +32 -0
  120. package/src/assets/css/core/_navbar.scss +106 -0
  121. package/src/assets/css/core/_others.scss +4 -0
  122. package/src/assets/css/core/_progress.scss +15 -0
  123. package/src/assets/css/core/_rtl.scss +267 -0
  124. package/src/assets/css/core/_sidebar.scss +426 -0
  125. package/src/assets/css/core/_switches.scss +301 -0
  126. package/src/assets/css/core/_tables.scss +72 -0
  127. package/src/assets/css/core/_temp.scss +47 -0
  128. package/src/assets/css/core/_typography.scss +36 -0
  129. package/src/assets/css/core/_utilities.scss +3 -0
  130. package/src/assets/css/core/_variables.scss +174 -0
  131. package/src/assets/css/core/_widgets.scss +253 -0
  132. package/src/assets/css/core/core.scss +40 -0
  133. package/src/assets/css/core/utilities/_background.scss +8 -0
  134. package/src/assets/css/core/utilities/_borders.scss +18 -0
  135. package/src/assets/css/core/utilities/_display.scss +18 -0
  136. package/src/assets/css/iconfont.css +85 -0
  137. package/src/assets/css/loading.css +18 -0
  138. package/src/assets/css/main.scss +15 -0
  139. package/src/assets/css/themes/default.scss +518 -0
  140. package/src/assets/css/themes/first.css +25 -0
  141. package/src/assets/css/vendors/_vendors.scss +1 -0
  142. package/src/assets/css/vendors/chart.js/chart.scss +45 -0
  143. package/src/assets/financial/demo.css +539 -0
  144. package/src/assets/financial/demo_index.html +230 -0
  145. package/src/assets/financial/iconfont.css +21 -0
  146. package/src/assets/financial/iconfont.js +1 -0
  147. package/src/assets/financial/iconfont.json +23 -0
  148. package/src/assets/financial/iconfont.ttf +0 -0
  149. package/src/assets/font_jipan/demo.css +539 -0
  150. package/src/assets/font_jipan/demo_index.html +211 -0
  151. package/src/assets/font_jipan/iconfont.css +19 -0
  152. package/src/assets/font_jipan/iconfont.js +1 -0
  153. package/src/assets/font_jipan/iconfont.json +16 -0
  154. package/src/assets/font_jipan/iconfont.ttf +0 -0
  155. package/src/assets/font_jipan/iconfont.woff +0 -0
  156. package/src/assets/font_jipan/iconfont.woff2 +0 -0
  157. package/src/assets/fontgift/demo.css +539 -0
  158. package/src/assets/fontgift/demo_index.html +207 -0
  159. package/src/assets/fontgift/iconfont.css +17 -0
  160. package/src/assets/fontgift/iconfont.js +1 -0
  161. package/src/assets/fontgift/iconfont.json +16 -0
  162. package/src/assets/fontgift/iconfont.ttf +0 -0
  163. package/src/assets/fonts/iconfont.eot +0 -0
  164. package/src/assets/fonts/iconfont.svg +79 -0
  165. package/src/assets/fonts/iconfont.ttf +0 -0
  166. package/src/assets/fonts/iconfont.woff +0 -0
  167. package/src/assets/img/1.jpg +0 -0
  168. package/src/assets/img/2.jpg +0 -0
  169. package/src/assets/img/404.jpg +0 -0
  170. package/src/assets/img/A01-Line.png +0 -0
  171. package/src/assets/img/A01.png +0 -0
  172. package/src/assets/img/W02-Line.png +0 -0
  173. package/src/assets/img/W02.png +0 -0
  174. package/src/assets/img/arrow-left.png +0 -0
  175. package/src/assets/img/arrow-right.png +0 -0
  176. package/src/assets/img/borad-check.png +0 -0
  177. package/src/assets/img/call-conference-end.png +0 -0
  178. package/src/assets/img/call-conference.png +0 -0
  179. package/src/assets/img/call-consult-end.png +0 -0
  180. package/src/assets/img/call-consult-out.png +0 -0
  181. package/src/assets/img/call-consult.png +0 -0
  182. package/src/assets/img/call-expansion-menu.png +0 -0
  183. package/src/assets/img/call-expansion.png +0 -0
  184. package/src/assets/img/call-hang-up.png +0 -0
  185. package/src/assets/img/call-hold.png +0 -0
  186. package/src/assets/img/call-holding.png +0 -0
  187. package/src/assets/img/call-shrink-menu.png +0 -0
  188. package/src/assets/img/call-shrink.png +0 -0
  189. package/src/assets/img/call-transfer-end.png +0 -0
  190. package/src/assets/img/call-transfer.png +0 -0
  191. package/src/assets/img/call.png +0 -0
  192. package/src/assets/img/cancle-keep.png +0 -0
  193. package/src/assets/img/card.png +0 -0
  194. package/src/assets/img/cash.png +0 -0
  195. package/src/assets/img/customer-portrayal-blue.png +0 -0
  196. package/src/assets/img/customer-portrayal-white.png +0 -0
  197. package/src/assets/img/error.png +0 -0
  198. package/src/assets/img/iris.png +0 -0
  199. package/src/assets/img/left-kuang.png +0 -0
  200. package/src/assets/img/lockimg.png +0 -0
  201. package/src/assets/img/offLine.png +0 -0
  202. package/src/assets/img/success.png +0 -0
  203. package/src/assets/img/tishi.png +0 -0
  204. package/src/assets/img/userimg.png +0 -0
  205. package/src/assets/iocnfont/AI/demo.css +539 -0
  206. package/src/assets/iocnfont/AI/demo_index.html +211 -0
  207. package/src/assets/iocnfont/AI/iconfont.css +19 -0
  208. package/src/assets/iocnfont/AI/iconfont.js +1 -0
  209. package/src/assets/iocnfont/AI/iconfont.json +16 -0
  210. package/src/assets/iocnfont/AI/iconfont.ttf +0 -0
  211. package/src/assets/iocnfont/AI/iconfont.woff +0 -0
  212. package/src/assets/iocnfont/AI/iconfont.woff2 +0 -0
  213. package/src/assets/iocnfont/add/demo.css +539 -0
  214. package/src/assets/iocnfont/add/demo_index.html +212 -0
  215. package/src/assets/iocnfont/add/iconfont.css +20 -0
  216. package/src/assets/iocnfont/add/iconfont.js +1 -0
  217. package/src/assets/iocnfont/add/iconfont.json +16 -0
  218. package/src/assets/iocnfont/add/iconfont.svg +21 -0
  219. package/src/assets/iocnfont/add/iconfont.ttf +0 -0
  220. package/src/assets/iocnfont/add/iconfont.woff +0 -0
  221. package/src/assets/iocnfont/add/iconfont.woff2 +0 -0
  222. package/src/assets/iocnfont/addsf/demo.css +539 -0
  223. package/src/assets/iocnfont/addsf/demo_index.html +506 -0
  224. package/src/assets/iocnfont/addsf/iconfont.css +69 -0
  225. package/src/assets/iocnfont/addsf/iconfont.js +1 -0
  226. package/src/assets/iocnfont/addsf/iconfont.json +107 -0
  227. package/src/assets/iocnfont/addsf/iconfont.ttf +0 -0
  228. package/src/assets/iocnfont/arrow/demo.css +370 -0
  229. package/src/assets/iocnfont/arrow/demo_fontclass.html +58 -0
  230. package/src/assets/iocnfont/arrow/demo_symbol.html +87 -0
  231. package/src/assets/iocnfont/arrow/demo_unicode.html +96 -0
  232. package/src/assets/iocnfont/arrow/iconfont.css +36 -0
  233. package/src/assets/iocnfont/arrow/iconfont.eot +0 -0
  234. package/src/assets/iocnfont/arrow/iconfont.js +1 -0
  235. package/src/assets/iocnfont/arrow/iconfont.svg +35 -0
  236. package/src/assets/iocnfont/arrow/iconfont.ttf +0 -0
  237. package/src/assets/iocnfont/arrow/iconfont.woff +0 -0
  238. package/src/assets/iocnfont/company/demo.css +539 -0
  239. package/src/assets/iocnfont/company/demo_index.html +253 -0
  240. package/src/assets/iocnfont/company/iconfont.css +24 -0
  241. package/src/assets/iocnfont/company/iconfont.js +1 -0
  242. package/src/assets/iocnfont/company/iconfont.json +30 -0
  243. package/src/assets/iocnfont/company/iconfont.ttf +0 -0
  244. package/src/assets/iocnfont/iconfont-otr/iconfont.css +39 -0
  245. package/src/assets/iocnfont/iconfont-otr/iconfont.eot +0 -0
  246. package/src/assets/iocnfont/iconfont-otr/iconfont.js +1 -0
  247. package/src/assets/iocnfont/iconfont-otr/iconfont.json +23 -0
  248. package/src/assets/iocnfont/iconfont-otr/iconfont.svg +14 -0
  249. package/src/assets/iocnfont/iconfont-otr/iconfont.ttf +0 -0
  250. package/src/assets/iocnfont/iconfont-otr/iconfont.woff +0 -0
  251. package/src/assets/iocnfont/iconfont.css +89 -0
  252. package/src/assets/iocnfont/iconfont.eot +0 -0
  253. package/src/assets/iocnfont/iconfont.js +1 -0
  254. package/src/assets/iocnfont/iconfont.svg +134 -0
  255. package/src/assets/iocnfont/iconfont.ttf +0 -0
  256. package/src/assets/iocnfont/iconfont.woff +0 -0
  257. package/src/assets/iocnfont/vehicle/iconfont.css +31 -0
  258. package/src/assets/iocnfont/vehicle/iconfont.eot +0 -0
  259. package/src/assets/iocnfont/vehicle/iconfont.js +1 -0
  260. package/src/assets/iocnfont/vehicle/iconfont.svg +54 -0
  261. package/src/assets/iocnfont/vehicle/iconfont.ttf +0 -0
  262. package/src/assets/iocnfont/vehicle/iconfont.woff +0 -0
  263. package/src/assets/lixinghang/iconfont.css +50 -0
  264. package/src/assets/lixinghang/iconfont.eot +0 -0
  265. package/src/assets/lixinghang/iconfont.js +1 -0
  266. package/src/assets/lixinghang/iconfont.json +58 -0
  267. package/src/assets/lixinghang/iconfont.svg +18 -0
  268. package/src/assets/lixinghang/iconfont.ttf +0 -0
  269. package/src/assets/lixinghang/iconfont.woff +0 -0
  270. package/src/assets/lixinghang/iconfont.woff2 +0 -0
  271. package/src/assets/privacy/demo.css +539 -0
  272. package/src/assets/privacy/demo_index.html +207 -0
  273. package/src/assets/privacy/iconfont.css +17 -0
  274. package/src/assets/privacy/iconfont.js +1 -0
  275. package/src/assets/privacy/iconfont.json +16 -0
  276. package/src/assets/privacy/iconfont.ttf +0 -0
  277. package/src/assets/sheche/demo.css +539 -0
  278. package/src/assets/sheche/demo_index.html +230 -0
  279. package/src/assets/sheche/iconfont.css +21 -0
  280. package/src/assets/sheche/iconfont.js +1 -0
  281. package/src/assets/sheche/iconfont.json +23 -0
  282. package/src/assets/sheche/iconfont.ttf +0 -0
  283. package/src/assets/suggtion/demo.css +539 -0
  284. package/src/assets/suggtion/demo_index.html +207 -0
  285. package/src/assets/suggtion/iconfont.css +17 -0
  286. package/src/assets/suggtion/iconfont.js +1 -0
  287. package/src/assets/suggtion/iconfont.json +16 -0
  288. package/src/assets/suggtion/iconfont.ttf +0 -0
  289. package/src/assets/survey/demo.css +539 -0
  290. package/src/assets/survey/demo_index.html +207 -0
  291. package/src/assets/survey/iconfont.css +17 -0
  292. package/src/assets/survey/iconfont.js +1 -0
  293. package/src/assets/survey/iconfont.json +16 -0
  294. package/src/assets/survey/iconfont.ttf +0 -0
  295. package/src/common/common.js +599 -0
  296. package/src/common/global.js +214 -0
  297. package/src/components/LshCust/index.vue +926 -0
  298. package/src/components/LshVehicle/index.vue +1002 -0
  299. package/src/components/el/DatePicker.vue +113 -0
  300. package/src/components/el/Dialog.vue +66 -0
  301. package/src/components/el/Page.vue +69 -0
  302. package/src/components/el/Select.vue +173 -0
  303. package/src/components/el/Table.vue +98 -0
  304. package/src/components/el/Upload.vue +175 -0
  305. package/src/components/lsh-customer/dialog.vue +66 -0
  306. package/src/components/lsh-customer/index.vue +453 -0
  307. package/src/components/lsh-vehicle/dialog.vue +47 -0
  308. package/src/components/lsh-vehicle/index.vue +534 -0
  309. package/src/components/lsh-vehicle/lshCust.vue +715 -0
@@ -0,0 +1,113 @@
1
+ <template>
2
+ <el-date-picker
3
+ ref="datePicker"
4
+ :readonly="readonly"
5
+ :disabled="disabled"
6
+ :editable="editable"
7
+ :clearable="clearable"
8
+ :size="size"
9
+ v-model="date"
10
+ :type="type"
11
+ :placeholder="placeholder"
12
+ :format="format"
13
+ :align="align"
14
+ :picker-options="pickerOptions"
15
+ :range-separator="rangeSeparator"
16
+ :default-value="defaultValue"
17
+ @change="change">
18
+ </el-date-picker>
19
+ </template>
20
+
21
+ <script>
22
+ export default {
23
+ props:{
24
+ readonly: { type: Boolean, default: false }, // 完全只读
25
+ value: [String, Number, Array, Date], // 双向绑定,父组件选中的值
26
+ placeholder: { type: String, default: '请选择日期' }, // 占位符
27
+ type: { type: String, default: 'date' }, // 显示类型 year/month/date/week/datetime/datetimerange/daterange
28
+ disabled: { type: Boolean, default: false }, // 是否禁用
29
+ editable: { type: Boolean, default: false }, // 文本框可输入
30
+ clearable: { type: Boolean, default: true }, // 是否可以清空选项
31
+ size: {type: String, default: ''}, // 输入框尺寸 large/small/mini
32
+ format: {type: String, default: 'yyyy-MM-dd'}, // 时间日期格式化 年 yyyy,月 MM,日 dd,小时 HH,分 mm,秒 ss
33
+ align: {type: String, default: 'left'}, // 对齐方式 left/center/right
34
+ rangeSeparator: {type: String, default: ' - '}, // 选择范围时的分隔符
35
+ defaultValue: [String, Number, Array, Date], // 可选,DatePicker打开时默认显示的时间,可被new Date()解析
36
+ maxDate: {type: Number, default: 0}, // 可选,设置最大可选时间(天数)
37
+ valueFormat: {type: String, default: ''}, // 可选,绑定值的格式。不指定则绑定值为 Date 对象
38
+ },
39
+ data() {
40
+ return {
41
+ date: '',
42
+ pickerMinDate: '',
43
+ pickerOptions: {
44
+ disabledDate: (time) => {
45
+ if (this.maxDate){
46
+ if (this.pickerMinDate !== '') {
47
+ let maxTime = this.pickerMinDate + this.maxDate * 3600000 * 24
48
+ if (maxTime > new Date()) {
49
+ maxTime = new Date()
50
+ }
51
+ return time.getTime() > maxTime
52
+ }
53
+ return time.getTime() > Date.now()
54
+ }
55
+ },
56
+ onPick: ({ maxDate, minDate }) => {
57
+ if (this.maxDate){
58
+ this.pickerMinDate = minDate.getTime()
59
+ if (maxDate) {
60
+ this.pickerMinDate = ''
61
+ }
62
+ }
63
+ },
64
+ },
65
+ };
66
+ },
67
+ watch: {
68
+ value: function (val, oldVal) {
69
+ if(['daterange'].includes(this.type)){
70
+ if (!val || !val.length) {
71
+ this.change()
72
+ } else if(val[0] !== this.date[0] || val[1] !== this.date[1]){
73
+ this.change(val[0] + this.rangeSeparator + val[1])
74
+ }
75
+ } else {
76
+ this.date = val
77
+ }
78
+ },
79
+ },
80
+ mounted() {
81
+ this.date = this.value
82
+ },
83
+ methods: {
84
+ change(value){
85
+ if(['daterange'].includes(this.type)){
86
+ if (!value) {
87
+ value = [undefined, undefined]
88
+ } else {
89
+ let valueArr = value.split(this.rangeSeparator)
90
+ if(this.valueFormat){
91
+ value = [
92
+ valueArr[0] ? new Date(valueArr[0]).Format(this.valueFormat) : undefined,
93
+ valueArr[1] ? new Date(valueArr[1]).Format(this.valueFormat) : undefined,
94
+ ]
95
+ }else{
96
+ value = [
97
+ valueArr[0] ? new Date(valueArr[0]).Format('yyyy-MM-dd') + ' 00:00:00' : undefined,
98
+ valueArr[1] ? new Date(valueArr[1]).Format('yyyy-MM-dd') + ' 23:59:59' : undefined,
99
+ ]
100
+ }
101
+ }
102
+ } else if(['date'].includes(this.type)){
103
+ if(this.valueFormat && value){
104
+ value = new Date(value).Format(this.valueFormat)
105
+ }
106
+ }
107
+ this.date = value
108
+ this.$emit('input', value)
109
+ this.$emit('change', value)
110
+ },
111
+ }
112
+ };
113
+ </script>
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <el-dialog
3
+ :title="title"
4
+ ref="dialog"
5
+ :visible.sync="visible"
6
+ :size="size"
7
+ :top="top"
8
+ :modal="modal"
9
+ :modal-append-to-body="modalAppendToBody"
10
+ :before-close="handleClose">
11
+ <template v-if="customTitle" slot="title">
12
+ <slot name="title"></slot>
13
+ </template>
14
+ <slot v-if="visible"></slot>
15
+ <span v-if="showFooter" slot="footer" class="dialog-footer">
16
+ <slot v-if="customFooter" name="footer"></slot>
17
+ <div v-else>
18
+ <el-button @click="visible = false">取 消</el-button>
19
+ <el-button type="primary" @click="$emit('confirm')">确 定</el-button>
20
+ </div>
21
+ </span>
22
+ </el-dialog>
23
+ </template>
24
+
25
+ <script>
26
+ export default {
27
+ props:{
28
+ title: {type: String, default: '提示'}, // Dialog 的标题
29
+ customTitle: Boolean, // 是否使用自定义标题
30
+ beforeClose: Boolean, // 关闭前的回调,会暂停 Dialog 的关闭
31
+ show: Boolean, // 是否默认显示
32
+ showFooter: Boolean, // 是否显示底部按钮
33
+ customFooter: Boolean, // 是否使用自定义底部按钮
34
+ size: {type: String, default: 'small'}, // tiny/small/large/full
35
+ top: {type: String,default: '15%'}, // Dialog CSS 中的 top 值(仅在 size 不为 full 时有效)
36
+ modal: {type: Boolean, default: true}, // 是否需要遮罩层
37
+ modalAppendToBody: {type: Boolean, default: true}, // 遮罩层是否插入至 body 元素上,若为 false,则遮罩层会插入至 Dialog 的父元素上
38
+ },
39
+ data() {
40
+ return {
41
+ visible: false
42
+ };
43
+ },
44
+ mounted(){
45
+ this.visible = this.show;
46
+ },
47
+ methods: {
48
+ close(){
49
+ this.$refs.dialog.handleClose()
50
+ },
51
+ handleClose(done) {
52
+ if(this.beforeClose){
53
+ this.$confirm('确认关闭?')
54
+ .then(_ => {
55
+ this.$emit('close')
56
+ done();
57
+ })
58
+ .catch(_ => {});
59
+ } else {
60
+ this.$emit('close')
61
+ done()
62
+ }
63
+ }
64
+ }
65
+ };
66
+ </script>
@@ -0,0 +1,69 @@
1
+ <template>
2
+ <el-pagination
3
+ class="f-tar f-mt10"
4
+ @size-change="handleSizeChange"
5
+ @current-change="handleCurrentChange"
6
+ :current-page="currentPage"
7
+ :page-sizes="pageSizes"
8
+ :page-size="pageSize"
9
+ :layout="layout"
10
+ :total="total">
11
+ </el-pagination>
12
+ </template>
13
+
14
+ <script>
15
+ export default {
16
+ props:{
17
+ pageStart: { type: Number, default: 1 }, // 当前页数
18
+ pageNums: { type: Number, default: 10 }, // 每页显示条目个数
19
+ total: { type: Number, default: 0 }, // 总条目数
20
+ layout: {type: String, default: 'total, sizes, prev, pager, next, jumper'}, // 组件布局,子组件名用逗号分隔
21
+ pageSizes: {type: Array, default: () => [10, 20, 50, 100]}, // 每页显示个数选择器的选项设置
22
+ isStartGetData: { type: Boolean, default: true }, // 是否开始加载数据
23
+ },
24
+ data() {
25
+ return {
26
+ currentPage: 1,
27
+ pageSize: 10,
28
+ };
29
+ },
30
+ mounted() {
31
+ this.currentPage = this.pageStart
32
+ this.pageSize = this.pageNums
33
+ if (this.isStartGetData){
34
+ this.change()
35
+ }
36
+ },
37
+ methods: {
38
+ handleSizeChange(val) {
39
+ this.pageSize = val
40
+ this.change()
41
+ },
42
+ handleCurrentChange(val) {
43
+ this.currentPage = val
44
+ this.change()
45
+ },
46
+ change(){
47
+ this.$emit('change', {
48
+ pageStart: this.currentPage,
49
+ pageNums: this.pageSize
50
+ })
51
+ },
52
+ reset(){
53
+ this.currentPage = this.pageStart
54
+ this.pageSize = this.pageNums
55
+ },
56
+ resetCurrent(currentPage){
57
+ if (this.currentPage != currentPage) {
58
+ this.currentPage = currentPage
59
+ } else {
60
+ this.change()
61
+ }
62
+ },
63
+ }
64
+ };
65
+ </script>
66
+
67
+ <style lang="scss" scoped>
68
+ /deep/ .el-pagination__sizes{width: 100px !important}
69
+ </style>
@@ -0,0 +1,173 @@
1
+ <template>
2
+ <el-select
3
+ ref="select"
4
+ v-model="selectValue"
5
+ :placeholder="placeholderComputed"
6
+ :multiple="multiple"
7
+ :collapse-tags="collapseTags"
8
+ :disabled="disabled"
9
+ :clearable="clearable"
10
+ :filterable="filterable"
11
+ :value-key="valueKey"
12
+ @change="change"
13
+ @remove-tag="removeTag"
14
+ @clear="clear"
15
+ @visible-change="visibleChange"
16
+ v-select-loadmore="loadmore"
17
+ :remote="remote"
18
+ :remote-method="remote ? remoteMethod : null"
19
+ >
20
+ <el-option
21
+ v-for="(item,index) in selectOptions"
22
+ :key="item.id || index"
23
+ :label="item[optionLabel]"
24
+ :value="optionValue ? item[optionValue] : item"
25
+ :disabled="item.disabled">
26
+ <slot :item="item"></slot>
27
+ </el-option>
28
+ </el-select>
29
+ </template>
30
+
31
+ <script>
32
+ export default {
33
+ props:{
34
+ options: {type: Array, default: ()=>{return []}}, // 选项
35
+ value: [String, Number, Array], // 双向绑定,父组件选中的值
36
+ placeholder: { type: String, default: '请选择' }, // 占位符
37
+ multiple: { type: Boolean, default: false }, // 是否多选
38
+ selectAllable: Boolean, // 是否可全选
39
+ collapseTags: { type: Boolean, default: false }, // 多选时是否将选中值按文字的形式展示
40
+ disabled: { type: Boolean, default: false }, // 是否禁用
41
+ clearable: { type: Boolean, default: true }, // 是否可以清空选项
42
+ filterable: { type: Boolean, default: true }, // 是否可搜索
43
+ size: {type: String, default: 'small'}, // 输入框尺寸 large/small/mini
44
+ optionLabel: {type: String, default: 'label',}, // 选项的label
45
+ optionValue: {type: String, default: 'value',}, // 选项的value
46
+ valueKey: {type: String, default: 'value',}, // 作为 value 唯一标识的键名,绑定值为对象类型时必填
47
+ remote: Boolean, // 是否远程搜索
48
+ api: { type: String, default: '' }, // 接口地址
49
+ query: { type: Object, default: () => ({}) }, // 接口参数
50
+ pageKey: { type: Array, default: () => (['pageStart', 'pageNums']) }, // 分页key
51
+ pageStart: { type: Number, default: 1 }, // 当前页数
52
+ pageNums: { type: Number, default: 10 }, // 每页显示条目个数
53
+ queryKey: { type: String, default: 'name' }, // 搜索关键字key
54
+ },
55
+ data() {
56
+ return {
57
+ selectValue: this.multiple ? [] : '',
58
+ selectOptions: [],
59
+ firstGetData: true,
60
+ queryParams: {},
61
+ nomore: false,
62
+ multipleChangeFlag: false,
63
+ };
64
+ },
65
+ watch: {
66
+ value: function (val, oldVal) {
67
+ this.selectValue = val
68
+ },
69
+ options: function (val, oldVal) {
70
+ this.selectOptions = val
71
+ },
72
+ },
73
+ computed: {
74
+ placeholderComputed() {
75
+ if(this.placeholder != '请选择') return this.placeholder
76
+ let str = this.placeholder
77
+ if(this.remote) str = '请输入关键词'
78
+ if(this.multiple) str += '(可多选)'
79
+ return str
80
+ },
81
+ },
82
+ mounted() {
83
+ this.selectValue = this.value
84
+ this.selectOptions = this.options
85
+ this.queryParams[this.pageKey[0]] = this.pageStart
86
+ this.queryParams[this.pageKey[1]] = this.pageNums
87
+ },
88
+ methods: {
89
+ change(value){
90
+ if(this.remote && this.multiple) {
91
+ this.multipleChangeFlag = true
92
+ this.$nextTick(() => {
93
+ this.$refs.select.query = this.queryParams[this.queryKey]
94
+ this.$refs.select.previousQuery = this.queryParams[this.queryKey]
95
+ });
96
+ }
97
+ if(this.multiple && this.selectAllable){
98
+ if(value.includes(this.selectOptions[0][this.optionValue])) {
99
+ if(value.length > 1){
100
+ value = [this.selectOptions[0][this.optionValue]]
101
+ }
102
+ this.selectOptions.map(item => item.disabled = true)
103
+ this.selectOptions[0].disabled = false
104
+ } else {
105
+ this.selectOptions.map(item => item.disabled = false)
106
+ }
107
+ this.selectOptions = JSON.parse(JSON.stringify(this.selectOptions))
108
+ }
109
+ this.$emit('input', value)
110
+ this.$emit('change', value)
111
+ },
112
+ removeTag(value){
113
+ this.$emit('remove-tag', value)
114
+ },
115
+ clear(){
116
+ this.$emit('change', this.multiple ? [] : '')
117
+ this.$emit('clear')
118
+ },
119
+ getData(){
120
+ if(this.api) {
121
+ this.nomore = false
122
+ this.global.post(this.api, {
123
+ ...this.query,
124
+ ...this.queryParams,
125
+ }, obj => {
126
+ this.firstGetData = false
127
+ if (obj.list.length < this.pageNums) this.nomore = true
128
+ this.selectOptions = this.selectOptions.concat(obj.list)
129
+ this.$emit('getData', this.selectOptions)
130
+ })
131
+ }
132
+ },
133
+ loadmore(){
134
+ if (!this.remote) return;
135
+ if (this.nomore) return;
136
+ this.queryParams[this.pageKey[0]]++;
137
+ this.getData();
138
+ },
139
+ // 远程搜索
140
+ remoteMethod(query) {
141
+ if(this.multiple && this.multipleChangeFlag) {
142
+ this.multipleChangeFlag = false
143
+ return
144
+ }
145
+ this.selectOptions = [];
146
+ this.queryParams[this.pageKey[0]] = this.pageStart;
147
+ this.queryParams[this.queryKey] = query;
148
+ this.getData();
149
+ },
150
+ // 下拉框出现时,第一次获取数据
151
+ visibleChange(val) {
152
+ if (val && this.api) {
153
+ if (this.firstGetData) this.getData();
154
+ // 远程搜索把搜索值附上
155
+ if(this.remote){
156
+ this.$nextTick(() => {
157
+ if(this.multiple) {
158
+ this.$refs.select.query = this.queryParams[this.queryKey]
159
+ } else {
160
+ this.$refs.select.selectedLabel = this.queryParams[this.queryKey]
161
+ }
162
+ this.$refs.select.previousQuery = this.queryParams[this.queryKey]
163
+ })
164
+ }
165
+ }
166
+ }
167
+ },
168
+ };
169
+ </script>
170
+
171
+ <style lang="scss" scoped>
172
+ .el-select{display:block;width:auto;}
173
+ </style>
@@ -0,0 +1,98 @@
1
+ <template>
2
+ <div>
3
+ <el-table ref="table" :data="list" :stripe="stripe" :border="border" :max-height="maxHeight" :highlight-current-row="highlightCurrentRow" @current-change="handleCurrentChange" :row-class-name="rowClassName" @selection-change="handleSelectionChange">
4
+ <slot></slot>
5
+ </el-table>
6
+ <ElePage v-if="ifPage" ref="ElePage" :isStartGetData="isStartGetData" :total="pageTotal" @change="getData"></ElePage>
7
+ </div>
8
+ </template>
9
+
10
+ <script>
11
+ export default {
12
+ props:{
13
+ border: { type: Boolean, default: true }, // 是否带有纵向边框
14
+ data: { type: Array, default: () => ([]) }, // 表格数据
15
+ total: { type: Number, default: 0 }, // 数据总数
16
+ api: { type: String, default: '' }, // 接口地址
17
+ query: { type: Object, default: () => ({}) }, // 接口参数
18
+ ifPage: { type: Boolean, default: true }, // 是否分页
19
+ maxHeight: [String, Number], // Table 的最大高度
20
+ stripe: { type: Boolean, default: true }, // 是否为斑马纹 table
21
+ highlightCurrentRow: { type: Boolean, default: false }, // 是否要高亮当前行,可实现单选
22
+ rowClassName: { type: Function, default: () => '' }, // 行的 className 的回调方法,也可以使用字符串为所有行设置一个固定的 className
23
+ isStartGetData: { type: Boolean, default: true }, // 是否开始就获取数据
24
+ pageKey: { type: Array, default: () => (['pageStart', 'pageNums']) }, // 分页参数
25
+ },
26
+ data() {
27
+ return {
28
+ list: [],
29
+ pageTotal: 0,
30
+ currentRow: null,
31
+ multipleSelection: [],
32
+ };
33
+ },
34
+ watch: {
35
+ data: {
36
+ handler(val) {
37
+ this.list = val
38
+ },
39
+ deep: true
40
+ }
41
+ },
42
+ mounted() {
43
+ this.pageTotal = this.total
44
+ if(this.data && this.data.length){
45
+ this.list = this.data
46
+ }
47
+ if(!this.ifPage && this.isStartGetData && this.api){
48
+ this.getData({})
49
+ }
50
+ },
51
+ methods: {
52
+ // 获取数据
53
+ getData(page){
54
+ this.$nextTick(() => {
55
+ this.global.post(this.api, {
56
+ ...this.query,
57
+ [this.pageKey[0]]: page.pageStart,
58
+ [this.pageKey[1]]: page.pageNums,
59
+ }, obj => {
60
+ if(!this.ifPage){
61
+ this.list = obj
62
+ } else {
63
+ this.list = obj.list || [obj]
64
+ this.pageTotal = obj.total
65
+ }
66
+ })
67
+ });
68
+ },
69
+ // 从默认第一页开始获取数据
70
+ resetData(currentPage = 1){
71
+ if(this.ifPage) {
72
+ this.$refs.ElePage.resetCurrent(currentPage)
73
+ } else {
74
+ this.getData({})
75
+ }
76
+ },
77
+ setCurrent(row) {
78
+ this.$refs.table.setCurrentRow(row);
79
+ },
80
+ handleCurrentChange(val) {
81
+ this.currentRow = val;
82
+ },
83
+ toggleSelection(rows) {
84
+ if (rows) {
85
+ rows.forEach(row => {
86
+ this.$refs.table.toggleRowSelection(row);
87
+ });
88
+ } else {
89
+ this.$refs.table.clearSelection();
90
+ }
91
+ },
92
+ handleSelectionChange(val) {
93
+ this.multipleSelection = val;
94
+ this.$emit('selection-change', val)
95
+ }
96
+ }
97
+ };
98
+ </script>
@@ -0,0 +1,175 @@
1
+ <template>
2
+ <div class="f-ib f-maw1">
3
+ <el-upload
4
+ class="f-ib f-maw1"
5
+ ref="upload"
6
+ :action="global.uploadUrl"
7
+ :data="params"
8
+ :accept="accept"
9
+ :show-file-list="showFileList"
10
+ :auto-upload="autoUpload"
11
+ :before-upload="beforeUpload"
12
+ :on-success ='onSuccess'
13
+ :on-preview="onPreview"
14
+ :on-remove="onRemove"
15
+ :file-list="fileList">
16
+ <el-button :size="size" :type="type" :class="btnClass" :style="btnStyle">{{ text }}</el-button>
17
+ </el-upload>
18
+ <el-button v-if="importRelationCode && importFlag" :type="importType" :size="size" :class="btnClass" :style="btnStyle" @click.stop="global.getFileList(importRelationCode,'download')">{{ importText }}</el-button>
19
+ <el-button v-if="abnormal" type="danger" :disabled="!downloadErrorInfo.downloadErrorUrl" :size="size" :class="btnClass" @click.stop="global.open(downloadErrorInfo.downloadErrorUrl)">异常数据下载</el-button>
20
+ <el-button v-if="importRelationCode && !importFlag" :type="importType" :size="size" :class="btnClass" :style="btnStyle" @click.stop="global.getFileList(importRelationCode,'download')">{{ importText }}</el-button>
21
+ </div>
22
+ </template>
23
+
24
+ <script>
25
+ export default {
26
+ props:{
27
+ text: { type: String, default: '点击上传' }, // 按钮文字
28
+ size: { type: String, default: 'small' }, // 按钮大小 large,small,mini
29
+ type: { type: String, default: 'primary' }, // 按钮类型 primary,success,warning,danger,info
30
+ data: { type: Object, required: true, default: () => ({}) }, // 可选参数, 上传时附带的额外参数 relationCode必传
31
+ paramMap: { type: Object, default: () => ({}) }, // 可选参数, 上传时附带的额外参数
32
+ accept: { type: String, default: '' }, // 可选参数, 接受上传的文件类型(thumbnail-mode 模式下此参数无效)
33
+ showFileList: { type: Boolean, default: true }, // 可选参数, 是否显示已上传文件列表
34
+ autoUpload: { type: Boolean, default: true }, // 可选参数, 是否在选取文件后立即进行上传
35
+ importRelationCode: { type: String, default: '' }, // 导入模板的relationCode
36
+ importText: { type: String, default: '导入模板' }, // 导入模板按钮文字
37
+ importType: { type: String, default: 'primary' }, // 导入模板类型
38
+ importFlag: { type: Boolean, default: true }, // 导入模板标识显示顺序
39
+ abnormal: { type: Boolean, default: false }, // 是否显示异常数据下载
40
+ btnClass: { type: String, default: '' }, // 按钮class
41
+ btnStyle: { type: Object, default: () => ({}) }, // 按钮style
42
+ },
43
+ data() {
44
+ return {
45
+ params:{
46
+ relationCode: '',
47
+ singleFlag: '0',
48
+ businessType: '',
49
+ createBy: this.global.userInfo.empVo.empCode,
50
+ updateBy: this.global.userInfo.empVo.empCode,
51
+ createOrgCode: this.global.userInfo.inCharegOrgVo.orgCode,
52
+ ...this.data
53
+ },
54
+ fileList: [],
55
+ downloadErrorInfo: {
56
+ downloadErrorUrl: '',
57
+ },
58
+ };
59
+ },
60
+ mounted() {
61
+ if(this.showFileList){
62
+ this.getFileList()
63
+ }
64
+ },
65
+ methods: {
66
+ // 获取上传的文件列表
67
+ async getFileList() {
68
+ this.fileList = await this.global.getFileList(this.data.relationCode)
69
+ },
70
+ // 上传文件之前的钩子
71
+ beforeUpload(file) {
72
+ if(!this.checkFileFormat(file)) return false
73
+ },
74
+ // 检查文件格式
75
+ checkFileFormat(file){
76
+ if(this.accept){
77
+ if(this.accept.indexOf(file.name.slice(file.name.lastIndexOf('.'))) > -1){
78
+ return true
79
+ } else {
80
+ this.$message.warning('请上传'+this.accept+'格式的文件')
81
+ return false
82
+ }
83
+ }
84
+ return true
85
+ },
86
+ // 文件上传成功时的钩子
87
+ onSuccess(response, file, fileList) {
88
+ if (response.code === "success") {
89
+ this.$emit('onSuccess', file, fileList);
90
+ if(this.abnormal){
91
+ this.global.post(this.global.isdev + this.global.api.collectionApi.useSelf.importFile, response.obj.map(item => {
92
+ return {
93
+ ...item,
94
+ refCode: this.data.relationCode,
95
+ paramMap: {
96
+ storeCode: this.global.userInfo.userAvailableInfo.storeInfoVo.storeCode,
97
+ ...this.paramMap,
98
+ }
99
+ }
100
+ }), obj => {
101
+ this.timer = setInterval(() => {
102
+ this.getByUserCodeAndRefCode();
103
+ }, 1000);
104
+ })
105
+ } else {
106
+ this.$message.success('上传成功')
107
+ }
108
+ }
109
+ },
110
+ // 查询导入异常
111
+ getByUserCodeAndRefCode() {
112
+ this.global.api.useSelf.getByUserCodeAndRefCode(
113
+ {
114
+ refCodes: [this.data.relationCode]
115
+ },
116
+ res => {
117
+ const { code, obj } = res.data;
118
+ if (code === "success") {
119
+ const { status } = obj[0];
120
+
121
+ if (status > 1) {
122
+ clearInterval(this.timer);
123
+ }
124
+
125
+ switch (status) {
126
+ case "2":
127
+ this.$emit('importsClosure', obj[0]);
128
+ this.$message({
129
+ message: "导入完成",
130
+ type: "success"
131
+ });
132
+ break;
133
+ case "3":
134
+ this.downloadErrorInfo = {
135
+ downloadErrorUrl: obj[0].errorFilePath,
136
+ downloadErrorFileName: obj[0].errorFileName
137
+ };
138
+ this.$message({
139
+ message: "导入失败,请点击异常数据按钮下载查看失败信息",
140
+ type: "warning"
141
+ });
142
+ break;
143
+ case "4":
144
+ this.$message({
145
+ message: "处理异常,请检查上传文件,或稍后再试",
146
+ type: "warning"
147
+ });
148
+ break;
149
+ }
150
+ }
151
+ }
152
+ );
153
+ },
154
+ // 点击已上传的文件链接时的钩子
155
+ onPreview(file) {
156
+ if(file.filePath){
157
+ this.global.open(file.filePath)
158
+ } else {
159
+ this.global.open(file.response.obj[0].filePath)
160
+ }
161
+ },
162
+ // 文件列表移除文件时的钩子
163
+ onRemove(file, fileList) {
164
+ if(file.id){
165
+ this.global.api.accessory.del([file], result => {
166
+ if(result.data.code === 'success') {
167
+ this.$message.success('删除成功')
168
+ this.$emit('onRemove', file, fileList);
169
+ }
170
+ })
171
+ }
172
+ },
173
+ }
174
+ };
175
+ </script>