xs-common-plugins 1.2.4 → 1.2.5

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 (188) hide show
  1. package/README.md +298 -298
  2. package/common.js +110 -110
  3. package/index.js +1 -1
  4. package/package.json +16 -16
  5. package/src/App.vue +12 -12
  6. package/src/common/common.js +551 -549
  7. package/src/common/createMenuId.js +7 -7
  8. package/src/common/uploadImgToBase64.js +12 -12
  9. package/src/common/utils.js +95 -95
  10. package/src/components/Breadcrumb/index.vue +81 -81
  11. package/src/components/CheckBox_Cmp/index.vue +62 -62
  12. package/src/components/Col_TableCell/data.js +4 -4
  13. package/src/components/Col_TableCell/index.scss +77 -77
  14. package/src/components/Col_TableCell/index.vue +43 -43
  15. package/src/components/Col_TableCell/methods.js +19 -19
  16. package/src/components/FormItem/index.vue +92 -92
  17. package/src/components/Hamburger/index.vue +44 -44
  18. package/src/components/ReportCmp/data.js +3 -3
  19. package/src/components/ReportCmp/index.scss +29 -29
  20. package/src/components/ReportCmp/index.vue +76 -76
  21. package/src/components/ReportCmp/methods.js +30 -30
  22. package/src/components/Search/cascader/data.js +3 -3
  23. package/src/components/Search/cascader/index.scss +17 -17
  24. package/src/components/Search/cascader/index.vue +96 -96
  25. package/src/components/Search/cascader/methods.js +41 -41
  26. package/src/components/Search/data.js +5 -5
  27. package/src/components/Search/hk_cascader/index.vue +104 -104
  28. package/src/components/Search/hk_cascader_qudao/index.vue +94 -94
  29. package/src/components/Search/index.scss +219 -219
  30. package/src/components/Search/index.vue +410 -410
  31. package/src/components/Search/methods.js +86 -86
  32. package/src/components/Search/product_option/data.js +3 -3
  33. package/src/components/Search/product_option/index.scss +68 -68
  34. package/src/components/Search/product_option/index.vue +412 -412
  35. package/src/components/Search/product_option/methods.js +58 -58
  36. package/src/components/Search/select/data.js +3 -3
  37. package/src/components/Search/select/index.scss +2 -2
  38. package/src/components/Search/select/index.vue +114 -114
  39. package/src/components/Search/select/methods.js +51 -51
  40. package/src/components/Search_filter/data.js +5 -5
  41. package/src/components/Search_filter/index.scss +104 -104
  42. package/src/components/Search_filter/index.vue +88 -88
  43. package/src/components/Search_filter/methods.js +43 -43
  44. package/src/components/TableCmp/data.js +3 -3
  45. package/src/components/TableCmp/index.scss +22 -22
  46. package/src/components/TableCmp/index.vue +98 -98
  47. package/src/components/TableCmp/methods.js +35 -35
  48. package/src/components/TableItem/TableItem.vue +55 -55
  49. package/src/components/TextOVer/index.vue +55 -55
  50. package/src/components/UploadImg/index.vue +177 -177
  51. package/src/components/home/BarChart.vue +118 -118
  52. package/src/components/home/LineChart.vue +146 -146
  53. package/src/components/home/Panel.vue +135 -135
  54. package/src/components/home/PanelGroup.vue +146 -146
  55. package/src/components/home/PieChart.vue +81 -81
  56. package/src/components/home/RaddarChart.vue +119 -119
  57. package/src/components/home/TabLayout.vue +88 -88
  58. package/src/components/home/TableList.vue +158 -158
  59. package/src/components/home/Teng.vue +248 -248
  60. package/src/components/home/TransactionTable.vue +49 -49
  61. package/src/components/home/mixins/resize.js +55 -55
  62. package/src/components/im/index.vue +155 -155
  63. package/src/components/im/methods.js +25 -25
  64. package/src/components/im/pages/chatList/index.vue +45 -45
  65. package/src/components/im/pages/chatRoom/index.vue +159 -159
  66. package/src/components/image-singleUpload/data.js +3 -3
  67. package/src/components/image-singleUpload/index.scss +26 -26
  68. package/src/components/image-singleUpload/index.vue +56 -56
  69. package/src/components/image-singleUpload/methods.js +30 -30
  70. package/src/components/image-upload/data.js +7 -7
  71. package/src/components/image-upload/index.vue +41 -41
  72. package/src/components/image-upload/methods.js +80 -80
  73. package/src/components/multiple-image-upload/data.js +11 -11
  74. package/src/components/multiple-image-upload/index.scss +8 -8
  75. package/src/components/multiple-image-upload/index.vue +63 -63
  76. package/src/components/multiple-image-upload/methods.js +45 -45
  77. package/src/components/pro-upload/data.js +3 -3
  78. package/src/components/pro-upload/index.scss +4 -4
  79. package/src/components/pro-upload/index.vue +89 -89
  80. package/src/components/pro-upload/methods.js +86 -86
  81. package/src/components/report_set/index.scss +44 -44
  82. package/src/components/report_set/index.vue +153 -153
  83. package/src/components/search-page/src/index.scss +5 -5
  84. package/src/components/search-page/src/index.vue +76 -76
  85. package/src/components/search-page/src/methods.js +36 -36
  86. package/src/components/xsSelect/index.vue +125 -125
  87. package/src/mixin/dialog.js +31 -31
  88. package/src/mixin/dlg.js +46 -46
  89. package/src/mixin/keepAlive.js +53 -53
  90. package/src/mixin/newDialog.js +19 -19
  91. package/src/mixin/report.js +82 -82
  92. package/src/mixin/table.js +93 -93
  93. package/src/mixin/tableCell/colTableCell_analysis.js +103 -103
  94. package/src/mixin/upload.js +22 -22
  95. package/src/mixin/vmodel.js +26 -26
  96. package/src/plugins/im/components/chat/index.scss +163 -163
  97. package/src/plugins/im/components/chat/index.vue +144 -144
  98. package/src/plugins/im/components/chat/methods.js +149 -149
  99. package/src/plugins/im/components/conversation-list/index.css +91 -91
  100. package/src/plugins/im/components/conversation-list/index.json +3 -3
  101. package/src/plugins/im/components/conversation-list/index.vue +89 -89
  102. package/src/plugins/im/components/loading/loading.css +69 -69
  103. package/src/plugins/im/components/loading/loading.json +3 -3
  104. package/src/plugins/im/components/loading/loading.vue +14 -14
  105. package/src/plugins/im/components/msg-image/index.json +3 -3
  106. package/src/plugins/im/components/msg-image/index.vue +40 -40
  107. package/src/plugins/im/components/msg-text/index.json +3 -3
  108. package/src/plugins/im/components/msg-text/index.vue +24 -24
  109. package/src/plugins/im/components/send-msg/index.scss +164 -164
  110. package/src/plugins/im/components/send-msg/index.vue +107 -107
  111. package/src/plugins/im/components/send-msg/methods.js +125 -125
  112. package/src/plugins/im/components/template-message/index.vue +76 -76
  113. package/src/plugins/im/components/without.vue +19 -19
  114. package/src/plugins/im/im-plug-in/Protobuf-2.3.7.min.js +1 -1
  115. package/src/plugins/im/im-plug-in/RongCallLib-3.1.5.min.js +74 -74
  116. package/src/plugins/im/im-plug-in/RongIMLib-4.1.0.js +17420 -17420
  117. package/src/plugins/im/im-plug-in/init.js +216 -216
  118. package/src/plugins/im/im-plug-in/qiniu.js +266 -266
  119. package/src/plugins/im/im-plug-in/send-data.js +431 -431
  120. package/src/plugins/im/im-plug-in/upload.js +232 -232
  121. package/src/plugins/im/index.js +31 -31
  122. package/src/plugins/im/lib/RongIMEmoji-2.2.6.js +332 -332
  123. package/src/plugins/im/lib/RongIMLib-3.0.7.2-dev.js +11635 -11635
  124. package/src/plugins/im/lib/RongIMLib-3.0.7.2-dev.min.js +6 -6
  125. package/src/plugins/im/utils/services.js +625 -625
  126. package/src/plugins/im/utils/underscore-1.8.3.js +1531 -1531
  127. package/src/plugins/im/utils/utils.js +149 -149
  128. package/src/plugins/index.js +60 -60
  129. package/src/plugins/row-col-cmp/colCmp/data.js +3 -3
  130. package/src/plugins/row-col-cmp/colCmp/index.scss +50 -50
  131. package/src/plugins/row-col-cmp/colCmp/index.vue +53 -53
  132. package/src/plugins/row-col-cmp/colCmp/methods.js +25 -25
  133. package/src/plugins/row-col-cmp/index.js +20 -20
  134. package/src/plugins/row-col-cmp/rowCmp/data.js +3 -3
  135. package/src/plugins/row-col-cmp/rowCmp/index.scss +3 -3
  136. package/src/plugins/row-col-cmp/rowCmp/index.vue +43 -43
  137. package/src/plugins/row-col-cmp/rowCmp/methods.js +29 -29
  138. package/src/router/index.js +58 -58
  139. package/src/router/permission.js +126 -126
  140. package/src/store/getters.js +13 -13
  141. package/src/store/index.js +60 -60
  142. package/src/store/modules/app.js +55 -55
  143. package/src/store/modules/dic.js +74 -74
  144. package/src/store/modules/oss.js +40 -40
  145. package/src/store/modules/settings.js +28 -28
  146. package/src/store/modules/tagsView.js +160 -160
  147. package/src/store/modules/user.js +94 -94
  148. package/src/store/modules/widgetdata.js +42 -42
  149. package/src/styles/element-ui.scss +49 -49
  150. package/src/styles/index.scss +91 -91
  151. package/src/styles/mixin.scss +28 -28
  152. package/src/styles/sidebar.scss +210 -210
  153. package/src/styles/table.scss +90 -90
  154. package/src/styles/transition.scss +48 -48
  155. package/src/styles/variables.scss +25 -25
  156. package/src/utils/api.js +54 -54
  157. package/src/utils/auth.js +38 -38
  158. package/src/utils/concat_batch_btns.js +88 -88
  159. package/src/utils/enum.js +150 -150
  160. package/src/utils/filter.js +5 -5
  161. package/src/utils/filterRules.js +55 -55
  162. package/src/utils/get-page-title.js +10 -10
  163. package/src/utils/getMenu.js +82 -82
  164. package/src/utils/global-config.js +15 -15
  165. package/src/utils/global_directive.js +10 -10
  166. package/src/utils/index.js +332 -332
  167. package/src/utils/localStorage.js +21 -21
  168. package/src/utils/ossService.js +55 -55
  169. package/src/utils/prototype.js +46 -46
  170. package/src/utils/search.js +33 -33
  171. package/src/utils/signalR.js +24 -24
  172. package/src/utils/validate.js +20 -20
  173. package/src/views/callback/index.vue +35 -35
  174. package/src/views/home/index.vue +25 -25
  175. package/src/views/layout/components/AllSearch/index.vue +44 -44
  176. package/src/views/layout/components/AppMain.vue +66 -66
  177. package/src/views/layout/components/Sidebar/FixiOSBug.js +26 -26
  178. package/src/views/layout/components/Sidebar/Item.vue +28 -28
  179. package/src/views/layout/components/Sidebar/Link.vue +34 -34
  180. package/src/views/layout/components/Sidebar/Logo.vue +79 -79
  181. package/src/views/layout/components/Sidebar/SidebarItem.vue +67 -67
  182. package/src/views/layout/components/Sidebar/index.vue +114 -114
  183. package/src/views/layout/components/TagsView/ScrollPane.vue +94 -94
  184. package/src/views/layout/components/TagsView/index.vue +330 -330
  185. package/src/views/layout/components/index.js +3 -3
  186. package/src/views/layout/index.vue +107 -107
  187. package/src/views/redirect/index.vue +12 -12
  188. package/src/views/slienceAuth/index.vue +42 -42
