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,106 @@
1
+ <template>
2
+ <div class="MutipleInput">
3
+ <Input
4
+ v-show="status === 'edit'"
5
+ v-model="curVal"
6
+ icon="ios-search"
7
+ :placeholder="selfPropsObj._placeholder"
8
+ @on-enter="clickConfirm"
9
+ @on-click="clickConfirm"
10
+ ></Input>
11
+ <div
12
+ v-show="status === 'show'"
13
+ class="MutipleInput-show"
14
+ >
15
+ <span
16
+ class="MutipleInput-show-content"
17
+ @click="clickAdd"
18
+ >
19
+ <span
20
+ v-for="(val,index) in value[controlKey]"
21
+ class="MutipleInput-show-content-item"
22
+ :key="index"
23
+ >
24
+ <span
25
+ class="MutipleInput-show-content-item-content"
26
+ @click.stop="clickEdit(val,index)"
27
+ >
28
+ {{val}}
29
+ </span>
30
+ <Icon
31
+ class="MutipleInput-show-content-item-del"
32
+ type="ios-close"
33
+ size="20"
34
+ @click.stop="clickDelete(val)"
35
+ />
36
+ </span>
37
+ </span>
38
+ <Icon
39
+ class="MutipleInput-show-add"
40
+ type="md-create"
41
+ @click="clickAdd"
42
+ />
43
+ </div>
44
+ </div>
45
+ </template>
46
+
47
+ <script>
48
+ import controlMixin from "../../controlMixin.js";
49
+
50
+ export default {
51
+ name: "MutipleInput",
52
+ mixins: [controlMixin],
53
+ props: {
54
+ },
55
+ data () {
56
+ return {
57
+ status: "edit", // show
58
+ curVal: "",
59
+ curIndex: -1
60
+ };
61
+ },
62
+ computed: {
63
+ selfPropsObj () {
64
+ return {
65
+ ...this.propsObj,
66
+ ...this.commonDealPropsObj
67
+ };
68
+ }
69
+ },
70
+ created () {
71
+ this.status = this.value[this.controlKey] && this.value[this.controlKey].length ? "show" : "edit";
72
+ },
73
+ methods: {
74
+ clickConfirm () {
75
+ let val = this.curVal.trim();
76
+ if (val && !this.value[this.controlKey].includes(val)) {
77
+ // 有值,且不存在于当前数组中
78
+ if (this.curIndex < 0) {
79
+ this.value[this.controlKey].push(val);
80
+ } else {
81
+ this.$set(this.value[this.controlKey], this.curIndex, val);
82
+ }
83
+ }
84
+ this.curVal = "";
85
+ this.status = "show";
86
+ this.change();
87
+ },
88
+ clickEdit (val, index) {
89
+ this.curVal = val;
90
+ this.curIndex = index;
91
+ this.status = "edit";
92
+ },
93
+ clickAdd () {
94
+ this.curIndex = -1;
95
+ this.status = "edit";
96
+ },
97
+ clickDelete (val) {
98
+ this.value[this.controlKey] = this.value[this.controlKey].filter(i => i != val);
99
+ this.change();
100
+ if (!this.value[this.controlKey].length) {
101
+ this.status = "edit";
102
+ }
103
+ }
104
+ }
105
+ };
106
+ </script>
@@ -0,0 +1,94 @@
1
+ const controlConfig = window.controlConfig || {
2
+ componentNameMap: {},
3
+ pathMap: {},
4
+ registerComponents: () => {
5
+ return {};
6
+ }
7
+ };
8
+
9
+ // TODO: 特别声明:每一个开发的控件必须要加一个change回调事件!
10
+ const componentNameMap = {
11
+ // base类型
12
+ text: "DshInput",
13
+ textarea: "DshInput",
14
+ idcard: "DshInput",
15
+ email: "DshInput",
16
+ phone: "DshInput",
17
+ url: "DshInput",
18
+ password: "DshInput",
19
+ texts: "MultipleInput",
20
+ serialNumber: "YSerialNumber",
21
+ number: "DshNumber",
22
+ numberange: "DshNumberange",
23
+ date: "DshDate",
24
+ daterange: "DshDaterange",
25
+ switch: "DshSwitch",
26
+ select: "DshSelect",
27
+ checkbox: "DshCheckbox",
28
+ region: "DshCascader",
29
+ regions: "DshCascader",
30
+ cascader: "DshCascader",
31
+ cascaders: "DshCascader",
32
+ file: "ZUpload",
33
+ coordinates: "DshCoordinates",
34
+ editor: "DshEditor",
35
+ tag: "DshDivider",
36
+ labels: "DshLabels",
37
+ package: "DshPackage",
38
+
39
+ back: "DshBack",
40
+ undefined: "DshUndeveloped",
41
+
42
+ ...controlConfig.componentNameMap
43
+ };
44
+
45
+ // 组件相对路径映射图
46
+ const pathMap = {
47
+ base: {
48
+ // DshInput: "./base/DshInput.vue", // 全局已注册
49
+ MultipleInput: "./base/textMultiple/MultipleInput.vue",
50
+ YSerialNumber: "./base/YSerialNumber.vue",
51
+ // DshNumber: "./base/DshNumber/DshNumber.vue", // 全局已注册
52
+ DshNumberange: "./base/DshNumberange.vue",
53
+ DshDate: "./base/DshDate.vue",
54
+ DshDaterange: "./base/DshDaterange.vue",
55
+ DshSwitch: "./base/DshSwitch.vue",
56
+ // DshSelect: "./base/DshSelect.vue", // 全局已注册
57
+ // DshCheckbox: "./base/DshCheckbox.vue", // 全局已注册
58
+ // DshCascader: "./base/DshCascader.vue", // 全局已注册
59
+ ZUpload: "./base/ZUpload/index.vue",
60
+ DshCoordinates: "./base/DshCoordinates.vue",
61
+ DshEditor: "./base/DshEditor.vue",
62
+ DshDivider: "./base/DshDivider.vue",
63
+ DshLabels: "./base/DshLabels.vue",
64
+ DshPackage: "./base/DshPackage.vue",
65
+
66
+ DshBack: "./base/DshBack.vue",
67
+ DshUndeveloped: "./base/DshUndeveloped.vue"
68
+ }
69
+ };
70
+
71
+ // 得到组件注册对象
72
+ function registerComponents (map = pathMap) {
73
+ let loop = (map, obj) => {
74
+ return Object.entries(map).reduce((obj, arr) => {
75
+ if (Object.prototype.toString.call(arr[1]) === "[object Object]") {
76
+ return loop(arr[1], obj);
77
+ } else {
78
+ return Object.assign(obj, {
79
+ [arr[0]]: () => import(`${arr[1]}`)
80
+ });
81
+ }
82
+ }, obj);
83
+ };
84
+ return {
85
+ ...loop(map, {}),
86
+ ...controlConfig.registerComponents()
87
+ };
88
+ };
89
+
90
+ export {
91
+ componentNameMap,
92
+ pathMap,
93
+ registerComponents
94
+ };
@@ -0,0 +1,84 @@
1
+ export default {
2
+ props: {
3
+ mode: {
4
+ type: String,
5
+ default: "default"
6
+ },
7
+ canEdit: {
8
+ type: Boolean,
9
+ default: true
10
+ },
11
+ value: {
12
+ type: Object,
13
+ default () {
14
+ return {};
15
+ }
16
+ },
17
+ propsObj: {
18
+ type: Object,
19
+ default () {
20
+ return {};
21
+ }
22
+ },
23
+ isShare: Boolean
24
+ },
25
+ data () {
26
+ return {};
27
+ },
28
+ computed: {
29
+ compKey () {
30
+ return this.propsObj.compKey;
31
+ },
32
+ appKey () {
33
+ return this.propsObj.appKey;
34
+ },
35
+ entityKey () {
36
+ return this.propsObj.entityKey;
37
+ },
38
+ inTable () {
39
+ return !!this.propsObj.inTable;
40
+ },
41
+ controlKey () {
42
+ return this.propsObj._key;
43
+ },
44
+
45
+ finalCanEdit () {
46
+ return this.$canEdit(this.canEdit, this.propsObj);
47
+ },
48
+ commonDealPropsObj () {
49
+ const selectControlTypes = ["date", "switch", "select", "checkbox", "file", "region", "regions", "cascader", "cascaders", "coordinates", "users", "departments"];
50
+ return {
51
+ // TODO: 此处的请输入可能还有请选择之类的,待处理
52
+ _placeholder: this.$showPlaceholder(this.canEdit, this.propsObj)
53
+ ? (this.propsObj._placeholder || `请${selectControlTypes.includes(this.propsObj._type) ? "选择" : "输入"}${this.propsObj._name}`)
54
+ : "",
55
+ _clearable: this.finalCanEdit && (this.propsObj._clearable === undefined ? true : this.propsObj._clearable)
56
+ };
57
+ },
58
+ // 不同mode模式下readOnly 和disabled样式名
59
+ commonClass () {
60
+ let commonClass = `control-${this.mode}-${
61
+ this.$isReadonly(this.canEdit, this.propsObj)
62
+ ? "readonly"
63
+ : (
64
+ this.$isDisabled(this.canEdit, this.propsObj)
65
+ ? "disabled"
66
+ : "edit"
67
+ )
68
+ }`;
69
+ let otherClass = "";
70
+ if (this.mode === "rimless" && this.propsObj._line) {
71
+ // otherClass = `control-${this.mode}-span${this.propsObj._span}`;
72
+ }
73
+ return commonClass + " " + otherClass;
74
+ }
75
+ },
76
+ methods: {
77
+ change (...params) {
78
+ this.$emit("change", this.value[this.propsObj._key]);
79
+ },
80
+ refChange (...params) {
81
+ this.$emit("refChange", this.value[this.propsObj._key]);
82
+ }
83
+ }
84
+ };
@@ -0,0 +1,341 @@
1
+ <template>
2
+ <div class="DshAdvSearchForm">
3
+ <!-- 无可筛选字段 -->
4
+ <template v-if="searchFormList.length">
5
+ <!-- 筛选逻辑 -->
6
+ <div class="DshAdvSearchForm-logic">
7
+ <div class="DshAdvSearchForm-logic-title">筛选逻辑</div>
8
+ <dsh-select
9
+ class="DshAdvSearchForm-logic-option"
10
+ :value="value"
11
+ :propsObj="selfLogicPropsObj"
12
+ @change="change"
13
+ ></dsh-select>
14
+ </div>
15
+
16
+ <!-- 筛选条件 -->
17
+ <div class="DshAdvSearchForm-title">筛选条件</div>
18
+ <div class="DshAdvSearchForm-conditions">
19
+ <template v-for="(conditionItem, conditionIndex) in value.conditions">
20
+ <!-- 'and', 'or' 循环模式 -->
21
+ <div
22
+ v-if="['and', 'or'].includes(conditionItem.logic)"
23
+ :key="conditionItem._id"
24
+ class="DshAdvSearchForm-conditions-loop"
25
+ >
26
+ <dsh-advSearch-form
27
+ :isInner="true"
28
+ :mode="mode"
29
+ :value="conditionItem"
30
+ :formList="searchFormList"
31
+ :dynamicFieldsMap="dynamicFieldsMap"
32
+ @change="change(conditionItem, arguments)"
33
+ ></dsh-advSearch-form>
34
+
35
+ <!-- 删除 -->
36
+ <dsh-icons
37
+ slot="corner"
38
+ class="DshAdvSearchForm-conditions-delete"
39
+ :list="$getOperationList(['deleteContion'])"
40
+ @click="$dispatchEvent($event, conditionItem, conditionIndex, value.conditions)"
41
+ />
42
+ </div>
43
+
44
+ <!-- field 正常模式 -->
45
+ <dsh-formItem
46
+ v-else-if="['field', undefined].includes(conditionItem.logic)"
47
+ :key="conditionItem._id"
48
+ class="DshAdvSearchForm-conditions-item"
49
+ :formData="conditionItem"
50
+ :formItem="conditionItem.formItem"
51
+ height="80"
52
+ @change="change(conditionItem, arguments)"
53
+ >
54
+ <template v-if="!conditionItem.__isDelete__">
55
+ <!-- 子表的筛选,出现是有条件的,递归 -->
56
+ <template v-if="conditionItem.fieldOperator === 'subSearch'">
57
+ <dsh-advSearch-form
58
+ v-if="conditionItem.finished === true"
59
+ :isInner="true"
60
+ :mode="mode"
61
+ :value="conditionItem.fieldSearch"
62
+ :formList="conditionItem.subFormList"
63
+ :dynamicFieldsMap="dynamicFieldsMap"
64
+ @change="change(conditionItem, arguments)"
65
+ ></dsh-advSearch-form>
66
+
67
+ <div
68
+ v-else
69
+ class="DshAdvSearchForm-conditions-item-loading"
70
+ >加载中……</div>
71
+ </template>
72
+
73
+ <!-- 动态筛选字段,出现是有条件的 -->
74
+ <dsh-select
75
+ v-else-if="conditionItem.parameterType === 'dynamicText'"
76
+ class="DshAdvSearchForm-conditions-item-control"
77
+ :value="conditionItem"
78
+ :propsObj="{
79
+ _name: `${conditionItem.formItem._name}的动态参数`,
80
+ _key: 'fieldParams',
81
+ _multiple: true,
82
+ _data: conditionItem.dynamicList
83
+ }"
84
+ @change="change(conditionItem, arguments)"
85
+ ></dsh-select>
86
+
87
+ <!-- 文件类型时候啥都不显示 -->
88
+ <div
89
+ v-else-if="['file'].includes(conditionItem.fieldType)"
90
+ class="DshAdvSearchForm-conditions-item-blank"
91
+ >请选择右上角条件</div>
92
+ </template>
93
+
94
+ <!-- 右上角 -->
95
+ <div
96
+ v-if="!conditionItem.__isDelete__"
97
+ slot="extra"
98
+ class="DshAdvSearchForm-conditions-item-extra"
99
+ >
100
+ <!-- 动态or固定 筛选条件,出现是有条件的 -->
101
+ <dsh-select
102
+ v-if="conditionItem.dynamicList.length"
103
+ class="extra-dynamic"
104
+ :value="conditionItem"
105
+ :propsObj="parameterPropsObj"
106
+ @change="change(conditionItem, arguments)"
107
+ ></dsh-select>
108
+
109
+ <!-- operators 筛选条件 -->
110
+ <dsh-dropdown
111
+ v-if="conditionItem.operators.length"
112
+ class="extra-operator"
113
+ :list="conditionItem.operators"
114
+ @click="$dispatchEvent(operationMap.selectOperator, conditionItem, conditionIndex, value.conditions, $event)"
115
+ >
116
+ <span class="extra-operator-wrap">
117
+ <span class="extra-operator-name">
118
+ {{ conditionItem.fieldOperatorName }}
119
+ </span>
120
+ <Icon
121
+ class="extra-operator-icon"
122
+ type="ios-arrow-down"
123
+ />
124
+ </span>
125
+ </dsh-dropdown>
126
+ </div>
127
+
128
+ <!-- 删除 -->
129
+ <dsh-icons
130
+ slot="corner"
131
+ class="DshAdvSearchForm-conditions-delete"
132
+ :list="$getOperationList(['deleteContion'])"
133
+ @click="$dispatchEvent($event, conditionItem, conditionIndex, value.conditions)"
134
+ />
135
+ </dsh-formItem>
136
+
137
+ <!-- text 关键字的模式 -->
138
+ <div
139
+ v-else-if="['text'].includes(conditionItem.logic)"
140
+ :key="conditionItem._id"
141
+ >
142
+ {{ conditionItem.logic }}模式暂未开发
143
+ </div>
144
+
145
+ <!-- native 以及以后可能增加的模式 -->
146
+ <div
147
+ v-else
148
+ :key="conditionItem._id"
149
+ >
150
+ {{ conditionItem.logic }}模式是不用开发的
151
+ </div>
152
+ </template>
153
+ </div>
154
+
155
+ <!-- 按钮s -->
156
+ <div class="DshAdvSearchForm-btns">
157
+ <!-- 添加筛选项 -->
158
+ <dsh-dropdown
159
+ class="DshAdvSearchForm-btns-field"
160
+ menuClass="DshAdvSearchForm-btns-field-list"
161
+ :list="searchFormList"
162
+ :useSearch="true"
163
+ @click="$dispatchEvent(operationMap.createContion, false, $event)"
164
+ >
165
+ <dsh-buttons
166
+ itemClass="DshAdvSearchForm-btns-field-create"
167
+ :list="$getOperationList(['createContion'])"
168
+ ></dsh-buttons>
169
+ </dsh-dropdown>
170
+
171
+ <!-- 添加循环层 -->
172
+ <dsh-buttons
173
+ class="DshAdvSearchForm-btns-loop"
174
+ itemClass="DshAdvSearchForm-btns-loop-create"
175
+ :list="$getOperationList(['createLoopContion'])"
176
+ @click="$dispatchEvent($event, true)"
177
+ ></dsh-buttons>
178
+ </div>
179
+ </template>
180
+
181
+ <!-- 无可筛选字段 -->
182
+ <div
183
+ v-else
184
+ class="DshAdvSearchForm-nodata"
185
+ >
186
+ 当前无可筛选的字段
187
+ </div>
188
+ </div>
189
+ </template>
190
+
191
+ <script>
192
+ import searchMixin from "./searchMixin.js";
193
+
194
+ export default {
195
+ name: "DshAdvSearchForm",
196
+ mixins: [
197
+ searchMixin
198
+ ],
199
+ components: {},
200
+ props: {
201
+ mode: {
202
+ type: String,
203
+ default: "default",
204
+ validator: function (val) {
205
+ // 用户态、 配置端、高级依赖、以及仪表盘乱用的地方
206
+ return ["default", "set", "dashbord", "rely"].includes(val);
207
+ }
208
+ },
209
+ value: {
210
+ type: Object,
211
+ default () {
212
+ return {
213
+ logic: "and",
214
+ conditions: []
215
+ };
216
+ }
217
+ },
218
+
219
+ useLoop: {
220
+ type: Boolean,
221
+ default: true
222
+ },
223
+ isInner: {
224
+ type: Boolean,
225
+ default: false
226
+ }
227
+ },
228
+ data () {
229
+ return {
230
+ selfLogicPropsObj: {
231
+ _name: "筛选逻辑",
232
+ _key: "logic",
233
+ _optionKind: "flat",
234
+ _clearable: false,
235
+ _data: [
236
+ { _key: "and", name: "且" },
237
+ { _key: "or", name: "或" }
238
+ ]
239
+ },
240
+ parameterPropsObj: {
241
+ _name: "参数类型",
242
+ _key: "parameterType",
243
+ _clearable: false,
244
+ _size: "small",
245
+ _data: [
246
+ { _key: "fixedText", name: "固定文本" },
247
+ { _key: "dynamicText", name: "动态文本" }
248
+ ]
249
+ },
250
+
251
+ allOperationMap: {
252
+ createContion: {
253
+ name: "添加筛选条件",
254
+ type: "createContion",
255
+ icon: "md-add",
256
+ size: this.isInner ? "small" : "default",
257
+ long: true,
258
+ event: "createContion"
259
+ },
260
+ createLoopContion: {
261
+ name: "添加筛选层",
262
+ type: "createLoopContion",
263
+ icon: "md-add",
264
+ size: this.isInner ? "small" : "default",
265
+ long: true,
266
+ event: "createContion"
267
+ },
268
+ deleteContion: {
269
+ name: "删除筛选条件",
270
+ type: "deleteContion",
271
+ customIcon: "bico-delete",
272
+ size: "16",
273
+ event: "deleteContion"
274
+ },
275
+ selectOperator: {
276
+ name: "选择筛选类型",
277
+ type: "selectOperator",
278
+ event: "selectOperator"
279
+ }
280
+ }
281
+ };
282
+ },
283
+ computed: {
284
+ operationMap () {
285
+ return this.$categoryMapToMap(
286
+ this.allOperationMap,
287
+ undefined,
288
+ this.useLoop === false ? ["createLoopContion"] : []
289
+ );
290
+ }
291
+ },
292
+ created () {
293
+ this.init();
294
+ },
295
+ methods: {
296
+ // 初始化
297
+ init () {
298
+ this.value.conditions = this.value.conditions.map(conditionItem => {
299
+ const newConditionItem = this.createContionFunc(conditionItem, undefined, conditionItem.fieldKey);
300
+ this.dealSubSearch(newConditionItem);
301
+
302
+ return newConditionItem;
303
+ });
304
+ },
305
+
306
+ // 新增筛选条件
307
+ createContion (operationItem, isLoop, formItem) {
308
+ const newConditionItem = this.createContionFunc({ logic: isLoop ? "and" : "field" }, formItem);
309
+ this.value.conditions.push(newConditionItem);
310
+
311
+ this.change(newConditionItem);
312
+ },
313
+ // 删除筛选条件
314
+ deleteContion (operationItem, conditionItem, conditionIndex, list) {
315
+ list.splice(conditionIndex, 1);
316
+
317
+ this.change(conditionItem);
318
+ },
319
+ // 选择某控件的筛选类型
320
+ selectOperator (operationItem, conditionItem, conditionIndex, list, opertorItem) {
321
+ conditionItem.fieldOperator = opertorItem._key;
322
+ conditionItem.fieldOperatorName = opertorItem.name;
323
+ conditionItem.fieldSearch = {
324
+ logic: "and",
325
+ conditions: []
326
+ }; // 重置fieldSearch
327
+ this.dealSubSearch(conditionItem);
328
+
329
+ this.change(conditionItem);
330
+ },
331
+ // 发生改动
332
+ change (conditionItem) {
333
+ const advSearchObj = {
334
+ ...this.value,
335
+ conditions: this.transformConditions(this.value.conditions)
336
+ };
337
+ this.$emit("change", advSearchObj, conditionItem);
338
+ }
339
+ }
340
+ };
341
+ </script>