@@ -1,410 +1,410 @@
1
- <!--@click添加点击事件;可设置背景色,字体颜色,字体大小,按钮宽,高;props分别为:bgcolor,fontColor,fontSize,width,height-->
2
- <!-- {
3
- displayName: "", // 搜索框 label 名称
4
- fieldName: "datepic", // 表单属性名称
5
- defaultValue: "时间控件", // placeholder 提示内容
6
- [{"Id":0,"Name":"input","Text":"输入框"},
7
- {"Id":3,"Name":"select","Text":"下拉框"},
8
- {"Id":4,"Name":"datePicker","Text":"时间选择框"},
9
- {"Id":5,"Name":"mixedSelect","Text":"混合选择框"},
10
- {"Id":6,"Name":"cascader","Text":"联级选择器"},
11
- {"Id":7,"Name":"radioCascader","Text":"单选联级选择器"},
12
- {"Id":8,"Name":"reportSet","Text":"报表配置"}
13
- {"Id":10,"Name":"HKQudao","Text":";联级多选可动静态"}
14
- ]
15
- conditionType: 4,
16
- config: {
17
- method: "lazy",
18
- props: {
19
- multiple: true, // 支持多选
20
- checkStrictly: true // 是否支持任意一级
21
- },
22
- source: [
23
- {
24
- url: "api.service.select.getbrandlist",
25
- param: { pageSize: 0 }
26
- },
27
- {
28
- url: "api.service.select.getmodellist",
29
- param: { pageSize: 0 },
30
- searchKey: "brandId"
31
- }
32
- ]
33
- },
34
- url: "", // 下拉框集合 api or enumName
35
- param:{xxx:aa},
36
- searchKey:'searchKey',
37
- dataSource: "", // 下拉框集合自定义
38
- dataSourceType: 1, // 0:api 单选+数据源格式是 {label:value} , 1:单选+自定义 , 2:枚举名称($orgEnum[optionItem.url]) 4:枚举数据源+多选
39
- 10:api 单选+格式是 [value:xxx,label:xxx], 21:多选+自定义 41: 枚举数据源 + 单选
40
- 20:api 多选+数据源格式是 {label:value},
41
- 30:api 多选+格式是 [{value:xxx,label:xxx}],
42
- sort: 0,
43
- isIndex: true,
44
- defaultTime: true
45
- }-->
46
- <template>
47
- <div class="search-wrapper formClass" ref="formClass">
48
- <el-form :model="inputValue" :inline="true" fit size="small" ref="formContent" label-position="left" class="form" @submit.native.prevent>
49
- <div class="contentBox" ref="contentBox">
50
- <div class="searchBox">
51
- <div v-for="(optionItem, indexs) in formContent" :key="indexs">
52
- <el-form-item :label="optionItem.displayName" v-if="optionItem.conditionType == $enum.conditionType.input"
53
- :style="{ width: optionItem.itemWidth }">
54
- <el-input v-model="inputValue[optionItem.fieldName]" :placeholder="optionItem.defaultValue" @change="(value)=>{
55
- optionItem.change&&optionItem.change(value)
56
- }"></el-input>
57
- </el-form-item>
58
- <!--下拉单选通过接口-->
59
- <el-form-item :label="optionItem.displayName"
60
- v-else-if="optionItem.conditionType == $enum.conditionType.select"
61
- :style="{ width: optionItem.itemWidth }">
62
- <search-select-cmp :option="optionItem" v-model="inputValue[optionItem.fieldName]">
63
- </search-select-cmp>
64
- </el-form-item>
65
- <el-form-item :label="optionItem.displayName" v-else-if="optionItem.conditionType == 9"
66
- :style="{ width: optionItem.itemWidth }">
67
- <search-cascader-cmp :option="optionItem" v-model="inputValue[optionItem.fieldName]">
68
- </search-cascader-cmp>
69
- </el-form-item>
70
-
71
- <el-form-item :label="optionItem.displayName"
72
- v-if="optionItem.conditionType == $enum.conditionType.mixedSelect"
73
- :style="{ width: optionItem.itemWidth }">
74
- <!-- <select-cmp :selectType="optionItem.selectType" v-model="inputValue[optionItem.fieldName]" ></select-cmp> -->
75
- <el-select :multiple="optionItem.dataSourceType == 4" clearable collapse-tags popper-class="select-popper"
76
- class="select-style" v-model="inputValue[optionItem.fieldName]" :placeholder="optionItem.defaultValue">
77
- <div class="shortcut" v-for="(item, index) in $orgEnum[optionItem.url].slice(-1)" :key="index">
78
- <div class="tabs" v-for="(items, indexs) in item" :key="items.id">
79
- <el-button @click="toSelect(items, optionItem.fieldName)">{{
80
- indexs
81
- }}</el-button>
82
- </div>
83
- </div>
84
- <div class="option">
85
- <el-option v-for="item in $orgEnum[optionItem.url].slice(0, -1)" :key="item.Id" :label="item.Text"
86
- :value="item.Id">
87
- <div class="item">{{ item.Text }}</div>
88
- </el-option>
89
- </div>
90
- </el-select>
91
- </el-form-item>
92
-
93
- <el-form-item :label="optionItem.displayName"
94
- v-if="optionItem.conditionType == $enum.conditionType.cascader" :style="{ width: optionItem.itemWidth }">
95
- <product-option-cmp v-model="inputValue[optionItem.fieldName]" :optionItem="optionItem">
96
- </product-option-cmp>
97
- </el-form-item>
98
- <!--单选联级选择-->
99
- <el-form-item :label="optionItem.displayName" v-if="
100
- optionItem.conditionType == $enum.conditionType.radioCascader
101
- ">
102
- <el-cascader ref="radiocascader" class="radiocascader" v-model="inputValue[optionItem.fieldName]"
103
- :props="{ checkStrictly: true }" clearable :options="brandModelList"
104
- @visible-change="cascaderData($event, optionItem.url)"></el-cascader>
105
- </el-form-item>
106
- <!--单选联级选择-->
107
- <el-form-item :label="optionItem.displayName"
108
- v-if="optionItem.conditionType === $enum.conditionType.datePicker"
109
- :style="{ width: optionItem.itemWidth }" class="dateRange">
110
- <el-date-picker clearable v-model="inputValue[optionItem.fieldName]" v-if="optionItem.dataSourceType == 0"
111
- type="date" align="right" unlink-panels :placeholder="optionItem.defaultValue"
112
- value-format="yyyy-MM-dd">
113
- </el-date-picker>
114
- <!-- 时间选择器-->
115
- <el-date-picker v-else clearable v-model="inputValue[optionItem.fieldName]" type="daterange" align="right"
116
- unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
117
- :picker-options="pickerOptions" value-format="yyyy-MM-dd" style="position:relative;top:-1px">
118
- </el-date-picker>
119
- <!-- :value-format="optionItem.config?optionItem.config.timeFrom:'yyyy-MM-DD'" -->
120
- </el-form-item>
121
-
122
- <!-- -->
123
- <el-form-item :label="optionItem.displayName"
124
- v-if="optionItem.conditionType == $enum.conditionType.reportSet" :style="{ width: optionItem.itemWidth }"
125
- class="report-class">
126
- <!-- v-model="inputValue[optionItem.fieldName]" -->
127
- <el-dropdown @command="handlerSelReport" @click="clickReportBtn(optionItem.url, optionItem.params)">
128
- <el-button type="primary">{{ selReportName }}</el-button>
129
- <el-dropdown-menu slot="dropdown" v-if="reportList.length > 0">
130
- <el-dropdown-item v-for="report in reportList" :key="report.id" :command="report">
131
- {{ report.title }}
132
- </el-dropdown-item>
133
- </el-dropdown-menu>
134
- </el-dropdown>
135
- <el-popover placement="bottom" width="560" trigger="click" v-if="selReportName !== '选择报表'">
136
- <report-set v-if="reloadReportForm" v-model="inputValue[optionItem.fieldName]" model-type="Object"
137
- :jsonCfg="reportDefs"></report-set>
138
- <el-button slot="reference" type="primary" class="set-class" icon="el-icon-s-tools">
139
- </el-button>
140
- </el-popover>
141
- </el-form-item>
142
- <!--多选联级选择可动态查询-->
143
- <el-form-item :label="optionItem.displayName" v-if="optionItem.conditionType == $enum.conditionType.hkqudao"
144
- :style="{ width: optionItem.itemWidth }" class="dateRange">
145
- <HKQudao v-model="inputValue[optionItem.fieldName]" :placeholder="optionItem.defaultValue"
146
- :style="{ width: optionItem.itemWidth }" :optionItem="optionItem"></HKQudao>
147
- </el-form-item>
148
- <el-form-item :label="optionItem.displayName" v-if="optionItem.conditionType == $enum.conditionType.hkarea"
149
- :style="{ width: optionItem.itemWidth }" class="dateRange">
150
- <HKCascader v-model="inputValue[optionItem.fieldName]" :placeholder="optionItem.defaultValue"
151
- :style="{ width: optionItem.itemWidth }" :optionItem="optionItem"></HKCascader>
152
- </el-form-item>
153
- <el-form-item :label="optionItem.displayName" v-if="optionItem.component "
154
- :style="{ width: optionItem.itemWidth }" class="dateRange">
155
- <component :is="optionItem.component" v-model="inputValue[optionItem.fieldName]" :placeholder="optionItem.defaultValue" v-bind="optionItem" />
156
- </el-form-item>
157
- </div>
158
-
159
- <el-form-item v-if="!!getBtnContentIsOut().length">
160
- <el-dropdown trigger="click" @command="handleCommand" split-button type="primary" @click="toSearch()">
161
- 查询
162
- <el-dropdown-menu slot="dropdown">
163
- <el-dropdown-item v-for="item in getBtnContentIsOut()" :key="item.id" :command="item">
164
- {{ item.actionText }}
165
- </el-dropdown-item>
166
- </el-dropdown-menu>
167
- </el-dropdown>
168
- </el-form-item>
169
- <el-form-item v-else>
170
- <el-button @command="handleCommand" split-button type="primary" @click="toSearch()">查询</el-button>
171
- </el-form-item>
172
- <div class="isOut-btn">
173
- <el-button v-for="(item, i) in getBtnContentIsOut('isOut')" :key="i" size="small"
174
- @click="handleCommand(item)" type="primary">{{ item.actionText }}
175
- </el-button>
176
- </div>
177
- </div>
178
- <slot name="search_custemBtn" />
179
- <!-- <div class="buttonBox">
180
-
181
- <el-form-item v-if="!!getBtnContentIsOut().length">
182
- <el-dropdown
183
- trigger="click"
184
- @command="handleCommand"
185
- split-button
186
- type="primary"
187
- @click="toSearch()"
188
- >
189
- 查询
190
- <el-dropdown-menu slot="dropdown">
191
- <el-dropdown-item
192
- v-for="item in getBtnContentIsOut()"
193
- :key="item.id"
194
- :command="item"
195
- >
196
- {{ item.actionText }}
197
- </el-dropdown-item>
198
- </el-dropdown-menu>
199
- </el-dropdown>
200
- </el-form-item>
201
- <el-form-item v-else>
202
- <el-button
203
- @command="handleCommand"
204
- split-button
205
- type="primary"
206
- @click="toSearch()"
207
- >查询</el-button
208
- >
209
- </el-form-item>
210
- <el-form-item style="margin-left:4px" v-for="(item,i) in getBtnContentIsOut('isOut')" :key="i">
211
- <el-button @command="handleCommand" type="primary">{{item.actionText}} </el-button>
212
- </el-form-item>
213
- </div> -->
214
- </div>
215
- </el-form>
216
- </div>
217
- </template>
218
- <script>
219
- import methods from "./methods";
220
- import { isArray } from "@/common/utils";
221
-
222
- import reportSet from "@/components/report_set";
223
- // 组件分离 2020-10-10 10:00
224
- // 下拉框组件升级
225
- import SearchSelectCmp from "./select";
226
- import SearchCascaderCmp from "./cascader";
227
-
228
- import ProductOptionCmp from "./product_option";
229
- import HKQudao from "./hk_cascader_qudao";
230
- import HKCascader from "./hk_cascader";
231
-
232
- const EVENT_INPUT = "input";
233
- let id = 0;
234
-
235
- export default {
236
- name: "Search",
237
-
238
- components: {
239
- reportSet,
240
- SearchSelectCmp,
241
- SearchCascaderCmp,
242
- ProductOptionCmp,
243
- HKQudao,
244
- HKCascader,
245
- },
246
- props: {
247
- //搜索内容集合
248
- formContent: {
249
- type: [Object, Array],
250
- },
251
- btnContent: {
252
- type: [Object, Array],
253
- },
254
- placeholder: {
255
- type: String,
256
- default: "",
257
- },
258
- value: {
259
- type: Object,
260
- default: () => {},
261
- },
262
- },
263
- data() {
264
- return {
265
- brandModelList: [],
266
- keys: [],
267
- inputValue: this.value,
268
- pickerOptions: {
269
- shortcuts: [
270
- {
271
- text: "最近一周",
272
- onClick(picker) {
273
- const end = new Date();
274
- const start = new Date();
275
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
276
- picker.$emit("pick", [start, end]);
277
- },
278
- },
279
- {
280
- text: "最近一个月",
281
- onClick(picker) {
282
- const end = new Date();
283
- const start = new Date();
284
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
285
- picker.$emit("pick", [start, end]);
286
- },
287
- },
288
- {
289
- text: "最近三个月",
290
- onClick(picker) {
291
- const end = new Date();
292
- const start = new Date();
293
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
294
- picker.$emit("pick", [start, end]);
295
- },
296
- },
297
- {
298
- text: "本月",
299
- onClick(picker) {
300
- const end = new Date();
301
- var d = new Date();
302
- d.setDate(1);
303
- const start = d;
304
- picker.$emit("pick", [start, end]);
305
- },
306
- },
307
- {
308
- text: "本周",
309
- onClick(picker) {
310
- const date = new Date();
311
- const weekday = date.getDay() || 7;
312
- const end = new Date();
313
- date.setDate(date.getDate() - weekday + 1);
314
- const start = date;
315
- picker.$emit("pick", [start, end]);
316
- },
317
- },
318
- {
319
- text: "最近半年",
320
- onClick(picker) {
321
- const end = new Date();
322
- const start = new Date();
323
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 180);
324
- picker.$emit("pick", [start, end]);
325
- },
326
- },
327
- {
328
- text: "最近一年",
329
- onClick(picker) {
330
- const end = new Date();
331
- const start = new Date();
332
- start.setTime(start.getTime() - 3600 * 1000 * 24 * 365);
333
- picker.$emit("pick", [start, end]);
334
- },
335
- },
336
- ],
337
- },
338
- // 报表相关属性
339
- reportList: [], // 报表集合
340
- selReportName: "选择报表",
341
- reportDefs: "",
342
- reportParamStr: "",
343
- reloadReportForm: false,
344
- };
345
- },
346
- methods,
347
- mixins: [],
348
- watch: {
349
- value: {
350
- handler(newValue) {
351
- this.inputValue = newValue;
352
- },
353
- deep: true,
354
- },
355
- inputValue: {
356
- handler(newValue) {
357
- this.$emit(EVENT_INPUT, newValue);
358
- },
359
- deep: true,
360
- },
361
- formContent: {
362
- handler(newValue) {
363
- if (isArray(newValue)) {
364
- const reportObj = newValue.find((item) => {
365
- return item.conditionType == this.$enum.conditionType.reportSet;
366
- });
367
- if (reportObj) {
368
- this.clickReportBtn(reportObj.url, reportObj.params);
369
- }
370
- }
371
- },
372
- deep: true,
373
- immediate: true,
374
- },
375
- },
376
- computed: {
377
- getItem() {
378
- return function (val) {
379
- setTimeout(() => {
380
- const result = this.$http.get(val);
381
- }, 1000);
382
- };
383
- },
384
- // getBtnContentIsOut() {
385
- // let arr = Array.isArray(this.btnContent)&&this.btnContent.filter((item) => item.isOut);
386
- // console.log('xxx',arr)
387
- // return arr
388
- // },
389
- },
390
- // ------------------------------------------------------------------
391
- // pragma mark - Life Cycle(生命周期)
392
- // ------------------------------------------------------------------
393
- created() {
394
- this.createdInit();
395
- },
396
- mounted() {
397
- //点击文本自动点击前面的input触发选择
398
- setInterval(function () {
399
- document.querySelectorAll(".el-cascader-node__label").forEach((el) => {
400
- el.onclick = function () {
401
- if (this.previousElementSibling) this.previousElementSibling.click();
402
- };
403
- });
404
- }, 1000);
405
-
406
- this.mountedInit();
407
- },
408
- };
409
- </script>
410
- <style lang="scss" src="./index.scss" scoped></style>
1
+ <!--@click添加点击事件;可设置背景色,字体颜色,字体大小,按钮宽,高;props分别为:bgcolor,fontColor,fontSize,width,height-->
2
+ <!-- {
3
+ displayName: "", // 搜索框 label 名称
4
+ fieldName: "datepic", // 表单属性名称
5
+ defaultValue: "时间控件", // placeholder 提示内容
6
+ [{"Id":0,"Name":"input","Text":"输入框"},
7
+ {"Id":3,"Name":"select","Text":"下拉框"},
8
+ {"Id":4,"Name":"datePicker","Text":"时间选择框"},
9
+ {"Id":5,"Name":"mixedSelect","Text":"混合选择框"},
10
+ {"Id":6,"Name":"cascader","Text":"联级选择器"},
11
+ {"Id":7,"Name":"radioCascader","Text":"单选联级选择器"},
12
+ {"Id":8,"Name":"reportSet","Text":"报表配置"}
13
+ {"Id":10,"Name":"HKQudao","Text":";联级多选可动静态"}
14
+ ]
15
+ conditionType: 4,
16
+ config: {
17
+ method: "lazy",
18
+ props: {
19
+ multiple: true, // 支持多选
20
+ checkStrictly: true // 是否支持任意一级
21
+ },
22
+ source: [
23
+ {
24
+ url: "api.service.select.getbrandlist",
25
+ param: { pageSize: 0 }
26
+ },
27
+ {
28
+ url: "api.service.select.getmodellist",
29
+ param: { pageSize: 0 },
30
+ searchKey: "brandId"
31
+ }
32
+ ]
33
+ },
34
+ url: "", // 下拉框集合 api or enumName
35
+ param:{xxx:aa},
36
+ searchKey:'searchKey',
37
+ dataSource: "", // 下拉框集合自定义
38
+ dataSourceType: 1, // 0:api 单选+数据源格式是 {label:value} , 1:单选+自定义 , 2:枚举名称($orgEnum[optionItem.url]) 4:枚举数据源+多选
39
+ 10:api 单选+格式是 [value:xxx,label:xxx], 21:多选+自定义 41: 枚举数据源 + 单选
40
+ 20:api 多选+数据源格式是 {label:value},
41
+ 30:api 多选+格式是 [{value:xxx,label:xxx}],
42
+ sort: 0,
43
+ isIndex: true,
44
+ defaultTime: true
45
+ }-->
46
+ <template>
47
+ <div class="search-wrapper formClass" ref="formClass">
48
+ <el-form :model="inputValue" :inline="true" fit size="small" ref="formContent" label-position="left" class="form" @submit.native.prevent>
49
+ <div class="contentBox" ref="contentBox">
50
+ <div class="searchBox">
51
+ <div v-for="(optionItem, indexs) in formContent" :key="indexs">
52
+ <el-form-item :label="optionItem.displayName" v-if="optionItem.conditionType == $enum.conditionType.input"
53
+ :style="{ width: optionItem.itemWidth }">
54
+ <el-input v-model="inputValue[optionItem.fieldName]" :placeholder="optionItem.defaultValue" @change="(value)=>{
55
+ optionItem.change&&optionItem.change(value)
56
+ }"></el-input>
57
+ </el-form-item>
58
+ <!--下拉单选通过接口-->
59
+ <el-form-item :label="optionItem.displayName"
60
+ v-else-if="optionItem.conditionType == $enum.conditionType.select"
61
+ :style="{ width: optionItem.itemWidth }">
62
+ <search-select-cmp :option="optionItem" v-model="inputValue[optionItem.fieldName]">
63
+ </search-select-cmp>
64
+ </el-form-item>
65
+ <el-form-item :label="optionItem.displayName" v-else-if="optionItem.conditionType == 9"
66
+ :style="{ width: optionItem.itemWidth }">
67
+ <search-cascader-cmp :option="optionItem" v-model="inputValue[optionItem.fieldName]">
68
+ </search-cascader-cmp>
69
+ </el-form-item>
70
+
71
+ <el-form-item :label="optionItem.displayName"
72
+ v-if="optionItem.conditionType == $enum.conditionType.mixedSelect"
73
+ :style="{ width: optionItem.itemWidth }">
74
+ <!-- <select-cmp :selectType="optionItem.selectType" v-model="inputValue[optionItem.fieldName]" ></select-cmp> -->
75
+ <el-select :multiple="optionItem.dataSourceType == 4" clearable collapse-tags popper-class="select-popper"
76
+ class="select-style" v-model="inputValue[optionItem.fieldName]" :placeholder="optionItem.defaultValue">
77
+ <div class="shortcut" v-for="(item, index) in $orgEnum[optionItem.url].slice(-1)" :key="index">
78
+ <div class="tabs" v-for="(items, indexs) in item" :key="items.id">
79
+ <el-button @click="toSelect(items, optionItem.fieldName)">{{
80
+ indexs
81
+ }}</el-button>
82
+ </div>
83
+ </div>
84
+ <div class="option">
85
+ <el-option v-for="item in $orgEnum[optionItem.url].slice(0, -1)" :key="item.Id" :label="item.Text"
86
+ :value="item.Id">
87
+ <div class="item">{{ item.Text }}</div>
88
+ </el-option>
89
+ </div>
90
+ </el-select>
91
+ </el-form-item>
92
+
93
+ <el-form-item :label="optionItem.displayName"
94
+ v-if="optionItem.conditionType == $enum.conditionType.cascader" :style="{ width: optionItem.itemWidth }">
95
+ <product-option-cmp v-model="inputValue[optionItem.fieldName]" :optionItem="optionItem">
96
+ </product-option-cmp>
97
+ </el-form-item>
98
+ <!--单选联级选择-->
99
+ <el-form-item :label="optionItem.displayName" v-if="
100
+ optionItem.conditionType == $enum.conditionType.radioCascader
101
+ ">
102
+ <el-cascader ref="radiocascader" class="radiocascader" v-model="inputValue[optionItem.fieldName]"
103
+ :props="{ checkStrictly: true }" clearable :options="brandModelList"
104
+ @visible-change="cascaderData($event, optionItem.url)"></el-cascader>
105
+ </el-form-item>
106
+ <!--单选联级选择-->
107
+ <el-form-item :label="optionItem.displayName"
108
+ v-if="optionItem.conditionType === $enum.conditionType.datePicker"
109
+ :style="{ width: optionItem.itemWidth }" class="dateRange">
110
+ <el-date-picker clearable v-model="inputValue[optionItem.fieldName]" v-if="optionItem.dataSourceType == 0"
111
+ type="date" align="right" unlink-panels :placeholder="optionItem.defaultValue"
112
+ value-format="yyyy-MM-dd">
113
+ </el-date-picker>
114
+ <!-- 时间选择器-->
115
+ <el-date-picker v-else clearable v-model="inputValue[optionItem.fieldName]" type="daterange" align="right"
116
+ unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
117
+ :picker-options="pickerOptions" value-format="yyyy-MM-dd" style="position:relative;top:-1px">
118
+ </el-date-picker>
119
+ <!-- :value-format="optionItem.config?optionItem.config.timeFrom:'yyyy-MM-DD'" -->
120
+ </el-form-item>
121
+
122
+ <!-- -->
123
+ <el-form-item :label="optionItem.displayName"
124
+ v-if="optionItem.conditionType == $enum.conditionType.reportSet" :style="{ width: optionItem.itemWidth }"
125
+ class="report-class">
126
+ <!-- v-model="inputValue[optionItem.fieldName]" -->
127
+ <el-dropdown @command="handlerSelReport" @click="clickReportBtn(optionItem.url, optionItem.params)">
128
+ <el-button type="primary">{{ selReportName }}</el-button>
129
+ <el-dropdown-menu slot="dropdown" v-if="reportList.length > 0">
130
+ <el-dropdown-item v-for="report in reportList" :key="report.id" :command="report">
131
+ {{ report.title }}
132
+ </el-dropdown-item>
133
+ </el-dropdown-menu>
134
+ </el-dropdown>
135
+ <el-popover placement="bottom" width="560" trigger="click" v-if="selReportName !== '选择报表'">
136
+ <report-set v-if="reloadReportForm" v-model="inputValue[optionItem.fieldName]" model-type="Object"
137
+ :jsonCfg="reportDefs"></report-set>
138
+ <el-button slot="reference" type="primary" class="set-class" icon="el-icon-s-tools">
139
+ </el-button>
140
+ </el-popover>
141
+ </el-form-item>
142
+ <!--多选联级选择可动态查询-->
143
+ <el-form-item :label="optionItem.displayName" v-if="optionItem.conditionType == $enum.conditionType.hkqudao"
144
+ :style="{ width: optionItem.itemWidth }" class="dateRange">
145
+ <HKQudao v-model="inputValue[optionItem.fieldName]" :placeholder="optionItem.defaultValue"
146
+ :style="{ width: optionItem.itemWidth }" :optionItem="optionItem"></HKQudao>
147
+ </el-form-item>
148
+ <el-form-item :label="optionItem.displayName" v-if="optionItem.conditionType == $enum.conditionType.hkarea"
149
+ :style="{ width: optionItem.itemWidth }" class="dateRange">
150
+ <HKCascader v-model="inputValue[optionItem.fieldName]" :placeholder="optionItem.defaultValue"
151
+ :style="{ width: optionItem.itemWidth }" :optionItem="optionItem"></HKCascader>
152
+ </el-form-item>
153
+ <el-form-item :label="optionItem.displayName" v-if="optionItem.component "
154
+ :style="{ width: optionItem.itemWidth }" class="dateRange">
155
+ <component :is="optionItem.component" v-model="inputValue[optionItem.fieldName]" :placeholder="optionItem.defaultValue" v-bind="optionItem" />
156
+ </el-form-item>
157
+ </div>
158
+
159
+ <el-form-item v-if="!!getBtnContentIsOut().length">
160
+ <el-dropdown trigger="click" @command="handleCommand" split-button type="primary" @click="toSearch()">
161
+ 查询
162
+ <el-dropdown-menu slot="dropdown">
163
+ <el-dropdown-item v-for="item in getBtnContentIsOut()" :key="item.id" :command="item">
164
+ {{ item.actionText }}
165
+ </el-dropdown-item>
166
+ </el-dropdown-menu>
167
+ </el-dropdown>
168
+ </el-form-item>
169
+ <el-form-item v-else>
170
+ <el-button @command="handleCommand" split-button type="primary" @click="toSearch()">查询</el-button>
171
+ </el-form-item>
172
+ <div class="isOut-btn">
173
+ <el-button v-for="(item, i) in getBtnContentIsOut('isOut')" :key="i" size="small"
174
+ @click="handleCommand(item)" type="primary">{{ item.actionText }}
175
+ </el-button>
176
+ </div>
177
+ </div>
178
+ <slot name="search_custemBtn" />
179
+ <!-- <div class="buttonBox">
180
+
181
+ <el-form-item v-if="!!getBtnContentIsOut().length">
182
+ <el-dropdown
183
+ trigger="click"
184
+ @command="handleCommand"
185
+ split-button
186
+ type="primary"
187
+ @click="toSearch()"
188
+ >
189
+ 查询
190
+ <el-dropdown-menu slot="dropdown">
191
+ <el-dropdown-item
192
+ v-for="item in getBtnContentIsOut()"
193
+ :key="item.id"
194
+ :command="item"
195
+ >
196
+ {{ item.actionText }}
197
+ </el-dropdown-item>
198
+ </el-dropdown-menu>
199
+ </el-dropdown>
200
+ </el-form-item>
201
+ <el-form-item v-else>
202
+ <el-button
203
+ @command="handleCommand"
204
+ split-button
205
+ type="primary"
206
+ @click="toSearch()"
207
+ >查询</el-button
208
+ >
209
+ </el-form-item>
210
+ <el-form-item style="margin-left:4px" v-for="(item,i) in getBtnContentIsOut('isOut')" :key="i">
211
+ <el-button @command="handleCommand" type="primary">{{item.actionText}} </el-button>
212
+ </el-form-item>
213
+ </div> -->
214
+ </div>
215
+ </el-form>
216
+ </div>
217
+ </template>
218
+ <script>
219
+ import methods from "./methods";
220
+ import { isArray } from "@/common/utils";
221
+
222
+ import reportSet from "@/components/report_set";
223
+ // 组件分离 2020-10-10 10:00
224
+ // 下拉框组件升级
225
+ import SearchSelectCmp from "./select";
226
+ import SearchCascaderCmp from "./cascader";
227
+
228
+ import ProductOptionCmp from "./product_option";
229
+ import HKQudao from "./hk_cascader_qudao";
230
+ import HKCascader from "./hk_cascader";
231
+
232
+ const EVENT_INPUT = "input";
233
+ let id = 0;
234
+
235
+ export default {
236
+ name: "Search",
237
+
238
+ components: {
239
+ reportSet,
240
+ SearchSelectCmp,
241
+ SearchCascaderCmp,
242
+ ProductOptionCmp,
243
+ HKQudao,
244
+ HKCascader,
245
+ },
246
+ props: {
247
+ //搜索内容集合
248
+ formContent: {
249
+ type: [Object, Array],
250
+ },
251
+ btnContent: {
252
+ type: [Object, Array],
253
+ },
254
+ placeholder: {
255
+ type: String,
256
+ default: "",
257
+ },
258
+ value: {
259
+ type: Object,
260
+ default: () => {},
261
+ },
262
+ },
263
+ data() {
264
+ return {
265
+ brandModelList: [],
266
+ keys: [],
267
+ inputValue: this.value,
268
+ pickerOptions: {
269
+ shortcuts: [
270
+ {
271
+ text: "最近一周",
272
+ onClick(picker) {
273
+ const end = new Date();
274
+ const start = new Date();
275
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
276
+ picker.$emit("pick", [start, end]);
277
+ },
278
+ },
279
+ {
280
+ text: "最近一个月",
281
+ onClick(picker) {
282
+ const end = new Date();
283
+ const start = new Date();
284
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
285
+ picker.$emit("pick", [start, end]);
286
+ },
287
+ },
288
+ {
289
+ text: "最近三个月",
290
+ onClick(picker) {
291
+ const end = new Date();
292
+ const start = new Date();
293
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
294
+ picker.$emit("pick", [start, end]);
295
+ },
296
+ },
297
+ {
298
+ text: "本月",
299
+ onClick(picker) {
300
+ const end = new Date();
301
+ var d = new Date();
302
+ d.setDate(1);
303
+ const start = d;
304
+ picker.$emit("pick", [start, end]);
305
+ },
306
+ },
307
+ {
308
+ text: "本周",
309
+ onClick(picker) {
310
+ const date = new Date();
311
+ const weekday = date.getDay() || 7;
312
+ const end = new Date();
313
+ date.setDate(date.getDate() - weekday + 1);
314
+ const start = date;
315
+ picker.$emit("pick", [start, end]);
316
+ },
317
+ },
318
+ {
319
+ text: "最近半年",
320
+ onClick(picker) {
321
+ const end = new Date();
322
+ const start = new Date();
323
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 180);
324
+ picker.$emit("pick", [start, end]);
325
+ },
326
+ },
327
+ {
328
+ text: "最近一年",
329
+ onClick(picker) {
330
+ const end = new Date();
331
+ const start = new Date();
332
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 365);
333
+ picker.$emit("pick", [start, end]);
334
+ },
335
+ },
336
+ ],
337
+ },
338
+ // 报表相关属性
339
+ reportList: [], // 报表集合
340
+ selReportName: "选择报表",
341
+ reportDefs: "",
342
+ reportParamStr: "",
343
+ reloadReportForm: false,
344
+ };
345
+ },
346
+ methods,
347
+ mixins: [],
348
+ watch: {
349
+ value: {
350
+ handler(newValue) {
351
+ this.inputValue = newValue;
352
+ },
353
+ deep: true,
354
+ },
355
+ inputValue: {
356
+ handler(newValue) {
357
+ this.$emit(EVENT_INPUT, newValue);
358
+ },
359
+ deep: true,
360
+ },
361
+ formContent: {
362
+ handler(newValue) {
363
+ if (isArray(newValue)) {
364
+ const reportObj = newValue.find((item) => {
365
+ return item.conditionType == this.$enum.conditionType.reportSet;
366
+ });
367
+ if (reportObj) {
368
+ this.clickReportBtn(reportObj.url, reportObj.params);
369
+ }
370
+ }
371
+ },
372
+ deep: true,
373
+ immediate: true,
374
+ },
375
+ },
376
+ computed: {
377
+ getItem() {
378
+ return function (val) {
379
+ setTimeout(() => {
380
+ const result = this.$http.get(val);
381
+ }, 1000);
382
+ };
383
+ },
384
+ // getBtnContentIsOut() {
385
+ // let arr = Array.isArray(this.btnContent)&&this.btnContent.filter((item) => item.isOut);
386
+ // console.log('xxx',arr)
387
+ // return arr
388
+ // },
389
+ },
390
+ // ------------------------------------------------------------------
391
+ // pragma mark - Life Cycle(生命周期)
392
+ // ------------------------------------------------------------------
393
+ created() {
394
+ this.createdInit();
395
+ },
396
+ mounted() {
397
+ //点击文本自动点击前面的input触发选择
398
+ setInterval(function () {
399
+ document.querySelectorAll(".el-cascader-node__label").forEach((el) => {
400
+ el.onclick = function () {
401
+ if (this.previousElementSibling) this.previousElementSibling.click();
402
+ };
403
+ });
404
+ }, 1000);
405
+
406
+ this.mountedInit();
407
+ },
408
+ };
409
+ </script>
410
+ <style lang="scss" src="./index.scss" scoped></style>